From 143485cf324713d70c342ea71f3e2a9c209e0fb9 Mon Sep 17 00:00:00 2001 From: alexfisher <1823748191@qq.com> Date: Sun, 5 Jan 2025 22:11:51 +0800 Subject: [PATCH] finish report --- benchmark_data.md | 1592 ++++ 设计文档.assets/image-20241223101349130.png | Bin 0 -> 100573 bytes 设计文档.assets/image-20241224015301281.png | Bin 0 -> 70911 bytes 设计文档.assets/image-20241224020408260.png | Bin 0 -> 76047 bytes 设计文档.assets/image-20250105194455143.png | Bin 0 -> 141407 bytes 设计文档.assets/image-20250105194658678.png | Bin 0 -> 212018 bytes 设计文档.assets/image-20250105205248481.png | Bin 0 -> 26929 bytes 设计文档.assets/image-20250105205536198.png | Bin 0 -> 27219 bytes 设计文档.assets/image-20250105205545925.png | Bin 0 -> 27219 bytes 设计文档.assets/image-20250105205822843.png | Bin 0 -> 30347 bytes 设计文档.assets/image-20250105210254484.png | Bin 0 -> 10357 bytes 设计文档.assets/image-20250105210350396.png | Bin 0 -> 11666 bytes 设计文档.assets/image-20250105211313118.png | Bin 0 -> 14360 bytes 设计文档.assets/image-20250105214330108.png | Bin 0 -> 32299 bytes 设计文档.assets/image-20250105214340947.png | Bin 0 -> 33262 bytes 设计文档.assets/image-20250105214821722.png | Bin 0 -> 31184 bytes 设计文档.assets/image-20250105214830808.png | Bin 0 -> 33054 bytes 设计文档.assets/image-20250105214948117.png | Bin 0 -> 30177 bytes 设计文档.assets/image-20250105215019964.png | Bin 0 -> 33812 bytes 设计文档.assets/image-20250105215125243.png | Bin 0 -> 30051 bytes 设计文档.assets/image-20250105215224964.png | Bin 0 -> 33803 bytes 设计文档.assets/image-20250105215237395.png | Bin 0 -> 36195 bytes 设计文档.assets/image-20250105215644951.png | Bin 0 -> 31635 bytes 设计文档.assets/image-20250105215719856.png | Bin 0 -> 32808 bytes 设计文档.assets/image-20250105220226773.png | Bin 0 -> 15961 bytes 设计文档.assets/image-20250105220322830.png | Bin 0 -> 9246 bytes 设计文档.assets/later_delete.png | Bin 0 -> 47379 bytes 设计文档.assets/prefetch.svg | 5442 +++++++++++ 设计文档.assets/recover_valuelog.png | Bin 0 -> 31466 bytes 设计文档.assets/write_1.svg | 5766 ++++++++++++ 设计文档.assets/write_2.svg | 10950 ++++++++++++++++++++++ 设计文档.md | 1823 ++-- 32 files changed, 24917 insertions(+), 656 deletions(-) create mode 100644 benchmark_data.md create mode 100644 设计文档.assets/image-20241223101349130.png create mode 100644 设计文档.assets/image-20241224015301281.png create mode 100644 设计文档.assets/image-20241224020408260.png create mode 100644 设计文档.assets/image-20250105194455143.png create mode 100644 设计文档.assets/image-20250105194658678.png create mode 100644 设计文档.assets/image-20250105205248481.png create mode 100644 设计文档.assets/image-20250105205536198.png create mode 100644 设计文档.assets/image-20250105205545925.png create mode 100644 设计文档.assets/image-20250105205822843.png create mode 100644 设计文档.assets/image-20250105210254484.png create mode 100644 设计文档.assets/image-20250105210350396.png create mode 100644 设计文档.assets/image-20250105211313118.png create mode 100644 设计文档.assets/image-20250105214330108.png create mode 100644 设计文档.assets/image-20250105214340947.png create mode 100644 设计文档.assets/image-20250105214821722.png create mode 100644 设计文档.assets/image-20250105214830808.png create mode 100644 设计文档.assets/image-20250105214948117.png create mode 100644 设计文档.assets/image-20250105215019964.png create mode 100644 设计文档.assets/image-20250105215125243.png create mode 100644 设计文档.assets/image-20250105215224964.png create mode 100644 设计文档.assets/image-20250105215237395.png create mode 100644 设计文档.assets/image-20250105215644951.png create mode 100644 设计文档.assets/image-20250105215719856.png create mode 100644 设计文档.assets/image-20250105220226773.png create mode 100644 设计文档.assets/image-20250105220322830.png create mode 100644 设计文档.assets/later_delete.png create mode 100644 设计文档.assets/prefetch.svg create mode 100644 设计文档.assets/recover_valuelog.png create mode 100644 设计文档.assets/write_1.svg create mode 100644 设计文档.assets/write_2.svg diff --git a/benchmark_data.md b/benchmark_data.md new file mode 100644 index 0000000..ed39740 --- /dev/null +++ b/benchmark_data.md @@ -0,0 +1,1592 @@ +# db_bench V0 + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sun Jan 5 14:40:05 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 18.288 micros/op; 261.6 MB/s +fillsync : 1467.256 micros/op; 3.3 MB/s (1000 ops) +fillrandom : 180.092 micros/op; 26.6 MB/s +overwrite : 223.800 micros/op; 21.4 MB/s +readrandom : 26.436 micros/op; (864322 of 1000000 found) +readrandom : 17.695 micros/op; (864083 of 1000000 found) +readseq : 0.586 micros/op; 8166.4 MB/s +readreverse : 0.841 micros/op; 5687.0 MB/s +compact : 15983532.000 micros/op; +readrandom : 10.778 micros/op; (864105 of 1000000 found) +readseq : 0.471 micros/op; 10166.7 MB/s +readreverse : 0.751 micros/op; 6370.9 MB/s +fill100K : 516.302 micros/op; 184.7 MB/s (1000 ops) +crc32c : 0.560 micros/op; 6981.2 MB/s (4K per op) +snappycomp : 876.000 micros/op; (snappy failure) +snappyuncomp : 812.000 micros/op; (snappy failure) +zstdcomp : 884.000 micros/op; (zstd failure) +zstduncomp : 849.000 micros/op; (zstd failure) +``` + + + +# db_bench V3 + +### origin + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 21:42:01 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.424 micros/op; 507.6 MB/s +fillsync : 1322.246 micros/op; 3.6 MB/s (1000 ops) +fillrandom : 16.385 micros/op; 292.0 MB/s +overwrite : 43.718 micros/op; 109.4 MB/s +readrandom : 5.891 micros/op; (864322 of 1000000 found) +readrandom : 5.257 micros/op; (864083 of 1000000 found) +readunorderseq : 1.249 micros/op; 3828.8 MB/s +readseq : 3.241 micros/op; 1475.9 MB/s +readreverse : 3.325 micros/op; 1438.7 MB/s +compact : 151395.000 micros/op; +readrandom : 30.305 micros/op; (864482 of 1000000 found) +readunorderseq : 1.287 micros/op; 3717.1 MB/s +readseq : 3.357 micros/op; 1424.9 MB/s +readreverse : 3.332 micros/op; 1435.9 MB/s +fill100K : 49.125 micros/op; 1941.6 MB/s (1000 ops) +crc32c : 0.576 micros/op; 6784.2 MB/s (4K per op) +snappycomp : 894.000 micros/op; (snappy failure) +snappyuncomp : 837.000 micros/op; (snappy failure) +zstdcomp : 849.000 micros/op; (zstd failure) +zstduncomp : 861.000 micros/op; (zstd failure) +``` + +Options.valuelog_crc=true + ReadOptions.verify_checksums=true + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 21:54:09 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 11.596 micros/op; 412.5 MB/s +fillsync : 1295.241 micros/op; 3.7 MB/s (1000 ops) +fillrandom : 15.880 micros/op; 301.2 MB/s +overwrite : 47.611 micros/op; 100.5 MB/s +readrandom : 6.641 micros/op; (864322 of 1000000 found) +readrandom : 4.998 micros/op; (864083 of 1000000 found) +readunorderseq : 1.256 micros/op; 3810.1 MB/s +readseq : 3.114 micros/op; 1536.0 MB/s +readreverse : 3.202 micros/op; 1493.9 MB/s +compact : 164088.000 micros/op; +readrandom : 32.763 micros/op; (864482 of 1000000 found) +readunorderseq : 1.270 micros/op; 3767.4 MB/s +readseq : 3.389 micros/op; 1411.5 MB/s +readreverse : 4.951 micros/op; 966.2 MB/s +fill100K : 62.256 micros/op; 1532.1 MB/s (1000 ops) +crc32c : 0.561 micros/op; 6967.7 MB/s (4K per op) +snappycomp : 1226.000 micros/op; (snappy failure) +snappyuncomp : 1341.000 micros/op; (snappy failure) +zstdcomp : 1312.000 micros/op; (zstd failure) +zstduncomp : 1069.000 micros/op; (zstd failure) +``` + +options.max_unorder_iter_memory_usage=64<<24; + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 22:01:02 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 10.441 micros/op; 458.1 MB/s +fillsync : 1407.271 micros/op; 3.4 MB/s (1000 ops) +fillrandom : 13.759 micros/op; 347.7 MB/s +overwrite : 44.691 micros/op; 107.0 MB/s +readrandom : 5.752 micros/op; (864322 of 1000000 found) +readrandom : 4.213 micros/op; (864083 of 1000000 found) +readunorderseq : 1.252 micros/op; 3822.2 MB/s +readseq : 3.117 micros/op; 1534.8 MB/s +readreverse : 3.200 micros/op; 1494.8 MB/s +compact : 151401.000 micros/op; +readrandom : 29.261 micros/op; (864482 of 1000000 found) +readunorderseq : 1.351 micros/op; 3540.8 MB/s +readseq : 3.096 micros/op; 1545.2 MB/s +readreverse : 3.146 micros/op; 1520.6 MB/s +fill100K : 46.554 micros/op; 2048.9 MB/s (1000 ops) +crc32c : 0.553 micros/op; 7070.0 MB/s (4K per op) +snappycomp : 1136.000 micros/op; (snappy failure) +snappyuncomp : 839.000 micros/op; (snappy failure) +zstdcomp : 817.000 micros/op; (zstd failure) +zstduncomp : 811.000 micros/op; (zstd failure) +``` + + + +options.max_unorder_iter_memory_usage=64<<22; + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 22:09:37 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.149 micros/op; 522.9 MB/s +fillsync : 1260.337 micros/op; 3.8 MB/s (1000 ops) +fillrandom : 16.319 micros/op; 293.1 MB/s +overwrite : 43.827 micros/op; 109.1 MB/s +readrandom : 5.710 micros/op; (864322 of 1000000 found) +readrandom : 4.262 micros/op; (864083 of 1000000 found) +readunorderseq : 1.242 micros/op; 3850.3 MB/s +readseq : 4.794 micros/op; 997.8 MB/s +readreverse : 3.254 micros/op; 1470.1 MB/s +compact : 146958.000 micros/op; +readrandom : 30.457 micros/op; (864482 of 1000000 found) +readunorderseq : 1.238 micros/op; 3864.2 MB/s +readseq : 3.074 micros/op; 1556.0 MB/s +readreverse : 3.119 micros/op; 1533.8 MB/s +fill100K : 45.835 micros/op; 2081.0 MB/s (1000 ops) +crc32c : 0.545 micros/op; 7166.9 MB/s (4K per op) +snappycomp : 858.000 micros/op; (snappy failure) +snappyuncomp : 821.000 micros/op; (snappy failure) +zstdcomp : 840.000 micros/op; (zstd failure) +zstduncomp : 845.000 micros/op; (zstd failure) +``` + +options.max_unorder_iter_memory_usage=64<<18; + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 22:13:46 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.094 micros/op; 526.0 MB/s +fillsync : 1267.120 micros/op; 3.8 MB/s (1000 ops) +fillrandom : 16.316 micros/op; 293.2 MB/s +overwrite : 43.970 micros/op; 108.8 MB/s +readrandom : 5.859 micros/op; (864322 of 1000000 found) +readrandom : 4.303 micros/op; (864083 of 1000000 found) +readunorderseq : 1.255 micros/op; 3810.6 MB/s +readseq : 3.203 micros/op; 1493.6 MB/s +readreverse : 4.932 micros/op; 969.9 MB/s +compact : 149083.000 micros/op; +readrandom : 29.995 micros/op; (864482 of 1000000 found) +readunorderseq : 1.208 micros/op; 3958.6 MB/s +readseq : 3.100 micros/op; 1542.9 MB/s +readreverse : 3.137 micros/op; 1524.7 MB/s +fill100K : 48.072 micros/op; 1984.2 MB/s (1000 ops) +crc32c : 0.571 micros/op; 6842.8 MB/s (4K per op) +snappycomp : 928.000 micros/op; (snappy failure) +snappyuncomp : 828.000 micros/op; (snappy failure) +zstdcomp : 1233.000 micros/op; (zstd failure) +zstduncomp : 1360.000 micros/op; (zstd failure) +``` + + + +options.mem_value_log_number=512; + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 22:18:38 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.431 micros/op; 507.2 MB/s +fillsync : 1407.629 micros/op; 3.4 MB/s (1000 ops) +fillrandom : 15.357 micros/op; 311.5 MB/s +overwrite : 43.646 micros/op; 109.6 MB/s +readrandom : 4.007 micros/op; (864322 of 1000000 found) +readrandom : 2.150 micros/op; (864083 of 1000000 found) +readunorderseq : 1.298 micros/op; 3684.5 MB/s +readseq : 2.678 micros/op; 1786.2 MB/s +readreverse : 1.019 micros/op; 4693.5 MB/s +compact : 121448.000 micros/op; +readrandom : 22.242 micros/op; (864482 of 1000000 found) +readunorderseq : 1.296 micros/op; 3691.2 MB/s +readseq : 3.521 micros/op; 1358.5 MB/s +readreverse : 1.003 micros/op; 4770.5 MB/s +fill100K : 47.101 micros/op; 2025.1 MB/s (1000 ops) +crc32c : 0.567 micros/op; 6889.1 MB/s (4K per op) +snappycomp : 874.000 micros/op; (snappy failure) +snappyuncomp : 831.000 micros/op; (snappy failure) +zstdcomp : 840.000 micros/op; (zstd failure) +zstduncomp : 806.000 micros/op; (zstd failure) + +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 22:22:50 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.114 micros/op; 524.8 MB/s +fillsync : 1350.784 micros/op; 3.5 MB/s (1000 ops) +fillrandom : 16.186 micros/op; 295.5 MB/s +overwrite : 45.896 micros/op; 104.2 MB/s +readrandom : 3.767 micros/op; (864322 of 1000000 found) +readrandom : 3.586 micros/op; (864083 of 1000000 found) +readunorderseq : 1.335 micros/op; 3583.2 MB/s +readseq : 0.969 micros/op; 4935.5 MB/s +readreverse : 1.035 micros/op; 4621.9 MB/s +compact : 124413.000 micros/op; +readrandom : 22.616 micros/op; (864482 of 1000000 found) +readunorderseq : 1.379 micros/op; 3468.0 MB/s +readseq : 4.246 micros/op; 1126.5 MB/s +readreverse : 1.041 micros/op; 4594.6 MB/s +fill100K : 45.569 micros/op; 2093.1 MB/s (1000 ops) +crc32c : 0.564 micros/op; 6929.8 MB/s (4K per op) +snappycomp : 860.000 micros/op; (snappy failure) +snappyuncomp : 831.000 micros/op; (snappy failure) +zstdcomp : 809.000 micros/op; (zstd failure) +zstduncomp : 809.000 micros/op; (zstd failure) + +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 22:25:35 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 10.441 micros/op; 458.2 MB/s +fillsync : 1352.363 micros/op; 3.5 MB/s (1000 ops) +fillrandom : 14.264 micros/op; 335.4 MB/s +overwrite : 47.653 micros/op; 100.4 MB/s +readrandom : 3.749 micros/op; (864322 of 1000000 found) +readrandom : 2.173 micros/op; (864083 of 1000000 found) +readunorderseq : 1.313 micros/op; 3644.4 MB/s +readseq : 0.994 micros/op; 4812.8 MB/s +readreverse : 1.056 micros/op; 4531.1 MB/s +compact : 146978.000 micros/op; +readrandom : 26.075 micros/op; (864482 of 1000000 found) +readunorderseq : 1.373 micros/op; 3484.7 MB/s +readseq : 1.621 micros/op; 2950.7 MB/s +readreverse : 1.050 micros/op; 4557.6 MB/s +fill100K : 52.272 micros/op; 1824.7 MB/s (1000 ops) +crc32c : 0.571 micros/op; 6839.2 MB/s (4K per op) +snappycomp : 910.000 micros/op; (snappy failure) +snappyuncomp : 968.000 micros/op; (snappy failure) +zstdcomp : 1295.000 micros/op; (zstd failure) +zstduncomp : 982.000 micros/op; (zstd failure) +``` + + + +options.mem_value_log_number=32 + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 23:12:43 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.187 micros/op; 520.7 MB/s +fillsync : 1394.107 micros/op; 3.4 MB/s (1000 ops) +fillrandom : 14.321 micros/op; 334.0 MB/s +overwrite : 43.685 micros/op; 109.5 MB/s +readrandom : 11.576 micros/op; (864322 of 1000000 found) +readrandom : 8.912 micros/op; (864083 of 1000000 found) +readunorderseq : 1.293 micros/op; 3699.4 MB/s +readseq : 7.223 micros/op; 662.3 MB/s +readreverse : 7.414 micros/op; 645.3 MB/s +compact : 159015.000 micros/op; +readrandom : 29.700 micros/op; (864482 of 1000000 found) +readunorderseq : 1.204 micros/op; 3974.4 MB/s +readseq : 7.955 micros/op; 601.3 MB/s +readreverse : 7.085 micros/op; 675.2 MB/s +fill100K : 49.873 micros/op; 1912.5 MB/s (1000 ops) +crc32c : 0.560 micros/op; 6972.8 MB/s (4K per op) +snappycomp : 860.000 micros/op; (snappy failure) +snappyuncomp : 1290.000 micros/op; (snappy failure) +zstdcomp : 1075.000 micros/op; (zstd failure) +zstduncomp : 871.000 micros/op; (zstd failure) +``` + +options.mem_value_log_number=128 + +``` +xxy@LAPTOP-LOMHUK6P:~/bench/XOY-leveldb-exp2/build$ ./db_bench +LevelDB: version 1.23 +Date: Sat Jan 4 23:17:53 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +WARNING: Snappy compression is not enabled +------------------------------------------------ +fillseq : 9.080 micros/op; 526.9 MB/s +fillsync : 1450.453 micros/op; 3.3 MB/s (1000 ops) +fillrandom : 15.214 micros/op; 314.4 MB/s +overwrite : 43.780 micros/op; 109.3 MB/s +readrandom : 7.183 micros/op; (864322 of 1000000 found) +readrandom : 5.007 micros/op; (864083 of 1000000 found) +readunorderseq : 1.322 micros/op; 3618.4 MB/s +readseq : 3.460 micros/op; 1382.4 MB/s +readreverse : 3.477 micros/op; 1375.7 MB/s +compact : 164147.000 micros/op; +readrandom : 29.408 micros/op; (864482 of 1000000 found) +readunorderseq : 1.243 micros/op; 3848.2 MB/s +readseq : 0.959 micros/op; 4986.3 MB/s +readreverse : 1.015 micros/op; 4714.0 MB/s +fill100K : 47.614 micros/op; 2003.2 MB/s (1000 ops) +crc32c : 0.568 micros/op; 6872.3 MB/s (4K per op) +snappycomp : 1566.000 micros/op; (snappy failure) +snappyuncomp : 855.000 micros/op; (snappy failure) +zstdcomp : 848.000 micros/op; (zstd failure) +zstduncomp : 851.000 micros/op; (zstd failure) +``` + + + + + +# YCSB-Leveldb:V0 + +## 10fields*500field-len + +workloada-1000000-10*500 + +``` + LD ycsb +2025-01-05 15:21:57 0 sec: 0 operations; +2025-01-05 15:22:07 10 sec: 387047 operations; [INSERT: Count=387047 Max=19218.43 Min=4.14 Avg=20.17 90=9.13 99=1058.82 99.9=1184.77 99.99=1378.30] +2025-01-05 15:22:18 21 sec: 531270 operations; [INSERT: Count=531270 Max=541589.50 Min=4.14 Avg=33.85 90=9.46 99=1091.58 99.9=1216.51 99.99=1587.20] +2025-01-05 15:22:28 31 sec: 758899 operations; [INSERT: Count=758899 Max=541589.50 Min=4.05 Avg=35.18 90=9.11 99=1094.65 99.9=1217.54 99.99=1601.54] +2025-01-05 15:22:38 41 sec: 876919 operations; [INSERT: Count=876919 Max=541589.50 Min=4.05 Avg=41.07 90=9.10 99=1108.99 99.9=1232.89 99.99=1723.39] +2025-01-05 15:22:48 51 sec: 1000000 operations; [INSERT: Count=1000000 Max=541589.50 Min=4.05 Avg=45.72 90=9.22 99=1116.16 99.9=1240.06 99.99=2420.74] +Load runtime(sec): 51.4745 +Load operations(ops): 1000000 +Load throughput(ops/sec): 19427.1 +2025-01-05 15:22:48 0 sec: 0 operations; +2025-01-05 15:22:58 10 sec: 398304 operations; [READ: Count=198696 Max=969.22 Min=0.57 Avg=8.87 90=15.71 99=33.76 99.9=76.99 99.99=139.39] [UPDATE: Count=199608 Max=12533.76 Min=4.98 Avg=39.61 90=27.41 99=1102.85 99.9=1236.99 99.99=1721.34] +2025-01-05 15:23:08 20 sec: 808664 operations; [READ: Count=404154 Max=10747.90 Min=0.57 Avg=9.20 90=16.61 99=35.30 99.9=79.36 99.99=157.69] [UPDATE: Count=404510 Max=22724.61 Min=4.98 Avg=38.76 90=28.70 99=1099.78 99.9=1232.89 99.99=1820.67] +2025-01-05 15:23:11 22 sec: 1000000 operations; [READ: Count=499823 Max=10747.90 Min=0.54 Avg=8.73 90=15.61 99=33.34 99.9=76.29 99.99=156.29] [UPDATE: Count=500177 Max=22724.61 Min=4.88 Avg=34.47 90=26.73 99=1090.56 99.9=1223.68 99.99=1739.78] +Run runtime(sec): 22.4951 +Run operations(ops): 1000000 +Run throughput(ops/sec): 44454.2 +All steps completed successfully! +``` + +workloadb-1000000-10*500 + +``` + LD ycsb +2025-01-05 15:24:32 0 sec: 0 operations; +2025-01-05 15:24:42 10 sec: 396743 operations; [INSERT: Count=396743 Max=17350.65 Min=4.31 Avg=19.59 90=9.34 99=1055.74 99.9=1165.31 99.99=1427.45] +2025-01-05 15:24:53 21 sec: 602651 operations; [INSERT: Count=602651 Max=530317.31 Min=4.31 Avg=29.29 90=9.12 99=1077.25 99.9=1192.96 99.99=1670.14] +2025-01-05 15:25:03 31 sec: 808638 operations; [INSERT: Count=808638 Max=530317.31 Min=4.31 Avg=32.71 90=9.21 99=1088.51 99.9=1205.25 99.99=1756.16] +2025-01-05 15:25:13 41 sec: 983428 operations; [INSERT: Count=983428 Max=530317.31 Min=4.31 Avg=36.02 90=9.35 99=1098.75 99.9=1216.51 99.99=1893.38] +2025-01-05 15:25:14 41 sec: 1000000 operations; [INSERT: Count=1000000 Max=530317.31 Min=4.08 Avg=35.54 90=9.33 99=1097.73 99.9=1215.49 99.99=1852.41] +Load runtime(sec): 41.294 +Load operations(ops): 1000000 +Load throughput(ops/sec): 24216.6 +2025-01-05 15:25:14 0 sec: 0 operations; +2025-01-05 15:25:25 11 sec: 646218 operations; [READ: Count=613744 Max=547356.67 Min=0.52 Avg=8.96 90=12.94 99=35.45 99.9=77.44 99.99=143.87] [UPDATE: Count=32474 Max=23003.13 Min=5.17 Avg=156.86 90=1071.10 99=1207.30 99.9=1357.82 99.99=14540.80] +2025-01-05 15:25:27 13 sec: 1000000 operations; [READ: Count=949848 Max=547356.67 Min=0.52 Avg=7.82 90=11.11 99=30.88 99.9=68.22 99.99=130.62] [UPDATE: Count=50152 Max=23003.13 Min=5.17 Avg=109.12 90=51.90 99=1185.79 99.9=1314.82 99.99=8921.09] +Run runtime(sec): 13.6057 +Run operations(ops): 1000000 +Run throughput(ops/sec): 73498.6 +All steps completed successfully! +``` + +workloadc-1000000-10*500 + +``` + LD ycsb +2025-01-05 15:26:29 0 sec: 0 operations; +2025-01-05 15:26:39 10 sec: 398110 operations; [INSERT: Count=398110 Max=17973.25 Min=4.26 Avg=19.46 90=8.92 99=1053.69 99.9=1165.31 99.99=1503.23] +2025-01-05 15:26:49 20 sec: 606596 operations; [INSERT: Count=606596 Max=21774.33 Min=4.26 Avg=27.33 90=8.75 99=1076.22 99.9=1189.89 99.99=1587.20] +2025-01-05 15:27:00 31 sec: 720688 operations; [INSERT: Count=720688 Max=527695.87 Min=4.26 Avg=37.40 90=8.89 99=1096.70 99.9=1213.44 99.99=1763.33] +2025-01-05 15:27:10 41 sec: 838629 operations; [INSERT: Count=838629 Max=527695.87 Min=4.09 Avg=43.23 90=9.07 99=1110.02 99.9=1226.75 99.99=1904.64] +2025-01-05 15:27:18 49 sec: 1000000 operations; [INSERT: Count=1000000 Max=527695.87 Min=4.09 Avg=43.70 90=8.93 99=1110.02 99.9=1226.75 99.99=1901.57] +Load runtime(sec): 49.4375 +Load operations(ops): 1000000 +Load throughput(ops/sec): 20227.5 +2025-01-05 15:27:18 0 sec: 0 operations; +2025-01-05 15:27:27 8 sec: 1000000 operations; [READ: Count=1000000 Max=536346.62 Min=1.19 Avg=8.15 90=10.68 99=19.42 99.9=35.36 99.99=104.83] +Run runtime(sec): 8.81349 +Run operations(ops): 1000000 +Run throughput(ops/sec): 113462 +All steps completed successfully! +``` + +workloadd-1000000-10*500 + +``` + LD ycsb +2025-01-05 15:28:06 0 sec: 0 operations; +2025-01-05 15:28:16 10 sec: 382540 operations; [INSERT: Count=382540 Max=49807.36 Min=3.78 Avg=20.43 90=8.78 99=1056.77 99.9=1172.48 99.99=1451.01] +2025-01-05 15:28:27 21 sec: 541726 operations; [INSERT: Count=541726 Max=535298.05 Min=3.78 Avg=33.09 90=8.65 99=1087.49 99.9=1204.22 99.99=1589.25] +2025-01-05 15:28:37 31 sec: 728142 operations; [INSERT: Count=728142 Max=535298.05 Min=3.78 Avg=36.87 90=8.65 99=1097.73 99.9=1217.54 99.99=1637.38] +2025-01-05 15:28:47 41 sec: 888919 operations; [INSERT: Count=888919 Max=535298.05 Min=3.78 Avg=40.42 90=8.72 99=1103.87 99.9=1224.70 99.99=1694.72] +2025-01-05 15:28:53 46 sec: 1000000 operations; [INSERT: Count=1000000 Max=535298.05 Min=3.78 Avg=40.78 90=8.68 99=1104.89 99.9=1223.68 99.99=1694.72] +Load runtime(sec): 46.5766 +Load operations(ops): 1000000 +Load throughput(ops/sec): 21470 +2025-01-05 15:28:53 0 sec: 0 operations; +2025-01-05 15:29:04 11 sec: 741818 operations; [INSERT: Count=37056 Max=521928.70 Min=4.58 Avg=197.28 90=1067.01 99=1185.79 99.9=1368.06 99.99=18202.62] [READ: Count=704762 Max=17612.80 Min=0.50 Avg=4.37 90=9.11 99=27.49 99.9=61.47 99.99=115.07] +2025-01-05 15:29:05 12 sec: 1000000 operations; [INSERT: Count=49902 Max=521928.70 Min=4.58 Avg=150.53 90=1055.74 99=1170.43 99.9=1337.34 99.99=14139.39] [READ: Count=950098 Max=17612.80 Min=0.47 Avg=4.19 90=8.82 99=24.82 99.9=56.32 99.99=108.48] +Run runtime(sec): 12.361 +Run operations(ops): 1000000 +Run throughput(ops/sec): 80899.7 +All steps completed successfully! +``` + + + +workloade-recordcount=100000-operationcount=10000-10*500 + +``` + LD ycsb +2025-01-05 15:29:47 0 sec: 0 operations; +2025-01-05 15:29:48 1 sec: 100000 operations; [INSERT: Count=100000 Max=2177.02 Min=4.22 Avg=6.74 90=7.83 99=17.98 99.9=37.38 99.99=208.00] +Load runtime(sec): 1.22978 +Load operations(ops): 100000 +Load throughput(ops/sec): 81315.4 +2025-01-05 15:29:48 0 sec: 0 operations; +2025-01-05 15:29:54 5 sec: 10000 operations; [INSERT: Count=477 Max=125.82 Min=5.77 Avg=46.92 90=75.26 99=100.42 99.9=125.82 99.99=125.82] [SCAN: Count=9523 Max=19431.42 Min=3.77 Avg=515.87 90=907.26 99=1196.03 99.9=1736.70 99.99=7577.60] +Run runtime(sec): 5.47417 +Run operations(ops): 10000 +Run throughput(ops/sec): 1826.76 +All steps completed successfully! +``` + + + +workloadf-1000000-10*500 + +``` + LD ycsb +2025-01-05 15:30:43 0 sec: 0 operations; +2025-01-05 15:30:53 10 sec: 349919 operations; [INSERT: Count=349919 Max=43253.76 Min=4.18 Avg=23.13 90=7.70 99=1067.01 99.9=1179.65 99.99=1614.85] +2025-01-05 15:31:04 21 sec: 580094 operations; [INSERT: Count=580094 Max=523763.71 Min=4.18 Avg=30.73 90=7.98 99=1081.34 99.9=1203.20 99.99=1715.20] +2025-01-05 15:31:14 31 sec: 695620 operations; [INSERT: Count=695620 Max=523763.71 Min=4.18 Avg=39.02 90=8.21 99=1102.85 99.9=1223.68 99.99=1909.76] +2025-01-05 15:31:24 41 sec: 814040 operations; [INSERT: Count=814040 Max=523763.71 Min=4.18 Avg=44.75 90=8.51 99=1111.04 99.9=1233.92 99.99=3088.38] +2025-01-05 15:31:35 52 sec: 990902 operations; [INSERT: Count=990902 Max=531103.74 Min=4.18 Avg=46.83 90=8.62 99=1112.06 99.9=1232.89 99.99=3088.38] +2025-01-05 15:31:35 52 sec: 1000000 operations; [INSERT: Count=1000000 Max=531103.74 Min=4.18 Avg=46.46 90=8.59 99=1112.06 99.9=1232.89 99.99=3088.38] +Load runtime(sec): 52.2434 +Load operations(ops): 1000000 +Load throughput(ops/sec): 19141.2 +2025-01-05 15:31:35 0 sec: 0 operations; +2025-01-05 15:31:45 10 sec: 372767 operations; [READ: Count=248572 Max=1964.03 Min=0.54 Avg=10.24 90=18.25 99=40.86 99.9=92.99 99.99=162.69] [UPDATE: Count=124195 Max=24395.78 Min=4.90 Avg=56.63 90=23.97 99=1123.33 99.9=1243.13 99.99=2099.20] +2025-01-05 15:31:55 20 sec: 948926 operations; [READ: Count=632678 Max=3565.57 Min=0.49 Avg=9.49 90=16.96 99=35.87 99.9=82.75 99.99=161.92] [UPDATE: Count=316248 Max=24395.78 Min=4.74 Avg=42.05 90=17.70 99=1096.70 99.9=1215.49 99.99=2240.51] +2025-01-05 15:32:06 31 sec: 1394875 operations; [READ: Count=929797 Max=529268.73 Min=0.49 Avg=10.47 90=16.73 99=36.03 99.9=83.33 99.99=165.38] [UPDATE: Count=465078 Max=24395.78 Min=4.74 Avg=43.79 90=17.89 99=1100.80 99.9=1224.70 99.99=2902.01] +2025-01-05 15:32:07 32 sec: 1499897 operations; [READ: Count=1000000 Max=529268.73 Min=0.49 Avg=10.37 90=16.62 99=35.33 99.9=81.92 99.99=164.35] [UPDATE: Count=499897 Max=24395.78 Min=4.74 Avg=41.51 90=17.57 99=1096.70 99.9=1219.58 99.99=2377.73] +Run runtime(sec): 32.2646 +Run operations(ops): 1000000 +Run throughput(ops/sec): 30993.7 +All steps completed successfully! +``` + + + + + +## 10fields*100field-len + +workloada-1000000-10*100 + +``` + LD ycsb +2025-01-05 15:52:53 0 sec: 0 operations; +2025-01-05 15:52:59 6 sec: 1000000 operations; [INSERT: Count=1000000 Max=11919.36 Min=1.35 Avg=4.83 90=3.84 99=22.51 99.9=1082.37 99.99=1189.89] +Load runtime(sec): 6.34656 +Load operations(ops): 1000000 +Load throughput(ops/sec): 157566 +2025-01-05 15:52:59 0 sec: 0 operations; +2025-01-05 15:53:06 6 sec: 1000000 operations; [READ: Count=499746 Max=6340.61 Min=0.46 Avg=4.85 90=8.81 99=14.58 99.9=32.29 99.99=71.36] [UPDATE: Count=500254 Max=10297.34 Min=2.01 Avg=7.59 90=11.54 99=25.21 99.9=50.62 99.99=142.85] +Run runtime(sec): 6.75589 +Run operations(ops): 1000000 +Run throughput(ops/sec): 148019 +All steps completed successfully! +``` + +workloadb-1000000-10*100 + +``` + LD ycsb +2025-01-05 15:54:45 0 sec: 0 operations; +2025-01-05 15:54:52 7 sec: 1000000 operations; [INSERT: Count=1000000 Max=509870.08 Min=1.33 Avg=5.19 90=3.69 99=19.77 99.9=1075.20 99.99=1203.20] +Load runtime(sec): 7.06858 +Load operations(ops): 1000000 +Load throughput(ops/sec): 141471 +2025-01-05 15:54:52 0 sec: 0 operations; +2025-01-05 15:54:57 4 sec: 1000000 operations; [READ: Count=950016 Max=8560.64 Min=0.45 Avg=3.86 90=6.78 99=12.86 99.9=28.38 99.99=70.59] [UPDATE: Count=49984 Max=11845.63 Min=2.13 Avg=13.65 90=30.09 99=44.45 99.9=131.71 99.99=3540.99] +Run runtime(sec): 4.9661 +Run operations(ops): 1000000 +Run throughput(ops/sec): 201365 +All steps completed successfully! +``` + +workloadc-1000000-10*100 + +``` + LD ycsb +2025-01-05 15:56:33 0 sec: 0 operations; +2025-01-05 15:56:39 6 sec: 1000000 operations; [INSERT: Count=1000000 Max=11763.71 Min=1.35 Avg=4.62 90=3.59 99=19.31 99.9=1071.10 99.99=1172.48] +Load runtime(sec): 6.05356 +Load operations(ops): 1000000 +Load throughput(ops/sec): 165192 +2025-01-05 15:56:39 0 sec: 0 operations; +2025-01-05 15:56:43 4 sec: 1000000 operations; [READ: Count=1000000 Max=7897.09 Min=0.77 Avg=3.69 90=5.85 99=10.73 99.9=24.24 99.99=64.06] +Run runtime(sec): 4.09051 +Run operations(ops): 1000000 +Run throughput(ops/sec): 244469 +All steps completed successfully! +``` + +workloadd-1000000-10*100 + +``` + LD ycsb +2025-01-05 15:57:33 0 sec: 0 operations; +2025-01-05 15:57:39 5 sec: 1000000 operations; [INSERT: Count=1000000 Max=11927.55 Min=1.34 Avg=4.43 90=3.50 99=8.25 99.9=1073.15 99.99=1186.82] +Load runtime(sec): 5.87062 +Load operations(ops): 1000000 +Load throughput(ops/sec): 170340 +2025-01-05 15:57:39 0 sec: 0 operations; +2025-01-05 15:57:42 2 sec: 1000000 operations; [INSERT: Count=49658 Max=9773.06 Min=1.54 Avg=7.00 90=21.65 99=36.00 99.9=67.84 99.99=252.29] [READ: Count=950342 Max=5664.77 Min=0.42 Avg=2.20 90=5.67 99=11.56 99.9=23.39 99.99=55.36] +Run runtime(sec): 2.92777 +Run operations(ops): 1000000 +Run throughput(ops/sec): 341556 +All steps completed successfully! +``` + +workloade-recordcount=100000-operationcount=10000-10*100 + +``` + LD ycsb +2025-01-05 15:58:47 0 sec: 0 operations; +2025-01-05 15:58:47 0 sec: 100000 operations; [INSERT: Count=100000 Max=1615.87 Min=1.34 Avg=2.85 90=3.74 99=9.41 99.9=24.88 99.99=93.38] +Load runtime(sec): 0.449435 +Load operations(ops): 100000 +Load throughput(ops/sec): 222502 +2025-01-05 15:58:47 0 sec: 0 operations; +2025-01-05 15:58:49 2 sec: 10000 operations; [INSERT: Count=508 Max=107.33 Min=3.62 Avg=48.62 90=69.57 99=92.61 99.9=107.14 99.99=107.33] [SCAN: Count=9492 Max=660.48 Min=5.70 Avg=180.07 90=308.22 99=355.84 99.9=405.25 99.99=644.61] +Run runtime(sec): 2.10515 +Run operations(ops): 10000 +Run throughput(ops/sec): 4750.26 +All steps completed successfully! +``` + +workloadf-1000000-10*100 + +``` + LD ycsb +2025-01-05 15:59:12 0 sec: 0 operations; +2025-01-05 15:59:18 6 sec: 1000000 operations; [INSERT: Count=1000000 Max=16072.70 Min=1.35 Avg=4.85 90=3.72 99=19.47 99.9=1071.10 99.99=1186.82] +Load runtime(sec): 6.3055 +Load operations(ops): 1000000 +Load throughput(ops/sec): 158592 +2025-01-05 15:59:18 0 sec: 0 operations; +2025-01-05 15:59:26 8 sec: 1500583 operations; [READ: Count=1000000 Max=6959.10 Min=0.43 Avg=4.36 90=7.85 99=12.53 99.9=26.51 99.99=74.88] [UPDATE: Count=500583 Max=724041.73 Min=2.00 Avg=6.76 90=5.44 99=14.01 99.9=44.41 99.99=124.16] +Run runtime(sec): 8.30236 +Run operations(ops): 1000000 +Run throughput(ops/sec): 120448 +All steps completed successfully! +``` + + + +## 20fields*1000field-len + +workloada-1000000-20*1000 + +``` + LD ycsb +2025-01-05 15:59:59 0 sec: 0 operations; +2025-01-05 16:00:09 10 sec: 114605 operations; [INSERT: Count=114605 Max=63504.38 Min=11.38 Avg=65.40 90=40.45 99=1150.97 99.9=1295.36 99.99=7274.49] +2025-01-05 16:00:19 20 sec: 148212 operations; [INSERT: Count=148212 Max=63504.38 Min=11.38 Avg=112.49 90=60.41 99=1188.86 99.9=1353.73 99.99=8151.04] +2025-01-05 16:00:30 30 sec: 208343 operations; [INSERT: Count=208343 Max=403701.76 Min=11.38 Avg=123.30 90=68.16 99=1191.93 99.9=1373.18 99.99=8495.10] +2025-01-05 16:00:40 40 sec: 243351 operations; [INSERT: Count=243351 Max=403701.76 Min=11.38 Avg=143.21 90=1070.08 99=1202.17 99.9=1394.69 99.99=10141.69] +2025-01-05 16:00:50 50 sec: 279328 operations; [INSERT: Count=279328 Max=403701.76 Min=11.38 Avg=157.48 90=1078.27 99=1208.32 99.9=1416.19 99.99=10141.69] +2025-01-05 16:01:01 61 sec: 336350 operations; [INSERT: Count=336350 Max=499384.32 Min=11.38 Avg=159.25 90=1077.25 99=1208.32 99.9=1410.05 99.99=10559.49] +2025-01-05 16:01:11 71 sec: 369130 operations; [INSERT: Count=369130 Max=499384.32 Min=11.38 Avg=170.03 90=1084.41 99=1212.41 99.9=1426.43 99.99=11124.74] +2025-01-05 16:01:21 81 sec: 427164 operations; [INSERT: Count=427164 Max=499384.32 Min=11.38 Avg=167.17 90=1082.37 99=1211.39 99.9=1432.58 99.99=11247.61] +2025-01-05 16:01:32 92 sec: 460728 operations; [INSERT: Count=460728 Max=499384.32 Min=11.38 Avg=176.91 90=1086.46 99=1214.46 99.9=1438.72 99.99=11689.98] +2025-01-05 16:01:42 102 sec: 495035 operations; [INSERT: Count=495035 Max=499384.32 Min=11.38 Avg=183.19 90=1088.51 99=1217.54 99.9=1457.15 99.99=11247.61] +2025-01-05 16:01:52 112 sec: 529834 operations; [INSERT: Count=529834 Max=499384.32 Min=11.38 Avg=188.46 90=1090.56 99=1219.58 99.9=1462.27 99.99=11247.61] +2025-01-05 16:02:03 123 sec: 563005 operations; [INSERT: Count=563005 Max=499384.32 Min=11.38 Avg=195.32 90=1091.58 99=1221.63 99.9=1475.58 99.99=11247.61] +2025-01-05 16:02:13 133 sec: 594816 operations; [INSERT: Count=594816 Max=499384.32 Min=11.38 Avg=200.29 90=1093.63 99=1223.68 99.9=1482.75 99.99=11247.61] +2025-01-05 16:02:23 143 sec: 627620 operations; [INSERT: Count=627620 Max=499384.32 Min=11.22 Avg=204.46 90=1094.65 99=1225.73 99.9=1485.82 99.99=11247.61] +2025-01-05 16:02:33 154 sec: 662796 operations; [INSERT: Count=662796 Max=499384.32 Min=11.22 Avg=208.02 90=1094.65 99=1227.78 99.9=1491.97 99.99=11649.02] +2025-01-05 16:02:43 164 sec: 686409 operations; [INSERT: Count=686409 Max=499384.32 Min=11.22 Avg=214.57 90=1096.70 99=1229.82 99.9=1501.18 99.99=11689.98] +2025-01-05 16:02:53 174 sec: 705880 operations; [INSERT: Count=705880 Max=499384.32 Min=11.22 Avg=222.05 90=1098.75 99=1231.87 99.9=1515.52 99.99=11919.36] +2025-01-05 16:03:04 184 sec: 741306 operations; [INSERT: Count=741306 Max=866123.78 Min=11.22 Avg=224.91 90=1098.75 99=1232.89 99.9=1519.62 99.99=12427.26] +2025-01-05 16:03:15 195 sec: 775745 operations; [INSERT: Count=775745 Max=866123.78 Min=11.22 Avg=227.68 90=1099.78 99=1233.92 99.9=1523.71 99.99=12320.77] +2025-01-05 16:03:25 205 sec: 808423 operations; [INSERT: Count=808423 Max=866123.78 Min=11.22 Avg=229.83 90=1099.78 99=1233.92 99.9=1525.76 99.99=12058.62] +2025-01-05 16:03:36 216 sec: 830244 operations; [INSERT: Count=830244 Max=866123.78 Min=11.22 Avg=235.90 90=1101.82 99=1235.97 99.9=1531.90 99.99=12451.84] +2025-01-05 16:03:46 226 sec: 851331 operations; [INSERT: Count=851331 Max=866123.78 Min=11.22 Avg=241.15 90=1102.85 99=1238.02 99.9=1546.24 99.99=12320.77] +2025-01-05 16:03:56 236 sec: 886430 operations; [INSERT: Count=886430 Max=866123.78 Min=11.22 Avg=241.91 90=1102.85 99=1239.04 99.9=1546.24 99.99=12320.77] +2025-01-05 16:04:06 247 sec: 920445 operations; [INSERT: Count=920445 Max=866123.78 Min=11.22 Avg=243.84 90=1102.85 99=1240.06 99.9=1546.24 99.99=12427.26] +2025-01-05 16:04:16 257 sec: 954142 operations; [INSERT: Count=954142 Max=866123.78 Min=11.22 Avg=244.83 90=1103.87 99=1240.06 99.9=1554.43 99.99=12214.27] +2025-01-05 16:04:26 267 sec: 962618 operations; [INSERT: Count=962618 Max=866123.78 Min=11.22 Avg=252.76 90=1104.89 99=1243.13 99.9=1570.82 99.99=12451.84] +2025-01-05 16:04:37 278 sec: 994253 operations; [INSERT: Count=994253 Max=866123.78 Min=11.22 Avg=254.90 90=1105.92 99=1243.13 99.9=1572.86 99.99=12451.84] +2025-01-05 16:04:44 284 sec: 1000000 operations; [INSERT: Count=1000000 Max=866123.78 Min=11.22 Avg=259.63 90=1106.94 99=1245.18 99.9=1587.20 99.99=12451.84] +Load runtime(sec): 284.448 +Load operations(ops): 1000000 +Load throughput(ops/sec): 3515.58 +2025-01-05 16:04:44 0 sec: 0 operations; +2025-01-05 16:04:54 10 sec: 56589 operations; [READ: Count=28226 Max=4689.92 Min=1.91 Avg=27.17 90=50.17 99=137.34 99.9=322.56 99.99=897.02] [UPDATE: Count=28363 Max=21430.27 Min=13.97 Avg=320.03 90=1176.58 99=1386.49 99.9=1864.70 99.99=11935.74] +2025-01-05 16:05:04 20 sec: 104740 operations; [READ: Count=52246 Max=15114.24 Min=1.78 Avg=29.02 90=52.09 99=178.69 99.9=537.09 99.99=1468.41] [UPDATE: Count=52494 Max=21430.27 Min=13.97 Avg=347.30 90=1188.86 99=1413.12 99.9=1780.73 99.99=11214.85] +2025-01-05 16:05:15 30 sec: 136540 operations; [READ: Count=68253 Max=15114.24 Min=1.78 Avg=30.35 90=54.91 99=188.41 99.9=635.39 99.99=1994.75] [UPDATE: Count=68287 Max=400818.17 Min=13.97 Avg=410.04 90=1201.15 99=1430.53 99.9=1991.68 99.99=11296.77] +2025-01-05 16:05:25 40 sec: 198379 operations; [READ: Count=99182 Max=15114.24 Min=1.78 Avg=31.00 90=52.83 99=225.66 99.9=783.87 99.99=3411.97] [UPDATE: Count=99197 Max=400818.17 Min=13.97 Avg=371.83 90=1186.82 99=1413.12 99.9=2115.58 99.99=11214.85] +2025-01-05 16:05:35 50 sec: 231885 operations; [READ: Count=115882 Max=15114.24 Min=1.78 Avg=32.19 90=54.27 99=266.75 99.9=842.24 99.99=3491.84] [UPDATE: Count=116003 Max=400818.17 Min=13.97 Avg=397.82 90=1189.89 99=1418.24 99.9=2418.69 99.99=11214.85] +2025-01-05 16:05:46 61 sec: 279192 operations; [READ: Count=139557 Max=15114.24 Min=1.78 Avg=33.84 90=54.78 99=347.13 99.9=912.89 99.99=4157.44] [UPDATE: Count=139635 Max=488636.41 Min=13.97 Avg=400.62 90=1186.82 99=1431.55 99.9=2729.98 99.99=12779.52] +2025-01-05 16:05:56 71 sec: 341791 operations; [READ: Count=170886 Max=15114.24 Min=1.52 Avg=34.98 90=54.24 99=403.97 99.9=992.77 99.99=4190.21] [UPDATE: Count=170905 Max=488636.41 Min=13.66 Avg=377.81 90=1177.60 99=1428.48 99.9=2897.92 99.99=12779.52] +2025-01-05 16:06:06 81 sec: 404249 operations; [READ: Count=202126 Max=15114.24 Min=1.52 Avg=36.82 90=54.69 99=447.74 99.9=1055.74 99.99=4251.65] [UPDATE: Count=202123 Max=488636.41 Min=13.66 Avg=361.07 90=1170.43 99=1431.55 99.9=3065.86 99.99=13066.24] +2025-01-05 16:06:16 92 sec: 467049 operations; [READ: Count=233431 Max=15114.24 Min=1.41 Avg=38.63 90=55.07 99=476.93 99.9=1197.06 99.99=4509.69] [UPDATE: Count=233618 Max=488636.41 Min=13.66 Avg=351.86 90=1164.29 99=1435.65 99.9=3368.96 99.99=13778.94] +2025-01-05 16:06:26 102 sec: 530904 operations; [READ: Count=265474 Max=15114.24 Min=1.41 Avg=39.54 90=55.04 99=492.03 99.9=1282.05 99.99=4595.71] [UPDATE: Count=265430 Max=488636.41 Min=13.66 Avg=341.35 90=1160.19 99=1436.67 99.9=3409.92 99.99=13262.85] +2025-01-05 16:06:36 112 sec: 586189 operations; [READ: Count=292973 Max=15114.24 Min=1.41 Avg=40.93 90=55.71 99=511.23 99.9=1343.49 99.99=4673.53] [UPDATE: Count=293216 Max=488636.41 Min=13.66 Avg=337.63 90=1157.12 99=1448.96 99.9=3495.93 99.99=14221.31] +2025-01-05 16:06:47 123 sec: 648261 operations; [READ: Count=323957 Max=15114.24 Min=1.41 Avg=41.76 90=55.71 99=525.82 99.9=1380.35 99.99=4677.63] [UPDATE: Count=324304 Max=497549.31 Min=13.66 Avg=333.78 90=1154.05 99=1453.06 99.9=3962.88 99.99=16121.85] +2025-01-05 16:06:57 133 sec: 709529 operations; [READ: Count=354558 Max=16711.68 Min=1.41 Avg=43.21 90=56.26 99=539.65 99.9=1633.28 99.99=4739.07] [UPDATE: Count=354971 Max=497549.31 Min=13.60 Avg=327.74 90=1150.97 99=1457.15 99.9=4104.19 99.99=14458.88] +2025-01-05 16:07:07 143 sec: 769996 operations; [READ: Count=384836 Max=16711.68 Min=1.41 Avg=44.37 90=56.86 99=550.40 99.9=1816.58 99.99=4825.09] [UPDATE: Count=385160 Max=497549.31 Min=13.60 Avg=323.15 90=1148.93 99=1461.25 99.9=4126.72 99.99=14221.31] +2025-01-05 16:07:18 153 sec: 832042 operations; [READ: Count=415800 Max=16711.68 Min=1.41 Avg=45.07 90=57.09 99=557.05 99.9=1923.07 99.99=4845.57] [UPDATE: Count=416242 Max=497549.31 Min=13.60 Avg=319.71 90=1146.88 99=1467.39 99.9=4147.20 99.99=14737.41] +2025-01-05 16:07:28 163 sec: 890584 operations; [READ: Count=445049 Max=16711.68 Min=1.41 Avg=45.96 90=57.47 99=566.27 99.9=2123.78 99.99=4857.85] [UPDATE: Count=445535 Max=497549.31 Min=13.60 Avg=317.03 90=1144.83 99=1471.49 99.9=4147.20 99.99=14737.41] +2025-01-05 16:07:38 173 sec: 950788 operations; [READ: Count=475213 Max=18104.32 Min=1.41 Avg=46.79 90=57.53 99=572.93 99.9=2359.30 99.99=4886.53] [UPDATE: Count=475575 Max=497549.31 Min=13.60 Avg=314.04 90=1144.83 99=1474.56 99.9=4214.78 99.99=14737.41] +2025-01-05 16:07:47 183 sec: 1000000 operations; [READ: Count=499872 Max=18104.32 Min=1.41 Avg=48.82 90=57.34 99=598.53 99.9=2715.65 99.99=4931.58] [UPDATE: Count=500128 Max=762314.75 Min=13.60 Avg=311.47 90=1143.81 99=1496.06 99.9=4214.78 99.99=15319.04] +Run runtime(sec): 183.076 +Run operations(ops): 1000000 +Run throughput(ops/sec): 5462.22 +All steps completed successfully! +``` + +workloadb-1000000-20*1000 + +``` + LD ycsb +2025-01-05 16:08:54 0 sec: 0 operations; +2025-01-05 16:09:04 10 sec: 106648 operations; [INSERT: Count=106648 Max=44466.18 Min=13.10 Avg=70.16 90=47.13 99=1180.67 99.9=1308.67 99.99=7757.82] +2025-01-05 16:09:15 20 sec: 147135 operations; [INSERT: Count=147135 Max=489947.14 Min=13.10 Avg=117.91 90=64.83 99=1219.58 99.9=1395.71 99.99=9633.79] +2025-01-05 16:09:25 30 sec: 204469 operations; [INSERT: Count=204469 Max=489947.14 Min=12.62 Avg=127.01 90=79.42 99=1220.61 99.9=1412.10 99.99=9633.79] +2025-01-05 16:09:35 40 sec: 238367 operations; [INSERT: Count=238367 Max=489947.14 Min=12.62 Avg=147.39 90=1056.77 99=1221.63 99.9=1421.31 99.99=9969.66] +2025-01-05 16:09:46 51 sec: 270455 operations; [INSERT: Count=270455 Max=491257.85 Min=12.42 Avg=167.37 90=1082.37 99=1227.78 99.9=1442.82 99.99=11476.99] +2025-01-05 16:09:56 61 sec: 331046 operations; [INSERT: Count=331046 Max=491257.85 Min=12.42 Avg=162.60 90=1079.30 99=1224.70 99.9=1434.62 99.99=11476.99] +2025-01-05 16:10:06 71 sec: 364925 operations; [INSERT: Count=364925 Max=491257.85 Min=12.42 Avg=172.70 90=1086.46 99=1226.75 99.9=1460.22 99.99=12001.28] +2025-01-05 16:10:17 82 sec: 399130 operations; [INSERT: Count=399130 Max=491257.85 Min=12.42 Avg=183.01 90=1090.56 99=1228.80 99.9=1466.37 99.99=12115.97] +2025-01-05 16:10:27 92 sec: 433525 operations; [INSERT: Count=433525 Max=491257.85 Min=12.42 Avg=189.65 90=1093.63 99=1230.85 99.9=1471.49 99.99=12468.22] +2025-01-05 16:10:37 102 sec: 467400 operations; [INSERT: Count=467400 Max=491257.85 Min=12.25 Avg=195.54 90=1094.65 99=1231.87 99.9=1482.75 99.99=12115.97] +2025-01-05 16:10:48 113 sec: 501676 operations; [INSERT: Count=501676 Max=491257.85 Min=12.13 Avg=202.18 90=1096.70 99=1232.89 99.9=1486.85 99.99=12468.22] +2025-01-05 16:10:58 123 sec: 536346 operations; [INSERT: Count=536346 Max=491257.85 Min=12.13 Avg=206.21 90=1097.73 99=1233.92 99.9=1501.18 99.99=12115.97] +2025-01-05 16:11:08 133 sec: 569996 operations; [INSERT: Count=569996 Max=491257.85 Min=12.13 Avg=210.17 90=1098.75 99=1235.97 99.9=1506.30 99.99=12558.33] +2025-01-05 16:11:19 144 sec: 604511 operations; [INSERT: Count=604511 Max=491257.85 Min=12.13 Avg=214.83 90=1099.78 99=1238.02 99.9=1521.66 99.99=12697.60] +2025-01-05 16:11:29 154 sec: 638544 operations; [INSERT: Count=638544 Max=491257.85 Min=12.13 Avg=217.71 90=1101.82 99=1240.06 99.9=1526.78 99.99=12558.33] +2025-01-05 16:11:39 164 sec: 647056 operations; [INSERT: Count=647056 Max=491257.85 Min=12.13 Avg=229.87 90=1104.89 99=1244.16 99.9=1551.36 99.99=12607.49] +2025-01-05 16:11:50 175 sec: 681775 operations; [INSERT: Count=681775 Max=491257.85 Min=12.13 Avg=232.85 90=1104.89 99=1244.16 99.9=1554.43 99.99=12713.98] +2025-01-05 16:12:00 185 sec: 715849 operations; [INSERT: Count=715849 Max=491257.85 Min=12.13 Avg=234.58 90=1105.92 99=1244.16 99.9=1556.48 99.99=12607.49] +2025-01-05 16:12:10 195 sec: 750472 operations; [INSERT: Count=750472 Max=491257.85 Min=12.13 Avg=235.97 90=1105.92 99=1245.18 99.9=1566.72 99.99=12558.33] +2025-01-05 16:12:21 206 sec: 759020 operations; [INSERT: Count=759020 Max=491257.85 Min=12.13 Avg=247.31 90=1107.97 99=1248.26 99.9=1587.20 99.99=12648.45] +2025-01-05 16:12:31 216 sec: 790841 operations; [INSERT: Count=790841 Max=491257.85 Min=12.13 Avg=249.04 90=1107.97 99=1247.23 99.9=1580.03 99.99=12607.49] +2025-01-05 16:12:41 226 sec: 798116 operations; [INSERT: Count=798116 Max=491257.85 Min=12.13 Avg=257.13 90=1110.02 99=1249.28 99.9=1588.22 99.99=12648.45] +2025-01-05 16:12:51 237 sec: 827562 operations; [INSERT: Count=827562 Max=5096079.36 Min=11.32 Avg=262.13 90=1108.99 99=1248.26 99.9=1586.17 99.99=12713.98] +2025-01-05 16:13:01 247 sec: 836158 operations; [INSERT: Count=836158 Max=5096079.36 Min=11.32 Avg=271.08 90=1111.04 99=1250.30 99.9=1592.32 99.99=12713.98] +2025-01-05 16:13:11 257 sec: 865916 operations; [INSERT: Count=865916 Max=5096079.36 Min=11.32 Avg=272.53 90=1110.02 99=1249.28 99.9=1587.20 99.99=12697.60] +2025-01-05 16:13:22 267 sec: 874505 operations; [INSERT: Count=874505 Max=5096079.36 Min=11.32 Avg=281.99 90=1112.06 99=1251.33 99.9=1592.32 99.99=12771.33] +2025-01-05 16:13:32 277 sec: 877268 operations; [INSERT: Count=877268 Max=5096079.36 Min=11.32 Avg=284.66 90=1113.09 99=1252.35 99.9=1595.39 99.99=12713.98] +2025-01-05 16:13:42 287 sec: 897056 operations; [INSERT: Count=897056 Max=15099494.40 Min=11.32 Avg=296.54 90=1112.06 99=1250.30 99.9=1588.22 99.99=13123.58] +2025-01-05 16:13:53 298 sec: 911257 operations; [INSERT: Count=911257 Max=15099494.40 Min=11.32 Avg=303.00 90=1113.09 99=1252.35 99.9=1592.32 99.99=13262.85] +2025-01-05 16:14:03 308 sec: 916844 operations; [INSERT: Count=916844 Max=15099494.40 Min=11.32 Avg=308.03 90=1114.11 99=1252.35 99.9=1597.44 99.99=13148.16] +2025-01-05 16:14:13 318 sec: 947805 operations; [INSERT: Count=947805 Max=15099494.40 Min=11.32 Avg=311.48 90=1113.09 99=1252.35 99.9=1588.22 99.99=13500.42] +2025-01-05 16:14:24 329 sec: 956399 operations; [INSERT: Count=956399 Max=15099494.40 Min=11.32 Avg=319.79 90=1115.13 99=1253.38 99.9=1591.30 99.99=13606.91] +2025-01-05 16:14:34 339 sec: 956420 operations; [INSERT: Count=956420 Max=15099494.40 Min=11.32 Avg=319.81 90=1115.13 99=1253.38 99.9=1591.30 99.99=13606.91] +2025-01-05 16:14:44 349 sec: 964593 operations; [INSERT: Count=964593 Max=19461570.56 Min=11.32 Avg=337.62 90=1114.11 99=1253.38 99.9=1588.22 99.99=13664.25] +2025-01-05 16:14:55 360 sec: 990052 operations; [INSERT: Count=990052 Max=19461570.56 Min=11.32 Avg=339.30 90=1115.13 99=1253.38 99.9=1588.22 99.99=14041.09] +2025-01-05 16:15:05 370 sec: 995996 operations; [INSERT: Count=995996 Max=19461570.56 Min=11.32 Avg=344.02 90=1116.16 99=1254.40 99.9=1590.27 99.99=14041.09] +2025-01-05 16:15:15 380 sec: 995996 operations; [INSERT: Count=995996 Max=19461570.56 Min=11.32 Avg=344.02 90=1116.16 99=1254.40 99.9=1590.27 99.99=14041.09] +2025-01-05 16:15:20 385 sec: 1000000 operations; [INSERT: Count=1000000 Max=19461570.56 Min=11.32 Avg=360.74 90=1115.13 99=1254.40 99.9=1590.27 99.99=14180.35] +Load runtime(sec): 385.924 +Load operations(ops): 1000000 +Load throughput(ops/sec): 2591.19 +2025-01-05 16:15:20 0 sec: 0 operations; +2025-01-05 16:15:31 10 sec: 402504 operations; [READ: Count=382629 Max=405536.77 Min=1.29 Avg=16.08 90=24.11 99=52.26 99.9=106.05 99.99=184.45] [UPDATE: Count=19875 Max=468451.33 Min=14.45 Avg=206.09 90=1093.63 99=1233.92 99.9=1353.73 99.99=6799.36] +2025-01-05 16:15:41 20 sec: 533850 operations; [READ: Count=507489 Max=405536.77 Min=1.29 Avg=16.89 90=27.28 99=59.10 99.9=115.90 99.99=194.69] [UPDATE: Count=26361 Max=468451.33 Min=14.45 Avg=438.75 90=1145.86 99=1294.34 99.9=1553.41 99.99=11165.69] +2025-01-05 16:15:51 30 sec: 661416 operations; [READ: Count=628665 Max=405536.77 Min=1.29 Avg=17.68 90=29.89 99=68.09 99.9=128.90 99.99=220.29] [UPDATE: Count=32751 Max=468451.33 Min=14.45 Avg=577.41 90=1181.69 99=1310.72 99.9=1589.25 99.99=12017.66] +2025-01-05 16:16:02 41 sec: 1000000 operations; [READ: Count=950279 Max=405536.77 Min=1.29 Avg=16.04 90=26.59 99=64.58 99.9=121.73 99.99=213.50] [UPDATE: Count=49721 Max=5091885.05 Min=14.45 Avg=505.53 90=1141.76 99=1290.24 99.9=1508.35 99.99=11165.69] +2025-01-05 16:16:02 41 sec: 1000000 operations; [READ: Count=950279 Max=405536.77 Min=1.29 Avg=16.04 90=26.59 99=64.58 99.9=121.73 99.99=213.50] [UPDATE: Count=49721 Max=5091885.05 Min=14.45 Avg=505.53 90=1141.76 99=1290.24 99.9=1508.35 99.99=11165.69] +Run runtime(sec): 41.98 +Run operations(ops): 1000000 +Run throughput(ops/sec): 23820.9 +All steps completed successfully! +``` + +workloadc-1000000-20*1000 + +``` + LD ycsb +2025-01-05 16:16:35 0 sec: 0 operations; +2025-01-05 16:16:45 10 sec: 101975 operations; [INSERT: Count=101975 Max=27623.42 Min=12.84 Avg=74.31 90=60.61 99=1182.72 99.9=1333.25 99.99=8036.35] +2025-01-05 16:16:56 20 sec: 141277 operations; [INSERT: Count=141277 Max=470810.62 Min=12.84 Avg=123.97 90=80.89 99=1200.13 99.9=1358.85 99.99=14753.79] +2025-01-05 16:17:06 30 sec: 162673 operations; [INSERT: Count=162673 Max=470810.62 Min=12.56 Avg=165.88 90=1085.44 99=1213.44 99.9=1372.16 99.99=16670.72] +2025-01-05 16:17:16 40 sec: 181556 operations; [INSERT: Count=181556 Max=470810.62 Min=12.56 Avg=201.11 90=1094.65 99=1222.65 99.9=1392.64 99.99=19496.96] +2025-01-05 16:17:27 51 sec: 207580 operations; [INSERT: Count=207580 Max=985137.15 Min=12.56 Avg=223.30 90=1096.70 99=1226.75 99.9=1410.05 99.99=84279.29] +2025-01-05 16:17:37 61 sec: 222234 operations; [INSERT: Count=222234 Max=985137.15 Min=12.56 Avg=251.87 90=1101.82 99=1233.92 99.9=1438.72 99.99=119275.52] +2025-01-05 16:17:47 71 sec: 227562 operations; [INSERT: Count=227562 Max=985137.15 Min=12.56 Avg=272.46 90=1103.87 99=1240.06 99.9=1460.22 99.99=118751.23] +2025-01-05 16:17:58 82 sec: 257979 operations; [INSERT: Count=257979 Max=7012876.29 Min=12.56 Avg=294.83 90=1101.82 99=1236.99 99.9=1459.20 99.99=130416.64] +2025-01-05 16:18:08 92 sec: 266587 operations; [INSERT: Count=266587 Max=7012876.29 Min=12.56 Avg=321.87 90=1106.94 99=1244.16 99.9=1477.63 99.99=128581.63] +2025-01-05 16:18:18 102 sec: 295023 operations; [INSERT: Count=295023 Max=7012876.29 Min=12.56 Avg=322.69 90=1103.87 99=1240.06 99.9=1470.46 99.99=134086.65] +2025-01-05 16:18:28 113 sec: 303656 operations; [INSERT: Count=303656 Max=7012876.29 Min=12.56 Avg=348.54 90=1107.97 99=1245.18 99.9=1494.02 99.99=134873.09] +2025-01-05 16:18:38 123 sec: 306714 operations; [INSERT: Count=306714 Max=7012876.29 Min=12.56 Avg=356.38 90=1110.02 99=1248.26 99.9=1504.26 99.99=134873.09] +2025-01-05 16:18:48 133 sec: 336841 operations; [INSERT: Count=336841 Max=9814671.36 Min=12.56 Avg=371.34 90=1107.97 99=1246.21 99.9=1494.02 99.99=139329.54] +2025-01-05 16:18:59 144 sec: 345483 operations; [INSERT: Count=345483 Max=9814671.36 Min=12.56 Avg=392.75 90=1111.04 99=1251.33 99.9=1507.33 99.99=139722.75] +2025-01-05 16:19:09 154 sec: 376962 operations; [INSERT: Count=376962 Max=9814671.36 Min=12.56 Avg=384.57 90=1110.02 99=1249.28 99.9=1507.33 99.99=148111.36] +2025-01-05 16:19:19 164 sec: 385568 operations; [INSERT: Count=385568 Max=9814671.36 Min=12.56 Avg=401.26 90=1114.11 99=1255.42 99.9=1524.73 99.99=146276.35] +2025-01-05 16:19:30 175 sec: 405654 operations; [INSERT: Count=405654 Max=9814671.36 Min=12.54 Avg=405.66 90=1111.04 99=1252.35 99.9=1511.42 99.99=149159.93] +2025-01-05 16:19:40 185 sec: 420338 operations; [INSERT: Count=420338 Max=9814671.36 Min=12.54 Avg=414.72 90=1114.11 99=1254.40 99.9=1522.69 99.99=149946.37] +2025-01-05 16:19:50 195 sec: 436205 operations; [INSERT: Count=436205 Max=9814671.36 Min=12.54 Avg=421.70 90=1114.11 99=1254.40 99.9=1525.76 99.99=151912.45] +2025-01-05 16:20:01 206 sec: 459163 operations; [INSERT: Count=459163 Max=9814671.36 Min=12.54 Avg=423.11 90=1115.13 99=1255.42 99.9=1531.90 99.99=158203.90] +2025-01-05 16:20:11 216 sec: 465018 operations; [INSERT: Count=465018 Max=9814671.36 Min=12.54 Avg=432.03 90=1118.21 99=1257.47 99.9=1534.97 99.99=157155.33] +2025-01-05 16:20:21 226 sec: 493288 operations; [INSERT: Count=493288 Max=9814671.36 Min=12.14 Avg=432.82 90=1114.11 99=1254.40 99.9=1522.69 99.99=157155.33] +2025-01-05 16:20:32 237 sec: 501926 operations; [INSERT: Count=501926 Max=9814671.36 Min=12.14 Avg=446.55 90=1117.18 99=1257.47 99.9=1534.97 99.99=158203.90] +2025-01-05 16:20:42 247 sec: 504594 operations; [INSERT: Count=504594 Max=9814671.36 Min=12.14 Avg=450.16 90=1118.21 99=1258.49 99.9=1537.02 99.99=158203.90] +2025-01-05 16:20:52 257 sec: 535147 operations; [INSERT: Count=535147 Max=9831448.57 Min=12.14 Avg=454.77 90=1116.16 99=1256.45 99.9=1528.83 99.99=157941.76] +2025-01-05 16:21:03 267 sec: 543777 operations; [INSERT: Count=543777 Max=9831448.57 Min=12.14 Avg=467.10 90=1119.23 99=1258.49 99.9=1534.97 99.99=158728.19] +2025-01-05 16:21:13 277 sec: 544170 operations; [INSERT: Count=544170 Max=9831448.57 Min=12.14 Avg=467.58 90=1119.23 99=1258.49 99.9=1536.00 99.99=158728.19] +2025-01-05 16:21:23 287 sec: 544170 operations; [INSERT: Count=544170 Max=9831448.57 Min=12.14 Avg=467.58 90=1119.23 99=1258.49 99.9=1536.00 99.99=158728.19] +2025-01-05 16:21:34 298 sec: 575881 operations; [INSERT: Count=575881 Max=21088960.51 Min=12.14 Avg=493.40 90=1118.21 99=1257.47 99.9=1534.97 99.99=161349.63] +2025-01-05 16:21:44 308 sec: 583746 operations; [INSERT: Count=583746 Max=21088960.51 Min=12.14 Avg=501.95 90=1120.26 99=1258.49 99.9=1540.10 99.99=161349.63] +2025-01-05 16:21:54 318 sec: 583746 operations; [INSERT: Count=583746 Max=21088960.51 Min=12.14 Avg=501.95 90=1120.26 99=1258.49 99.9=1540.10 99.99=161349.63] +2025-01-05 16:22:05 329 sec: 614931 operations; [INSERT: Count=614931 Max=21088960.51 Min=12.14 Avg=510.78 90=1119.23 99=1257.47 99.9=1538.05 99.99=161349.63] +2025-01-05 16:22:15 339 sec: 623322 operations; [INSERT: Count=623322 Max=21088960.51 Min=12.14 Avg=519.15 90=1121.28 99=1259.52 99.9=1547.26 99.99=160432.13] +2025-01-05 16:22:25 349 sec: 623322 operations; [INSERT: Count=623322 Max=21088960.51 Min=12.14 Avg=519.15 90=1121.28 99=1259.52 99.9=1547.26 99.99=160432.13] +2025-01-05 16:22:35 360 sec: 651217 operations; [INSERT: Count=651217 Max=21088960.51 Min=12.14 Avg=528.40 90=1119.23 99=1257.47 99.9=1540.10 99.99=163577.86] +2025-01-05 16:22:45 370 sec: 659827 operations; [INSERT: Count=659827 Max=21088960.51 Min=12.14 Avg=536.27 90=1121.28 99=1260.54 99.9=1549.31 99.99=162529.28] +2025-01-05 16:22:55 380 sec: 662898 operations; [INSERT: Count=662898 Max=21088960.51 Min=12.14 Avg=539.06 90=1122.30 99=1261.57 99.9=1559.55 99.99=162529.28] +2025-01-05 16:23:06 391 sec: 689468 operations; [INSERT: Count=689468 Max=21088960.51 Min=12.14 Avg=542.53 90=1119.23 99=1259.52 99.9=1545.21 99.99=166723.58] +2025-01-05 16:23:16 401 sec: 698079 operations; [INSERT: Count=698079 Max=21088960.51 Min=12.14 Avg=549.79 90=1121.28 99=1262.59 99.9=1562.62 99.99=165281.79] +2025-01-05 16:23:26 411 sec: 702474 operations; [INSERT: Count=702474 Max=21088960.51 Min=12.14 Avg=553.44 90=1122.30 99=1263.62 99.9=1567.74 99.99=165281.79] +2025-01-05 16:23:50 435 sec: 702474 operations; [INSERT: Count=702474 Max=21088960.51 Min=12.14 Avg=553.44 90=1122.30 99=1263.62 99.9=1567.74 99.99=165281.79] +2025-01-05 16:24:00 445 sec: 732891 operations; [INSERT: Count=732891 Max=31776047.10 Min=12.14 Avg=582.37 90=1121.28 99=1261.57 99.9=1562.62 99.99=162529.28] +2025-01-05 16:24:10 455 sec: 741528 operations; [INSERT: Count=741528 Max=31776047.10 Min=12.14 Avg=588.73 90=1123.33 99=1263.62 99.9=1563.65 99.99=161349.63] +2025-01-05 16:24:21 465 sec: 742050 operations; [INSERT: Count=742050 Max=31776047.10 Min=12.14 Avg=589.12 90=1123.33 99=1263.62 99.9=1563.65 99.99=161349.63] +2025-01-05 16:24:31 475 sec: 757060 operations; [INSERT: Count=757060 Max=31776047.10 Min=12.14 Avg=603.31 90=1121.28 99=1262.59 99.9=1560.58 99.99=161349.63] +2025-01-05 16:24:41 485 sec: 776087 operations; [INSERT: Count=776087 Max=31776047.10 Min=12.14 Avg=600.83 90=1123.33 99=1262.59 99.9=1561.60 99.99=160432.13] +2025-01-05 16:24:51 496 sec: 781626 operations; [INSERT: Count=781626 Max=31776047.10 Min=12.14 Avg=604.69 90=1124.35 99=1263.62 99.9=1563.65 99.99=160432.13] +2025-01-05 16:25:01 506 sec: 781626 operations; [INSERT: Count=781626 Max=31776047.10 Min=12.14 Avg=604.69 90=1124.35 99=1263.62 99.9=1563.65 99.99=160432.13] +2025-01-05 16:25:11 516 sec: 812210 operations; [INSERT: Count=812210 Max=31776047.10 Min=12.14 Avg=610.74 90=1123.33 99=1262.59 99.9=1560.58 99.99=161349.63] +2025-01-05 16:25:22 526 sec: 820767 operations; [INSERT: Count=820767 Max=31776047.10 Min=12.14 Avg=616.89 90=1124.35 99=1264.64 99.9=1564.67 99.99=161349.63] +2025-01-05 16:25:32 536 sec: 821202 operations; [INSERT: Count=821202 Max=31776047.10 Min=12.14 Avg=617.17 90=1125.38 99=1264.64 99.9=1564.67 99.99=161349.63] +2025-01-05 16:25:42 546 sec: 844288 operations; [INSERT: Count=844288 Max=31776047.10 Min=12.14 Avg=622.72 90=1123.33 99=1262.59 99.9=1559.55 99.99=162136.06] +2025-01-05 16:25:53 557 sec: 855709 operations; [INSERT: Count=855709 Max=31776047.10 Min=12.14 Avg=626.53 90=1124.35 99=1264.64 99.9=1562.62 99.99=163577.86] +2025-01-05 16:26:03 567 sec: 860778 operations; [INSERT: Count=860778 Max=31776047.10 Min=12.14 Avg=629.59 90=1125.38 99=1265.66 99.9=1565.69 99.99=163577.86] +2025-01-05 16:26:13 577 sec: 860778 operations; [INSERT: Count=860778 Max=31776047.10 Min=12.14 Avg=629.59 90=1125.38 99=1265.66 99.9=1565.69 99.99=163577.86] +2025-01-05 16:26:23 588 sec: 887962 operations; [INSERT: Count=887962 Max=31776047.10 Min=12.14 Avg=637.25 90=1123.33 99=1263.62 99.9=1559.55 99.99=166723.58] +2025-01-05 16:26:33 598 sec: 896425 operations; [INSERT: Count=896425 Max=31776047.10 Min=12.14 Avg=642.11 90=1125.38 99=1267.71 99.9=1567.74 99.99=166723.58] +2025-01-05 16:26:43 608 sec: 900354 operations; [INSERT: Count=900354 Max=31776047.10 Min=12.14 Avg=644.32 90=1126.40 99=1268.73 99.9=1576.96 99.99=166723.58] +2025-01-05 16:26:54 618 sec: 900354 operations; [INSERT: Count=900354 Max=31776047.10 Min=12.14 Avg=644.32 90=1126.40 99=1268.73 99.9=1576.96 99.99=166723.58] +2025-01-05 16:27:04 628 sec: 927874 operations; [INSERT: Count=927874 Max=31776047.10 Min=12.14 Avg=652.52 90=1125.38 99=1266.69 99.9=1567.74 99.99=166723.58] +2025-01-05 16:27:14 638 sec: 936401 operations; [INSERT: Count=936401 Max=31776047.10 Min=12.14 Avg=656.98 90=1126.40 99=1268.73 99.9=1572.86 99.99=166723.58] +2025-01-05 16:27:24 649 sec: 939930 operations; [INSERT: Count=939930 Max=31776047.10 Min=12.14 Avg=658.82 90=1127.42 99=1269.76 99.9=1574.91 99.99=166723.58] +2025-01-05 16:27:34 659 sec: 939930 operations; [INSERT: Count=939930 Max=31776047.10 Min=12.14 Avg=658.82 90=1127.42 99=1269.76 99.9=1574.91 99.99=166723.58] +2025-01-05 16:27:44 669 sec: 967876 operations; [INSERT: Count=967876 Max=31776047.10 Min=12.14 Avg=666.41 90=1126.40 99=1268.73 99.9=1567.74 99.99=166723.58] +2025-01-05 16:27:55 679 sec: 976335 operations; [INSERT: Count=976335 Max=31776047.10 Min=12.14 Avg=671.25 90=1128.45 99=1270.78 99.9=1575.93 99.99=167510.02] +2025-01-05 16:28:05 689 sec: 979506 operations; [INSERT: Count=979506 Max=31776047.10 Min=12.14 Avg=672.81 90=1128.45 99=1271.81 99.9=1576.96 99.99=167510.02] +2025-01-05 16:28:15 699 sec: 979506 operations; [INSERT: Count=979506 Max=31776047.10 Min=12.14 Avg=672.81 90=1128.45 99=1271.81 99.9=1576.96 99.99=167510.02] +2025-01-05 16:28:26 710 sec: 979506 operations; [INSERT: Count=979506 Max=31776047.10 Min=12.14 Avg=672.81 90=1128.45 99=1271.81 99.9=1576.96 99.99=167510.02] +2025-01-05 16:28:30 714 sec: 1000000 operations; [INSERT: Count=1000000 Max=31776047.10 Min=12.03 Avg=689.14 90=1127.42 99=1270.78 99.9=1568.77 99.99=169082.88] +Load runtime(sec): 714.6 +Load operations(ops): 1000000 +Load throughput(ops/sec): 1399.38 +2025-01-05 16:28:30 0 sec: 0 operations; +2025-01-05 16:28:40 10 sec: 588638 operations; [READ: Count=588638 Max=8577.02 Min=3.35 Avg=15.81 90=21.97 99=53.92 99.9=116.22 99.99=180.48] +2025-01-05 16:28:46 16 sec: 1000000 operations; [READ: Count=1000000 Max=11018.24 Min=3.31 Avg=15.25 90=21.15 99=51.77 99.9=113.41 99.99=168.57] +Run runtime(sec): 16.6548 +Run operations(ops): 1000000 +Run throughput(ops/sec): 60042.8 +All steps completed successfully! +``` + +workloadd-1000000-20*1000 + +``` + LD ycsb +2025-01-05 16:34:10 0 sec: 0 operations; +2025-01-05 16:34:20 10 sec: 105561 operations; [INSERT: Count=105561 Max=17367.04 Min=11.79 Avg=72.11 90=43.39 99=1189.89 99.9=1323.01 99.99=6950.91] +2025-01-05 16:34:30 20 sec: 164600 operations; [INSERT: Count=164600 Max=50724.86 Min=11.79 Avg=97.89 90=49.92 99=1209.34 99.9=1359.87 99.99=9568.25] +2025-01-05 16:34:41 30 sec: 197517 operations; [INSERT: Count=197517 Max=449576.96 Min=11.79 Avg=131.16 90=82.37 99=1232.89 99.9=1431.55 99.99=11100.16] +2025-01-05 16:34:51 40 sec: 254774 operations; [INSERT: Count=254774 Max=449576.96 Min=11.79 Avg=135.63 90=96.38 99=1238.02 99.9=1438.72 99.99=11968.51] +2025-01-05 16:35:01 50 sec: 305015 operations; [INSERT: Count=305015 Max=449576.96 Min=11.79 Avg=142.10 90=263.68 99=1239.04 99.9=1445.89 99.99=11968.51] +2025-01-05 16:35:11 61 sec: 344034 operations; [INSERT: Count=344034 Max=449576.96 Min=11.79 Avg=153.88 90=1095.68 99=1243.13 99.9=1458.17 99.99=12689.41] +2025-01-05 16:35:21 71 sec: 381832 operations; [INSERT: Count=381832 Max=449576.96 Min=11.79 Avg=162.36 90=1101.82 99=1246.21 99.9=1468.41 99.99=12746.75] +2025-01-05 16:35:31 81 sec: 435326 operations; [INSERT: Count=435326 Max=449576.96 Min=11.14 Avg=162.44 90=1100.80 99=1245.18 99.9=1471.49 99.99=12410.88] +2025-01-05 16:35:42 91 sec: 469614 operations; [INSERT: Count=469614 Max=449576.96 Min=11.14 Avg=171.38 90=1103.87 99=1247.23 99.9=1479.68 99.99=13017.09] +2025-01-05 16:35:52 101 sec: 502942 operations; [INSERT: Count=502942 Max=449576.96 Min=11.14 Avg=178.30 90=1106.94 99=1249.28 99.9=1490.94 99.99=13000.70] +2025-01-05 16:36:02 111 sec: 537494 operations; [INSERT: Count=537494 Max=449576.96 Min=11.14 Avg=183.84 90=1107.97 99=1251.33 99.9=1495.04 99.99=12689.41] +2025-01-05 16:36:12 122 sec: 570065 operations; [INSERT: Count=570065 Max=449576.96 Min=11.14 Avg=189.74 90=1110.02 99=1253.38 99.9=1505.28 99.99=12689.41] +2025-01-05 16:36:22 132 sec: 578399 operations; [INSERT: Count=578399 Max=449576.96 Min=11.14 Avg=203.80 90=1115.13 99=1259.52 99.9=1533.95 99.99=12689.41] +2025-01-05 16:36:32 142 sec: 613210 operations; [INSERT: Count=613210 Max=449576.96 Min=11.14 Avg=207.14 90=1116.16 99=1259.52 99.9=1537.02 99.99=13000.70] +2025-01-05 16:36:43 153 sec: 648709 operations; [INSERT: Count=648709 Max=449576.96 Min=11.14 Avg=210.91 90=1116.16 99=1261.57 99.9=1547.26 99.99=13017.09] +2025-01-05 16:36:53 163 sec: 683156 operations; [INSERT: Count=683156 Max=449576.96 Min=11.14 Avg=213.64 90=1117.18 99=1262.59 99.9=1550.34 99.99=13017.09] +2025-01-05 16:37:03 173 sec: 714972 operations; [INSERT: Count=714972 Max=449576.96 Min=11.14 Avg=216.98 90=1118.21 99=1264.64 99.9=1553.41 99.99=12967.93] +2025-01-05 16:37:14 183 sec: 749226 operations; [INSERT: Count=749226 Max=449576.96 Min=11.14 Avg=220.17 90=1118.21 99=1265.66 99.9=1563.65 99.99=13000.70] +2025-01-05 16:37:24 193 sec: 780964 operations; [INSERT: Count=780964 Max=449576.96 Min=11.14 Avg=222.99 90=1119.23 99=1266.69 99.9=1566.72 99.99=13066.24] +2025-01-05 16:37:34 203 sec: 789352 operations; [INSERT: Count=789352 Max=449576.96 Min=11.14 Avg=232.93 90=1121.28 99=1269.76 99.9=1586.17 99.99=13058.05] +2025-01-05 16:37:44 214 sec: 824697 operations; [INSERT: Count=824697 Max=449576.96 Min=11.14 Avg=234.78 90=1122.30 99=1269.76 99.9=1583.10 99.99=13197.31] +2025-01-05 16:37:54 224 sec: 860492 operations; [INSERT: Count=860492 Max=449576.96 Min=11.14 Avg=235.59 90=1121.28 99=1269.76 99.9=1582.08 99.99=13066.24] +2025-01-05 16:38:04 234 sec: 894914 operations; [INSERT: Count=894914 Max=449576.96 Min=11.14 Avg=236.72 90=1122.30 99=1269.76 99.9=1582.08 99.99=13058.05] +2025-01-05 16:38:15 245 sec: 927388 operations; [INSERT: Count=927388 Max=449576.96 Min=11.14 Avg=238.82 90=1122.30 99=1269.76 99.9=1583.10 99.99=13058.05] +2025-01-05 16:38:25 255 sec: 961250 operations; [INSERT: Count=961250 Max=449576.96 Min=11.14 Avg=239.92 90=1122.30 99=1269.76 99.9=1583.10 99.99=13000.70] +2025-01-05 16:38:35 265 sec: 970086 operations; [INSERT: Count=970086 Max=449576.96 Min=11.14 Avg=247.73 90=1124.35 99=1271.81 99.9=1596.41 99.99=13017.09] +2025-01-05 16:38:40 269 sec: 1000000 operations; [INSERT: Count=1000000 Max=449576.96 Min=11.14 Avg=244.24 90=1123.33 99=1270.78 99.9=1589.25 99.99=12967.93] +Load runtime(sec): 269.687 +Load operations(ops): 1000000 +Load throughput(ops/sec): 3708 +2025-01-05 16:38:40 0 sec: 0 operations; +2025-01-05 16:38:50 10 sec: 130475 operations; [INSERT: Count=6511 Max=261750.78 Min=1081.34 Avg=1213.33 90=1240.06 99=1400.83 99.9=8282.11 99.99=13459.45] [READ: Count=123964 Max=439615.49 Min=1.23 Avg=19.96 90=36.09 99=92.86 99.9=160.38 99.99=271.62] +2025-01-05 16:39:00 20 sec: 689248 operations; [INSERT: Count=34470 Max=261750.78 Min=11.70 Avg=331.39 90=1145.86 99=1305.60 99.9=2539.52 99.99=14663.68] [READ: Count=654778 Max=439615.49 Min=1.19 Avg=12.40 90=23.33 99=61.95 99.9=138.37 99.99=684.03] +2025-01-05 16:39:10 30 sec: 903365 operations; [INSERT: Count=45382 Max=261750.78 Min=11.70 Avg=405.09 90=1160.19 99=1312.77 99.9=2748.41 99.99=14614.53] [READ: Count=857983 Max=439615.49 Min=1.19 Avg=12.57 90=23.68 99=62.49 99.9=164.48 99.99=848.38] +2025-01-05 16:39:12 32 sec: 1000000 operations; [INSERT: Count=50259 Max=261750.78 Min=11.70 Avg=369.41 90=1152.00 99=1302.53 99.9=2490.37 99.99=14614.53] [READ: Count=949741 Max=439615.49 Min=1.19 Avg=12.52 90=23.18 99=61.18 99.9=216.45 99.99=913.41] +Run runtime(sec): 32.4106 +Run operations(ops): 1000000 +Run throughput(ops/sec): 30854.1 +All steps completed successfully! +``` + +workloade-recordcount=100000-operationcount=10000--20*1000 + +``` + LD ycsb +2025-01-05 16:40:46 0 sec: 0 operations; +2025-01-05 16:40:54 7 sec: 99999 operations; [INSERT: Count=99999 Max=446431.23 Min=12.53 Avg=59.93 90=44.16 99=1135.62 99.9=1263.62 99.99=6901.76] +Load runtime(sec): 7.89257 +Load operations(ops): 100000 +Load throughput(ops/sec): 12670.2 +2025-01-05 16:40:54 0 sec: 0 operations; +2025-01-05 16:41:04 10 sec: 3761 operations; [INSERT: Count=190 Max=1444.86 Min=15.39 Avg=408.79 90=1183.74 99=1317.89 99.9=1444.86 99.99=1444.86] [SCAN: Count=3571 Max=26050.56 Min=11.06 Avg=2499.82 90=4599.81 99=7327.74 99.9=14221.31 99.99=26050.56] +2025-01-05 16:41:14 20 sec: 8017 operations; [INSERT: Count=393 Max=1444.86 Min=15.39 Avg=242.06 90=1141.76 99=1291.26 99.9=1444.86 99.99=1444.86] [SCAN: Count=7624 Max=26050.56 Min=11.06 Avg=2364.89 90=4304.90 99=6103.04 99.9=11247.61 99.99=17350.65] +2025-01-05 16:41:18 24 sec: 10000 operations; [INSERT: Count=486 Max=1444.86 Min=15.39 Avg=214.03 90=1116.16 99=1238.02 99.9=1444.86 99.99=1444.86] [SCAN: Count=9514 Max=26050.56 Min=11.06 Avg=2343.41 90=4272.13 99=5824.51 99.9=11067.39 99.99=17350.65] +Run runtime(sec): 24.7688 +Run operations(ops): 10000 +Run throughput(ops/sec): 403.734 +All steps completed successfully! +``` + +workloadf-1000000-20*1000 + +``` + LD ycsb +2025-01-05 16:41:55 0 sec: 0 operations; +2025-01-05 16:42:05 10 sec: 102224 operations; [INSERT: Count=102224 Max=27901.95 Min=12.74 Avg=74.54 90=55.33 99=1187.84 99.9=1379.33 99.99=9502.72] +2025-01-05 16:42:15 20 sec: 161040 operations; [INSERT: Count=161040 Max=38141.95 Min=12.69 Avg=100.71 90=65.25 99=1211.39 99.9=1429.50 99.99=9502.72] +2025-01-05 16:42:25 30 sec: 193791 operations; [INSERT: Count=193791 Max=439091.20 Min=12.18 Avg=133.94 90=93.31 99=1229.82 99.9=1455.10 99.99=10731.52] +2025-01-05 16:42:35 40 sec: 231997 operations; [INSERT: Count=231997 Max=439091.20 Min=12.18 Avg=150.88 90=1086.46 99=1239.04 99.9=1483.78 99.99=11157.50] +2025-01-05 16:42:45 50 sec: 284611 operations; [INSERT: Count=284611 Max=439091.20 Min=12.18 Avg=153.71 90=1088.51 99=1238.02 99.9=1476.61 99.99=11108.35] +2025-01-05 16:42:56 61 sec: 321802 operations; [INSERT: Count=321802 Max=439091.20 Min=12.18 Avg=165.91 90=1094.65 99=1241.09 99.9=1477.63 99.99=11919.36] +2025-01-05 16:43:06 71 sec: 380381 operations; [INSERT: Count=380381 Max=439091.20 Min=12.18 Avg=162.95 90=1091.58 99=1238.02 99.9=1476.61 99.99=11157.50] +2025-01-05 16:43:16 81 sec: 415393 operations; [INSERT: Count=415393 Max=439091.20 Min=12.18 Avg=171.23 90=1096.70 99=1241.09 99.9=1488.89 99.99=11714.56] +2025-01-05 16:43:26 91 sec: 447342 operations; [INSERT: Count=447342 Max=439091.20 Min=12.18 Avg=180.91 90=1100.80 99=1245.18 99.9=1498.11 99.99=11919.36] +2025-01-05 16:43:36 101 sec: 483007 operations; [INSERT: Count=483007 Max=439091.20 Min=11.59 Avg=186.44 90=1102.85 99=1246.21 99.9=1498.11 99.99=11747.33] +2025-01-05 16:43:46 111 sec: 515498 operations; [INSERT: Count=515498 Max=439091.20 Min=11.59 Avg=192.48 90=1105.92 99=1248.26 99.9=1503.23 99.99=11919.36] +2025-01-05 16:43:57 122 sec: 550230 operations; [INSERT: Count=550230 Max=439091.20 Min=11.59 Avg=197.94 90=1107.97 99=1250.30 99.9=1515.52 99.99=12206.08] +2025-01-05 16:44:07 132 sec: 572189 operations; [INSERT: Count=572189 Max=439091.20 Min=11.59 Avg=206.80 90=1110.02 99=1254.40 99.9=1524.73 99.99=12255.23] +2025-01-05 16:44:17 142 sec: 590995 operations; [INSERT: Count=590995 Max=439091.20 Min=11.59 Avg=216.25 90=1113.09 99=1256.45 99.9=1533.95 99.99=12230.66] +2025-01-05 16:44:27 152 sec: 626022 operations; [INSERT: Count=626022 Max=439091.20 Min=11.59 Avg=219.64 90=1113.09 99=1257.47 99.9=1543.17 99.99=12648.45] +2025-01-05 16:44:37 162 sec: 659549 operations; [INSERT: Count=659549 Max=439091.20 Min=11.59 Avg=222.40 90=1114.11 99=1258.49 99.9=1541.12 99.99=12697.60] +2025-01-05 16:44:47 172 sec: 677703 operations; [INSERT: Count=677703 Max=439091.20 Min=11.59 Avg=230.48 90=1115.13 99=1260.54 99.9=1546.24 99.99=12697.60] +2025-01-05 16:44:58 183 sec: 702978 operations; [INSERT: Count=702978 Max=439091.20 Min=11.59 Avg=236.26 90=1116.16 99=1260.54 99.9=1543.17 99.99=12730.37] +2025-01-05 16:45:08 193 sec: 709070 operations; [INSERT: Count=709070 Max=439091.20 Min=11.59 Avg=244.10 90=1117.18 99=1262.59 99.9=1551.36 99.99=12697.60] +2025-01-05 16:45:18 203 sec: 738300 operations; [INSERT: Count=738300 Max=7092568.06 Min=11.59 Avg=250.91 90=1116.16 99=1261.57 99.9=1541.12 99.99=13385.73] +2025-01-05 16:45:29 214 sec: 746759 operations; [INSERT: Count=746759 Max=7092568.06 Min=11.59 Avg=261.94 90=1118.21 99=1264.64 99.9=1553.41 99.99=13557.76] +2025-01-05 16:45:39 224 sec: 748646 operations; [INSERT: Count=748646 Max=7092568.06 Min=11.59 Avg=264.18 90=1119.23 99=1265.66 99.9=1556.48 99.99=13557.76] +2025-01-05 16:45:49 234 sec: 776980 operations; [INSERT: Count=776980 Max=13220446.21 Min=11.59 Avg=276.59 90=1118.21 99=1263.62 99.9=1547.26 99.99=13983.74] +2025-01-05 16:45:59 244 sec: 785516 operations; [INSERT: Count=785516 Max=13220446.21 Min=11.59 Avg=286.25 90=1119.23 99=1265.66 99.9=1552.38 99.99=13983.74] +2025-01-05 16:46:09 254 sec: 788222 operations; [INSERT: Count=788222 Max=13220446.21 Min=11.59 Avg=289.19 90=1120.26 99=1266.69 99.9=1552.38 99.99=13983.74] +2025-01-05 16:46:19 264 sec: 788222 operations; [INSERT: Count=788222 Max=13220446.21 Min=11.59 Avg=289.19 90=1120.26 99=1266.69 99.9=1552.38 99.99=13983.74] +2025-01-05 16:46:30 275 sec: 820602 operations; [INSERT: Count=820602 Max=17448304.64 Min=11.59 Avg=310.24 90=1119.23 99=1266.69 99.9=1552.38 99.99=14999.55] +2025-01-05 16:46:40 285 sec: 827798 operations; [INSERT: Count=827798 Max=17448304.64 Min=11.59 Avg=317.50 90=1121.28 99=1268.73 99.9=1559.55 99.99=14999.55] +2025-01-05 16:46:50 295 sec: 827798 operations; [INSERT: Count=827798 Max=17448304.64 Min=11.59 Avg=317.50 90=1121.28 99=1268.73 99.9=1559.55 99.99=14999.55] +2025-01-05 16:47:00 305 sec: 859747 operations; [INSERT: Count=859747 Max=17448304.64 Min=11.59 Avg=330.55 90=1120.26 99=1267.71 99.9=1553.41 99.99=16162.82] +2025-01-05 16:47:10 315 sec: 867374 operations; [INSERT: Count=867374 Max=17448304.64 Min=11.59 Avg=337.70 90=1121.28 99=1269.76 99.9=1554.43 99.99=15966.21] +2025-01-05 16:47:20 325 sec: 867374 operations; [INSERT: Count=867374 Max=17448304.64 Min=11.59 Avg=337.70 90=1121.28 99=1269.76 99.9=1554.43 99.99=15966.21] +2025-01-05 16:47:31 336 sec: 883864 operations; [INSERT: Count=883864 Max=20652752.89 Min=11.59 Avg=355.46 90=1120.26 99=1268.73 99.9=1549.31 99.99=16302.08] +2025-01-05 16:47:41 346 sec: 901480 operations; [INSERT: Count=901480 Max=20652752.89 Min=11.59 Avg=359.14 90=1121.28 99=1268.73 99.9=1552.38 99.99=16859.13] +2025-01-05 16:47:51 356 sec: 906950 operations; [INSERT: Count=906950 Max=20652752.89 Min=11.59 Avg=363.89 90=1122.30 99=1270.78 99.9=1557.50 99.99=16752.64] +2025-01-05 16:48:02 367 sec: 906950 operations; [INSERT: Count=906950 Max=20652752.89 Min=11.59 Avg=363.89 90=1122.30 99=1270.78 99.9=1557.50 99.99=16752.64] +2025-01-05 16:48:12 377 sec: 938957 operations; [INSERT: Count=938957 Max=20652752.89 Min=11.59 Avg=376.37 90=1122.30 99=1270.78 99.9=1550.34 99.99=16859.13] +2025-01-05 16:48:22 387 sec: 946526 operations; [INSERT: Count=946526 Max=20652752.89 Min=11.59 Avg=382.52 90=1123.33 99=1271.81 99.9=1552.38 99.99=16752.64] +2025-01-05 16:48:32 397 sec: 946526 operations; [INSERT: Count=946526 Max=20652752.89 Min=11.59 Avg=382.52 90=1123.33 99=1271.81 99.9=1552.38 99.99=16752.64] +2025-01-05 16:48:42 407 sec: 950285 operations; [INSERT: Count=950285 Max=21374173.18 Min=11.59 Avg=403.75 90=1123.33 99=1271.81 99.9=1552.38 99.99=17039.36] +2025-01-05 16:48:52 417 sec: 979674 operations; [INSERT: Count=979674 Max=21374173.18 Min=11.59 Avg=401.09 90=1123.33 99=1271.81 99.9=1552.38 99.99=18202.62] +2025-01-05 16:49:03 428 sec: 986102 operations; [INSERT: Count=986102 Max=21374173.18 Min=11.59 Avg=406.56 90=1124.35 99=1272.83 99.9=1554.43 99.99=18792.45] +2025-01-05 16:49:13 438 sec: 986102 operations; [INSERT: Count=986102 Max=21374173.18 Min=11.59 Avg=406.56 90=1124.35 99=1272.83 99.9=1554.43 99.99=18792.45] +2025-01-05 16:49:16 441 sec: 1000000 operations; [INSERT: Count=1000000 Max=21374173.18 Min=11.59 Avg=415.65 90=1123.33 99=1272.83 99.9=1551.36 99.99=18825.22] +Load runtime(sec): 441.168 +Load operations(ops): 1000000 +Load throughput(ops/sec): 2266.71 +2025-01-05 16:49:16 0 sec: 0 operations; +2025-01-05 16:49:26 10 sec: 50686 operations; [READ: Count=33796 Max=477.44 Min=1.68 Avg=30.50 90=58.53 99=130.30 99.9=236.67 99.99=368.64] [UPDATE: Count=16890 Max=12427.26 Min=15.27 Avg=500.79 90=1171.45 99=1301.50 99.9=1567.74 99.99=11362.30] +2025-01-05 16:49:36 20 sec: 69363 operations; [READ: Count=46277 Max=477.44 Min=1.68 Avg=33.11 90=64.58 99=138.37 99.9=232.45 99.99=313.60] [UPDATE: Count=23086 Max=427294.72 Min=15.27 Avg=701.93 90=1196.03 99=1324.03 99.9=1646.59 99.99=12427.26] +2025-01-05 16:49:46 30 sec: 69363 operations; [READ: Count=46277 Max=477.44 Min=1.68 Avg=33.11 90=64.58 99=138.37 99.9=232.45 99.99=313.60] [UPDATE: Count=23086 Max=427294.72 Min=15.27 Avg=701.93 90=1196.03 99=1324.03 99.9=1646.59 99.99=12427.26] +2025-01-05 16:49:56 40 sec: 128651 operations; [READ: Count=85787 Max=532.48 Min=1.68 Avg=26.33 90=49.98 99=122.56 99.9=207.87 99.99=305.92] [UPDATE: Count=42864 Max=20451426.30 Min=13.53 Avg=880.94 90=1141.76 99=1287.17 99.9=1523.71 99.99=131465.21] +2025-01-05 16:50:07 51 sec: 165468 operations; [READ: Count=110307 Max=416808.96 Min=1.68 Avg=32.23 90=53.70 99=138.75 99.9=288.51 99.99=528.89] [UPDATE: Count=55161 Max=20451426.30 Min=13.53 Avg=851.75 90=1173.50 99=1315.84 99.9=1639.42 99.99=107413.50] +2025-01-05 16:50:17 61 sec: 188007 operations; [READ: Count=125345 Max=416808.96 Min=1.68 Avg=33.76 90=57.38 99=154.11 99.9=328.70 99.99=827.90] [UPDATE: Count=62662 Max=20451426.30 Min=13.53 Avg=892.18 90=1205.25 99=1388.54 99.9=1708.03 99.99=107413.50] +2025-01-05 16:50:27 71 sec: 188007 operations; [READ: Count=125345 Max=416808.96 Min=1.68 Avg=33.76 90=57.38 99=154.11 99.9=328.70 99.99=827.90] [UPDATE: Count=62662 Max=20451426.30 Min=13.53 Avg=892.18 90=1205.25 99=1388.54 99.9=1708.03 99.99=107413.50] +2025-01-05 16:50:38 81 sec: 278529 operations; [READ: Count=185562 Max=425984.00 Min=1.68 Avg=39.25 90=53.34 99=166.27 99.9=2449.41 99.99=4435.97] [UPDATE: Count=92967 Max=20451426.30 Min=13.53 Avg=792.96 90=1180.67 99=1349.63 99.9=1615.87 99.99=12427.26] +2025-01-05 16:50:48 91 sec: 301430 operations; [READ: Count=200806 Max=425984.00 Min=1.68 Avg=41.88 90=55.87 99=177.79 99.9=2768.89 99.99=4571.14] [UPDATE: Count=100624 Max=20451426.30 Min=13.53 Avg=820.15 90=1188.86 99=1350.65 99.9=1617.92 99.99=12427.26] +2025-01-05 16:50:58 101 sec: 306301 operations; [READ: Count=204063 Max=425984.00 Min=1.68 Avg=42.61 90=56.41 99=180.86 99.9=2914.30 99.99=4628.48] [UPDATE: Count=102238 Max=20451426.30 Min=13.53 Avg=825.23 90=1189.89 99=1350.65 99.9=1622.02 99.99=12427.26] +2025-01-05 16:51:08 112 sec: 381267 operations; [READ: Count=254134 Max=425984.00 Min=1.48 Avg=44.94 90=52.96 99=216.70 99.9=3215.36 99.99=5038.08] [UPDATE: Count=127133 Max=20451426.30 Min=13.53 Avg=786.77 90=1169.41 99=1329.15 99.9=1583.10 99.99=11886.59] +2025-01-05 16:51:18 122 sec: 404759 operations; [READ: Count=269795 Max=425984.00 Min=1.48 Avg=47.67 90=54.40 99=245.50 99.9=3416.06 99.99=5459.97] [UPDATE: Count=134964 Max=20451426.30 Min=13.53 Avg=804.09 90=1175.55 99=1331.20 99.9=1594.37 99.99=11886.59] +2025-01-05 16:51:28 132 sec: 425225 operations; [READ: Count=283411 Max=425984.00 Min=1.48 Avg=50.03 90=55.94 99=305.66 99.9=3553.28 99.99=5783.55] [UPDATE: Count=141814 Max=20451426.30 Min=13.53 Avg=820.55 90=1179.65 99=1332.22 99.9=1601.54 99.99=11657.22] +2025-01-05 16:51:38 142 sec: 483667 operations; [READ: Count=322447 Max=425984.00 Min=1.48 Avg=52.79 90=53.98 99=455.94 99.9=3700.74 99.99=6180.86] [UPDATE: Count=161220 Max=20451426.30 Min=13.53 Avg=771.94 90=1168.38 99=1319.93 99.9=1579.01 99.99=11558.91] +2025-01-05 16:51:48 152 sec: 518061 operations; [READ: Count=345294 Max=425984.00 Min=1.48 Avg=55.81 90=54.75 99=599.04 99.9=3774.46 99.99=6209.53] [UPDATE: Count=172767 Max=20451426.30 Min=13.53 Avg=764.82 90=1170.43 99=1319.93 99.9=1588.22 99.99=11558.91] +2025-01-05 16:51:58 162 sec: 539077 operations; [READ: Count=359305 Max=425984.00 Min=1.48 Avg=58.77 90=56.38 99=797.70 99.9=3903.49 99.99=6578.18] [UPDATE: Count=179772 Max=20451426.30 Min=13.53 Avg=780.04 90=1176.58 99=1321.98 99.9=1593.34 99.99=11886.59] +2025-01-05 16:52:09 173 sec: 567475 operations; [READ: Count=378216 Max=425984.00 Min=1.48 Avg=61.04 90=56.32 99=1164.29 99.9=3991.55 99.99=6922.24] [UPDATE: Count=189259 Max=20451426.30 Min=13.05 Avg=785.89 90=1173.50 99=1319.93 99.9=1586.17 99.99=12419.07] +2025-01-05 16:52:20 183 sec: 630077 operations; [READ: Count=420027 Max=425984.00 Min=1.48 Avg=65.05 90=55.97 99=1682.43 99.9=4173.82 99.99=7344.13] [UPDATE: Count=210050 Max=20451426.30 Min=13.05 Avg=737.84 90=1168.38 99=1314.82 99.9=1575.93 99.99=12419.07] +2025-01-05 16:52:30 193 sec: 651113 operations; [READ: Count=434077 Max=425984.00 Min=1.48 Avg=67.34 90=57.02 99=1821.69 99.9=4276.22 99.99=7569.41] [UPDATE: Count=217036 Max=20451426.30 Min=13.05 Avg=751.10 90=1172.48 99=1315.84 99.9=1579.01 99.99=12419.07] +2025-01-05 16:52:40 204 sec: 683461 operations; [READ: Count=455645 Max=425984.00 Min=1.48 Avg=69.08 90=57.28 99=1918.97 99.9=4321.28 99.99=7598.08] [UPDATE: Count=227816 Max=20451426.30 Min=13.05 Avg=751.16 90=1171.45 99=1315.84 99.9=1577.98 99.99=12427.26] +2025-01-05 16:52:50 214 sec: 748094 operations; [READ: Count=498852 Max=425984.00 Min=1.40 Avg=72.81 90=57.15 99=2083.84 99.9=4407.30 99.99=7716.86] [UPDATE: Count=249242 Max=20451426.30 Min=13.05 Avg=706.88 90=1167.36 99=1309.69 99.9=1571.84 99.99=12419.07] +2025-01-05 16:53:00 224 sec: 768739 operations; [READ: Count=512676 Max=425984.00 Min=1.40 Avg=74.84 90=58.27 99=2148.35 99.9=4444.16 99.99=7761.92] [UPDATE: Count=256063 Max=20451426.30 Min=13.05 Avg=718.84 90=1171.45 99=1314.82 99.9=1577.98 99.99=12427.26] +2025-01-05 16:53:11 234 sec: 829288 operations; [READ: Count=552973 Max=425984.00 Min=1.40 Avg=79.07 90=58.37 99=2271.23 99.9=4534.27 99.99=7835.65] [UPDATE: Count=276315 Max=20451426.30 Min=13.05 Avg=684.77 90=1167.36 99=1309.69 99.9=1570.82 99.99=12427.26] +2025-01-05 16:53:21 244 sec: 870815 operations; [READ: Count=580658 Max=425984.00 Min=1.40 Avg=81.97 90=58.69 99=2351.10 99.9=4640.77 99.99=8060.93] [UPDATE: Count=290157 Max=20451426.30 Min=13.05 Avg=672.94 90=1167.36 99=1309.69 99.9=1570.82 99.99=13164.54] +2025-01-05 16:53:31 254 sec: 890992 operations; [READ: Count=594140 Max=425984.00 Min=1.40 Avg=83.89 90=59.49 99=2400.26 99.9=4698.11 99.99=8179.71] [UPDATE: Count=296852 Max=20451426.30 Min=13.05 Avg=683.70 90=1169.41 99=1312.77 99.9=1577.98 99.99=13164.54] +2025-01-05 16:53:41 265 sec: 930151 operations; [READ: Count=620292 Max=425984.00 Min=1.40 Avg=85.55 90=59.68 99=2449.41 99.9=4718.59 99.99=8212.48] [UPDATE: Count=309859 Max=20451426.30 Min=13.05 Avg=678.72 90=1168.38 99=1310.72 99.9=1575.93 99.99=13656.06] +2025-01-05 16:53:51 275 sec: 984167 operations; [READ: Count=656362 Max=425984.00 Min=1.40 Avg=88.62 90=59.84 99=2523.14 99.9=4829.18 99.99=8404.99] [UPDATE: Count=327805 Max=20451426.30 Min=13.05 Avg=656.22 90=1166.34 99=1310.72 99.9=1576.96 99.99=13656.06] +2025-01-05 16:54:01 285 sec: 1003410 operations; [READ: Count=669145 Max=425984.00 Min=1.40 Avg=90.65 90=60.70 99=2566.14 99.9=4829.18 99.99=8413.18] [UPDATE: Count=334265 Max=20451426.30 Min=13.05 Avg=665.84 90=1168.38 99=1314.82 99.9=1584.13 99.99=13656.06] +2025-01-05 16:54:12 296 sec: 1042131 operations; [READ: Count=694976 Max=425984.00 Min=1.40 Avg=92.95 90=61.28 99=2613.25 99.9=4878.34 99.99=8413.18] [UPDATE: Count=347155 Max=20451426.30 Min=13.05 Avg=660.05 90=1168.38 99=1314.82 99.9=1584.13 99.99=14041.09] +2025-01-05 16:54:22 306 sec: 1101345 operations; [READ: Count=734373 Max=425984.00 Min=1.40 Avg=95.42 90=61.34 99=2652.16 99.9=4960.26 99.99=8445.95] [UPDATE: Count=366972 Max=20451426.30 Min=13.05 Avg=636.47 90=1165.31 99=1311.74 99.9=1579.01 99.99=13893.63] +2025-01-05 16:54:32 316 sec: 1120558 operations; [READ: Count=747197 Max=425984.00 Min=1.40 Avg=97.24 90=62.14 99=2680.83 99.9=5033.98 99.99=8617.98] [UPDATE: Count=373361 Max=20451426.30 Min=13.05 Avg=645.30 90=1168.38 99=1313.79 99.9=1584.13 99.99=14991.36] +2025-01-05 16:54:42 326 sec: 1158975 operations; [READ: Count=772728 Max=425984.00 Min=1.40 Avg=99.21 90=62.66 99=2711.55 99.9=5042.18 99.99=8626.17] [UPDATE: Count=386247 Max=20451426.30 Min=13.05 Avg=640.70 90=1167.36 99=1312.77 99.9=1584.13 99.99=15302.66] +2025-01-05 16:54:52 336 sec: 1219610 operations; [READ: Count=813227 Max=425984.00 Min=1.39 Avg=101.38 90=62.72 99=2742.27 99.9=5083.14 99.99=8585.22] [UPDATE: Count=406383 Max=20451426.30 Min=13.05 Avg=619.10 90=1165.31 99=1309.69 99.9=1582.08 99.99=14524.42] +2025-01-05 16:55:02 346 sec: 1238972 operations; [READ: Count=826156 Max=425984.00 Min=1.39 Avg=102.80 90=63.55 99=2760.70 99.9=5148.67 99.99=8626.17] [UPDATE: Count=412816 Max=20451426.30 Min=13.05 Avg=627.50 90=1167.36 99=1312.77 99.9=1587.20 99.99=14991.36] +2025-01-05 16:55:13 357 sec: 1270961 operations; [READ: Count=847570 Max=425984.00 Min=1.39 Avg=104.38 90=64.25 99=2770.94 99.9=5165.06 99.99=8945.66] [UPDATE: Count=423391 Max=20451426.30 Min=13.05 Avg=628.31 90=1168.38 99=1314.82 99.9=1590.27 99.99=15302.66] +2025-01-05 16:55:23 367 sec: 1336590 operations; [READ: Count=891387 Max=425984.00 Min=1.39 Avg=106.37 90=64.38 99=2781.18 99.9=5136.38 99.99=9076.74] [UPDATE: Count=445203 Max=20451426.30 Min=12.53 Avg=605.49 90=1165.31 99=1310.72 99.9=1584.13 99.99=14524.42] +2025-01-05 16:55:33 377 sec: 1356137 operations; [READ: Count=904417 Max=425984.00 Min=1.39 Avg=107.53 90=65.25 99=2791.42 99.9=5132.29 99.99=9076.74] [UPDATE: Count=451720 Max=20451426.30 Min=12.53 Avg=613.37 90=1167.36 99=1311.74 99.9=1584.13 99.99=15302.66] +2025-01-05 16:55:44 387 sec: 1375599 operations; [READ: Count=917433 Max=425984.00 Min=1.39 Avg=108.75 90=66.11 99=2805.76 99.9=5160.96 99.99=9076.74] [UPDATE: Count=458166 Max=20451426.30 Min=12.53 Avg=622.31 90=1169.41 99=1312.77 99.9=1586.17 99.99=15663.10] +2025-01-05 16:55:54 397 sec: 1450516 operations; [READ: Count=967339 Max=425984.00 Min=1.39 Avg=111.21 90=66.43 99=2830.34 99.9=5210.11 99.99=9043.97] [UPDATE: Count=483177 Max=20451426.30 Min=12.53 Avg=594.42 90=1165.31 99=1308.67 99.9=1577.98 99.99=15507.45] +2025-01-05 16:56:04 407 sec: 1468268 operations; [READ: Count=979168 Max=425984.00 Min=1.39 Avg=112.99 90=67.26 99=2850.82 99.9=5242.88 99.99=9076.74] [UPDATE: Count=489100 Max=20451426.30 Min=12.53 Avg=601.30 90=1167.36 99=1310.72 99.9=1584.13 99.99=15548.42] +2025-01-05 16:56:14 418 sec: 1487251 operations; [READ: Count=991901 Max=425984.00 Min=1.39 Avg=114.74 90=68.16 99=2865.15 99.9=5275.65 99.99=9109.50] [UPDATE: Count=495350 Max=20451426.30 Min=12.53 Avg=608.63 90=1168.38 99=1311.74 99.9=1584.13 99.99=15663.10] +2025-01-05 16:56:18 422 sec: 1499359 operations; [READ: Count=1000000 Max=425984.00 Min=1.39 Avg=115.39 90=68.42 99=2873.34 99.9=5287.94 99.99=9109.50] [UPDATE: Count=499359 Max=20451426.30 Min=12.53 Avg=607.08 90=1168.38 99=1311.74 99.9=1584.13 99.99=15745.02] +Run runtime(sec): 422.052 +Run operations(ops): 1000000 +Run throughput(ops/sec): 2369.37 +All steps completed successfully! +``` + + + +# YCSB-Leveldb:V3 + +## 10fields*500field-len + +workloada-1000000-10*500 + +``` + LD ycsb +2025-01-04 18:43:32 0 sec: 0 operations; +2025-01-04 18:43:42 10 sec: 590593 operations; [INSERT: Count=590593 Max=6512.64 Min=5.33 Avg=10.98 90=14.71 99=55.58 99.9=88.00 99.99=333.82] +2025-01-04 18:43:50 18 sec: 1000000 operations; [INSERT: Count=1000000 Max=6512.64 Min=5.33 Avg=12.16 90=17.70 99=57.34 99.9=92.67 99.99=316.16] +Load runtime(sec): 18.115 +Load operations(ops): 1000000 +Load throughput(ops/sec): 55202.8 +2025-01-04 18:43:50 0 sec: 0 operations; +2025-01-04 18:44:00 9 sec: 493604 operations; [READ: Count=246810 Max=999.93 Min=2.70 Avg=6.92 90=9.02 99=19.09 99.9=47.94 99.99=306.18] [UPDATE: Count=246794 Max=25296.90 Min=9.01 Avg=16.96 90=21.65 99=60.41 99.9=102.59 99.99=590.34] +2025-01-04 18:44:07 17 sec: 999999 operations; [READ: Count=500268 Max=999.93 Min=2.70 Avg=7.42 90=10.09 99=21.34 99.9=52.13 99.99=331.01] [UPDATE: Count=499731 Max=25296.90 Min=9.00 Avg=18.53 90=27.18 99=69.69 99.9=111.17 99.99=534.53] +Run runtime(sec): 17.3849 +Run operations(ops): 1000000 +Run throughput(ops/sec): 57521.2 +All steps completed successfully! +``` + + + +workloadb-1000000-10*500 + +``` + LD ycsb +2025-01-04 18:45:54 0 sec: 0 operations; +2025-01-04 18:46:04 9 sec: 590276 operations; [INSERT: Count=590276 Max=13189.12 Min=5.33 Avg=11.21 90=15.29 99=55.81 99.9=78.97 99.99=322.30] +2025-01-04 18:46:12 17 sec: 1000000 operations; [INSERT: Count=1000000 Max=13189.12 Min=5.33 Avg=12.17 90=17.41 99=57.41 99.9=83.84 99.99=284.42] +Load runtime(sec): 17.9167 +Load operations(ops): 1000000 +Load throughput(ops/sec): 55813.8 +2025-01-04 18:46:12 0 sec: 0 operations; +2025-01-04 18:46:22 10 sec: 804419 operations; [READ: Count=764183 Max=926.21 Min=2.69 Avg=6.23 90=7.86 99=16.10 99.9=30.53 99.99=357.38] [UPDATE: Count=40236 Max=13180.93 Min=9.38 Avg=39.70 90=49.38 99=84.99 99.9=370.18 99.99=10567.68] +2025-01-04 18:46:23 11 sec: 1000000 operations; [READ: Count=949947 Max=926.21 Min=2.69 Avg=6.28 90=7.99 99=16.19 99.9=30.56 99.99=360.96] [UPDATE: Count=50053 Max=13352.96 Min=9.38 Avg=40.81 90=49.34 99=85.50 99.9=404.48 99.99=11501.57] +Run runtime(sec): 11.7185 +Run operations(ops): 1000000 +Run throughput(ops/sec): 85335.4 +All steps completed successfully! +``` + + + +workloadc-1000000-10*500 + +``` + LD ycsb +2025-01-04 18:48:23 0 sec: 0 operations; +2025-01-04 18:48:33 9 sec: 597329 operations; [INSERT: Count=597329 Max=6266.88 Min=5.44 Avg=11.03 90=16.27 99=53.38 99.9=71.55 99.99=263.94] +2025-01-04 18:48:41 17 sec: 999999 operations; [INSERT: Count=999999 Max=14565.38 Min=5.44 Avg=11.96 90=17.73 99=54.21 99.9=80.64 99.99=255.62] +Load runtime(sec): 17.7072 +Load operations(ops): 1000000 +Load throughput(ops/sec): 56474 +2025-01-04 18:48:41 0 sec: 0 operations; +2025-01-04 18:48:51 10 sec: 820264 operations; [READ: Count=820264 Max=1132.54 Min=3.41 Avg=7.91 90=12.02 99=43.87 99.9=70.66 99.99=378.88] +2025-01-04 18:48:52 11 sec: 1000000 operations; [READ: Count=1000000 Max=1132.54 Min=3.41 Avg=7.75 90=11.65 99=43.65 99.9=68.93 99.99=376.83] +Run runtime(sec): 11.3179 +Run operations(ops): 1000000 +Run throughput(ops/sec): 88355.8 +All steps completed successfully! +``` + + + +workloadd-1000000-10*500 + +``` + LD ycsb +2025-01-04 18:51:10 0 sec: 0 operations; +2025-01-04 18:51:20 10 sec: 634524 operations; [INSERT: Count=634524 Max=4374.53 Min=5.41 Avg=10.15 90=13.69 99=51.17 99.9=66.88 99.99=236.16] +2025-01-04 18:51:26 16 sec: 1000000 operations; [INSERT: Count=1000000 Max=23871.49 Min=5.41 Avg=11.26 90=16.43 99=53.60 99.9=70.33 99.99=238.46] +Load runtime(sec): 16.8912 +Load operations(ops): 1000000 +Load throughput(ops/sec): 59202.3 +2025-01-04 18:51:26 0 sec: 0 operations; +2025-01-04 18:51:36 9 sec: 937394 operations; [INSERT: Count=46788 Max=11616.25 Min=5.84 Avg=31.66 90=41.47 99=75.07 99.9=322.56 99.99=10829.82] [READ: Count=890606 Max=17203.20 Min=2.26 Avg=5.35 90=7.63 99=15.26 99.9=28.22 99.99=355.58] +2025-01-04 18:51:37 10 sec: 1000000 operations; [INSERT: Count=50016 Max=11616.25 Min=5.84 Avg=31.64 90=41.73 99=75.39 99.9=322.56 99.99=10829.82] [READ: Count=949984 Max=17203.20 Min=2.26 Avg=5.36 90=7.69 99=15.29 99.9=28.30 99.99=361.98] +Run runtime(sec): 10.4692 +Run operations(ops): 1000000 +Run throughput(ops/sec): 95518 +All steps completed successfully! +``` + + + +workloade-recordcount=100000-operationcount=10000-10*500 + +``` + LD ycsb +2025-01-04 19:04:28 0 sec: 0 operations; +2025-01-04 19:04:30 1 sec: 100000 operations; [INSERT: Count=100000 Max=578.05 Min=5.40 Avg=7.60 90=8.70 99=25.23 99.9=54.11 99.99=236.29] +Load runtime(sec): 1.30505 +Load operations(ops): 100000 +Load throughput(ops/sec): 76625.5 +2025-01-04 19:04:30 0 sec: 0 operations; +2025-01-04 19:04:39 9 sec: 2405 operations; [INSERT: Count=138 Max=134.91 Min=14.48 Avg=73.29 90=88.70 99=117.82 99.9=134.91 99.99=134.91] [SCAN: Count=2267 Max=9035.77 Min=107.52 Avg=4251.70 90=7323.65 99=8421.38 99.9=8855.55 99.99=9035.77] +2025-01-04 19:04:49 19 sec: 4639 operations; [INSERT: Count=246 Max=608.25 Min=8.88 Avg=77.09 90=93.06 99=117.82 99.9=608.25 99.99=608.25] [SCAN: Count=4393 Max=11075.58 Min=37.76 Avg=4449.28 90=7548.93 99=9134.08 99.9=9961.47 99.99=11075.58] +2025-01-04 19:04:59 29 sec: 6625 operations; [INSERT: Count=344 Max=608.25 Min=8.88 Avg=80.27 90=99.01 99=121.79 99.9=608.25 99.99=608.25] [SCAN: Count=6281 Max=11075.58 Min=37.76 Avg=4688.05 90=7892.99 99=9576.45 99.9=10354.69 99.99=10534.91] +2025-01-04 19:05:10 40 sec: 8781 operations; [INSERT: Count=439 Max=608.25 Min=7.84 Avg=80.83 90=99.07 99=129.34 99.9=608.25 99.99=608.25] [SCAN: Count=8342 Max=1127219.20 Min=37.76 Avg=4850.43 90=7970.81 99=9535.49 99.9=10321.92 99.99=11075.58] +2025-01-04 19:05:16 46 sec: 9998 operations; [INSERT: Count=503 Max=1876.99 Min=7.84 Avg=84.20 90=99.26 99=129.34 99.9=608.25 99.99=1876.99] [SCAN: Count=9495 Max=1127219.20 Min=37.76 Avg=4850.71 90=7991.30 99=9494.53 99.9=10313.73 99.99=11075.58] +Run runtime(sec): 46.3558 +Run operations(ops): 10000 +Run throughput(ops/sec): 215.723 +All steps completed successfully! +``` + + + +workloadf-1000000-10*500 + +``` + LD ycsb +2025-01-04 19:00:10 0 sec: 0 operations; +2025-01-04 19:00:20 10 sec: 700006 operations; [INSERT: Count=700006 Max=3137.53 Min=5.38 Avg=8.74 90=9.71 99=47.17 99.9=60.90 99.99=231.29] +2025-01-04 19:00:26 15 sec: 1000000 operations; [INSERT: Count=1000000 Max=17678.33 Min=5.38 Avg=9.94 90=11.18 99=51.58 99.9=64.86 99.99=236.80] +Load runtime(sec): 15.5099 +Load operations(ops): 1000000 +Load throughput(ops/sec): 64474.8 +2025-01-04 19:00:26 0 sec: 0 operations; +2025-01-04 19:00:36 10 sec: 756627 operations; [READ: Count=504681 Max=106627.07 Min=2.65 Avg=6.58 90=8.21 99=15.46 99.9=31.54 99.99=381.44] [UPDATE: Count=251946 Max=12558.33 Min=8.58 Avg=12.98 90=12.39 99=49.92 99.9=64.25 99.99=607.23] +2025-01-04 19:00:43 17 sec: 1499546 operations; [READ: Count=1000000 Max=106627.07 Min=2.65 Avg=7.05 90=9.30 99=17.73 99.9=32.90 99.99=381.44] [UPDATE: Count=499546 Max=12558.33 Min=8.58 Avg=13.82 90=15.13 99=52.86 99.9=74.81 99.99=490.75] +Run runtime(sec): 17.8002 +Run operations(ops): 1000000 +Run throughput(ops/sec): 56179.1 +All steps completed successfully! +``` + + + +## 10fields*100field-len + +workloada-1000000-10*100 + +``` + LD ycsb +2025-01-04 19:07:55 0 sec: 0 operations; +2025-01-04 19:08:03 8 sec: 1000000 operations; [INSERT: Count=1000000 Max=1120927.74 Min=3.13 Avg=7.24 90=7.59 99=43.30 99.9=54.72 99.99=299.26] +Load runtime(sec): 8.75521 +Load operations(ops): 1000000 +Load throughput(ops/sec): 114218 +2025-01-04 19:08:03 0 sec: 0 operations; +2025-01-04 19:08:12 8 sec: 906762 operations; [READ: Count=453258 Max=766.46 Min=1.86 Avg=5.06 90=6.69 99=13.55 99.9=30.24 99.99=376.57] [UPDATE: Count=453504 Max=5009.41 Min=5.16 Avg=10.20 90=11.49 99=48.41 99.9=62.17 99.99=507.39] +2025-01-04 19:08:13 9 sec: 1000000 operations; [READ: Count=500046 Max=766.46 Min=1.86 Avg=5.10 90=6.77 99=13.55 99.9=30.45 99.99=381.69] [UPDATE: Count=499954 Max=5038.08 Min=5.16 Avg=10.26 90=11.57 99=48.51 99.9=62.46 99.99=509.95] +Run runtime(sec): 9.66972 +Run operations(ops): 1000000 +Run throughput(ops/sec): 103416 +All steps completed successfully! +``` + + + +workloadb-1000000-10*100 + +``` + LD ycsb +2025-01-04 19:09:06 0 sec: 0 operations; +2025-01-04 19:09:14 7 sec: 1000000 operations; [INSERT: Count=1000000 Max=798.21 Min=3.10 Avg=5.56 90=6.67 99=19.09 99.9=48.83 99.99=292.10] +Load runtime(sec): 7.00701 +Load operations(ops): 1000000 +Load throughput(ops/sec): 142714 +2025-01-04 19:09:14 0 sec: 0 operations; +2025-01-04 19:09:24 10 sec: 1000000 operations; [READ: Count=949924 Max=1135607.81 Min=1.74 Avg=6.00 90=5.94 99=14.43 99.9=28.77 99.99=333.31] [UPDATE: Count=50076 Max=1792.00 Min=5.20 Avg=27.38 90=40.83 99=51.10 99.9=92.61 99.99=722.94] +Run runtime(sec): 10.1361 +Run operations(ops): 1000000 +Run throughput(ops/sec): 98656.9 +All steps completed successfully! +``` + + + +workloadc-1000000-10*100 + +``` + LD ycsb +2025-01-04 19:10:12 0 sec: 0 operations; +2025-01-04 19:10:19 6 sec: 1000000 operations; [INSERT: Count=1000000 Max=1092.61 Min=3.04 Avg=5.33 90=6.34 99=20.30 99.9=45.53 99.99=279.55] +Load runtime(sec): 6.90373 +Load operations(ops): 1000000 +Load throughput(ops/sec): 144849 +2025-01-04 19:10:19 0 sec: 0 operations; +2025-01-04 19:10:26 6 sec: 1000000 operations; [READ: Count=1000000 Max=945.66 Min=2.26 Avg=3.83 90=4.29 99=5.74 99.9=25.58 99.99=290.30] +Run runtime(sec): 6.64328 +Run operations(ops): 1000000 +Run throughput(ops/sec): 150528 +All steps completed successfully! +``` + + + +workloadd-1000000-10*100 + +``` + LD ycsb +2025-01-04 19:11:28 0 sec: 0 operations; +2025-01-04 19:11:35 6 sec: 1000000 operations; [INSERT: Count=1000000 Max=857.09 Min=3.12 Avg=5.38 90=6.36 99=19.49 99.9=46.78 99.99=275.97] +Load runtime(sec): 6.76046 +Load operations(ops): 1000000 +Load throughput(ops/sec): 147919 +2025-01-04 19:11:35 0 sec: 0 operations; +2025-01-04 19:11:43 8 sec: 1000000 operations; [INSERT: Count=49406 Max=1587.20 Min=3.26 Avg=18.87 90=34.88 99=42.91 99.9=84.86 99.99=650.24] [READ: Count=950594 Max=571473.92 Min=1.66 Avg=4.37 90=5.46 99=12.81 99.9=24.85 99.99=303.36] +Run runtime(sec): 8.18069 +Run operations(ops): 1000000 +Run throughput(ops/sec): 122239 +All steps completed successfully! +``` + + + +workloade-recordcount=100000-operationcount=10000-10*100 + +``` + LD ycsb +2025-01-04 19:12:35 0 sec: 0 operations; +2025-01-04 19:12:36 0 sec: 100000 operations; [INSERT: Count=100000 Max=796.67 Min=3.03 Avg=4.16 90=4.82 99=11.15 99.9=28.77 99.99=204.16] +Load runtime(sec): 0.56313 +Load operations(ops): 100000 +Load throughput(ops/sec): 177579 +2025-01-04 19:12:36 0 sec: 0 operations; +2025-01-04 19:12:46 9 sec: 2536 operations; [INSERT: Count=137 Max=128.96 Min=10.58 Avg=67.85 90=87.87 99=111.81 99.9=128.96 99.99=128.96] [SCAN: Count=2399 Max=8617.98 Min=46.98 Avg=4041.24 90=7028.73 99=8015.87 99.9=8495.10 99.99=8617.98] +2025-01-04 19:12:56 19 sec: 5001 operations; [INSERT: Count=251 Max=158.46 Min=10.58 Avg=69.64 90=91.65 99=111.81 99.9=158.46 99.99=158.46] [SCAN: Count=4750 Max=8617.98 Min=46.98 Avg=4132.25 90=7135.23 99=8101.89 99.9=8519.68 99.99=8617.98] +2025-01-04 19:13:06 29 sec: 7437 operations; [INSERT: Count=384 Max=158.46 Min=10.58 Avg=70.90 90=94.72 99=117.69 99.9=158.46 99.99=158.46] [SCAN: Count=7053 Max=9601.02 Min=46.98 Avg=4190.69 90=7208.96 99=8212.48 99.9=8617.98 99.99=8880.13] +2025-01-04 19:13:17 41 sec: 9792 operations; [INSERT: Count=486 Max=158.46 Min=10.58 Avg=72.01 90=95.87 99=119.61 99.9=158.46 99.99=158.46] [SCAN: Count=9306 Max=1111490.56 Min=46.98 Avg=4436.21 90=7266.30 99=8318.98 99.9=9363.45 99.99=690487.30] +2025-01-04 19:13:18 42 sec: 9999 operations; [INSERT: Count=494 Max=158.46 Min=10.58 Avg=71.99 90=96.06 99=119.61 99.9=158.46 99.99=158.46] [SCAN: Count=9505 Max=1111490.56 Min=46.98 Avg=4433.36 90=7266.30 99=8318.98 99.9=9011.20 99.99=690487.30] +Run runtime(sec): 42.3571 +Run operations(ops): 10000 +Run throughput(ops/sec): 236.088 +All steps completed successfully! +``` + + + +workloadf-1000000-10*100 + +``` + LD ycsb +2025-01-04 19:17:08 0 sec: 0 operations; +2025-01-04 19:17:16 7 sec: 1000000 operations; [INSERT: Count=1000000 Max=1778.69 Min=3.14 Avg=6.10 90=7.17 99=43.20 99.9=50.66 99.99=294.14] +Load runtime(sec): 7.54327 +Load operations(ops): 1000000 +Load throughput(ops/sec): 132568 +2025-01-04 19:17:16 0 sec: 0 operations; +2025-01-04 19:17:26 9 sec: 1185556 operations; [READ: Count=790800 Max=888.83 Min=1.86 Avg=5.00 90=6.54 99=9.75 99.9=30.64 99.99=426.75] [UPDATE: Count=394756 Max=4460.54 Min=5.24 Avg=7.49 90=8.02 99=19.71 99.9=54.81 99.99=496.13] +2025-01-04 19:17:28 11 sec: 1499353 operations; [READ: Count=1000000 Max=888.83 Min=1.86 Avg=5.07 90=6.70 99=9.94 99.9=30.66 99.99=430.08] [UPDATE: Count=499353 Max=4460.54 Min=5.24 Avg=7.47 90=8.01 99=19.87 99.9=53.89 99.99=488.19] +Run runtime(sec): 11.9756 +Run operations(ops): 1000000 +Run throughput(ops/sec): 83503.2 +All steps completed successfully! +``` + + + +## 20fields*1000field-len + +workloada-1000000-20*1000 + +``` + LD ycsb +2025-01-04 19:19:33 0 sec: 0 operations; +2025-01-04 19:19:43 10 sec: 224275 operations; [INSERT: Count=224275 Max=6361.09 Min=11.08 Avg=23.87 90=55.07 99=83.39 99.9=139.90 99.99=340.22] +2025-01-04 19:19:53 19 sec: 433660 operations; [INSERT: Count=433660 Max=145752.06 Min=11.04 Avg=25.42 90=57.25 99=85.38 99.9=147.46 99.99=333.31] +2025-01-04 19:20:03 29 sec: 631879 operations; [INSERT: Count=631879 Max=145752.06 Min=11.04 Avg=26.70 90=60.16 99=90.50 99.9=158.46 99.99=371.45] +2025-01-04 19:20:13 40 sec: 835326 operations; [INSERT: Count=835326 Max=145752.06 Min=11.04 Avg=27.09 90=60.83 99=100.03 99.9=182.01 99.99=387.07] +2025-01-04 19:20:22 48 sec: 1000000 operations; [INSERT: Count=1000000 Max=145752.06 Min=11.04 Avg=28.01 90=64.13 99=108.93 99.9=192.77 99.99=392.96] +Load runtime(sec): 48.8622 +Load operations(ops): 1000000 +Load throughput(ops/sec): 20465.7 +2025-01-04 19:20:22 0 sec: 0 operations; +2025-01-04 19:20:32 10 sec: 127878 operations; [READ: Count=63694 Max=1661.95 Min=5.01 Avg=14.96 90=20.53 99=48.58 99.9=419.58 99.99=668.67] [UPDATE: Count=64184 Max=27803.65 Min=17.74 Avg=53.75 90=96.38 99=366.85 99.9=1023.49 99.99=4665.34] +2025-01-04 19:20:42 20 sec: 301221 operations; [READ: Count=149927 Max=39550.97 Min=5.01 Avg=28.45 90=25.44 99=328.96 99.9=532.48 99.99=1097.73] [UPDATE: Count=151294 Max=127860.74 Min=17.22 Avg=65.71 90=122.88 99=450.30 99.9=923.13 99.99=4661.25] +2025-01-04 19:20:52 29 sec: 417957 operations; [READ: Count=208353 Max=55345.15 Min=5.01 Avg=38.08 90=48.77 99=352.25 99.9=587.77 99.99=1338.37] [UPDATE: Count=209604 Max=127860.74 Min=17.22 Avg=76.78 90=227.33 99=475.65 99.9=919.55 99.99=3141.63] +2025-01-04 19:21:02 40 sec: 513391 operations; [READ: Count=256145 Max=124190.72 Min=5.01 Avg=46.00 90=195.97 99=369.15 99.9=636.41 99.99=1415.17] [UPDATE: Count=257246 Max=127860.74 Min=17.22 Avg=85.83 90=256.25 99=492.54 99.9=925.18 99.99=3141.63] +2025-01-04 19:21:12 50 sec: 594915 operations; [READ: Count=296776 Max=124190.72 Min=5.01 Avg=51.99 90=206.21 99=392.70 99.9=689.66 99.99=1394.69] [UPDATE: Count=298139 Max=127860.74 Min=17.22 Avg=94.88 90=268.03 99=536.06 99.9=1025.54 99.99=3102.72] +2025-01-04 19:21:22 60 sec: 675407 operations; [READ: Count=336952 Max=124190.72 Min=5.01 Avg=57.55 90=213.50 99=425.47 99.9=765.44 99.99=1584.13] [UPDATE: Count=338455 Max=127860.74 Min=17.22 Avg=100.97 90=276.48 99=563.20 99.9=1046.02 99.99=3141.63] +2025-01-04 19:21:32 70 sec: 746196 operations; [READ: Count=372195 Max=124190.72 Min=5.01 Avg=63.00 90=222.21 99=464.38 99.9=859.65 99.99=2740.22] [UPDATE: Count=374001 Max=127860.74 Min=17.22 Avg=106.89 90=287.49 99=601.09 99.9=1118.21 99.99=3358.72] +2025-01-04 19:21:42 80 sec: 816521 operations; [READ: Count=407324 Max=124190.72 Min=5.01 Avg=67.47 90=232.45 99=493.57 99.9=875.01 99.99=2480.13] [UPDATE: Count=409197 Max=127860.74 Min=17.22 Avg=111.92 90=300.54 99=623.62 99.9=1115.13 99.99=3235.84] +2025-01-04 19:21:52 90 sec: 878437 operations; [READ: Count=438184 Max=124190.72 Min=5.01 Avg=71.84 90=242.69 99=520.19 99.9=937.98 99.99=3137.53] [UPDATE: Count=440253 Max=127860.74 Min=17.22 Avg=117.37 90=313.86 99=655.87 99.9=1160.19 99.99=3852.29] +2025-01-04 19:22:02 100 sec: 941734 operations; [READ: Count=470067 Max=124190.72 Min=5.01 Avg=75.71 90=255.36 99=547.84 99.9=951.29 99.99=3069.95] [UPDATE: Count=471667 Max=127860.74 Min=17.22 Avg=121.76 90=326.91 99=678.91 99.9=1153.02 99.99=3704.83] +2025-01-04 19:22:11 109 sec: 999997 operations; [READ: Count=499268 Max=124190.72 Min=5.01 Avg=79.08 90=266.24 99=567.29 99.9=962.56 99.99=3067.90] [UPDATE: Count=500729 Max=127860.74 Min=17.22 Avg=125.22 90=336.89 99=696.32 99.9=1149.95 99.99=3624.96] +Run runtime(sec): 109.283 +Run operations(ops): 1000000 +Run throughput(ops/sec): 9150.56 +All steps completed successfully! +``` + + + +workloadb-1000000-20*1000 + +``` + LD ycsb +2025-01-04 19:31:11 0 sec: 0 operations; +2025-01-04 19:31:21 9 sec: 191338 operations; [INSERT: Count=191338 Max=17760.26 Min=11.26 Avg=30.27 90=59.49 99=164.74 99.9=370.94 99.99=1328.13] +2025-01-04 19:31:31 19 sec: 323427 operations; [INSERT: Count=323427 Max=22691.84 Min=11.26 Avg=39.54 90=86.91 99=279.55 99.9=680.96 99.99=3506.18] +2025-01-04 19:31:41 29 sec: 460689 operations; [INSERT: Count=460689 Max=22691.84 Min=11.26 Avg=42.95 90=100.73 99=270.33 99.9=662.53 99.99=3117.05] +2025-01-04 19:31:51 39 sec: 593711 operations; [INSERT: Count=593711 Max=22691.84 Min=11.26 Avg=45.25 90=103.49 99=276.99 99.9=656.38 99.99=3051.52] +2025-01-04 19:32:01 49 sec: 767460 operations; [INSERT: Count=767460 Max=22691.84 Min=11.26 Avg=43.14 90=100.03 99=251.39 99.9=607.23 99.99=2832.38] +2025-01-04 19:32:11 59 sec: 899517 operations; [INSERT: Count=899517 Max=52756.48 Min=11.26 Avg=44.57 90=104.96 99=249.34 99.9=592.89 99.99=2576.38] +2025-01-04 19:32:19 67 sec: 999998 operations; [INSERT: Count=999998 Max=1075838.98 Min=11.26 Avg=45.28 90=100.54 99=238.21 99.9=575.49 99.99=2424.83] +Load runtime(sec): 67.3709 +Load operations(ops): 1000000 +Load throughput(ops/sec): 14843.2 +2025-01-04 19:32:19 0 sec: 0 operations; +2025-01-04 19:32:28 8 sec: 0 operations; +2025-01-04 19:32:38 18 sec: 534414 operations; [READ: Count=507700 Max=556.03 Min=4.62 Avg=14.11 90=23.28 99=55.65 99.9=80.38 99.99=256.64] [UPDATE: Count=26714 Max=10608.64 Min=19.54 Avg=67.87 90=98.88 99=140.54 99.9=289.28 99.99=2185.22] +2025-01-04 19:32:46 27 sec: 1000000 operations; [READ: Count=949979 Max=594.43 Min=4.30 Avg=14.06 90=21.82 99=56.38 99.9=91.01 99.99=262.14] [UPDATE: Count=50021 Max=43417.60 Min=18.48 Avg=72.00 90=103.61 99=203.52 99.9=686.59 99.99=4255.74] +Run runtime(sec): 27.2017 +Run operations(ops): 1000000 +Run throughput(ops/sec): 36762.4 +All steps completed successfully! +``` + + + +workloadc-1000000-20*1000 + +``` + LD ycsb +2025-01-04 19:38:33 0 sec: 0 operations; +2025-01-04 19:38:45 11 sec: 151017 operations; [INSERT: Count=151017 Max=1058537.47 Min=11.04 Avg=51.18 90=100.99 99=226.30 99.9=499.45 99.99=2117.63] +2025-01-04 19:38:55 21 sec: 271494 operations; [INSERT: Count=271494 Max=1086324.74 Min=11.04 Avg=59.62 90=110.85 99=235.52 99.9=576.00 99.99=3235.84] +2025-01-04 19:39:05 31 sec: 410419 operations; [INSERT: Count=410419 Max=1086324.74 Min=11.04 Avg=56.59 90=109.76 99=218.62 99.9=562.17 99.99=3299.33] +2025-01-04 19:39:15 41 sec: 551640 operations; [INSERT: Count=551640 Max=1086324.74 Min=11.04 Avg=54.78 90=107.84 99=214.27 99.9=553.98 99.99=3182.59] +2025-01-04 19:39:25 51 sec: 687584 operations; [INSERT: Count=687584 Max=1151336.45 Min=11.04 Avg=56.02 90=108.61 99=211.97 99.9=552.45 99.99=3235.84] +2025-01-04 19:39:35 61 sec: 843014 operations; [INSERT: Count=843014 Max=1151336.45 Min=11.04 Avg=53.94 90=106.30 99=229.63 99.9=633.34 99.99=3241.98] +2025-01-04 19:39:44 70 sec: 999999 operations; [INSERT: Count=999999 Max=1151336.45 Min=11.04 Avg=51.80 90=103.55 99=214.40 99.9=596.99 99.99=3002.37] +Load runtime(sec): 70.8471 +Load operations(ops): 1000000 +Load throughput(ops/sec): 14114.9 +2025-01-04 19:39:44 0 sec: 0 operations; +2025-01-04 19:39:54 10 sec: 34396 operations; [READ: Count=34396 Max=578.56 Min=5.11 Avg=12.69 90=30.29 99=51.07 99.9=79.36 99.99=282.37] +2025-01-04 19:40:05 21 sec: 897734 operations; [READ: Count=897734 Max=1093664.77 Min=4.75 Avg=12.37 90=16.56 99=49.28 99.9=62.69 99.99=281.60] +2025-01-04 19:40:07 22 sec: 1000000 operations; [READ: Count=1000000 Max=1093664.77 Min=4.75 Avg=12.15 90=16.46 99=49.25 99.9=62.30 99.99=286.72] +Run runtime(sec): 22.2029 +Run operations(ops): 1000000 +Run throughput(ops/sec): 45039.2 +All steps completed successfully! +``` + + + +workloadd-1000000-20*1000 + +``` + LD ycsb +2025-01-04 19:41:29 0 sec: 0 operations; +2025-01-04 19:41:39 10 sec: 209255 operations; [INSERT: Count=209255 Max=911.87 Min=10.54 Avg=26.76 90=53.53 99=110.40 99.9=164.09 99.99=300.29] +2025-01-04 19:41:49 20 sec: 368509 operations; [INSERT: Count=368509 Max=488636.41 Min=10.54 Avg=33.23 90=74.75 99=124.80 99.9=232.57 99.99=1790.97] +2025-01-04 19:41:59 29 sec: 523810 operations; [INSERT: Count=523810 Max=488636.41 Min=10.54 Avg=36.20 90=81.15 99=128.38 99.9=250.75 99.99=2301.95] +2025-01-04 19:42:09 39 sec: 678223 operations; [INSERT: Count=678223 Max=488636.41 Min=10.54 Avg=37.92 90=82.56 99=129.53 99.9=256.38 99.99=2096.13] +2025-01-04 19:42:19 49 sec: 850642 operations; [INSERT: Count=850642 Max=488636.41 Min=10.54 Avg=37.74 90=82.56 99=131.58 99.9=258.69 99.99=1921.02] +2025-01-04 19:42:27 58 sec: 999999 operations; [INSERT: Count=999999 Max=488636.41 Min=10.54 Avg=37.39 90=82.05 99=129.66 99.9=247.81 99.99=1790.97] +Load runtime(sec): 58.4519 +Load operations(ops): 1000000 +Load throughput(ops/sec): 17108.1 +2025-01-04 19:42:27 0 sec: 0 operations; +2025-01-04 19:42:37 10 sec: 74489 operations; [INSERT: Count=3782 Max=430.33 Min=12.12 Avg=49.56 90=68.86 99=91.45 99.9=312.83 99.99=430.33] [READ: Count=70707 Max=342.27 Min=4.36 Avg=9.78 90=13.94 99=49.38 99.9=58.98 99.99=255.36] +2025-01-04 19:42:48 21 sec: 845620 operations; [INSERT: Count=42114 Max=1076887.55 Min=12.12 Avg=76.05 90=65.98 99=96.83 99.9=317.69 99.99=2799.61] [READ: Count=803506 Max=4513.79 Min=4.16 Avg=9.59 90=13.91 99=48.51 99.9=59.58 99.99=303.62] +2025-01-04 19:42:49 22 sec: 999999 operations; [INSERT: Count=49860 Max=1076887.55 Min=12.12 Avg=75.23 90=79.81 99=170.11 99.9=354.56 99.99=2764.80] [READ: Count=950139 Max=4513.79 Min=4.16 Avg=9.60 90=13.94 99=47.26 99.9=59.65 99.99=301.06] +Run runtime(sec): 22.177 +Run operations(ops): 1000000 +Run throughput(ops/sec): 45091.7 +All steps completed successfully! +``` + + + +workloade-recordcount=100000-operationcount=10000--20*1000 + +``` + LD ycsb +2025-01-04 19:43:48 0 sec: 0 operations; +2025-01-04 19:43:52 4 sec: 99999 operations; [INSERT: Count=99999 Max=2764.80 Min=10.58 Avg=26.37 90=51.36 99=121.53 99.9=190.08 99.99=461.31] +Load runtime(sec): 4.73872 +Load operations(ops): 100000 +Load throughput(ops/sec): 21102.7 +2025-01-04 19:43:52 0 sec: 0 operations; +2025-01-04 19:44:02 10 sec: 1592 operations; [INSERT: Count=82 Max=264.70 Min=17.89 Avg=127.32 90=227.71 99=261.63 99.9=264.70 99.99=264.70] [SCAN: Count=1510 Max=12984.32 Min=226.82 Avg=6301.33 90=9887.74 99=11730.94 99.9=12320.77 99.99=12984.32] +2025-01-04 19:44:12 20 sec: 3271 operations; [INSERT: Count=163 Max=751.10 Min=16.12 Avg=121.26 90=166.27 99=261.63 99.9=751.10 99.99=751.10] [SCAN: Count=3108 Max=14082.05 Min=115.46 Avg=6233.02 90=9740.29 99=11665.41 99.9=12427.26 99.99=14082.05] +2025-01-04 19:44:22 30 sec: 4967 operations; [INSERT: Count=261 Max=751.10 Min=16.12 Avg=121.51 90=196.22 99=261.63 99.9=751.10 99.99=751.10] [SCAN: Count=4706 Max=14082.05 Min=115.46 Avg=6208.06 90=9764.86 99=11730.94 99.9=12509.18 99.99=14082.05] +2025-01-04 19:44:32 40 sec: 6626 operations; [INSERT: Count=332 Max=751.10 Min=16.12 Avg=117.78 90=162.30 99=261.63 99.9=751.10 99.99=751.10] [SCAN: Count=6294 Max=16809.98 Min=115.46 Avg=6207.91 90=9773.06 99=11730.94 99.9=12509.18 99.99=14082.05] +2025-01-04 19:44:42 50 sec: 8317 operations; [INSERT: Count=415 Max=3520.51 Min=16.12 Avg=130.32 90=211.20 99=266.50 99.9=3520.51 99.99=3520.51] [SCAN: Count=7902 Max=16809.98 Min=85.82 Avg=6191.63 90=9805.82 99=11714.56 99.9=12509.18 99.99=14082.05] +2025-01-04 19:44:52 59 sec: 10000 operations; [INSERT: Count=502 Max=3520.51 Min=16.12 Avg=126.91 90=196.22 99=264.70 99.9=751.10 99.99=3520.51] [SCAN: Count=9498 Max=16809.98 Min=85.82 Avg=6185.89 90=9789.44 99=11681.79 99.9=12509.18 99.99=14082.05] +Run runtime(sec): 59.9708 +Run operations(ops): 10000 +Run throughput(ops/sec): 166.748 +All steps completed successfully! +``` + + + +workloadf-1000000-20*1000 + +``` + LD ycsb +2025-01-04 19:46:54 0 sec: 0 operations; +2025-01-04 19:47:04 10 sec: 189877 operations; [INSERT: Count=189877 Max=6098.94 Min=10.85 Avg=27.02 90=63.81 99=92.03 99.9=143.36 99.99=327.17] +2025-01-04 19:47:14 20 sec: 363623 operations; [INSERT: Count=363623 Max=13459.45 Min=10.85 Avg=29.19 90=71.94 99=94.78 99.9=158.72 99.99=423.42] +2025-01-04 19:47:24 29 sec: 554522 operations; [INSERT: Count=554522 Max=14860.29 Min=10.85 Avg=28.35 90=66.17 99=92.42 99.9=155.26 99.99=394.24] +2025-01-04 19:47:34 39 sec: 731276 operations; [INSERT: Count=731276 Max=14860.29 Min=10.85 Avg=28.80 90=67.39 99=98.43 99.9=161.28 99.99=382.72] +2025-01-04 19:47:45 51 sec: 907984 operations; [INSERT: Count=907984 Max=1051721.73 Min=10.85 Avg=30.33 90=68.54 99=101.06 99.9=170.50 99.99=390.91] +2025-01-04 19:47:50 56 sec: 999999 operations; [INSERT: Count=999999 Max=1051721.73 Min=10.85 Avg=30.19 90=67.65 99=101.06 99.9=171.01 99.99=393.98] +Load runtime(sec): 56.0834 +Load operations(ops): 1000000 +Load throughput(ops/sec): 17830.6 +2025-01-04 19:47:50 0 sec: 0 operations; +2025-01-04 19:47:59 8 sec: 167513 operations; [READ: Count=111693 Max=473.60 Min=5.08 Avg=13.75 90=21.18 99=53.70 99.9=69.95 99.99=203.65] [UPDATE: Count=55820 Max=18677.76 Min=16.45 Avg=45.74 90=84.99 99=216.83 99.9=627.71 99.99=1250.30] +2025-01-04 19:48:09 18 sec: 420546 operations; [READ: Count=280365 Max=348389.38 Min=5.02 Avg=24.23 90=24.27 99=282.88 99.9=511.23 99.99=1306.62] [UPDATE: Count=140181 Max=18677.76 Min=16.45 Avg=50.14 90=99.97 99=216.83 99.9=542.72 99.99=1236.99] +2025-01-04 19:48:19 28 sec: 604393 operations; [READ: Count=403027 Max=348389.38 Min=5.01 Avg=33.87 90=34.46 99=342.01 99.9=703.49 99.99=3239.93] [UPDATE: Count=201366 Max=18677.76 Min=16.45 Avg=49.45 90=94.97 99=210.69 99.9=457.73 99.99=1097.73] +2025-01-04 19:48:29 38 sec: 757689 operations; [READ: Count=505380 Max=348389.38 Min=5.01 Avg=40.90 90=66.05 99=356.86 99.9=664.58 99.99=2928.64] [UPDATE: Count=252309 Max=18677.76 Min=16.45 Avg=50.49 90=92.99 99=209.02 99.9=432.38 99.99=1002.50] +2025-01-04 19:48:39 48 sec: 875514 operations; [READ: Count=583931 Max=348389.38 Min=4.69 Avg=48.02 90=195.33 99=382.46 99.9=791.55 99.99=5242.88] [UPDATE: Count=291583 Max=18677.76 Min=16.45 Avg=52.14 90=94.97 99=213.63 99.9=430.33 99.99=990.21] +2025-01-04 19:48:49 58 sec: 997411 operations; [READ: Count=665275 Max=348389.38 Min=4.69 Avg=53.20 90=206.34 99=406.27 99.9=779.26 99.99=4431.87] [UPDATE: Count=332136 Max=18677.76 Min=16.45 Avg=53.22 90=96.58 99=212.22 99.9=415.23 99.99=924.16] +2025-01-04 19:48:59 68 sec: 1111580 operations; [READ: Count=741456 Max=348389.38 Min=4.69 Avg=58.10 90=215.17 99=435.45 99.9=791.55 99.99=4032.51] [UPDATE: Count=370124 Max=18677.76 Min=16.45 Avg=53.56 90=95.30 99=210.69 99.9=398.85 99.99=906.75] +2025-01-04 19:49:09 78 sec: 1210026 operations; [READ: Count=807016 Max=348389.38 Min=4.69 Avg=63.19 90=221.69 99=465.66 99.9=913.92 99.99=5242.88] [UPDATE: Count=403010 Max=18677.76 Min=16.45 Avg=54.01 90=94.85 99=209.41 99.9=397.06 99.99=884.22] +2025-01-04 19:49:19 88 sec: 1313067 operations; [READ: Count=875717 Max=348389.38 Min=4.69 Avg=67.11 90=229.25 99=482.81 99.9=902.65 99.99=4853.76] [UPDATE: Count=437350 Max=18677.76 Min=16.45 Avg=54.50 90=94.46 99=209.15 99.9=391.94 99.99=848.89] +2025-01-04 19:49:29 98 sec: 1410443 operations; [READ: Count=940627 Max=348389.38 Min=4.69 Avg=70.84 90=237.69 99=502.01 99.9=909.31 99.99=4636.67] [UPDATE: Count=469816 Max=18677.76 Min=16.45 Avg=54.98 90=94.14 99=208.64 99.9=390.40 99.99=843.26] +2025-01-04 19:49:38 108 sec: 1499599 operations; [READ: Count=999997 Max=348389.38 Min=4.69 Avg=74.29 90=248.06 99=522.75 99.9=912.89 99.99=4431.87] [UPDATE: Count=499602 Max=18677.76 Min=16.45 Avg=55.39 90=94.02 99=208.51 99.9=387.07 99.99=833.53] +Run runtime(sec): 108.584 +Run operations(ops): 1000000 +Run throughput(ops/sec): 9209.49 +All steps completed successfully! +``` + + + +# workload_getkeys + +workload_getkeys-100000-10*500-getkeysbyfieldproportion=0.001 + +``` + LD ycsb +2025-01-04 19:53:53 0 sec: 0 operations; +2025-01-04 19:53:54 1 sec: 100000 operations; [INSERT: Count=100000 Max=1814.53 Min=5.60 Avg=8.98 90=10.19 99=39.30 99.9=71.42 99.99=292.10] +Load runtime(sec): 1.46882 +Load operations(ops): 100000 +Load throughput(ops/sec): 68081.7 +2025-01-04 19:53:54 0 sec: 0 operations; +2025-01-04 19:54:04 10 sec: 46086 operations; [READ: Count=46042 Max=79.04 Min=3.10 Avg=5.00 90=5.82 99=9.89 99.9=30.62 99.99=58.40] [GETKEYSBYFIELD: Count=44 Max=257556.48 Min=194641.92 Avg=212005.98 90=224002.05 99=257556.48 99.9=257556.48 99.99=257556.48] +2025-01-04 19:54:14 20 sec: 93080 operations; [READ: Count=92990 Max=79.04 Min=3.10 Avg=5.03 90=5.91 99=10.69 99.9=30.38 99.99=57.66] [GETKEYSBYFIELD: Count=90 Max=257556.48 Min=194641.92 Avg=213242.49 90=227409.92 99=244973.57 99.9=257556.48 99.99=257556.48] +2025-01-04 19:54:16 21 sec: 100000 operations; [READ: Count=99902 Max=79.04 Min=3.10 Avg=5.03 90=5.89 99=10.51 99.9=30.32 99.99=54.59] [GETKEYSBYFIELD: Count=98 Max=257556.48 Min=194641.92 Avg=212870.29 90=227278.85 99=244973.57 99.9=257556.48 99.99=257556.48] +Run runtime(sec): 21.661 +Run operations(ops): 100000 +Run throughput(ops/sec): 4616.6 +All steps completed successfully! +``` + + + +workload_getkeys-100000-10*100-getkeysbyfieldproportion=0.001 + +``` + LD ycsb +2025-01-04 19:57:03 0 sec: 0 operations; +2025-01-04 19:57:03 0 sec: 100000 operations; [INSERT: Count=100000 Max=775.68 Min=3.14 Avg=4.54 90=5.34 99=15.21 99.9=31.61 99.99=242.94] +Load runtime(sec): 0.605355 +Load operations(ops): 100000 +Load throughput(ops/sec): 165192 +2025-01-04 19:57:03 0 sec: 0 operations; +2025-01-04 19:57:14 11 sec: 81386 operations; [READ: Count=81299 Max=216.83 Min=2.39 Avg=3.85 90=4.48 99=6.33 99.9=28.22 99.99=47.30] [GETKEYSBYFIELD: Count=87 Max=1167065.09 Min=97779.71 Avg=119777.21 90=111083.52 99=116654.08 99.9=1167065.09 99.99=1167065.09] +2025-01-04 19:57:16 12 sec: 100000 operations; [READ: Count=99896 Max=216.83 Min=2.26 Avg=3.80 90=4.42 99=6.24 99.9=27.70 99.99=46.98] [GETKEYSBYFIELD: Count=104 Max=1167065.09 Min=97779.71 Avg=116532.15 90=111083.52 99=116654.08 99.9=1167065.09 99.99=1167065.09] +Run runtime(sec): 12.737 +Run operations(ops): 100000 +Run throughput(ops/sec): 7851.13 +All steps completed successfully! +``` + + + +workload_getkeys-100000-20*1000-getkeysbyfieldproportion=0.001 + +``` + LD ycsb +2025-01-04 19:58:09 0 sec: 0 operations; +2025-01-04 19:58:14 4 sec: 100000 operations; [INSERT: Count=100000 Max=5672.96 Min=10.30 Avg=29.59 90=67.07 99=86.27 99.9=152.70 99.99=370.94] +Load runtime(sec): 4.93885 +Load operations(ops): 100000 +Load throughput(ops/sec): 20247.6 +2025-01-04 19:58:14 0 sec: 0 operations; +2025-01-04 19:58:23 9 sec: 18226 operations; [READ: Count=18205 Max=60.90 Min=4.49 Avg=7.49 90=8.41 99=16.21 99.9=32.77 99.99=58.40] [GETKEYSBYFIELD: Count=21 Max=481558.53 Min=233046.02 Avg=447445.48 90=477102.08 99=481558.53 99.9=481558.53 99.99=481558.53] +2025-01-04 19:58:33 19 sec: 35562 operations; [READ: Count=35520 Max=60.90 Min=4.49 Avg=7.51 90=8.42 99=16.30 99.9=32.90 99.99=51.01] [GETKEYSBYFIELD: Count=42 Max=482082.82 Min=233046.02 Avg=450798.74 90=477888.51 99=482082.82 99.9=482082.82 99.99=482082.82] +2025-01-04 19:58:44 29 sec: 54955 operations; [READ: Count=54892 Max=60.90 Min=4.49 Avg=7.59 90=8.54 99=16.18 99.9=33.12 99.99=51.01] [GETKEYSBYFIELD: Count=63 Max=521404.41 Min=233046.02 Avg=457704.46 90=482082.82 99=507248.64 99.9=521404.41 99.99=521404.41] +2025-01-04 19:58:54 39 sec: 76867 operations; [READ: Count=76783 Max=324.35 Min=4.49 Avg=7.60 90=8.54 99=16.12 99.9=33.12 99.99=52.51] [GETKEYSBYFIELD: Count=84 Max=525598.72 Min=233046.02 Avg=463173.34 90=485228.54 99=521404.41 99.9=525598.72 99.99=525598.72] +2025-01-04 19:59:02 48 sec: 100000 operations; [READ: Count=99898 Max=324.35 Min=4.49 Avg=7.63 90=8.55 99=17.30 99.9=33.25 99.99=52.61] [GETKEYSBYFIELD: Count=102 Max=525598.72 Min=233046.02 Avg=464891.18 90=485228.54 99=521404.41 99.9=525598.72 99.99=525598.72] +Run runtime(sec): 48.4727 +Run operations(ops): 100000 +Run throughput(ops/sec): 2063.02 +All steps completed successfully! +``` + + + +workload_getkeys-100000-20*1000-getkeysbyfieldproportion=0.01 + +``` + LD ycsb +2025-01-04 20:00:44 0 sec: 0 operations; +2025-01-04 20:00:49 4 sec: 100000 operations; [INSERT: Count=100000 Max=7639.04 Min=10.52 Avg=22.76 90=52.67 99=80.19 99.9=130.05 99.99=312.83] +Load runtime(sec): 4.34701 +Load operations(ops): 100000 +Load throughput(ops/sec): 23004.3 +2025-01-04 20:00:49 0 sec: 0 operations; +2025-01-04 20:01:00 11 sec: 2702 operations; [READ: Count=2681 Max=57.89 Min=4.36 Avg=8.17 90=9.26 99=27.23 99.9=40.13 99.99=57.89] [GETKEYSBYFIELD: Count=21 Max=1519386.62 Min=401342.46 Avg=511511.60 90=475791.36 99=1519386.62 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:01:10 21 sec: 5261 operations; [READ: Count=5218 Max=57.89 Min=4.36 Avg=8.23 90=9.42 99=28.05 99.9=39.62 99.99=48.93] [GETKEYSBYFIELD: Count=43 Max=1519386.62 Min=401342.46 Avg=479909.46 90=466092.03 99=1519386.62 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:01:20 31 sec: 7645 operations; [READ: Count=7579 Max=57.89 Min=4.36 Avg=8.23 90=9.45 99=28.03 99.9=39.20 99.99=48.93] [GETKEYSBYFIELD: Count=66 Max=1519386.62 Min=401342.46 Avg=467283.60 90=464519.17 99=731381.76 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:01:31 42 sec: 10489 operations; [READ: Count=10401 Max=57.89 Min=4.36 Avg=8.18 90=9.41 99=27.61 99.9=39.62 99.99=48.93] [GETKEYSBYFIELD: Count=88 Max=1519386.62 Min=401342.46 Avg=476205.43 90=466092.03 99=1503657.98 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:01:41 52 sec: 12537 operations; [READ: Count=12426 Max=87.17 Min=4.36 Avg=8.21 90=9.42 99=28.03 99.9=40.13 99.99=57.89] [GETKEYSBYFIELD: Count=111 Max=1519386.62 Min=401342.46 Avg=469867.14 90=466092.03 99=1503657.98 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:01:51 62 sec: 14592 operations; [READ: Count=14459 Max=87.17 Min=4.36 Avg=8.22 90=9.45 99=27.76 99.9=41.22 99.99=57.89] [GETKEYSBYFIELD: Count=133 Max=1519386.62 Min=368312.32 Avg=465253.37 90=464519.17 99=1503657.98 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:02:01 72 sec: 17161 operations; [READ: Count=17005 Max=87.17 Min=4.36 Avg=8.21 90=9.42 99=27.76 99.9=40.13 99.99=48.93] [GETKEYSBYFIELD: Count=156 Max=1519386.62 Min=368312.32 Avg=462632.07 90=464519.17 99=731381.76 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:02:11 82 sec: 19587 operations; [READ: Count=19409 Max=92.67 Min=4.36 Avg=8.21 90=9.42 99=27.86 99.9=40.22 99.99=57.89] [GETKEYSBYFIELD: Count=178 Max=1519386.62 Min=368312.32 Avg=461114.24 90=464519.17 99=731381.76 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:02:21 92 sec: 22250 operations; [READ: Count=22050 Max=92.67 Min=4.36 Avg=8.22 90=9.43 99=27.68 99.9=40.22 99.99=57.89] [GETKEYSBYFIELD: Count=200 Max=1519386.62 Min=368312.32 Avg=459565.96 90=464519.17 99=731381.76 99.9=1519386.62 99.99=1519386.62] +2025-01-04 20:02:32 103 sec: 24009 operations; [READ: Count=23788 Max=92.67 Min=4.36 Avg=8.29 90=9.56 99=28.02 99.9=40.22 99.99=57.89] [GETKEYSBYFIELD: Count=221 Max=1551892.48 Min=368312.32 Avg=466631.74 90=468975.61 99=1503657.98 99.9=1551892.48 99.99=1551892.48] +2025-01-04 20:02:42 113 sec: 27347 operations; [READ: Count=27104 Max=92.67 Min=4.36 Avg=8.24 90=9.53 99=27.86 99.9=39.97 99.99=48.93] [GETKEYSBYFIELD: Count=243 Max=1551892.48 Min=368312.32 Avg=465637.86 90=470024.19 99=1503657.98 99.9=1551892.48 99.99=1551892.48] +2025-01-04 20:02:52 123 sec: 29917 operations; [READ: Count=29653 Max=92.67 Min=4.36 Avg=8.25 90=9.54 99=27.73 99.9=39.62 99.99=48.93] [GETKEYSBYFIELD: Count=264 Max=1551892.48 Min=368312.32 Avg=464912.88 90=470024.19 99=731381.76 99.9=1551892.48 99.99=1551892.48] +2025-01-04 20:03:02 133 sec: 32187 operations; [READ: Count=31900 Max=92.67 Min=4.36 Avg=8.26 90=9.54 99=27.95 99.9=39.39 99.99=48.93] [GETKEYSBYFIELD: Count=287 Max=1551892.48 Min=368312.32 Avg=464023.20 90=470286.34 99=731381.76 99.9=1551892.48 99.99=1551892.48] +2025-01-04 20:03:14 144 sec: 34440 operations; [READ: Count=34131 Max=92.67 Min=4.36 Avg=8.27 90=9.56 99=28.00 99.9=39.36 99.99=51.33] [GETKEYSBYFIELD: Count=309 Max=1626341.38 Min=368312.32 Avg=467004.45 90=470810.62 99=1503657.98 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:03:24 154 sec: 37072 operations; [READ: Count=36741 Max=92.67 Min=4.36 Avg=8.27 90=9.56 99=28.00 99.9=39.39 99.99=51.33] [GETKEYSBYFIELD: Count=331 Max=1626341.38 Min=368312.32 Avg=466155.79 90=471334.91 99=1503657.98 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:03:34 164 sec: 39067 operations; [READ: Count=38715 Max=92.67 Min=4.36 Avg=8.28 90=9.57 99=28.02 99.9=39.39 99.99=51.33] [GETKEYSBYFIELD: Count=352 Max=1626341.38 Min=368312.32 Avg=466006.76 90=471859.20 99=731381.76 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:03:44 174 sec: 40397 operations; [READ: Count=40022 Max=92.67 Min=4.36 Avg=8.29 90=9.57 99=28.19 99.9=39.39 99.99=51.33] [GETKEYSBYFIELD: Count=375 Max=1626341.38 Min=368312.32 Avg=464223.47 90=471334.91 99=731381.76 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:03:54 184 sec: 43244 operations; [READ: Count=42846 Max=92.67 Min=4.36 Avg=8.27 90=9.54 99=28.00 99.9=39.20 99.99=51.33] [GETKEYSBYFIELD: Count=398 Max=1626341.38 Min=368312.32 Avg=462590.30 90=470286.34 99=731381.76 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:04:05 196 sec: 45396 operations; [READ: Count=44977 Max=92.67 Min=4.36 Avg=8.29 90=9.58 99=28.02 99.9=39.13 99.99=51.33] [GETKEYSBYFIELD: Count=419 Max=1626341.38 Min=368312.32 Avg=466311.63 90=473694.21 99=1503657.98 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:04:15 206 sec: 48252 operations; [READ: Count=47809 Max=92.67 Min=4.36 Avg=8.26 90=9.55 99=27.86 99.9=38.40 99.99=50.98] [GETKEYSBYFIELD: Count=443 Max=1626341.38 Min=368312.32 Avg=464403.78 90=472121.34 99=1503657.98 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:04:25 216 sec: 50152 operations; [READ: Count=49687 Max=92.67 Min=4.36 Avg=8.26 90=9.54 99=27.89 99.9=38.72 99.99=51.33] [GETKEYSBYFIELD: Count=465 Max=1626341.38 Min=368312.32 Avg=463348.26 90=471859.20 99=786432.00 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:04:35 226 sec: 52455 operations; [READ: Count=51968 Max=92.67 Min=4.36 Avg=8.28 90=9.56 99=27.95 99.9=39.20 99.99=64.06] [GETKEYSBYFIELD: Count=487 Max=1626341.38 Min=368312.32 Avg=463702.32 90=472121.34 99=786432.00 99.9=1626341.38 99.99=1626341.38] +2025-01-04 20:04:47 237 sec: 55353 operations; [READ: Count=54845 Max=92.67 Min=4.36 Avg=8.27 90=9.56 99=27.93 99.9=39.13 99.99=64.06] [GETKEYSBYFIELD: Count=508 Max=1626341.38 Min=368312.32 Avg=465966.38 90=473694.21 99=1503657.98 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:04:57 247 sec: 56935 operations; [READ: Count=56404 Max=92.67 Min=4.36 Avg=8.28 90=9.57 99=28.03 99.9=39.39 99.99=57.89] [GETKEYSBYFIELD: Count=531 Max=1626341.38 Min=368312.32 Avg=465235.99 90=472907.78 99=1503657.98 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:05:07 258 sec: 59616 operations; [READ: Count=59063 Max=92.67 Min=4.36 Avg=8.28 90=9.57 99=28.00 99.9=39.36 99.99=57.89] [GETKEYSBYFIELD: Count=553 Max=1626341.38 Min=368312.32 Avg=465523.42 90=472907.78 99=840433.66 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:05:17 268 sec: 61662 operations; [READ: Count=61087 Max=92.67 Min=4.36 Avg=8.28 90=9.57 99=27.98 99.9=39.20 99.99=57.89] [GETKEYSBYFIELD: Count=575 Max=1626341.38 Min=368312.32 Avg=464981.23 90=472907.78 99=840433.66 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:05:27 278 sec: 64525 operations; [READ: Count=63928 Max=92.67 Min=4.36 Avg=8.27 90=9.56 99=27.93 99.9=39.13 99.99=57.89] [GETKEYSBYFIELD: Count=597 Max=1626341.38 Min=368312.32 Avg=464326.62 90=471859.20 99=840433.66 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:05:37 288 sec: 67644 operations; [READ: Count=67025 Max=92.67 Min=4.36 Avg=8.26 90=9.55 99=27.87 99.9=38.78 99.99=57.89] [GETKEYSBYFIELD: Count=619 Max=1626341.38 Min=368312.32 Avg=463931.57 90=471859.20 99=840433.66 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:05:47 298 sec: 69573 operations; [READ: Count=68932 Max=92.67 Min=4.36 Avg=8.27 90=9.55 99=27.93 99.9=38.72 99.99=57.89] [GETKEYSBYFIELD: Count=641 Max=1626341.38 Min=368312.32 Avg=463528.46 90=471859.20 99=840433.66 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:05:57 308 sec: 71085 operations; [READ: Count=70425 Max=9871.36 Min=4.36 Avg=8.44 90=9.60 99=28.08 99.9=39.39 99.99=66.50] [GETKEYSBYFIELD: Count=660 Max=1626341.38 Min=368312.32 Avg=465232.72 90=472907.78 99=840433.66 99.9=1585446.91 99.99=1626341.38] +2025-01-04 20:07:46 417 sec: 72971 operations; [READ: Count=72290 Max=9871.36 Min=4.36 Avg=8.44 90=9.61 99=28.16 99.9=39.62 99.99=66.50] [GETKEYSBYFIELD: Count=681 Max=99857989.63 Min=368312.32 Avg=611465.89 90=475791.36 99=1233125.38 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:07:56 427 sec: 74581 operations; [READ: Count=73878 Max=9871.36 Min=4.36 Avg=8.45 90=9.62 99=28.25 99.9=39.62 99.99=66.50] [GETKEYSBYFIELD: Count=703 Max=99857989.63 Min=368312.32 Avg=606942.97 90=475791.36 99=1233125.38 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:08:06 437 sec: 77395 operations; [READ: Count=76671 Max=9871.36 Min=4.36 Avg=8.44 90=9.62 99=28.18 99.9=39.20 99.99=64.06] [GETKEYSBYFIELD: Count=724 Max=99857989.63 Min=368312.32 Avg=602976.10 90=476577.79 99=1233125.38 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:08:16 447 sec: 79723 operations; [READ: Count=78978 Max=9871.36 Min=4.36 Avg=8.45 90=9.62 99=28.25 99.9=39.39 99.99=64.06] [GETKEYSBYFIELD: Count=745 Max=99857989.63 Min=368312.32 Avg=599103.37 90=477364.22 99=1233125.38 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:08:26 457 sec: 81379 operations; [READ: Count=80612 Max=9871.36 Min=4.36 Avg=8.45 90=9.63 99=28.32 99.9=39.20 99.99=64.06] [GETKEYSBYFIELD: Count=767 Max=99857989.63 Min=368312.32 Avg=595160.01 90=477364.22 99=840433.66 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:08:36 467 sec: 83499 operations; [READ: Count=82710 Max=9871.36 Min=4.36 Avg=8.45 90=9.64 99=28.34 99.9=39.36 99.99=64.06] [GETKEYSBYFIELD: Count=789 Max=99857989.63 Min=368312.32 Avg=591353.84 90=477364.22 99=840433.66 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:08:46 477 sec: 85503 operations; [READ: Count=84693 Max=9871.36 Min=4.36 Avg=8.46 90=9.64 99=28.37 99.9=39.36 99.99=64.06] [GETKEYSBYFIELD: Count=810 Max=99857989.63 Min=368312.32 Avg=588195.79 90=477364.22 99=840433.66 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:08:56 487 sec: 87519 operations; [READ: Count=86687 Max=9871.36 Min=4.36 Avg=8.46 90=9.65 99=28.37 99.9=39.39 99.99=63.62] [GETKEYSBYFIELD: Count=832 Max=99857989.63 Min=368312.32 Avg=584765.12 90=477364.22 99=840433.66 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:06 497 sec: 89323 operations; [READ: Count=88470 Max=9871.36 Min=4.36 Avg=8.46 90=9.65 99=28.38 99.9=39.62 99.99=63.62] [GETKEYSBYFIELD: Count=853 Max=99857989.63 Min=368312.32 Avg=581671.57 90=477102.08 99=786432.00 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:16 507 sec: 91520 operations; [READ: Count=90645 Max=9871.36 Min=4.36 Avg=8.46 90=9.65 99=28.45 99.9=39.74 99.99=63.62] [GETKEYSBYFIELD: Count=875 Max=99857989.63 Min=368312.32 Avg=578677.49 90=477102.08 99=786432.00 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:26 517 sec: 93620 operations; [READ: Count=92723 Max=9871.36 Min=4.36 Avg=8.47 90=9.66 99=28.50 99.9=39.62 99.99=63.62] [GETKEYSBYFIELD: Count=897 Max=99857989.63 Min=368312.32 Avg=575807.77 90=477102.08 99=786432.00 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:36 527 sec: 95578 operations; [READ: Count=94659 Max=9871.36 Min=4.36 Avg=8.47 90=9.67 99=28.51 99.9=39.39 99.99=63.62] [GETKEYSBYFIELD: Count=919 Max=99857989.63 Min=368312.32 Avg=572898.60 90=476839.93 99=786432.00 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:46 537 sec: 97298 operations; [READ: Count=96358 Max=9871.36 Min=4.36 Avg=8.48 90=9.68 99=28.54 99.9=39.39 99.99=61.92] [GETKEYSBYFIELD: Count=940 Max=99857989.63 Min=368312.32 Avg=570331.36 90=476839.93 99=786432.00 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:56 547 sec: 99746 operations; [READ: Count=98784 Max=9871.36 Min=4.36 Avg=8.48 90=9.69 99=28.59 99.9=39.74 99.99=63.62] [GETKEYSBYFIELD: Count=962 Max=99857989.63 Min=368312.32 Avg=568057.87 90=477364.22 99=756023.30 99.9=1626341.38 99.99=99857989.63] +2025-01-04 20:09:58 549 sec: 100000 operations; [READ: Count=99034 Max=9871.36 Min=4.36 Avg=8.48 90=9.69 99=28.62 99.9=39.74 99.99=63.62] [GETKEYSBYFIELD: Count=966 Max=99857989.63 Min=368312.32 Avg=567599.02 90=477364.22 99=756023.30 99.9=1626341.38 99.99=99857989.63] +Run runtime(sec): 549.445 +Run operations(ops): 100000 +Run throughput(ops/sec): 182.002 +All steps completed successfully! +``` + + + + + diff --git a/设计文档.assets/image-20241223101349130.png b/设计文档.assets/image-20241223101349130.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4bb8c761378b6cd859f47fd058e0d18e93df59 GIT binary patch literal 100573 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20241224015301281.png b/设计文档.assets/image-20241224015301281.png new file mode 100644 index 0000000000000000000000000000000000000000..4eaa1b677b9702c4d6673eaeb065ef075b7c271d GIT binary patch literal 70911 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

V?e-RC>RTuHCwU1k5?RSa#&@ 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 z zGGc66y=!!u3d|e2x;V9DsK&_grDJe1F$Tb>@6E4zEo7|9SWZ zc%Mi9nDYUZ2*fuuJZuIoi<}(6@0I1eYTwb-g({%*;`9Ys*<{FTcz9TU8b;*R&nO%t z#b^so2BF@=Zxv(5v6ru3e~&w+$o?SM=cSbA>(O~}UgtyC2Ilw3ksso1)isbg zbL;WT2R?C9jM}6-Dz*{vg&&m6&rbZr+0}cXQh{$T=iY56mNrC(!US*Be+lcD>75-3 zj#W#BGzak!Zjm207*vicQqs=1Wsg$wfBe|o%nSpRu-&Akr(e(NfcA2di%Sfq1{f;P zm{=Mb63*}-_R4rgpe*3thARd6Yz4F-#0RJ)7{p;%zG{r&7>>h!?HKh8{-UX(Vwlx| zDv4hDqeq92X%g&05{$4vK?W|K8ba8VSEK)Sc2{tR(4e8O&w2Je&YyBy?DxiihlCv1 z4s13g(T(g37hPs@!T|xYvSSNZliyU(7-Km_!NI$_3M=8%l$qbZANl&0 zrh#_%BaE-qx<`q)JXg4Twl)=(VQ&$}01QTP;-nM$L!cA4iL-$-w^Qe6`Sy+9y#1aB z^iJML%;i9FFL0W@uA71$3cOMb4#}}#WAfyLgB?aJ-2e9N9^lsgb$SO5BKUJ96G@X+ z#94!Tb6^KlAx>t2U6v>otFNu2Lva~~gbfVrV8He{uqirza6;9u$ya{Ya=E14BLPT; z2_Q%g2?@*}cuDw-!2IG>LGgwEk|n?1nPt$L@Mf@cVVDFqUo>25d+@2B`0g+&LSpYT zcFf^pAc0`-J3-7~i&h^~)4+JUH++hU^>7HxcK!9Ou)sj3!lYTymBI^r-O4z9YVYPG z#p%M*1^e|_YpJR+HqGtkP=5222hh*e=# zj*fi(Txy35j8BXKRp7=2b}0`aHcDw6^`8ytRjB~0Nta3b^mkd}af35{~Zza}HKDn1ha%Rx$GOiC2N%DJi!W1eI{M2;p=O8X z&e$On#|(B-?ZwZ7Wu@Eo6}Hg}t8i^uFY@7J7maaW`EwgcK+uDiv4tV18dgQ@8T?m) zHA~s8Lt8ArBm^|VH9_4WH5 z&R@l%VWg+L4YifruL6Evv~UCq!aC*}S20NnA@l~OCZQPsEbrK{gS29Hb`~>lzw9?I zZO2fM8oR3~Jp*1KhBQ9F9N!%)k*H>!FKjHF4mTTI8jw}-U(mlem5iT(VXJb0^F?F? zqfG60?yoQ)$^hDBcbfipDkDtlmXahJj zvAKw1!C!cidWpmG;Pk2Ka`~VT!V=s+e9hQ?kSEcUXQE{B8%SlWG%#!&;591ufm_xA z=v&ARZzUx)wYH_j7LB>vn(vImXBZ8#*#0&lOlz2#@;W>BOl!Mp`L;1jlbU+TDA&z{ zJ|nCeVirIR!y5F!SQBHe#vkMxkwb+hN&H=w+;IBJN|1m~$?+&??p_B`h!Qo`6R z&=;m+%|PlQ69U;9Q7dQYFF1qJCig{H_vM#7%Axl@AsYWSF#&SD>~r?e3`(k$sK z76)^>hfiJcOtQjxalc{1#wQ@np%B9CslD(RhnHDiyQYrG5+v(`#4KV0JTfpK6~QBb zwwi^R8Rj((?YB6Y$y0le^D`J{p@_;q6e5aUU3I;G-q6A#Iy_v+q$U_lHy{C|5S)9% z!;^*DLU0#UaZsYQ#dz!uSZUP)6fl~Tm30Sj9YmGX6YAmqe$>Hz-C1)Fk)BInM+5r- zQ+DInT;81#KKQ7{j;FtQgH4FB2^hK^89WCDj67A)6hcSFh&+z8f?9qCM`#@OdyfIe zS-m+tg^+v!CqQpsS8II>y zmPzJ(UwD#+lsSZbS;$nm;`XR}rZbs)OX1U~s2GG9dWK zRRg)redVHfsqd*z1u6SUoRXm{nn=DL+3n7#nQz*XI^C`k-4^uFmW7894O_OX#~Mri z~Yo=P|Om!i~q@5nMdUue{c~Xj`iPALiaXn(Kb=|NRz4 zr3^`$kw}9|lcGo^NhM80ku)ozq7WjKBtuClm(Zw0qdC!_G!N2XE`>}DROmcDu6_OP zec$K4e`lSuet(?SUTa^ieQmzq&+vM`UeD<@=;#}%rQr!$x6iHd{-Egnpkit-;tpSf zT-zCYcw_)lw5%PirFC?|re#~VLJ(FxkN=Q_;2R2T>aG^on~zNh9sE@_oJJ4m6W1DN zR)?$^*0+Jb(_9=-ayX=^wEtrL6&W*h0v?>M$m$<@RBCO-sd+D6XuRlGm{o?jqJIww z2M+XaXA|(cAitzarKWbyoW7pd43EiOn;AL?Wd`kP2B`i-U)Q;%qHZvX+|Qqxnv1s2 zZ2t{K>KQY2N(LaZHD9#o+qI2j;;0BRaN?Wz40Q*y1D3W!YWIg}=B{>+MJ>&EHn>EVFUio~4q3_~6D zjL)kX@pj`y27|0D&!$R!-HSr-!BqFx%$%5q7cFW5gKIuKhVKF&+1V!~I@*&!NWqq+ zt=$ap=CJEQ`#q?eDqLJZC}v)KiJSd zqT}9v6YRHa-I~6ubtkD{3?mVsmTWi0WJ!cLD zbh_l1cPU>5EIM(;Oi9_5at64tvx|%Mh79?@aJ+QEf|ZvG0Rj(?eY5w#flQ|l`wkp< z#G!;u59%ZCT+qnnsp0cZ&oVT`d}gt18OB}a6fQRJ`V3eS^@KhOG%^k}sftw^_I6YK+p%vrr zOzYFHA7|8{$yogKv`x6u0ea_0vc9qk%|K*4!v zgUljO`;sHjTKuQY-v!Z$QTUf$2V%EeH)QH>3R}f7%Dud~>6b9Uf5K`>{)wVuz#NqK zs6t*pfBqF|T($)HTc6Qt(z0Txx#@$p34vz_gooAR%`-ODPy4ke7Xgx8UuPIvmCbUvUM)v>?;Mr*Fid*tQ zIozl6T+J+$d-u*p zlOwBy|DGun%u+^zF>kOhy>xx&6TMY;1h@K(BAnUR<)?cangK2}To-;=MybD_EraoXMeeWurxZO_tIy7{zsQM_6475|0Y$Po%yo9C?P zEeyH@ggDlCFC3j`eE-p*Sx8-z9ts&b_-^zc{Vht*tX``#Uwhj)2cPou$F~;+j9<`L zsnTob+JK2kr<=Eph~GbUbc&?ob$8W)7rd{pm;Kzept0id2e(Ms;vD6*hllMcQatm{ z`&M}a!nNY`Q62G_{5|oWx`BS}znOSl-4`VSS;ISQTDfuz4J3~juDcF@Myv@Q?igki zw_;(1#>=J2iNk-lIPCf!qu1Wy-28nq`e~1pOMU|zH@rJwu2i#7v#O#e2!`46YOfC} zaa**yYh+ZdQa&{ChepKCSg+8pYlEkSZC&+iu9F1ugIa{R*oR+CkqQlzFgkbfA|{rR z8X6%<7ah4?JfFaPP=$iFZu#=~lgA5=_gBvS;KU%qAJ5kB1q`03KwWG|l;y?X?8%d7 zp3c*Z$WGH-F)`R&-+)U?E>Mu$B8otOkz7-%O|o;bxZ@g?)qnkSp+7lXdH!PdqhZz7 znzNNo_L!$>5O7qz+VV`Yv&M&@GnSGdGOai-{nvh31>ZSS5*@65+t`xtf~+%ci4y@I zMWjySfE_yN2mdRJ$Fb#G?b#-}4C$MfsIqyLIn+?8QG?04Q=D9pJBVj9r-M zA=Q6Au17BE`{X}OggGbRM$v`}DZ~sW4<9`u6bRA?L|=%n99hnRBT)aKA0QKt9v#TG z*&1Dr%H!V$!a-AZ`aTzwOw>q758wlCED2S7TkjnzTFW!t3z7Rlr_oP!^uC#s!bZD>UksxKLH<=Zl^` z(&71A|0=qB8*D+DoHXQ7{v6A@h#zlqq~Gx*OnZ z63(0NNXNR+bKzvLARqqv^@))tnnQ=azPxsRlf(CK$3W$>+P;s<3&-Tk)lv4{{^iYw z>gtUS4v7f~Ru&e5@^VgRe-I^AxjZ7W_=VsS@KY{l7x+!?NZPJTp zYyX;`tLl43KJ$THX7HY8RSPQ)6wEu+;g2}JCC+0@4EcIa#l9Fcu{HhqUHm7rv}sR! z9WUyg@$E~%cf;+ziAuc-G&`{~T$X%Ck$61T1S&)S1`4=!G3UZyiQcYgAeXY=C{>aU%DE&;krRtY8m_qV@dN9Yzt)KW$_Ig7{0Dy)V)*QTqxoDyht6 z#YPyVsGzW9#fnTi%;$E^E8Jo@{LS zN2$w)k_UyiNDC=rUDH?r4?S*asEE-n~$MRUm)hWnB0;DZ}^r(NusK z>1_m{F~abr^_3LM<}^)56=_j;-i6e#q{15BWW+TOEUaj{QF2kD;E`vXgyg!pq%p%a zwEeLZ+iZGr!0Zb3UY`aJek!q{aiH~6)y*{}Z|8fhn>CQ)Lt2tD4#!1ku?x_N2*Gb`}?Z z{q}A7m$}C#pky~%F;PXOjOhnBhbIp_mnIp0XF7-Lqxh%m@DYJu*=bE8A|0(g5}y?- zR#<5+J#h>@;$dP>L5=A7;*%k0)l81m^KnX-D+F$%x`2V9VAAcXIbp&pf~BrrrH$H( z^>Bp3a4rF4V{RX$UjnlS3&yL8C}8#qM2*{k!9f5B%f4{tj5c#6gUXP^UAP(G=9wI^ zPN3dtbWI0{oNcI~<+^j{qsXx|S|k8B(3FG1tAt1@$Kf=V+1XqlQ;|KRxuUjKFh-`6 zfWx0XGQ3`m-@d8#06yD^oSuAn8u7ruZa&$r{B|k^urGQBVIhROIaxU`*6A}h^7!NC zz(JXN?_NMoDFs$-%$N{u{U5*EOK5#CweYEwO;UkvGg zWkYufsm`m&9VP*ca|bvX$t))t@`Il|AhHH%hVgJBZR6C+wtCt3 zNs*&^lQRQ$9nx>W01u|u*&t zOS%IY1LS$kXpn3BgM%x#Xj8;6cwmsuzjyDTZWg5z=>?zz(HM{HwCIaIoP9|GD!VKW zqxxfpLym{Fh{0pvZ)P(Ys>*(@sr(+&z8ZSB960hMB9T;)6+lX)LT~0_FfA{N#2oHLLTU}FQ?`ujTF`{bD z34v4geM0Od3HTF>-RV<(WEcs)e*Zq?KAx<8ii*CzzChc`zL<4-^w(DE^QFY_8Ux_| zu4JVS3U)q5PsqQA{CDpRsm?hsU$Tp5%(!v#%Hc<)BXLnaKE#5`-+g-NF%TW@$O+iWjp9 z05mRvdQ4aAckPBpKG&D-j$fY@!cW&=M@1*frg7)n*Lul5}AZQ&i&XY0o zqM%>a&hH!ks8z}g9|SIO?aGzWktXTGf48!!@$mt_zxOX4`f{MO#1T63MFq2Pa1(V@k1;S@YOFAa&eF#LPDUwg-43ta z27@v?&B%W?O|taslXc_V*I4z;8~ea>naKzRbu~5K;OMCysq;HI23jl0lvs>$jWBMl zo)VFOFn>Uh;i}P!FoVe4dHj_=!jq!gnj{Y){iygSkMCJ21<6YxZt}PzD@s`aZhu2CWMp|a6mG?DuOgmTQ!&Nbj zAwE5~e^o`)Y!!?6+PT|RD$>ZS2fVc!d(~6pGRC1_jKJ1%ji5i z7H5fBspa8@0KpHD6VB=gGor=I+hyjttxx?oR8$Q#tTA=y75I`2qN)9B`etS^erf^HF&VkA>j(Lp(TFcd zMWz#gb26KvHQeF{MU9l*J9j$Q3HqsFTdJ;Op#+dFDe-clGXP6V9W(*01{ffYkUpo4 zjf@1^)67i8jCKd<2yVb4yb;wKzXz4a{FPAr<3F$8Bp8)bl4RQ&5p83Drm^}&dTlHr?9R)CGw`*%KEJ9IlW9529i@c zb8=P1eYIuJ7Gi0rEpR^LazfeLNPAU+xwoz!F)-5* zlN6V_74%?mj|4f0iHQOA4V953m;Z*9=9sS)97VJ{g3J#I1UWJv$)lMRIA!eEuP|m% zS12epQ`*0M%iZX?lEKuqO}ed)9=IX=1ju!t^KL5vBf50y0>0Y2>mDdJYG`f4?>M{& zw7mRpT6Z>rBsr#7k)ai5XJ?0H5b%2Zq)9s{^gY$S?MNuc`zmX|=i1`r#BHYm$^Hz| zfVGbp=1MfEB#{^%=%2Uda-Lly66N1JyJ+YRtfP4VzNam)M74*D6ImQFWDR12COO$L zEkN~c-##JuF7C>|O@a~2x@qd^72mmYijMr;Ipd-7a?_65gV5ehI!SA8KH`qIBVNDt z>+3eE-v5uX{U>99@0l(;+zayDr6;r+4NEy^;aJcsvuSHvLKju7y^Eg4x#|Xm{z zPH{yb33jD7^*H`6SO&2@{B0Ck`H)aB{!dS0@ZXO7JCzi*6H+LT$(7W6L6=ccv1s8! zz~&WY+izIaa*=UmBaDP=B3&59)s;Rf^Hs_$U;@_jVgH3-?cYP4cNksNT1W*Pybq6z z$${CNcbY72IHNncxkh^e{u8Aem#I0-2PLPS{*ASd2l_q%+CtRnHu7!tKaJyHkNRwh z#0TY@ofOs|Fnu%7Ki4)?v}{tVx|;Hg`1<8)Up+>IFNs!h`F73dy%JW=sk}+9uFb+W zHr*0JN!HohOLgtqw|-9Iva9zWKHT*5+$Yew7c^!V2~JnerT#{Jt;<-5)tDqr>m zJD0L=MnPc>@F+qYf*q}GhygOs62KaYQ|A8o3& z;)!+o(O%Q5`llW^j;EOCJOy1qo}IAMjm~*gU805=1pemr>p?3}FA`6POgIa0!^_Hr zsS$T2g6E8k_m3XUv$p<&uDjpCu|6@X|M5%v=5;P|L4`Kt*h8EqcF;e(YuqBjXF}3! zvO7XLDFhBt2!x;y9-u=PGC`@}IN4Ef=qFCFU1ZeAkwFIz%$qakzx?2T<5xSky8SOg zcgeqv`TsWAgG$t@RsJx_;y;g+f|budxx~Q{5N+oc7j0xwx@qZYX$mI+7nI!QYs0lf zklt7g5e61-pINl~;6a%knL{Tl0xvRTtlhBT*OH4x$FbePfq8ppzrENVHtT0Fs`#z) z%PUVj(|jiXksWUO^|)Gt-q8`Z=MEm5d^WGsl^gbbR z7iV3$BCqbZXV0OC2xyqr3roIS#X&)G$BR{mO@~@tvYD2+mQ@sFZn%1+|8FLG|0k4H zsumexLnG19=>4n+BcmoD+XmG;Z%X&VH?Por6Z&S&fMMfq)LS^9>yEBCIUx7L!ba;J zv*#8iYgW#7FYZ&3zF|+e%F`K}+H9SZ2}8qLf? zi;r#Hop@60(Jbp*MfT#87gfN!bRayGVpl6B3tz0r0y6iHlx^3u51jj^T$$$hcyXv= z%!5hCk1hY{yua7QiqK^{Jas~iKepl}F<$K0wAgrV_1kmx2W10qPajl;LP|oypMXDa z{n5D*wf;crC!dL(5m!s4H&}e1`YurQ zlN&$P|665r*4gWUGwlat%MW;yQJK5aR<7*A)!uzK3~#em`LLt)?b+($&!0X~>7B51 z%Xj@i?i=_dhvJNjjO1&hJpgK8QnukvC5|Qc_HEgbx@uu5o8M3F*)xp(_{b4O?m}lD zl&^+S{bXcp92|nL3(2RZrb;{BqfsGxf@PNI?6G{Y13dLe7eY-*+Nr29!w>p(cp}hiByx{FUjjj$Amg*=XqEp>}HUj-Jxgtjr+%p8% zg)Y_GQld|rL{TOW7RAyI-6DWP)mZsH0KhB_ij9wdiMtJn5$tP-k*^G7;Y`Wd-M^{a zQfK`G|8Ci)cGmqrXm^17=bRHXF9c+QLX)ivQh?;%V)=4n?>}KsD9_=bjWZM@Q{(6F z-)saC*6lC_0dCV>&{E`fNG=|h$v$e2dAa`uP>`h)WHl-p)!1R$d+o)`3lD^O9red`8|7n;H( z0Pdi5w2_L>6xYV)1wpWc$c!~=C+=~Y9nl8dR;0ViDk#vP_Tjl?*}-#i)p)buW^i5|Xm_^{VvFed z^%~oDp;17HgrgT^6weZd$p;J1gLw!+8}!El)U{$o5icL0z0YMHHyH!k)w(1bUO^k- z&tLjVH+FngD=MP93yvUuB5?nH@)`c{Z!u=I@7cIvL^^i1pVcFEuu#;}UH)>AQ1;E;un*AY+3dK3 z%U}e@lqW9HDt>65`$~E7IJ1R;GAiA73~(#?hdyVuYLEG7}^P*akP8~?Q)12-3bR2Dxn4iVE9fBro23<1(N z$PYYW7|KsjP!MuFVTYA`6*R5b>U$aeAtFBCCsbP=jq399u#gbt9c_X4{~7EwqoS-0-q-QSYlnn8edw!#nfv?QT1p(r+mj2(;=jkq+UQ&N?#9jOUjLrl+>WbVC zndix$pi{#vSWU>fhj*#ly44{Oc=77hkIz+9=G<_cQpSCQ{Cc|(F2{#Y2ReCF=9GdL z!6V};+r;>UX*X_syJ|z#F*pPB?ojfw=iFayUxqUNGieVF@=O!Sv&iuC^p5RW!fAj3wEjz7-i#1KN1~w;^N9)T48BUjM_}PMN0+%t0a4YAiqTyxg zYS)-Z0-{OLKpr8REp2e-?o&sE;F8LneV!Jy@5j0MyVEaBfq8b| zP>ny`^Tg!kf7OpvvOP>BM6|^9C63M(THC8O{*f{;`Y+&4ng!s_1Woh^e|A0|GJGLh zgkzs7N*NMS8F-uP9v)Td17_Oj>Um+&0`6S(J2{OT!>2d?KcG9u8l5QrRSPdjnq>`^ zbpq6@n58n?#aGVZ0U0vd6n&T+HtWfJ&QRH9`)#f2U>V7PXdzyo*$=Y``reU4hw_ST z4$j`*v`j$1Y|N21GB-SAu|}xkb+sk&gME$UR=quQJvzkKc2B+AyDzory_Oj3o!YAN z(6qY9Hq0dC{fU0*uZr}KPlCSXsfQ;x}=KZFEaAxjY}4ybp{L=d1!bqsHm;? zoNpH_Z{4P04q}M|g|b0h4j5_0?hYAMvu@kDeJz%4ibl$AFl>PIKrU6{`SUqb=G<6X zKezKCSz%YSWya2{e+N>akOs(sT-}A2`D{7!-jm|Ngz&R)Vb18#?#jMH56z`h^7p(j zTj^G{Liohl17?rB7^~KM--x?i^SAmZ`%S@)VAeAY(6Or8dZYqCntJ2|JFOva6Zv>l zgV0s}0T=xy`s$2{(|jNN6}2DR+l@9{=qO0>uh>`Io9cOM9UGK$uN^+TgbalhV-koU z#|raTzezg%?bsIosZLtlp=VaOeELaIkH(Kuwf|@VM3U40TDih6o|*LbYf0Qv`R?^A-FqJYbx}Q?~{WbrR~7E1EzN&TjJcz z3s%|rNo9J+oI4(KEYs{T{H|6=p0GMMaM_4+>Hpt>je>h!GsKGYnLnsfyH!H>(5v{ z7>OZ~Yj@7#_+u&`vUCwr7fL5Rj4Rfbi-|7>AAU&_h8)S0h_|8)m%0;4Nn^%DbPkgW z`gMV*3V!CKNwOLY0YL7k^(B?5mSqf9;%=&ihd7DA1B=VI3M-`3-G9m*Zr6qTO;ODAlQB^B4%l9*{HJ*A z4a=z~buY^F-4J-{z^T>-^Qz}36;m?iDF513up#Z@{8PhE81>s-H5X%|bhix^nbMeUSLw0zPUtl4{!}1 z9$l>fjWC+oCN=ZHJ*Mmk&iubiRBB^;o?SGIHW!}E%c@;BUZ)kXeZ_(sZQ-hhEy4R! z(@%#T(^9sa*F4$(iclG|NTAEQAek*h2>Q~ZSSF=I8D5`XM8;MOJZIuBK z1S8MRY1*`GoKgW(y_p{%M-klbe0gp$yaM!GE7QV|Kkk{N6?%Gl@{yT;2=3>gFRLCy zLVak9+>i$E2YeBhj(=ZP%KS%y34%+cCD7;;+);pPgFI6z{|~}k+NRyh=rO;#>e5!x zarf{S7Qy%GwdXQ~Fv$&6`qJ9kd8eNPg)9>y8uLj93tum<4{9h{kU??b3ot+kZi zU0y3~@Ckg4VL0RPm+!41vz(lg|6bzBd#w5#@)6WXJa5qJF-9)zot*ZoaP=@vMK$l_@>;-d4>PNooDO zD;Fkn(yUoC?B`U4b~*XZPt}U{!0Ys4-KC|8^mGrFXkltZON``CY}aQmFApz?U-;ksjGUZr}GD^eh_k_ifVKGi+T8zG*qkN|>08kD%%8z*9dv{_L`5 zevPDccGKsTzwZBa(zNZ@iYH(UG6wWLQ$CU(^ocEuAA7vm)(|gIm2WdNkHb^g!AL?7 znOEKI9u|3lQgF;rF@c7JGi9{AU69?vfcrAb-F;kCwkbGx-(*EzGW zsMnd>=e`}7J~i=Lns{95gg3EH8)|x%xg8y#qboCg_Rj~3Cygp!rJR&j9NZEsYcN1U zVei#GS9&(dU(~yul0JUB`}r}$q7A=&zF0K=KbsO*XZ40zj?5SEdWo}}>rR1<-2<#e zD`BMxrz_0+v?~s2W~~)0Ue3CZSKdI20Gg)Qv*$uk(QDN&0|ln?&K-6g?t=b*?~IW5 zzHL&EK~vcQ@4s-u=69rbRet_F>B`F*vCclSyu#Oa=n6S~Sa7KQ>}x3Ae0#K782P0~ zqoQbTTCY_L5+qrz3bMx zD*XezVW64%@4%a~FY!FpwY4XXAE$Z{s7Jav&cCKML!H-5QT&CjhY^R*1F9jhA;X~t z6izPi137-nuX8!DgqWv6h61I0lC zx6RbC(k#Girz9igdRut3nwB{{otJg+e!pH9Gk$eduCrdUJ9xkEsni!HKi_PhJHXas zZmIcPujkv_1@bS+vT4qv==ZD_Q&7~|nUP2`{4!$+B85;j_SD~fayM*sXS z3mheEYWJ!f^lOc#f6kcEqsgIlNAfRY{cA2u1XLzWP;eldbxl$F4h{&WMz^%9ePyP% z%OW!LN@S+^4L;LG;| zA0HhbE+eU;($+U^DCuZv(@xEg&P3Dd;o(8o7#Z1T;J~66FMKbP?h0$e4F&J*3Bky! zHG~*we@-TFxbgF$XK`>ar@>f3k*hx7T$Edt&qLe>B*U=p`-HMc!Y#FgZHPbUMhPZ{ zfnlTEAnh&ss&dM{_v{*x3^BLP3hE1xcI4neLG3Y6$CC3m(K@S*a2Oh8b4i{HNhU3NEE}L2AohWo z2N-Iyym$XTkjV+wD1moHZ>)EYGi3$Bw zQzIoUZGCmaAxJMggm5jWAp_?0Ts+yOHmV{|5QySzPcpY(yVhTZeoDuwLUPv*;U)6i zooyYqsX`KyRgk)8mp2bpN=?L)I<9_FHO^#oyR`&~@n=CkJMTE?5MB%Asl6F%z>t`c z09m*!fM;=rLx{n7n44R{NQfn-@yCyWkiK@C8PjZRls3=%&bQit&0Xk=uuuxBWo*+u zEl{07tP&*y_RAaAfO2} zM=OoEN_b&$yaqm>t%|VviI90qyd%QK_Ze;lKof2IKqA1YxtAW~=MuEQZ$f|!>Nr?4 z)%Ny2kR93_AUID3Pd-(m&SJFM1_9>3vkMD%@cwc0ITg9xz>jnmxxq8z&Df->L+~~5 z73lh@xHxj-<+^`^Fh^0uA5NcviMMT&1ZoU*8z4rsj?2ZAl*ltjklNva1w#Tx24H1s zR0X|7&hiH6d{?& zxW6+fT+77oXsq5aTv%9?YKBub@x)DJ=R$MfZyL7`35o_oM~?i$_%^QZ7vgohNlPc5 zJsZjW%*@<{K$XhJN~{W7Igk*9lViq=nc}zUhBG3%Zpv{ueUMAC*UAn0TYDn$iyRny zM@p7t486fR;(PTl)4~nZci>aSJYDB{43O~dOA64ctAgfx>C#G0+e3$X4HA}|>HV%5 z8zrnwsjQr}^#EBB4&AyY9D**<=`;mE5ngtYJ zsBTSc#YDNb)5A(}kHJ|k1~s*zmgjTt2v|Fwbk_O81psJo-?}v}KE8Csjv~#%6-~7} zcJ4Gg`@$jfXXj$ls_$|&_L?;p_ia19h#-U1CQkvVf4^EB19IsWyOxE$B*h_gDjQsR z*ywMNae@Qf`aM-v5Lh34{@1rJlAG>q^K*5Uc5RrT9r|F>zT)M|*MGz~_`iEP^WlhI z+KN34-}~X93S%M8$xVw8s*z3uHt#}Tz)~gEt)O+t34<7u6S|WijLl~Z$1lZBo9p|@3siLYTg_FHRowG5?t+tM)}4Ol z-q6_5?uV*hHzoZ&d9dfs?UR96EdBbEC=--qAQLAfip$Ru1M7Ghj*9RIbQ((cVUEH{ ziJu5r|0zw`;!}=;)NW zJUOHG{i@4_p)M~9N@N&c4@g75NK z)ZTbr5f( zULp3Gb8aoZH8C(Y5cDGbVvWQgckXpz-S<}k8+vXtlw5FjQU9}Oh1b$qBC1t>I#%Cg zNa#XTsto17$F+6Ob3byVB5}X!BJN4{>SEn#IoJ?x!F8 z+@AL%)n)#|gde6rHjT)|~BAH(@2`X}Eb^&OoO{SHD3x;2id zu6R4y9WVQ3xkhqt>%*y&{c{ShZj4w|`ygUUV$p$qPeP;L{q+3tNcZB|Shwb|?sD=n zl4h%WPLq`xv_Sm6t+(IuxDgwAoi{ZNoI{M)tuff0Pk5_CX}dmh$Ch^_2k< ziqY0xuceRy&xd0kJg(5JFXOQkdY0rf;Z{z^QzBzjt@`{x{tYErxXAN#oNS7@!onDAdNMK7Clh9n%*YDm5 zBntTN>aI4tF(Q$Pv&6)un0sw4>gt1pSTjlAr1$eAL^c~YLQT20G&?pQVkgwlp#cNL z{H;|JU(gS2adys8bM&5eUtBbFc<|=S8t%D#Kw~ADzm^A`(frI$BfG2c%K9)UYq*bq zSKrkXp1peImo+%aUsmg5)+oOtTG{LTEM-BUz4+oV?o_`gyQ|cE$v*7is6OUMcK46cQqY|CHnu(d=RD(^8a5YD7h> z71@%f9&IyZhROm?MUj$>B$yK#8ZwGIp0^3zSaW#DU^0Q5-T;wx*nF(78r#Hg$~~v( z&yL<-4bBAP!`67~fTm*&Fep0O+Pt*@%^gMT6M0u$T!-F&&``3>UcX3q_s)uwEdAs? zJFUaP8>N1N2uUPv_0Md}j|?4{!!{ojP$R8w$P8yZmg~Cbh}P$=smOB9_%i9;+--NH z%K*cLgU@YTM3;CvG4b)+xBZM(E_bk1riE)uL$QN@j(YL=(n)7Z}XE|W?lh?=-7c9+te9ypN2(HarqU+r09&6s;5?)0fsYi_)= zRuuMLeg2HlptqzreKC{d^aHN&+jL4-($e~6sdo{PX!i*lwBxpI=){<+LJu9fdhMF# zh!MVT#g{V%!?)2)Lih@AdVRg%A$<7okYNyM4)4hsWW7BRv2(bCoL>ro-w`303t~pR z&Fi15@jLqlts$S+N}(nj7T#{n8bQ>6CvW~K{{?H6JX9O#O zl7Yvt;NteKb(#^DR#qg&-z?oi=TEPSL%`qiz<5=rXNEJQxpVPT|ERC${r2j%&u~$} z8S?cgKOhlM_1xsp3)OQ+h`TAWFvg~47|+jv_4f95N#-ndmys0bF3|`a-DF8}dHxeo z^pmC{H|aO}(5MrJy(}oW4s{AAJNbBzLmELlc>2UUHf$bU3ySI$wc?TUxRQ}$4+D+A z&OJHMsQiL?{%@Ne-bPC4H78Fz9K2X6Bi%b{`4ICnV>-ySJsiUT?KVOnCfb4>45QBfw^F(KEYb7%NVHnq>3F{5PZBs3!qC^JbF1RG}t z;#F4t z+tNs@XIJT0ZETrrxWLI+URinfgOf0!vn=|xWB*VZtXsDXz!G@TwR;UCBjADA%@0nb zQ2XrOy#&GO(xomC>s|UCk@|>X6FiFju{7OeVRF&w*PAU7Mqs$W#(FP5Ki%m=*QtTi zVXw%-;6Z>r-ea(mRs_f3;gMdCg(VtI<-vLY9oLXT*VGWN>m#;Mn7{2GJ7Rk3i3MndId;|4$jt< z5Gy)52sMkM|5j z7)O|7diES!xV!y{9W!aau=UNXHrR4j!ur@f@h1EA>r~y{T03|?*qf!vcHEt(N|PC< z_bG2Y6dq34d3==Igmcxm=9DJ}3ME%)4@{&&PY#Im?O6K#u1M5TB7V5XV53golfQc= z>{Gs^zS*V{c?Ok;=KwRhQcfSAkI|u6V;jE!q&;2fzki71jtKEE64;5((E`_(DfUt6q3J z?O$JxTXDVjI9H#4zN}KwT+=K6^WRiw>O{#H7I*rS*{!YS((0aSPjtG}P4_sH$KMSm zMdm52m1jda@3VkM z^?>(LvX*MS#+x29cfV}mF5$Cauid(JihcU*0MHQZIBkAKwp3d{QZ%;O{pZmOK$O5X zsau{Y@XfYyM=vE35f#Hm7+_u~Cr-G$!yCl~5gLJGsF1z9yt1#N_&&krPJBql_Xp`X zZYs`v5AOcp!A9HL{X5b0q5ZEP8}Wcw42gr0u`%lmj#*{XNWOpibPTCqWC$j&mYpU1 z`rAWPR16ZVEG-2@7U+{w!xP7gu3IGDdie&j9eR3%X_jQ@jafQ_dz)){U-D^>l6s?F ziE1-KXRq-Z6I|IeH7VUfEp6GE#5C}gz9bZ1!kQGs*M$Jl!Up{j(elj`SNCc8J(&y#~LXd@@ztad&WBEenMK1)r{#aCA!4-h54dLyO%mq|nLD?YNPU|; zkPIFYH8Z~kCEn*VXQ*DRkHcWkXyWhdyMN{H@`{hfUU_x|7+SWkTU)bxRIA#Hf`Z~3 zj$*rt=(Fh)A|neKd(@Yn8?!QM;9|MGb`B1ngl{G}@om_A&p~kWrn#yd|2;xO<7`rr zqi(Ju8R3sG(2{5DwzH^p=@{YNSkX`Z3)t(HM_YGy401moUca_dd(vscbqSB66X&H^ z2M$nE5p8~AmTfh@s>#LZs%K!N5zP;$22iPbh!LDYP+(wA+6m4oq@2L}+(trdyGTpV zpFKPKha$O8ytOM(bCZ7rB}=ohd-pBGu`9m-Z*w$v)#FP8^OYs`8#L$-Za&Hz?m+7P z;qdVOMD)`By@G+EfZ;_|2|?CJ@+08{NaJ!!_v^}ktg5+bffq^Tnzti0@@c)>eZ2lA*%>S7SXA^^FmXE*!h1(yTupB~cH}vR#$ap!3IcDYK^VVub@|K{; zsHv-y5Fr=N&CR`;!*Rnk^FPjRsow0jLZN{I5Df(#v#?50dj z7N{xmGIj3TcFFtd$Bxbe3I}RF46Z$Kl8XkrB=zjN;m^^-9;4k2pT> z56mxw#7>q;p;=(W-1pG<7Xnj-5$0Ra%JA@CG*2?XG;Hk#I>xTEPxHF(09PMq$PO7nS2GJGJqEtZd5CFh~y<42}}Iip^moEb3uxK>t?P5Q(+#k|O$QP!FL8<%m}ZlHaEmf<5|xL>UhxTgyN z`;Tl!(}|!Hf}B9$zVG^=_3TK&NOmZs&$hDedEgF=TI5%cBLj}~PDJxr1D7YKj)o!S zX~Dn6HyNWD(amr7ywhT$(W}Dlq^gdM`f~RCdH?oZhfHtm7Z$wB&1*pONLV3;yMsvE z`J+_JG@i)Zz7Y`-(%rfViRD{AJ%JA6gtpm1Hw1t`b(~xd<14Y@Fdo1TXDGdtuJ|mJ z$@vQ!Y6{1?EAKIgoaDU5!(+-40c(-lD|Cep6O@&KLpX-ZP@?hlTV3Cb`&G=q8pcBmJJ?ZlgN0aFgu-12 zVW#kvev!&!5@EU}jf)?^7tR%sb}6 zzZoRr<)uUixzNxYEZVStEz`Sq!Lw&&RaGzn%h>>CXP0X;x;{@8#|4iPFRs7TTWq0- zokU(NCVYKKSzTSia+fJXkgV)VSYuODkq8?j3?&TpT{ahXmo_pnVGpg)Bkid|59l*W zT%?UO%hHmBK1&usp)(Wjn2nj-<|PLhJyBAJ>-f!Z&}k{|=b$z^8;1R!vxa8s>Gq3r zOx1L4;5$(jnJ!?I#G^^Wwu?&{P__G@Q5=`xPfMjmVkwG)rj&WCK48=>aN(n{aSuB$xezFeFi0K9J$`LC}Hp3JSZmCQ6)L!N@p7$HMArf zp#+AHDN_dMc-YwJ{~Bj&`U1nA$r^fO?Y_?o3jFs><{0Em&&co~IQLm~99TO=jxqOH z^zMiaMym~IHZOHq^~4x?m$!V?Ej$z-4@QuO$ls?BcgE38<`fuzjL2+Rgq`2zDQMVQ z24ocF52x-)zl|eCP~PoSNsi%Qz9SNm;70$^Ne@?v`;n&rwbq6Pr-inq;j=CE!EpSLE|&3P zZCi_DV#TKDy4R?x#fks*6^*iv-39i->@mo`e&>Ue#R!Fu3wvlNe%yt{ht`x4HRt~Q zDq1C`S-`y4=l08buNReAe{yU1>HaAQX|0bz3>%mC9pCLz+@K#)^6=It6_7LPY%TpO zJD}h0#qI~578Yv! zu$Vb>^`en7l4Y@luLu9(-~?kLLZPcjUo9;DvHp~()w`eSp7ZH6U8vFqQbM0B^1cnq z|1N!eNcsqom)EhkhL3g_$^_Vz)jI!3aV&^@-WE2c)OO$4X1ytyGm;05-nHV^u`6^v zH0+FanjQ~gQ{QocaApAeGUcHXyAB)9>ndG)-Op%V=7{av)WX=I+aYP$r;a^3Pkz!o z(&a~8aj?tm?C2@QHtxGLUVo&023|H`?I!@)zK{3^IvV0uzlVrXt}P) zckF5JyPhMyE8I%&G%DAvXWsZt6$!(fJr72fEbZt$+SN>^#xWw@OmFbuoQDs)AIt63S)-@uuLRxH zho|ag6FHE)^}V)_Kbacm|8R{p_!1K~03>Fs!OIGcnHwP_Z99-V(D2@oKbeZQ_r+uT zZ0;mNx($E2q9&w2#;pw-ZW)Gl5CJdGP-)<3T&1if%F#QgI77t|wI=V+s%qaIRN4Fa#)T_Zu-S?H_tK?(`b1(f zm6}?^AX=Q_tnQO7Gn`$bgTwNo-5a|sp*=ts0+!|d*U6I{HXW0Omz^6Xtr%XprGZy>kGw2?(8Tb%PD$z+0~GiGq$J+7oJ@-bf7RT%j9_9*-o!^ zv$xsBsbv>Dqc6YRyQsx%^wPP_qq^UJeB0JC&>+A=OeL=H<|#*ZYC3exwS=AE z^=TNwC2?4{4itWyvvarZ-N~Ar9R1ju2tEIt>i6e&%`-R*P1tzFEuZP|0)$segG^G=!F>>mXCWBIxvl5hs)C#%{ z=#2OU<-ln!HLn}qI%MJZGJ`dF`SQ?hTS1)gO4tVT-+$J$X&tOg$DK?y>~!p*Us^6a6_?ZK+Qo@U zGBqnr=FIU)I?uDBgAgaAJ?Pj#N#^F&-_Pvd8mr2!^y}R0n+b99q%-4K(t@+h+#op+ zVb4BqJ(Is6=w^6C#AWjY;v@EMN^u4pL{W<_olT6K9LVr%&|3}A?D^}=K^{&f=6YA% z&tZSHPZH5x_HA#|S1Z?;Chj`VPi(kCPYZivGuaOxFAeS-o;F^$-;}AVPL%8#d3M9r zv-vB;+Buf7?z8FAK?eeFzsYcO(bvC;4>e$hEr>LZ&7_~JFr9+uzr}HmB#;({M4lNl z#CIKXMlN=Eq$Nu*pJIyzk)X2J=h`4bZT_OeAW`Cv3t>*!jR~5X2lSO*7ZwU>6SP-g z@_glIqb`wy-i${E8#t5-A{{n{j0wJsNtm7h)`jVdI3+d}!wdKfxT}ov0EU*3b&@Fj z7RCVjCdEJI-{3iAUlt%bEi^-G_$BW=8^#v~u}UUkOcKS##W2PF`UPgKR#!ibl8hdX zdcrJUa#?>BLGZzbwh$?Xj%8XFU|#%(`%Fcdp45jTxEq#KskQguENVK)rKgVHS*t+Ngk z%Qw#zo;Yk0M0Ulp`j-Rhpwu)2ts(Oyr=QWEQ5C z?#-R(fL5~$wThO^)PfwWtc=BeS`{70O27yu)va5R7F9oicC# zxVmAGHElPxrH`LJ!n)7WdgtQOUQht*cbYC`8My? zZ__~=lIwP7na*32e7jF4mN|0>JS`}Qwx1?5SO%-)!viOueSNvqI=*FZOiZcbHC+`! zX9z&0-ng&lV+Lm7uVd^P4w0`C2ETvhF~!7{%h~pYqz#@-w?ej@6No&Ofs4P~IM+=$ zk3EO0ey|f0$t+77XI~rk@w~SJ?{J7_mxT{B&5uxB2o#3ND>uEGKFX| zE~R8Bv>G%Rk|b23L}W~bM3FQ}=CKSZN+c>7Lh5;4t+mg&&wcN6Kj+!^@XzC~z1H44 zzpmf+`g}j1_w+fCp%YQx?TLp$N!_hw(|)gYNqZNoWj?9nBMrq@E{dLU%4e`)*$lF1r7^2qmi@RipRA?prIv@Z#?F!kp zXoM(Vlu>BeuI`ucH@Lk>A2w*vJCNB%kDj6Aj6!u(Qdg%uWNS&EAQOw})B8Ps3?hg) zV@+dpPI)F<>nN)rx^|z`Dw0~MpN!l8pnfJlACz)3Xpep8L2CZ7gYVvsayxDH>*un~ z#%h)Cy`NvQJ>Rg(xW*|!JI#3NhE!?gk;p0e(2|l}FPg~<2#4^NoS}wO5T_hv&_qw4 zdF6g5H8dbFD>G+CWIIqnwgd;0{RhlrgJJ51w(`Y_25olj9w2)h?I5RKSX@MCNDBtyDPK^Ug2 zW*dpdl+Men*GFT#*-Rd+5F^$CzX;(yn?Z~-CmWv4Uj8_UqqOy6WH^c7o9hnGeEY3m zhONi=VO568vX&zXgC6`?zwo!JYj^*hvL}+9$1a|@LpI!eM0Wfgbo#8QCnwOiv0TPh zgylPS4BfWJaV$oBoxy|K2+*2;BK`(HLO|?X+?@N%)ly>(xFx+N!$()|_XhEVF9TfH zHDEd;w+CeV)2poUmuy1YAK5s|aqMufW6C?$J7@(CvwE@@5X;U^P5|YiZVn$g@*on# zz^^MU>tZ^JZ$m_0x~ZYp*6EAd44hcLY5Rk|EvZu3m*=X04kiwH$-+`!=AzqY~dDqPHN z!qQ7?WDMt$j>6T>CPOQ$B(6r}K~NTr;?9WV(M$2*4b|2T9^TCGzi{^Kqpkmg##b%P zPx;X|Zw?+mzNM}_2bf8~=mBHE`@w`>T2d0t#1a)XYO$vmy$=2*vwnY)Y=dK4rUS1W zLbuT@cS2`_MzB|}=MNtS95gv zP+%Zy910&kM5OhFPF>8F63TwnX6a~ZN(k^zKN}mh*tU-9ufM#gelIAPTDy{$h2aW* zF#CR|J=J`03P3V6Dv_}5l4dE-h!!WaGB~m7YOqz{LaW%Z+vaXvypE{`oixY&8#;03 zkYUl5G~S&$cI@Nbfe8cM4?VtZ;npW34+QO4z6neeU3_5Y0ZZ5I0u2Gc%eh;S zC|2TrnG-q3z>DB%+kJq?(z z;q6Iod`tEF_ZC)GiYuphoLRgs^wqzedox4h4YGpYJ;UuK#d}_zl$oQYu+ZCBDXQtc zy6>{T2pmL_*v;8sK-apSycNJ}7I*^pBtAqN_MGPe0E{vU@xV-%IS&Y19gd|4$oE`H zP4^*lb`@5@DW3jD+7zP%?f8N$pWnOYij36p<6F0HKm71LQUC&gR?;4yCLUHyLnXP5 zc?HUn7w%}5CTmb=ureFA7Zeva5*fdNTLU_0&)&TdV4{aOCE6S^X9Ly&HWfrh&LxJM zQtn_)JHojo0v6mDe4KHEmDPjadQK5(8(u(^d6ZH863+ei5uqi^mvBQ zk8ENX%D!CbeNIdm;!bt=b8Fr7JXm#>Zx*!)Hh|6?hYebCn!z(<+SzTUmC`ns4>&s_?{e`9ef zk8+oj@!h_|_5X&|FJBh(*!b^xj*KSjYfGo8h9{px*3Nf92S%vmS{4&G7IpHGg83$K zit&~;b(0exaw9oH@-#!DE?K-dc&Zu^P-0aep?<$rqTBPdX{>V7(qgCY`HL4Pb_8aJ z<^@onc+mZlozi`a(gS#u_EIKb=`Lm-XGT=_Of={vHhdZ(_1o4T?-pM@t4nzQ2XmC`?AjGe zCLFGM5I61SneJ!wD|PN4Yg%Ne{rbv~^h=ir(;iBY@A}6yJ7gQp1p|-`N(F-F zvkAro__GLSJ)ySm0XQjw%zP38j|D<1-^}pdN>cF@q_*zZ5x6Re$q0vSxH;9B3PP7b z=+kK2Swb0f7aBF2(k`KsXOcd6akv^#C`u;uqF6Lc}Y}H^@5c(MBIye2KH+7tim4&xWO#vSR zAOoXB@|2z*cHeSOg9-xMf`aT&dz{E4IN9QPb@Kwk9#C_)ob%;wY;sp_3;UxNtcK!8Gp*!QBMc(_367(cr0SR74g0acgfL7Wh2f#s=R7&mOk4!AU@=Q{t@UgyM_ z%1J>v^7neFIhSkRbw7|}^y2QvtvXSUey_-low4Ji{4bdsL3e+ottpt8=DCdq0e6a% zkGScWhKwk?GLdzH^SQOUOG7abHwKioWd4vt;I+lLC+JRc-`_|)aP>f834XW)_fBE) zioIj^16|aX#N3ls*4AOiub!^%4Ir-F%TYXZ2r{YJr{b_IxS%jfxv&@3|^Yx-Fn+DhU`%AokxOKt|SQg!AU|7n6AV9c9O=KjeWrIXurIgAQ zD@rF_S}lr^-| zN7q>_9rb*;zJC6z`^y6+whPI-zQy&y%=z=TkDFQN7gXi{hrigaT=r z`0%|`$okSimcBN|^Zs7EIM*fmUJDzgsGiM8%2D5tZQ1fYtEFS*9+zn7l(Btv3=Des zz}w_xWvD%!lH-+GBF=lmw(Te??v&D~UioxNm(c4i?y<{*RpZ?f=4l7)GuU+Q_vVG%P#WaTnq@Jj3i0Ktwa{&!6YPkm>Z}+9|nZ%8OKr?pqUmwvDiA^goPd*k1u_LIC?iMi z1BcRLFlIPj+Vey`y4(dlnDoy1#{ZNuf?tPGV1a9V`~=l-E?LKC?Nh$z_uA}xl}%d5 zRVc95NuGF`1pXR)1=fl-1%2}Qo;*FTUxBj+` zaYY>(&CGR*O`}g%RO=Jy)OqWkisrdeughLeZSQA%b%ChpJmIaX|7_FL|G{Y!@mU3@ zP0OpxTmiRk?J$XVuu?l{Rp9x@RsG~FK0)_}uV#-88Dd3X4h4u;9x)S?kH(nYsBf&T zl^$Ci#CF0T01akzJk6=e$$lM%9_pLys4lK+9^|T;%_brWA4rg9j}N_i_G}|KR1bbP zFZDkVO;Nwx(I+u66R5JqzP%K6eRJ`!5(-5QhL_l?lJqB zrca$dy<={-Xv=*O5t7cgTRErq`d_{}UOioo4F3SJ3rzSayGdq3TBsRemB_k<9aEG@ z9k{hOF#4Y32uQ%md34C!2Ox6(-9+n?jh)?&tRpIGas3m%?2sXUtowa_{(f zSVTC)w^eFPbo0Ez-cj_FucvZl0fq0{zrXtJTf|};fB#%(6qiM~0^tc?t7m)N5~1c7 zFCd&-NJAim5kYQ~-8Uu=jG?sbCr_M!>)E(r!@9Li7qY_v#O+!n#gQy~TP{r+5}L#bvwW(EZ_r75vpnuy=1 z?|3;qRLa3!_ZJ}H+_WhJru+O+tWL5) z*Q***DhEBVojYk#P-y5hSR&qj2nU4IEAOV~>~e_)0>W~Iqa-FcxNT(7S3>MNzcf$U zJ9%M_O66Z;y01aLZ&n}S#{0^#W|F0P&Lt7ww@%Zl_8(EYJukEKTluY0*Ne2POUByd z-7D&Kqh$8xpq^d(m%r-$U*W0dDgGxsRnI^FbDrv;6!x6Ic&c;17TekN_BT#GckWkN zKxYo+_K*-dzoYgJe-dp5oHW|dkdT$&oN{h==f2Ch3;4nNN3I0T2kb>!&8U~~q7w^? zP9S?nX^!;PDrkFHSizhbFpD5-q)CzhMXS*V_tIJaE(}-Z3l|>5H->H>%^3zw7ZTPJlRoLO<1P8AFHE)|PWPbbyPbGITvR&-|87t5Nwf`k6(5l$~sud{t4Z|in3&$_lol-!T z;f-`N_U2zk2@UNAKrwFY*sZ3o%MNa}59l(qfr;#8=7w|ND1hgHa^-h!Ja{zah<5wT z^1p$jHvc_;WwbFq%Sg42uvp=4w%^62?OoqY&uzAN*JV#c1okh^L9#a4Zx4VS3_fIs`Lh#39Yr;YlxDgi&?_a7yT~ow0$_a!_;Uc z|5A&_Z$BlQ_jUDMsIV>Yt7Xm-ey#2kpU|F)gw$wtmswAPBJ=Hg&;ylDzSsJ3OD97I z>9v=>{vk|4klN{WXGHGt{@ouHJ!wf99DFS{-Txqy215%c?Ed>N95sfny^$>!O#k>7 z_^7RgZLWyp!fRJkoAVQ0KK1>+$F)Un>o_~7yZ17DcaTt^&Qw`iTKdmEOT^1OM` zoMq5Eb2YRaA=|g__Bl1JkYHBi@{K=!FpUx**o05hR!`tc^P2kihk2ppb5m8M0mVcDFKFx z9k)qifh@nFlFt8+j7M#>FM>UaUQB6eI*vB>R!8nbej)w#WUE7uomal!Sj@zH8w>=&OI-x%7Y6t+ZhBKX)s6Yle|c-A1_ger?Kfj9lG? z{u%*NA5t$|U^7wm@*{n2(1!ui9-nm*VJk>)4=r0=#{qIjW&erwG*e@vxSboAGspr>U zh6&HI@+{Rz(Z;d|g2*Ogn4|o>yz+(9!S}&5MLiHclib|EEn5;35*#+|ApD-zTE{l| z5UW>5k1j#{Ibnh$lyCBSI27brL2(mJOemW5Pea4Pe6b1>l86=z?vh(aG_N9oUa8q_ zJFq0AZn*iaJ9l7iJ~MRH*O$9b?kl_IZ#J#ocANE}+|B`7WR5+3Iv3%4PI)&)MLwQm z%waSZs7=+`h{&vu`U(Z~uwh+lZE4gA^6v%WSXc-HONV}N>;?tjB%ou07y*va?6~K* z@c#WPE~uJLZvPb*l#$H;X&2O$vnBWLU0bZzr+4qRW`@=$ab>XVHhVW&a03PmNVi#H zif$Gi4DK=V0E0|mJV)UMTcoo4F;*`E4lj{rcGu{a3#<(md}e)~WZh66*Cm!joI2&K zj{ehKQSb1_+c;=-b>)qAL_MAWBY_X5<9O#H=UkuL{GHHAL>`mL#Z}>P=>?EAQCyue zMrb^M&94t-f!f=Oimj%q2t)+qMT<(2aWc5tU)iWG-_F71O?5T;p0~v7(#t8eT(dRb zybhGm@iz`um#x!l7RDbxj`b-Y{TK@B?V6@L&?o_vGrQqJ4_h8x_wwsm-`}Sa69K3XCd^2&4hSP2>8$<2H6Nad$m?h)H!TaruUv?Z#pcG`Vv` z0~Wi`czS2-vwUuxqL*aDoav-VbW2oK_@eGH+dkFSW>H6h(HMLXesSoh`p!iA0b7*w zRY%N5Y`ARz*)@thJ5laaStN4J`d!~MGEcX(WHIIU&!1&Gb@KUEqbxTV1>QIi{`p5$-1CwW&}X_@x(rd9 zhA+N@R^A{Tofgc5tT2staCe-JqlKx11ITDi$$8Eu!7#BhLNqi8h08!BB3LTSVNCO;nk~t!Q-HV<=VbM`bPEaCYx7S_@4QJ zXA|^oKu1*90E8i-p?zEpE-mI=A>zVOUPK7X%Q-ungNE#W9F)S-fIDJ4M0nw1o}Wsd zU+lQ0E)Q&5Ef7>qc0uspGu2}osVTh@W2)-7OkGWl9De|kAt+hkBI|&Y+kyXM-$LMN zPjg_E$i0>GnPH0ub@Rpzxk&SCrKQa{nozA_n-s;NhYvg1+C~}o2M6EM^WOdY5F;Gf z;4x_2bq_~4EX4AXjLR-=%29MYZT5xSzAM+hJ)a_-^`k_V3|Xuzg2$icr!HZ&3lYfJ zs1XT*WOBT_whJUiym%+*?W2)aTr`%AqV+4~Gg1^{NUm$kVICYrAX9;l(~AAm%+1kV zg%E+c@oP0ML^vn(`uR)GNeH|&u!&h52TDAgD_B0)x$XIfl%`4#FMa7a>+@vQ zs!l?ly!Kp*f=Oo?p})-`NAQf9^=mOz8 zfZ}=25F}&LQIczG6m7~&6Bag|8ner>*IISQi(~dqd5O`V*FoR;DoH-7s@ESqI)CVp zAe2>9h#pN&9_ev2Fd_Js*f6_H25TG z3cNZ%cr5qoGh?B=!ZvimO>r$vGCsdQUVN227#RdFqrx_+fCtcvpk%h{p{<+`v$<+S zArpI$=OY$iaRzF%8c%1Ny{C=HDait6^huWs5Gg>*_F;qL?uPByQQ>h3KROi^5t#dR zTR`*?CP?X_Z=LRU@^%)sJqel()&enIzF5q{8PK7o@L+{k-)eX7+`z6j z0FJ0QHUdEzT>{o_e9V?j(ui9TVU2vKZo-8G`q>H@f*7@k=| zU70gf`t&V+(J0>X6y41FqNAZ&+`LHdot?C;m&lpE~o8Q;Jf?l6E`Ly`Y+4 zSEH7mgg#!)DH<*D6;tO)E=CG12=@}D`$FZ@Z?zF>K7K^dPd3Z-I9j>uqZ%i~D72F* zzRml>5=|9#b?J<6pc~#suWsFvi-nsiSbDC0Mj3S1BvT^5Y-3#1*w zA_*PEWdO$XISe*bTv$dOsmPMjd3-3Ky(W}l@BA_?B9CM|_R{!X2_`U|>qbaL1dPo0cM!?;y3A zrnxZ%k9*5=^^7@v^Iu1HoH%>-1sE`g(LpBu<2z8iLF~x`*-Zz$=nuIL-;5oncdhC0 zB`Ox?Tshl}-d=Drs5b*$( z`w~A7vN&amtm58bTDsP~nuAtK$6L4SK9HX;8|3lv*~k-9>xw#zwN~>w=iaeLmoCE| zU4YRhXTbZ7_sXc^s9S=d7cKX64MPQW;Q#?%-%f5CWOgLp+`?kCcViu1$WqI}x(>Q3 zjc&?TV&-7~0(VEb3yWDDG~LQ-4&hl}zEA-2_QiVK(Jql2`JLs$QfCx*@qHLHn$S3n zQ~li=CCS8UFQP&PKZq}c>@<9+$s;3W9$K0IUX`idSQS$6#$xCz@Jlu<59ub02o`l( zowKU*Qmg$VPMkZ}HExu|zkijT{dKpl6!aI+!CA1S%}zVoGQY*BXzB5S-cQ)PwSrlR zZjx6EqL6kMYR5x1SnMSw%%9Usw%LLSZB*9CZG*cD#@BwNg%3a3UUi$vt>L9UIzI9X z-^aawqkU|IWXtICsf$}a^vv*eaeL@tZ{IJnsL#z_KKJ&SJzB_N#NfffK6-QsvAtv^ zr@@T8J2gkw?(>oprF4>5V-o(@BJ1a0q|vmrCvA1E4z@gp*lSlB?MFhsm4xv6MAr$9l3HDIGNsQZ*f&L-nqL?;*feBW zhpM>|zMIrv-fO(R^c;_^UY&YW+>=1V?qez^E+5geISW_cDFPtg8c9r7+UvWn?$1O- zNoh~|-G5$>rx1(vgs$-(qd?vLvNWkqXoS0b%;tIVCvq1Ki86Ub#ieAQNe(R=<*-zw zTDc;Z#n5N)4)RxewEd7{z9j0hY?2oDRYGcMd9SBWpAM97cjRg?>0EfE3^#q#YBKLH z-}Yz9waDDY%Fo7#bwv)aXwHdjDPj2^J6+CcX6BzddUO)Go|!$@r&o}%SBsh`?$2-0 z+qPLCVn{ys!F8!QTCL`t37Gnn&fL%T%a-yrN^sX@SFFRFD;VCHDJYIRZ$!9i;}H(bn%mH*twU?oGved0n3=PieOEZ}%}&?YD_X zeg8{OyCqdhXovN488T=0(-Rwac%k}76C2;bNH8XWjK&YM`Idg-rt@jjQXco(_ge83 zZYbm!b>d#&qumk>j-4mQ=M5c9b{L})p`=J(4kP>c`a5EwTg_0;ROi@spi(!15 zDPtaIskmrHl&oULk`mg;rju8QUoF#DAQ(~*n5-M`V|@Ik&`-Q&kno*7i;_EQRX)LX zRD}5er!!|t3WKz?xaYn$H01P>WuO`M^fdJz6>O6+a|D0M=p_;28caF4m%%IljM7;- zh~AZy{^gF2{(ILl=;k@O=#nc2D7G~aU?_XvZr!e99vutrlhmc25e8K+8ct#K(x=aF z?INPEsZYoK13E2jr7os0@%9N_$L{xQGZDjJF2e z(Ze76F@>m$h2$-g0w-omGt(j5ZESHzjz(jO!1PjD+Ikvm@Es!+ahuGJ7JpxC>+x?k zG4oho%F>0=nlj}kv+X3+8T>2p*k16WmAZZZet1#k6xZzVxVRRUmUwO42>lB>LVtl> zamjjaenTQO5Nl#ta9H(P^b@Jh(&YQ;&vVyoId{0q{#dMSw7Nkq^B*V=Q zRTE1CU_JVDF|Pp4J7^?$G!j}5cXz)I8^;oYn{@g#Nd;;Vg*dW!k!?f@7w(bz1@uwe z<91a8%m@888!%7_(VpP$vM#p`Kz6!@wb1-MoNBaLGGt(g_D=MB^6kh; z=W9*g(audwx8iAmWCB@%v(am{J*Euk!hWeEN~w_0^1gj`r8UUNp3rHh(BIwQqx~hn z8}E;(Rm}XN4(>%IqCl<#&5I@O!wrhU#GdgQcdwr0-mW@){TX zHd7~-;Ii96S0{wS!{8%^(2GJi7niZCU*`f2)UW!21PuH_i~*$0L{)v|%DAP&qJ}T) zkYeknLY)=3r}u zF=4?1QL&%+5bYV_ebPhgF4lbdBsvyLOJgzkH@uzZeR>UoQcepd;pRDyA;k)>a#qpelY!{I?vqZmf8`qZgP*V&+ z!79e@ihBS!vVR!djmPlhXFp~!038jKv|wsx=B#7HLE^~%fS;%jbnQ5;k1#__X_MsHJsSC z-ecCb+f)>g?VwBW?u-`@lU_P1H_VUaJ}*~|9Wh~ruj(%IcGnHWSW0s-ma@&Vt5)XbTeoeyM8|Mwp!fHeo;3FCEk08EmA@V@>!B=ph{NfkWrL(Z zP=>6P6G|tR)hT9A#6&xcvQ*tvNBQa4L^ zx3g7^<_%X>?Z##pXqe0EIt{G7DAjMSkTbY$RY{{5^eQPCaNpzEzU|9sRgFKD!GYA? zIo^~Cl!e=errqO9#l{6JSiwlJ>!b)s&0V}9RnzWvmsi?Sg1pz~rN7POWHl3a&i`&U zOD^86NzQOQtFCx&&~dLA@eF-C#6_Kj585H_66hKNE$i#4*_SBB$G;HX=DcbZ8+%?p zeE0?{tb;=xd8Rw36p3S5lF}LbG~kIDksn=05$%+rC_zt}FF)^DrJ?9YgXwcwr{onu7jhi;t`1VsD z$q4eN=I_1UwP0$(clqqyCBIeH*EKHuc(Gxr7JdNaHAhmN`#V{VURT|XvE%;Ed{WX?c1w%E3RnK~@sA1$ma)pYE|A{@apsko z%6}zlpWStoY?5|oFFj&CkCJlxKh=odDN#K3iC5GgU;UYjCKC-t90uU<7pN@ zLOv9$|7pKzd*bnF#XUO<@5Ws+IecdFkN43g)g5e$T5e4+j!XJ%QM2_^_1U(XS&LG( z4LBdGy>_JX{UF>p2p7jQtkR?Ao2O-IU>IS9Km|3n?^&8EZS7CB89f3+LW+9WdrJsq z4L|<67@2g~7{2MLN5>rAZ|pIP;xiLbh~nem)B!_;c+#kBnWg^4oIRu@V}i)~X_C3e(+@ zCh672rlfX&>mJ+s{d*S53{neE*>|nTZh6wFFJJFUg`3_f3bHz<>ss~Oued~J%rDc2 zBVJwTKR`oAhgtY+makpt3}oEjK7VH03^X+s7?vHOg!Q#|l|fSQ=)r@-%nGkxUw6=r zvLyZM_nd za6Gtsl=8j>nUoJo)9B2eH7uxT#ld9Wy!hISHmxTNDia9n9|U7FGczV(iVjy!ftkQ9 zSU*BtbO=zPy1L4AuHPW(ZqR-DjL7dz!B!S#XRoc+c(A?#leP$uGS#Ywn?saP?Xq>o zA-%;y6DeT>1`jErBHD-Z*6;lYY+xd3UxPNcvB$v5k< zXYe7Q#2DU0QK;4va)k+D7CnZfqOM-Qo~E1fg8Bp>3!U58zHY^aKpD7MQc_y#7j_HD z^BR5wg95iYJDIu2`NN%`rg?J9mI45J^wAiZ7&*A@a9N4r$qP@NInzf$!HJzJr%%7& zN{);31?)uon4KLJRs!ZmtH-)dX#oe#>Ep+BM~r}QX?dE}yo3SW%`Fah{pSjc6k8&V z6t>ak(PN>T`}FP|V2ns69?IXx!>2ZhtFc&r8Pt*WZ1fS#h9IYwfS zOImbgf40ND5ceG|1ub& zgj$kfEASPr^Yv{3ZUzGmF+EJLLjU{2bvZPji~jS+kJlYalRQcUW(Aepp^#)fcrYUt zY;9=URg~lM>;QT+yG?;Y=Z374RNa(LRx~;};soA^ek9vuKTD0dbLIeHw<=i+ol*{+ zloY%g>l|@R9<*XT^}+GJJ_HqTH`ndI%eaf9LL#rNfGXLislI^MfR39RiuFct6vc&% zp-^+%LqlDOeB*%9^OCR&TC;Si#({-(Bl?Md;{0Dl%85>yfB;Gkgai9!v4Hsyf+qNJ zuEY)}X<^9dya_~GuzCZ!kEc0!`mfevky)_gN^Rg<5ZU+`otEx<3ihgIC@V-mh${RN zd+69PuAmg?L}Kn6=sKxa#7kzUg&e)VoJ@6WYL~o!c)-(gWhdAzp@e~sXL5d_+&n4h zP=}4rcq26;ejqFA_}K8EmBFxKV%r6E2b}&3vd?)ou1IWXcMA)*g@%%@_U+4;JuSz0 z_`C{rA#=xq)qsG_w6<=jrzBM9F@qq#Bl~;w0B@LMMxp40{eA}CT za{&HkU2dN~OkS}E4%~7OLmvZX7xvZOfu@7fC!)Ti*970K%86&)0&1h&I|%3ymJstJ z2;k)&mk2>#aC#qh^!f8e7t}8TU&M_;{KYgGR9%gT6$C0jKFeNAUKk*bu->ED)O0dF zUP7RN2HSUyyUQ93zXEUtk4{fHvi$C`C?xvydCB?!Vy8%75U!zL76hB=+JZ5WR1En` z6vYq;sWvM=YY~kYTbH6g&axZ>wXb3QJ0Ho_CTglc!B-*gq2tWl1}C=HGW!Ouetm%O|KQu>Xqz1zici0OLnT0Vj z0y@@dh=BN5%DMbeiZf>L ze+Xr=r^OArfaC;{i?tp%3kxNL^o)$V(Zj_k7$%A>14X%*N&GcuSf4GY&@Nl2aL*J! zdsbapxtAJ^4>8<4@MsI`mY0~Dw_EDYr?=quq%lEaQQ13!5f{-1Q`fEF0R#2gc8vuq z4dm4sWz7L+c#1Lfq-U*9&XHCLH|H6MA&=z+ykwFBm=lgjXbubPK3Y9O@&F1DOG4GklqzDE7~mx0*wkSVg9b&~$scg~A$r#)9ok!^Zi1uBq=ug+hE z?Cg$hu4aqf9(n$uUYjt!rQe<0xh{DDg}F&xiq~(w^1C84(j;-7v&!>dxfC(^GWrnC{nbhxzW=FQ|?v8~>{HgiL{#Tk*A zJ$8&jG)_U%I(8l&<^)Wi*QuX&V>_IYWP`L5#GI#>FUN85vQL~7 zU6C)6L+zv%yLhBtSQpXo0Zbz^^3Q_bjoJEBT53DLQrRpem-1y)o^l)}8`|C}J2wNq<@UK{5tsJi@Pj>>)A+3)1C z#;+f^6pyyKJ#5RVl*VHYF`y;1F?3B=*S=RcFUcJkdft#FG+@mcmoMKmay1QTFDM;< zSw3=&a*i~*70IE2*5_u=Z8^I`lMVpW(B=Y@c!q_iPoC)O>3t^4HA>g9jZu3E5#2E` zGFo(U-iai~Z(C=WesiX;MZ|PADT!{=hx{;3ziRj>=X|+aE+K!Nwo%S85urD_+9=H1 z+`m`3W=*Qq1+v@DQ%eXZ3~*L=Yyd2y!`=QmiYH!UD9>OV3(lY@<6cznVi zJ$v?ttLwCQ>*Pslp_6kKOe$4soU;hU$$}44OBOB0)cOY-U{9VLbFVXb{M4wXX_|wU zl{RMoLklnn?P2Kh#5)vB{vc_?v6Y;xOQWxpFIgZldM6o^kG2Al6LU`O&y;(q9F zF!VA}Vbf}=q;5Db8{Q=(j~xYN)>LwEgd_KL&(3OWcWp)IuHCu%uAK=48s&4d_dWHm zI3)??2DV?>51HVWI&gY$y__H*{6I82-nY58kJg|;VwU+@_AUEor5!p%*A2s(6UG&>$L2t36#QD> zFvbU|@q-5q67h$!6?E3(K(%^x_+W@$f`%DI^QIs)w2R+vdYHn`ItD82wZTypJ^yBM zY*;DSr7Z1)|AY$LjYFt^B~!h}V%;Pbl1q+Y$2q}fi0>XhzCgsuv142owzlYO#rWxq zK1?i5N%Oe!={Xwx5x(%m9L|gDxUMC1bGI0`?&RqL-JwHWagMTj#MT0g(^f0LZN%gw zTp>HmSwG#?(jqweUcCOu8uvm@F4qVgsPoB4oEJiWL&IK%1ILe#D|l1FZ(dx?Jn(wt zEt*ySMhoe79hYqJ9*%=orqjp+rG!!W_ahS^AlvI}b@%hD5V-;#dTrXoyV2m4iCKrh ze+;cQVW!NsBHESjlhr47S5v~2vZbm|4w}2vBqUssA9cIp8E{<^IuFK@ATt z%D+OC8Zdt>Qn0t|5UTX3|5YvspBoxj572|15a0n#P2Pj|-gMAq=quBoz<7nQa?JV~ zTRaYEfe~4`x}MpSao?Kc#gz!XKzdd!UrtXAb;bsyA>e9}=uOa9{y3^}MpW56Bpm zIO**LL9mdkT1m-VBZ5;4U|hec-vmwr)FfK0VZ~oh zX^Y&j3I`(J8mE@1BDy>GA4Z%%4Q=f^4<0DI4UQeLVmBF(?C9|cIQW;o3-FQ8bz%d^ z)KCJz*dW`4(wtwEpTW;HRTWc2nt$yU7fQk!F`H7(N?i0akDz+v%>lx1x9YRFw1MPs z^lOfD!J2fHr>yS7o}3~3egoRdKNZfG8DW6(8QZ%uX3z+8=;uj3bI z-;~}wX?T0nHu3Q@>zx!&xYX6P_1GA6!^Ew(T2qKK6V8P*W<))bQqQ(V5InFJM70)b z3M?69;@SKoj2i#(RaOgQswlA|sgBjntcuui*F>>PmlS?GI4F3-f`WpaD;*pkGk4Yf z>MO3X?MpJ$!q}Gs5g($TK6kEx9RrAd0cyG_DGl;%a~|e*&fK{KB#!9c->={eoRrfC zE5(rRbP)3L^1XY@UDV#j0;!v+BfG(l@fOel@RaU#AIx%dc4_^O6v~ZD4Ff7j)!{Q^ zC0#q_%EgNp36~l?Sk|`)SdxhpAb^pQVLW%)YVwrm6k!YO&n*qL)#7Hfva-rAz1<<` zI!=k|BVk5Px=K`bz<8pS?&(Sk#h2F&u{4lt4M5?J{f=!Z=cYF?Z#Kon?*p=pY_ii#Y)kpRRbA!`Za;}7BCu9UkK0H>~pJSg> zetQ0e?I!U}1fdseBs-*+?-nD?$aSRCk(n9IT4MLIV+M4Wa%}^kTubB}s~i0M1a3z3 zTJ*AX-$bqaaQnlSXe^3v8Yo2f?t7_amcCH1*6!}fsB|dn-uvn`730$+zpiiWQ5pMJ z{$D`<0nrL>TSB}ZNFDvX%~(~Xo!PEaJye1M1tD6^ePkCYtyw?6$fnFqdbjibqj-0{e&THi+xQf+4P&D%;fcpD?r80}D4#bRl%D@hM5LUYtvPnJx70?R zF50m#`#Bjj|K4q`cI%Tw&fw(R6BGU*#RD?6Vr~0gGqRFbdS|sxG2$_A>_7GSjP(5j zt}cYYs@v6}alwR}CyqS%-KG1)cfH2v+yOAFW3Yl=?irc}uSQ9D@Sr8o9CQ8Z))-g5 zrZ;bZBg8ps#`~w7*%vRyqDM|lEC9W`cCAcYptbkk7ij$muPh91%xECJ@0#2!-csgo zppM2XOQ4jXbNQ9k6etVKk&h0kD7*Ou1x>;R%QB(kv#Nn^SU>|vJ^AR8)(eEz)5K?2 z+P_l@rPK4hv-rl(KW zCFLngpv@p&g<9TwAhdxNWi=q)eB`6wsq^%hxg`pl5}eT=Brr8Z_iaS-`eR0 zsAt__->oj`FW^6EC3 zYP%Khv-t6K`?TKiU)RQ;D%@(yrb2>)8^NE*#y9xf>u0Ywyss$8`DWhKBSE4j!XLl7 zVC}Z`Ut|)T2PQ%4f|1}l3_Tk)AfK-uJPGUj-6|X(ICILncHcRYLH}HG^48GMkG#76-og5(u$#-0Wi3GVLhpsUZx!J5UsmTdMh>a$P-Fh(Td^7Cb--qhC;ANTUo znq^!$9rPG#-Qmt=*7sMSXKM2_CIg^b?z0%SgF6=ek zW-_hOwJh36UDho!#?=3`SN|D(8Jdl2Y9tT-d3eSCBSXJNMMOqoJbC(Ryw4^n2>}YZ zrm_+c2k7$T@#8lfbfNN_uRiOfM%oVwCeh@Y7X&vMee3?s?;U~o5=~W=^V-IXR7Ats zn3!J2J~j`6S8l;lJHX?+(>L?xp}73bwu`hHy4S?r%CN0y&I*wRr=%_J*M zx_(K<>u~#a3c~K~zplTKntHq2?y2n-wtSsG!$jkAmYr(!>62cKJsx~W@>H)&2XD!r z_c(>z($AmiFn%`ws&%x0wU3Q0^}4C6xOmwz9*Cp>wktX?!OU6yvcu^YomIC55i$fR zFz0Y_0U@vc^fMH3eyFJ`m!0RPO@_juBS%>NxV-#&5VQK50e+V+|Mc3wyF$t*3`TI@ z;O}3*5>WY^x$&3+G7t}wON!XtiIFJB|Pu#Ym)k`%Tw?&t(T?6bl z?vIXkeUZNU+4&V*c|d((TelMIxMSze;0q&qy5e*pWA4MJPgi|@i%Wv{?|()I=_o3( zKts#x!RFDo)sv-^Pm95I$y|e%fmN9VWbG`fygpwxh|f>-ucev-brAVCu@zj48#2qM zInvWHPja^oVSxE(yoeRlEix3hmfV1!fa-`zoXb;9>GgJ`s*J0BW-9XumNY z=-8$EvEFr*Qp2zeuX-l{Q16I7%F6R*%y3-39N}IwuA?G8ZE2|yx+r96=%5AO9tJov zCpc0s&=!Fbkc>4UbSP>hWIF82=K6G`chO3C_?{_xKOr}OvB2cpw^vvH4AUmj3y;Mg zZ38A8xepLT-X1zNH#Z$o>0FD)pzb_vZ|1<=^dvknLZkWXfT{^ittSY*jld~dpco=8 zSd%RL{X5HDt}-U!U)IrK4fx(y!E@~G?=C%uT3Y509AgY(YyfJv4?=*TotlX0M&Zj4 zc1pET(bc6=M3}^rSjMm=F}{E5mLa?oPoIi=I@#Iw5atOR5*z^^s!F5n z$`g;8**nl&O{3L@^8x(v^LaOdBf81*K(uFDB|b!lo}7r^;r8?AF;&Chx5)qlyxT6I`y!v>QMrBR&O2y*l0Q13 zFMvFvxzx75dLS~ApdxL}xzQwSBIgleF*?5Kb@wpR-Dt_Mma(}sk$ww! z0#$mjscQM%9|bTkq>E`p%pZpB-O|CC z`CnmM1yDT9i@$$AKGv+kU%}OjNAp+n{K&2l{Afe9BSn(&vCWBDK(}!8PW^~Esebn^ z3YDL-a>v58;_JG4ltYh`{q^x& z=&QB@!!t~g^V9jnH%AS7!%)kBBKXnp@Jms5oCaR&ahbkePimA;(eC*vmzh(x_|YjPm5rRLD?zr zTl#3@1^;8!s^+TkE$zo+LsJrTSHCtD{AMke-IC*9>69{xFjT9=oE2;bO-(&)b0X?% zK8|U`3lNp=;@KHx7~Bm|rt7tf#Har`^;WX%$H?glJ3rzQg@kO0IL zc75?gBBaI`ZwnjJh``Bq#4OiI>}Zsn^mAn+;a3STP!+ zjx>*&XRIq>ITq1CUSz`diMegXx>4;~5T?n-Rw;n$y3v5H=ksCu98Pu$GJ$JGnf8zt z!`BjGf`|@YCyf?$uM=(iSekphZZq2y5>W^JNR+F%)ru>w zF&v~vXULF%ethqsCd}d~NmLL6km135x4Qw*_c%G`i1dNdx-(LuUV_3*O=iV6v63^(9lXx=Kzl1w?AqS;3dKK8_X)lw$P+}e9Qh#WoPCo~m8c?mxUpjImdpDjzvND|j5HDaO&|tHDW0n0=MBCA|+cv=)3pzg@ z-t_Y;_20(-ZB))<+rKSG@MY=)2ijj=+y0pZr2XV)eM0g?f|)mMNu2)SY$-wR(Wkl) zmw%&`+=rb>O4_M2Yv#;NK;dH*WyN8L`il~;pLbn0)wIrn`;LFf*J^Wn%DRr{%yy`z z_QSjCK}HpIhpUA~f>c?BZMkH0IxJnV;a#iUX!9(UEji2+_Z(VN>idVAQ{Zd{jJMG( zuiT&nqCD(sE zu6VU5^x~nGjxo1Uh2=*Qtl_xw9a>x^r9FvE zy>bID%OiGCv7F&hzfOFzc2bQoHYkl}&g?bg>akYB=|3_~qlN#3aq4&^sr~#tIO!JT=w^Rn{V=(f4PiwWlS*INeKJ*4|wh(d$#_M z6)X42?4Af!@zhuw?gaA1M=xQP#=u>i+Jwk_ZkPJpKVE-%U&ji6AR<2{qB{TKhRO@ z(Ruf#Y31|#mVIu_PIFS<@cU`OR#B!IJ61V=c&l@jZX)z(IE~Z)0UoMX&A1Vk9^-V^ zd^#i=ifj}UCV4j=D-BqpQCU6qmz_@q^2$Z`fR0+jmt} zxYs6Egxk)UbL{Nd@%I8o7#hNDDLw2QsWneE+&m#wFH)zR4Fs@HLy;|N4 zNAoq+LKpgWP??vZb#gA?o+8dtR!G3c^RT)gz-$B(S0&mrVG$Hp%5@iE#vWr?m5t&)4p zq4e~01ij3FTI%YP@Xi$!B&Ma!x%qPWpryC>UqD`p9>-wB2o4DR7E4%2z+Q>yoKcBQ z)x)`(XyMuhsQB(O2+3obT9C2+3~rT>JX$?ugh25_=A6Ffbe6lA7<&2yn&qFrexya(w%~xODTFn+eZh`w!|(0v*Pq>bAVI(#1t?=1(%* zU{#L)d>Kg6cyH&s%v8MAz%iu4(^0HjH`1qefH~)9!UTUr zMBgS+88~J1qJ6`jmXy555(0ubYt)lNd`v6|;*wW*v4R37Ga2ny^tvVJ=h(!1{lz_s z39!wep+ocBk{=Rw0fPAPqqvb}{Wo=wX&C*e2S21pEl-(69W;zImyQNM+f z!i}3ZS+U(nd}6`~vC-iRge4GVkgS3L&)S3l#QM@5v%s1yU2s;ubsS_7Vax0$rcp+5mgP}7MKzqB)`zr-TfTThT;T!Y7~*kRfa&2ATa6^u`}Gl4 zii%=TyGyBz*hWTuKP_x`if%pN)pvLBw>k%gfzLHY%3Zs%2K2zegEZYFk>S)ijFaz2 z*Fy(Mm0$${#uYSPsNhpm6&84=+Mede5)Xy5A$^?%Wb>?jXX4rVNKbz*CFMSKImsG3 zv#rAjLLRnmEvEMXbm2FFhf}S(6Sj*3$J@mfg&G*}5gQCC!%aiUdj_R~>0(J4$%b9y z@>DR*o;$}E?Tcd5DTS>7FqX=j4Cq_`i8;tIro@euo2xCst$7|S9NUB{-EqlPRsuy^ zihBCht9f;0J9jSlwl7Z{L|BqRSk9se6IAr|*Z)7%y?I=Z{o3!Hu@DlHp~)DMnN&2W zNJ(UfQY49}M3W{%QVJzxs>l$RNGU~>loBN>A}JvxjiMyA-=}Nc>%Q-2uYEszKd)y$ zL$CG6(#3B$&-45J9>-@o5C@CUCdb9cA0846_KL_S{?%8?HQ=jV8w;(2vEEfUF2A}; z_pGrXy=_Ykjo)W5gB_QvhzU!^aD6+4+^$n)6vptI%3rip zU}934c6seBFdtA)&>2bxg0?6Bu7R0_ykXl!N>INtE85hzq|efUZ!LdrTQrx_m@NiG z{Com|x_1GANaCJ0X;N_Zdm#@bt)}j^{I9jXhQ}wRQ)%JoTlzOr-=WlXaLy6vmdw!6 ziZzS6O7_rF*=>GTZ0ty3h}o_y0rG3k7DTV`zw4yy8l=n{BR59~3Me(K$rr4Z*)t=U zSXY!%c75$0@CovU^zOm}O&-TILt$_Ymv3CveYFqRmmna^udnTLY>W&bxrG1BHOG@> za;D{#9hWb&$ZrVw=%t(N=Hg%&EWakW{^;axb%Xoj*paROr(>t_P}qJqz;VrpX0c4m z6V#A+l7xAcb*q9ksJ9@j`E>K2{~>S8hCjYJ;>F_r;}Q3Wsdu{E5ZidauFhYOnY7It zF#Yny1Ct)zO7x?*{(|8R^oR-y8iS+hezr8)nSGBdr3MW`!wXl$tQ}U#!AHjifosq? zfzE*R;Dw-aB!K6;X0+#@waa;AWf*dyM!vn)lR;RMx-4UVBPWtsjoxa#cp>&QIMx6i z1ZI*02Tr%0pEY#N+O?3tlNbju?x--lvV~!MF%9!S2~kmh_`tUS?gFdu=TB}LTEG6o zWU}V|f1~n${=5JG@lQC09QGOHR|ZEsR`9BLoVD;wvn0+O$B`b&`|eG1^%*3kYz_v- zi14qj6U3~f(W{NhKN!_`gQq7`WAgOrG7paJgF_oHl;ruc^FkIOhKHYZaG9{9^v}nU zc77OtrN=+4H@i;f>HiDs&999=^pv`6TJXryJX^WySBZ(b?w0#6+(b0%at2Cnnf_=| z{(vQx_g1xU=+n7%`_V;u8@klFcKctp-drP$YIU#ge(bu!r56#I6N!t^!r0gmGX}TG zbwcqZMh{gHoCpff5hQ0ibnxKIZ0WefN!d4z_xj}mJf)$L)-Z5eSLB2MGo3|l+P~qZ z7??`S$oyuH!erUk!+rbqCII|VlKR|EL`nQoPQzRMrsVrG&(KfVgY$vB$R-*6?N90} zt@pYU58&74kQobN+!j8%)@8uqho%N^*DFseUe?NRvH4}IZG8U=D^8k^y4v4Kt_W^# z@A&=~r{kV<=((0(o795Qgi=OvYNMg)z9-#!%DnOAGp%7;By()-KXiRCLUR2HA2)BgYF<{RF5T7w6F8qL=l4#>Rs4Y~!>( z|9HwK5BDo{DHFSYrO)197wV6v9aG*ubKuG^q2E53y>|YwKzww7_?VDQud}shWcmXS zy^r}qd^xIaN|CkI5C5X9&g;?g1rSm#{u4kD@>B0vlMU}JD&YBcF8}E2JAVJ3c>GS8SvCx8)>5nYn zF7v|m28#f_N$)f|H3JT`3Ir2v210*0@aqgo*g{`QKq~TRPS+&rFqpDbFSVFAiFRSa z23QuiZl1gQtkiPo2$&31!uZmO>p)*`8@>8i%rn z{y50D0BLHkNk##7N=r(~RDvnVYu4O*&+O+$KAx(Y+S;RRuK!zoI>`y6{9YmlY3dla6oNmHl(`VhM4!(c`*@6r?#7pGE$XQCJwq-=h#um9HyBIy`@ zD`Z8_#DqnJ(v%bCD_0UWwYCO=0p&cNC0ftP^%t#kmB+${aIcZ9?B6KN{voPeWG7;$ zU9w(uAA=9Qrp!W^qMoIF<9w=J-@b?NDIz1LZlz{n2jV+vJ@_LvdFOK=E ze|+rIt#a#yhxUFtyQbMpxjW{6jpKPsO*6Z@(Cbd^9|~2Bz6~oV(4S)Nm-2im5$^&G9^*V?Bpd zr?)v7bAqPGCc(N)Igv|u)=31KrlME|t~;D)wglv3fLvS*B80-T-=8=hq%=q3PZ`vF zJT9(AaY^Q?agxKetR`J9FYes*J+#sCkC2*_dEsnCW4OD&Qot!O$Gv z*e@swi8HDD^hwm~9=`3d10Jm)$)@$Yoroq*f5tVrTs?a9Iq7?x>RjpWB8tk&!Y8fn z*ie^xE-JaC`_A$$OE=!$=|4?Peq2v&O^NMVWBqn2_KWId7Gt8o#Pyc45_;^X?{D|_LhObZFoVexDY?Pdz zJ7N0tOws!H16Y7P2CI0sOsaKThnXHf--RW*!$Zi*Bm)_~k^p)MZE8u92tyi&<~)8( zT;to=!mF$&bWEH*pk2Pk2*YqDU5$x(xG)#Ou1$RmbS_sDz(PYC3=YwN5%#);CdRs}%PL<3m9f9U zDB;WSraaDwETI%gB*9R6dg-cFUp{@Br|xI~#nz+8+Bj3#z+>@-q(d{Tk=`s|gUXV_ z#>ZQ_zOb~i^FkGy797Q zx?(Vz9_(XaRa9Yl*PmWPEYm9-CA5>1WWC?uL_UAsS0euAO| z;p?j^-u>Jkcz8M4oUK!^$82jR?S-6-yHMU`pK#$TK3(Mk&)M-Hd70v|4PqY` z^|QNdyvk#!>+AJyU1s0%PuX_Xc<$xbhlEhQtA%+2g+r0ob~4BMa7GZ%S>q(h(V?K7 zJ5SkVinbPw3Xs0Ar+w3p3ei3)x8<{q!l#VwWbcV<$>r2vF)=s?AI^K<;5Mw!KK~83 z^Q0T3&kNSS(OF#Fl9E64S9P0Q>8Knd@ll5*Pvy-) zZxz{^rVy|jJe^a3a@;LinXQ~NRCbf|u+w5X!0 zYDsRcl8Q<)ybVg=2@@8!{_4f0yLY|W<)ihLEoV0zRq(YvaiM14Y`4^7jpb=oYC8SS z*|$FoRCPEvaOsjOr@Cz$lX~E5@1X;F>fS$g?egJf8Ko|>oPe4zMF8D2&8sb}!r|hM z^NtUIGWnWm+673->YjkIAr&>Z9J?-OAoOn@6%nQ zLDS(=*!^swxuE$)W0R4QvGq_2n^$UtGLwcOlEWiHw?B`*uOsH%yZghCTfXn^`=XVR zXIjEm3QN$Ax*uN;&y=j6&}HLC7Y~oHq1u;XVm2d8q1P0^x9is(w{KT>{!)ZCyu55M zn!}yV4_}9e9(Xix(zVL^6{bB$|5X^cNkaS5-MKLr>zkE~Q?6Mo&>GMhKD@ncY=Wn$ zdDOhW_1GUKu+ixZy^UMpka+rW!_l{LP<>4$p~Luf(w6L zny(hJ1`7<4Lqx0{DHNsWQt++6W9Ihr2z#c{jk1uwAP95M8h3Y{CF2_$9=@9Gmcz@N zdYN}n^Xfjc(qqWwLzreWQ1^Y-^uIk|w6^Vshp7{0=pJ+*T-+uY>sL~0CVUUI}&58d) zx%|5!TMkH#_OP`3qug9idVLU3WS`7DByHx)m-eK4sO}_XJN9&hV=0p@FflhTEiAS4 zr97B%>UYIHIi~+m&XZT;{3~-Vtq1wvmoEq0k?o_cIDULJQV<>_nwdOuERG%xpSr<_ za@gX85F5{gIgRa~B~InhEkc=~F3~qI2)!sxB4`4i4To&nj_(VWFMq+<<%|lbl=nqs zSa8<~SvLfR2EIl9H9K$jn`OxLaWR7qk=?+IO`Zi_#Cq-8IHZPFcZe8%j(vnAZ9B%F zJbR{PI0%cfH?T8%tK2N7krO5ycwEV0hoMkrj;C}|U4KbQ)a*%H-|N9Ffaan+Lij4D z<{~~ZXzJSgT}v&n76LY?G~qTIH=)K$DwA)6ky%iU;Y}vVEGaH7T|sUo(HV;uha5W8 zH{3`FIU)7iy=FuVicii#mU3p_y!Q=wAwIl)OTIIT0R}c0lPXx~7-LV`4q_1vWo7#h z4@1CB*kiN1?B6j#xe6N!%cb#sjD=ko7$}g$(IZF5PoBkyWK42azPW(VTPK~ncFpL* zl7_xWmZ?aL9R{777G_4Ju`dIg6@vgaZ`$C(yXO?YIS-Z)pmcb=sGTZ`P1L^-FGya zR0PG%4bJdM=Da`(cIwUrE+2E$GAabv3618ecWcw``3Ppoj%S&x5cYV&xN*Z*oo0y(FU;=x{d;AD8!}R; z9JluJKLIW_HqfL8hs~07-Mio4U*2Zy+XgrO_Ua`2aK;2Nx*SJV&ZwtXnAOCp01oTb zOUM>uv0)f*Tw!s2jTWgWu777_ehsP&?R|-A7oKIT= zazL^TiAbX?Z`d=|H<&E1%z%!eWsITL@_mY+)_=X?C^AG4x$%PR6bS4rz$8**@2diw;h%WVWzI?ap%In`-Q&suupsB01*~^}rwjOA!wVNAy zcCG#-2d90J&!0wynKnx(`0iWwwwpxCMS^zmkn6u16|?BmgXqzbgLe8Tmhi1A|mD}&g=em_NbqKUl6m-&rqTZKWp4}R9F8w%=yDTwNC&3``xw( zErg#*>iYX#l3$x%jsCrA(XYfh7nykR-Ue+yL$~VRjQG)i?87_NUz>KJcSWd!8oTY< z)XqD$!uD-kKH#X3ZF24RgNF}oB@UHdLHHR%6R()B;?J|;&bi%Q^UHo>5^IKx%{!qc zuDa)*Y0sUTW0!{POyqar;~i>8{u=$Nyf*5G&jazIwx1>~y~K5M`xRxm>{z1kepMgc zAPH^H*F9wHwpjPQQFW+XY0bnXM?clN&?%SJnr`Z!R6L?E{?UhVD!X5`b{5T;vp(nH z!_Sm38XaxhV2;Yuo_cJC(dMDyAgXk_g^>ffs#4sgHjjM|tiUe2DP+EHprVtViO$u_*{=b&&gR+3VX7e5PQjN< zH11SG7W5ac0dHnO+^v-zGK8=Y1*t$B$(DEALV|-Gsg9FQt)oA|Hh=uck)bJo6&~OePzB^xTzlJEHd|Hynj|1~;@TDrK@Wk${_$w)5 zv-zB>Z>QJ9CR+K$^?7lmPg-Ba12t0y$t|&*QGYjA^;quLAECqDySwf?XX>Zy;Xh&F zr9Bc+Gj104v@o%l*?ZHmecEIg;aViw&NyN_y(fs{W(NlX=7RzQhce9Uz=1qto3~qV z+z^?&nHCxu5obRM<)Y0kY#azP>*Qsx(;8CHQ&maMdH?ydivNaTQ+_`oVEjA4r3{0usRSZSh+z)%Wq1qDzY*G1p}URh5T$B%;^l#mN0_)FWE7i)f!9+1ahg ziQ!zFU0vbFGRz)nu9#_GigbgV#knrR63SRIG2f+qROYk=`?AG1Z456>uO2X2d+V*5 zP6yleW=&~uKk_l{&GG?-m+y3(n)t%_u$p7|^5<>Wrl?z!m^d%{>4bgzB~DIW=f`L% z>Km9r-z1Wi4xlbj{8ldnkyBA9_!9NkL6H9jm|yt)p_%WA9oJGnIgQF88*CiyA(fEA zobQ@N#l;Nhz-;#YTqf8k2(^SZDSogju56^<%XiNo$(YaIk6%Bvw3lv|;dy+s5%M;L za|FoSB7miiMlk}r0W+?|oSwgU@uR+iq|@&X9`U_d&W>6MdnB}@0)`A&@4jQRa_wzD ziKu825fZwYBo1zFcXco`)Vkw*^S=H`r;c0t9_@!d2b{lp_3ozUe=+EjL@k&>LIy%k z5!aDr_af%m^XC{Pu<&FeXNz5(!nBC}CIntlyphZP0xE<>!FkSBBk;q~wfGxeypT#O z!_^r5D-R}s@s7+MaoxIg@MJ3;(w~IDs-mWk6$AIAGwI?6jP#Pr01tpmaFED`&F$+B z-3N0bxL!x6Yn<*#$&j$w;nVGokum`W5cZgkO1xJu1QVJ1EL#Cu-Zjp3>9K#)0_=iS z2I?U4Qv)=GDlWha0S|By$OR=kOPNdQjkmcGfo-ae+zl4z>>W*?U&gHyJ1f{UyjqK3 z=yi1~5#z=Zubi0Ztf!X+(YdvdC?G^4aLp+8;ZLu>`U+eb@W84_mmm~wvyeDRJ|gG; z9V9_kaQhsv>aun1zklI_Bn>9;0wc?)RM81!SWlrjE-WZ`5;6Prix++pLjdEEg4bvB z`5w*=;oK*8R*Ky6+S&-{c9bI>ztTG9iv32H%mvdD!?Z(+E~Oo3i-{tEMN&+*pI^R? zwHA|_T9%%E)-GYsHfK}^h&b-7=egvbGMD7Y#Yz3N$s)$tNco(;hT*pzq(LeS^8fIT z!B8xv4hVrc9c|xmK|#>}Em=6d1JVng3`su1m1~v@v}?YMM2gAo2@*ImD%{^+j0^2+ zOqEkC>&5xiBkVP4ev>ym8P;}E`sDMfBp2#$XJ_ViA&jB*g*;_qxqZ^B+GAX1O?kJr zmaWk>d=0AP%;#Y^3=mmTn^=gBt}xmIa}GYviN`z(@&^F=ZZmx)F4i|Nq@E3(!aoSV z#y1adPL7uB-LqavXwO$!-djOuLWkuIzt;GE3L^^^kMfCm-@n({y}Q0TxK!_nKQ5l83+so-<8vH3{Td8sJvcd5_?ND zV+nTzD0<9HiyV&k)b>`p!Glkf^CEz@II{$Q!2!JyJ~l|m*-86|i!%}L73~MTOuY+1 zNfe-CO)e6;S;<1wJ`a^JB7SOw5$%B)%Ld=gGW zl|)gKD~O4n6m~SU|pT% zk|j=@);zf6NzKiebEq$qo7P8X6HKr!_xNNknEXxf4pPk!D^&FbdYQGU=n^N6@N(oX zd;+c_l`5oY(1?R~_qiP=VnZZDT>Z6{m_pqCVcKHT6Z@Mf=9&8jo34y_dEa%4)CpS? zi|J2I_De*GyUV6jVBSaPCN1sn@O*={HIkzH85v!gJDDZe_S=)*LIeP|DG6$o*nsXxrR4j+m|P`;=`E z)7|+tJ(@k5`j+bLcJv(NK*-CVA@)mwD&rO%ExWi=|EbE#eKhiW{84D!yng-OA!G0i z4B`C;4A4=p>Cv}u*c5h3SVBOA?t9{p)FGNgB@Hh-d-h#aj1Z1!P9qGXE?>?eG>H_* zH-1}M^b+C0wC5Wc*`qh2wJP^&mN8;E&vtyf^Tdf)C;|Fu_mWaNK4twQ))QTJy(of% z>@}0>?MNmMymI&M-Rb}dZTt7$JLQ^z~oShS}Ej^3ImUlu1RQzui6a%(0SKeE^^Bj z_AB(+kxvkPXqJitO>dYa&F2(Tz@GrKg958!Wa)_ckJi0=VX??$(lgs>fFDgw+e@W& z#ZZw4>I{E3ejSYR{fXpLfCYn&dI$Ekv$ocWPV3S5Yg%gOzHhVcey^`aZh@k~H<*S! zGM_M+V?PaCTxRS^|GaVBTJWo{arK=TgR+NxU`JEiobC{KQaH-$EWzA1?FJ40>3YPl@qvn_y6hrGRkuC75Zh%R4--wl>XyuY zd|J8bn~q@oJ+B`sq1}1cPX7cC-L^-Wi-Pj^o==r-5cFMMt$1HVL_yc_s^vs7D7^Emr{t`~ z+|k=zx<_cvW>E4)qs?uk2g6m@FX>#`a_s2Qni2Gqa)n`@ctTzGcgA*nVb7%{cX@@KVsV`ZF$V6YWp*=-Rn- zIn~F%peSw|MeBW4qa2DW*!P?%zfSK2Q}ps>P2=bp3qhZTvXznCIj^ z#z-4aoLGqv2O}F#->Ow7o0&<5-k&At;PF(jWbuf1uuk^vkP_}Wi%ZtQa z+GPdPmo=vDSua1&9!=S%O+XmI?GL?F-|&FprkqR}!X>5w#hHNSF132~7Q_EUUJRTm zk#ZmE;$AgpARfbDjk&qq+Gco<^~?pyf%h0r=}M?&b8;^+vCq|2lsV+cys4U{zrt&r zp|5fAnw_N&j~SaECkAbpFX6SysKQ#Cs@_DbZq)0Xx?Vo7)ZU@aX|5Q0$E&MTUX+%4 z@?R;0&?~av-F9n;YMO^UYWdQoUlT$yDo9>xyC;?JPHGgO?z77ue(hK6xluW*-w3@k zY2|6cGuYZQO2$_r>gdeIev$_k>%MaE+YwlQr`trea=Y_`il2r?^!&6?D%Vr5<6EWi zhNe2&6wZ?zGt?siGq&^m$qwF4@U~Ovm5Uc`IOs_dvDJZ{*V?%3?f)dfG0n2@UlANm zBL5^fF3oq(#bv>@r(hl%-8bvpwFc-7Yi&rTMS(+zdIA3Cl4*Gk*@4%;8~-M6_YK#uQFf49`=Z-8qMj|b~OkG3!Xi5uYbF1T6C!AUS|u- z&y|l|+k94Wo$IDcC(&;eMQtj|9cVh(zhl!bv6$>YwXRL2_8%=mXN3ivOja-NtJ7HU z!_vnM1n9KP(S^1hTrv|5ISBYx4ovCBps&^5F&IA2h;ojt70h2kW{Q-+q-w~ zKH?r)hRQ3Yk5>8?ubjYDgi~^zpB$gO=OvabMacmF`_@xVc!iJ3Wub{3ZYauCIr$|q z`8>nLsAw7nti4p1Xb1L#4V*Tz;Iu*G1I6Czy>yeNb`6$$4Ee<1?;p-%&q9B5=v|vV zpB$*shQ~EyeARr~J>yIbBYH=bLrwY8Ek&hW^!f9=i~czjb>*$hy&rZob*UZH%l42( zk1-qfUp%zFt>IE(L6kJX1EaraWv@DQ@WPD`-izdRf29)X)%;n$6n`-I1UXF)9*m-r zRaIRjFTrMj4Bu*2Ai5NUNnc+l)uAGQdPRlsAxnpT0625z=9gzKUw&0kKuqf56)WbQ zN5Nm=al54)Yw25s*)%e<^M321-?qB(N{A#dR^(kGW;$3TEmCLC2S(+vRDF{N1#+9T z2C@cdLrH_-#t~T>idlcf=vgoWG>|kYnKn0Qo)F2AZvne}er%S0=;$rwBoWlSrWJui zA-(>iqY8^fWjbby3l}PHGeyO;1@$Ud?8daLccL&u2WJmDCh&L$$h-|s^@QY^66;zLOqhN(QyZ?x~-*wl1Syl z2nt>fjmCzCvxQY$7NPNq_41`tnC;o}G&eV><*d7U8MHYvZN>r+)Ir-x*o()IgU_$> zew2^d4;~yCHme{nuZFATrnwlN?Jgw>(V^a_pR@c;Ow8`M#gX;{Vgx3`oG8tp;K4X` z``EDU;rVP=&>6ni!b0{-jn$ElPU9y|WM&BYZ~c1ibt~0~%Y8h8UR8i@X!Nt2qPv%gZKqT?k=N1dj9-7vcuVV&Shh0hj+u|ZrvK!)TM(5cIP$u z68E_uv-*F{UgD_*^(@}U29N2Hdlhdb9^TIpuDYdqehz2r17_NGULo7EF$q?(EPY{rz zt*fIW(d8Vs5Eu!92DEw^Ef^$*Q;#Nc1}~jIp9v*%|9%w397}QJNZ+=j@LkMeWmy3Q zxK$O5YEI)hxIF*dzWRO3vkBeT9`@@R`Jk{tzqkDFUE`Ax+e3rEgpDe!=h&^1Y#?ph&MZR{;Jxli95h)n>wuri2E zG~g*9P#skZoWLEIaoP_-T<%0Ewksr?Ut^Tf-;Wx;XY#;J>EhWBxoJ690!NP;MYMK# zMh5drul*4aPGkJaBHacyUP2@h3>ZB#!iNvMPCPk7F)}Kh=+SZ>xA*b=5ZKRT=~9?l z{O=#moTg^FmnQY!5iFlyAGx^G@c#yeW!Mf@uyBDAH!X|)DO+}yP`ZbZT0DT6>bM+5 zG&P#0*w2emi=VK$n`_v&ryp#RC38=eO5NOD_a?9YXwv@Dsj_{q$T#mC6a6>)(tCMF zi_r)Rc#KZ7>(bLse+X;{M*+sU{Cu9ASJSnrjolCEK?`#nsQU^fclY^A7R@;E@K@C5 z%``^iYdZHjW0vr1qP69n!2{=Rl)Eje#=IFj&Us{Hp*c;BjmTm-TE{HGKZ5^xz$rx>_MF__p8+(Lt2b2mphby{EKhmT zO+ec<`4IJ~ujAJTGD{4V!0VC{9wmX!c)U`u*QlsqLk)QF4*V}TIM{xlbyEf!Lj;Jl zUO*opC+sH$h5M{jMMc``e!oXkQM>=Apu3G7q zm=}fKa5W{aDScM@`HgCC%Sj$-w&+*D0P8Ymm$JSL^i!v}7b@4)DSlzLZ8JF%JoZ(t z*|^c283m(8U2t{!(R}~kh?`5*qG;%BZ57=on+R_r-bsI|@d#hVWeele-ssj$>hgW( z)Bnh@)KI7zSy;;`EM-O!u^PYoK^1T-`wbkZt5iD2pKlL<)Chv1r7?v$!)U=H^ZWMc z^YITRDBWbzw9L>jmrW)0S8a-Gc*t43v&P3JTFNrCptRJmjG@s9#P*<(!}CE42V%?i zpL)g6WlHc#;;{4AOd`!E@&`_&LjeINi06g?z5SaJ%RvDFXu>&&FKE=2fTWg>Gdx3D!K7EfPNQZoV~HP!Au;c}d;!q9>( zI%?^l^WvbZAxCfIv_ncD)w2Qh`Zqnjy5H<0sm33DM^i=G2`YxKdV&DPM@7D zGgy z$k4jI(8L_v+JBxI@lpORWnBm=$g$?vHujgL~cM8wX6frcblX?Zyw1r zqFY@s9b)@HkXYKch64?KV1cy%?w@}1}Hwv7k4A>~dFadBZF>z+M(u%lmjjvNSrXH$CW=$ej$&kuC6?BnEyL; z!|y0H3FHM^V0!%b@{aaFKI?OHayH`2rSC^@gb+!{=i!islRw{P!NSKX`el_4NAvIy zY?nRK7A{)kuw@I8HNm4xX0bC3_v~ z=!hX_6mp3&vxW6*xf!1w5vvLW4!^6a0yahSNUSpM5$S&Yo)y2A5N2k5y^(+1@S{d_ zu^f;6q&r#(-(*{AQ|chED0yfv=) zhN7Z?;$Tc4pBg&)B169fGKfc84KabhD};p|8Zw>hK}*+vo*FcIa`_YXO_spw(tD%s zj}$~|;RFwn*FzQ@t?OFoFLsvo3H^DN<>as|++CaDhXay9K1Q#yc$d+Xc=W<3djyhc z>{yyYsy;c@?fwfcFx@pE{}XH&wT~kJX=W|K7_3!R4#z1aZah!G-@3wI1N2-V4OY{t z;7QLc_pUT&bpEZ5Ni1z?<+)5tFsvkv^G=dKl zo(w0AK#!2;l*MfHj#4CPyZBz<>g=lUOab#Xcd*{qOp^Xk-=na&813-r)@5WR1Bk=& z>$|^Xl|k0vcOd`tH}xw2p$*c7WF@MmXChw~#ZE8G%=}Oto90cYB*ghUeRv3U=17SG zctA~xdI-E*Oo9Aio?Src!F9X)`b!kNcwrM~%C`a{1Vccvfp{&J^#&$Y*kiGa} zI^!)+Gsyb8v_JFJUW@&andpbIF(sd1Q$n{fWAjV-h1GXJ3Kgayd-o;C-y+)E7_I^} z*yjLW3H}KKauASomJNcz@kZo|jO6qVq>NUEOc|Hy`xM|F}IJg(pzyJe~kOz2Uy(*Kw!D0QU^5L2E|YjscKR3qVk^s>%VKBgV_I8xaQPyhTsw0{7$o*?rw|P*)RKT^Bv(ji(*Yn<7DS%E?xeA5BJC$pp|FOw!WRm)Bd03-72cu zVhwKU)U%D}GYay*fE}_CJ#=jq_0mfgxM-Ppjep?B;j8|MAHVA|tdFPyHNLOq+pSt% zB25QJ4xc=^Us~n2p8)zS3Z9F9K*qDIZg(r)wg2S`r@yB0Edw@8WYLK!j1CQuSh95K z>1i96AdXvXoOxq(RmJ@()t&p(*AU9%`;T9}W^TVsvjua9>dFr}veY+t{xaFgwhmJHXX z^2?|+Ipx0RsH!R3>_@VAHg6u*zyH*Ga{(+TO9w&xI+qwFsGwLTI%-J2e&k&iqU^^H zSrxqt;Eu+jSD!x0bU;Kn!ztSJN?pM&w|XWuE?s$;22lUMm7-4fDcK+g+>Qgb2? zSBAw{MhF2G~+9W>5&c{L}p^<6!mj?SW=$*Nky6mBhinqHDXR)=j4QB@p zo~yoz9d)ojVk z0Irg`?s>hPo{pcPc52gQ&-@daJ5-8tm;5|qCR{6~W0CT*Wr6sg-yV1}9EirZ@ zSVs16wqJIHK&c6>P+VI(E?N8wz;pG!;=aa7Q@6TqIpX?ec%FsVsGoNZAJVA5k@kGV zd;0?%-{Ch2Z+JUqMdo!WWFT~UyG{o_tmmt~k@9c4FyEmTv8=p^zK+(?gzZ&J)E|up znjK_-2FtRSd!~QC&vl)~3E#NvFK<1yqUdGu*=0?y`}OkmTA*9wIeegk&gG4=2}^yg z?-z!&o!X#uBrN>3#bJ}Gq@EjZ`OKbd`?d7A?EEil783`ve0ie%PS!X>)5^ZT~aK8bPR5zG8K)~S!HGa08VKYU5m z%Jt#5Lwk?pTIKsJJYVpaTDJCKlZ_LHw!7AE2tW0(i+;^agpQ4`p_dhW86>=@>d?+l zQ|~2JF)isso%04n7)ZRlFu6Oz5w=GIm~XuhJ7aMt*vwO@&dd@MfcHRm=iS? zINDtC1_A!E?7PI=99PR2!{bjkdg$qOKe`|>$>*C`F(VHaFP=PN#JZjCS=}vsZeKm| z2TK*%Fwi0WhPUfq3bUVoF=GBzx$_sXVJa2D7tQFQbbRvU1(DiL1(9v>zt45++O_^? z8yf)SB$T{ixN0J|!}NpB5X50xV)O^f3JPbjZc$OR{G_Y@AFGnp4-Q9QO+kI>(xr3f zGUz|q&8nrF!9)2<=!gi>IBR@7Jp4cs_Tw9vXlKq0%cw9sIW32Lf^p+EIWEwN`d12X z(e<-r4Cxe5iQT!tUx4m~OGep()Kmb*c&NyuW2CwB=cfv7C;odKcSvNkKC z0Om>~GV}I!{uekRMvd?%B*78;fX;VrbRqp4FRItnltEQYxZkhYJ9`QbwpX`jPc&Ac z#HEPfDCfLkD<))q`;V_H&t5n9bT4AIPdnJ85HL-hC=_xHeG#7Uaj+**)ANsL*%9?* zepn%7LQ;2&%6ZC51yZRbqVb5zncqT8?3`a;Z-5$`!YJPHTL%FFe8UJZdJD`74EW(; z7d4l@3yx%o2AbA}a3Roqx?5yZFQY4sM^Z?brFzbCM|{S}Whrf2E)WGSCpxSqpBs2h zL3H201nm^|uhRZ2C@2@$E8x8_$pdAD*jezojZqAdsO=^y3L5wUgcvYHjpYTt`Aaoz z@Tokur&!L1!i_fmf;tb_g)N)#8*pVIa>v&q#A`}@YoSRVEfA^UvBZin^!ZS>0o73N z-Zk5`kQQMadjigymv>;n1<5OcRAv7ebE{=VxXk{JdY<8q$(x>!L->M%$SL6*81kk~ zJ5b=y2_sGnDl2dba79D`3e>2@`y0#6=UQ!zzMQWa=|5KN*+x&%xv5FF+DfJt-Avy& zV0Uv7QgIybQWGso4;Ae~nb7j(N^E;wM|RyW#k94#*rwM~IqWA99wDcmOh8C6Q zezZ+|ci!vX>lcrcW#Vcd-n>4rboGHh zO4d))OtNjZe3*JEBX(>}{hCjfT&914H-%1dmWTIvTUQr}4s_YF>D1z=S6F6E=h9Y^ z+sed=GuBm>28sh(fBpm#5Uy5-DuUroBHbVSD`=_kf}xBUr-_eG2O0|wfAIBDBS-RR zXx+b4A^dYxEIOpq2|qh4E=T^mGFW5SzyH2Rl%PZ4=U#o+f2kM#4~W!%K(GGx4DrwW z#`u#R_U9*~|NpOEHuSvhzLW#cca+3_Pq6%DU##%>>GjM=jlp5o)f+WJcIT!%dGc#5 z+#Tl2yQC~2h$f$)+}Wl5?mzU-uHn7vl_BspLvYlo4ssy>&LYJnFDvWf>!lc0?RGYg-mqCf&_KlvIF>t~a!)v=o9KSlzanjeqgZSl1R^^1-Fy#cx z4kU(H-HrD4$J)hMZBuP>{rB%jO6ryCT=##Dx$U8~LSRW5kF1m@WYeZEX5(J2&4mX* zH~2;vx-R5*en1f@KIgzYSVI=DKkt) zCS@TUY#G-=vyV641hNSjr3_)yym8*>P=ApJs+(>YeB>lSTNaj z{fQF>+;CGbV;#cSwfBDZgx`ub6vLpwb={AJ-8ggU(tLIGkvE&oI8Ja>94+}|R3fNZ z@|X~e>7R==URgQIjI%=Y_~hItPwXjQg;jLV_{)TnPIX1dy3oWKWzHbJ4gh95u_i)j z_?E1)8Gpb*`>q{xAvK78MqQN1EEtDdZVkgDHQMAn03)AXq~}n{>_4>I9Yn9?I*b!sK1eELd+6Zk$1W9su@O3#YR)C zUy>1GN#}-lx@{-_mD0AKt0RZ5m!~JrZ(1leSvqtYV>G=I+N=eE#*+Ki)Rehr6StKb z%KwHM&He4$)DrK!ZDFt2XOE74&53?JG4Vlcz?=ymHs@n>XEB1MAhO)%=tx!1fa&kx zR)J=@h_{67cva_d2lRwdkbr8bYJn-2VftRadWFSYv|Be68C=~iv7QwJN#oo#K+?0-5ge1qQ6Wu;9KFctc2eO+6B%72E}nUr4MD)C(9c(G z-{I}u&e@G$aluzR>Kvw~uUVsc)))+n|Bt%Pe<|<`*b%4(peX+o(J-*b-uVao{mHqU zyV~14COS$_459lEnsOQ$!MMhl;huY`?x;5k<}IWSg8m{|2jL1O98pD$x_Xm)mgGoh-ybV+*f;DEU@jQBiX+_@^T7BI0E!jAlc6SKBm3<+5b z0m29zj?J8(vvxGu(hwjQu-P za@Z-bZz-u4FJI0d_M*I8W6~r?G}!Eh6oz0_Dem8Filb^5kUR`O#nVcMMx~EGdie0D zOPBoHPN1L>68hmG5vWn!O_{Q!HG0wEKs)(gKbEGz*!zGgy;}#82w%G8^>R~F#mdWU z)=hnN)av?E9gcL4+>b~Ixhy&H%I3-Sj9$I(y1_E7-7+ncF~>|CE64Vgoc!|My){TM zDdNzksyJg<2DZtl`L*~Q)&5EbeZR9EGkdm7d4#|fVA}M+Bhl1sKOe9b$vgUQCNQC> z_a$hD7dZ0F2>ga=7vN$nRoq^VmhMhB<7mLpNrI8xzHnhZIv#`rwA?K6v|G_(gl~1b@d4%#97zcs`%{Ve=#yTvS<_IpIt(F*1>HEDm2H8tO2UETHU zaN$OAU@1I+JYR)X+qvs^7Q?r}pK%Pib$tfU&$O`waADMXzIfDL%q;h0Jm7xOkwPLH zF@(0ICW=R3-6>-&N$-bd=N@t-e6an5D0sW-8|qf>sEN&v37dSMj*0YiVttcbQ&Lp4 zoexM2LOOqug{TKe%U9kHjm*C&%8>6ax*WcM}f2 znbuon1j%}myR6$AGX@!PXz=9FXaK7*CY|g1Fxq&@k`e^e%)eku2+b)fEF8LK>-UqZ zOicFd*+dz3&GOZM4fAGh;7r>N7f*2vrNxe~;qfDAnA{H?My))sx&U$h-~o6P1CoaU zgJ<~l4&Q_uQJ=2>3&|)FTr9x+vGZyZle@>q`j*fg?KLRK7sQvfXqmG_M@DR;k9G4v zkPwOJg~YXBQOWth8#^UVqV(3ry%AfOEb~Xz`<+cEJ1gtm1U3%}XCWbIf;xZ?i~*LY z_eFH({a061fBEA0a)e|6+b&W#)$kHBH2^mV$;x)1c@jbS8q@_VDUQt4~j5P_@HoMLqkNZe2Q&`+DQ8p0ej ztUyPN%LAUQzi{Di*qHib6bfj}kDoa4Ce24qKW6pa7lt|Aw2#kph=`AOif)f$zha3@fMmO~~=i7H>u5W%dMLBG! zgv3*VyCqOfa1qau7rMBnpLX)i5xxvRr|bZzJRjhK*bB3ae-yFk|BPH2J*SYY?eE2w zOnztOL(XD@Av!vs?d4UoyHdrPKaLuw_#ej2L73R=-wqg&?!6YNuDLT)Nl6L2g6rRV z?JhY2GZ>%;5BRukl$zS9^fhlkiwOq1rtjYy3P&2Y+Ry)6ep`A{t|{O#V$3pUrF6U& zR6qg8bfEFDq47umzD%R=<(TU4y(_z0NZPtZbkq{svlB1WkCp7-zrk!yWF%v_&z;+o zvMVIt;17Tt$+*)n6&2ZnHC9#yRZ6Sp3QRXSEN@c1%tlI9$o0!M0M=;f(sKO6+z=nJ z)0^PNq6@yO zbVDXiX?2WJ^Tz}84X@hO%pKP);KT_3q$7Sa_G?a4yey^=@|U{R)3Q4oD;ASJnAvo9(1;RUIGVE!ZMhs*D{hx$vx?UJ|5 z`k^#Lt#&vp47Fjv)debn3(_Mvk+l`EUP zf5W)0WQrtfA9-H_Apeop z;(4yqZ!iA=+WwxK+D<0llGloTFg@7o!sXR8Fn$&q=VU6H;_fVT(Cc&NzlPPz+w#`w zSU(*3!65Qc^J)EQJ@?L@Z7R64qNT>gIRF^qe1aS$MS%8l4gxDGwMPFl+<-EI z$|x(`Y!6UJpfI>_qGzm+<;oqHSVttaKeNo&dwOrvir8+uC7fJcCoy7G1GEbhj#Lgp}B?Bl}B!>WtI&Us9-Uds!^UH+sa+nfa!Q6Nk1QS&+7D z{^Q@(Kit=S@_V4UL{wW}edQcAg0;1`4iKOO^~@D-%H_!WKsc70IQf z@bc}Ao*nen4@Py!wO+8`5tYLZ5`aNs(hs=Y7T|i(ml7xla}Jre_V#JuTDy9DO2Mvx zCHI73R2n1Q@x8Q~5PTvL+mKq&w8HauYoe*rMPo(Di_UcDNbCT(D3TbNRSnFCax3S` zNfNIKZx}?kOk6|{F|q3j2}f++#U!mLYDr(};gRAy5mDn|V=8TbCd@%T5eRm>_IOwr zv)HD?-Pwz}iQmy|T_M`t!u)s2QigU%=4b!Rq!z&OCVHU{{mXhAo9?2b?~{o50bwrO zFmg~B?$e%oKZr<%UQFK6*zq;o)zn14xn+!kLetX`QS$sOI9fJ9Xa5qVX}YTiIwXW&n^giQX21gYPFkc+3Jb#6+rl$Pak!czq-~77k(0OLRm}*a1 zxyZ-4r5+oMo`j#6S{bC+-1B$ooVRhhLR_mvh*s@ug(R275lb_CiZ(dc4K(<|w3Q=c zo_jvd@ssQ&a%MnkmeqqHKes5nGmSfWtiz+lpnZmiV%#1-VkY0*KKdtYvYVM)hsC{` z2fOXmF;bHL5E&^qN21&{gmi;z<*8neD;&FqSyRe?PubDc#{o5t;ICNu1ZCYe7X9Wo zlq$DVQ`6L=p`O=;?HO;H~GlTmeZ)$@1~}Da}tppAZ3c|G9p6xU4H~0okVE!?r!_Uv|CqT ziea|7f6B**sT)Y4UrzS=0X<-98Zu$XTIoaWwd;B#x)b3mvHJ?M1j3Ul( z%45DCLR;|;+;n)GnXPN8bc}iut1TVi(+dhmD9{K{Kvg_hS@{}@3?!#{Hi1s34=NHI z=te&zC_G3M+qUfnl~ib`$(l85cu~fN0n^~a1SjA~00@SyCUR?hYX;YgbVa1f3`<=v zCl?8s^gcgVLF8bz9Lo>v+iFQP40x4(-;ub?1<`A3Br|%XX%CipWkT z3YH|=)s?4Nnwc4#dj`TsEZ&b1eTL2uAF_r9+j`32AMbCOE1&+zU9M%m85k1SQ!;cY zg#eQVHx((;IngGjKVKhZTda9fUr8dpzitEKVTh#|i@U9KKM(+GZoG1Q-AV_n;jj65 zdn@=6*O-kMaElI4XR^AVqVl_!@Hd3lcNQ5rY7_@l(Jm5;E}h0LOKb{*uj*)wust)1 zlxh~wneN0!O?B@!Hy|*S4MY$XqY!X(Tr=f_=SJRx0)Ql_ibrv@8>yG;cqim83`mD@ zWiwOkefHgO&Cho;OS&)ufdI+q8#=3sY{>G4#Cm&f)0qmt!XDlRL*7bG6_bCVS+9dJvt|ST27_@U94=+<0 zu(e-ydwoVZ}h~8eW%*^KhPC#5T1=&&ec+T z(ix=D+|Zy9n)7-4VxEhZuE8J^GmM9M92mbsf0dI#=eG?l=8+0zy<~fc>^D7hN^8;e z3)U~)oj&a}TQ5;Ak0OfOJaBtwzm_9}OQ7trv9YmwtvhEhj|Hq3dayS-EFP=vSrDjlP|U8Q&o62fOO>5W&Zv* zu|0>|?JIpcV}95c|Bk(-Pkz4rbYS?OY;PfP+{*vQzo(6hWfu23c}ECW7gh+L)+jh} zkMOtt{INY;-cD5b^`AessVT&}ytFe{dy-eDGBeHYO7ob(TUkllD?f2!xx-hmcggm2(t7%T>aE}p{G+YC zn`7!vUGnDV)K-19KMm!X>ib}X;+U3}NR z`<~=CFJHQ$|3ow^vXkb3oj^z?nER>0@(C(FVa}(+QVWYRzL;NoPu3ybSMuuiy~W8<5u;*CN?NgG$)+t^h;ysr@#Q4-i}>WQA1Di+P22kJrPf??S6uV}6-WP! z+XXnmy}vj6eMSFC(n0X>lSxV8U$FyV*b3BkE4y zM1OSe$h^PL|M1}@h(*~}jbmgO=J@_SV{!IY?$zlboEN z@~_&h*4}spY{{M}_hlE#L{KylktrvJNlK!;0IunDj;O?aE%g|dTRt@3Z2(Gp_N+rD zkIyuD#*9?&->P4``e^>{%a9Nxk=-}cAaCVl55n(*>*&mxw{zE5tqVPMsv61eo8J}r zGl!m@#0_Gv6U>wl3jBbc0q>GO6fyBcT-;Vpc5UsBZ1?`zeTMA54R&Y;R7@7bq6G`4 zOq+HZaOwQ{4{S0G8^wF~CL)-+{^yqhhnuxSRCo8@b>~hSQWlIrY`0X6ASN81bOx>N z-vTr}Cy3o}>E7+~McpmX$g2DA zy|?i$aLgRf770IMGz0X`d0iCuUNUF%3Zhl}S!mitGXvJ(=`Jp;?N~x6C;zsrg%T{eMt#z*&ib#d#HJ`VYn9T7^n<7(5J$9K--NQd-U#&`1wP1D-dmZ z54nEpG*qCsU?;rf?gmR@0JQt z)7ABE>P#*Yn1kofy;3(1m$2+D_n;(wuD3<6(%!c+K1W@Q-BOvj{fEkz;dY`TBtR3w z=Y=!D_KPMpOq?C1J7{N+jM{QT!x*aKDO2L1wnWav#0=xp$jQ}x{aOld`S~f(J|m_Q zfwD7Z^(JqU`dvpyhw_4;1lFfA4?G!SElF}Jj%TQOne2f=g6(HmA25*r#@>6!_1yRU z|L=B28d9V*C4@xjC@Lu<*$zc1D(fg@C8Ry=T}B%AE~^p^MYfEC2n}SF3aPYy_qXFb zuk*UD-}n2^@9$rKoVVL~pgz6dukn07*3$}=K%Y&QC~Cn5I|N=j zdzRES#5~Y|S8#4kpRTHQ3B57vg0nX_$Ys%@PiP^KtIVlVy5y6zPeIL_NF9D%2;N9t zj2?&Z!(yW-w{4_7r%0UplobIGkSaRAJxQoCR=dmbPin?KO?W0EucGgs@?E?bd>CX2 zCnvr~%!jCpq{q11D<6%Dy2$|#rb13D!)YiSXaD)9jF2?-1OPLrZv2j8n8l)^Fkp`K zkvsRD_u?m`KO@59@d!EmYp86uvg+^tz)x1{p>_eckZreEljDa!G_- z%E9K%m`h8tRu9_i#8{xeCQaH(1xWRcdxu&ySX~>WNp#U6#ilP|AUKyi#-fjun7o@g zVFaUzt8DaW{yUD9bLY<0usj=`nGVGOs``KCGdUCbi2%8rv28Hkfyjg?TseCwk0}Z> z!Mlo$nEB97#fxx^krQ!DCSW_6nB-bE6r|zJBM+BwG@sXX6hIgkGFfOa($Ht3fT}t;xSg9>yp#f({d90cVFFA^;rt^`o_uA%^tT{nscJ)wjeQY+ z@I%j?I)$;E4UEMkb$gayxt*tH3NN1H<{^1aGiJyNxx+peINW5Q24Pk7X@k^Em%kfp znJ{rqYKLwyJQz+K;D2#( z&-si5?2-M~$!gdr<+!3^5L7b4XyO~P6s?Smj0_CkvD~@n8P5yn%_)P(K3BzM=1k7c zYI@q4GuOaNa(I=nv1}y^ycnH|eGAVJ*YGSZ{*n?`_&H)1b4$9xxRb#FWw0NQ4BLa! zT=v)SI{9wugPD=$w`|!sM@J^2qp*bN#N1%HqO$X*-bH6=3yVj*Wby|UJh5+i>jrKk zYDhfUh~aT}KL{uQ;{m>}2Cw1=0mVEwE-8}9AWD63-Ow_+gyk(#Uv?jP+Mi@nVJJEK zdlXj*8caOE^q0l^62bAvF4;`bJq%h{Z&EZl)&p@GfGp0O`9gF}XlM|AK)_E20jojM zWFvBx=9}(CKR|vF{SPpKxOyBVZRapKXlHB()&_Nfj}CBV?1Tw7a-8k#Jegwwu?L=OayThz4umhN zfz&+EOyUfb<-(vSi(<`V@jh&7Qp;*RF|J)}Y2m)|_To#25f*?c%U{%8a=$qRv>knNR!k z&)yjwA~J4?mn3m>#q(7JA)NkjsJVHUU5k??W4Z2{f1Y6%0XIM+(QY%kE+W{Dt?203 zQ7FT1$PvxD2sDoZbKTK<{G2geT~`fJUDjdqKa^rYJBK`7jst#UM`D~$ z!^!dni*2V)ail>oa#tg$y?*8Tty}V6%t*xSzVrbDdJu+z7Ilf%pB_&S#`*?k2{ZEt zDhE5Fe*&vY>TjdAF>=yF&omSD;K?86e&X_K>NQc5-Cc_Ww3p>d`L2>d9tvq~O3!D9 zy@-15a=H9nI9IngkyGiJ-L|EvU-g#s05RfLf%GQ}jyrr5}0Ey>+a@=`#zxsm`xaJ?9rdcG!z_!Zm zA5hReB|~-q+Px91x|Z$>SkQZ&Zmv`m$jXdZT#WSX(9{!BnVT!aZ+m+l-9mvt*(@Oh zE_sE!P8fuzcH+b>To^_NJ49^Q*!Tvt_Tt5%Rc~OL7+~Ghr1e9tx2k0Vvs63T7$NyW z*bVL#7{)tX_*oDjaKYQyb#)zNkIlC8xs20{TD-BTsTC`TYRC8Jt-4;D>~bb%HY8t{ zX%6?Ef*jFu1J?4tDNl8|sqlVf1-Dzr-Ho*A8lB&l`fT60BU2@W#=Z*$Tjp!Gjn^ES z8WeI?a*n*aM8s!B309KV+!XKTo~N^7TyL_gc8oPREs1{;zGZuo_pinBWs2l4AEKHf zy-({R;=}8H(vrHnwwk7o3Ysx~Lf`UnQ`hy`Tz=xwIIZiKH*`FGI_dE4wBUn}kM%2A z`faJ4`Tou4{%k@k5zzc|fc0V8O6tMl#MF78tE(gH4O_bUC`$+dlagw=I6DlS9|GDo zI`xBebFiPEmg1hjX7?RM<8^0-dL2Xj?i7vl`3!Vah|U9%?h+BK$f ziFjOgpmUEupG51SrN~Cg%Ap4GWIu-<;QVl_kOEfvtF)EE3!@Zst+@qo#{R_ zZGx_1c8IkP3r$)1HCmzPXgvy1@vFAHs9gH#D7vCR)wUs;9ij2Kbf}Qo4{SP4H7elL=1=!NueWZ$b}j}_ z1{)K6EJ*#r+|7eW%Gb?qoZs2~``-r}dp8D(!G$%&(!P14#BJ;nPYw&mEx8t8Ser_H zCTjNgd=M)oHwGb*udlI(&Wz(!R~*`K{%n$U0Rgy2>f2j$+M^YGyXs%Oh4hVzgZJBb zRHNm|Zs$M$tZqmPSCdccQoAOf{U4>rD_r4cIY^J&d#H&C1Ky^xAe^1mUtPS}5STY% zke zuML~y6g3(HX_BBTU_-!_xjnP9vPzKR(5R+-aiRB3Jkdc$a?+OnKXqvLd-`zg~vd`O-&*)@2Ll z@r2&IP}cS}Z-(;`ebT6BVOc(qV_p-aT-Zf=s^C(ZXM+?5j-R_VW6oRUs3P(Jdla^xR_kYxd{-K4%|1m>8HN?SHw^ zSJ2s)A)At%oQKow{P`VoY-fLzGmAO2jtTQ*mUDHd&YiCkdyyDN>?8MHA`&54H$IX~ ziR(g)UCpBSnV5jdotsTD;y@q4Z zUa!8nKim&;8zkn&_N+mCQ#Hbzn5$ye`YC7X7m)_a3A%=0^3_fK4Q-td_wsYzifeKH z^$x!VkZ}3?=AK(}CvHLZP$@HMykB(5jh`maUz_f2k*JpoZCw3*3dK_La3iUN*Vo>( z&)zittXG}t;a^d=^K3HD5B=(AnVFm@G4W3L@?NvgFRiNGnvg$eFP#@vAQXMe)Q+d` ztfRvxLg-m9Mkm3!Y&^d}BOhd>WK|i{3%pI66MlWrr;qqO@m4#>Yowi>q^pK5(;Xrq zHIdwuN56{k>hSS@lc=SqZb@z5y&GFuL}{Bu+jEVA1FHUE_#{r&kYPF!1#{Ybky z24~AvG>=OOoQ%y*y63*dzP^w}A3lHHps2}AF9zU%Vm+{d=gT;Ky7RTHvteuCADEg`v|X>H*UxXMKupLH$;v;RIcC~Aapt^WmhlP*=;p@EzQLk4#{^k zr}B}ktY*+tyA|~c&t?}4(0`R5{-+MjAP)K551~oAfPTamR;=z@w#AB09-NW3MByLulbRbO2;g`*@%PXgT z`_k+*I^?V3nmg~F%aA#UERF@rSY&c;rOfv$G>o(xbbzXZ^p}^YR;cNhF2%WoG&5*W zO*2zusMmQzSX9}5aFHo1Er}N39INM05Ql9H8M5>Kd@$hDNrk5~&H=C#oR!4c0R*-+(cGLI_Bj+D0=p%%nzs>>+8TOJ4)Z0T(EhutBS5 zPc+}(P(PCEHJ!wSzI_=|Uq?%v>NR3zC`~a1*~yb`vu7_Fs*%{~+g5{tVJ`RH3m0p- zYh_m@At+`}OMbcAwY6pj2Hpsh@i2X0|0JCIT~|B^of`4E9Zp%}0+N z6O}6%1~L*uU9xmQ5V_R3hd3=niemIW%%F!3d2vU+xzOX{UmZKOA6w3|k4FO^o)@BZ z9?vz}Aqq`4baPV^aCPk(&0Yumm7n_(gaEQjLlxe&3xLQ763#&MP||e}wn1OK9a-DX zMi}J)R8jN%zP`sNde|A~+}FRoslaO^yudm~vfz3|S0DcIwG|(_?7TgF+O!LoF9$J~ z9AZfj_*-;_qVv(wk;+M&qi$^c&T7_5KjI!R2>c}C0W_E1ka&?Bo^vx*PTI^VyK;*4 zM@s;n0TxLG1r%gDY*^09Pdj4dT-N)Do&PP*w6AZjS%JsJe?WIqR~_4Xi98a1Ha?QP zwR}QqM{ZZ{q>pi$4DfvaHZfgFc)w)sL+|ijOTAv+j()dxPr+H&5ku~;JFs$`x5|mj zf9myfJ$<}greN2_$JRTQ6Lq3JOaU**yGEzU?QWm~6iJ;aF*?oVG+?hWd^&&PZJK%b zus7nVl+!nF#{71;??->?b`rnDD&?h4j*f6`34^^xGf*(@E-r=)c;L#9f0&uA;*f*> zp^l*gfVhs`xG_I2M&~CWQb?PVF3(LufF7`Yo>Ei~yYxRu>0i~`uMR3w{|f~SPmo1| z_>AI)DbRb$h{=HzX5AC%gJ~EFB5?NTfpJ-YGtAfiDo*9ywW}bpb&Q*Lz&1^fbd|(3 zPEeunq^ zkx@|-_YGa7vkZ_8lO=1+y1-y zVPn9ReN=XFW72&6?PJ-JUzsbn z>a*&eMlKqV2EP?6kc<#r)VXcCN7e8mg5)}^Ux&FE7!#kfNb&>z4MdV~@}y&tp4QlS zI&Xx^ghJCI9euQrx|?;7|5KI!z8E|gbgk(7ayow7E-|HX(5A0mxuL&d4`*!ZXKAUC zb1BLtSeW}7b{Yc_xIS|PULu#kZu=-bLR{%e&rGim*#bwv7ukj+WkL>yy&nHciTN3* z449a}d=nD)>6rr7LYpheJZ9j7>;|uM%ii}JH-5=DVR)|-4fz>ETg}V23rR8c89jbT zyE;ZC^jRGw*bE<~r++{B-&z2)^UZ)Eth+p``Z0lPMPmmEpu8o8^~dU)B_HY&NTs&y zuv%#Dg@3q$ph*(4W3!aBcLpc=ufG{3gf^-vnWpDInOwE0bMLsE-LLl5E;9Xb?(piA zpoYMbhY6hu;+V>FkHZ1X(Ps5%k=n0YW2+z`SvLiGzhKbt%A4;cgt5Nwo~$1mGa|@g zU47|#nZsuv+N6ayE)PJ9ZsZyy4#BQlDq|)sUoa-})=S-C7uTTl&x6sVOlD``RQ96x`|cSz;%n)m4B)%ARJv^S68f_+A?|idHPy8^TgQ~fQ5>x z%qVa$`rO#qIB9QxPjEZ-J8_M_Hn+;!jF#5sts*FgGAy{w-n0rhT=gOBoWC7#Wx?|p z1O__)#o(horsXwQ>XL_4R47Mz* z0d0;4f(E$$%g0AT;QHhegYehv(uYu2Q`2wApo9?Q-Yg@SYAdMitmnD8b8u6G8-x7m zJ-A72^Y-mq@ra+37q)d;QQHX!cabcZ0}YV)?V5HsCdHMPgK&{a>1V!w_N-ZJX@S_O zp^wQCp5p3iWo*2u@a^1CAVTUMc1Uwb5A2is`#rZT=KA z0T7io31S71gnObn+4N{~vN&=9pa-6fdS^JRoI;2ltNpo&wGwI@6IPq~U)+7Y!(I~f zz=+tZ%F!3;K49YcvhhFLSWpk^K#D#YibPz+&jH&2dWOC)dWx&^1-}?HI2u*$;Q=O? zf3T0q97Uc+Y_&XAu7I-^Ss`Ax$C{d6(ynghkF4m*9j&q$M z$EYb84hyy=&IJIwM0vO*UPJ`w)WOxs|10^%1Nhf?!`+4;N&hD6+Ashdl%+8 z<{n1sJx-1JACHp)n#x0zLZRI{eC!xQO6RVU7jkJ`fs$z8MZ@gEg)Z5FnWE%TEYCRQ zVeBAR0fnLWB(<$nIULAdJ$&laex#s1d&1CGe*S#&$dP(?Mb?eog<$cacGtUJ;>(E# ztw;b^P}r-h>Yx&Ed+TYF(A>1^7@Y-ALAF3%Dj8p@OmEJUG~C&vXU|SvD0eZ6!sLL8 zN(l5ttX&jm=q4$AM2v^_iqeb393fY99u_ykcC{OhsyGGb%?;3bNFxz`2nM_3@TjSZ z*t&HRwU#IgSfmzxFRp2%ZVbt@ygDjL_>4kH3^e>dcV}lgA)ZeKA`?t-1GOyQo!u54 z5kbDr_kiK_45BG7#X?tiE~^>jN!xxE_IJRj3y{ZPuHBb|`!`%t!7Up%BsvNWQ_MNl z^2J+`0dPqp3iQZepdCm#NqJ1mTtStOZ_N14t5?Gf4D4Y~?#~BDrQ*IWJ89<3KcF?N zt>3(O0f5v>xeA<2MGJ*}Q*8mjt2ikI$u+O!8s zy{xRVxKk+TcmMW)*!>u25!xmWyBjsi3)+sOLlFAyMxS2J+eEm)Cu(YJG@fQDM2Lf_U%KzE;B?2y1uf~ACjf9tCWE2f?04K&+)#|gLM{X zW2ZBMs56xOsue2;mZC3a#G&Ja30U2y0>A!rQi)YnQ6Ys6R2Fy-a(0}ugMt9B8&7=; zMABE)5d#msAk@9|&JID7QMVs^@~Kv%c{nfy{GFtb^yCu+K11ofOuDoBX)-u!Xnz_P z+_`n@v}-!F55Ata9D$sUW&5l2=FrYge`+V=Nj{T`N($l!z3ni1C`}{JH0!Cw7(w&m z@f|;D5?J??Da+p9*$q51Cykzf!<%-Gw+Oa@9k~^0QH1rh(W9g6lKCa)>egyZlt(8) z36Bi*OjcG;f#L-!AM3UW2r`H?E)@x(cFnDO_uR-9Mhwls)|g0*7&r}dtra;-!aTO+ z&8d2w)xeUX7Xr`~LSU3Fv>!Bl4-NjDLXC$gmy}q3es4oVBJIZQa*+@9kDY2oillVK z7X)61PMukw41;;MbhjIxEKNbLWHs?Ra+tk!ln46K) z7U(RSogMgsfx$%7(Ts}aBbFQxpA$ezxOM9m{YoeXPR_Nto?M<37ThKsy2TYW3}n0|-wTpA zsQ&YAup+W_JS6#CFy06Q2p)j-`wGX57_71Fm95g3hrG)zy+&Li(Klm|=%HodKsUzE zmlW_JiK<|tIVe!8K?B~9vq!{p*+#ZBALrMlJa*mj>7QvjQbj3rM*aeH9|Y&{^JRsy z=2jXAxDPrH#OH|TbaZTy#oJ7W3~J_xpj&47QBRQ{nU^rd4jB=O$lw(#hP+x(@%3vq zYle^A;cJ3YOA^}lamkY@p6OCxRB~+3;21XBL>T_+RjU}VTh8h@G5sV^jHt*M;2PCi z5bhlu0nPpmr8M=DUze^q>o$js^og51rE4eq2@@8xw&*SW&U$fZ^TOjVjWSkB20TD? zl#G&;qJkzArD$DkZLYC`Z1^(57&=BSM-xEVL5%~sQ#aF!oj-K&U}`JWy0U7_o<}qN zw(2*q!NE?uj^mfcKQHop(ZRg_{oG!Xk2Z703`6uZLdY{2Y4@$&2TLxk?yjK$fqD)# z8%?89TB;C2+$cYvqanHHD%Eb?s0(j+o6-|+m^YtJpA2g}2^4^=h>6Dtn3R8DL+634fWsswpiWXyLK8Rt z0{4QVvuob&3hp2m^>%g&fnF?EE+Ir?(|FvZ!2Ge?d(om3KpePU3H6!dDrWN083I;X z`z#>D0off3;qBeOQ7)zJsmCJ80%h>1+KrcJS6wbHoC2N{5Ma@nX_we7(<38g0_$OO zft-=+U87K8Tm_RjAR?!(T(->O0Ko!y|4*c+tFJ@s#Uc_yN+)%0k0^JUD7I4FyOV=4 z1%p#couMkz2GDi`0?!%ZzzxrFn-SQ=WN)jB{s;@x+_N@so`9)CQ=(hHfs&Yo{zbV4 zXVaqJx-~X?D3v^5*}B>?36Y+ywP|nK$_P|+Dn)k6Ule!V26t?vnqlXnmE#cS2R02? zptwa}F9=<e3W0F;$A0aG;_-5Hq=rGmA}%8yGuuQrYvYT zHObp2jJ5rTX+He{m1!%e-1VW*t>M$UQk>e!kOj*HdYL34i$}Y5>{$N!XK>ZcbnRj53uGjW5}#QX_JJ zAn3Zq`!4y^De^LZG&TnK8Z1n5@vK%k@=wp@EVn&QlHEf^L1tl|?w^$86Ug=PwWj%y z5KuQ!9>EV3-`oMwJ1|Z(Pgl7YXL2@$s~5G$Q+a~-JwPRUm|4Ot+W#V}H8w{DXHkFx z(^c)R$h)$MZ#2Ch*&}Y8=Bj;B(ok@KE~u|tx@_5CRL7>KVI9biSJbpfV%8q%0{9hq z-}!$}*4u!uwa+-H=ken^sg3>3^k&L54z#G;K$!HAq$EZ!G)e4t=QsF=jXr$~cMaRAg&l&Y!3N)PBE*h2l7dqhykhTq@cOU7)UB*dXnDI^phnYtTuu1;Um>cK*~9onk~a` z{@CMWh=o0WUTw@Q^85ej**^= z7VQPVOutswO~!y_VP@8C|B@So3W@9t50eHNFc?2Rv-0e^%lKe7K1j_%1`WN+sC7b= zx~i&J`pL;niZ>a_nUAUrSe`h@zimjLCV=GliQ9$XPl%J-D{gd>lZ%G*0oaFW?VhbZ ziVm2QfIc4$u*&*nhCc(VEQbwqhTW@?ocljl+oM+x=vvmTU0e2-l6CD92aH`r|A*T%v}j>d-lv3 zF|vu!v;O@%WvR<|eQwJY9UAOw6Emmg3^0M?ho~p($&|`pNom(#bYyL&}PWV%5KrNaVPlh zdroxCvTv~)aSX_qDiQYpz$Yq_+|QK7Sj* z)R^_Bs_n3hy<|4(=F!Y^0U?jKT=f?RFO@->G-8FwGa)G{dZnuAlN+u76hi2=FR$?Z zA4{k( zWVGv?re~XP-M-!7=Q`P!Z?N}o^w@ooL;cb0i9_}}jg0dwwvNCgC)x_*P0EpQQx7Z$~?Z3L3Q(m?{3%Kxj zk2P6_Y<;wyWvl&BsbVRM4M=hOO|nl%Y#Q?7$YfSC2$Rmoeua-7rO^xV16&$*Egc~% zgpkxua>V^3A;Ge%Ve91Gt3P~Lz~oH=Y^aO@#EHJq&>pWd&@#aq9E|dqMg(aI189hb zzdmsKs8LeU`An|KRUr+J+0Z|}n4R+AS&KwKYu}6o8jgob_2`f3=DG|`DMiVESKQ0% zJJKo;Hs3yi(ge5Kzr$)Gwfa&k`}#zbS>uDvv^kw11`1}zWsitA(<25 zz17k_Kw*@>EO5XXBIAb#w_W`>N&nf|P|w&)<9EI6AmY;=TCFuDd_4C5{Ra<%O1nDH zesKU%hqBn_;`{5g*C_~U-zc3PfySwBKv7}3EBpw5DXe6GPUDssehBIsnI|M=(2X7# zWb$7$f9WFTY%nN|UW8Vs8SyPF7q*ULTem6(J&SR1Vdx_=;caReB zE(4n0BLV>Y%Fut=G6^9j+vO@;UC-#UC3*`NbX5C;gTOAC2B%!AY2QyEQua=KZ{Hq0 zl}5T1pOR^qkoV^|_{iEx2qrTA6coASE_X(T9JTc0KJ<0(-}gMMe$occ29Zolb$aPU z#ymfI6uLT1VcGKKVd@|YbO?>vix3Z8x+IQ9_?0jM-Ub@xZzPTmMLn?#bCOKOL)p2@p_sfZLZ>ijMmJ-dTvvuY_1 z8VAG_9~KAcp$8;0=1rOM%5ElbLs;TQ%026z`heu)Ji9VE8990IcZxl3^ztIbSo`J6 zmeGJ+AAa(!VlG2{8h-p};oxYh968rcT0?9-M6TgCfZ-qzo+z=#%KJT;>B}akqQ{kyf5?IM z5>>}O)CA6Blw!scF$h--Ri*C#O`KB6g-pm3Z;04!QlwGMgNbuRhKJ`92tgf+L10q$ z2UY>QHoInePa%mwVcIwPVy;mdQ6#8mUocY1+eB1F!y^!vMT=ipxBvh|1YUoAf!;4H z97CKpQj(g^aV~ByWC=0l1pgvcDoMWOex}j+4%^@aGffK=#(`x_e*YXDmQCu+(C3;Jlj*Ftc>SqY9q zlSbMz_!XUrI0ntzR6^hp(fSM+IPmMIPd%CyL57O+94Yz$YlbuMD$iVz`DRREqb(u< z&9r;x;_qB{ydbnb@9P5SZPkW_l?p@lPNn7_4(#H1YT1qMzy=i3NCc9N3 zw(LPuNO^~iY9sG6^WY#k%88X-<)ytyFk^Q?#WcPigwUJ2o)3gxf_KY*N6H^CX*bOs zP5uGXc^i;Q;b7o)n`~SU=gS}PP2q#dMUWMU|N6dWo%SEg-|;gzyTMudrnE>1{2`{= zQ2r)wKQi(L4j4oxTsa*)6i#8A475n%g_q$^oIl?mPX&!8r6^S}%n#UkaxxcXC+?*` z3Y=MCwY7pEwvdjFqIK@xy()ef<(8cnSIWZbh~M$#FizckUlV+yPUIrA_1D;hRvi z1r%&xw-J&}y^2(eIkt(Hn6ia#*c8oDeCLu(=t)Mina{u19fL3>=aYpO@r>B4{SlL2 zPTNq3Y>0Kv1~pkWawOwIY*4KX=_M7*@LbxiSi9t^H`jW)nmu@1M;Hb=2bSy1nLT#i zhTuWdi7aBWvoi&1^ceSVBmOFS)rd7d4qEnRW_F^6v6k}Ck9==LrrRDvzB23W`(zrnD%fXd9si%$2) z?PPBsffozZpKpKxCF!=Vs$?tsowynwaH7iRU%?i!jxb9Hyuetk(=00zHZlM3h3{8n zoQ_WB0OeQbtSo$6MAQAUH{b|ODz!n~eY3hLJV|(>iVCJbtMXAl>V@5(udc368Jd}q zu?aT{Z9ME1t1ZB%51q)xi%*|FclPkGAtVmz_}da8zub?Kh$EE>ud1r5*NC;!&4@tH zAol^XC)hLIWNsMjBQ?(swZQQU|E&esu_Nim_?D3)**2g~EIfo(BumqSkL4dS;*; zOmxSGbNKTRKCJs>E14(Xu_Laruj zms3+bXbTDd8Tb$dBtgu;AF?(ouV|{j!S{JN~1hsF1Q-dBsRXivK{$`G=L2qG~hucEboW`QLw` zAm?Dv|A>3Y32A#+@}Inim~&d*|4D<03GQ?2<$wOLeWI*aH5Ex80|U6Ku6>#b+Diu; zJ?_?_oOXNE!4)6Yc;ocAa3VwI99wR9)RV zc2ec?Ol|);y#_1souBNt^w0;3SVEv_T>w&xrdMnJ{hPPMNu1HbZcIre8=hD0=YDN1 z6ci5UqNR@5BH&bD#17&z7EJ!-s~*i12+>#FSnz){E2kNy{U+Gx!TwEHw%xA1#=#3= ziGLaph?IH^v;|dq9A`AHK>%~W$XS6+-y%A6r7H*Z>z#5KGZ20QN)l?0y-ujS=A&$& zF4RuK?6P%?Eh4$1D^S~q58P9Jw0YoUQUVtJ_{2m-p_utugi8|Y z3!%o(;NQZfxsw8V&DqVZh4TZJ6QLt_EbX6HnhWF1?%ca4Eue?^->i4ksQ-%#c+coV zNTkU1f;7Om0cpV{o|2i_FyQm8SPLp1TpAfnqi9ZsYbgHRFHOw{~&hiJ8lTF00K5wH}foh>HNGc z8lT&gL^?%Wo6!zVu=*xXU%Xhu!vL3M`2riTHBlGh>AJb4`{3)39u59y?pkqiW1L6O zIBbl@K!Maqafm~4ozg=AKDX>-8i5z(mZ#@(lx9G62;9!y;`Z|k4gQdT7#|}_o)YZ6G8EG%*7#S_(10a<_^)Co4Ts}ThHz9=mdFISwU0RqnXazfag3lt>-`}oXIs3Bt*x-viSljB)~z{A z^YQWNA8U`F^U$M(oYmSeG-%F2%~VxYS(MB?nJG#)bheM>Po1Yt+ekRoty@Ti_zu`% zT#~aXTu`#S!Vbs>hc%R9Q( z_}^!s_ov_`g)~DLC`2u4Fmiw$w_5|2?jO47F|4c@o`v7ic-!6g*Jp0zh7Ns0+C3n8 z7r|of52NtB+J=V0bxZYQ27vy)=xOwxGCJePv8z{KA#=NVvl5C_5Da%Nnlr}_29}j9 z*ithfZaSj9Rh+WN6yYEOX75=NIj^$Y5jp**m1v~cW}Fm~!W_a(UXOqXy`Us&Tc~S3 zePV!0B2{Qf2?y44<7H?)AS9RwE99aZA;RYm6kmgnt)PrU5*JYaxto|DqAttLL8Gz+ z=Jxz~6~T{VA0j?C*VdvZ1#A4Ww>Pz@-1&`b+vuvwpI|V#f&f$v?jyQ=H~fhpfJv-B zqB~)`gn*aVuiF8jl&mbPy-s^F+LTTWM|h&QUEcjIyZqC~k0J&foi8D<*2ZA+YiwlX zuA{N(>ET5=Zm>SHlB55*HR|3x$&veOVB9ID*yPXOpQVUr6z+C{)yC;K2icAogW_E`o{ zLvl*OU0IkekR zLPiJ z056MrobBzkahC~ny`gGH?y&Jkrpjei9y@bJA$R}`AgKS*azp?<0dN&X~p&zfsvl7XW~lW@`~HEik_UJ37jA$_#lV%-_C=^T(iL6~tNV zK*WE6iX%)yGDQIcgyea_>G8V*I`8f)ckQY_f8E;~4sPE6zS!h$gjl~IG7UtSC<^d; zm0rD2h3d|)E+{Ny0T>t>GL1zHaL$Qv(qlsGU%tK(&*?5$c{Wz|npWa)7;%Kmk*R41 z)7Ym&-LLELR8S;B<*YxpI_Z!kT?iPw*THTEDJM^Eco>hcsI;}8)O$yF_v~}&Lx;1t z_@cd{VPhJkh`9Z{C780_V<9R++v~goyj`-gm*S}QlkLpY?ly#A2hq5u>8Yi7gyayku0#7PTUGz%(NNZgx4<6HUj#mg3f8@ZZo`gb`ToVQC0<@nR%fb4(9RL1i~g5-(u!tB$i=VyQ}zA3clLV9ul!1ZV{KIDfjbHz zfD`nhmI*-w+yw5Ex`7->$s*AJKs#>G%&-+fz$ zDh1Dd?FwaSmKPrHnwOWpfC>V;aYSI?^fq0?FCYj278J~{sVOdB-ZSwSCQ`KWFdbEO z9OztQ=dNBoQ26!_3k$|!dQD6LcSahBb}bljMn>U@-v{u5Mu$CP$Bl~xK14{3wnR_0 zBPDLxENhD=B;D5`VB>tHnjtxkMw<$7{4{SNmyTKx(0>7*8g4CQR@)6j6VH>`CC_L3D?fx3fplU zp%{_=E-d`eP#PSJ770ZSGgi}zd2kYfC{43IO726P@yrT>pNfmSGZfg}eaj@jBo~^C zme>@Nd0nC}ptfDK;R??JuLCpeYk5m-8`iMj^3fX7l6im#SpjvP)MXs3bit^#ERY<> z;Pd#M_aV;NNps{<$jlaU#N8Nz7RcLc{$B0 zhs2(J`#O42i88DNxi&>1BzV%&B`teIvlPhxdKQ`9_Tv~>U}NIvBBeHHNlWE{MyP}N zhu9RFY&70Z90rI13xKqwZMVIvRzAX4C7M}eWeG}U-UNFWkiqNhPXo0cLM=5gku^*s zSq;ZAz2Bg3HTXx)(ht|9a}JH-07quoYgp{R-m9(7 zoAI(gZvSi(2T@SVvj;myVqSWJ?2pg2I-&2sPE{-nM;k*<~2e%T5 zvN7x<26g@HnFX)$E{Ec2-Q6{#e%!corysNql}?SNe)uQ{hu-)_U}$Jp&Pf_?A=_sBq2wUtiu-oDTMW(o zi-KFVe$+?V^PXTIw;AUWjK%ie?4grZfx z%9EXy#vk}OUafwKOzEQ-^$I~ys+0Df5$7~zMEzg7Ka+;udiVU+vkNjqe#o3X`q(BC zC3_kQQfNXUm;MzE-&z1G-NWB?FA!OUt}W;gJtq6hyv3REcd&X$fp{dH`)JYRLSuqx zqfxr91eS;$gJX&=9W)eVD*;PBy=UW^wj>H2(8Eu|L?{QKJ%3yaNn^j8q|sawJ)edn zSOVX!8g`OMWjG#-%hxy3c0ALx7i3iW{qa;hQnKeg9a4>!nG| z_9nQ6JDqEzQ{;8Ta>gA$oz;Dkt_vRAOc2lz9J^Fts3{OgTL=5CA3|;S=~yE3(av1B z&{Z3y*^e9Q9sp%9mi*qBG~hKhxr~!X&eTa>zV_!&hOFEvS)*T(Zy$C^$|7*@4rl$w z>^B|ujVR6B>As?G!@-?v1FjD~88-9gyX%$tDOi z6kl?BIb`{FpY3N)=H|uQjPh7gqp9Bw(ivy8>!fpmkh#BCs6KUWuS7KJCNql z3%|*6$e|z&1?DxN_G@QY*edF z{fvz@=T}ffn7q%k7Ng*J@(Jx=JP^d#nUyEIO42o>f zh!L*~3kkB9P&lgdMsvsMgzZru7LTlGxU;xfyJ=9*Q32L+ljr?<(>LCHPeY_u?`D~5 zyDox(AY`6RnDM-e@NwRzt|ugCO|{vq(6nYqb>$PA(m(&cqnKJz(sQKOxaG#DvPy^Q z?rPDvvlBa2eel+G*$tHg(&L(IDN{Sv8UL(J~!iu$i(x@va4fuJ;v`P7H*Yg=;pmHtY>%Lvm($X>Z zDfDq{UrB)-3&zXiEV$AJ7`(nu;NeYL;^-jK)FCR;c(}=vyK8Ib@Qq=M`WPBADX46P zjPP-Pn&QmW3OlnELTQH4lT)81T~Ug)2U(;=0b+dI=SyWJg^=O=U8Z}T(03yD7^%RD zy1O*H>E??UO%$~H(=|H0%38e?Hvk{^R_D=I|9ErxlK$gAdtdX-cS4t%c`8wM+?=Gm z*>4TLS9NPWW~`#4P(9mpt51`}47&k0bPH5$mwZfm)mJ@Zf5R5%ohQ~@81fB&I*fD% z2;k6FIsm!Fq(OeAv=zYwef{rv>jANG00<$30K)h}TF-xY@HLnvLQs%XS|7-Z|)ZtZihQY$;`+I zZ*PO3<=j_Lz6^8QfA{?i(m)Cd%9_VXgRgFB<*+MT#o)H!_GXX4dtGMDl9iEx^g`ZE zgTW{L`P1L{1@$Ysrh&6AVmcv(lgW#pz-^{Fx{e$7Y3C$sah4hxy)k2vm+9KCCRpC z!+3^=0ga;rU>yO#ar%G|a{AwBxF>I7Vp3aIw|DrO^VHzD{@vZ*@KaM?${_0%ZI_{; zBPqiH=mB*5Ot_;$0uCDU`g-h3JTdO1t#PIN}U~q&3^_g#gyV=iCs<6C$faOcgG%jgfHy#$B$!^Cj*A-A9bybF_SiV z!9Mc!CaU*7P0Guc8m@|$$tz#|6nf%y0Vf$s~Gd#Vq+jNF~?}oqH7k}xM`QGeAdg2WO(<7TDSFcEZbbQ$2 zYA4bxgjybAkQWP{$%T^)chZbs|M30V)vIi#bi%)#&$YR|UVtV6{lP=)W-*-+Xr1#I zWET%e4Vd9DX*szL-pJlgk(RAq<6yiNU{q zEaE;UumQ}K;;BQw3Em3;FEb| z2d)8rL$AEm`q!=8+&Sn#5C9gB;7}G_cq><4OiV1r&MofUbVa$aiJ+>HAPLB!NE|}- zffq}hsW4z6NE-zM{@B^G6S%!ubEpKKzNEc%8aJ+oO;8ItsA4v)yL*>^WtEz6Aq^W= zniFiJW{MerUqdo{LW(UNAz_Jtd(|B@(u4g>He2+N@wXG+%>BWi{XL(xaBgsGX?Yz`KlENymb zPqYNU5?yc%oH&vBPY#iY)ayu8q~Y`&x@aoE9IZ9wGv_9>o#?Ji?~mxZr7SNTF*D{^ zaH7>KS9bofrXtOH71h3uFwTDD^zB9iJ)fPO{pH=eU7RS)gr9poA|ym0SdhJz?-KTM zcS3?f))cwloqR5s`3}~SNzvW{36sv>&JV;dSP;> zrm3m%aCa9uc--Ke)+{^;f$M~$03ZO-2qy+3G0?vg6?#PZDDx{qrNlvEfON>*X$4s7 zJn+wmS2&6+6S@r09?SWH72@cWxe0Otz&oSl)wi7Y`X{usx;TwIuYcy&d+~>K@Bu#2 zzfTL)>zB*T_Eh601VTnNMY=jY;KBUzkQ_owM3=V8ATKxA*J`aOD_O@v3OIa&QJ?2P^Qqb7{?K#C0TimkWY50k@#Nj9xqS#l-wgQdgsn(?nNR};ZBW9QddRa zosS!@d5NU%KvOYg8r5^^eF|Vvs;{5i--Z;)90~!ifo*dVqL272UfgZ`0SkYuK5zn7%iqZxO1ETdRQwus zI_uZ`p6*^RqIN1G$rD1b@!JiMZW6?tpyN=O*nUXjIc`h8m=yXtj)EK~%U&nw9VmM- zvw{MNcpGYxv{zs zV@98fS!f#a_YGI?zA5z=5~I6^?w|RvJn}$zrwpG1A)32;Et_=oyu%%r$hCggT$%f_T$;;)u_GGFkWRnMe>%mc(Tz-gB+w*;6;O4lz?$2;8z z0f7U1Qs$As6sTI2rZ8RZu$ae+pdiiC_SloUuhwanI;tHJ97rGQTKBH9((^)O_k7jo z04s!P_30C>{nlyHB$m9(YbgP+drnVtpnY6Nwo4A(fYgsaG3wAG?(;5!(u%jDL^1%a z46rvp^+=tQ&J?$Thu@l7`1DmT!2ACRWBn%A8;e{w4*tfGJPeir=X{F-mW86H5(1_s z_*1gM%9eJYRlVc*3q%gk0Qh%u2xjRR`3;Syqlb}Ge@`x_oSP^0=6?oq*4PZJKJn0_ z!;f@Pagc_DoM_8rqX?U>ad$Dsgq!VjJR&L7PAd|GP+JqdEvu9NiDJ!`982cokNf7D zopu_QXeWt5zU(kk^Gsx5b-)FlIGeVbOV>u1eQ#o6L6sG$5`AOh<~ZkI^OAGSW-m(L z&)5o}YuFjt-KKSNy^ow^%7el7vF(~U#W4+A(?_IB3ETSm?D!+Vb?i>%iJJElhfFbf z-r29|M}|$?rpnrRif_~w^!Fw0&L-gGs( zio7CZV-Fp=h4rhtR<+mHe+iq%_zl>hgBHtDpv5j;{6YI3A1%bDNmKGpJ25?QI|IV@ z-&gyxv255P$lJb`E_1sQ+*fLLpQoFeN7VNJn^`@4a)9j>J;1;3O@V1g9{X(zNU}~F zD%s;Wxvn8DTHBa|HhFUH)<+esw>>*ga~q{*sCl-NbLDYY_+iZ2Bp{vy`VjgM}Dq4uJitbxu)@e0sqc*MR5M_T-O^N z-~2-ttA*w4IqyI2DY>oyi-eaGU1~ObxLZm~-5d|;##3*5E6JxOx?+o_j;8JBw9((* z_R6&1gbzVbIbd3);+M8|7p;l8YmM~3r`K7vEU?gI5zvftLeddnQ6YmX@XNCSPKGL9 z6eZSQP>|_8;j)eGYll~+*C&l~3jJ~4Jx4*}Xd$~K8&ToH>r;$&<*iMU73N&hNVIsm z4R<1hC8tHWI&$?t@o_+Lu zx9OL^Y3IDl+<*5~uRuSpJqr!zbn1mJlTsVfjHF0X(yA*fqkad$&LapmdNk4| zU*FR%1i|t*IMrW5UAwp-+vin_Y>A6ff-!qLOQeQ1b zVU}W3_zwA|DW$9XNhG=854aV6be+RzF19Heb(vYtutNU#BE zv4Nq#B_T#OybhJkSdT&qfC8rpMoJ6U*_O`h4mTA)EqbnsvNFTUEJ+WM4F^K5BFyjo z|3lq-$8-I^f8TE{qq3tE5lIVaDMCWp+A1v#Dni2uQ4uOhT2e%Nr%8lRQ3*{^84(R3 z6=hxbSA9Rf>w8|;@4B7qc3!vh^jDug74O&UIgaCTJjTJr_Q!D+3i3~R&5hH^_rjaa zzm{x#Wj0uI*vVjzoUYGhue^4GEKzx;^nfulLA)8p9<}SBoH9Ts_;Q+{K0a=JsB;ID zYD=R-0$L`|IJXHt7Md4#DcN>Iwk8i-PE)59_7Q+}P31GC&ChztZP}$VTxvl!@~3+%ul0R0!arPA z+3ky2+S|^JeKJ0mz7peD=V5m17C7otmB-nzLkWml>RRLrUdvw-^WRXWB9Rbx=dV3% znfUMk!5-FN+g%ilceh8fksTd%BC<0ts8Yo`^}y4GYr*OLgS^!ThaGl?6y#&l2KR!| z<70%iPoAhbi8ZDFnbpH6^LBDLUXX5Voto~0b%wQ8pK$Az)`v8GcDf!6hi!xDA{p?# z6HC)SOTiCuVdqY0*9BKs>2mSbEscLl7m1=d@y0vf z4#ofXeH{RK-Lok4GwKo9+s>Kh<=>;E1b^HjgZIN>j#F^wVba;lui`*KXK->_WcO9G zT5zc0&dfXY2PCK|lC#|J)~;I;nAzwy!#mBl_f z`u>)mf9is5jZU1qkkjIw#@&)?S=+O(u0e>!x1T=|w|!0Wo28=&H$3{c$>5m6YxQbQYVir@2SWf#<%^DSNGv< zQSm|*5`1KF>yY!F7)Jsq<_#Fh{`hfEFp_=hV?$|xkt|3Yqy>R_?^6OfjcSAz;b4<8 zZTKKPy&we>SsYRFF`=@(wlcKfdUmkcNkLN5 zw7p@Vkk$affInC^H<+E;c$R{NVYNUaKHuhb|9V7(g6LTB(Vp7^p^g7>lAR;2^|H7A zm9ID*AtB&uEU>x5pMv?0b9<(pufNb>26%hwccg+E$pPb|CZWVnd@&YH5CPl}?8KWKmD z&~73#-E+r{dvA&L75UpNR67+iR(H*bea)lZ>RoxNFf~v1(;0~i->s7ukq_2z@V-RG z%4^V=e!Q5w7y`-{o-gdjuiF9^8DdiM0Wp(`3LHZnSqZQU<~ZNqHT;3WIQe}@XrKkA z!=P9@`Edg+F&6rGB7IHU(w^47($x^|7RaAK(93Ixa!Dzz^W+O9+Vp+{nl zrO=L4UT)!(VUy_|^oCZ91q5gvSgin-aHX*TeHR{_E_S4k%Dc4jv}O*lUT4c=tpL z(k-7nb!s)HtVv0xP-`rtyCZaa&3b}ripG)87!)KPm2-bx-}qMlEgKJ-sl$Dl7jJ)$ z6-r~ps)Lorw>x2+_G#QR!N)l&hhpmhve?J<=rl4<83gylgh>mlbQU(0osIYfG6Q0Q z;dyi9|FmjQ2S%cV+dI z3*PMYS?x?j=ete{rR77~d27y)iLrY%)hJ?$*VDG8X90BcYE_(nKlNK4Gr!Kso3SHnu**lY&!~5m zcHUsJ2yzo)eF7m5l!XkP5m9%5E8(rc7TPme`{02C_zz7x{Gy;c^9XL9#kV)~w>uY2 zf@Z}wP+s;3kOQfcvQmNEi8M|RdX4#O7$IcT;8{n5&ZifU9C^7+GF7F14-FKIWJG(S zqB<|!Y5pn$hpiajpFNm!V#)xv(NrDYMX9RuaDDwe`u&WIA?F^6P578UrFt$ppa3q zju95$`-y!#WICKcbbP%eB{&o$CAm=0RPu6h1Nli6$3x)WEgJ_X__EToc2!t}$yK>qUpxmUVbe2nIpwq^%f2U_+S(YmXd zCOm(xHR5rXi>lfYl5cw;^21gL`x0PR{0b0@Omym>55l@dFuq;v`(rj^A(Hak>j93* zWTHqA)NumC>TF7Z*D?52dm5op`~(vpj3qu#&JPHMYMoN>y%_NBwE!@w(lMa~WK4OWtAEmA~2uy&_&fequxb`5IW7y_3UENy50&Wi+ zHEN!gJTUlp<_Bzl20am*Clv&pO7cH(KrY&C7z%23J&EilK8^Z1IuhOo5;SQ38DsHS zNkl4hHDu}3eh(h&hQSu6URaNzR!(vc7$c=LmUZT(8bsQmkmM7D1-Erkw@i{05r9fr zt68z2hfK}$-gQ5TPveJjWtG%=%$HH}RP!Q}XrJZ{i4M^W!=QVA_m!VjJ0TVC>lA`3z2v3VY>wuXaO*X?-b@3!PiDTk3<;XNQ*2=9@Y^ zQAj$z_1Bg;uz`a8dQt9hbfvNjlAcHi6sC7wT~2E-QfBMXeY72ka4y-D55%AHd6)XT z^}%zl=Ifd$YLg0KePnFYhVdogUbdE(f3IIGcDC~Ev@hzdqi~qFK0G*8ppJPi_FB_* zth@V9W_|C{cb+ImeFN0x{VLHcxlMMSQTg`Wx2msJj|qH}-PdE{&t3mF{me=>?!RE4 z)pVTlPLNXlw~(y<8;Mj)J>ztsub?9xHR@N)dy}kZ&xW#eaE&Z3;9>V|3nUzS!IPeG zdMr$8bOgRWuX^<8#r^>O=R)K6e7mW;eKE?+&i;rc-PDN_e~*0Fyf7Y5Ta5QWn>~a` z-Kz-@FSXU+ zr**D}T6+FNsq^+?qPOCvN~;FW%r!Z7(qvown>NGRi$A)V_WmAuw@qjHw>8T@zuwy8 zce}aIG>q5&r@W`|C-1$V@Yn^0cPO6K1rVQV7h^jA@xzA$;oE^Ll{>1s-UX#VFl->ya8vK7wb*y&iyEsHWUwK)mw+^?y;w}o(oB3_^ zm5{xUR937zCz^fgmG#b=RT@|F_BVa?JFzIdyq}mzB(XAT$;&5AVu^ReuQz<(J-2uI zH7K_L9p^4zCc>6LR(M5}ald3Q9EBJha^q}9senP%>6182AJ3q-v7eI3WQJsn184(- zmR0Yu*1|H4TX#uf+_R5Vc1Qy%$LD|bw5VWAh53z0~Qop zylY(ut_Q2{Hw-Hn`H(N~&8NtEm$jNFSY+HM#V`mGQ zfSH4>#F3XpseXP0e00Gc|M;_yH9Ff|_J>!WL$R0E*|D0MxJ}^`7EN8R?-Pk;4S12B zUd9&6IHJ~TthLr&TsxsuVK;eb@`u!{Lb&lR>Cbx@Fh%VX?#PY7m&l*q01HAi$?=y` z5ik}@_U^xIJamvqNM^h^C#VfNiuWHpfMmXg$W<;JFtbKGG12dpU&g&$m~p~o9R4@t zj3P4pNbif0xc!x6xi#W4za|Vmv_`wv#Xi+7H>%@qu1z^UQ7^h9`GFL&tAxZAi5@h`)Zli0w#K@*DPR&}~HDne* zA;mI00S=mnqR(n zL3TM;4Y~vL^@_zqHCZ@m5J@4yP%}{$@|3_3?ygq0m^RIY;sts-usBw|2_7}k!}`-* z4OwpRni%1n9B0}Cz6TAbpnlu@!Qoh8NAVA(V<@A^@AWih@5k)BOffZQ`gCm5LP(Os zT9N=!r5kY3IP)n>>35MyLR&g&>;;|dpuYQ|8*9{aI(7aAmuhX{b(+{N+XdI)Cr^a2 zovXSJExcSj=<*vLoc+epEjUS6k{^0^BD8yz@$Ms}=<0X7#mSYT9T7hX)x$+hxedDS!h!t4USyth$BYNZ ztr1^b$t6@GWi|Ovo-aZj$P%m9uGQ7kD=sWN923(<0k4CH`+h%CK8=^WfwBi-lk?>z0y?Wd*ypQ@3;(F&?XHZu8Rl<$_c6QAh#@8rcp2k zOY47eU{T61U>~2K>!)in44@1TO@|oYn-pid31e15)m z00HCQxSI-GwTi99d!A@*jX>==L&Q?d=lDyxxw-VB*D3c%3Wi=f!nv?R&wKy#gqXI) zv!QW#V_^fY6+tD9oUoHzdP{dWIu({0Hmx`_EseLOh@xzQ&yhYq556Bn4%~AvZlQzY zb+I}NvLK!e!6Jmtobw#ZfDL3Mi$uj|6qI{pz|C-kaiTQ6DCjo z-q1jB)~=8c7?6*p6l0?L9b z>xcGoo3JYE~TWf_Fg(;#$HM#Bp#6U2q+4CyTsXf;fxvUO47up zOv&LN5a{I)mfB0ohCwm`$O8oAw@${!mR3}(u(!X8Gh6b)cn%mYdxVG_FKqfm@QY)) z3Sky*asnwG9SkpvcY})#d;co>nxXu*z-L>s=Rc#tyngz0>ph4b z_n$qhCv3yV#FQ){$}V)NRbRi}U(4vR&r2tk2&A3)Sfj#)@iJD6$Yy3f1~lmAhkm50 z@S73ZQ|4b?KA~71&9YsB>z3Tgrluy2@0c;(BMc2axu-anMIstK%!kRtQQAqsLRC!- zc=0Bd^r`?DSRN=z*usoeVr>kWp+F+w8QsQyas2q8si((15@%*k6B@W`mTje&2wW~J zCnvCe&mn1z-88iPH?uWtG~l{-H*$w3ulcS}L)fF8SIWdVdxoy?=5b>=Omml!@g7?% zu(*=Tvyb*ZB}_Z#Ua&=r=gyJCAQo&De&go8@S0J{WR&OF8eN?gdmt`&vi!$YwLYh} zs6|iSe53qytNDl4&eKIRmz*5m(lV|%0M#eN$)yTUm0|cX{opJze1oA-Jy#a${ku1N zh+J_`GE{UxZQR=I#T7t93He64rvgS7{of2l6x10$WSD8IVgLS;sR55M1&0vDjHR)G zZ4Z&78CE$;1^p9e&N%XcCTlB<=*|{l(rnsX+kO{f_RJaw_1*Y>UomWvUeWRYC>F~3 zzZ^3HHSrt#d@gwEX)O7>DJcPBDm33P%=s&|HceJhQhuAOCxpC-tI!)zUh_UdL&|W*K+We@L{==Wa%%>SqcH zXxDsqw9KSeg@pqSpzC0~!Z!CP&yt%g(davz>7A{|kDL+7_pf&C*Bf4wmYqRCV$&+K-C+Ye2Y}cXPkjd||yo~O+Zyyt+yiQuTfYGvO zJQhb79uTqc`AIp^~QW`nK|LVLjG8Fz0G6W?iXUQHptmEg)mX zv9hg`?R0NZXuX^~V84_oZQ9uOq7LoE2;()dF*Tbjrr%+)7{i=)aF=!mPKcRLO0b{9-0@qzcTM*k1Z{%1d@NWS&+sM={4EIWuw#%xJn!&RPeNbD(B z_1wzz*51AB9&G#XC1(^YnPfrrOlxL3D72f@hyu{NBCP&lz5=o{Dxg|M?mw)5`;R+t zjLE62uWL^zoT0U`O^mI|mM*iz^}Wq5NHc`RnWf}kvAg{*X>?Y&WO?`B=ov>x{QphQ zh#Byo&@-&{Z4N(a0WQP}89pgaWhT8wAMyWTgMokVz_utpZD}>y58u65-I(+8fiDFI?K1; zJ%^EG$x+o12x?TEd~GIHsJ7OXDS%Id5OiDMG$JPVLCu#F`HoZ^+Xj3y1An5jRM;mW z%A@}gY$Nx^UA*Xv>k6;UM|1ptoh(uG?th#t0cW98r)|^c&6}WqOt)^EN_zen%yjQA z!J=tN#$zq{{*Zfc)_b{|!VM4CL8Mg!I01UbB-d)PX ziKf@JXV|bG4#z%;dHf(MTWx6RZy`+g@7a09x!a>_1!D-)#m4JUa=5RNCvR))$Y~`% zD(&sosV+F7U2HVJM{ECCah)HW+0*lPkCGE_F3O(G`Y~0l{?z)$Y1%mGVcw#zFPplr z-GcnO{~^Ky6-ZjTm$ASj+ng0@c)%aoCpR)Pq(L2d8U~TZXZpxw{>$N^$TY3^;#i-X ze|)$v+1`v@(D8Bafof%aBCNHTN5S$+sXW58mX?>^nr?Xz4^i$?LwC6?j}H&;yod{D z9&WOU;l78;_Ub&|!l3{r!!Y-*IdiK(^Voe6PTNSaIqo84=c2jKUaq95Sh8&CV&})* z-7fZpA8hPd>yKye@84zZ>squ{nVdmRw0Vv8a@6-A3E2GJ6(^t(wd_Z#;6%SV3`&Tq zGAwN$o9{?HRjYDX%KnGLpX)M;CL1qtEZL*??j>J#8xo)3DN(y5faPAixZ&cNn$9Qs z$EYH(J4xm-17dRhnj7PpE#Lkf<1iUxCSbL9wHjI9khDS^Lgn7~-#OGc}f&f_H zbdx4y#PPE7^33;jfGt`>=KiHlma3^u-ojOqb7)BW81b#!AzOBd80q&;dc0Zoxss$v zsg1LMD`cSwI1sbDco%3bkev6|E8Q;IJeruOXYsYz6BYUdGA zzMr0-y`1v<6IRVM^%bs$uD!Lsr+ZZw4oAX(UIbH`EoLPZ757SAf9sCdHnX%`!37A@ z15?1mWKk|(eqz|sCp=B$$CSsahOQ+b&Ap`Yj4gioas)}5(!V$3!a+#qnKM*q#Nlxp zmmKUW`#`8jv$Ow%f8x6FrH&glEk6_348g>g;?y?!V{j!<1#~)3V-}d3`S>Ig4aU%m zp&WJQakOSjmy!w?pYa6TpCA7Y?+p1?NeR(tyF5CGi*V0hcI`EUHE!m>XpJih=D|Bb zk>Cy=MNH5T70=H?_w9?43ZBf>t23bHBT1xVB`nux%i|-X6hy>kRhN}v%zn>qPpXES zT&BIQ__08&JsoYu|1wrl^a8(feFS*8t!bi{};6qA^QnJHP#}@z>BP;A?&AJXLLVz_iU=hquTz3*sE$l)4j~~uB zzttNWUoW)0@ETAmwXtj`er_3(K`72*jJ?(YoeL%kA=zB8hKeRXZ4kEp zj6475DG9T_IOfOV`FfSN!Tx&w@+F2#+#ImuD<;~vh_(N$yTweFuxdigDS|62Dk7tz z7R;Z2|K7a`Uj8o_rBZOPn&F8u4LwweeRJ@iv|QpJu!$8DQPGP;NbT9ofTN{)?=93# zI=pN4G7{OW9aE7M`R&f2DpQB>&#$j~U#eH0|IMLCM3&YJ=cF%@PLX?Cm1SodJlb?R z)VK4f=6+aC-?fj&n$pm()d!h6*dxQW?o`?WoXOk?(IE&fm;y863D;D5YK|Vg3Aafh zrFGH^1$p@sJ}4b-+_~e6-W80V`4HF)9n+!Xl@#Lq=y;3cTa26cQKkiC5iIVrwE*eo zSie(3nCu_llh`%Wt2P;;fxMP$@_t<+j1iJvHl&W(d$*l$EKMLRQcq7$-X@y|?uY$I zfs?@x0W6H@2B8&uOzyJ*r!Fd<&8@#G7jOP`l0=TyFQ#REGPadx-rnE13$5wzrY0nP zM&#wb{_Awpy5Wh5&lVhi0X{QdzfO#gAA)v;xZE7#a&aNN+gsH@0Fmok!|pUm?<}k8 zEi&FPq9+r7rfJYv$7_TtjXzD-zR<-d88%<}>S(9#Of86f#&VF5Qdjxz=%ZK4H{ zE7o0YZ$ASyZ~dVjuiSC_soQX$n*bkIVvjL)01^NKegARd^ILEFmOMn^4i@;fuy7M~ zj(r6UzjMKryZQNbus5KKm*4s=U(=pUO!?alAl%FrplsKkznlV4oI=sd&FB|;{Z^(A z&@2c5a(D)*-Md&J3q-9ElI{r62ATyCL}3n#uoSFuZdWEVn`zqN!>gArjpYzdnjRPw z6cO~2kSptw8w0hqw?C>7q|L>}sc;_QYQ@P&Hr-m7wC9SE=H>_a;2ao9dvdx$`@r2w zuDF|zCWhXC>6)z@)~_EY0hT`2SzI*T2CGr;&TAIGPn*8?K(j_Cx5RzAhq}bqBq#1fKzy;~~JTx_o|GtHFF35cVLDfRXVEv9;$$l!8(lcs0I*K3=yILa)2W^@+4 z#y0^7W|L26{jG00nw-+p^YFdjQ%uy>$-K}#;nR+bv8~Tv)%3k}-{-J|Z}@HP&`-9G zKN6RTweIfJRb>OTFc?s|s&XQcC`SB^gsAaMhZpXdxuz8scg!TF7g`>+@Alp5%PNiI zwW;r=bev;Smx?$0l2%~1Pa~DTlQPRyQ&e(XepXTJoMD^4_b+NyJu}5=bwq9C5XP{= zS9|Nc1O)1Tz8WjH-tYPMmuUwjR~!BPrN5rSbEaW`z80TKdG5}=Ha_`vbxb;-(+52Y zrx>HrG3k8H;Bg47+m<)Ic>1)@&z;3L(&QsQ^=eJc4Sm4eyTJ9Fm7 z!4cs8zh~Z`sL$(1h=i(HZCqPmKg|-2!Gl#56p()n^t{3SE|ogt=lasb(frhn{p7!; zs0x%WB-HBa{*`wMW0XU!gp~35^9!+<2)uM;-@aKkHgGrz0<4SIw3>Pe4Cu?7#CoRL z<*)7_mt9AwH_MHbD@zGTi<}bp1ad@BJ5w~!l?UWO8G=*`-ueslqb!MV7LJ@m=DgTJ zl{i8g)8<&jg&uFl--hCa*Kj}puX%F$J41raUa#FO{b@8OH)_Kmf%JHOpmD&FN{b z2Ag-CxNl;$^?L-lT0qGt+|g@qUf2S!02AflZtxP>RY6^Pu%|aNpXV-A7>ltQv#BfB zulE|}Xv0-IYu0m0j!pyYx&GJ*J#kPxHg+5HC_$wQJCWbsQfR_USC=YvHUb@f`?iH+ z!|(h#X>&)MZz%rzm^=m9nhK&jZCV>XjuS3{-NX80j3z(@-L}j0{#sIk%VyyD(aaP1 zWO$?EXj(>D&CrG;c4hKPOr?-!Fewi-*SLvDl#~+Jk5Bu?4(YF}%RjBBqtm@{o8p-} zcU1droHXfCzjr?#EW`U28zz)b3JUcCADef}XXI6kx%7Cs0bLG){p{JQ0ehe}AiYVm zLVPfA%ot*>&b38-stb5ZJkgIIC-W^f4eAs3Zx3`P)F2edj374SB2MK9Zc?VQRn}m{ z2ti!Nw+9zxf;b0Ayrje|fJ)At@)KJ}X-P?F;4*#gH zH-c1U?wB8E$tf-;CujKl!GoYj6@ncmrjHs7WGdmstz3D40q)zkf*%*UT(CcKgw%z2 zA8g{yY)x!h+Vhgi7(^ZO1)iqw`Vs{;f9p1K$ z{MRzXfFXhK3!rnskd=r9(7of=wwWaZIt*op8O-U$HkVq=V`kR*h>xQjXU6-(sF-PD@RQdVxWVnl zH*8;cIH6^@ue3|-t-KT^Fh3@W%)WX@;PWLW{@SB44jLY)5EN$jwpQQ#XX(tvIC=RQ z9Im|v9PTP9iO0CP1aKeQX&~3A=a(@Q$#ll`--mo2oXED}FOPr*$H)$>(a9;90TYfF z0kTJ@g5R)^AFv*6XaGQ@=sG4&lrpa>%?RSUhEe;M{>&rA88|pJv|G!u4##Gkr6)nB z*2CD-m1zijRhQ#3N)u2*dB~7>QV{G{aD)ijPD59J9myXD?98EFaM!w~2S^T6siupu zSQ`A8Yno+6Q-&DM#Qn>mDoaEf3&YZ)5_CF(r89FuK zWEvT9P^IR(@|-|d=%C@`^z|VVY}~xJtU{Bj+L}$)P@om7v@+SJ{48pgzruA zN7Uo=hYdSI6Gs~*XO0;+tlFuQCTW^SPX2%nox>OgHOBz6mwHIm5^q0nauPMLY?)?! z2fzDW)2W#d&nJ_}45QjS_)&$nmKNUdj+{^oyI5A^CBom=f>FZBLWIQ+HYao2ryMNu z-=+9YGD+&#yp^~bhWpgM@Nv)(NW=m}y-|BoUmu%#$r8AbaojVs=4;my{lgEW*jG_u zPm;yo`_Vye#(~e9JpSPV6j1^~0WG+(Mmcxg-w0j=+cn7SSz(OEGUzYdelbsTyLr6KFmNz>4fydk)jv?nj| zMB>NeMD8bbv;$o@s2Iq|w{#YT;9Acu0uhCSf-OS7jyglJuLfl5I8giZMrotE z_8ig0MZ?Ib2`>iKwLWzjq$E&o_+M)-p}}iK^)@-RskRp%10gk*pTjB)-63x zDawSDEG}F0WGYyIt$4VPdK7I8dw8dv^w%(YUXtF5=^r>Snbgp!b4zmUnoIB)2G754 zZE0CSQRle=>j@S&x=)EIy0J}yYYnp==x7SFmm-YY&CFpA{()3-1HJ>l)TK;I8nikxm7SYco4v;r5huCKdY0+^vH4VoGTxCBpgTR|YcnO7tjLo?tLJoI|$bNInrFW=R62$>= z)VxIOiKaPMVobw<{+oDc9LRzLS&qCSbk2H|EA=0`?!1Sl*t@xL$XA`6pNE$3+L3e< zwE*@8Tuhn)uGQ@_VmK%#UaGG8{Fxd(2@@a`CUSL4N`E$3HU8steA>DFxYXMW%~u<7q@&a* zj~WOOpUJ)0n^wV(cJ+&MtUMUfeFES*vFza3hj}k3jV|LgS;)2Vc5!HdJHh3|)Ne(+ zE%jfo5l*%=K0JY)_c&A18wz;=kUNPP`}W*@yR<5O8=32J(YAxqVPKkVDbN-8fcl~Yl9IP{qrvq7Tm&8xsJd15ShO3U}f`A|hT zm>Z3n@em`M5jDp;$;*^Tx87nx#T{E8Hg}X~t-6=5bkKXK5c2Zo`YFq?KNi8 zFj(3!KG7YGxmgV;+w%Px&)k_SVH^Rt@x4ypjEtP;Qk47fp_B|)77q3>NHBH)4m#{9 z|9rujk~e)HzK|4&(oABv0PJaP0ekx7%Rch<-%8JdjzHd_5*9otA>Zq>qwY2(MqugQZMWS zDG4EwSxo52H^aRayiK+VvJv+rOVTrtHN=??^vYh&$jmHfnIw$d7n~g^n;xpg)x+w} zG#`C*w``wVgG+o%9WDisoyRp#c`26s1IroM!tati!VJsd4|3kw9by9gFgN$s)vM_P zWqKG`aH*WRCpkq|OmGK}wQ-%&Ndv&o>bkNVT%-{9Ye$Y8VdTO=Aty7@wG}#5vR_*( z?{C}It&EkBLV4aaGhPGBhAXu<@1bo`CmFS5Dtsi1bRE&^SQOL8`c*B@vq(8P<7`=3 zS!1k`N$eHI{r0LyHpFQKlWPL6!L_&b5f!HqWGaWXIee-PkSB#W@XRNwDd0k^wW6Ql z?H^*OtVU84cL|{UhDR;g3%5#6k+oCMJY8+pRVDw$3tYl7bM|MNm(4Ico)2Z3GHmiC z?+87`0*qhC&I49_-AG#wMa*px=@vVEXEE$#;4r8U3cF z+P7zqkUCOzbZAJmLJV{kj)&}->feF!Ezci@n5|wXQJreCa&N|I#F;zE{vqmsi%C%OPf#L!gBQ6bk&%eB|MxS_Td=RK|H zeLI8i+2>F;(++X7WHx)3%lDhM4zkI*t>3Mn1DMBpV$|?>bzn@DLWd(ZTc;cy{o>xe z6UGK;J|J9*c(J&dzR;w;mTl_aeK`p#{xIBJ0p<>kq=__Tk$_Ut}R$1Q;o++MYD z!0kP{Sh>UosEG^x2E0pr@Jdb2po_#(pao4J@F6{5&}DrH$J*MbV3v#-qxztO9tQxs zu?DC9+C&(b-yx_G1+)Eh3nStS58mj`LJfli1H%*!ZXi@tfm9UqAmc9RW7XxO%pqOA zs!VA|g)g#*} zR1udpo~esy*T)$}pOW69T}7r`e4+hj_b%vT5|twuhH)4C{Q7nc#HLHtuprhJr}%Q= zb3YqvRt1!q&dyGpIBDN`1p?>&jx1VZMB^O3ckk~!lTk2eI3dczapx}Mara4? zj_{SZ>H*ABUR6DHgv(3)Q4%x2fwr03kA6#I$7$o1A+qMZq)#U$MV%hpvE_&Bt&10@ zq+Q|~r}AW(Bmn~=#DNF2cU(s;@_ydX7z*(PGiQ=?L&Ye3lASgzdZ!T!XnAet!6VK) zHg?RD!!M4*7uZIqvYgx`u=@G z^j6hrnKVGbm2VWKR#5b@H-KWR>fX+zQsoEaR=!hx=fRA9fH`~)c2cmCM(d*0T6GR4n?uh)fQeoXh%{**MD65ur^nUjMo4J}d;H8>*>s;dYSQxSV>O zdHN`iuScpDC>%-pFE_Z?8|grE)I0Ont@{>~GW|O20VAU#*zIJO>yhz!dd67@wel68 zLGniE>z8~yHZ8@4$I5Wnp1t{A zRtp#U(%4Z^!?ZPo7tS|Hd|~anjvZ`?}?Sed^OL9$!2vCPN74>7c%#bAeQ*nkgzb@;dzDSfYas8rU;{;)x{++7uC_E+2ZE^MNy) zCaGLXrfrrOXThRdYgMDu4*OpoMSqbg?_*vn-hq;idzf$4m@gA(&MUoq>5}%!S^ZK) ziWWhlSG6n` zuj1Gyeo?@4b1#z!L>mG3lFYS?3{4Z06lBA=UNH;{Q#uL(1N@Byn)>>B-ovSBF}n2F zgmW?mr?%ieu>W=*c^WIFbxRKk4H9h2%OSyzJDz_(taq5h{{4IRmVNxP+u?2OjI;cB zuxb-7;E*0ERjE39Uq)$(Nl#ki$=c5{GRE;<@gQW@LKpq|>I%xMJ`X>0SX1p2 zrb4ydZ`$^OhKa#1u#q5|JtCVm4(^*47V+BYCR7Dn0Wl1V$nGK`0SZZ6ulhTE+5sx2 z<*QdeT%r#MPy5SC0*Y6ksHc4Q*Ms}_SF%GnR+&wMeqtm3y{>MRv-7=aUaTMZ;q;Zl z?p|)dH6;vD;N2G%&JWmw`#H$r`gQ9l@5i^TK>Cxpb3ZyON)nVLi^MXFp{DXCAdJw+ zWGpvu%f3u9EhlS1!J$VLpFV!X>~NQPEIroSWG@Bf(In{Pzka=nq%>`9U=H5@1rW06 zBT!r46EM8`xenn>v9SbA2SuIWw1*`G+D;-fKAAjlP%p+vA*W^9P1QjT2G$>mIpJ$3 z?TGABSJ%Z;IJY4o!R};FFv4gye}VOdary!t_=^|aGy;m%hGIH`l{L4_`&B(9eGPjA zeh?FzFnHKl%wxOB%KEQAg=H&fu;;oI{|*`#7N?T-HxzM<@$bM#6-;rTa60m6`1(Va z-fui}1!G$pa2%oru+mPQTIu4#sK-8f@oQXW-@Iw&7B7#!#Onw6<7<%8q_JZe8t21$ z0?XFY>JXE~%$eg46p5Y#ERO1`6{FG+l_s=}7_*}1WLU&>ZL6%5wDgC_YG0DN=ukKX zQrzBe5B?Y?i_{`J&T=PU0S^k539U3ET^g~vOLZ$uDJM;BsQgKz?LKnt8}Ja;7N;GE zMMU;60|RuTxsMqjMP>#x^3cK6Bs5r3tY?1su%08ovIuyn=E9lqFTlrQ%qw@MLArE`eww@qZc_6$dF7{8M01zXnZS_t&}YS)TrMb zgv0M!xnxvM^hlRzlruQ)(zn(=WbboNA&0o-`Tc+$MF84bgu9e{7MI<04;JO+m6Vmu zz|A=(W--Rz&@KMt_dc?Z2Ry19sOL4}MP;G1xz3m|3juR^WiMaSv>niK!vg=rjToTzQd7G&L3R4`-q9Fz@?@Ah@?fdk;yKRCg>3J-fyxLmUx9fq2O+l=mTjsP%g zz7<0#-GfOC1SzA3j~p4X#t2La$QwkDQdv+&AvW~e>Qj}iGjT-K;Io0+!fg*onwU81 zi81AZ3Bi83Q@tn2ZVd~Q**~!&W=#@()X}qswWl10&xwbR^`&ap#5crhA}|eAHBy=;>4{VfG+e=(&jgc-${`X*D*!9* zYSJgi`7AUyx98F$c^q-Zq-oQNuQ|xH9UIGO1ec3#EptxL0b_nlIf_c%(b16u7aVHe zp;zIjZxV5e6lw@0paJ`T^T^n9mu=(I@7^5?+%oaxXastOh6RO%W%ClD;HJTM|#>)rm=k#)DG=+=&fJ&l<= zGjdC>(EeCatb9y!gaoF~?rBX?jo#5VB8gKcPj0Nr(}=!xVMliO41RDntdl9G0exG=T;tYfQ;`NBp(nt zJjd)R`WI!xU(YPJ=0EX0C$T*N#-j}Cs zCF{`L-hG@HvmJDgK`m&ei3eVg!dK%G{eC?gjjmD>Kl@mIFhxcY8Vh(1HU-i_Lv4!o zMMSK3cfWb%N_T_h*52OUi~e}l!=M*mjV%se$6QS8rwQC*yn@MddW0Sec$Q!Ik6*p| z+`)r$*RK8A@7-kw;*xd40`Nl}!8k6Oi zGV{?6e!g+@J;YX0qY?2sxdUgxx?-rX$qp*P1`b6UAc#U{5?xhCeq-I|5$Di3y6FwE+DTcBn%P3`Rr$fm*Uw_uwP88Tw^^D}^{SWYsdVBHW9#d|32MotOW3n={l z$VjFmh`ir0qsKvO`rZ($EDPpE8A2h}A0-VVtyZCHH)V8DaO~s}*}jjNqE2TS9$jSh3_E}fRq8nEp6O)fpAh=deD{J32_`$}=NIf2yq9 zfTsJ+tTVB(b?A}v9EA)g3U+RLT96j#?+Jzd8~5N;08^Epo&!YC3JaA40Orb-^0Vg* zg1AK|z*_~K*_V8G8pq&+2dA%G+0(E7&tc&|?Ly^ERdfbahl@A=>e$w!TQ|#-KlRhc zQ*Z&Z;w?cNp`mp3wbPr`)I%?e7J(vTHYaBeABH!LDU){YJ8ku0Mn*lyU%oZ?FDXGY z00^0rfgbPD;?&);(0icD6=Ix0M25MJrsgt0T8r#OI&@KRJ{J46>_4N5ggbodY0Uue zP0mkz%GFK;OlqSzg`a8BRRb0Tmoiri+mZte7Xui%nfE_#_{}oM8dA=@#!lkdKU@GN z$3~mJS23*h(mslj_X0-QJQ-PYdTh_we+G@L#=+)Qh$c}4b3!K!cLMk2PB+2?i^*@u zD^rXNyrS6gKxgVoth2p-D~z)inVWAl9d0pdc|aZrnVX&=a2ayM0s9ABZ_^0(0$NY7 z(`}usgaZeu35tr(-@V%{yCW>j)U7N4w^%YA^2Xhd6wlQ=7#aDiZd2711Pv1>?g;+# zN<@uzo1#zp=d2_fo7EvZsqxWS+7H@!i* zEC zkUTHZmo-mVWln9~Jv_Hw6Mi9MLa<)hNfy1j_I;?q(@}U40()=tQ9Km%9^UT=BqP)# zywXv$7djh$tzY=#%UmpXT)sD%y2D`Oq{7BLLrtGmvaTh$hpmXU`K ztKmvUiH3O(2dPEBzUj0?AaVG#uquLn{(@ek>34vB`oMwv`^95pw}y)cZE$xl`=A`K z=jv6VB+VbwMFZ1k@3<6=edo@tX2TzRR3Vf8J~%7KB0dDc;B3hZRdktcTAW0P##4>@W?2c1vRhR{=^9C1M4LENb1``dt?J+RSjIC_GkIV$ zapG$BBmXvI#p-&iKaV2K>|^51nQSSNELW}^0dPmF3-(bf^8p&qP8f00(ya^}82S7h z>)j2O>95JrX;WMsi^+Kn`@XSNU9Q3Mf|bdl=6;EDw%6?%ticPmu&}5dlsVX1B9_7Y zn>*gZbc;0wF@+zRok}dvP-!723Hc5(8F0P7qlnh}m^RsqljAb&()NZ`LbWm8=(28| zq)B<$j;W_%9L<|L73?deX_$A1KR^7|AEWy%pf6#j)*It8h8>&-)wLM%!)6(HlgD}je)|t=RpK5 z4K|#78ALv2b}%{8z;a*V)Ha!UXVjwdS(^_k*7aAM=qH`{U~mIu&Utq>A!hsuL=ya_ z^Pf*@_pE6=zQ-)gK|_md2RkBX(!xX*1GonO3sxxML8 zIK>Wi5Mhqt4^*b>D8`8&%^PRsHzoRRs$058u`f5=ZJCF;60z`jAtEwBM7Zsfr~Ic( zPkZoeebEy_U&-R-q!wJk)|Fdx`L=$YVN1=*>Ff>>iJ>oVS~GxKYRjY@JbywmWD;DQ zoU~FE?{Vj8P;Qi$l<>1&fEPs@2yQU0pG0{`|w-9_VlI=BX-j zS+#23O(%STkg3;x|9;{8c?Gx8m#HpklAVfES^#N*p7_V;=SXH{4)o{LgbDkT4g*M# z0F8V11g{Pd^2}E_^F;76A=T#RF9q&mIy+e&8sJbY`2u8H{b0m-?s~>NAARO;zbx|= z4i5Z^e6T8t)Lzo45_>jOWDE{vGe9zOcXqzWsRA^`GZV}>9%^U?&;ZJsa|R^w|7pa@ zd7d_N7q}*kso-X|WX4!ESQ(V}j~+k9!<4UkovERI1$_{SyX7nWB+5-kvsAdtf-{g@euc()J_3~xL@O0G^xY5m2UcR12r&yLFE1p)%}SAbsqI&;A3Rymre!WJ zpgK&Hc120cn!|-za_u#jJ+uz8i9>^f(d;B66_S_@+9D?1bt!B=8J0?2pS@IED9JUTii3_ z+c(cIU}{h*!;r19vZ_*}Gl{oTAhzPb@%8J}lQTkY?G)Yz!Yb+m4!|y*j#J1(B+H!T zZ7$P81NMFG=gX-qy-N#j?VfsCCacKO&0A%f(E1SYOJr|{{}Meiv%xbq{^RzMC9YON$pm>WuLGrZVn*iw98R{ z4^NR#_@<)~)sL`Jy_)vTEn^QC^BuvkzSBJZeT6 zM}1ot4xM7gij})NHafAtkT;Nt_A62I+hPtLig2KiYl;FkMSR$7tRT= z`MhP`zTYFVFAm9ksQPu;XotwW+|$9uSyk8bzSypPaBX<60NGC~A6~C%ak(2@^kT}z zRk15m6;gk0o&T)QFhz~$>l{bS*!SUeLSv20N0~()Q@iKOIqsA#bKfw1&4Nt6%d2N0 zdOOSqU9^o$j$PASt2=&7eyZiaQ;wlF3fU#l?0es=cezO}EY-{R?%(M-*$qGZlesH%>!&kVNQspOld%n|bH!n|k8Y&<+}u`~VbEouAy>Qh$qPB9`>3`#Y# z9l!{f4`Ly?rt@PIVD{vZn*>muvy$e8;5Wk7>MsmMUv}s^#~8^Jcjj?8 zQHEwO=lp~4+ys1Kr+YA&VNUbUA{VCUPol>>Ds>e|aOw%}KYHYbVm|op?c0SQ>%4J0 zJ0J8Z@U?p1o+1?}X!T%4()5NOq_Q5gC>d9)BNI;wI07R#j{ElRTJ5;AXrKA6)zGkF zR)&=nPq20tzu~cCMQYEqmW^u$+;Vn5HSF4|5EmV1)gv0;7AkB!^KnJO&5Yw2?iQ7U z6bf@D+r`KYJbQfcrtPwyjtrBZkoR$mCH*Fzm!|zP~V%a}#`lyWkx3#M_^puGx z>~6WrNx84$9hbP`M{O||?_AU{*?F(Rrg-G~dEXY^9DVeC(4?=)edo;AE1N#^bCHej zf?K!afr1I2GuFfy0j3vg7Fk(&Is}UO+%ES@3m% zJ<>*e^_UKQU@22XaIt~KVAC=tcQpkCs0YWvn6(zdI!SO(ynS1D!ObrM>8$1*C;~ug z%83)@kZrO)!{Y@a0x$SxH>vH$t4po#Q{~WE33_;T53d{Gu&QV!y&)bAo15##M^|7k zssafaaFQ_|t?4b7;#Pt?H}6^>BrGem8A(Y^{NIwLQjMMgFWfuLe=uy^M2B1Dr%ccI zy%=KX5Tky(d)wiKR^yD67ChVAIWu?6*x;?QaR*-PJorL0;C5(`TSd6%2APpPKLHQj zy4IR>IsNd|-q)r^$t7IXGQNKE#sg>j>(}iI&l?2DwuBvYE;_ZbLxFXxe%h^Go1vx% zax@A#9!6A-l?23GORVgd)il&B5$#Nrh^78!M%e7deLZWyjhNhTrt(yizt+Q!~c)jim>YR8&B-|FfhTtF8gplhrId+AqGQ&ePRonj02+>Jeb zEV`(=awby)upN26_&hVDc$?yz6cjX`$`wV#s5ufEt-&o(mlw8V`e_R67A|_u39yWq zKRg{s#_!LPSa?{ad-q;O?p+pZFd-nZqltp*?d^@{O@q{Lqk-hDGnFtK-rdJI=Jw4D z*nks11w%0nE_|BN_3WfcA$QUj4XRXqe=A7Q;$u-t=Ar}czYn?1>hwcnmT0x5X7%RH z2d|C2b$hFA-2>D096iffc32Y?+c0dLtMr#aN zX$R2SsO#(7Oqn9gU=ya`CG(lKnjy{qLyw_V<4fBH)Wg36CP+uFh2cDJidl)<8316w zGiur=E3XN*bTE`em6xq|=C`D_3gi6wBA`_2*v?YUNaHT#vR<#XN7v3MvHk5W~mUx7((DE9W24j zkbj6nnEehXky$+-B%$OgDR0~!$twAg(fz({RR}2gN1YYgc47wevZ=nXi>KR}N$^0z zBW~a7aChMe_w4H*mxeDR%4 z#4TZ!{04(hT%uW%9NC8Rejl+jA6HisY|5iwnBo)JZ$E#A$@00lIA*lUy?b-EdzHm5 z0W<(_0B|9F5(y4Ali)knx{;F5U@N|UWf+5{Detto%$IZ3BYOOJT5|| z?bom2(~E%^_N`v6qNHTifk0FM*lI?RFm~9_!tfm+3eSPqmd6Y4EPP$NMVK?u^znZ@ zvpIPP%e!NLPs(l=D3*YjyXFa&XzSO99HrS?hh7BiiDQwmSi(cX2wE}mD*H;4F$Z}l z%m!u`Y)P(r`pd@bojM^Hjr}L^`Je3`AMXZq7@qz9{d>Yrxh&iy!;Vyf7P`q;m8tYG zRMg0X_MmI$xMYcX-@XK0MIgm#ZglH2r`@-(k~IhUNK|1Q#Ub?rO-$Ya-~r(^=t=w; zex!}fyw?86hqfncl;u4gU}P;$a4qHYI1VcW$nv^0c)9V&b^*vB7Pt)DNe1|v%*=qQ z=VrV0|1a*|J09!5{r}fK({LJRuYZDf{}L`q9TL!vDWDWb$1m1MMw_SB$(h?0_2 zN{faFNo7k`eDANiuJ7;qeZJr8cKiMP^T+#Ex3@UY*ZF!qkK=f(Bk(>w%w1n-T&52a z-*(x*r$J%&b`(4izYnwwtdxzZq&UQ(v^eVOuhGZ!E0_elF;fe4ms0k*E9FyH%+s6u zSkdCbfTSynKVFP0|1{2CQ$fDV=OK<;-SUb@EtNKn?0qZf#C-jmM;cAcew}~)G_qoV zene2oERS*h)>?LN&AoXHuxy||6!GgNEVBB+Y04Hm4n>Lu26Z7}pqJ*XWUpVJ^0)r& zsuo^bbdTEvQWgclm&!^s_qLyJm+=R18aN+jrB2;?vzw!~?%2Mtusjyqf_U+B&%$h+ zII;bJfu3FryK{#PD+iBdjAcgUsLdt5xVjUSu>yxmB9)Jl1o24C735a}Dw0BD$aw=c zRx!neofu4NlxrR;&7nhqz#S(~UJ3ERXPd51>L+SkCr?j|!f(0bnsNHB`+ZIKzdE)m zjw7NawDL9?nmkzi+Tn1V>9#@4Y)MHa0Myg6`&g;rmk zRR?J?wn-j&-jRqCiabk!cmh+_7W$n!RU}x=UbLG>QYiaY7tEM320s{o@&R1t&@Fb9 zr{lSOn?=uMBpfiEC9HiJT`Z%}#Bh${4@vcajK$4#o{f!0Tbst{>(3>q7o{&xf?z|L zH9}W6``NR6)EaDZr>zvUhnPU~W!R7S#Af#FU))ff%e0t0WrF2d_mj8TmDw?Dp}_%z zuJg#4q90}TWq2r%nZd<8$&hqX62*AeH< z_ijAia~(G>XQ>b%QT;i9Mh$Q`(X0)RDGC-TMZM>Fc_dILpx9tWxpk|x?dBbnt5y4i zz7#wim+ah|D`o;QaI$l~Sb-Zf=nYT-yHNlyj+yuxw@HU6j;nztf<%Sl1O}uz&%{7s_7oW84+oEVile@+D-l$58z)Kt$pIHfy!;76pzBM zVW&b&WMAYbt{)U)c^#P7-97KtYQRi`rc1L+Q)}O;H#|!~RK_X$fx>?6+H=T#3yU)u zk%csGLDB;)F~$e$4984e6Yxr*PyGcuu;)V z6j7`H$#lFs@#lq=26aac@%-N^uaTRq**j}+AFl;zFK^xNul8(#Zh)%h5Fh~wEJY*zzr&xML#4+n^cg|nhDATu@_MJRCIz{q-df$w8Vc}xa6yC#;^e(v@Z)- zpTBr#sSRd-aO@q%FAN2P(A3uIPoyXd>BNl{*g~gKF45jLQf5hm~Xn2~~ zJGU0GgxqGs9R*W~l#x1@F>wwOslRX!nB4>sT40tmr#*hWv!$VmX}O`dKtn?&qfeQ( z!hrKzt2a=Q=&CnI2RZ7@QlEPRkJlI6>u~b^7H4NQ>DAtwGCsP{mN#_SE;4rZqlaUI z-pGR;h1wu(%13g?V%{=8|9}7-;Q7#^+$T6b5xSDXkQ~4)N~W^^bEsWz4&v!Hf0Ji| zAT{PeC)>|?^L)c6FIz@S#8>F_UI<=5Z4oGc_^H^Z8G#$x*33=MdF+d#%_zla+N{s) z%o*4Ml_W4-jW>yP<(NRHs1o|zlSU1)Mr=xlQ%Xxh+dt5H^~7cCx}pJqrypN8dV*-I zjt*x-t7^=L9JG{V|=zrEoSKhBuL%7Cor_rT|vt5;KsXm{vj!2M z(S2}uAa$zlL?%qn+1DDYKZ!bb-1WfJC}jFfqR%ednEbAbpv=*5d}C={jMYgNYau)8 zOvE%%%{_WxuGrx24s3n*X8(J^llXA42K25r?J-`-``fSb=L_~tYTaO_buKPz{`Dng z{%;1Z&#iruc%v<}^X!>>G`0U(F;Cy+$l3>9^4S9&-pc*H_51p}U(cMcUYi)c;bE|O zZ2W80e@@12d3d5@jfu5mc8{r%&(`>hoxJOApM*3@l$H-@zHOo@*)n6-G z@PaR^bi6p3ieJh8zOD6`kXKC_8cJgLj%&cW~hVy@L!*L6R~jf6P{IPTl0&qS@@&``AJ=J{qKfN$9jI=q#y8@9N;w5)~k zSHGx_XMsvGK~!y1Bs`}rCx{VYA0v4ik%zicoeC-$8U(9aLj_ZYApg#Gi?$nlf)o>K za#dHM4MAw-yQ%+!?Tof2bn>V?nmpR->` z?MxUd6HVM*aE#TAjpt`vOi1wb@kt?XWbj+O`y62pNf3@k(HkB7)P*ps!lRSUy_7aB z)>!606{X`go8(Nw2=l?~iUBju6=zw6Ea^J$6ldF!o^Yp?+C2Yg2!Xj&b zlcigdrMrt1U0VxhZqUCY7^zSHMs{XvM z(^@>Nd|JB$_fL$8eXw)okp3S}2HGFVyKyeyW*84FqQ+0NS)s3h%epO!)H6U{|ouI(R0lVHBqwQ~$&>b7_OS-vf`x5d*!cJ74M zCj;DywjH&TfY|hH@Bfb^ixvfETHq6x>nLtKAFCEmP@sgXF1X3T1T5OnJO=!#pkF}K(JnAHulC@c)DfUujryk&1f{HWN$U32CQQ2y4zaPxRTAc&ln z-TMurwN6B5zAjBq-#YD4;BKV>5mJW+bvT|Xxtb{ZNio6KTK}yD0KCuQeuqiYv-Onp zD0T#JjGA&T3)1YXZz%T0d!Mikwa5+)^1S^sFgUntfGIf|4>FsZey-&FQV6je(^jMC ziMs{XFk7a^ReJq_=bHUYztS`y5T(WWc*iULdEKCa&qQ^z@6luIYDk=;^@d6C;hz5J z*~gz~+4SiA-~g|G^ShKY+XZ_D9lhH))#it9)Tc1J`>p4%Tw&TF*Ma0SP{_1m5n@Hic-f1t;)=aUJ5fuK3tx7Exrx3|q#6~R|BZXDP2fcGU!-(DpsO+FO4G~?5%mB?P@d8cH1 ztJ>^n+3Rkb7np;HvZ(;7`w7w-*q$A4Ja1*2e6>h-+FnpB6NAB>e%Y{FaNwJ*#wYwo zjs0y>|I9Gv!YQwohyees)5Ps8rbbGt`l*T%wkb^i6;5@+IW2$<1Y?Rh>XgLKU512U7K3&ENl-w)99=(`iio<%UYELkGUw%+pc zJL^iUPxe_D*J^d#HI~kOnv~{jt+w1vv)vY2uCksKHTLcM!0{@JGG+_^s|B&$hh22V z78eTIK6N$E1WIn51dx=gp_hS0DU)LdGWz5Ub$LimAc$058ZlV6gRjD@i zxpA^Px4T{m6|2q;Dmyq$i^LeD4vOqlbZGPGykq;;Q(f@~G~FD0uy~x31C0w@IRLEr@t(0)j8$L1#sT#~`(DT}>3$NE zW;@>5ZuE|3RBglgUyb84uWgVzWOFMvb~C$JUp!?Wx~Z8N__Dc!0UxA)zwV}1R4M1r zfveuBlMw>wF<<)^8J+A;K&!(7GY?<4YwSqS;kV-7R&&wWsrO}Z`YabL9OIRh!>pWq zOK66A1}<5(%H}kni~}sGp2W7Jg1HoG8RZK=)JN9y?%2^G>fykU*1EF;5*mpDw>h}h zsHk_{LzAkH>Wx`Jsh3rk_8xaOUTVAP-R;_BCJc?!D&y)9>A(XV>u#kHf%5~UTCa_c z%NP9Q!9z?kVtE(OP05v;4L;8Lr~Qf78yg}Go?a}-= zy}5@(6G2z*311pOGo3_5{*~!%puDK>Nsf zUFw=d-HK1CwEaU2e|Px(T0u^`p2=gJ;vTD5cZW`@11^mScROUR`t+EAu7N>PY0EU@ z=;)}ZHE3awlB!Na;M43i__QfLqdmyy$7oDBI=IB#V;reFkAH+vbXe$&Do6Ff>(~3T zODB(e^kz8iftQBNi4ffU0*MeEJzVR->aiFr!sc(Cb)X}!2Dubk;Q-ly_mgrAr(*Aj zadA3pb0`kOG+D@n>2}7A_~r+W9$i})O?v`3T+mLbdx+)w4I9$m=gttnP|CY;DO>kQ zU|Ag84kA*k;eR!@h6$AK0$+|JiQk{d09Lm-$j(<70!u3|< z(G}LU^HRb*ew~&Usif?Yw4e2@Ce~6Ew(HyZY`Nz*L&cw^>>re>DIZ8ZxxZ!Phfk|@ z{oM2qx*dPbA6`8;)poJKbBGg114?)SllEAsDTxm>R{v{DQhjhZkkOOp?j{2W|C z@82I`p}>ZT`?ulEXKv<0GFhC~5nU?^qU8$5mfr`4{ zfX>X@OoQy?B5DBfrT@pyYLj79xIki4@{ihYmx%Y|XUIDvv%*+c;^jj7pbl0VW&1PL1injKu?{*s~N-2Oo?jqWZyw zgg}#<@I=tc^nJXyMTH&e1S6P<1ow%Guws;JLP;q5sD}j+h!~B}+DFFzQ<0wl46*~3 zktbpP73d{iL{E=FCR=@UrA-Bo{`2PvzHKR{S40v{n=7Ty5ASob?~;b1?n%dC{RyRLrPb6#+knPi;D-l%`78sU5= z+lf{NmOABsd~NIVa?+i7lO_*Q)lEIu=`wo+9xNImsKW^Y2>-KqlqQC042;gky_3yFopohC z%bQh`>!XY3J?xhG^UJuqF4sBuQ5*1BbEo2_0AlJoyJMrKnyTvOUBgq>Zrmt5>tI^} zOJ*b|eG6A+2UNqvj3=mKvGa>g5R&&H-`2{i;7@-RmJRpoVa9K#9sS%jb;i78@0$}Bi6 znAwXN;W3T}5p809^(L^GhQt1fwmuAa*h~PxPDjhs+j(s| zk&?38GvpKqsj#3LDhgDcbIE)`rc!%sRjAfvlK_oHCm_^(Z0AA=@|%x9AqL520JI6` z2N@oOKjUuYk_}e#=^Xw!DOkMD!^35S{LY=1+elDw-a{uks$DbWsRR7DVl-rRHDu-kc;EqC|s#PFMD zYnFL^QhDEbaIr_v#5SMU zfMs9c4)#EbM7On+a{8K|#QjQL&)D5}hj_&*5{4q!wFlfSswTiwUM${=>b`J% z!VC%dhPuV&$~p(^a~c*{kJ_t}y7+{yR#f%zR+stL7U8%5NDU`24=)c_ksdt(O0M@V z^^(3gh>?4-G2rd%GYuPkxRR~SpW0Hot#l$?Xa{dd!eVzo)+W+**QwS zd*PX-3JYSq~1lO3%ZAc`F#ga7 zw?XA_=cc2vRB)uziY}ZpCsK7 zf*=0-sqUxbU7J$6|GmJB^dgl^{k>69DfDA_nvjC`mFz5W_tUPFnEnMj)*(*Dt#atv zYI;>{<3hmhCsw20@BPE^6ggR>ffa=MGheW^3`Y6w>(_;m-01F!9ei^mvP(7Bw!rIl zj<*n#7Gn*h&*M!SwNpR!5s&cf$VSUl!C!OS5`^Q1V8cK)WY3_sOr0 z)4EEkF#fPN%MD#K=PE^YXjMxb`TIdm4urHMCK};$a=BjIeCAq8`UI}- z>@R+?QJ|-IONFaP9s2S8y8*ueCgH}dTew?~8F}shdJlk)@_-!!t`+o+q5*!1m34xM z_TaKZYCbs!q-RGHw2CE5*j8l*9z|Ya_}N@a7MDXIU&DK@|1Kj6D>OH^ zAqz$X(cbjw*AX936B8aV1>b=GgUkcPMT9}%_XmSrA7}7j=)vpoC?Wkt^7Z8I-2y)T z11|OmlY)`okO#B)o3cO6)TC8p?~MiYmCSMAl1DFB!MtRL2pib8l~s1y3hLZ`SZ{p z5A31uho>|+{gqqcnk4Y!GNB?h(Bg=lu-VX^@GQU&&rk9Q*$ayj={V88afUeV^j?PCdlM`ii(cnoi?rUjippm$C+dAR6)_)2<8$#MnB^D*CoAL68u# z%nCv&#!~43wWf5q&WWn^Q&+ z2m!qcBb`VI06&Fxh;fHO0|g^%d?%YUsU_Yn&U}Bwqi?@{Oem3hLWr;D5=cpAAo~S} zEl&|m6I(D@;DXT7qxicE10`ZAw}) zEn3E#DIOj=6;Yos1ku&Eo|V)c%LEzA)#4DPPeFk{Z_XS>m|4~bfiHu2D3#@*Dk7I69XuB@_m=lrFL)h`??g{ZPYe^&jnm zFGle|Ru7R#;A_!8;zy+?d&#rty$u}|^AeG*T`1q2jLViUFVBrNE0#eyvYOACR5zP5 z_Kx%Cul-EPr3?SWnp9WuW=~HcfSsPdp?US+bTquNhAQ_^T|9fXXW54ctJAn+_=TkH zU>N2pSVeMQ+8e}bUa(8_(O^1Oi<@H5jbT>1!gf=(B$I*&l?y8eg*@qs>+T~*-lNSx zEza=65cvg`563-<=)x}tI+lN%K3aXYs9lKV5n2r1aX`N~hb{ncs<)ohd|$vt0*GMf zq@N(0>q$|yuwcWRWoUdh9%NDQtdxEGwnu)X>9cR&rZ>THteSCk?#+v(!}$D2$|*-p zLPE!TbY`tTull0FScf{%a6qV@3*aUN6waHh_U11~+;~$OtCZ^hp(B7p#2tzC9U%>L zx~FFYmBQi%FzQgO2ag}G;KOgfU70+f?9spGIMx*JJMM^}C~a(C8JUwL(EP|9>22zC zbh-jp62o4Qai{jOvJu=HCw=|1OTi)hriL0bKncIRriN=eos1Vcc$R@|V3mwvt43{B za(3V}zg7mMoMl$gi@rYshsd4ROJZBQt_}vigYcaL^PKh`dmu7W*&kF?+LS8LtGbXw zjO7>uk1B~tZd#4cEw!!HU`=6OULF+0F9bjiLP|u!1e9Bgt_SjBe16}?T~eGw5ohue zc92)ES+_2(ZcSZ-*FS^q6aDbZaGd45d0t$vT>q?R&mIP2`2#;<{LmA^Q79M{rKJ-$ z$O`%&`Z&;GVSqrskAI5i14x5^pq)5_WB2?fgY_KEw3r-&33r4w2i&>f6*6z8(9?iN z5&8iT1)_vDWDQX12gS0AiakL=44owleHK~ONm211 zTxXIv9H?n}9@8B@XaE#etHSIq-1?L7n=g#T?$&HT7w!_E)QE^3YAa?(A0CouDiT6& z#*VdUu|Uvy$i~I(GOy!KCAL_UcA^Yh7xyRi7ryb6ZImMm~znxE+-UH-k+0{&x3*`o=L0|X7mzP z{5I7s|9p_PmmL%#*`=(1`tj~&7ON5{N?V`lRbJ=Z)|`+Oba<7UTOU!!J9plw?U?w} zYszYV**!B=a3)Smh$kVBx#ww>9^5IpE)CxL1Lk?Li9sLjoI06FxD%)kmAu{Pnw#~m= z>vuZ11RQL)_}k@S0mErXdL(C+tfSlJ9^3QruK(4^t5Qj2Z@5i8P0w^6c>nQZ>*AqC zwn9cMKkHNCdhYllCF%E*>C_q|yr&dS@7gAIU_s4Mvbqo=WW*fR>6w#d^I9 zd?`w8uu;>|%-kULRkoQij^UdA?4KWm4u(5Rk41iSOqa~{`3Mp@@D^>ea4%?d8hPkR zl(ckljP@Z-;_`O`h8frvMsnQNHn!w%IL^UIG@*5WOz_GIaaQuackB`+PtK*lZ{0N_G0D2Z+ zC2i`xy4Pv*#wDf00$bkZ=54ily)4L~d*D;``1Nw?`;=&mK}2~5W~V1wxImO}s%@Fl zQ^R;2;{}Vfw{kwydd``X$G4r9>TvAnQA0K@aN}~n;^jsk6nZc+W-#rRmj<0x&_O>A z8zj-`+B$pb#;d#ZtCU&2wQIp}P0)W$oCngPj%m+6dCG}0dh|)rZn}P%#Ia%Cj@}2W zkW}nwPA&mOrz(4;m#1x^|A1n1pYHVsofxmMhUT{UA-ZNogFx}rD3=*TH) zivs0~qt)5$itOI)8VEp?HNdRn8lC2c^f2D#(34Qfwh>2VEWWPTfRJW|CUK`CKaCv!UaY@Pj;)M2p$dX9^qTT)y*G5$43>oFtC%5Z{GQ_E%lm^ySayGYAj?3D*TWKu^ei@2-J;r;5@d8oF+|)nUt7 ztB6a3a<{-z2055`HC`n{)%=!)f+mai;&Kemn{T3JoMVzb$RF z-~Xn6cb|JhaxG!o_J^l>#(j*dL$1~}zV$`)oo80Y<=?KGicO)D>6(p7m+^pwD2zow zJ||}Md#~s1V)aAA5^pTPfeF5^pvf5xCFi?Gz$EFD#~xb__1zu2cfrn-3iZhsbh8Fq_oG zIJ0Q`5O9mavrVtGy9#vy;P6%e6-Lp&gi0zMnqQ0 z=XFjvylDVUH!K1pU>sp^x|gITbKzW4Sn;>dwT*@Y>~goITOqzvvCTJD(%rm&SlX3+ z%t2dQTN2j_K*hg!UL$@Wla*Xt@1d5@4kYHz+i&l?<&yUDF~sQpeATW!&sp8u=Z7UE zy3cSv8gJ%v|Kyj~1tw?wZu?B)Tr;(PdP&-SP{hQY;*-5~W$djZ&JRDU*snK>TP~$p&@=>;0>h<>L{3j>F_rquIRQq?Uh-4XQx1AV#?Gx0(0?!B95 zTF&sfU{uC*!bY^NcK`51X;e((rnVeCEmU%XXe(L9-8&aC6B^Z0dXo@hj2N-k@|1M2 z|JB1Sy*~f=Ve_HpFNy82$@WiqQkpp+lqD0NQC}Xt_uxT*jfSRq7xRPc$tt{T{`~rF z^M{TsJoJyAWkVI(?lW_&%sI#No1RAgLv2NX37Hz+`iEq-Nnf6B@|cFuIccY;CiTgK z{J6-bflD_AzZS336Fw}%7u_rd>(#C|B5Vk5y6IgL@SCui$rc{fMe|&-ar<@}mYSbZ{&l45(Hw@Ofi%8{>^Qbi$wT<3}PkvTh zBvi@5(o$G{ii02>nV8Aj?W{0zH;Bktwoj2b%B`moEHqp#KHtZ;ETd-9~8*q-Ys z>gdpg6ZG0TmgTgN9)@9?R*6(N8hmzZv56$AF8)J52n}WtA#j7OLS&a=3nJ~)e9sGl zbQ0IQGL6?O;yRG&+w|=5`kBw^!i8#>fw| zOPPJF)=rh%o>hX98~kKv`V`KMVcOaY;+%uQEt$c8{^ZQMvw8Z+{8!wPUS9HNUPR|# zoUG7e^UrTH`Rt}n74NeyC)Bt8$Dtr2L`c);%(<}lJiETUi?`jZowno7*q{j=Y)DV5 zdn2eq5iYwD6v?2fIb=xJr1{JdLT)Usjr{x+!i$*kNKZW2c`M7%h~YppFY4&W^-=O| z32U&H78q2JZQ*tyC1Qb21^o(hFRQp%i?wFOik*A*(5CE9lsQdk200ZQ*~~%V92k)a z%!2p#_uTCh+Ef2vix=Kl7KS))=T2*yGXS2hCU^NI?wsc6&!*3udHK?%_o=?Vc12U$ z1EFd4UI~dNCt1SL09~{zvM<9dfV@0gDv|GfkR6j_*1Z9N|`^&1T2yKU9yaPK7 z^bjV1hq}6N*%eLbV6F)op#4Gi1!ZMJl6zw4(lcepZqdy4pO()A6@X29`00}`L$bGV zD()~$66tcz%WquLeHuAm1!S|N+A~da=gzgvx&&~6RMC(`nycRNZVY$$HMLbTI3z^C z8@hHa`|)G|4huiZRF*eaSgR%%r$2s4yu`Pb(s z?qufn``EDK^^98!E!%Im`a1gfLXnkd+K~CbVn2*G*tgWZc*+Csz-`;_Ay$C4emzG2v0(H7MYS_n;ht%AfY@O z;6q2p0~JAz&6xIEcCZVqp@9Voeiu4Ow2A+dj7$1-;;zKvzhqohzDDe#MO`F}^`Q(n z+M11fN*E6oX3ZmVd;1Ou?IR;ob7FEkiM!2ae`vUfk4@ z(|-pgk__0~euwVAiMQ@Hci;Uh0)qO|{>{H5ASC`fJJ&Jh-}^HqI%_QYcNU|>h!O2p z{woGTV%v7GmjA!~3bi=~KSI{@KWC;tCGeVuXKH-=9##pXpSs(69PL?nDMxPOJDgpu zHPKYAI!*GBt3l8xutV=}q>Gz0Usp@Z=AY3mqo>W9g&i!8<9zso)3aCCExaz?)$C(Edg_V)q#WHA$OIRYqgPnCc-gXCP-wPu9z5s(xFOc( zh^He(v9w>?v8ku^M@>#~z@|S-x3av$iFD)WxG(p; z3si4w#kqht7ZFIq^G?&`Yi9gpR>e0$*WYWw(7&(4FZ7CqNHm&2V1#i<>Zpmm&ZTE$ zAoAIoYu|3v%h#`ep4j#Gd#j|{#~ce)fJ0!%Q=dMAj-r+uvebiY25O+NI*%Rn@RI52 zLB#~id`jMo$Zji^6$&@cSf}>wdQ+&f!DZOsVtEQ@nTEPLUBtvz1K`-Xu}+=xaiC>H zIB>;K4g@WMXBM__3rx?2SGX8>Z8vYAmNGh-u{4iX|@1BWrIa<75v3#wOgxT$f51BB#w&aK=X-#@jr>JmMLh2H%l_Midm z=jFOl;wFlOWhW?QWFB9KETr%XVHa#oN92H~83jhJqgaJ~VY-anMn-oSiD0!JW@N}l zE#VIXjJ61C>!=JQNC6??16kannUs*Q>O(>`s6G=VEdU{vsPa0Pel=-pv;z){j^CZ7 zsGtDp>Wx#s^A7j=A9K77*3J6K>qYrrT@Qd=ZTXjZ30{I?nWzpoC#ST+wU|MXXAw;k z`v~@(gmm62)@5)VA&b$*h9xok<3_0$m6bK-xki&CPAa187K`WaJ8b0o;lJdF-l=E; z+Y9K8jxHM>&UERYpt!0ED3GE6bJaO>=R&StbI|G=hxw`EeSD~m26t#wR>>AGFGdFv zM$g8^hUp2SYsO4o2QvcXv7D$Q9ht)oRsr&hC`Z@xRsnp{Rx%mFF^qE?%3p=eq&KK( zlnyvyRezCeH?Lzte;(E)wSKENvu#@5bI=tl#Ow~ zG-!m2*c4$BXcV9zt4`UmL{D3RKrgnlsy_&e*%^EI0yr==9RvUd;Q?yTXF_?kqRgg z9X`p!Cp$kXZhLA(n><0pR6Ni>%6RL$;qfDJFmitJaTaxEiRL#B2M)-9BdvVY*a$=? zkgg((LO~^(XOOOKy6kb}5a1K@Zc+CZjgarocXjQAx`h*!-6Ls9o@(r5;%)Wn-Mix5 z&2B1@;o*Mb!=qiNI60|avGm_dR24vBmGXVGRjJJt21E)XEpjSDLqUpGc}WSoEDnT+ zrxjJFG=0-7a~p?dUups@Q97m-wtFaP+09(CzK<&&{oXIy@y=LkJ(L)5?8tg&ur_j2 zfEA{7YEEryHZdi()7$tHx6RO@lHV`;KmHNHWC#Mv9oFAOnzMyiSLM?(1I}YF22o>6 zOHnm48OFD$935g0(mq??_HbxzF zG`9qQ9qw%dfmtZKk>QOrK_pj2jwdIu7!`mPix|2MIrn+t%%<|B%K%0-cpHaUo_ev2 zB{}3bFoP&H~Nre+2TJHmwl+ zb`u`}dAMOnc0P>~Ka{x#Kg~N?^C4lv=?}@9Bgn1q(+&9Br#wXIs`B~j2byodWy8MgxmM8Uke-& z_VJ7|!_z%{js!S(>^aDOG;%tbU^%hyrF?Ws$01C)LJ6iWK%D+vAp*ptZRl$D2VLK{ z&#SWy=}gMqpWV9EX7QRW&FOYKy49lu?ta`@ORDXv!ZQsj}A4B?8dmgYpLyTwU=B!H5su@MGT4DBuJ$MAUHIcILn)h0% z9SthiUA$$MhNb6jIjIq!%VFjRy4!W!?%(BNa`MrPBJkFWAh+BU-o|Vjc+V1V6}466 z$!(ASB)E+SBy}~~eZAgpc08wkN$rrfD>=pm#sSA7hI#vP_BOVYmn)WV(6#QiD{Rcf+ zw03@!Jv*JSvZ({IZq zBUH@|_Jz!7{aT`aXI1%u$Sv1*+t<1JRvnqr$$IGy@Q;1_I9XpV8`HH`b*-CGfT{E( z*Aeo(w6r1USJPw%h)w;61f2Pr-TDIsSgb<~4~g`B4Ws5~)n~jG%(hO~(WIi$CI*|! zR7m&Po?Y69C`>sya(e_*dREqC4r@=<2>;HPI?~7B>s6m0pZ$Zjf*7;SB&qVy!~SZ& z-)zp={53ne^Nx56pNV;UYxjr6%p5juxQ-NXX|5levII%Ohs5j2$%^MhNn@?eK)n%i zB`fi;?;EW4=O|Q?>|0vC_tUlWo5wcTT{wPa zp}oCs^j`bg73Lo@i^Ej?&p!z9kIYe9(QVRx`vtdJD~q$u=S9?5EfuDB9zs2v^=<|A zv$AI@5Jw{TdQJ{o_Q%)LTAV3cxCA+L@SIjK6NK}goyRq;T=EJ$4&3p_nWa%r?mNYb zu8#8q4n$2YB_)-%x~q!0YM3Zv7${6(QEYs8(4c-j7r(774o^g^4#8CAEnoNcmRmF| zp6$UA?E>4v?}gZE!Cm7+rt+KbymU!3I(v|x_|cA*c&&LeCqFwv&SqX-S!wAYMPE}` z4F`1*r#IUUnm0Oj-VyeDP?}i~jVIkM2Xy*I;9`}d(`q`9D5C>2%RLCH-_k-7|0Rz9 z9e)L=N{T_5_0uBg$POJMxk3+mfx5?eO!&^Vyj6u48ifE9G*gn2C+#or(o6=^DZh(pFJDvUFp*!8Aa6~c^Lfm+`Q`)3w0%AH_;ihmOJ#R%aMZz z_4M^E&CP`;s8=tngp53e06ub(51u{^$@o5UiH4%X4_Y1sN9GKFQ>x@(K!aY<^zabHgJdYTvu1axI<` z0-I6vGwU7MKIt@u>`o@2Nj>@YGK`8uRnWG5>N@|b?QXOmvtNf?ZV`q!n8IeHrKYR!(Z_LAG8{OvIy7;iFv4w9&NA1kpLq?i* zX%{PK{x7hkoIm$!<}T1kDGS$04*8Xf*K}BH0|8tZ|{Z z%Qr9)_%E8Jgj5!M-TnBn|HD5b@PZv?3i=zCxs9r~)NNffc3=5{u<^<=P2IotX)j|s zL-OrbE#2o+md;U3ysoq>;?L*If0X-e-CZu)-DTs$juDy*Fa1bp@sS*(ENJ2--CLfY z`Pa8?^X(n}(4(RAVegp=ra|dn?7ta%Pkom<+`EUq?<1x4F+;MCOp5Cg_cvBtLSp<} zfS!N<1_|GV&b!C|Z^?R9Scm^F2${Kk#}&MfsHbH9njhaUTk)jL;`l#5J@N(5sSvP( z{DEAr1-E1x`kg@a1PJPL*+Ei~SogmX98F+B=Hr-@&=s2oWfYO+SZBD+^aN@^fCyn9 z`<(+Ib&Hf=W^6I|?^w})m#2T;h9iq%-ks+*7y+KMb1}$K!1c-d>w`%HD9Q>PxU8a>cI1(*XRG||{J8+@fublJQ^_dxs&(;RaoQ!O%9*h`0R?4Se_ ziArRjB{0p95_Qz<9MMdYaXIc=E!iRjahmoDQowS#n3t<*q5@Y2=u2h4)QI+@T7ftWYn(SzU>V zsjI1Jg85)qf~lfdQE}CZ6-_OT>tplOCpSBzUB@JkZkT0oHsk?^ggi~s0~vVy7(7A9 z2&JF_u~&W_YCnoi8z56CZ8@Q8Ij~W4F`8G^)THI`ct2>}hmaaFa>fj`-|A3a@Ez6K zl5UF^OUuh!ovD8@tVSDk>tB3Lthx1EQ>|_Z1R%)=PNUl5bl#n{J>rrb#m0)?NESJU z1Vw0KqI6EM?4W0d$L@OIgo*!`VIjaEERhl-R-($_so1MS$9QP3FmiVEL$L=aM-Rnw zO}_gSy`-a+(VN(yHgH}(cozZdP&{2T(3z6*(zR_omvUQ+_cqJ!%0^VaHX8IfTD|j8 zBRjxBkxc2^*1Yg&+^W1dgy10qjGE3x`+Pg(7`H(JE&ET%7%9h{Cd=I1q1IPP6 z=Uie(4E_sYQH2!N1BC&5^WcG*pdXD3?QgLE*fHDgUr>rYr7wm{y?9Yl{~=vJ2yJ~7EpHs-FVieZkf1V%QE07@Ht4M_ z7$2?8*0qQcgsy1y{tiw+$)uX8eynQ92XasVhJE^*a0=lD%B50;W^P11$8wZ`dm4e2 zD2x-&*prgz3rvZeR&`fOiVr(7sPC*~;DHA?RCF|G+ZSil>Tr!%&uXQHIh}#*7>}K}35hJ%rhch_`WzBdl~TR9L;8{py)C2dSm+;?< z9|hUKBj+06gT(n);^Q}=J0|F9ZNHu>&MSrNmhU_(407PNaH!;-3Xv`8-4)A-d%`GS z)a@Vfx{Vu4*6OKVev)WYE`k3DI;zt9NlAqgfp>Yq z9R=OfR%$uCLJ%A(3r#MH0Gu*o(%yCL*6o!21pEOd(|}!|AhUhYlHn@*F=h z6Uf|zhj`otdnwHx@m%EWe*rUgdfGXUx!aRXyN{O1hgh14y4tnB_nsWFh{7DFPbNI- zY%!o~rvEQqtGBae-gS1Sg@&@6y_z-=?LP-7m5RjaUWU(yUHABT!Gv$^E-A@|*F+Rg zTn?d~CC)KA#<-T#b1Ps2GB{dc1T0K@1K8$rapooe&@$PUIO6x&uzIB~k$Y02Yu)>I zWi<+KjW#7agw;G;|8ev~tG$wSW5*qF4c?dI^Hgo5{?h&S*Q2gWHSF4FA2+ltH9tam zrt$uJbG|>;eJMN8WyAT)wviKu)}I_zR9^lO2zo$@U&Enq?yTzRQ?;v$ZMY< z;@oD=`HgezVGc2dqZ&i|I-#OXn3h&r3!*t}os0ioxN{c5kO%N$q)l0?xX7%!t`D+<^v$F9p}YUOpU>-9CR<@$B$JX_6qCW|5F7V)H>II zlNAtCFtue*P|-hDL1a~1>((KqgTasIzr!-Pef;xUA1oKZFSmStZ$VKazRknWM-Nht zvDfs`^XF?(4g=t;b?)oGWHaFo|Br&b{Oa^Wc<2}=f@P71*8keX>hOvo;V~v#SD?+b zP@d&WmLP{$>yAbB-T#8F%k6NG0qivH=rC z(x*If0N-ghz%y-+N~)M^M8s;V5Uzfh=I;Ia1bZD}gd!7^xtf0_fY$8!q>mCrT(b|% zNmBbRg;l<`R#Qvs!_Ad_OhuaxF!c@^IWo4yZcElKu{H8f8ymG%M|dz8$iPQZ7FKt! zveO}ss_f6Mv+%O`n`Te9SYD9%6kxfcJW@+NHlfZeKHWNV=F^~;!;)?sd3z-CRm&}@ zA*R-@>%;yzc(&KKZ~LcT91qvTt6qXGJJsiM?&x2AI1~QrlRvEAEhdqaXCGm6f-U=G zA?8?4GC|LFlG2NAx^?8j1=XKVJGEWF^-JX+;AR4%4C-ye4@9-wP~A5Aqx)!qJjnGS zSh=En{{YDVAyT;W4wX@&rUc6Yq zWDPf*x_c3+93LK#QM&kzSI{?&5Es?No0DT&ncc+i|KDO~@#TCTH;6*c*VYAd+w+f% zN-t8lcp5r&?upM8^|J&biA;2jGZiK!sliEGQ&S*nu=}pfw^*t_@f0UjRcVpMYXPZ?Di)*Yd)L2bcYb<>yUNLIWH=fbe)zOH+J6Pm%?7A*VI5b3fN6phDWvkOs?XW5DEAhZ&vyh;N z-GW~MK&l6c&aZI~O62+oFW6J1tnUmF50U8&J_u!hI_2`RG7J<}yRCz}e_S-Z@BNZ> zJc>;lKN_oqS*Z?zpe49ah&aBrx}WKJTy6&z`s87R_wAsF|4~pH(hNQr=#$1$)`9-4 zZY=-)ytICvgWJ0)5c6K^|vDuqUY|~7rt`t zkkA!sRu>Xqf9QLv(~ei^L38H6+jmYV_BT?6EO~|>u!83Erv11tg0+^K>BR!V;t#>p z^o-g@zk-!GCwoohw{P#D!mz#pRRDqUqR<0U2IU-T_|~Xkqj@`xrk~DK-wr~--Gd}q z`ks`(KtYg_N-N=%F`gVTa~oUjU%pwci0;4+=&AA^KGb06>HGIypbwH=T@QqXO`AXe z2kD*cjHZ31$ME^}aT9weeN~;;4vN^;@#%~pkKotQ+)+ir>WD4U&i>dxY+lou0qb&D zw$|sW9LE0^w&p3a67blRt1&U`hBfnD{rp!ZF)FjJE)Z7O)68}aq{3=B-hTDqf%?d4 z_XZ?)G~Zf3ImuZs)nBfwKi1Cv1}FhzLG&Lu@yXN6oJ!SadE=he74m{@eO->*%0S&` z*WwS2i;Qs%Khu7z?Um?;rIJ>=d&-=e?lL5?!q&~+dY1Z`inxl$a;?Enqv!97=NjsPl?B~hXoNI^0?XH50MH+uSkTRZi@#_` zXOo}L7yBOP#5x7Q$HB`#sV+I~e{a#(?`;pJzD4o8$U%*#hzq2ozai*gnTj84dJfs_ ze;Q)DYN?>Z=-6H+Sgp|2RCMS6qGw(kbIr&0TJIBo>|*F|Efy|p!)Js@B&~c}%)<@( z$Mn{rYWr=JnCmy`)S*hNBq2`b$PvNVo;+DKEdTmwdx1$kVfJ7r1e$dJHH_-*w{OcW zj{xXEhxHRlfZmlI9jl~<-rud9_tiG(w0TVHqS<4N?zG*>uDdok!>tDf z&amxy;qjiVN~@uRHt27K(%`=|s%f$v@}=}zr0Xlh8njTvFxr)>cUFY~tKQJbe=pd} zw0E@BU%t42+eHnk-0TvT{MGKN%7ZO&!6nQ$@Z?AYJik#e!!S!=N|al-4v8|eWVHT9 zYtO!3(sX*?zkd%nw{5c2t_PzC6rF^bX!y{fHC0s!p4F;_dJ|Q{XaaZ7b8Cyf)7*2{ z=dVf<#z}9>`b+QY*?xk#va)U1Nx2>JaxZih#)dC*+Vx_YkH(504H`{{&yRc))T`g% z+-p0mXNn^)ZkYP`-is@hzgy)$&hM$W=cN3x?4qLe@z1sYu6r zOa;rsoJT!y8rj&}!e>Q1Zx{D(IS9rKrb9hz9anWd`E zBjovCiai5cRF1=GNZbWEW=h48e1a)>k5Rq6!x)~Xq3@nReqO+kW>T7F@ zsy!*CC>^d|xS+D|XMtYN=4sn{3=o3YU0u6K0H=icr017azbp@H{Icf?O%h`Uls-wR zxgb9;UtT{~-A`f>`^~T}B@;wM^%@*(_|^{yYGgcM15Q+OR`N5rGP9>oC-IL! z&^>-;tLvo$?+cO_qR~k+@+

jUg%NrL@4ZCr7422pc(nBbS;)Uu`$&RDb!Wg0W%K zkpxHr3I+CDa+vlM6@NX+$<9K#BgR{|kjK5_9`h(Sg@)GwF86dI^G@ry;GR(>fu3sve*!t(z;%)NbaK50f;ri3gF<0DJ_$KB!axs2{ zu;SU=0Gb8$0u}(VWB}-g@w(!my6*?jFIXw~F$K#)8^LM2e>@L!7SX@ksw@=zj9j zQcR{Y)L;dLor_sC{E!QssdCMVz1&@ArNFd5`0D>|^h}7K!Wn4xi8YIfrwf z1J#4V`@N>uPu%36D`L~}v^~I6*LzXkZ9@>BMk)3uaA)Lod|c(4TkqWr-7L<^ zpY`mguaWQCN*%=K+o^4&aoytNM40WYp{L#&$FXF)WP{&niO)yhlBaB>*w;@IHev^n z8c^E-qKR{!DT+`wwmFp-mP@+sfCmXVrauQgKriVQyU-BsZDiU;k_|3 zZ#-2|rbaq&@gMbLv-i0F`o9$WuKDM$Zh6o6=M(sM!+nAO@wxt^qCNk7VkP)Le`59^ z`xnU{tjcth#HV`q+$S^6;zy>ord_>hUb1;P>SgcWf9zW6ezRh7qSj1)=g$FhQwx8` zqY59?rb8NXw(s6**r};4nP&E?p3>5lN9}U`iZ2%tusC!;^KjMNXUqNW&sYvUKTajO zvtY?k(@9QpE7h6Oy5r$A`=_%ncR5L?Wkg+g>SZA*x8v$bQ!0Y#d(N!ihVKcyAKKcz zPUXC7Hf0*!KwP6%SEz`-ZlYb0aCukpe5aYdOmkw#mez)s{3_phBo#20ynB}qS|e`m z6xC*S2aefSuasOq1-RLl zqL+i;8Hyj+|Fx$(i1Y8>y<0^EIoA~fol$&vyZDdpu2zOm8@73GU-Hel@nZM#ft}`U z>K>OvEYe@dug}#sYCK-J!c@B{NWR)@m}%7Rki)&Yl^w*nFZyw*7N%r7jQ7jFT-TBv z)XMPe-i+TJjR!lkn_3<`kqnNZ8I(T$@jXL2H+9R!eNB&64;h|Z^dA{R_-m)wj`vL7 zC#hBBZ5_+ivK_|aSL&0V-VGP$$?RySgz?$e@o^aIAQr{J&JJnD!{5F=wQJ>d|b`^I-$&AGz196X3(yx?M{HBHB44hq8#=|}>Zg*ig>YzfA+`=Ev ztW{hWZ24h~*6T-3T4s29cECaJCpW?p)sNmRo9B|tqS1-nqAlcRkWm`RUU|2{-TR{U z8;PvFdFzOGQq~tbwOL;OFn`4PY3U+q3;~0P#;#28(@5ilKZIn0AW6u3dM3MzM7C}v zBXo})o2g?|iQ2qt5;O@S0CsJAQ)`e}hdPl^g&hHo28?%c_bRz42mk#(om*= zg#|a{LdT7@rI6KvUbf9(9E~%KGjLlkUh>0S9Y8#4Br*aeFc^?wKhWXfgN&e9_Y7uI zO*Rk)p%bvMv<$K^c6XmgMSLtc^si?z_q_IyGPAE7L45crc7LPE7`c$rm&5cQ-p33k z*adH$=)aH-MP8T?ocQ^CWyNwC2W4+3;~aEboMvkqSyzTHy0=8vwZX_@OIt)cH~DG9p}A9 zl3UN6YuBW)7D>GkI#WKG(z>CEw75O*gn3WI&=KZkgW10AS zQB+Awx5lWa9QgK7;~UG&p-{EdL5{E^-hJf++-KoOmatGUz+f z(8s0OB#||2sLx}dQPZ2&FUh>VYc_r{oX1Gd^`Yohv29NzWqMf`PexwKSlVD-x@~*J z=j?x<;^D7M`LEF; zyTI!Fvcc&QP#*C?5J7x+pw=Jg2oPk?$RwiThB;fXexnU;tUvYrq4mN&8zngQ`@K9Z z-|ji^Y=M8lV7Dvv9iz)+bcAZtBet?cP3eHcm>e!Wjd(J6-Q_d9WW&4aO!=AHomk!- zy>G?8jtJOw{=^!)$nyJr!wOLxipLi?YcD+HxEMDrJUP&-DV~;bL-Wi2_XZ3*(l`(! zPQEr7IgIrV0w!d%9UWB>bO>P96{R4c;{b0KN?zu0J6SHRD&+lulmhhIW$-yAM$Zr+ z_4H_Fwg0}eiHeE}*fT_bvF9*@8~L$_!MJn}Xm!|W?>g{Kas9RPRa_8HaPN_FRR zWfa_+ZFUdR*_yk4gKw_-kRx%r@rrlHQ_3@?JAd}2Pt_da_&xk3YG?PX zB0Y?;lLv6U)4uT1VU^2@sE{`vw_R_!+IoXGj?g^3C*wYkfZ%g;Wi_LWoR^BTc4FjM zb~W^6?d)Lh;UpuCMNocaWbKld2aheNleL8)(4j_0=W}r#7Q7CS9E`R$Xgl868X2^P zlO6vT7r+4SLE)FSzxRY=4__%Ij5Zd4AnlfsX~Xyclv@ns2L{%#nSn+fvwpHJ&>Vr& z(B-38gk|JU+y(CLaNKkBx7qwxQM2e$xnJ%HL0JCYYJ7@zBA>-ILi+VStZ9Yc584-J zxMExqY>m#?1Iui|gtlJg#*L!D#XVA@98OTb-_nv&q~v$sUs>zy*0PZ=zw9?oau-K)X$Rn_-+VElV>8mY%SZ_x3o9}&C7lNwgQB}iSk z*040Cl3vLWrvCO|aJan1T`5=j=MBCQ{EfzdNRTO^Pb zG_v5^5CP3!AZ2j|PX=&Ch5y>#s|`CLGQ4mBm;I}^Z`TvcP?11*xNBE@-5^kW2$t^b z_SUogf(8nBIo31A1(t;h;@>-@AH&5J?*U;gn1f*_;UDp|1N)xFB8sc3vJx){B!Txs zGJhXldpV}`ig#L~%4@l}b2S%A<2=zm0J%0CP516?+XOkYIT{7hUCVy@(hiv0ZD{}`gE7r@i}{hWYjujVTRj;sHxq>Jyjpo#L|`{ZiljIRDjU zEoCNoD*x5peg3Om64^f`)T$u<%%L>!E#+TJIp~t{|JKAMmnP)=qECCpH)rCPw?fBA&@-2K-NNHKcopTe7I_`h~;|M?Sw`Be7(GN%jcbO~ZC zu>5N9UjJXJ(Jy;PBSEr)gD^Sq!t%U^hK5lQv}Yo~ytWk1O<)X?a{D&v;$%%E&C)@Y z=!I};yZn9gz`x3%O9|zi&Quq>Uw8R4x`3i{xG=5UJVLWeL!y?ZW)hOl@Eq(s(zUt8ymi#6bj|yKT12; z@DhEa=uK^!NxA+Pl-i~<(vp-TB9O6x(WHoYU^F@J-bss!LV^sT;rPYE)mdStZ(;bpL?>fr{0&x1p(m6&^~9(bJAO#rrr0CFZ2Vp6UI{9{;J+x#8H(=IpCE1W`=e{n33B<&WLQ=lZ=Ss-fy% zgMYuZgFYe_0W<>52Wz2nRC_IFBgKrfw<16f(zdBobXM+(<*+wrjkZQ7RNJfMeML&9 zwlC3D%}GHZqlm7| zL+1h1XNRopaqDiN0I)r*Yr*{NGB1e)15xb)XTuBxWd8pCfQE4_pf*gwOn^VO_Be$5 zRxjy5V${}tgP}7JCfFE*QGtt;g+&(RF9nQ&@WDZ-@-bq0+Ka%(e zC{J@5U!xSetCx+LG}u3+)CFp1v(uFe6`uzn0D_wz2I?SQzJZ zW=|lMXbRE6;4VNb!!dybnH%x(LB%DA#@~KKEl#GI)ur#aNg)X}J8+=> z&%|?SLR}d*26+Ccm;mm`9OejpbgJT3y=4l_Z_CQOVHgDOEbHR-_|Nzv)GS3H&*Dv> zNd}1|)PiPJ>ly%SD4T$DfPDh`1tP$V9-X9&yX5N|FLB~}Vj==%_Mt^aM~&y}20TBa zvJzdwZ@||eVB?3{j>nBOkryye0e8@{@F{rHA3s(O@grafOw)J(5;W?fC-id;3K>5uH+c;j1e zUIayh;LDz6>N5Zw-sI{^8(2O(^3$5w5ucJ)IX=GC$7(YX@b1<`$0u!C1_m~23fL1H zSbs%nOave>mH33SP=@{(xb}F?zs9@cu3aOt;2(iNV;H+|RqsMuSdGy?h#}_oaGj5- z8OyK4k`LX3TeqVF>DrAB;3|~irmb09*}jYk$q}jFna`?FTTdp)B0`6h{n1r81Zc^H zrp)uMbN!dW!5!${k?pb24k0t}v?qsJAzYY+D-&jJWCSJz7*sBOOTUT^HBsv;sIw@& zfa9(k0gbh<_$>I9`XDx!=0w9KamEYw*uHSfBksaq0>ns+gn*&Kq6SNWh30?+TamHE zmWILIK(tV%MvP!yMS?(2{VZwdP1~Di>G)K=$$y*cj*XYTbX1??THDFKVSdU%V}16K zZ!EP=o3z|-yi-2gB9MwQv%;5VDqeb3&AIm8j-NsZ_GZ-Uj116%f{G7`9}()3QRxI~O-`khA;vmxX;1}}Aqqy{Kmmx{QC5z~GcI?yEo z${+~v8&T$AcqdQ_bq!is?4F8KA|YypB_%qC4+mP%5ueanQS6K2*s+e#J$_t0t9{UU z4u0#9NYN8_(X&7XpsUMQbqAXXcDCOK+8oLMlq^?@OIMtz2-R)58OyFIclD`r_NnoT zw|Z@^WtXuu+oe0WA+g3Z{@cS@c5hk{<#$JI=N!Id3%&o{B194RWO~~d2Q5Cs-K@@E z^xHLAyCWz(a%%lA(r-q#AtwGFs4Ku(`q@ka;U;33aW+|J#tpt9@t34dadC5>!hwqR zlr)&o3!y>d15)7da50W$&^%Bs;+dSWo*VbPvUYUPiz?hy$k0k zfozmCV+qh3b8>SrJL989epKCy7Ze2FrU{3E>Qgh^f0b(9S#+w!ExTCL;jnp!5GeItosC=ll0_UQ~Zy9EZu- zCaz8YX^0y}=W6uIOoV4@T&y02H!Qh{bg#WITmmZkfY<(p`w<8OP-Vd#09V7cYH~we zBhNvcu2{S1ab4|2aRnk^5FdyOn}Vn3z`$wYp4bbKEkiRHdg5bs`9}+=?zOe5iFRRs zC><_krj!GD8k@q^6=JM7K16b)lPBU2MrT}58*Z% zaZ!LKCa5(Aupt)4=fArJ?}n-g4`u#}XUy5H?$p8tyG?m>Chm(6nvS$9&#l6<^Q7F7gGBBVdt~D7?MTjdaCml=&BlQ`k?Imrkk^Cg|lX52!5FgKODncOiF$Yc>Xq(#l zcEf)(@wP(>+ZAJpx6REL@BsZ8Kx5z1z^md%SAz&Ez>JCt3K%e-v9ZC?bi&x!Ey|<% z_hbcp_6m%1c_udgIXD_CJ~`I(Zd~l09=V!kedDv-8)lpGt~bZ;NmOXOjMSS2ej5;Pq}PE_ zUVnaz{G15&y6WqXi;K~}E&@Qn%%79)Am|ohbz6UYjQp^QK9|(-bVS$>M?bK`(I!Z}UlRE^)(3pxWG7h<9AGN0zkSt7(eW8BHA&u(B=#65Tul?4qB6+Uv z;g|0e8V`FX^|f-WO`8l52q@ElXnyL!w>v0Bmz+Rp0%Qr|S1>fDhKAa^x)yM%Cfq=m z+uslNi8KNPR5`gcK^v>jH8&7x%mP<1xUSvKGtt^ha=02ksqi|CsFOe$#8P=&h6VY-+d7y z=8kFw5Ey`Fg&4T|;{)Igyln_H#fNwkhfVPFfJVWMsI2RAgt5 z;;0myG>2y+@RYT!{Hs3 z-0oj#{nl1I168N-lQFpcjb&W>Ww=YOTd=OUhw;se$nVDIh6Z#(`;Xi^Zy40=M4l4q zc?IR#xx1oI>xAyg5yoADOy%Kw405aL&J_CS?JSEl$bqYkRxZRYr zNv1E$=Rn|dR&>@lgc22Bg;#~Ix&yV`=_mFbsK~)?RlY-f$ztGhcAi3`_p-izWpneT zyO`D?n_y?+>%h0@iP!$`@Rvegimd{{`diL6w2#KShU5tcIlp|BOD{}DyjXfzdD^Ux z<1i)}Y4n&ctE7hPDt1qzA?$h;S?#tp=O(Y7VV-a*{6FXI`=uUGYuYLn-4>hpC3`XEGRc%i>G%N^NYg5j~h|C&x5DmPF#`+jM|3wq)AZxow3*s0sU zZ(v}EiHb^w`V`#2K^EaSP9C1g!9gTK!-fMKm2`-K@#KE)Y2m$rK_1jMZns&uxqV?? zUY)xPej|)3uw)?>nP?5d9tFeWyX;{JHrR*H2^rnTeud`~s%0|?lCH$EJ_1)Ed|QH4 z>$HAVOOr;QZkG<>cgeK!W;?Zy>YzRU^pm5x~vYbvOGiqd>R3keTH!b+zz}FBE zMH{l>?HtNCRp@k&yLOY_tl8Yq&lkczzVkCXX1- zVsszVlCWb4lMS31&FkSJCvsQFa(to&YCdc{fy5SZf$#*Cl=O+r0`IARL6= zRoFE&H6aPk5|a@u7TnA$H#2rg3J6%CxWUX}pz~wJbFhi=0#2cl$5O@Ji77b@NM{i& z)%+Sp9Pr0s<{emc>7UiVsQtD~9GpOu5TGj|c&)gwFj4LtTV%ZwiMq5Ke+7g&n4Zau zv@!nt*x|{&o#Y$=^Z~BF=>L%Q3(qH#R~Zh6+OM1TtxA?hdMqWG-{Tf$DKb1=d%A(+ zMeA|Zbhl)ES=TF{Xg%#;U05nSPDm33@b`TCb;K3!P)%84PhMOk{c3KE-~4Ef<4t*L zf#eXLuhPb2dvEsjk1B1ow^f`!kFW%ftw|M5_ss85ozqr1?WzQk$e*MKXcO_v!7!Dm zMSlU%rGL(2fO5qviI#w?0X_m!4@Gl@40-XUeyJf16F>?Dup+KVS^c56+?~W*OlID+ zsm@$_z363UgSGyLa6heOle(r-0Xj<16eJFvmf? zE+UfUf2>#_R-<42LHjwN_RQfVsXA%A9DptuQeq`#<>rq|=$Ab&4W^sh*QD!;LWKou zutf-GHv}nwRfXdpsje(wvVQz1ks?m0HbnV0j^ynf^V&*{hm7A9DxbkoHU3!4%Nt(2 z!03hERDR>|=^;l@7xvTV-ixJk$4)U3VHb?emiJHFCA3C4bXAbfysDQ?s6vlpQ0v>n zIer6%%FINcEDaWOaA*#1^DlB9MnqRS1mDXG=Q+ky(X0%g!P+6w+UHsivCs%X;y~g` z*VhvSI7TGlOnp7_I$+UdgEat}F&-xrWua5D@RY_c;{B;M5T1Luav>?llSHeg;Y^Yn z47!#lT}9H`+n4?1A0vO+9_` zq|fIU8%BQ%DrWBwrCS`js`6mJ$ zNFKt`(J=hm3l#;Ns#ql)F@r%$nF@|vLs+Zk=I(|k0<0gJ{yhvz^gqotEo+1O^V@@l znek1P%j>pk-5hip60XAoE`rUwueBQ$h`BvK!I zB4~*P_>&FhM4|5R{_)kZ`>_p3nJBr?CV~+P0jWTzR#rPQ#n^!jpqbyeafjVIK8CO& z1c(_+R7vGI=?_j(s{qVhz>zGIAq&|i7>n>p#!e-vupuk4rq996gVP5^1&CpAkpd5N z4b+D=Pg~anco7E&U&4FE142dt27dU9L8Znfu|skU>83(59YzYs4B2wy}Aix&;6oj?2e^5y+HIt<>|;Gu?Bl!zV)bB?`Vfry&Z zADrF7ufj^)&CgeXQw3xYn1bS6VbP&zxn6et!g8aEC!Eu;sZ*6bW0rqI7ng}(Pefto zo@V0aegr{zT;mz4g4ZgqFR)*`Xmh`Pl!OK$IY%!W+ay-8R3om8skVcSojva8LEIXo znIVaedVO6GpKIlW9hFt-#!RK)TX$@^jQ_<2(91ID>-Y5Yq7N$^5*8lwl{+6^ z4MN(vA@KyUv_VT>gHiA4B}1)`hi#ZOpB*_CAZd~JD>FUi>fR-4Vj4?CM;}CM=wu^? z7I0pI9fw>V@WV(xm!Io%dVH~%&_=8QjsS(mZStccB7bp)LCl-j{N*_(3JGs0R6tBY zpL}U`am2E40qo|sBqTI}W-tMAEMk4~VZvl>O_4=P_WJkKrNIN|p;>_`1PtE`NSE1G1Gck>@UZ2Ry5v+4HE&M@{e-1;Jdf^@)e za5jU#CV_-yLgV!NFHJzBArD>?NTzh4mN& z5^>p3+%nM6^b}f!>5Ae=CP5KKr+qv6SAUgNc^-;i-r0*q2X+Sr4e)4T1_%K(Vq~Ng zzWtBiwxB^Eoj@=+Ml^-{M*#@rG06fxi~<+xP+Z&Ruu;Jv2K|kR;N#;9(9AF^a}9xG zPhw(7SlBrTq57*#VxQv;_mnuA;3gwYM1x3%d0-!sJbuuL!t7@KWikQY2k1~ClH8sC z+=_=N0AXlu&TWC``tGpCqxI4b@T`Yt03-`|Ot^GrW@oR*cnoh*nQb{GeX*@OG_}dW z8O$8b40N`*1M?scZ5Rsde4>O6AHOV4`nA7IO(8ArCfttTy#<`!67q-8>?U+HU26|=kEC;QaQE!)MWp*#4k5K+P_MtN%T}^W>xYJQOSIHZ|!E# zuX~;pLP}{l{LglT7s{(VKfxcXyHlJ+>t@2(^*x-buWinVZZ}aq^cTCX#OShL7I^c6 zE}w+%r{gw&n;sS*#R)U|MJ=3`Sp{!u zQHH|KVlM*9o<3C=6~iRYmSiymK=*!W^B*&%_~hhDq;n_;?b_vug$P#GbkN}VxT%Q= zq|K}BnK-sJOV3$cZh6IRSpIxOi2pbub^Uvwnbxw$Y(3M>$s>#_JynH(psj z1$w${c1g)C2Q5%)J3FZe00AC1C!A=9L6k!650WU%v^H$mU|HyetF!IgmFQ^L8VD1g z;PH`)ivfALT2U5`jw^5!dA3>m@dxeG5jnlbL2I%tQl5Bt<(awGo!yEeA|v3PtOO!N$UKIC_?<#R(@gNiXT`4 z#-ws`21|Kdt9v|fpF%Z(-p>MFo?pMNZ(&6jIecmeIbtfKE-`%6m|-J00ftOYv^(Lt zfoUTw?Wd!BA;?A3ihvkQjR}u04TCQCM*t^Vv-?jcgk9`}^G5nfAk+ji6Lvr_{0tk0kSl>B0SnFY+v^ugZU%(D$kdo?-VPXNxY}o~WmnZ!Y%0-g3NB zXod0I_%bDnFbnjQL(vTpTEhC}3`tQN1rB00UGL07jRp7v|9EX@t++lsbeDJr8=D4ynRd}Db%So>q~z>Ojn}tQj-*7;u?4eDC@2|6dW@!IFR02J|=&1ebO7@{oG0^ ztK;23*|l~#Ve%Tni|X6QryMjb{ym%AOiX9vS!qH@ze4<*SFi51+F7gARIOefyM@U^ zNC@TfWr$zE9KbKswiAO6jxmCG)!Yop5wME;XTJ5dc1$Fa^8VnJg8pX(xxm@S$Dr}a zT+oROCL<@1bJ+Zh8+ z6zDjm+VqhI4;zc7{OMPM%;BHBH~9(WUm=LmJF0`IlpKu{$&jsV)1WNkwMNC8cSN8F zNbvtYLyX%);g%#uiUW>57}syJHx(Cx_2hy3o6k~*s8Qxq;qC&T%!(UMa0Xt_pjv9g z5e$5mRG84vpfEjl^5MJIbu7JKFrA|bQ5&Tifnoo(r#Tlb576Atu?mQyvW_8xo)SZY zl_Y{dts%2lM?Bm7Lw$jL0Vzj}0rHCPq^7Rnq9hTiZQ3Sg1P(Pg z)CK7Y_WpH7ZCpLun5?Q~o8L}L=FLMQ`9gqUK@HcSV~p>q@7*Q4;=yOi_wvHS2Z{zC zpFFeNwR2jj=b3nts1W_#`}-13ZKW>A_~@^*?TmQ!$=uNWZzQHp*)#q{9%c;vIGO?- zC)~w^Z>M~}#P`HJUfWp$3)Up&P(dzCD)f4W?0{gNJzh}ZqxKWI=(-^4A4S+|A7*7)X- z=nvK(1`1mvgLZAfP2i zxlctbzXGNty$Yj9zSQ_%T&6Y9>cP4OFS5|80aZ5Tx{fbrHr z4$UTKxz3J|fVx2@3bKJ?b;8~tQ=lh}HVx*Z;VQ5T3+{9Yu2agssJSM7v%-dXjds_E z+g`Z?p()>ZEyaC-UcGO+oVbc{*e1l0;QV(xSp%%JuDn$c4|Y^@r0;q)%QLpPl)aAE z$x;nn%S=b###m2#Rf6k-4^qzx_*hz6cj@O5KYJsEEit;HH=Mc;XSJg<^C@m7)n~`_ z^sW~jA_7p4!4DTwQShnIUM>FqedIK923`(NA+DhYqgqqbRZNekN0m^{wukxBSMlr2z^;fNo6L(9ugF3o2mlR9Q-#cP?b@%Myd zY465v`db>&dHbcaKMyV$JBsWf)3rDG#?Es@%RPjwgj=7A>Ay^}%Mc}owTMzUBS-IA zRwY_v5Cvj8NeG9yxcGq{tvG1q8V#vHx^j@OXg6Au!3+R&0&F;mKFh!+>+1#rH*T&? z*6ibBLWguj#WgNfEbO20bLXdtiRdA(s~%{T+n1vx3s(m1UM^8MDZBb?uTFB;@6?3qgw{w1$y}h=KFu{ zWiu)b>AneMh3D$X(9nJz&OefNnriFsv9-0eF`Jt5q7$_;QAZjY-f|PGG};W!(Q7>% z!dvjOfZ&Fpj5q(qJCO}7d4zivxP`2F*i++!iAL zaP@oUSuvP5O?WEv`)^)d-f<&JuQKz*JuUW%L`^q?QGa1~rJa&{4-GpBFT1e_J&MvB z(B!bck{ktTgfOl2*&wEim?fJW@cqDe^(PqtX^g4JhV7RQzqvSHetOtJJ;83%`Z4}9 z0$O~w<29Y#N=uw!b?ARv00+W`;4Ru0xD9kMF#mi`s-z)KL4Stm?g;gJfIfMycBc3L zLQ#&Ksu4W5s4a@XDt>-&J0>}ef^z+f;gqrXU-oP1~Q!-7S@0sg_P!KW|jxk_sp5FAqB;* zMevx=f`HSHtp@)OR4i_XT!;X$8yUiO+Pq>ZG^V>4%6Eu5wx*dh+>)05W`BGfjR{o$ zvlUa-7hGL2hi?7wfd^zD^aP)x-3Mr`F$yCBV5pCNdHvek1pYuYF zzk59j1<*qPALB8C2s#6nmyNA0iQx(~3H@9f_v3kFc*5%-LCIb0rY2mJ(2jCnW&=~F z47A1hnHi`}6cK3bHil6getd`m5f}?g0N_UJQ)4_$OkMwH4n+&!+P5GWzJrVfRuZcB zddotsYrq+S2j@d^IeO=f`EgR*+o&Scb%3TG=I1jyH==(0if|G5xG|B4Rv6ja_-vW% zYZY31otdA%1|>BT>A0(17SI->psoU|8P_{O0O=q6!M9LTR;IZ78jNd|C%zuDox*pk zMie&sH9b)lJgr1O%3*flONBqd3&POu<{MiG{hpSW!<&_Rj}Hss0{k4eBO+u(goRN% zAs7Rx&c|)-TKfzCEk)x($HWYI`Cd=#5!||$<~xjliUBAl+2tU9EDa|iOR70Wp1dyn|hD?ZjM-$A3@B2wvy@Dc+n)B zg1<65#iumk&b7$Snhdf>AYInm7QuZ$=4_iFibu%ohlVVe|Gh6kcCF|^e5 zzjubnJNMHOuzC$U75O|b3~f6$ZYnZ@v7XTUdiWe_(=XWm9_R()zEO4qX$5l=HVW5w znqshufEjF*TN;9(@&KT_QD!4ZZ3#GqB;_wKCyT7V&hz`|s#IOzu(gwT#?BH1+yiz* z{R(3OICI9v&cMhuq374S@Q4Ul4SoRhMsi>TFf+PWtl#u}(_thvOdkp(c^tq1fvCkV zFt{>_svhhc=<4v-cRBn7UWRF4-oomuLLe=8;ecQ0>Oi%|FDJ1liV=3$au>d8!F?q! z;v57%0PB;LJ*84~uExZK{y{JXu$!Us#XuU~B)AC?o5Hw7LA773Nu~TQ(DVN=k}z^{ zBQ^ObauXX~OZSiUeukMAfuK*7hJ{+XL!*jc zz{d+lmo8NTQGtLQs5mBGUT~DCPYU+68jX2wZLWF}4QG z<1uZ)=nR%1Ao)VX<1$B0v5zJ2{|(Kgig#&nQ~)x4bh*ezKT)plKRf})#4gxXqHZ2A zIr)oa%hgL5b>DCQK|Oo0Dbi#5_Se!ro8F5w&VxgeeZQi@|0b_!s9f)KqWXufGC*5Z`OiQ6 z53--_J%f@z9F>(SCcZgL_IxV6mG|}{=!C6(q@jV2W`!_iFMmQ#uDt!KHlDsj0;ih(=#v*Y+qb7 z`tEK4!ac0&+h4puB52nA`;fUmc=E)+_727Y(OVQ{l$6S`TZRUnF26U6^Pi-lqeBSi zz3S?{NpGrs=EuV;|tM!OemqOnUy@}Z@&&v-M?P|GidF9rFUJ*kVm{sNyAuvC?iK9hVjO%RHT20lD zn8?p|ybDENeoh8dq#G3m+zogjO3iP6sPITG$2sQo!WS&j)%n>knSVqc8{m+8sp-JM zn*Ly;iNloudWitH(Rop$(&bfS(-!iWO%8{D{+<~+24RrWnM(jo|iwt7JWP?YC}jH*R%S$GkVQpBYA}v7+c#; zzHCaS^JxERzunB8>!PWRb#|+m(D7~ACASW~>=aT^Ala)yO@KMReohAz$h>&JHT!x` zRC*PfrS@>)Qh&LP5wnjSc=N8q)W72@1~f75fvN?4ph-GR17xruFcpw8Lca%ZDYR#x zRKuIEq_}vCw0SM&?VFgH%`{2|jE{>MAX@bB_3dKM;LZzBgHS!@hCC?1@F1|-Tt+Qv zlIZ2+B$YJ#V{bxi>_$$`CNtDQeZ9TEvE;`27AQZgk@(?&0wvo$pjG)XI}6Gqc+O~v z%#PnOlZSE=Hsf4xB2@-*ZJxWiyOW$zNw*KrZbX)Fvax*tSqCQbTH9}9Vd7^ynryeM z;9Qp``BJr44nrp(=a_H-T!PQ>1)QK54&aI@KM(Vp^IO&coX_{P`8)P@_;7hp0J#Kn zAK$$h$|tBmzQ5sNY#E68TAacjZF_&$y^I&lYpSW=IOd#Z_-eUc3RaZ1R`ycW+&MfR zO{Gc@Z}RzPbBKW1^R}-86+UR3xomrb*}p&E-^ioP<8i9|1A!a~Io^|LcCy-RySK5| zBry^}DwCo$JlWpcHI~27PP%gO-_*naGc_@hls}iyhd@#-*j2buyV-&5uB$NdO~_XK|UQ|I{c8@i&Gv^g(jRCcA2#4s11 z*(-yZrA5LM~gNvQoFTCCP}--Xji+B^)@d~NhxB>pri>rzO?blhp0Kl!TQySR{CeQYlUmo)lM$D2YN0szHPPGf zP)P#c{^OIlxOU~K%62#@(AD9W0)g}`>@dj!o;;by9zZz*aaIi)94r~Ehu&w;20@7# zza1JG*^DtBK<@tZLySj{wxB3S@FnCweWj$NJk1PO@B?8ypI1>)aq`jXj}{dy=r^HD zzkef!ISnHd`zK5I2AIgg;%x8^JuU5K1Os3?dh!wIlO)3Hq(YOb9T-<74&BeqM1(Q~ z6Z`+g1rYLuA(xNLXm`;FyyQsC483f;ac~PxK$b0}41akPaEPsW1}C(8_da9v3%4mb zy&i;hqKLv|sPxb5Xa*kAr1X{$B$xr61=7**{P{f?SYs>TCp$wWg@THnhQ>1e{L49? z#9b0hF(_&7XJqX0nhsbAzXvkfeoSGW4z430#rqafzAdmoSP!^8hq8wQ9Op?1q}a3M zwODms8ByR4*8J+f2w^~?>{-$b>#xvX;LOi5w3uF?t3((JfMS z?;BKjKze|+1METG)CDNx`fjFX+OsR~Xn9G(Qz|xSrnkZXd-I|_kdH(y$bL?Vh={-` z3~=4~edsZPwJqS)FVro%gt)JxZI-+oo)239rL67kJnuosaAnfvOPuI@Av3=6&*Kn_UiG2Gp6 zY6wDz1vFh$QKh37>BsWk(l7<(Ip_dihlhy(Rlez&nZr6dU&Tm1NhCX^ zsi_uw<#KmFwBfmw0-d2843q?jh`3jAStlkWK&c3Bfn#6!&E}hdOIA-OU>bR?$r`~b zgVp(X2fr6c9|b=tQQV@nabVizS^H{vpxYzx*_~LvEBHP@Ge0S;qF)+)B3b^;or1V~ zTr4T#bzNP%ME=R%ePUyF?B{yg?jLKHV|!)xaLG;jq$qoy%GGO2M)}C@CE-LS(iyz$S?*6BJmj{dH8HVHGY2LYw_83{Hw>Hk)z82rl!l{j}t1hqUy&w{K%6hA}W@-?XV6)Dc{D&@Kw>*~3k^DZAGl`04^V6rw>UE2f?*!!oL#`^~oY3(=;0u7a+<$EqJtMY39Jf-z>r|CB(E1=T;Y9xofIbx?dXn4bFIG}1 zf&T}Z3<4lw>D~2A``n8T2fIs`mVxnY2(okI{fRajO*+Yz4-5}@$Rl#?Fn_EA!aE{A zO-+$9E=iX9Jv}~P;$UTgK5n4D?ma~8`8b`?kV}b)0ceE>elUVLKz?(ZkASnwi~9Og zXr*fd$d25SK+dDn*pK%aC(d({)RSO-T}9zK_w5*NNz(BG*BQ`G4nHRk##` zH;r})LUOJdZubAUdpVTb<6P#F&z9;Ne^kpto$ko#m_6_-l zIVlR~Ey1kD(#1ZMN85<@Zk;L=*D*ubyLk^Dz{Le$1ITx=MPaq6c0D zmw?Ps_zYfx5iuUsc5(3we@qB-zt-u2fRD(lCl4G_r~s>n~5oQ^S9dna#87a=|I=zZJ@N9eP-*(f?2QwN2k>m}|T^=pVYcX#Ve zcS6-<^rD>CU{`l{(-+qg+Ov(Iaey2FYx=HYMz|q4^dg>=H)RE zh?#~X6B7r=17%;Y+2O+_kr4Lkr|$KI#a?u)$IBRQjA%i^*^)^WpeJ6?%0j`H8snW40S^-A@H}|70Gl8gG@&E`1GavWms*+rePM#zs z!UM7e=P}|Qet|uGEZDQ))G-pk>~O{>V&UA0K>@V`Mg$&rn@;o!?VWd4wyOiU9BKH^4Of;a3w^ zF5mhfRVTT*PMY*@Aq|294Kpk26T~4eEO_-Dll#3#{>#`yIOc)8j)N3eqk{>!r1kUz zyBxai=Dcl{MeXtlH)&4Cm~Dt6HZfF)AV^+uEW}f*fovGZHN=N0?q5XWo85<+zqr1w z=QSDWZbQQCcOfT*_qcq!yS+gsOlETX)xnXc655*=+HIR(=1>&L2$?nk*D2o;R?9{9 zl2f4<4?=B^BLF>egrh3#r5nV$=>OR!zWoe-yG}1p93HpWF*>ksr-*vt+3P+JRW7T% zS#P!7ikePrOm>rxjJm*YZ@T@VK4Sh`@|P@!X(`AUV&tJo4 zh*tN?t#t%bwcDvXYN^r_XI~M zPHw=~Dc|*BU9Ztz>=a8DusI2KZ3xQ6tao#q7uG$RMW~j`)cPvD5r}@XNX96q0}sFR z=AD_*V9P*9zmlm%E&Z zj*0m>KTkRZF^j*&$wE7EaDYOoMOV_5lHT+#%hbmcwWm4TJrYlYQYA2y>C}B(6=H1+Ha| z5m}7iI>-u*k#6=-`B2XHqqov;ezq@^K4HSr$6plJP=4S;4l!;0?t{c%CdQ0#)hR3- z+`FkNFl90aClXi($HnB#{af152B<)j%%yZ(8muFF;K}Mt!yvrodI2p#I%M#WLg{jj z(KMo{&>~bRmvCIhsAFQVKlF<=5eEs(Y^wuPTB7{1q zlBxA-Y~Ck413hI=5FchOBuH!0_roBC3FD6O#6{)4mI67Fe=pi8)a57}ypgy9938iB zUDN&UC943OJd`$CC2Jw1TRC<`c8=>>X!p5dflq^jXNB_j^;+zcW4WDtRb)iGhHD>X z`SVSVRKBJmHaGVhmi^SZBmA1S;#T+% zG@kiogSrA2oEB`G;lhMKu7G~+JY7_8)zFUuivU^0*tiRH=rs^UT{rcHo-JwQkF|q` z31GhRQ*ygGU%^2}{&^DVk%)=gW+HKPBJi%u`u!m*ALvoQA&mRZJ9^(o9`WV;aqQC-<&RkTZuml;)ajK-SFt+*2n>_j2 zNG8}iW}16$|HhVB<>bqa9uY2S@F5%C;x21HmM$U{qL!vCWkF@)qeO6sbNv)b^hS4T1vH&UD^aY#fYRn|m8QW7o2I-NSKkJjFW*2g_I zTFoUcgKCcqD!bpFgnrrEje$0q|3u1ZoRfEB1G=}(1jtXAC;nGfB_Jr6D_s!os`RiaA+Q$yb7y*g3RYLH)duYUD*YB8ph^*+jiBZt-mWehH3+T z;ifd`c@7<$D~tHZf)g1OmGWMdPbVC8clCmMiDPqnFHZQkyg5>#kx_h&*oWv+`lpli zZ)ak%i8x0N%*XnmD72c`V|GP#>E}eV8Jb`~e_Um;RX9-%|5r`d9Z&W5|If8$OCcGN zJu(x*wX?U3%W!X&t|Le3wmMI+ zLL(x+IA2Zd8w6dy%6Gj|Q^>6xN$DAd#UE_q@Ne-yI=FUz|-H%A8nbjbenE+!f=J$NEKSMz| zJh5P$OlVmUMF8Dae$j;O?tDFr>~gTt^X-D6R~Lwkku<8I2sM^*?T@fnk+6!-o;gKV z{$vQjnN~8=-w0_*?o#(6ca)$>n$ITPegrXo3mM|I(O}fs0 z(Ue=an(EPfi>}#yecgd1QmqWUrwn&|>gTP^+r!K&-xMF0(o9F)E-6WH<7M`SMsf~! zuwsyW4bbU_^^bcOUeYW!m>msNjzw2y@1h;QcM|Kf{ew`a`gP=?U5GWy_ww@3#^F!6 zpm6B``hGM)_6Ef0V0?fZ?cL3w1K3(a(8IXa{z^$4zuUT@Fi%VCrA6;;X6(gQhjcFaY2RS%#Klcz6-8l7?0ql)jE( z2nec>l963?*^q*`vAzyjL!Mq<*(|-(ZY{8LfNd8{J+R|Xf!vout)fjFLI8QvYtR3{ zj*d0lOjPO_b07uRb4ZPVL^L0$Uy$Xy5(~nY;tTVOAPNn!+$+5~7Cv-g6czdC*o^c% z*&zTB$A(eTq}PHxxw?(t)!_#|=fc({SXx|6FGYtA(GVzg=p$^cV0%6f zR|4Dv4MXfXrMMFF^YT<+Fu+&m`X@V^n{#S52;lbY0~|iUh)JmXfnuni!H}T}X)vnE zyqI5|A-gdqrhPD4kev(tE;BP!h&jUb4863j0%NZQL5&*>yLW0ny4m=l{n@tJmERVu zfFVw=1(j~=P;iS z0w_?$IDYV89&U$q7I2pB1(5)VRQGW`IKT2if?_UcFL`xRgSU_FZoMKt^M!TlO!$@X z+)|YTt_^4wcLq69aPl8*It{6@hv(NQZZb7~Jchr0<xaq19*0;z$qiSbZ*(SZujT#J}Jca~GON zTnf3Yzk&`9aAX5_C0JBNhKKX+gJNHUt8F!|Zw;E+LO;X1sT=<2*r@F=fq9Y)7GdaU z2_UurZNG+xA?SOh$VzqI-#e#rU!y5dy(=aDvLS+ja-2lncI2GRY|8cA(I-2G!7Nj}Bg=v!l51xmvD6)+of1m>>lvCgn5s`;U!{#3D zx1rI|lbkXB!|*7pxKz@ERssY7qB13R>XS#$q@_Ec&UM`O2=0k+?T!2hUG*^a&V+_{ zF!Tdz)=J<30Eu+>?rpAU#R{x~gg z_gLm7Rv^YWle2 z`<@9jFNA9=HMJ2=_Z)a~rq2CMqtq*XRpv1(t|6&B5P6=^wKa}~ZW}{)rusK)< ziRo-?woq&fi)~1)g(2aSe2lhw+q}b-cX0OMY=WIE92Nr3F_7}n1SePU@Psgj8yuvZ zXc_N39EQk1!OSP9|yE!>KrZVY;cK->C)nEQUAqQfKio#45L%C~sJr{oLa9LTCJ}{w zBP{;gx%(j#2Tm$=^z`bjhGw!Gi5_AA?)TPUX+4DKWS`MtD3d`#a2P zSLVjOHrO!2(g0?`tw1fhNB(6wIqYm{eb1fY-e2A_W;Vp|CNz}$d0s+@Tq3L`p`wuA z^BVVFO~i)9{!p=Dc?B$e{s<2D&k~MJYE-z~IxWyTp9p&#o9TOZ)lVfQ*}q(b{Grp8 zF<>j?tHE2>=%p-F0Jysw5xtUY`*NVcle0~H<~Tg^2?5k8*UaMcSwB+EeBL_s#thv* zy0^90Bs33=Z<9D%A$8#4!@pX;qy0iQa?KviN#GS5*Ywr;vRFsmDz#bUW4hw<|91`H zbqu#q!>sN9ztUUpoi9UE)c?PR#A6?C`=>w;nvjiM!VT|I*AXHWmA=t&ytT?TdFH7f8Is?>*h}aw+vRL@Ku^l#?kSEf57J^)-YrUa;^Nf?qmS(R^yIWGhF!ikO znZ8~RNIFxAcl+R{xLw##nGz??wo;2wCUr|693z6x`9I6;c4#a=+-SrQiJrp%K_TR9 zyj-_>F`$RWHGss8P1M&Fr7)R3L1RKz2o}a$Q|F}xCwTAOi5AffJG5HEiRNBm_QL@>V`5UtkNP(x$ZS??(c zru$K+-z>~SNpM5un?FKfnNF`3drt&WO=EdLFz-2;BwzRl6~Zq`5Xs&9_1Wsw>nD1G zt04)Z;Y7!u8-!!YX;q%({%yKKfe?5STF%wxnm{uacQ-kySCX~ zz2w*70|OUU2&DEoq1&xRUUz?s-4oP@cp<&xx)igj z=@dPeB`QK?Tq-i$^K9-2pnI4eg*(ulLh3PU1ls!T2fPLV&>p#XH)hOwK#D-lx^kGV z5CZKfxV}v%+N+=X0^-@1BqC>MNQ?RM^M~i`!A0zxjdfgBcDn0t5RA-;eE6@!a+C{Q z)_umTH5gj|2u?p;+1+i0#$H5XzfEA=BRnXt0@)vp&sxy`Tj1$}Azf2$A0^U%BUP(Q z8R_{<<8GarX1Wat2scl6OIOedwg(zL@?sCnDa6K{6`lGqP7i>l+#*lD~lq`MUoXT2yM~phWrfPDlC2NNK4d8yjcKRxguG?_a_KSHOeJyFbyLfdf zpDhF8c6LN@As!Jwwj&*xgHjoBvMzTs(d68Xn9!urTibuIXD@!?$fNt2G|~QY!~raS zy^>V=WuMr0h^xvFOS|yPH+E)J5c}|6Np`U1&$yz#95;P?DOHzm=Kyp3jp!7$GnqFD;=pq43K6@%U(DS%LPwi!^mx zC8GYdtnU}XD;L7(AYLa&|06jFG>+~<7kL+^hx$u{0N(|lI{T9IifLYSsso6n;?pe( zQ*$U)%Q=z8p7+$rX+6QJFrm{b9=9|5QEkSZbxBuCYNk(HZ6(5egO^c2Yo1}--@Rb$ zp*MB_&LUoWh$o+`?Y5Kic(T`#BsYsvdw@hosH2uXiN~eCNdT=03;epC*h-vIs5&tb zoJ14oDHH&nKJTjui7mh*GGHa}R`VaX%Bn>!8O{ktjm71uyXgy8-*8QZoP z07O<_@HLmJ&>%X{#+Ytv4<8DOB8_1zm}|x>xH6uj{yclx$Zp=&*P>9++l`i^%WUU zC8ox!x=dz;`gz@HEG@IU>oiV2{>p#GXE0~V9(Zh69WP|DF;(>ZdZfaw_Wlbig@(wk zT*B%G{TPqj^HJG`GJJr8y?bAio`kHlsU>@P)Dz=+Z5s7!MSE?T6IwZ0I=_!z`U*p3 zBtou&+tZ0U6Iu(?jH;(m%5{6)k}B&0tiF%Dlt^a0zG;NW=Gd+{jt;g8{~z$pOkTp}^ZrJpehPv+DGk2^&BV|9ttkaC`N90tI<;c+sZD%c3OdhqT&Ax3 z#9TDjFrtO^aPqJ!GhvBl#z5lmK7i<0l5;>U6S&mgWjd5h<4BK@{V2jSNF;FG)Q$Ih zmRg5O@1me=Qb8={FBO~&7B;>+UB~9y(f}zu8$PAnbz!K+N5V#C;&_~u`{mcjY49sp zI*T|j2Wqi7B%Aj?4Eb(3sV(nCVp5mdyJZ)?^#DU+OSVkLSyD4WJ?-`Y7D;Uy0%@SB zq_YMch2PmJj3JQL8||_M;d5BPY=b6`=1c!PHUhbJw2d>S51o*4M2PZ37xK#PBs~ha zCQa|9dKP1sBT5gDhOa)9aAE>y1M&O3UJ|jkGJ~#PhVDlcC=)f36yrwJCLuX~KAbLE zVvdrnqHfXH+KRX)Ejgz`=yWk&U^LRL$)KYb#BrBnF7ttZs=i|L*Xra-Y!U^4)J%F3 zPk{?6X=2qXa>uRExGF4IDi0468}_Sz@O>SJ*+1V%4L1E1l|+InPh2Myu>fBM0F}I- zOlizp#sD(CPOkOapr`{DXQwhJPt17JSLw~m54SYwfeDL%auMZh0g*AeG>h~5k20&{ z1UEvZ35^K9QytPnYox@uIA~pamGe?i@B=nj#@6K zOh)OJC)MeZRK#B240cYQd$XBt31!T zZ?ALecq8=nra@UK31P0h;;~Yc&D8OEp5fTxIq{Mifh1lHc5}f3ftKUq?=7qEPWI4z zxD|S`16K_}MQ8)%4a{_FfzTx60<_1hh{+&a2S~9Iw}O>VHy8w27B4%W2^RzvS`JM# z@K9~aI%)a%VAxKm<*G%_XHeAptN6erkjsCZk6Jk}V|(evB!-}=J+#y3^p(@g+mpz$;^SyHGQ_=d?*fVi%*-t+d| zU+F#OhCyvjQT4lX_JO_Zsr>OCET(3Zhlob6qWvxvWqA}|;jsD68KG3Er z2+i-kGJ56YAMGVEb0u@byG9J$*A+oQUBlY1bQ}e}Typ34WmTY1;m_|)UL-YOWgCSo>A&mQJdi6pj) z#~xV6t5X%}U!VaL1ciSp7MZZOw~&cCeDyc1%LzYYzWx!e&&Ei*yF>|q48m`a_3Qjr z7?G5^0WR@_P)y)A`$!^G%EcCU@hbu7b|Lx^_X=bTif1q#f1WjX+Oqvq!~?Xg#@P|g z)8%1ZTY@;7`IhLZCE>|~*LOM&=@u|*TA7hG*8r@8*ow(EO$qN8K zn~S6#CnwQhZ zqBm4nXJMd_ZtQXo@*tfnYo+IF6YG@U^x7HJSueXGB&kk%f2U<=qt+BO-xYBV(Upj3 z6xmv=j|oU&Fay8LYE?`{h!M62&8PKlwhBiY4&7?fUYN!`qIt~_o=MK4sxe@QW z-k0*5Layk3vmyDL8bbhiG;opNy?#GZ$HTR%;afEP(A&sdzAq;E)lpSCSP$#oaFkyB z#|RxAgkSO*5)8*#Xf44wKU9{NYoTwir_z0A+@huiNt6;Gv19tBG=`L(dUI5tplN}_F>&JW-y8(KX@Y{#GZ}+~vXi=!ujXXTMWl!1 zZgBrkHt;yIg5|DVGwfE?p0HFOXsuCNWlqscM=wAwPyEShv$(MGY#G%ZsDa|=e*v)u zC}D<^7nbnRLpPI4|^#!vYPu( zA%z;ODh!k-27Z7{MP)6tgSyKXI32T*gYX-#LItJ9id2bs|7e^0Mf~2Zu*di=Cxs!r zvYQ`@F+jLPBIg2#Be%FHW-gM?CP{bntHfzGrzl-&bL_NHr9<{p65Me~(~2jA9>U3m zWr7a*j^?J+_8%Pw&9x+(DGkhS?)U4<9B}KMGF_JD2rQ$44v9Pi^M-0!)j344g!N7U zOwTYGesUp^W7Z*!0}e%{e6`OSv4nGkpI!q`@h**J4fXsyCBU(JJjM9(18a#&nN~gS zRZZJ0hmN$_QgGXd7^B3GwH`!BPAmM4}j`X~sL_HTCFYGkP&)zOYjPQ8bmEFr(yLMq9 zyrZla55UJVhwAqdO~h6qwFPN$tmRL&8Bi)0-RK-j(-k7g`?^(k61WOJd%Yy%q{Rgp zUL85@uXxxvvnRz|6s?HxQFKzTz`(sSd86K> zdccluAVZ|dlVsU*=Y#==-@vynQSbnjC@`I6r=78p@9%h@U1?(A^*)tI4+_oS0$V;& z-IB(%KrO4cK`*n4m+s?po}a_{$KP#=@(Lubg<5on0HhrmJgH`^90!_LO5`c@4A4MQ zG68vVjp@_fDms7~eero#+aUSuoF*!jl{&Y`G~JK`Ef@>P7ORQ2*o+Puk549+!Q?e% zkDIK%_Wf0|%_(+LDfUWrI76RikuZ9BUX`ov zb{3OP^vb7ic?mT(RuImZQTq_{f-)#oSL?}TVVJAoy1XZr;&_0IQ;N-7f@VQcQE%vo z1zCfTGDs#fki_#k?G| zaTR%QvPgysL6rZobqLY1SvA>Pvc(BK?*7z=$@m~+oQ??ta8D>yM`6CcgVRaJdwt;v z0=NnX^^_vhIi`MCDM_Irzob#TsJQJ?JDT29yf9n$MgR->Tb)Jn+lwgD_|TvTEcT5p zj|Qx)O#It>k_-1tK74*XuP(wWHKL{ArWs=(smVb34l=AJ|B|>)73#BcfsE@_25xy# z-%r1E$46?s4#lmGxZbg7CvnR8x;Pp2S48=%1x0iTQ7)@^p9CSz$;!qS9v1c!65?SFc=`5!0P9oh4n>5a2093>$ECjx!4#!8!8-DxDdt6F zzz@68CEEdHIIaz|aROr65PAm=iWp#H7Z$ZOI9rMU45T>ZL1@53SkDVq3mChBA4S-I z&_f~pHBgXaFRese6+rUX0N$Qz8shpgvwDb46;E9T1{ycDh?$<@GKX~5@gpTb9O&`1 zeTR<3zaDpXAX)ceTm%!v1oiG{@W|VuPW2Zxq^_?}rX_mBDVgt{10**i00n1%)aL5) zrg)QtVZljle>hIs&~y`U3wm{YL2NEjx_C5*4J$a;V0}5l&ZOiOyAJjseD%P%qX+Hi z#oe0(vcj`11^E0bxdE zpMH_lY-57({=P18JYepM066B+^j5|Tw^;y_uO} z@dgR5^qeK!aQbJ$N8aLO(#AHWa6znMcP&8X9(b4MxL(j28EhNxcE?kh5mI^w$)VSzwF%x6qWe`_1tQmx#hXRTJ_rC2 zW}7$iXklqG-_9VMttrq6Q9KSb%djm`8B^n`H(JcJV-(G`V;nU$8|DjNQyZ{e>b^+J ztm)mV%VNMoWE^hUewA+}our;?y6E>LLpw?xtiCam();l9XG%sTYu7Z?FJ&&3sv$H# z`W0SLWP}-7evgQ?2724-ZfYT`LZQm6-MSbKqtflK7Z}3qGM*V|F$a+>$0?I+QNJGL zbvHdZ;MN)S_-HYVogkt5iBQLA2?6{}?n|}GazD{d(n$3Tj@yXH-?=X2Ca^0MB%*~4 z3L1D9E*_P%BI39OY&P*gU2@cl!QU0hP2TdG7e>2g?OB)7BTR-&wriM^-sBQXGFw9_ ztJ#rxgdolXwH7u`I+~+5dv3}&^iwyKU`eP4wteq0 zNjYDs-S5jDPkWfBGGP6vAt$Bj_>l`8Y;siPUYQGmVH)`W1)~!sZOon%@s>uwqb9fc_v6uBMf^{F@kX%VmaQhig7x^yP;#4end-xC+K^tK=N8 zr#?~*nZ%8i=hX17OKgf$c+5({Df4(TrpE(SN=~sdc#juD_EF=TDXsO1+|5+iO!{P* zHW8ra`jot}>+{>9@V-=l9Cf(exX^k&8eEAd4ohYmjqG^xIOByUryGK$1MdheHd+&x z#H1(V=vcy+B^`|+jx8j7e zC0s10-swd@5T)7>yIYpTkU${geT!FDeQWk#DHN9|i#+ymHq4&k5<04*36)EZ6$f5UEt?_(o;*DsnXLq30H4Ot|igg!Bzf zZE8g}!#E}r7ZhP2*M-AsJks5YT2tf1bZFz6BzQl) z6&q*0;rC4t_x`+zX>IyI%z@87x4N%;KF!HS@yJ`_FDDKj-WO-c!{~Z>TVS;VS1Ls8 ziWMqj9)2}+4%xsQZqoeuILva6alBWFcocVc!rw=?yP(=y#IB=DNyv&Qc5F40m1t-) zD6{&;W5LIQdjtaq_xusVI_B|RWv8h{!k~>Cf7kWD88&TCYVI~2S*ejnK-2qRq9fUb zEn+mQ@U_);DkYhP&B0qlsB+Q384GsPLtj& zA)YI1R72cxgG>7r_T+SjVMS=6^1p-cT-p74&DB&r{V{=*fNSLchUr5~}zCI6QtN-?rf1m#%-4*Zudk6k|8+@7m68Zi>r*vNF QivjSGmr;=}lQaqVKMBR$>i_@% literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105205248481.png b/设计文档.assets/image-20250105205248481.png new file mode 100644 index 0000000000000000000000000000000000000000..551ba1a020326c25e0911dbeab805734efeb53b3 GIT binary patch literal 26929 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

E#wR8M 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105205536198.png b/设计文档.assets/image-20250105205536198.png new file mode 100644 index 0000000000000000000000000000000000000000..c2d7da9f7285e32444c1752b483b0aaf021a971c GIT binary patch literal 27219 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↰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

542#!I=$2njd{13Wo*RJua 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↰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

(aU9xjH4z2LFP-Q%7V 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

IJi;f_#AOgX8V`FLAn`P+e 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 G82WGi3=`S_ literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105214948117.png b/设计文档.assets/image-20250105214948117.png new file mode 100644 index 0000000000000000000000000000000000000000..707ab896e8413b643821f9ce3f3cc72c40374667 GIT binary patch literal 30177 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105215019964.png b/设计文档.assets/image-20250105215019964.png new file mode 100644 index 0000000000000000000000000000000000000000..77e50b1ef6c34fd48abcc6fca57d77a759f726c6 GIT binary patch literal 33812 zcmeFac|4ZwzBjDlmL^0|k)foSQZiE_Dj|f7B|{uoNe0w9uqglDqiu=jdNxD}k2fn_OUeg$r{6*92>{FRjju8h> zncsI5kocpBsbt|sZnJ`$+qqb|xs|w{f)>44yAd0)_{tuO_-vYUY(CVu1H5)x`#J^w z`jKP{`F7`DKc3sZNqF@qN9Ij`Ft7fUNBQ7B&uHn zvSEumQb|cjtPEB^jg;}K6a$ZmGw)?dN$ul1`}_M-4O`{uPvfn|ou4YgWg<_pu^BAR zjvb}Bq@YmS(7?;hJ^RJ`h}&5Pi{U07T}O?5?nNf1rVGmpBYm2rqa60zaP31cHt-Q& z#VToGX2h@|>2|Tl9#6Wqp&`5es>pQH9=2;A-le9_;5r8+1B^^eJ|rc*D~?f4Evu@M z8#{dRi*6*rBDVIca1lDq7@9ec-fy-DvR2qKkoq zxcDtYLk0Su-QC@7ZKG+*S#v-ACwj`mJ+ia2akq4|w3g#t7c#skKisZlUAJys5e=?? z=lYj}n11@z)zui(*|E;5+ge)toj$%#O%2~*b@%S&SEpQgm&Z%lV`F2htEwJ9ek?33 zygho4?y{zqR%mo|bXZuJhN{S=3m2})%P;qacry5vJlIT|m6fG<^d-Je((TIL^cT)g zYiep%7IIe>iiMWn#KwNpNWeRyqN29PXPXby1n`(9B_*AIyfeXeZXDw~vpL6dM2*2S z{LP!O8fC*Bw6sD66qA`Ni#L5v)vH$n0|T8Y{Uqd-lrT9il3mNR zxFat9$jhsOR^7IJXee8!oPmPEv!z9iw`yg1Mu?rAosTbbs4-P4kT<#Y$@Fk@=B+0$} z1?MBe!ajZb7MqaZ)t_xS(t^P;F)D~{i^Jd?Y!_4tR_ z*vnEeZ>y(cXc9kn^l8ER@1j)YOr(TwGkjpYerv>@!Vo+I3Rr5m8a6Po0tufAZu>!NaYl=H{W2HrCd?3tzfT5)@;?!cq*HdHc;4 zriYxLe*G%ZpOl&DKYu*__3JZiK9@p&Y}% zE-z1G{_4dG5wggLh+DUANz2QVQ&5C6);Bb~;(b}7S;c2iE$Sy|cK+#G7g-o5ur7FSl1l|E>0bT4`2sZwY5I}{(L%R0T_4bWAx-Ycz*l$@2_&d$jQmspMyEP zve3Gcl$?C*=+OubZ%PxaOLCWq5r-9jUM#XL9K*4FBFQ&+{s$$Uzurly8wwzlKzPizn1 zHNTiJlXq|3!-o&|oqud(WW;SZKZ!!MZ{NP)eNq?*(HmEGq57|9V`IZ?I(X#B$rAY=i>IRZjmHQ`0(Lbi6)m}OHxV-o)#{tZa){Qcyt)kjP!eOk7}-cGbV)b zI?^I(xraZ0{xoxUbK9hPmr9t0YNK6DNJt1uK%KhVQ%=1adVVXT%CO70#!^OARh4|a zTDJ96KL#N`KR+!k4VT%m!~2{IdBx2Z>w(xcG~Rv!HWs&TMaUhFjfj}V;M&X#t7a^c zk~qF0SqY&aA#uw4`0=c&YIa0KL|U3v;iGMaIdfs|?xn=iURhr1=+MB_2!A~BS>{Va zLqmRkN83jyjfC0slZ&_*-L74I{r%Rx-`@lT1Y~9LM_sfXc68(3#KFNq%D}Jv)fY=k zXng-0jWa?*xo_X@H8q|1`t|F*+{1FGbgK>u1`FXK`1<;yE;u_orG=TwA3t9C`$z83iV&4W&FYPQCljf7G^}C6_3PK41_#H#eamsD zAxVs_SeWd@sZ$snIgEX}N%yAbC8tiGW_70LG0{YyLTMSDn3xzHZJU^LlRc5H!ZtO= z-28T@+n3RXWIeM>hKBJP=26@(vP_g)7P*~?LFc!^o6Ch5t$f|w+@3tSY-l(VpSwI? z=u4rDBIQ}EoT&Yz!xa5$U@HL*wvc1U#>dC8bfcI~9Y6m5!-u!J3{eltd!nPFJ{1>N zPL+r(rRgGHRss*3kC|>S>L?b>9tQRqB7HRM5gqUG(A22maSWHrDNU~BVTrP zX%<;Oi+3z&=N~h+;%`};o0u7_589fTzwng#>K_iOb?zoabg#z?sn$F@86Ff zKHOg^B{VfTiT1Q|O+jI%+eck8fP3tar8w8glcnFj1#)P)one}7cVUd+kgC8kniwAs z2n-Zj96hI{)h%E%-IVL#F!A%7+z3ETZLD(Yt%|(|4urpY^(rapRFNl%&(Ukoo<60d zq?EpPt)$(EoPi&u=fX@>L_~~wu6^H+(Ba|XoSYnu1nxtJE{u)$yvMR|+CWiLU42bi zS@sw@9xjg0G%+^bC1^W~P9`fOvzv|%xG3)3I}vp&OpPN7aR(ow8Ck1v+`D(LqM{<$ zVR;UHd08R_ZS>2|CQ(Vu%g_CTgL3#?fDU{>1dZ;Y7k_M~IY@pO1flH8RmyLe2x zHZadUfZ6}$+54f72JQHkWf)qXZ1dD^&KQT=}|H1Id!WlAKPx- zoR8n%CT!4>RicqV%168U7Du1(#Kg+FI^QVQpig>=lrkqpuN|fN4b*qu4_Y4JIeK{A z>RbOBn8&ws{lfS0ewaEfEiE6*)-Ioy0|y?z6N@1~gG&LkT zx>P%HrE7TLH?CjKiO@Ad;l$H%7+;xkseP!zmTNO(aOu)!X6J(TML+33-xvmn7NIMx zuI}*O^j@75UUUJy zpQ?T>ci2va*8iKltgOwNLx=0K?wZ=#E&_^`mX;0Z|dlT zySQxdDUFSZY5Jg5iXt~N+@BgT!Y_PkZOu(d zInB;KQs_!8Dk}Q%<45*>S}WGyPwYAqzRsyrrz9jL!;~{JGCq9x;4FOO!Ub1%cXuF( zgal(ND=SM&F3!Bd!mh+}!Odi3*AolOg!h7B7m&CRb2q0j&s*Jqd?aVe;%t)Fn&puzz~It1@2T*s;rpy;)gVm6Vki=H?!_xDHrd+RHZ(Q@ zI)uD^+pD*03+aO8J~0nl4Gtf6b+nR}T!)o+7oMX4TMpJ4&yKcZh3d@8-aY%9wdS39 z;qAR{?b>J0pLd(^R6q0fuCA@^>Fw>sJQ*5NRaFi2^16cJv3vJL^R?08Oy(Zjfsv%Q9F6!M4zSm@UX$XGq1zL6|P+I0zE;q-Wm1!_3Jlp-n@Rz z1W?Gsb1mW2kQm4)3zcB7RA7H^uf(fUkufoYenF`*F<+~zQNO);caW_&H#fg?=T3nO zMQfrCMR0k1RFv+mTc1lxcJWyptLX*FZ)S(<6pIli+o)i7KcJ)o_t>s@4IWOVd`0{?arlEn*W&z{A~1{|!qEhF;` zd>Ea4acODa-o0PZ1_J^*Iy+@$W%~|!p%fpHk7*mT;%6B7^n?z;4^Kvgt+u}YE`a<} zM|gPn%;e;|urLoguCnH40cPfQfG?DEx%i+UHDTfVp`qPqmO5X3jprx(in|YaiIXu; z^6~cj>e^aUxxQ0hAC(XrJ5)d+^tHS^H95I^%t}p74I@Y(Sogxh!kZvHyk_F8&v|%w zu2kx65I?`y>+#ML_YD-}ywj{F~!#vu1q%?mIw0bXllNz zJLr9})n+7{LU6W?-R=~?x53MoFC`@R#1jt)h*{#hcZTVCNukCG z^NmaM?v&sF2dP|-9zB|0P+)3m%IM)RH?F0utPGmaZw4yN;rIA(Dj74VHh4_c36}!U z!@C}0qvPXm$AQ1?JxVt+q*tmnqN+uPe29TrbiYu&hUc25Ae zv9PG9R!>==oLw5a03DtG{JizalZh@)tvPmlxN$HQtY5dGVEg$)%$kme&XABC??qWb zfdprG{_L3*e~`bwGGv(_p_d8@3U;_WVGwx5`#PFW_z`NS;!#2KemQ&l98XUy03i^+ z%2p*&(FcMcY8-xp#{25^Pcy$uPxmWmU&W62I?hi4pJh#zw}%L@ku8}#b34P?-`7{M zG8e+|rKM%LT@EW&U0q$sh(rIhazcz9q!>NDBb>|o3+M>>B?-+DD-KVckC!(kDG6A{ zbLWZtl9Jn9pS>_t1gm=w#RBM7rkaUa`xSWE0jIpQlv3AKR?`<%D!)3=Rka}!JRu-2a`X1fI{-N z_8pJS^wH-faxpnU&p>SbzlHU@z&FEs#ywF9w^(&z@Z4)#Rv0B@CLnyTVU2)$i(;FFye+d-bYe z0laf4wUq$kptY>dF?i}F&-P|5vXV z$QPh`9654iX2C@hBY5?ep5DUz{CQDPaNjHH8)B4_qX279oswgr!bOMb5^lO3`FIfA zVyQnmK29awWU9Y9Cg$jA|K^bpV+RKZbMq+(N@`hF2^hDdNA*A6|HDnaRbW4<)3$Bf z66}}eJBvMQtE$$oU%zwLu5W%Pd%TW)nh zuqt=$+65Nr<>j@m$*eiU97t1WWpM(84Qi(NpE?6K4_}BnHfQ^+VfHN9#nM&gkJKIp&RjF6k49_tHiRV<1)bF zlSJo)c;@CNBO|kkf`XC9gk>rJsr**@6>@hG16`)J(31Q->5t{`2QYYC}&bF}1Ej z%`5V%Dhw(t6v520Y`Gh*9smyWo$kao;q_}Vxi&}4JOP9}u1Mg4JVp^w(Ytr=q72Qa zw%T8kk`glg2}nfl^pRNIkiYcr+!-1i#8bu86=tXOdHR&-im|bQK0Y%QVvL~WuFD*S zKYo~WetNPpUzg=(8HWC8*q4u^n(9tnZ6 z(VBZnCMb=TZPJOr!ppBiL-#W=y#@uudIvx{aKOd7nReSYJfKAAr!_SMBtZpW@Dx)W z$Dn^IEHpDWzow)#3>b?qXqJT9k9vQgPtiHZ}&_WF!HlTI6 z-Q2#C?r~@+fQ!kgsaOSfYvWV_B|PbOF)-Lq57xWWvMXJ?Hq}`DJ|lydh2`DbxB1}f zs3F~7yxp>8!z7?wZm|P~q}#Jc_1d+&So(JwQ$$5X4wAP(Qha$#8N~xI0%Z`A(y^#) zs0BrCJ6tFja~xK3KD@b)4I5m-BS}ML z`Z_b}^oi2CS^Ub!pWpm}W+7Ins;R}{aZ-}u3o&qU|2yG4a~Jr)%}tvX^jgrzUxx<$wBv3}DCnh#Sn}70Tzw^$W zJGXD&K07-Lb}ELKsOXhi$S%exfcEzG6tt-c2?>{89=(=ys{%a+V;vhA>F4V!PS)4k z%Wc$lMqfWBGjqXtBlWXq&n{lN1b{Xp=fJ@Jr`xsj(T5KvXU?2~m7~HIt_1o6bVk2t z4`3fUD2$Jj92|gI5byh

FHy>DizKK>ue!F@%o-hy}O_1O}F}WKhxEe2kI|?H{ZW zml~g#*l}*h_U&kc_zv$dO%5D5@-l4cQIUqLNPf>mr0kwOfft^$q6G<5PP~K|l92%{ zAQO%!3IQrM_6~RpWT^IuIj{pjZWMk3(K2~J?2L(d_xuKjA3*=bFnm^Os?RXoD0%_w z$v;6YR*vQ3-79}XTp`c4wSD=Rx2bf|q~gmK%p8wLi$U0vH58KJsdEH5{+v{X;f z_`|cfbIc0T*>Nr|OACviCh0)zrafgtv_cpW$m^V(=1pnF0QMUpA=+j?&2bpqhR6*+5F_CbAdce{^)Tsj11OQ$5GF9<>s5hc}S_?gt6hkkVt| z>Oge;z6I^ygWCnD(JKy1>FEvhqy+6Z2JlZ zT4#Hn3!<-gV|W3ow=)9C+B6QOf`mMAhkOX<LHx07V?t+vnlSl;6K#`*hQ_V& z=D}f}6D05qHd3>GFZrzb0kc51M8fy@SwQz;JmpN|PSWbBXTSYp#{-o$HPcg5Pu$#4 z4K{7r!s7hTW5(FoIeO;8)>d^@RXZ$4T6Q%^BxIX6E5E<~(R8r1`1Xgx|b}P=eYD6vn|};^==d zRAzo0B-mZ#EeKB35&R_x&Y?qxpfD`AIZ2o|jBc zPls`ZIpp*#J>NO`BO(4tS(zm2nTH2CjXP&uI!WHsnz6ocr@*ya$OCCLsms4X6c|)U~TjULY&7d@5m?EI4o3K zEokD`{niFY-73)NPoAV3JgT{vdVD%zuyY_&*=HKiGWZ}PF z6LSsC0IbOENl{S|Dl^u~>C>mn?FPcaSWy;xau&V1OzuiZe1)b3QR;wHP?laT8@wPF z7rYhVF!J5IF03`q6DRJjEY0{FQ$9Zv#AC|J!SNv_r3RAlw^y9d5Zr1d{Wu80WAgTu zD;2;cK+fP=IZM-x#N@rq0eAk!jT^0YGkaEt-^1M_YS?D0-x_+RkGAR(at?q^|zgNm)zkh0)hqzR#sBN>>MCqb6Q9!*aL2r zx{}gGvcBPAP{wAUtdsjYM@H0@mHh#lItpFizJ1%)c0DQ^@^(RiQ)#!nyu3mE2d$xo zWY~9hZ*spg60!_lj`zL>@KoY4^YHi?KOq`nZf>q3p{9Ob zF1T=%iOI1@kEWiRDsY~b_Z7;ybIzI)Sj+A@l>w61Sq^F0Lfq{XJ zZXw1&Q;OnuUT2HQwQD>~Oia)k*?eS=UAuM-7BuQKOcyBsh<<<&W8m=JC$B1}8h{~Z z8@1;j2)3nSgt{|321WwPfRDjQ+Nbso57UsX2VmW?V+Sq;d)(~}WLJzi{sa+%aJu7C zrG24Bg2-L~l&VM%k21&%cs@b1kN51^13e|&0}5I%nKR|RGiOAPpFUmo<;#zX3Lb~$ zthhJ>ZEe=8l!9U$F#GVSVPB_)SIQ#m=kgQzg~ax{uIF%XExpec=jJA;E? zyG@V_fp*o%ZjbLKB_*Y++n;9K+0@)jO+^LIt*)s_VhY+3X1Su067Y;E=6SeOu)RtU zm8&x)he?-shSn;iApx8OI_$mRPbiVjz)6_8@GTq5%i~diTUr2dzLl4cz-w6NyoYI* zs|bfiAz22&KmhB^6ml>1N;~}VXDM6%pD7T=#Kn2=Ca0vx%gDU-;Gvg<1!Ky8-^Yj6 zI~-44V*$#CPI=HCYUuBZ^wkeDMmB zIJo`cg9k%R=_d~zaxLzJoC4%~Of};aKfj7`9gLaCbr~7^oa-7J-HSR<8M=FV7G`Hh z=N2K$^Do6-m6PkeN$SM>yo7=4**9%!VOZTf^yJk)nws>H#2~AOV4rO>GcTG6B!$S# zeJ3Ymr$TnFf*^Pfn0U_*NXcjUbR_-Ix%}{(_K}y#$T46wgnkmTwdAc*U-R3>Yb${_ z;47hx=L={dEls(abILXAdsfd_!I(Q$ppjr}XE!s{=;P%zHdU*hnv!yO8VnMpx0>eY~B`ON#PpjsK!y+3>6 z5uAvQm?|*x!)q@am%H{{`b!xuB974R+KDUyP%3Q>&xTb;9Rtkohp8SPZwPlzR+c)M zy%j+VOtEw4&WY}=fOQFa8kR=&_${bie9nA7q8-Q+ef#o7Be5RK#BCiEc&u?+HWe#8 z%lr55zkmOpaBb}`&b-*U<-CYUAuMT6Mjx2;p$~USEc-Y)n zF(bSQy4}0`dwL*+i;($o83qAeNgs^Ca)3eumjC#%ZB1)?-wh&@Mtt!dZ=|i-^6vFj zhRcS!{{t49n3}TddVsu9BjQmQ2UwS^k^xo-)38oZ#D|^Y z7QGwb{^$xYs)mM!ur$%Uk*J`c;DeeBU7H-PK<{_vs0XFpGOgfVqzQIi*^sHkX#oZn4PQy7$S9%l=yl*oP;Fa zH7JMy${hN}=Vzo3)5MmitZH<7LnU`LC+qn*to$t2uB1_rO`9NQI-9y{M^n zn?0E+;9pw>9*4;w{W7Xusz`{>TOk5aDESHZ}O12nkD2`QGZR#ZF?m0QF zOMbL@@q$z0ms`M?urD(+GyA5Lk%7S&!Yo1n(i};is04Uqj4QJnveTZPVd@nz1)YroxTI`VBuzD4%?5x2O&8>L37u*Q=yNRc$S`aGkz|sp-jP(LF+ok<84P#ZN-p*lmB^g=1|| zo9#JquM*9fk=Bt~aXY#%?M7sTlY`;LT$EE#Q)56>P22Amip~q3lnH+fA^tD)Oi2_I zYin3(l@KS9o@-iF$iH4oa3mMI5007A_V4X4%6RLN;SKR%Nd^t z2MLT1_CRz*1dPeMJ%N^T2%k($z$t?Wpb(>oc;!;FW$Tqr1braZyaD=!8UvFNOw2kS zjtgE^)ksT#ER$Q%oNKsbcaEq4E_6UTurwGgH~N$cz@1n3TWvmh(fhQf+&$Bc3i6iz z%H)5`IwKJLcPx$su?<=*)N_oxr0;RqSzD_(_ESJp5&{ZC_k(&eKcuUus=9}YO6JOy z8@Fx|jGhQ)wjgMXrvFe7xni}XTifiS!oq4QE6?pI{Yw#2PT}7+{z)eYa|y561?o)? z@HkQpnq~AQE?zV-GO~K5D}C5oFwXs(cJ3&9ev9qIHw476mY+RCB9j{87g!g+fswTI zQ?!KKPvBM*6clVe%Ga)?gZQBgLKE~Mr0!|}t;&M3U?GQ&!j1jDMH-w-!>II=z6dfE z7Z(F&W@crnz^G=T{GR+aH`f6YjG9^t_#_<7-auM4j^7aE_)~yjbXh3PmB%2&0`!3r zzk63$R3v)tTtQtOH$Q(C5}muRYiNuk82ZQh_3ss9fZ`+N@LQOaRn^t$D#KX1kvH6A z&+F;x0#spbKnizqa>~reh?vgH%L9=Czw|C>M?wJ7A4nwm(;*c0S=(hq97|P~Tis%!O)r274SXT#|86aM!+y;gwGS;XdQm;;xz>0>V2CdgXU*EPt z=o#&X|BYyRjdKYmZ|5-_JlAH{W3${9lB$x^YNG=4iY;hK7gS^!h6@I5~ z%fNv$-;8%5lo91#-gDCLE8=@PU;c%}_6t{^iC^+UHU;r$q(L1VRvtYfg9nY68WdRM z4XrP}gPQ8L;|Lsm&tfP#57Ao^6Hoe-np;=|@mU(=&O&zr%LiA26JlyZ8gf2 zeIWfW9Q}KV0>&NAfIYCPQtmY3mQeeH`flu}+PL)6lTvukC6;ISSJ0*7LPD)IH7|=h zv5bInwh2QK!$Lub&jNkiPvR$`4#sdsH|^3HgPYu>oAje!An^@7nN077F!gDyhU z;eet*iE`VR?$z8~?twGHE(BFZ0uBO$wUmHcFenRrp(3ta6B7^(| zyDG?ST|+`{Ub(U@+w8KMS`f_Gj_I9lHj=dmN?GR^LrbM6 zhko6AbQASVi^~@-+=hAsflHHPWmNZ~tn5jIJs{jrACN@kfsh0(tgYlBP%Ff#T)1#y z4)hAs1)F6QRa6$!JW2lvEpjr?e?3H_W7j@Fo<$t%vhVRXh-9eQnf)cEms3zuQbOPi zlriE-AN;o9PN=S=*=B=!A&H5yVq)PTAx=daTP@f~j=wXvo$mwab~<-}Rr|dxiDRvZ zl$0klQBKa#Xfl$9eJj@ddYsOOel0nYzwL>#DuUjlC-mid&s6`%-wxoYo3W7*pdsRj z10=tDMwSMw9>^%9eD1Yt{z29x`6stWk#2DM$Zb8@dtK+myBm!giRJI8P#pP|ma($b zylokJ)YSB}wvNt`(=@cS=&SNquOj5dKNAS85Z+VJ!nl|cxI7@WVM|tIR21)xd}sI= z$eZ0QHazR}=mWZIXgf zP=bOFC==L*j2Two9^?>^=>odWmBzG(LXSWkIq}c^ZtMJbOv6AfOiVbMe^ggP-rv7{)1`|S0pRhdA7dX(K>>(M;-Ii3^=1BCp5;BByH0+>-nG-GQ(%#!OM30Y4F7lMBO~;%0@JigX|PGb z#T{6vZa=uXQqrx#x&#a#QkxiR7H9YX^xQ^Fr%%^3H{0bqZ^Qx)4Go1@W;4$C$^GH) z&48qDV`AtjDW3)e9Q7%Ue2JmU$q|Gz3oQ*d4wj9I4zm>+-Fy^M?$C|Z(u~@lO9{Gq zdJ4gW01-mtg4^rrdLdUCw&UjYYayZojp9;^i?&75@KIoP;!k)jF!|g<`$*o&^tEK$ zAaH^pMsVL<=!z<;st{}WPsy34t+b>PkVrAIB!B(0bmoX&Rn$RBSv*mY5;=hMS`20CFXLADH zm6oP>a69V7{sRZ}RwS7yKWlO%C`zbyw6&d4XZZil9kQhYpo7yz+=OH4@NkCvmjQrJ zfcgWlQDyZvFLhxX$}(07$H|kB35o3vU}4b;@q+3RxfC(Ky&5Uj?VAv-#)eG47cUAs z#~|Q>mcL|E-Oa!d$E^?1ylRbV^EP2Xk0OmR>}7+aZf9!?u7EuuLCZC;*(XmpeSBJ? zxz4lp#}9lKUN#We5g~=wM!920vct+UWZ5bAX>lld@Ked&c+~5s;C2b*aIU_wk%F=q zK<~nZNcDrd?YmCvsvw>hkw?3O?){C){_9XAl(NKKKghaGN*cmS;?Sh zuhhu=jRZvuE*g93=g+hA1M!dsci4bqVkY)--YyFgDAnZH5gp&d`n+VgHCO6yBI0nK z4>vC_&5j)vmukDZyRRuK9yIWLlh#v65@E;QyD<*n2V5Og-}xzARb+|2t70%AQoQ~b zlU5Te44;1G$`z#+PtX#YKjmo`A@LDTr(&wZrJg4Up(>f{^!r1pC-dju0I);VNN?&_A;PNHrmR$qb&|SW{zx=1bA4g;Xn)W^`&cc6QV`Dzfz$ zGdZ9ChnNG$By##Mg`$}U%fb$MU{4OJlV>4NMuvn`R#bfawb5wj4_?6~v-h%&AKy?@ zpR7AXlBf4JJRDmU04L!rue3~e%@5TZZy2^8ZTlE;B?MV07&GURkv25u4mhTq@|cc` z4ZGvQgY7wvAD^wwT~0RcJdfup{0O;N>4RAiek(%60IZs!ZJa-Up6FQUVZ?3?sP5Rl zLB@=oJ&lIBfhTpynIY3?gHYgwC*IQ1f~tiAN3ij{>1hicogVg_S>eOp$mrf_%~2H< z?Y_hk|hB+M+Bxe?3^TDRiSb*7;<&hOKW-LeCDZ-!#rDY;`3HA5L;ltRC zM#hY_jF3yN`M^u;DhCk7Ue#k>;?P1jGQ&_E!1RgpKtPm~(^`T^eFp&=or zh$;hIV6SbF?&uBJ4|~17zX3XAz5Gh#0U`mF)zzURz83Air1it+tP9diYfLdp623`%|=~B zAPtBPP&xp+mf4ARk6UftFs;M@(;cmKG8ckFh^0 z?}o!%w+|HV5o``af*d?hDa(q;RCA2(cX0Uf=gA*gYyX4$F~;1_u9~@|4Dq3%a0l_4 z#s(Nbxtw#AzNmwa1wbMxgukl$ba z?&4gM7Dqi~;El|NS!1N$%svY%v=!J3AINLo54Vp?zwWga#HQb_E*MVH8ceRcuar?3 zk-g)U)6vnndzWX&m%rL>LHN9HvH5s@7+#6B^@?Y9CPn#&I69%_JyO&!?vU@inaaO2 z?9BZ!>io#L^=q7@smENc$PBng8Cps*w&}2V9n!u1>aC{bJqF>I&1b{~*B_K#bNJw) z7YE;cb-d@QzxD)aei{lH=ck-ouB5y(Ew&WPpP;0I(5nVo^uh&Ll#vka?74F#OoZP3-lV(*lM zHH($ZfG&KAJ$n-8kPu8-(P=(Oo8saRI0u_4l9-Y;6d&t2XYrl zqCUH5!Z~8J9X*S42dMgp^D_WKvvI}>-s=M#Y&#H}%34EFh0F-z)tS&=vAx9(7Fdw| zd>^m*a;(U1PTk2S)ABpb8NeZN3Tk(?unwYwHd!h5*TgP-qBEQvX(f(*7^#hKC46># z4f|a7t*ndKHn57U(K=`t`>=jBY9qsg<{Mj=Es#*u2{f+}m}#28FXSSTI`1r$fo=rY z0d&dZEDfV*R?Mr;yz(+vvr)lTw5-8~7yyJO`6+; zz<1oA7I6-VP~Y`u0<{UnH<6liyeWaPpc3lH*I^;%-AxHRe<{A9Buyz}{!uSvXC1{i z!Vlw)+T&3E$7?0I(%hZIl{{n+f1+R>M6RUX$>`L@MR%`RpRPx9?}f^pM!ur)rz$(&9A?Pkbpxx zK7aXgn4Mi}`Y63Ee|kGcZw1Fiudj(zUcp=Kd(lgodsI4 z#NJF`CcI#u`{@K-h(QHE0=))7umgc+GAO6mEv{mI5j+nmRHPKJ^OMtJunw9>)z3WK zb#a2y)_hq>p6)Wf5fz+q0BMUoz3W*iTc$o-LS|=lMgFNOS!CC{-io@PHfXXc+M&SW z(VA%qDrN_{EL*eWnHZxT5p76qvDUjo4)foL{t`B+O4PKLef_%lk;2}n+gstZUX4D2 z2gJ-KYk$Jka;r6G2}Qn~rzb!s=q@YE5Ar z&}6c1wJy#>V0MO`fDt%x#fjM&r-Xp>vKky74u_0n#+W>P9%JI6n!LxEILYF|fxs8Q z4JbE|Pt6f$#D<%*PNYDBSBp;p65_ZUXKBb4SDjp^3Onxk1i~|$7gI{nzcw*~4fbum z3XNy2KJC&$#&#U>zO3c>0hcYi#&Hxxx)PhRqN3us7o@{fr8vm7Mz+xkr4I49e0ZRR z5?MR)4^TsWu+*2M<8!Q04FE@?GcKgvo%jhOl2X{hVj9It&fK7*R*X7x8UP0`B|0L8 z&}QZJwTDt38}_}u1F@2^R@C2LKdWJk#3*VZ+&5-ts3ypk+F?h8t16fRhIrunn{z){ zVcTA|)l!8Kf~|@&%ZdZDgK= z1A{|WoJhB3KpsW0#sWt;d<`jmbsRh90mV%7-9P2XLI!V zyE}NC^RDFoDmx@Br3qv7SfC`&R!g(UMWR6e_n-e|M<7bx$>_(s3use!08lV@aKsAX z-$$v^s+wK-B6$AE?yJcNokXBuJ=x8PCa@b+0)S4}R2%K3^J;d(;!WsCIBW*Ra{&K9 z022JqG7i@g94n-zwn3PAEPKR`J)s#)w(t`)WvF)kh}@#~fj@3#;7`L|Q_Ch}u{$1H zv6NM!s+nxj9HUb}FR?=>S)<5pGg}%{!VmmDks^?sYaX$mK^?feyf_C@VWopM*Q)VO zDo#Wg&TL&WzzWheG$8Ko%8#6Lia1d~_%n_UQ1ZjsHh{(D{1acXJkiWpY0y3!AX#JA z*a0=-gg7|WDBQ_H$B}+F4wE0Dl*i#%Y1o2Mj=lOP%lS_xm^7Q$CL_mn;6P7utr{p( z(<@Fr?XrMf!Ux&d;-WrM3TtHI%%j}RxO2j~NI`AT>lDC>qVIf0?F@%FT0VBZfN@zm z8Nt@ih3654P{vLwASftU$#)v3DcQNfkzuIFue`>u700vKYMKF2L8Y;4e?W_F^TLVY zJK85@J^;%(GW1^*{FIs_(>1;Gv1wPw$#%#BZfdcmh=XE8)QXwzP*}SoG1^r z?vG@&tOE!=M}`JX#@zMuXAWwsa*F9ljprE zK2=>1+ULK z4d*NjW2etpXK_zYPdG9@KkJC^7pjzfj%dd|FJ7paRfrxF90y3`aQ=?pz{X*?@`;$8 zt@AahsBSB0ru!u$l~dtRnL_Xb_gR>VcfjWIk5|hNBk0za7*WmVjDg>vYFPiF8(mj$ zI0o7hPAaS9JdI@2nRm~oe-*e(|6SVtOOHT5nUfK?4^E(4DUq@t$FBT`lz?Dqpewq2 zfU_K5nX{ZFN)G^!nnk@9mL^1YHL~`&%;EXqmAPOk0pq_ejbQkwcZNUSl>p;ZA;N(o zq%Z_$q#s+C0GY8j@RP@$Oys@y`QrRH$0hm;l=c(;t%E;8ONld_z|ac6)aFblBP?v& z@A|8Js^g$LgtESrmSVxAW6xn>++V}T8UoG05&*AYzxJUETcHC_-)V>ieq4VNUHyIV z3smU>fpDN$5Kf-X$0v7l87zhiE%liOFEpW!RYEL9^<$V9B|sve8|ap*(Z@fqQ2`K# zIMUEtL2Z|?6=K&7sfGw~|1d4%=>b5V15eDrQJ*N6E|g&sejFH0MN+v$S^?Z}rlA%cS#OD7SS z{OPCjkPKWWGe*d_$G?;U|!_t6@jXY}oR<5Sw*!YXsaS&?#)d8JgI}2>U zrah|o9dng39}Nr6FEIW&GJsjI`~|rBn6tuUe}l3G_6m})wk}^5_%H(iNEwdNC}yx3 zd_4g5Z@G&aQXNi+8S`&l48weI9a)3p-XPu_7Z9)mmxrN+pc6ztt|p^%*aHHVLM_~j zNFW9hoWu;>38nyo@q$7^>I>j~wiaUJb*}KM({+)Yw8fBY-F@m-RYV0*xw}0>-wmd6 zAoq`X`;Zb(Vv1nRw7IjQP;&9j8LWHXM3p~4+y`weUL8o=^*|7}=I5uF>xpXFQvHga zfg~PO41C*;;RmK`cvj@`}QcmM(!g0LkUhIN}W zrf>qC-Fj0D!steiE`{?m696{L;CnL21?Ur*DYr^MET=-~G=c`jvG|3;_y z9y8ejDCimxom z>2|y?f(NS-4SE2pk?ai$1jbkV!Ue#GulqdtWttOl@6t{lEMx>XCc=i!ql_zKjKD^l znDxQcFa@glcjH2weWUk}dpQ73d_;8=CR<0kWfmjPqfz*XSWj3joE%KV`#MMMwUS_t z11w}Oj+buOvXfGHb~-gzHP?O#(F-U*#D*)*lgz}MJ4WvtRlF6&+rc`2Ag@lGUA3}U zzCs-Bt9Oe7@6oMlx6_;?^eQ~>2>?}r(Y$pyOR)?hoYj0^c&mA>DqJ?sQ;fs~yTt9~ zeil+oEq>z4Nx&htu&Ye-9M>STXiyzh9qOZ|G=#Hvw)|uD? z2k^919d8dro56Vs(hx~~!}f#5?%Wt{v13RRJ#fMc%YG?uVPM$oY# zi6UqP-9XHf0f8K)kdbYWy;#WR%&JJ8S5X zU;wIc77+3h8t%Xjl!%OcME(O6V`Rh2w0u-gLntF!m zMV@g4n4XW%CbuYev6~%RHwUrhtO=41W&Sz}{_ogx$GAM|f+G($sJ*!oa(;taJG5wm z98focZ!E{J%*Qh>wrvQWx`Vl~Qnp7}@Hx7Sww6|)@uyu7M3x|~1}my$n8EHj|CaO| z8Px6w+#Jk4tM5k$JrsL4AXsT*O9$cJ@?XbHhJBPZn!j1E_ZZ4hQWJC6=c(c51-Bz{ z+>p+YVzDeemWreXw!I}`mSV}F>R)w1_>3I~U?DA#cSHsK825+muy==&YaxWCg25tL zFF%w$-Js_HiSyGmVaQJw0Fi9jlRttNyAGiKjbb_LYFm(y zJbJ zLN0BB0{>i+_cmxWFsuLyCb1o=&;ixMXmOjfZ3fPPRks~0avg#QMw$PV`5c4&Y&%Hf z5P&Scr!rOuP`hE~Pzutmg*V{#G74Cm5x!PcWF@LJQR-Z$Fq?6ZA&dRxB=i={_FSMp z=#mwX$dFwopoOs_fSSX6Wv~a1I>GQj&sI<|F8apRs?umk2TE&s2%Whk=*=tdg5*1( zj=#QMFzvUYVba}CeSp)%`aQtgh;Rc3Ha~Xg~)V zy+(hmoLL3isv!21U?+0Peji&HB49HY$ZkO5g+A-LdkZrrK?n}fhx6Y-FqI`qhh$Q|H`5#2dnfLZ&|v z!=}B*{OoLM?$QwIu^|uu8RS<>;0>IaC_ZQnq=TRVe(z<~8jO_(HKBT-mLD)!dO-Of zTTV}ccjEISXp*g6jIbL9{ELt<$Z%HWYm{|D{702hw;4(%JTzEUjL?Y*g9ug?_EvKm ze}THvh_!{W6ttTUKppVp9~b{^7(_$!AoMzb|9b-j9w-jPc`C%YFt6wVH<@I_nk@-` zC1MZZ&HOoO|NH0vsw421|FoTpocO(Co3f|#n(EAF)M?j&mauL&<_3{wD=P^PZ@m!Nhx*H zZ=CiT&_rJ=Rq0aV9E`;dcXmmA+U?t&DIadx#eqXq{0%aQ{~imh?Iu7FSlBCY)`E=k zH@X(!Kj$Eb9TUJywXmW9ErgcGJoQYk<4blbUWAnLK_@~R=^1Fm5SGLmb;L$&r$z|h zF)iJ+lF)@-NCfy29b^(Gg$b-B@#1aTO*~mlJ@HNdr|^sfJrJ!gxuxah6wHJ=y};(N zo3lU96qC9530*BPBDEC%32exL0u3$~(_qsV>XV{d-S12-iRM=X5qrA1sNxI={Fy;D zc#@YHu{&Rl>;}l8t15xv8_XexFj@@*53Aqp_8zhA;fv22|3VyCA9KwVR|AU06n2=3 zR*$`w_;VG(0u;j(t|{Z|psWVI2X1}_G!&z|09^v?c?cBM*Q)-PT_VNJh2&zz(~ZQ* zxIQ_Pp$N&qmwZ48Kl!<$AruZkB3oz?cmcoU&bO`;E8K(r+7^tnRhDKuJ;5B0;t?ir z;6JQ@Mhm~$53?G}e6i}t|0wTFqoTUDEnF&5A_^5S33fCwf?X_7F(?SJG!hW80R`+3 z)M&5)>`(zgE#;|+LI{m0B0;6Qh=?cwv20=#)M%oJGy#Mtid-6L0%F1YHs;>kH^$A) zct75+cYctJVL_cbwfEX<%{kXx=t3}ATY*;P!X@|%G+?oyW}Xd+l|oF=FdKJI+*nE= zM|EUrId$0-N~lIe?nvg(h=V(PPV2|b#1O&W6t78}HFIXl!XeNqyS1#cI2nN+S8-CB zb@Vp3uM;pxS93WDQl8bkj~+L z_Bf!BW!!-eYG<9VGKCjFq!JL+18_}mEj|A$Z@s?>?Lztm9vhFauOa5SV(p;91oeDH#z|1)68$*xt&P{; zM_hA-O2DXY2zfRf)A`MQzkfqg00K8;y_^Wi;b3#OW39W0&n4;0Z75Rl-z8ADCFioZ zx-nW_=FVLhDnw~I-_LF9<2?t)X0y;{2oWHq5m-7sEA8YNq{_n{J-_Jz+w#{9k)i9g$oS6`1z9;b#SY_Q&1jjcPb&K>WovvgF zO8kl0oyNA~#XC43jIdCMjDizKWaOY0G+FHVS3ti9GLki*VF*{kCL6)9HdZBOO?$+4 z1r-no0)SSuxlbkN;}iNR7*6%^>U##LjcU$tQiB-lH}@4H<&`V<{T;HQSQmV-Lf6+x z%^jZ%k9hVC`<67iC2dDb3XQ&cuim9jo#0dXee_|V(2BNA=loZkv%`ZAj}c6Miy@PN zWV}kwr+OCh4!?CAa}S3Z{`$~G1Q?lSW4J}r+C+`3LKL^?!f9xdKcMsw7q^VhXQ2!N z-=2Ec4ye4u=A$1q$QJ%Kd6d<-SJquk)&vxBI{*^K_EB?SNkJ?p{#%Ir^qcBntj(v= zPHO)g;$wMWmkJmohOomda>Mh4b?H@3MIhb) zARzyj&qWx6$#DjU6RIbH%TnuXWI#Z@pK!H>#)t?DbKG6uBWT(jSrHYbO$_|r{B&gvQnrmLj}myj+f7Yj+}YE06@`Ox78#i)aCes8$euKL#|T@G*Y8CB-TtOUvx{?oR$d4l*sA4+fGvwKI*aJnOq6lx0fIF3&M^=JfPz$`Fp zK0r#!m-(X!Oed`*a@G4`OaW#Gbxd8LN{p3Id7puXC-&q zanp1p+%>QI^4E*D5|+I8agOkQ82OOsk*fkaY=`!{^fEk6(amuZKECf(GpM^W%?E*2 ze?z7Z)`_WC9?oRp$SNS^+EBRElh@~hL-hs;K5?PvWn){R<7@3#@HY(JXt%_=lq#zz zHq;jS4GS4ETwmooKHc_>9xrokz}Y?qBNrO`1?@I39rQ9@un~W8 zw!K8skhuQP4vQk4kPoM=pWUh^3BDncxHkgO|NOIaCGJ%`ms@#xGz;KZw58w`6$TYz zK>o-Cv3>c}csjRdjTRes)lr`rY!SfCNuYtE`g_Ph9`>@HhLAO{Rg&17LbTczNe|r7 z%@199X-?(-(XC6+{B8wc5p5b|P_N0uI?@1?X&MFc*rdEKMo!R*EM^f}v#Xhva0kMV zcArvMYC}b&+m3BiF#E2Nytag=`L85{&TKjrbZA)jy8$zC^(w?>X&lraS;+{67+@#x zRS=b*cTUYhZ`4GBj38OVkOb~2*=7LAkxq`-iklxXMY4$Cr6Id`=2Tg4@6{q9L(0u! z5LShJ4B$c;NVQnbq_w;C&Ld2UT)KUvqCrGD&XhW2zB_KzmgRO}$)!JWtqTp+>%P?V zw-iN9+a@i`hRebj0!moypd`m?LCU`cwN>F>2wDa@{TmKoO6-wAKnW4qPa+nzS_msd z5URnb$W!}i`fLC3#|URnZy(O!Hpsb+VWZJQ_0c;IifvJsRTYN@kSYOfQacP&>-m!P zCG}CUs#*l}+a^t#lsV44!B%Y93P*vCXYpPfHw8pIshnuY?45R0N&+Y77}_3F@4pH` z4x)&zfpP%zD)PJ;_;ZW1${{AOEZBvZj5Rh%pzAHK9_AyuZ*l+xBG>%6@5>W$KV+=t zP8)%GDX+=Zd6@G@bClqwW~Ue)vPtCj4KmUSEDzRsP}i0(CAM%QoxIDr=6J0dfKGLyVRXh)J7Mm*ljH3YZ(ycGZ<5VT%F{AP|C5 zxW#!pH3Y(sbgtyU5h8hyoa4t06eg@3a*-+M)~IlL_0cRPp#U!zYHd!g;hLa>$=RdL z$%!d^$Z)+Lor$C3VDseAF_|*fim!kOOy6xmonKF@1^JhJ8xCpxvkKARtn^-Uv%4_<3xPDkafzhh z*TdKIjs<;~XE8|MS`vKq&%;1PhUY)3TkD21V8LhE&BjN)<F+aJi$XoC?PKVvZbV}Be1LfN*{gu{BshC(>sb!GK+vXG1s@^+vXvwwg}>f zRXAVf*HR-apNnHOxvRJ3$BUU`oU#?(tB;O#{1s)H$8bre=>Qlu?*afy1=DKr8gCS~LjqPv5T z_luZ=$K+DmYpnO#yQGPNy^xI>C2Sxs9pLaJ3AS4+ifE|vt-pra{K$#y#(V=pj#bm` z@nNRO3%V*TcvqpQ0P)>%fGJ6(zdaF6AO6cw8ruFUYVSWUpWfto6j7d~D*e(}0l~!O z>5(9ZeJ7k`{ud-~((+;I7?YHO3g|eP$Fau=we!y20KzfX8`5iP8}#|v>XD6l`tYHnuYg;8Zt<#Anz@ zv=bie)JBGSf#>?Tv+V>8hZ;RO9QcrKpL$;xh+(dRTbMa4jMmbegh;Qf*z2Ta{Dq6+W)oR z-yi3VPozs}O+xBchGq=EfY;Y4=AjzavAfR(@0u2lXdnBM0PCN@K5h1WlRvF%Dl@eu z2Zz~obO)hC!~cPshv?>VtddjG^SOJtr|CSy#4T1>owM0`yit<+Rp5R{lae| zjkfg|cKys}+FnIhJ?X6M>v((DgsV4ay6zpk)b7rr1AD{9Wrr-e?J@ZCqz;u&g-P?G z_Lko|8dsL*x&_8G`5$Yl-6mChTz#~f2dz9b(0@zMioh4>^Shb{bRNUf4g<{!6`V)vbH~m&(WddYGELt%VV#w4q)Zo9^ zcs}1PrgM|#6&gcp7V=+&cpP9vLYB`FP5#Xfh!VC5jPGv8rGx$E7FPFm)n^7n3JP*Z9+3gV%>1H;OyXyp!qarn?MiBmQ96F!=S?Eiast zr%TlarUTg5;;UWwBCnNs27|s5zwc#7afA0No{lr(F$)TJNMLH@!7;z&`b7>BZK3u? z8$CVuk3mMlvf*LvS+my5%UIoG!-k)mUGRk6x;3PUF7wpWr;RLP&3$%pd)WTbZ3LtJ zp!w!oG;~`;8_dKHPHiea8Vtb;=~9C&u{XvZT31{9Y?O7k31^fAr{~5Gr0U<;o&0Ha z?Xzc?&@Rs?!fs(ycs}O&G@?$3W_UyLMutE>dp06-=u8ZyF8;(Q1}_s`96P!q)AD!; z(^=^P^*qON$9H0v0jy|9M8pps>3GrL+~2%?N_$q)jCfl08(UkAWN&L|j33I79bDJO zjA2WF5o4rBCGy(yF%in%s0qBeshB3zwze#JT*Zd(`tJDvPC0dfV*xfOhB{8Ybldkx zB)w8>r%!cas8bUw9T69b+BW}7_C_5A^?)tJfWZ^Pdu(L90G`=cZ~C`Nv;Ij=cuM%t=gn9&k_^m(yFQPPMl%#^9jL9= zc;rIMvrXCdMl+cUski8)$zl6$iw}obt2T)-?5}3jeRpFeTkSXoZ2(sBn2)h=Dpozwlk(jP)pUA70-n@gYo+ zmJ*$ulAJVB)=uPWjw(Kvfj!cUc*^#@mNQM`EU1q3zN1L1&r!ATz3F8Mk0ymwNrX~ zUrvr6!w-<3<*Dhu^Ny*B$?*cuJpZV$uqL`hapO!~um}gcxpNzDgqj zkoHYT$mL}wI1`Z#u@teMVZus;%*{cncHnw)YHGo13hgPhr9X%f!>4hX;h|ev(tIBp z8ENy?d;0obD_7FA)=I4s5%C@qF%?gc6JXCXH#ChAaHggheb}ZH9Q^W22D0Fl&y_gKrKUx(nh!H*JK8Q2j|vdh8TL!zTSU#&j|)U|wh{KC|yjaw<{G|GD~?iVV2q6tGc z9W{fiDk?(4!ZIj@pjIAY)wf^)?(K6`xIZk25-NB%O+V-pya>z6%7)u_o1Wc{4);kK z{IL7Gk_5S46Saf5H1>Q#X2`WHPAUjGt}z388g~Cr&>lHyinz|qQ5Oh2*L!_;l4^5Z nmKzGvhRbDy+W*NPYtjGga;>NPfeMi=N^C!Mn0{KmY}bDSV>4qB literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105215125243.png b/设计文档.assets/image-20250105215125243.png new file mode 100644 index 0000000000000000000000000000000000000000..1181023c9a31d8f5eb81021d2b41aaa1b28b346b GIT binary patch literal 30051 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 w_m<|zPW2-t^cghyVZp literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105215224964.png b/设计文档.assets/image-20250105215224964.png new file mode 100644 index 0000000000000000000000000000000000000000..6bbf5bfaabe0a47315a692801c1114dc424af392 GIT binary patch literal 33803 zcmeFac_5bk+AgeFBV{U-G$0fyk(o&5dB~hZndf<^D50n%NruQALgpz+LQ$DQrX)j| z=XoEOde(mTx7OP4+V5Wb+y88Tc*uQU_jUb-^E}SuIL_bWrzkJEeGBat5)zW_Qs=~# zNl4beAR$?|pL8w$rRe%LH4>8jBvRs{s?JY-wY#XQG|%&lMnu2Axn~{qx{X_IZKzRP zzlJJ*J-w&$z=j9Z_gHe6_J2!#m~4>Uq!*WXD~mKnai>K@GAYY};D&(h!T#q|n75gR zZSmh(cRKdz(PCARw0)iql-Gp_#hisXh5`RY#wSH;9gSAXIZVPsst`qS>{yX3@! zk&tXt{I6Zkit6IUo+B#p0!a_c44!Ldd>e5dX~{C#v+XUuuLRcO7MGb;FFoJsPsO%- z+uNmunWVO^E`yEU7c4A}23LI#KfZh0Q^j+g9feL-W!E=QQ&Y3Dvd+)XGq{hI-9Id& zrLEn|KXCT^`LN_TE=~XI*RPk9EK4$Y*w2k$;(NrrN7!@m=d1(?NmusnhE8HcL`Lv_ z&)M!x`ud%EW^}Z)zlMgiwY0><#Ms%{Jy(`y#>dA~wR1hETTBKA2UY0~ACA*4bgUAN zi;mv!MYnI?a97vImX`B+dLgww9Q9|tv4G&B|wzkf;X|(7+qAW{3$Eqn=ElYz zbSS=5L(RsMgXg zIH7lNt~XS_sJQq%`@@2Q`8R$Pby30!8r&yOF7^qpxQrCfG&DBiZ@IZnn2^P+T+8%Q4Lq!+ltY91bC2?`4G^Yag+ zVYZ#DtVTY?N?Lt+apASk=61c87b^p?G`+?uXnr=O{@im`O)VrP#q9j~mTwgSp&a_h zr~@j481$8u#Tu9Af2RAAF+_4*lGf4r+85=er=)Zo&r?vqmpt8F?n}WeFW@lvK#@hK z!2XJ-=Q1wP%P(yA<92wswv3F7tn7Q9PWSqThVR3}%M*3N!p&sdc0XiKoX84c({R+5 zI@fK@tE;Q)HZwd_7`)&mvGlHZekiw-lu=7dtB&dr2BF0W%Q?OMdsVRTY}dL$*ZIi- zEISQFMP8TjXR=I%&SM7{zrVY8&}pPYO;vSra`M;UV2l>ip+n?ijw2m%?SXVWf#jJM zZKviUPt(`pGMBho-rk|Z=1f*g`EItE@%ZuM4cS3KK`}9g*ozL@8X7!C@5p(0cm{Kd ziz7VKWtk`fDx{^QRV|rx_RV$ZCNJbx)ks{VjuG7$H4xr)4$wq?r}Cb`EaT_^h&7v06qd3p+Y zms#7`R8>_C^!MMob<2QjWu;UdtLjpQrts1vMSIZw`=5WcWVub3Iu5mN*h;-PQ@Wy? zV}3q;jlF}zrAwFQW@m5jK7O6`I49?$({{$9qHDNs#y@)|UYwhf@^hxsO9Lav!;^4d zP3)Z?1@pFT+xi=wl9Q9M1?>9{+)Ip)H~#THtaN3WpZi#IQ`0G%Z*TD7QgNUA=AW)z zw=U}BIbQqzkC~a73c^b-Gcs)2ax6}m)HXCXC+spPxRaS_JFV}rFqAtU;p5}eKQOR| zme$q9g`0R|=9y}OZ=rmGLP@t}+_GxoB z7D{$@cDjD4Jn3=VYm~C8D*bW8^=k5aPMJSi+{gN$sHiB)bN))z{lf}ceCJ5>v8*tm z-}#w+G_|y(<35M;SZSR( z>)vQHOG|YX6|>8iqh+u%3x*btD2R$)Xvw^kW&DB9eRdS9;7e-Lt5*ithT1viNl8hk z9R?e`Ru($@`!BCs=Y87l$HyQyXJ>&VJF#>2_AjwX5&wdOm-D<)hPjE?w%yfNp0H($UvnX?N;$aByhPyi|j5G(IumW-O!-6BF|}>tl6wa#GTjk&fbt zA0JK}Kkkx2S~~Y5ytgLQ*T?6%R<^XZc6gQ1S#fcJp4okk=IsRzxWKS_Tw0o*rY1}2 zS0#38Iy$8$@vm#dHz~V%(qPp?suc2gxzPYP3>f`h$Vye#l^=r zH8-p9S6lPai=A_D;1*2Dij6(PPCX;|U4ryeW22z+Xmmh84dV0GEnBv2-|m)!jijQc zmYSCKkfX@9cS~^9v(Ha4d-9JsvCHqJS(uuBZfuN8J54Wt=~A35Q|zYAy@lUw^L@yv z0~*Z|Pn|l|($X?{H2lNxf?cBM>#nY@gOY)h?Y3`j?L;_o8vZ&^*b?lHH7LA1+cVgh zl55d6Z74`W@``TLi8CZ5(O!s(4<9`E{^N)8=BJ3`adEwvO8xP^xlQ}_?eq8d9~&E+ zjLCcR=FN{EKdOS6g|jD|I$W5Unfnk(SLT~biNqYaosyDLKu|D<{tITH z3E;$h>B>SWz{FAQ99~{tfu79+@$vEJ&!6w94C)(mHmQB`^s|7AzSok2qhk)HZEr~yshshCKm#V8n*i7mo@fbQvO7|W=mL^l(CHA8>BK+=Ma!N{7EiF?6 zgBMOCdTMHF1rMu?hFi01+S=Nxt4*hWwUpo7Ug)vlXlZ#Ypn}iw*O#q}>Ii`{p~r@D zJZd|N-BeUmgcnE8ASX&lRMdoWU0+jTG|WV`n$7kC($Q*REab=;+YX)3f&;>#3xn zp-I=uW@Ti2nw=f;!I+|G@$f2vu(CW=d^(xIUt3`?oQ&!)sgmhIc`&;(LrQBdBFY|~svU}ch5 zB3HTp>yW$SwH;}k@)cd(_PdN{c5gfDRrwo&kIug{%Eb06|M>B4m3w?yX)Y(@^OTem zTwH@AEUTYOGGF;2oTt;JFT&)?95s{AnVZ{?VT)XXD-5Tc*nhu-*f9b3?(Gbr5DdTt zo*DaRYO?<+5I9K$7Y0w8v;KaHe_RGwb8fUXp88_9K$0D=IqAdH$&v z7VWBxxctOFH#9VKUV9}R7$46R{=u`VzWLtodScN|sU^Ckq$D|cP-a=*%h?Q%wux-t z*J8I&azg`yQ7+v-CCIEVwoOc?=-#~%%Yhq~&jU4+G9vLbHaB~P<;Q+e-AFuE7lXeR zPhxU%EAe4Fr)YW((}W)QUBk>umdh&jH?qwIT>HC1XUV(FfL_QwuQYb|#}`T4h%3FK z>uJ*;E*%#tb=J=v*{G5rj}7{&xc$8v)KEiEnH9k`eOtr3@phX;@4*Tl56WogfA zeb;xc&HzdO)~LF=+S(F_pAX$HC@bGDE?&wq^4`05uR^k6RtsQR`hM}#X3c4Lf`U48 zEVQMh{2o814XTW-&x%B`v$(WWNR{*QrL(K6E$@@hpFd+gr)p*xRtE0%xtpSqKHOOv zW$B0t13^lqnVtG)ZB&|m=`wrS`i&a_7%rKZFrZranr{aXlRik}eC$tw7|o#)FNTZEa+G_^%F2X1YM-)bJqaZ6;K2hx8|Dwvczl4#gJ*B|t4BV5-1_NLhTDuKV$9X6 zS206*dAwq`($Xv~Ez_c+^brUFS5#Fgm)Nm3R<87ae5$bh$9Qi|SXfx0Xk*jz z@=E>k(!$Td!N?wkUMkT)WwXbglb03oWow&>{3*@F#f8s*^5h9%le>pUO-)UGeLb?V zj~L^Us=4{|J9j>ClrCnv&yCN{&H_j55K?GEDk_}V*o!tcV|E@^HZ~dI;o&hc z2OMg8#*$M~5RwsjksF7*yOmI|YHPaxJu#@IdU{lJb>%dMu=7kt0akn{S}t zeOTJ_6PvjLD7K-g=|^v`Qm&Mg6v9OKDT^)Jw%xvUi}S<@J4eUBpdbY)siz6z1%-ti zS}$+a^xEcs1?GGd7M7ov2TVjm6T0VwvHefsqeoNm9H^8V5|xIBhc|EDjItnZCG6wp z&(i14y?F8B5fUp3AB8BPrDwc{cWq|$*%up|mh{?$`QEvLDG@3FpV}y4VP@vaw{LIO z^t!sasjNsp4i86$TmWE3iVK#GtF5hVm~0igj!h1vU_Xaq`DJ!?6whB{CZVSnDYBo} zYuVk=(b2>tAt8ZTaD@PUNKi;=y}^;XMa~&dpI%^y;Lyn%#b9DYTwGj$QVANNI!yKl zCI@vq&_?6;@87Ygh|EXjNr@ux(AKS6O-%aQ3!Ny$(ts7BqU!o4YO1U62M0H4FYZz(AwHqL>2@4kK&z!!Fa$qEYEoQw?A=dqU9_iQ2311l_7005(-MRe(Q z??ybH*&tNb))wwxUtK-8VIQ*({;9dKaq88zbttyjG}3g6U8fpTG&VEJ%gbXc6AKxk zicEMBK`s}0o5ro;r?2i=Kw6IPJogY309-ka9(Ay@JLn@WE>14?eMT+VY5aQ?3imU< zJ0b*JGMhJIiK9A1y@xsTx%=$dAsLyPiN3m^Jtxj0=4RCi#Xh#-eKI%Em#&>V+~`R| z41-V<17fPn#1FjuSSUa0a8M)o^@gu+4G*1=JFkPNiIWdG;6sL{J3jBp6MA7`VKTBH zEQnbAa%$$Vg9wteZDC&S_!DGBdec<#AcY;Hn38 zC6V|1{5FSwi0^xVsE_OLo<6-(3?cKZ#Jg_m`QbMxei6+lo4A4W0m8>CFA5Bl-q|IF zO$)*-aodX^11vnuI`UakGV0IY*sO1<1LYBl6<6jE>4OIjyhX|~ZAdK9t~SaglMcu**+eNeK%r_}D;B+QqlG_aN2)mR`)zL|k>Pn#BTXRMya#nVAXl_b;&Plef0! zWHdsp2@*`~sp6qss2k}|+lqTK?{=}VvFY?$SprRxrdRy<-n}y8tlpK=`+bm^SlQU> zKo8)_QE#)e{|Z(Rx~K0ka~n8HT>MS5zL&>j|0kp&aCyL?3=C0vbozyka))+F9lDR% z^%p;I@0@tV-Qyr)@WDb+`k;RzBTFz7@7}!=(krm-t;RwHRG$Ky1ME09^|QI}eOSE{ zCl&*?Gs?K7xxOgu$s1x9L_|b7YmO~5J>mjiTuec_J|rXr5Lv+@|4My4klaBO2!}iK zJeTGlJ$i(c3&1IH_AE;0-oyMTFf;<{`k0xRWc;^cpE#&0xfcNzFE(f{r=zZxnxg-Q~J_l3Kr8{=)z(^y8Hb{|i7$BWnSXdxq zgGf1c>=?3Ib#--d&XW@+JBsCM5t9{2cLr3Th5`CO0kHPktJ+$5a2I@h1tVwHB8&9Z zMzGyGhlTj-*DnlXf4k%YDHAuh8VjZT6W)7#kC2y_D@tY#AMa1S*hzcz=uun9|Da$46# z3XYRSf>QbR#&4VqKn3g!GNPl~28U!dUERIK{cA}K3{0)8XaXvjn3xo#uNdtAIh9^H zVSHwF)V;9weZ;y!3pj&eiEJ@Q|JKuk=$Ke_idp{2exGLv3F&&p1==V0`3n({>t&80 zTUve16FnN&f3x*y7xEa#)L{U_(UX6!M@|Z?6i9!X3rv{lwJ2m=fB!9v#JV}O%e3z$ z289u`0;U0EL5E@>c}!ZGJZZOW{%TeD9pocuL0KuOxh`+AlP6CC8W|Zq%gH$vPyyoC z&eoRpgz+}U?m;`lc0oTb}l|7$Q z)`J^#9R8Yb-TfND8<|HA$uNMUWR^~72kM$#)6>(Ss6biM8Egli0*ow7*+eeJ@Z#og z;ebSso*=jJ^)Jc_SC`8SICn4zeeG1*cA3|goTO{y^J3pU56+L5-@KW0A|)AZYW=+@Y1v-T`2PL#=7-(g-8XLBz`n!wY?tR|=imSqq&cSZ5m;>NR&AtR_aU%hSY|Sv zK(!K*lA+kgrJf#3^HV!_?i|0vW7Sb)+0N%DZg}xx7Pc*!(Ck%KD=RDgmzO^Q1P)}m z_=4m&^}OD9?SBuJn^{?TDfb|_dwH!`-oVa@jEtn;k?``RJ$NQ?*qHxKjNd`6EX<4~ zgaa^);l6$DVnV?@ervNTy_D6`ULdWY5CmDl&oAG3EauLg?Ln1=ZZpT!vN5^XTbGQC zzW4TmD_J% zNKsD(d0?2Ki7wJRyK{$|lk?-JPdiE1L*-D|qQ(?#0qPyJ9}0I=R`OC(Nhv9ApPx6(&N^Qc;WT`6 z%d!{TA3g|NWlm=17E)4DB<+BJgFgL(gUD0!b93C>-1sC(2??b-K3?AE+PTN}?~gXI zrK6$YK~hAF0byhd&J=+V7h&=_$-{%V`nIAXzp${ar3DfQ6%|#4u-9_fvVh)^KgICJ zP*LxVh}MUhnQM%=k`I9`O-ZQ%MGPe0+?-of1R|;!IEjVwvjQS!>z6MOOE^HDfG-yY zvwUscCWI0c6nF02DJ+gjO}$gu14N^nXU%x<;6Y|)$&wVv6M*^nF6cIW2p^LW-+rsY z&`E+A3e0 zlvGtgDY%F6>TmutO{0_$1PK6cUkQNL+t)WSw+N#A`*))$;W3cIs;txjNs^HG1}eS1 zy(JFZ%g=W~0g4z>x6GkmVt(;rY<&FLc7PUj){xHw4-qP^UtjBB0qDn3?sg0;lIjz@ zm}8We@%wOlA?|3?4tj`XI{CJ}*o;UX^M<-hb_StJt0B;t@85|-8*+{z4WPi-nGnUO$Cv!fSsJ0cr43-U^#L@~W`B`iF=#_K_9ss+OmHU%pSi~Uc3|GOWIo$T#V zj(zg>v2QfH`6oO%^8xlU1&1LZ-oL+V*RIzFoaPo59J&QY^BR+%3oTJlmX@y6M)0Ft zCELr_@bTk*eX}c9&a11R9g$Me)O=^e)ti-WVq|Fe+Bj?AbQ~fTHW1Li&s|W0N;{FG zOZaVUZTXyr>5CoYz-ST}d2IK%iTtFflG3Nz+Q1!WSwleAJ>K%Rw$^gAtIS>v(+klc zF}Zo$A6;4?0;{~V)C=<+!S4iUvzbxmAv<=!t}QoK1(P4BzQ*~>-US2%ETEW7$9$kT zx_x`wsqmwv?t$dHcJEGn{#?MU={XP%wis$X1);g`8)|zma_&ZCCmI~yx2kP{ek z4|jK03-_T`ZshTM=k^J?vjDLk*y$kl_I=n1goinIPb6Yj*LetJ*uM+TS0p7jEzJ(K zH}X8H6Y%_{g)TOWBRAmwV~sG`x4pJ*kpq%@06-O!S`fZ_gy??K& zu0EXI`{cA;zlCjw*NTVOElqaRyGOmBTnwW(fqyhc(qA^sypX#HzFaVM|nV&|~$U7~1@ANSyS1egsL)Yv%Q{eq`w38Y=5!tCs+t)=tW zLtv^o7M;_LxXwfE#qZ&dAEQ1hboi+bsyp%nmS)M)bQ@M6VjPCm3o0ijF4_!ugl^BC z^Pt&`j9!|zppY_{GXd%BHT~=S{4~lmaCK})j}`;)0NVEV^h~gq0ZsbcxUrYt@phFF zXb2R*O1ioc$*g||dB)flJqlJuQ9RA$jk-SEe`kS%ObO?aBURuY&u5l_t6^5lXfcQP zL4!Qz3D)=9%1W!YoK$FmtvbQuCdbKyqJBAi=#ZkCVTLmb zYzih>azAlwHM<}0A>C0jK6~+klbP9fn30(|Au;h5`RAr4V}L5u=zUw5I5}S=C$sYN zF96k`$iO;{s|L}JBnwIE%9Vivj2ZkR05KZ#TbDNcL7e?H500onJ_Ok@a3A$P_CIPi zMMa35$q=oLj41c*>wp@~&3WpSUbd;4q9Qqf_V(>V{r%)yZXmE?2IzN~e0a>QdSdQK zEcQ7V2do>gidgg@+f-ewtzUp{0$~SD0mCA)zyH@ScjZK`FmsfzFf4$ZdYql@0J;@o zeR`Ji88NX_*c}-Dod?glFOF5hJ+a*F%aE81yGYohNA5H2PKdo?Pe)^egtSUM1sRQy zm)ml!q5wcpQ6BeNUc@Bs-m_pLBa2bG28Ex^-cb~I0HvR#Qhkox~T^$|poG-mr zmcbc{oijBxg-n9{l=}Sn+O=ze)*$dk&IJ8x`NN}ME!jqUk_BIU*9qad&ZdUqqaQ;-iSw^!TxiqKc zE2>#JUC1)^g5+Y(0{a@hK?|Qfi(2Y!MF0)p96nCuun!0MKjI=2Sy9>pTh0#w$O2p` zEcwuQ|Jn5aGNd{D`Tqo@dH3<@nSuMOpvHrRl@(w-f!RX((0xlmRLlb4c2NGUS+fSk zH+XE^I({ZN+1R%KFLyYQY#H=XcWLh*Ipr1dt|l)(KUl|ba@(QSY}gjC&ehc)K6&zd znR#CjsFw=E<5Q%9ixQ-pckH0{6URKD_CXCVxKQdomx&Jp`R@QFR5M9c3!H5`r1~Q) zEQ-z81kh7Ft|^R8Pse|InVET?BmMdFC#Nj5WMywBB$#vxE>5>uVGp-p3qp~~K{W)$ zveR>6Xv2Xy$+BayL{KCdwMSlq{s!e7oUP6=r>}W7*gyDnD;Zg+)hWo=gV$?^Ng46v zh8eTqT(M|8Jv{+nQNp-SYmn^|cvJ$ySUG7@>S&AkDaL0dB^|F`U1f#J%OL1_lF_I+ zO_z*8=vPx4LJgDrlijqm1?DYWbMpOVQpuaB1L9(0xbS#$PE`tQ9vuc>%yZneh-d;f zEZL(jw;sdE`G=}k=}O{ zHj%Wyn*ry5H|Q6Lps+ylzdEY0VTH%T_W{E=QVI6@xn^%oQJ@bX{OR&o4E&R0|O%{?wz zjIw(+tZur$`7>Y9F$oLn7xOIbZ4TdLM!E`_y0%}mvQn`4ww7b_pA}Se0rIJ=oZJGx zf9@K>B1nAw%g)XzEsEDrCqyLTTyeni5C8p6R2wHl@?xk!Pq55_c9RPFh8%q%RIQATvSPki{f zjgEMzt|-I0&l;V5&l^3O6(abuv$9T{IH6L)DJ(;FS zumB;dQHc2m1a!hLLgZI9@E{1BSYX;#kY`NqP0S0e+7`MjcrH~_f|>yXQ1C1}oBQBF z@47x3N=g`zk`ogVTp$SLW@jsHzkTNpMv97(@{M7J*qJkMh4_d)#oa+W@GU=|WxTyn z*0cJugv1RDI9T1lKzZy{Gcz`|ef0FddU`16=*$pO5wgii`G8w*If7tDHiOXoA~O@W zilX@l2ggYEC3p8Ck^Q@m8;a+SgS^1BK&wNQuwngrA79_fii(|LSkIW=rNu?4D>1RL zu`x0Iut;xQP_Q3AuxhM)ff@khBg)7G_yZanl{($##(P1-z?lqZOhI0rdF#t7E6Yoe z4D044#|I}B#901=9K#}Z>o4-;8Qr$Me5wcTDXLA9Nr$N1Xy?<(GQRUR3M8LiB@eM& zNVaYB-nbncpR~L@oJ6WpXV0G1&3ehX#N)zuY>z9P%BDE~WmvNJLWSMWm) z{e27!UZ?|+3}C-Xh>xeGqjPeTfY={YiCkM?-7SVof!}f004D&_3g6wPe@WqE6yz4b z3Ig8mfM`ZX7v4AD0f*vmpf~uivPTUf#HmxJW@ach+RMvhA;RS3Ory?)n((akWloMQ zFFhDKjM1lZ4RDhO?tSdhL+Hh5Pv(XGBRM<9YnRwH5k;UN;g0$H@c%ttu?JewXgs<) z2IPPRV)#6WE{ScB6cO*_!cT43xDh%Mw&-boenfXn#z&O{?d|O}N44HSgw`2G;KQuw z=;-j$2g1p9d(Vl2sVH#N9UYPP?{mSe?Bp~9c^kUwXMQ;_H>j5Y?PNi}qGC!=h#KZ^ zh2H{J2^dXa#T4S_hv{}EUuas&TNxM*B4}Mz6`T(c6hKWioC*WZ1E(ou`~4lV79a#7 z9e43V+RDKuD#77680139XiuKg)-LSJYc~5xw)v?di-6~%v!&%Q|47l9kQXh#FhsED z6v%48_G??X8Ayb40DoE$jHxYqiXy^L>~n$+2;VKEy-q{6*3cuan> zD|SUnn&kE_yDJ^%k*lGia)O(C?+IgBxcuP{*hN9H%H_p;6R`Ov-Weo(MG-8Oj;DEj zQg#V0cW|Ej+tS|9dVEM>Pp~F6N;uC1!F|ivp|n1$F~41Oz9DPk!R#qupo3 zZUOH`)jL^M_L4Yz9uqS?Q~!j3S2Gu zuglB|k6*tQV+y`vX}LUpK_>1qfaHG=mp%W1xcn~a^d~tGS_rV$uB~B&^V8>paea>- z?iqaIWFAJ0!r{kS#_!^=?dKSKz zPor2C31MSlp%?bl5fv?is*M@kv1N-E0P)Y;dsa6$DI>7T^71kiX<$+mOiVuP=QE!r zCZ1!V^cRmo6vjBc8(DvlrjO58tjW%mWvBEzm{F!(eu)=YO-JwYFJTh30%D^cCKfO*RTp-`mmF;EfddCh@CU4Uc%#;D*Z>dB z{Ol~b7(4i&q9Qm#7tl-qe;Hut)vF|^y9tGUMvE*y!Rhdz)cNy(27ozM!{;lytt0u8 zx2}$e7mrX>)T2kdS3VzNb;!ucsjaEeF0h9blOoI1W1BBnHyI1mXN1xdc^s($(j@d# z_~f}xA_==<#ljU2Xb2M?xF=<1K>>~p8*V_L2kY4foec00Z^8Of&^pO$QcLd|{sgx8 zDDnf;0SIg89|32-e(g1ALhxci!szr}Pgrjv_%#mPyL{ye-~#sOC$q2A9C}}yny6`M zThTZ1?c4pZu%zeDWz}Ga{*S1;^wms>z*z>VR=VW4IEgc7V)OI&6xNW4te7qjrhsgm z_dP2s>*Y&AV&ykI?U}>$`(N=(HtW0Nt4mk0M_NV`4WfVSnOQc@hGY|$c zT|z=1vSnlg@1a9)Iy+0XFTlSF1C?+2k)ua-;kCqL0!oXL=EEFC2(rdB9D2xbkZYjl z1B}gry=XCa%uPde3F7{uq2V#TqRSUAmiLSyt;nby{d>oi*Wsv@qCeD&hCN(sYAaFnqx-#YBYG96$8m6J5z^WggoLm4?0;yoo5Rg(6;APtzMzkEqdO)ZAY9qKTG34~Sbk~{RL zGe<~JO%SDoHp(s7A9ZwONwIcNh6X4|;gBKW6(sg3d`=~r8Y}c)F2TKsugJi< zKHnQREINu#A35Sz(~G9GH1O#iMK0hk$3GC$qxlXro0H^?qj z-dsy;t^>L}?9?@#onF{hVA25`q2J$4$7is!vBl0jJHpOx#1%H)(!3RZQ538Pe74b@ zy6u0rynAx#7VufVU0;8yS!Pxi%u>BUm3M{hV#pfuX(rceB&njW?+Q9$#BN1IwBwNn zk}=nCyDF-s@A)HxIP;q6Hp-6Z`wp5_OFwJo^$k!hY+WL44R&whyIPK40#~R zeY|SxlNz+6O{2Jrgg7xj^%EsGBO@c2hGjIswVU;Ta|0{*8+j52D8EDsu7AkrwN%Pr zO#3SVSdZ@VgNAWd4OTa}j_e?H!G*f~E2|D$))@2&>8Fn$fxQ8Qa3lCY=qHY=zNq&T zo+CB?fE9#n;6o0_H;mSxa3NV%8*v>AZJUr4t_EKX5(4~ZY;-ith}PfUY-XC^IHQ8J z2E&Bb3xjJ2zN;)1hr{Rc2~;F`fO;_E!~LEf8{5;>h1RQ;XA<7vzn|t-xd4-IW`s!j z<%{N-GY8q&WcHJPX=xc496XC~fAi+_*k{NwgEnGBW;8edg_0prNgNXc*D)L_XdptV z0n!3ir|9OhNz7)OD`Pj@57_x<)E9a37!Q>trf z5Hs;1cW&Rt%2+TgEkE%Gz`t(|zJDLi5y%)(^UlaW!O4LC z=mgDjpU!fFj7PC+7qmj4VNgkEDJHrtv(8_+l7t3y0Ddeh*fnXXs6vKwwod-#1-N@x zM9r__8=No-tASHOTpR^XAD9fEyXf~oY%lOdSqkgE7^?PgbO``$xs_Z3@2>#LsuqBc}{lA^;f?N=CPAb>(Nh`OXu*BQx>Ffs_zt`row*i&m*wp69iOLy&B z8F0nfJ9tp4snV4t1@IN+WWofg1jUK*&6h8a>iU{t-W76pMuRdGs9U#h3)uH7;$Q&C zW$>}rqm4?8)VpjJecu2=q>Q){RB)DK$Kc2VoqQ)CKt)4?*#~irhnpJ?e?mfqAq?sn z-6`|k=&8?g-yK2=W4!DW-i(olK(laQK%-(Ls=DtWkdvQ3f0hjBgP6{B;shLhkVTRb z5;V|=-rw&G+6Nl)?>~ODhTmyruFi{;5u*fSI+ooIQqnxMYXCCA zrEh?INeUCilap6IW39kJ0xVhpkA|Ok4C+YIxo-g+@Ho1ol8Zb(Gu_;ipT&6lck`2o z{>JUJNTCk^Dan|i@FVv?3?uUA{5%L|^ap^iB)uUvpM*FAGK^?@1Ko%DM_Das-6eu( zZ)%#1M&MixnCoD30*eh!+6eZ(@891!g}{Y?wG$p*h>e4PiL~Q&Yy6MwTEZ#xyFjds zPXmksH0oysh9Yng`cHq8?Rl^d#>f9a=Kh{l772zF(4z1&hQ;3gSpn;@V@(YW&oV{D zZu$CdLMy3p?r(>hQp^6SX=Eqx$0l>%Y5uZe{NGY#3q~%3V}@lb?fLT}xU8Y60WX!b zK{bd=NT?4!b$C}5q1d*9QHCe}k3idS8N$EC#fuk3L|(z(v(T>&vNWj1NrDQlHFRPX zxZ_9$~lhLql>E=+=OR9O@PLU$pCk;_+}=fE)A!C@+{qU_~Z$TbO*H*XEWm%=OXzJ_UpD zv0VM%LtdtHRNns@?mDJha1uT3A3rL(x*TF8cpmRypS$z(uK!)N&3&i9Hbeyiavu*T zXLKPg6koN!QC`Avk9)v!LsygWpwY5MY_pPj9*)nmNTDdsV(G#0I@`fzx znn>QsL+i`#J|yXQ#kzm(_=NJ78&rk?70OAsbSOogL^o&!Tv3bGJD_z`?fmn0|5n!| zbqW8%7ty3zqic8H$g!nZ6C%QPclTZLbDm!B`NB7-irnAq9@UqAqSLN+bWgU&-1Pg? z^_WAflQ-H_G&BS&G?vS^@GA>Ati*oc^K4qEo@)}&575|{F5&>*da=8Zk| zn)E&ZMer)eOm@1*kfiXulAc~iyj(b1Kd2=>A(4W-CXPZtG7^i%MM6Fk85uEut z@rFWy(1qamb%o-KiU7tnRtCVH@8Bt5W zOwx;|TY+%^k6kOMG~Ch6LZk0Kwk(;ZnGu61hSM^ZfsTm$zjZ4`sl3fpqekgWhnw)y zfI_FoOuN_0jF;D7QUcsk3md#H!%~3eB79Lw5Y8tS7I=owP)dNg0nX3uaQ%rK3KS`1 z^zJSi6J}4GQxKeLfYX$)M&IG-n61%Y=E5V&9LqlhUCBR2hNJi;!gaYX*~(A-mHA5H z<+0|{mIWd-U)%O`rksx>u zWFCdny$=8uJYf_{FB-2F;@SQdL*TV~OTNO3Pv=aKRCaYXVgbnz!x3avGWX+6y=C(CPR8|#te(D{nx4MoyvjRf z&)AXoIS~>wulsd$0Pt4hw%PRg?;6!POpayYu$xy(@n9FmeDg-BHls11i$w(#ZLmDw zkroyDt?oqGw_lNXr|HX!BTj304+Opw-o5&JBA>&cxYA3!*@#R`j&fzw!DX_l3wC6v zzZw+bK|_lEl6gsnQer#pNf@Q8B5%N1diO3-w{Tj+g-sO47;$TWG@+Cj zWAdrSn*Fxo>`t}%5owz2O+_vf#vdL710HsxHoc3_bgwY;wpsmi0UVVK_q-N-J)9GX zR*UHM`0Ri8_hfETbRc}e?!{V#YO51o zaR+LU=k4}+BaQl^m!LLz512Ly`hW%Y?7l&R5?jw@ERcWrGAtJOtdWABX@n!)4C3+C zi?Z2zjEl-a0^{ejv|7nLN4?)vXE*D){Rl%HV|+~OB~ZN;y!$g>?dq19VQjcr0i=hekC7a@hM9o}jfu_{!&JgLGIP zUHux~C0z5>Z0XN+^0Bzm7mL;vI1Uv6&44uaTG0hml89=_v$?1ixS52+`gWqI2C3If zVJ8jf%*+2naxw5)~B{ zL{BBo2GO0H1?f&iSwYvyb22h$5*b7D1xMkpOqf|T`rc#wDw9pOzdkJU5Mt-SlD(y; zt3!J$bP-!4sV3W#yRmSpsr9p|7=5y2ABsIas zfp`T=0qgvI!L8&k50DjZQJeSKT(xh_Rgt}>+Z&^OtMQSF5&tLF;{UtmziR~k(XO7y zDH(<#IF*Sx!wh)~syaF&VRU>u+Fg!ym~3Z2>@dyjjok>|eD?jESinn8Qv>xT^(K+d z-~8UpLn>Ux=_e3EoUm$<+tJBl#9a%~#+qFwsaBXB5;+gg%+*5pWw70+&o4q~5`w6X zqos&;C?!g)Xb&14>oN|nxf;Y9)+j1$Fij1WVMceT_V6t=0SkC7HG3`1_5}3=fc_^c zp=JY033T>?&~EyfURts;03xO$M78rPR-$Ao?M@$$`AL__Pm;*#6{uyA8u#PzzQhz=m z<}$oG@WH^)j;~-Qxxvm-FLm`M+^N@meN?3VXDMhBfie9JDhfmO33a!29^B{L1?Na6 zu%y0i)!}`|(eY_5uKJUTh!XaoPOFAqj1o7X5g>`ImvokN)ww8EF`D|zIb^+C5UpuIRAjk zsTXnvX?cC}+x9aUGm$BBz!;KiyZ+zz|8xY%W6)Fzh{pqTNF4wI>R^ecy80=&)_~Nw z&A)K+^Si-f2w`8TH%rgC`vw@yCg@@43r3?Le-}SE1s9@^t)&Inq#sKH_5_N;eK?{J zhDjdyKBxmMI!lTNh4yZe0t+B=3v~J?l$}W`3F>-aLHl5$v@95ihm}$g$R5IJ(dg@~ z6mC&2Kf*w86Q=}Nl`c)|FOP=;yV|ehLP+XwPABY8GsIa%Q%%}9T#vy#Txjv_T%6hAX}am%@&KAYJ$2gKmal z#c~3=*Ul=bqOoeWMl0JC$}YNCQyNd7+N40xC!1anRZdSO9O9gwsRP9`9oVgC4(91_ z?t!HzLyk{;wyr9x|0qV$*u@4Q_K-=$!;4+T!id$BSQ!RLT3Em*`` zi`|@no}f^)ViB0qMV^UiK&`eym0pHotS+1ZgM@4yklAw`Lnw+dx;K2zi%*-aB zq?&b|bn&#cs2XQ4zz>P9F<~eC0S$qmv=BTSSH}E^a*90WFSsO#)(94VXv2J<1i(_9 zRkDA($K+5T(fbF>VJr*aXCds3s3;c)5~46NQ*ohsrbq{ikKp~GrlP9ICGG&1!LmVr zt~+)nPrJR!w^SksOGPcQs~{c3uslWqhyACf>C=#M?+!k*^__!y_CX5wSO*!ub88o%*P` z>4ZJqF_E-5E-xZN5T$64&^(KcG!VUE$k%^@=uLYoklK%7>&Ay$YUP->;BbpVND#;i zFUHrD&Q@@o@<4T+mQ;HUp*`?Iqbu13aCfk82?aoBLWY+sDq2}yAU5lEx>F$g-e?fI zer9H}l{6lUvmwuo6enR~&%t_U*!%Y=-)0r%OMP&y?nh923&PC0>lNtS3XL?B@F(g7 z;GDGs84ApejZ@GU={7A)z}c5CPnMtyMaP2z1qE`gA~|{|x9{eRMn#6;;8%gzSiu8V zsy-$oC9QxJZHL_44pDX!6BESwY#v!_@xCR~YK^l!+{76OSpQ7N$cAIFzlppDsb!`! zBs5fGG7M=`ee4BxSLJnDn;V>Z-p~*sNO>Y435~n}Z-F?0C2hWf==~=7CFJ8TA#`!9e3L)5GoBnwq;MlmJtZ@L?QS#F3teTnCRHwZKsc z2u#JlGHVc1bRtd=PniOc7s`JAGaL@Hj*CBDA%Fwi+rY)6L>Xc8c8}k|zPhMR#2+Ma z<|ubt#3kS+1fzZYj^^JUVmXnN#GrCOPS8+Q{Z;Dus)EJ8R$$^i3aV6pUknJTs+dJC#smE#FYT(7(yOAp#M~cJ4nXBNMQG(}!`1_NT9E0U?aLg5_ zs0Q^L;9{z&<@sW>$PVmUFB35xej)0qTEscIl9sIabMn`29Y!?gccN>!Hw0K`KLmQx zJD5lj2i_<91wcwA$cF9e46HDOISf|8ysqn81OK}6Ty;NCE+Eke9wZ!Fuwe4Dj7GYi z2X>v{*c%E-cN`f@l3d%pzMH3H>`pFvSMa#*pltwAQT+;`I(@Uw7_Z@FrI#l^tMuUh zecP5xp?h114unK`UkV>=<^DCzzT5VUH{QfXjGo8q^bjNchOpHLaE?g^-9wNFT`ab| z3VYhs!C6(|%)UDQ5dkusyh*}afcFgdpdc&(hGkt{rqMt6*NS2RN=sK0M;42B05)D7 zwBem02d+Djp{t~n0ZS_){tC)#L0c7EMzMDXGwA}DwJ#V9SW=g2ol5K=h%n?Q5jSg# zn}tn8(j8|vkR-R<%g6Z&D8p+Rbr|W98)+D<>jY=qvo8>@74jwbu_~TwqWN{F!cgC3 zH}Q@-#`WDee=x;z_5ERP1ktnB0S|O1<}z{eCwMgwhd4eqLem|&FzBNy-ldvP%r2fR z(ysP2(G?K|7=eKSrIyZ7JgE$JX(t0Ncs1FMSJW9q^va+{>HI|0iVk7}__t<|VZ&F~ ztivf+fwR`c1tZEgzXs#uiK6~a46$Gc-KfG4JJJIgJZRFKc+pe52qn1}oOj5wOF#AX zGYlmtCD2O;8&u!UecOpow7)F6yRH;h_yD!gKZZEi0ttrhxZxYr=m<3D53j>UQ{>(; zbR-sZ|H$V!8Dz9$C9~gH{5_W^qMDObOc4G62TI4@(xn&^n>hK+(+%C%H*Aeph>ApF zY_rIn8tGiY>MrWONtb+?i+D-HQ;$oN+8_(hkO|`Srg%_xBk0Rnna(Zss6LV)8!3QB zm>2#({_LMKmykD{QIY*&840!&q9E|gF(AQ%LiD(%TA%fG&hBTy^7Acqo{l|tc;e&Y ziUAWPO__*KEPL91MzaN(iNUr1sY#?uJhm91&2C_}o%E;}uO>Ub6P?8t7hD{LLbo^y zdZhMr-xFX+r&m|kAbmXd@5Y4^`FyE;puHnB@DJzp;HWQKP`Jc1_`k(aMJMmoB5z7k z=>tnyKT|SOjH*cElL+3Z8gypsYh-lwPsH7-W~EQAw(tb%5!>Q7=lAdX-bm|%a`+b} z8-2>`)Zxc3o;57Saj8GTtte{cQgw18ND%88Ar9viH({711L@C4tRwP5 zxpMLZ8O}S#SG!3D5@7X%BLpCYNn(k`e;@3?sLnib=uxPSZ5093;H@Lhz(n9c5lI{j zi*V*SSEFxiVxrOa1%p@l?0e^#Jgi!1!oYVG`tb<~xD5wnB_&F9o$$iSrsu6h2~G|8 zLMt6~)v}c`=sg{&?Ck)e)|1knXfmM&xB|1xtR4sx>8v4a9cV|}^%Dm*0Gf^IF1)L& zQ&^FOZ!g)?ln4`gHU=w$DAmRqahRvEaT(LnR$7$7)=~ep7qa*@Nj~c*sYwZ zKosFH*2=lN{jCTGlmtndk0OWY;YY0Pw6B*#t%XSr_|J=QGjf6;hv+ai1WY2KbP{JN z!z(_U0E!&d(%C@zd^CJv=B>bxV?YBKroUVay0cG^ARMzz8&UkPU`=TMnQKGH(^Zk( zq-@8I$*&&rYI}n5u8u@7(_y#u_YZo!_Av^=+MlZ0clFujuwQF-bSav#%*_ya{4V8n za_Wl5$=D35|Brxw|EBmiZnW85sF;ce;={E-lp-QhCbvt0<aMD--3JN~>BkG1j6*vIrz!6Ju6>7=+Y~BWdda+L$c}BVM8W2~3eCgqS>Y}S zJvc zf+SHyRjp5GDA}e!8`M5g$d-ek4-N@wMAA;xF;6-tg!7Sz+?K0}Cs2sF7HhA#Z6_Q!~)o}yL>6GJXpR`(;wjvZC zoP9c&oMH)~ibK#0gc_=L;hr|Ewt$#KEMC82^b0baGS{Tq{@1{P&JV|lj~I}W*%uy` zd!H|6Vt%EW)^(+zI7Hn2PuQ|?=v&s$1ji?g6h!WCD?ZvnK|)Wfv5Jun|6lw*%K)*% ze@P!zynjqT7|&lQ@9_(qY9O_QMNc7KQ zQH%^RB|`P8hv(koMQcJPvDDh-@bvzz$~EVgdn&7@?Vj(xN+Dh=+7wAOJRqEA?+gF z;mAPuURV-`KgCvp*nzw^ExZhZMovb?ZFvs=V}SONw;IsO9)yRx{Y=eG)5=Z;Oh$tz z@6gNo7#3Czj=JjV0vx+RY!%Z5UNv)%%uV}`Xfe56UB}x%n|wrrRCr`zGr_PHIYX9a zc2fpP--()SwRFUK_M=@?26Ajcv4RKQ#fG5gg%`%MupT{nCx#`1$jGQf$8<$(8z1an zEE-`JS2~H4to~bj=NeXX+P3kPG0HYZ9zw{w*M~=1r>;J#+ z>%Ok@Jg@V*d6vj$cxrhkN#~^`1Eemj&f@E_;c&?0((+ArzZI=RJUj7C21~MhSj%>5 zX-sH9{|O{c#G%NEK`)Fcd~f-e+6!#D=CGGm`L2Q;(1kKcm$lV2okd@y?bZAbJ&D=4 zrpI-DhmitBNBhoP-9`ikHg1AZzzSFR&-cQ~o2#``D|A4?n1|*U&n&3nSyFfz} z-%~@^*PWPQ=OEw)p#8y~B;HRb;BQ`7+G{>G9LT^jfcU=id|vG-vn6h*SppF(Ilm(J z+w`(comYLCeN?@FK+6u(rHsR<4-uFyfGwvxSc51KKYpiA^bAjIR+8*k$q69h#)Qpl ztnVn=_ll$m4uf1dPH!Q8801(GhTJ1HOGwhJmvMWi?;oOJc^`=lVn6|latsR2gbNaV zK&=`vexF|Pqn|%}X5fE)}iCx=*PRXwgm`Hteu)d8s|$xbU)u! z2p{K9)RA0EUCSmFKd>TL|C>=$-d_6xo}a-C7HXE{M{kN#E73kwUJ+u(d}+I3_F@MI zBUmPOMz4WmpF!^*Gh7XPxTWHXFh=%y`;@;d*zDd$%aqueJO`y9 zmFvnfQr}4rSPRX>rYBopTxF+F7b$)mPlPnU#h5%Be{s zNBw=|{We+bIc}}6RR6L2NXX<|vD^W=Nn?FC_9OxF2m>anRkQ_g;dvyI1Y)vp07pyM zZ1=4C+uCy=E<6lQO`Yn)R<3JkD}*yLfL!{%f#5v2)a}u$=`>}{D*&X;B$h2sKsyZ3zDIE8$8L!1F;3$Fdrm~ zy7PI%98q8j!kj5951~ouQpUY2C=N%ibu`Nh#*fMh)hhaIfR%W+Puda*s+((?LRBMH z;YD}(lvEt9!a#h1LOg+#O`EQ(Qq8`7w8*_iTEQyLL!v~SZ-u%nlD9XeGh%~Y`rCGD zH4rMuQ^AA_0Lo*08%y{U!P*pl+$xde93tfS$4>{I0mAodDV3uiIumrua_>JlCu))} z^fU{L+wDQ6kiO)?!$)=;E3&(4I|qNqc@BPdgD2@R&(8?qjBJk}nX+!y+Q) zr47ZAeu2u)U64K}>%cDri<;#_o!wf$Us`r~%UWcfxYA}4dN@+*q_u2c4pEZP{^RKq z0^uNpyQ?yR*|DduHnS;!uboh9iF<; zn;*0%3MCas$HeAm5t!39q$ob6kdfAC?Vof$e~f^rY3~C47&Ok!VgArBB>vW@a+)^L zQ;=1A`3)U}i(p@Ty|{fg!j}k$9rSuU&s*t>E<)_X^DBLE4qgRXTKK@&scoq)-bj|J zI_d2-1eJZ23H$#G1(+#Pl!J-=Xhyxu|t72eqm(IRehlVBehEAy&-wdkPa zOI&$$aNc;Hkm1mKrHiVjO8ng_yJ-fxDiUqz3d_I- z9GIIl(}g6SqF`~-Bc=AeHzF4-$%O0bDBMd*qzJiy6+Vcg7V+4&3fBnKImIlLn@_W$M0XCJt}qeSA&-$HTAXT8{|&2JyXcBtX*waLpVfEH(NT3JyA4F>u@P##+J zloUsx$mGkXKY;{S&*;6$q*v3$TqtA_x5t-xOlw^U6yIoC&q?gdEr}uXBF0kL!l;;{ zS{4Nt#q#9!=ZDj+G7*V&-%%VP#eAkEO8ehm%#AnaOlxm2RR~j7%6Hh+HVm~s{id}avBQ`3SJ_`} z%p@BquYHhkSJYsL8KYQdBm}}VOh~XT?*jvvP%r{GKiy}Tx2FAPf`CqqmXajkmlMvK zlSmj@KmFx%teRs_2`OSu_feC$n=mg_E$!ElLmig2>TET9XIf!Ps-=jR}( z+SO4TZ*x&%fLcF&$0#~#B2~o$0SIx=tU5H0LXa9z$}vn|YnEc#2%gwa+W`UlmV!^e zgM9J4c0-hIcSgxRUaj-3+b%DCafEygQ`W)tU6mvz1IFp7%(J(rTK*=5fYDa#E!z&@ zBWsARBj+SqiSM8sZILSK6gsZc<6btz8V{7MuRaYWgJEgB-fJ=l0gAGJY83ikf>_n1 zkZYt+h4Q$jH2iLe;bjJK@Q$+2pM+_L{p$6R_w|BtNTFNTH>azva29K?z77Te1EiCE zP;7;$s3=5KL*KrKHK?#Y?OywK$CHBLqQcV)&VD*3yz5_Oia}RnjL~!zo|xWwDWxbd zO*s$Wmi11yBczu^zz9Gw)|g}V?rLt|ep8QSQehf!ujq&ibJOoZIA(sOX@S#>3al0BNC&|lQ#;2r365MFYnvGtMDGq_x-6W zwFIw1li|vY!#hIs2q6VTPb5Tv933cU2FT|(yGGD6OZZ}Y3RRoPsIJsp;()Y>oxFZ* zaGYVDiB^3Ka$R=P_B1IvI~DWf6O-jBxLd&HvQ3Gdh=yN*^xUV7mq&coxrArQgOt9S zwi3hxOHjDPvYlPD7u^5FDtE}vXEWW?CL$rwzPC+xd#7;ikDl%kJho<;0oM zP?4;e47NCA%@d%ZN5IhF@*k31P~s*LL8uM5U+o{IijOO7y9HJjmHI_j_n8^GG!R2OL6Fau^InGr=zj319(08GZ<5W>>#vK_`a`Oftxm zq<`=%H;djQ5o?1f2^l)sAkJ+T0dCBO8GSz_W7Iuj5+|pzWP9T#bid_Xyad0RgrZXZjEPY4W1{&Y5@d`G0Sg9 z!GzI)v~5S#gIS}{tF0vK6=f09B9hW6oCGbgjL+kxF2c&$>>xfNbm2ICl^G%GX=ELY zB^#GI7Jrwf>7)%ui3waNn@H#b|D9}h0y=lj<9o5Dib3+G+e)f0$+p!jxm_jF1$e96 zUrlN5l*aKa8QfP~D2g1h`7&YlIeEy&+O`G~H7)EOq8MrOMt8!?v3!rX15qgdz?HUf z#0a8hjQap3m%4 z#7H~4jn_VWt_A;jG*Ikci=Nv)6Xilr_1{A8KlKj0eyNf}+`Z&hcp4syv&$FWGQ5LW zN`0!Qk|SCTfI5ziUYf%h0Ra972p74a_I5o%NIkLZ9U!FTC@e>kNDF?SBEt-PY6v9f z3RQgYJRZ(s1G_9kJ46S@y}Nh!%96qLiT5I@%3sO}!K=QeW8ZR!C3)uUN=&*nVF>q(CNBy;D#l|*u8fZhpV-er z;8nc8|lf}WJwdZynavj;cXXs31v+cdl^XVwJDKJV$$W|d;Ne8 z8R`b80@%kX6s{N$oTuu%J4!aGMCeBce+d0?SnK`$e((27TPwkdM;aJRs@!J?Xy?nm z*WIpX;zT+^m36W;64As-&1L7n{222^oZ0?hSt?kW6&2mW8VO~$f4aO{_5BJnTM(qh3Tdg zPWWn;kUadfp9XE%Q+JsXT7V;Z!C)mn3k4f&aAD+C=hw95} zINwB0PA;|q+$7d?BXEekInVobQHnxQdZje%#FHt#o)%5sV)NKJ&vo8!S2rGA>zb@= zRB$G0jh4NE&Y;V8?(BPLre$tW&?DaLn;?~Lw*rjJ^|TLJE&4U0Z?3X|?Q==7E=PN4&%0LPIJqss9&lw)Eagj8J z0{~oF=&$jYxK^aef{Q*e#5Xx>r8tyGymDcBkoqAv!k5^|F5sQ?JhgOfSIok z>}l~FvzM$*;;++fXYWJ%@cIk9F~-DXrb?=l0TYMU8DG%B%B#>#jMk$KmKB1X0F9}% z_R$Nz;S(usWo4zZvNEot8Q0;$saK94*9?yPT1#uP?TbyBoM<=$w6wI)uHFD^M!9!h zC-BBnBlYduwk10zG4e{v>isH~V}mtq#%^hhGE>B-AGk5Phov3k2%a@GD_oTMVG^fz1N;-F zopEGp_Rgh8VA8ocQ)25pOp1S5kzR^QK7u|QjUBB`8x!nvvk%>^!Y|6%b=|ssz0K_$ z+}vJMx5|85ZbzzU(kb2J2Ab5#CMLzNHlMGgYMV5q4v4$qkQjvVRS;eW`J*unX8?q+ zqJ8orjLVdY&Lkx0Fe9VJ>p}vClv1fQBKP83^^obyd6HR0*k2%zT|MALeEhDK^fuu; zX5L9td%}c2*BCKj868Awg7^lXEHhQAl66+`_nVrVanEB~M<4Ufos?_}V!DUjt-|b2 z`iVeKlI`xVVeVvYq#jbTZqH7TUC;(WVd9*OwGiEEA2F$OE!Fn&=;P|(14bLY*wVPiC)2jiuTY=mVxy}95q zGHEHXm7lqLROHSCi=;wg%X;Ii8j0kKI4g^(4xTi7LX9&yYJlb<2!Bq7oNG4o$W^hdRA7)Jb+mRM&6@s3UD-H zbIM*jIy)!ZpA!1^l9J5P_Vj`q)3xtB(%9;O(Y?xgOiYW5AZH5SdnbW7zOcJGA(k?TAQgb4LCxoIU=~Ts>sB zoSXv&5575SwzyOu&9brGW?5kY3|E9Zfn$efu;BVq3pMAzLJw08X?Yk(!9w>~swyM16q3#@z)ga2-uC`+-6jO;uf-spaN)hlM zIxURimoL{^bQzrd;lqOq&*bIjGmWoj_wLJo-8yLr9v65Ck+t|>wU|G2C$n~N^0!*C zLc8VVa!4?U+MLHZ@}yIz%7^sP4&c`(6&{U<=&PZ@B!W3R&Hi}&Sc8cojxJd~eQKwU zJgm5wXz?{J<4i7XtQM+P$&w1w9yeM`*NXT2IH{7Cpv`$@sdduqc;kQAT;vYC-rB1K zbi9!)A%ra#5RA?|JN-`B?3<=2`g-V$v^OVd} z=6RpD{_7pr`|kCA`~ALef5+a>u~vumxINE(|Ay;2&+|I3-@31?D6@UbzAa>AWZUIr zPoF0vTmPDjY#lTCTD+5Ydz(5L88eyO>62=X;X|z^n$#LiLSwalZ^~JpZQn>|PR_hB znEj4U+9{8&zE4yqR8C*IPD!(iYJ2y-kSFBPtY=C#oIXjR&=SqX^<|%7)m7ETnv|;e z567O7*DSfm3)$OKkc%8Vy<9jrr)*!5kUL_Uox(X&mtebx^1dg&9=KC;bOf zC&^cT;+K8?KlE|ic%7Y{M@B}(rv&!++7Euu_gm1-w(%;`*Uq--u~@%}jLcDd^`@2? zZES2>T3XKd?PKTTlXRZ!>#vRDWM`M#dCknM`K?9s$NN<3>gqi`J(7!KAD%sX=I!mx zd;Kw=UWGn?US3{KMtipH-6DPdJ-$?&in3X$T3P-@`eIJMe_Du9laWpGtv)YlT|z>F zzrVk|y}kTnp2lq3-j-}zx_$emhnr<~I{yB7KR@41Q}f5YUHiYM>J^$bq=X(Zj+Ah7 zZh3dT<~keY=js@lsmaNT@Z%HhE6Z8UF3Ea@x~zeDt-Wi=Zr(DGC2?Y`#{9+H=G9bG z(hAcZ6$Za2(}~^~;wxNa<>r?M?vmB-ye4|{c3)M48Cd2dMiw${`&*GyjS`6 z#3@C^DsJ7nb?>%2US1o--+%jN(e?3u-S|$)MSWA#gPfdkF)>to_WbzqLw0A_QInc? z*SoiD-O9kguzUCJm8DTqp=;`?yF0e;75JHyS}<@dh)&4zU3PXtd^{I7w^FD;Pl%rT z^W1^K!NSGg$be;6wCaVs>_R{vt2Ke@c~YclhKGdo_VvkYZ)m2knee&*nC26_) z*RNyli?hScSxS*&+2wwQmoL-uXpT)a=*gTuofm%Q;>A!8k5eit)xUenHBxmCQE%Z? zc&etXd}3;Od0~`ODbmitA;8;vejq9J?Af#7;o+vHrtxjYm5~YOOoB63VfC{-tSy4kAG!ra{M#*Jlsoy)w!5A*4l@*$Y`Dhob!vC1%^ z)U2pS4|*%3qJ*y-P7gJDK4?rg)+=zm$VO?ucmMwV>8ACG(b3US?(+#V*Ra|o9$?LF z6RV9?SeWe&Na)5Y`Sw&${>+(Qi*pl{_kYe$4SGIMjZ+kNo|L_C;d@ER%k=c1eS4{> zPLUsX9Ama0`1$iRIldym&gfW}xJA>^`={SrF59uuBhBE$#(rI?PfeL-3EkKSU%q^~ zprN4}CnzZR;m&qjJG&Q(%}q^x3uoCVpDS~5a?0du2FbEDXIXK2(u>~k6|u0e5aj1) z_B6VB6_=!GnqRy2seAmR;bFlJ?CkmZc|3xNlH{jb>o$?Iym|8`h*L>7-`W1gjklAn zD|3}3N~wMO_BpSp2QW!0k|(@+6)ek!S^oX|H-bTs`+6za)2BcB(DH5Dz8!BTOny(% zktcUroV`9;w1%u>lzerIFxyyLzjI%5HZ$X9VdLa99;i#`E(@rvsNnE4GB!T4XPb-5 zg0HXd^z?L9l`_Y~%1U9nv=0r|{^H_9r5!z%<%X>^dGw_6$A=Iv<}mph$(QOa)<#4` z(DLbqAGiJW)Hf?6Xe7Mg~CfHd^-MfGPz9vrrX+?tN zG!Knc^V@G2MQnFfRaJTUq<8P$B_!P6=QJ~-vu@qGjUFfUxET`Pym?3=Kw5S^bYNj- zl!RD;Yh7G&WzQNLbK36?D9g3(l)8NR@`Vc*^z}Pha~)b+TNCWBsHv%uvxq0}J8NQY zF6J;29u%Zn&oneNiSwcF&$Y9r99SH)j|x?A<^-@s}@Wb#*1Uxy>f~ zs`sDqogMqIlYySzeYW#1HkYxnvFZ`F1*wxKJA2Nks@9g4mVUUqlTSBKQ%`SYN?;M& z6dQkdbhOam!=26#caMaAt*WYuY#X&dx!vd9y*-ldt|7cvuJp9DX!ln#cu75vjAV36 zjF0c@AYRWB66U@MwTDZR+?N;U@Y$XZ9zLYpwCQf7<;k1+#|4S-& zzFnn~`chure=%Zscv$NBgYuqfMr~EqiP`aPENa!*bDuwduCA_ja`Jur_;GZ!p_5a# zT{q%h=(*UG6ke8}xDJahR$@5j=&@snV&}`ukL6}$sIdlC@oj#2>bfw!)ID$SvsnpG z!@}a?;%eh~Xp)-aUcY(6>RI>wJEc^tQdEJ{#IOA_{*&h^5V8H~g#723AG~!KZF}+J zMaWhusZYqTLY6JF7>~tnrj@<}9K@hJMNiI!FB2JXAGcq#L*49>x z5V7yAU`Tw4=Q?oUb6Z>F)2IVj(c%#Tf`U_+!pZ)+1XVKxYH4k97NsZ&KR>^hE{6^s zI!>>MPmq`QnN+~aK1Z&iq0xIbFeHT2Q#;2lLHd$OL6 zj@Kr&u~_)ER{8V{3^OCGNpW#AMVpu?q%txxia&fPocl$mq0vCXK>fiv9+{a_7{3L| z_V@2Qx=MV4I25|Z9Ygr^V!w!)AW@%FQp(E8TIurPyR&WY8w@&@wpHUBuK{}p2fae~ zrP~{}np;@NpFK-SMb%IH$nycBTgk_dv-9&bG&H7WW=s;Unkp)RBUc1Maa#_ywnqd7 zbzbWi#jC_HO1M4=4NZuSw)yon)G|Hd@Z~!N1iN|6&@B_{)ZC~lXP zm9@TpJyg)_J1#){ihl7z4M{XSTw6jE$zLd9b-(D$yY=WG?#r31Hv8T6J6w&qg@#=LWZTSlUq(x+Y6;)N+&kxy6OiX?T zSa5P-0Y4Emdwl24o$zq_uy50olX-Ui=amXe0SNQ+^N-W}-@bi2FK_Wj+GULt?Z%cC z9`Rooh`_)=ARfec+yMTzsHg}C7CAX4Kw_V`vt3poV8v0xkN5ojcQ`k1?r(edPIy3a z&+Fm!Wba+>vlI;&tU_-x56S|T|6wREc<)#&txw6HtbLh(&r-zJ)lYpN#u+HPywJWf z(AUQw>gGHrbZ<-X)2I7%bXu1y{?LVv;T+P+GPYb*NT5eNGyO61JuE+$mlh5lJowL_ z($LcKDk(|6Uc&A0y)9CvvGLyCTmE7cjsa6k+{bwiu3P=Wzt12%`sj+=ko0fZ*-bjo z@V`dbp1z)~OZ>&n!u`~qr&$B9uQ<4!ryw*Gx?6>+13x z#|`_cp8xeI@56+C6b3{W&>`6jjh@zLj^^;eZB09{u6~nMi9R3sfhQE?t;I|miFfka z|0SzxCvDrL~CtnR;NJq}ep zJtlg3*I!@vas>5vb`m)sxl8ExpOuieY3z>mvyO?m{{H@*jA9QgeSLfo)CS}Qf3&r= zsbcXw3<`2tci?Q}n=A5|rbuy@EnBt(2M0TfG3rF-e{FAXFE3A$ziexp?&GsH>>Do+ zkMF&Ents z^Xn!jCy$x`=olPKijJnFpr~qVW2B~jk(_*pkFWA-x{y`dx$Qxb0+-I8?;09<1?u?x z`7T^lQzMnRFgN!t{P+<8f%95gTBlC!=jVTLiIk~DdEaPZdN}Dq@>7Jp(9nxgQc?;E z3QFncV`5?eX3Bi`*1kmQPRq|<>L~Jvjg7@Xv9PcpZg^5CD17_+6@j@DixvUV^X}c+ z27x`>zB8Tir=JV?+>&F@4M?}Lyab+_k(CA7Y7FL!zv5m@T3tJN4ayWds88M5Ha<1w z7Z4C4%cdre)NE`VheeT;lyvv5%=PQnK|BDpl$9ym)QyZ@WM|L$(Ft8h)djC}o1g5z zT;~4>DU5?-pugWfTN<%0piEUmqwvP?C4AJGGk5IbzkdBXFff3B!Tw6h%H%_0b;!M> z0%bq;*d(Z`tJmMB;{4UyTUaxJe?ec)FNjb`Ig05zIXRs=^#u;C5+0f9}&kt}iP9f|@ zf6dFt-_-X{ds56ZFxa0HoQ{xX8=$;p3W_p|Tq+cce0 z0bXH)aQ>Q$N^zAOrpJb!_7A6!>VtC-dfs2}&;lkH%kJQxGUY4C3$sNtf zH{sirqF1=w9~YIFkYFELym55nmf|%Z!Q#JvpT^C2J^;HO8ZwuN(o<8TW@1WR+{75b zN#o-s#bUpCY2JsTtGAbvf*j-qYnN9yZ`NiJkTWzajQhX=l{kbJ!?Y&{v&dPncJa7% zX>Z?7$H)ZecJG1&6EB9vuGeiN^$Bm$)6@Gih~l!h?o0CuVaGsTD5T8I&0XEx$^w{1 zfBu{VJ~cHl8E(y;nX)9*CH`xIM~@=0Zf6jg1k}a$Bi4NWyuO)P5;n|CJ89*&dO<+} zAP&F-z#4GFUXRT!0&F8*mXwqLsY2-h$OX%}>**=GlMZ;<{)C2uCk3>T=gN)%;=aDyl$4Zs zLtGYT#|zq>5&I_(dlXUll!*HorD=LT$jKo{D}f*_afRmtfI9@HSMnK=x2yO#6UfzK za&mHz(4f064`E>A|5gypQEi!Z=aZ&s^mb- zHH8hZWJoITdUL+ZOc@jD9Qnme(|TxI5M(&dJvlM8gYMW6-wIVy967`U2Ed#Yo!lqq zI9QA-BgL;?y$bZOapOj-4wL6Q5wi8iCnt>rLgnP-HgDdHZM1FUhvMR{U*EzulFpEv z8@!;sgoHE{xGkJNe_kyw$DXR~x6Kb@8IxbfYmS*b{z(V%*NW&7~`n2 zwLaMO^zYwWcJ53~PJXEylB$`;%E!mY#U;y3p?2Xyq=@}lXZAfNh{-YmjQMU0Hy{&1 z5A!KGuc{iv*wNj+A2K5-XiZHGf*=+WfiOvK4Kmv{?mv3euDjH)PM)Nvr-%3hq~yD`h~3jhSGck)nrSlOwUt(4 zWpU!cg9ixEOFimk{tSbCePE#vf`YVwT|j_N7Zz>Zyjf0BvEu7jZM>D$?%sUGxWCZ1 zV`zwn@;)moD~Jl@&4T55Gbvf96k#rgvs<4Ch;(4kOF}k0bnF%54?%hq9 zwI9qh3tXK*3r?Ikartr#RMbnCp62DbX6?tdvV1|OzHw7*@q!YJ{Q}`++qP}k&Dh-9 z=~op-!`1`i@LbA}Wur_;O47P?=~qurbyC3e!*hm)hRVuS!3R|1{rZu4^+x}U&`!g& zA78!BpU1Ue~5yBO_pa25ic&v9cbBozz(?y%*=Imj77WyX#heO z*uyiLE6kp18X9za_5?qET$8l%eEEBj*f{wytZsjy+*JvQw`z#&0Dc5|hlZGX<}$#})sI2Vd+i~qM(g0UR?m{$j65MoL@ zrf7M7Fg0!UrKaKLwuDFp#6ZrXR{hB^O_S#_esk+q5k?T)8gZV`Y9k}vr-v>|$-29{ zpFCLv6nu9(-Q%dJLc9JN$X@5m*Gst0T7L;XfG~w5c%5$-ISZ0AXc(9gFsGi|RJ}vH zTf-HWZH`IG6jA}NUcJg0k|T;NWF#{XC@_6hN5@$xnHcvhtM-xZ?o;*=kmUh#>(a8a zgjkG*n=%Qh9T5}Xh~+*A_LY^90a1uv#O@kYl~s)y(E}w2aniE3o*oGxV3N}dcnNu^ zF1JXRl|ssWX{sU9tl=&GkdAJ&H8-SbX>HqH*HiZbK0cF~ogi-LW?_iN(jAJev&8@S zFI7~=mdf<`FIeBHY_eZXRH?kYi_tn;U-oxMpme1r!Z1W+?+8{PWi@WIw2Zc8&F~K_vP4 z$8hPTOP9bpAwY+WL_qsTiJ`9+D-O7nnuew=-^Br9>htH%Ydjo=n|ANo#X@->$j4!% zWp2ETNp%?6kWfAq6(M6C4=7vcyt@iwueuZX?WSaQbNl8Kh59oNYgf4QSm?QCUEQ6X z=ds{k&;iO}7U$1zf18yxQ&(b`hM{je;eGzCc_SqQLq0+%QVlyhJ7YitCb(9gL?ZF= zrSkeg%H`$dg$DKdH9sq>VQY>()|=-81f8Ehjhue~9bl(J=LN)t@>;MkB1+>^&#s1K zg0c;s7gZbZq>Aow$YrPP59#Dgehoc>nh)@0azX+jP|!KK62pIUX5E(JTg9!dI`Z<| z5)zT%Rwi-^3Oy5ZPy!%Jf#D$81JfrbC)bgQi|38gyu3WU zaR|9x^}~xe-^anh!lI&36#!g`t1>c_hp{J)7*_y>fs=l(sv_UEZK$uW?|?c~cDIFT z^`r~mo*e%0^(zkx%X46?xQhu;>u%k;b-C2Hzb5j@6EHCMv5u2aNl^$vDnM06>K^d) z)vK{_amJS~cRv+0gK(5!hTGiF%8E>)$7>lA9ZhrSQigufZ7{u&#&j7KmGM=`h;KmD zKP@eNTvQZswzQ-KYk%o?IiK77%<7ulv;O~$)B|DSe4H3#D$0D%pBv1Mb-K)q^w?x0 zp99z13Ww!>1Vk>{mB1IiT?wfqq6dU3g_q#7zY)U z`_Ea26W?_reKj^VS_rTPLI%E|pfF7OOhrsnhdAI58HBJ^A|iT0T^$j9Vr~)H7*x4O za?DW-k(zo-f;{$MU-{DFBH&73pbAnOK$V_9Y4H0YAP;Q6fx3zcMIM^kp2yfDfXDU_ z^b|;UX3qWtEFe!85-whS3>Wq?Xkza}h5%gc>gp1v_lH6+FJF!EMd3kv$b3ws&1qF?Z;|wVmcVBdDw<0p|{F5U6dnH|wXU>=B)YaExcc~siofh>P zPS2tC!WGo0bfTxIJ>8GXNk7|%nJ3^V)0g7n=n!G3>R>TCQYw4jXubj=EG<1V&(6~N zM@m4obkjZne~uvNkiicgbc~Kx>htsP@L0CxnT#1v#yRN3$HzN5IYAfaV`uL{p&5Cm zCLc%*OKkG#QIs#waj53Z5A1hybEEN*t~_92Y01mQ^*Sw$#nX46p!b&t-`ZR&r@DosmG%|=0f5T)4&5%zpa-wfP3SXvwK1B4bRB;X<>2^n%o zE4Vre6$k`2gbPegp3{WxWj%?F9=rDK%K_#9HV+97Mo@zSh#GEsGoelb*RoNHyG);B zrXXLx*7U9~%2Uwfe$Or9)-ikxqBlIfyryhwr>Aes{|3|Dvi^2r;=x329v*YZR(E$W zZ@nsW4u)=J&OZ=))AZrxgrD96L2{aXK)pWipmDA(VKm8<&GSV3`c^_sht zy-dQ^`pDEGA|jp?M~U(2vp8?e!;Nk+@`RDiai4qH5@0q7kwif?gP2vW!(A97IkmgZ^ z;SB*(lhZq|r#IT&jT90c8(Z2tfi%&V($!@MY5?U2;xITtUbpd|bvmo%61Twsibh04 zYt{2pl~`^QzrLZi1xZL%N9(QmeSiP9bYrEHCvSl*29$vy#N@cTx+0(hm?M*iJ$fWP zdI1vhP*+#+)pW#fBr%liY3b+|c$o-njc8{z95Hfg7Hp~a*RQL_#ttS>#IQ)P5EhWS zHnTviK>f)#AYf*Cx&Vt0B0LK1gycjnCodl+Vm|;#VrOS}W3(+FBqvao4VvQyNfcbM z;aze>r&&BTyd-zxtNM-%oe~x{U@F$QK0j%~&7D*!v0x6b0u{%(A6ZsR^}N(uq*-?% zyC`C(a4LpBiHcGp|6EzAp{g2_cv6Zyq#T7545eBKgkJUSl>e-k<+}cnk#82JI$WY4 zc;O#uH_y7W7@LKWlG3KHibd+4EE}t*Fa7a{jK^($$|kC?QTpvUeA|*qz~~bcxBe8~ zkgDg`Fw9nuf8SuTdS=MKhbZ)p@~jS&{(GmmX2p9YhPZL7!llO)0tUsNV7J)KU!x>f zhFh;=a@t)dz9s3_PY#4Eve##txiIlVE`%c{Bjad)DfA>6nKHx?Y`=yAdkc$0OUb{& zkbY2H&$VhVKv)$O6-}%lIiYG)4a^=A6g2VkGZo+wX=zXoCGzJksoL3;G&IOpu}Mj} zru7FUB_;dK{z;ieRgaZ58XOsV6ByIe<7R4TXfxU-E=BHBg0f_NeYFnq zhT49g5}1f~wJu|4&(AyOB$czK{|OHIq3HfXx{x-b}^eEYeBvc#*{$Q z{PKwV!-o&h6XSWGD+^mRWuR=2NVPS!RCuNAJQC_~E(5O+-8U;mp z^svbL^y*~gJH~Bz9uc7febMcbib~Pd^vx^?3p_M~L|$+~dd8;l^V`nyv9vT682I(; z2Lm~-b8j?xB89KB)*}Sg!_8vujD8vzf2h35kl)sPHleE14xM@cISCA4}N1ZdTi zQh+7LP)mk|Cw=rkR?@e#u>D@AdbR)7mPd|EApRof*Ss{L&F5KLmkX#5 zNm{iGjt{%_Qse<;F{~(<;9V#%x`pmKK$G}%wUe{^KI==b#-^KX`L(yJnwsXZFGa9( z;1fep?_przg=x^Zbrh$m0yIf0Mdb{rzao`cud*HkMt;2N8UgQjggA#vbp)t z$cO}dO!HpD<<1w^$I~KjL1UjRtS&cOD<~ucNp}cCgQ){5KpA}d_U-t2CzHew`%tr1 zAUUx;JMw1~X&;04~*b2~K!DZ_bU@+3;;pO9t`@#b5w|DQ}M0qW(+!rr?3NjXb`{p-KYmnY}<;oR1 z7Za0y-@Qi=pBHQ{=)fvq+*$0U&FcWi5E4wqr%&%}dn=&k>h9mW8g}|xb9u?1JGe?n z3JW_nr0AfKM8Bi#^XG(@FRzSum4NTod^i)psK8KF&%p8#qAnM8q$EjV|NalPwL#@Q zjFRqoqgklGbGd!h=l^JUU1@*6^i3F>5*~vs!_i13H9gwC0%eQ08tD4?l`p|JZ{7sU zmD|++hJ&E-*ywn+$@~{_j|xl$R=WQRhokupB3G!FAA%DEeLjaFkd+;qnK9>d9>`s5;W%dWaEYV`EKC zmrV5vV1D}9(}T3WdDX84FP&WK`u&Fv9vtYaj)5GN0wbh?!j&{l=wvnP0B>+Ld>DF= zKtn_K($kAswTbmB_0PwLNZ-uiI&>&P%;}AfkG!Vl6DXedPs2|Yo3lKXN?HOcfKpQk zT>zFx>!BZM2vO5EwT~au+&Td`z6w^EDU@9v|82)M+&K`lZbww5q;EQ8 zs853V(9YWWfh-&57Nyzdtq|l0&jU~+mXev-AQr{pP}0F!SU^#_du{ZY63`4}XXnm< zhBmW*i<@hF$mB%fmjvz&pa(Gdv@6l;+f~AEOA(!#x-wBI$)}TJ2Ys5!b*u>f04FhB zK8Ho9i5yCi=NME=no$Kxc&Y3n#{t<7>IkI3y3$Dq9crSPtSaznqPQCy`^)7uE1XXN ztY-REVf1-3$e9StVNajF5Mui$+}!&82>+*lg`01;wr{qpx2Uh(dJe`f;zbyqr2?=G zALZ7zuS&*b@563ckw2FKEU9DVUA<^b7uII+^UBKn{QP}?A*c?EqF|NP-~Lz3&;=`d zwv_?|EQtQ8r|+?TJ$%|>N3!e0;a;nOd=j)OsEi1hHGZJ;z*-n+WXM#vUaT*B`>BS4 zJS~WqklA3RD*$DG`LYKKl|wQ7$M7d;K1g~sHRrL+d2{#C(9&+&xKTIvh5}?OY+*#@ zntZr|px$qB+sDLI2+B3Drl<(P&`;#CEE_D$tyxxj(BuKpQG`ISOGp9E0Gxs>#UFYO zGY(1zvRN3YxBBEA;x~mn*KLTZ1T7+sb={2_I3vzuw;>3KF$SdUcKg?SVK)WESgiXh|F}6r z_PXTk^@%r)Q+4ky~hKX&pob015c{t-n4wtkVR{fW!q?1HleMf11q$*j}NBI#>NJbxG#xy|9(iWRxR(+oTnfI^g$C~620*%FAo+&6(yzA z@&m2*Z`4E2Fn^7_aYFYTD;?~EjR;e^tkb3VHQ?a1TNqm4|@0z7#P!3 z>POc*G(=BDWedR(5Gzpw!^goeiHD62hx9Al?k?0mK;Sz<{oY#Km>sy?n%Y zfsL}-YL1+xE=`sVE{1>HQ{a7?b>2pVx*pGe#&^%jtetxWjPUhpw5wZ_g4%PPH@HA@ z@^Fy{oVbXN2q>-+g;0et3v)Zg7?pTvwt7hoQ2qrnl$a^@?A`0->8XwCV9zW(rvgGk z8t2bPD-I70!HTVJxl0P>IhgI@FQYsNp>!&87zLaSYftLxM#5`?d@R@o!11M)SY+;= zxZ=35F#O&4D+@S!;5ddP&g_X%fso|SB-!@)b3ZEEbu~3j03d^{t4@t%Xte1&&0ObjRk+fsDtTC$A0MOc^0(LB^MQK8BQmR23N+sm(issNz;Q z1%TUsd7}pljgJdc>Wddf`owGOGiTJEeft=Nt(nEdTw$s~>=>j>*5aY@flf&N-2WmE zflU5g(LP>2z8v+-er4pexSSW|O{hxNH8iMp{|PJ|+dEHm_xFD`62N-EVpv>ST5Yc= zfz-c!*>`y|Wh;?7`BIUqU%q$&^G0+*fo@L2$B!@K>8d^S3(p_d9n8gNHA zg@9=t*TGZA!de&Dj~zRPn(<_fAZlM{&YY=fzAQU>yjmKTWK{Ci*PzuRU6aT8w%I>% zKzpBmRbYP?H+*jI6YA(;*4ORWYy0bK;G;*Vp#VVva-;Eu zeCyW1p4h>L)I!JcuF=93Am}Mn=!nV_w!bIEeO zY)tF(Q+FZ2N2B0iVFAS2S}WtRm6rEK$mdXggS9NDxv1f+N&uJ2b3Dw?53++HwMFAa zz7^$^0NXY(2@MI6NtFP1{|)8@Gz<|1p&NP&CMl8o-yovY@xR1F?*B|Y zwA;Mq#GlghWMk{HBH4V2o-60nh`rX-cL=icZhSq{FJ8l5Fg12c1+O zW(d~ge}+6K|EI#B3gi5_Czk&CGbmF3ef#4mJi>q3AI(~G>|t1+8Ep@F^e8hUqXnjK zsPVZBdnqX)szA?x)Khas;{%Ee@87=%xB;r#uxS&YUV(NF!Fgc5eXdmg<;(Y17gbTv zM=9Q-`K{NTJ7;&cWtwT6KJ6*Xh5!iU+Do`^GP5!>A!qU&KTfQFF~(5>(E#6u&B2X~ z*Yff|XpEdgZvg}$AQt3RWOdll!IWD5KUdcLZ-zwn$(fn1e<&$asL6A6i<%KXjtA5WdtI%3km#L{%NB`=?nCJ_YB&e3a{~?z$5w zL31JD0kzfHl>q|&2QJ6^j~?xI%Z`eQI>F2@Ah2cg=4_;x@^P!yoGX@=DKB1}j)2&9 zzr--71q~pN0t27>6A8a^%vr$cx6!Q=56~)z@$T=J^F!Z5%tCB=f6!o8SQ=)91JrQUJ`RZsbJ+mc^-!0(Z7{D?R`oN ztNA!Lv(z1iZ%so(NI>ABJJ;5&KDu2X6fkDlZI(VH_Q5cX@OjbEq4CS^FQ^DV#x=C1 zgr2(!Wm8J(c448UM-f)gJEw`*qNwVqHv8vjiRkIcgshLU9=ynaKk_s1k5KR4U2Rqa zJBdK(x&DE{%=;x>P&25c(3mTI<`Qa>EFa6tWOQ}imlx-t9Kg~A zSP8w_#m{XHY=!7)U4gI*MtO*bXL4qS1O#my<@SBJ1EokPDU|o&VCNvpn`<&pm7t>gv1echk_k#ZaMGiySow$-~OR0-Z8z zSWc^}!4o|22hnO8x_%Rea7>@CmrS2(n)z#L*(4CKVhkw#qU>jMxb}b%LL1DZ7aTYezQw0QSK7YRN?9u3ko4kSzN}Usfl2krxmcL}@((YWiLKTm-!FKdw6Ym%GqbdW1;GN%V=5}o z>ChAEDfJwpIqZLuzc#L;S{B2`c~&_x?Xb3rZ@Eh}!6CIdF^=|$z^cKEjA#p4wWM)7 z#1&4g(uJEs>)QX=z}BxlN&2hSXtfo!&_IyZTetqjd$GQM2*!V*v;FV*u)vw0NVw%B zC7Fc~HL#5ykmeT)PeVkpx3yi+W6d+iq$4CD!6Rg7^JbxkpxFR24%i>e?&=Vc4j*nr zmBVfn4l7i-;da8F?&|K&)fP4RYtq4lu z;!EI#HGU9vL6rgKNls2+w@NxZG!U0k_ySrTnA~R#&Ye34&oD|tU{^jq7w#cq6vo|t@Pdwxj>x^qZVD;L#b{}NbEUk1Xg-uhS0t>eKs0DUL)sGrE&?P*9NQ%Y znJ88Unr#rcO>L+!Z9LWEWYSO;5Nq4tUB8T8VMr~o z^-G`~1O&&>Fgh|)H$)31(BF$(0bv|mA(7r>(^H)DX=b!!Tsavx>#;2oLi69 z9XdL2OH)hB+lS#pi4gEOWZ#s4b zUJeK^&(&6I^RixF{!L-NZsbL<^6I05?FBwYG+a%oLmvs93>Xin@|g*s)<$d-IKdqrj(fEWb7*o;5@@i*9H@Ij$i^`edDlBVX-qemTGTqIp*Ux&O# zqg;;mzt@iJG(zP2l!-|u^Vsy?(?X(JtFV~`tHCf0NIP5vb>6?hD<*O0I+wR~y$C!` zaJeJE)H#B>A5_A0^%o&oAG!KfGxtU^${(W!qb=F#us>jR?u4%gTn*Sa&$d@_G-UN| z-w*DsY2W-l>i=1n$EA6nlmD1#G>py(R5D@wc_taa=J{HaXTFDx1sq-xp&0uSPPuvB zn%c9uaI^kRJX&FLabVO_cVc#3G-6q^cJrH!M!V#%sJ!O!KjU@w`RUU#+%(eEhu#&e zVgJf?#ak`nEi>=Ub!T;|6R4H9Msra==dp-h`; zX!Gs;8anYaNC_>GtnidVud^zcyLxv;Z?VkkuB?($;be_Gl0YY#9mL@+$HydyG=mRI zE{_MmR_T|&^nq#l0gR`RW=ZaiP`R)$Rj3(Ai{oj#-)J8K^rzbmZL!NqaIf;X9j)Q$sdx->2=|{}L&R;OwZVGDufrOCb>g zjUw%iRfvv?&9vC6kFHm(cbjRQ8Pr>G1{8$-Wg7L>2*50q0Tbz99D8Ninxmm(Uypo1 zn#pa4C2{@>cj~Ko)tuC8Fb1uRGp&r{jl~{5(na8Y909XD-%z+bc2{z7@i7ejL(N&E zH`lBy^=HsRuYjiJ9+F7OcA=Ir9NjSYUCXK!?z(k5#rV-sf_e?f8j4U2zzSYm-oQ>5 zl$B9QpXTx=lx5$&6X{V)=GD>CSoeD*Tpf|I3}={!Te2szdm~+jGaCw~o6JbFADHlz z_KjCU&?I!wI~qEi7(4qFR0yEDK1Ed&{sat}%exhNRID{Q$qR1~ErxJzg9w+^yhN(O z2Rp;okBMys$wWtAX{ltY!G}9o=l%6b4JL6B(`_!J`4Fh@-(P8O&w@OMGhAAcq4BF5 zpV>nu2OId7)!u)27#y5|B?EX7Wmh9dt8HB*!{nBMlSWRtAKf$Y^+=^F&Q&O!uTQ7Wz%k~sDZzm)3{9sEie$Ah+M{g%t2loVhF~8Fe76g6SLB6|41J@yzI!UGL->RXX2}>IRFJUV0EX2nWPAjt z5LgeVFU>jwyvd#0wq#aMM&|0Vxp*ZoIQVCrA^PT(wU_Xq^3R`5pvrk{+`e%qV;)lfEH8nJj$TtHN(Vw#?&XKF=po%pWZLw60ndAZ zT;5k@fKzV-omlZG?PP*(USo)6ZF8aRE6X!!Mc7-g%Mopny4VyTYrF-sT|Z{AE;nu8 zmqA)thV;W3=|~)$14`?wfE8j<_3R|J-XYi{k$nUkwA0a-vQGk2e)IArDMTzkh9MmH zp$7vgz+-(8v_-7zZ=pweAIkIIkG_U*f;wA8Wu;`d?-5-@BalB5_8lDd_oA->IKr~C z009tHHN=)Ih!ALGES32Arkoc_`=vKVpCyHfIfK*>U=AlwW(1ziU|!yW@8+fIl()3j z@gI^SpB6~XBA8{E)(?E7QbMc!57-=HxGojCyCIjNuyL8r4%-0F14oYvHDC}rHUuwt zs8GZE4I8g{Q^tW~yW821?QX`>y_p(+#$#-F3=Yq<_ zobl@l%Y?v=UJLJNuwKXQrKOiW^n_uC`i&80wD}0Y{_tSp)DT%mm;uhGK?x0w3HS5C ztMh(;;XZQYNNr6GiVEXH>6N8fVx68;iERw}xNtl{a;aYlAtwbv2+<1g_qW%kr{XR* zihGCJ@v8&MFQC7h8cZlL3#4stPSvfEHJ`x9aUzO^~^Ml|TUSPa>t z3UHYZPrY&5o~lC93XVy#`0?5R=1#wTf;osfJC1*U8KUbvlHFU{u8WQ&EMK#>JSS>t ztPtq>Vdz~%B_(OpXia=(nc`8?y1o}diq12w4j2Up)


6dF)8K)a}=p-HHZ3h#4S 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105215644951.png b/设计文档.assets/image-20250105215644951.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fcc78961e5f744d843982d909a14900f21d19f GIT binary patch literal 31635 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105215719856.png b/设计文档.assets/image-20250105215719856.png new file mode 100644 index 0000000000000000000000000000000000000000..b5810cf25ef94ebf54a160f66241204fa1034584 GIT binary patch literal 32808 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 mNdrC$)u_q9f6ITbaJ)Yx7}$JEswd z9hLib!v8Rs8GS_{P9mi5Oya$+>$ZDs&SV`3J4>&@seXg@eKFTqqH2eeArp1& z?xZUL0)a**{Ar9|(qz9@UA>mh;u

6Bk4u>dUT&5nJz-SvXxqzQ5xT1?3mH>q_dV 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 V&$O!P)xm5du1G7Qu$OM$|9{#B*XjTO literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105220322830.png b/设计文档.assets/image-20250105220322830.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf0e3774600ab60626cc99360ee5db47b087944 GIT binary patch literal 9246 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 *eAljB?P+TGva&KL=j`n4 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/later_delete.png b/设计文档.assets/later_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7c7190107f4dbedf6cc006322b6780d66bac72 GIT binary patch literal 47379 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ع{j20 zXJ7!xm`IC%&@BBO&SP^m7t7f>h1imTL5B9AjUtq)1i#`zJA&f z^iUJ>1S|4FPWsXw5O1l+MDH9^I#DoRvcop=fRgF2d;;p%A3R$~8-8}O3+)DqmQ(38 z?t8W^pAb7Y*u>fnt{Q8|N6=0y^@l|OUl9M%KGi!96ZOTjX*G93v(P+Fl;*LuBL_}Y zN{&`>`))M!tMDivv7PMC7*U*=O@R_SO;I%jAm;X6E`K zrZi&{ljVkIJr)DDFK+F!L&!zGryFrC0+s#K5!i~}nVXvaJTJT=+bs^vZX{)5=ZuOI z0)H7Kj@Ths#<_Vl>nm@833Vv^?yLcSWHMyL>40=XZu9@-q@Oqsx~Hqzt{CM5o3jD^ zzq27-Z3Zg37lMAI4med^#f621=HE}>*F+&e3o-5qtSS!}4~O#v!a|pO#G3Q>)c}4S Wv6n|e1?6erPv?|@Mjp=U*8c+|Wdx%D literal 0 HcmV?d00001 diff --git a/设计文档.assets/prefetch.svg b/设计文档.assets/prefetch.svg new file mode 100644 index 0000000..beff6fc --- /dev/null +++ b/设计文档.assets/prefetch.svg @@ -0,0 +1,5442 @@ + + + + + + + + + + + + + + +Flame Graph + +Reset Zoom +Search +ic + + + +std::__invoke_impl<void, leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (138,422,696,426 samples, 18.07%) +std::__invoke_impl<void, lev.. + + +schedule (12,572,290,176 samples, 1.64%) + + + +link_path_walk (842,181,447 samples, 0.11%) + + + +sys_openat (71,796,365,064 samples, 9.37%) +sys_openat + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (1,237,362,407 samples, 0.16%) + + + +do_writev (1,065,715,939 samples, 0.14%) + + + +leveldb::Slice::Slice (77,513,588 samples, 0.01%) + + + +vfs_read (639,247,449 samples, 0.08%) + + + +smp_apic_timer_interrupt (521,802,005 samples, 0.07%) + + + +leveldb::DBImpl::DoCompactionWork (502,229,687 samples, 0.07%) + + + +_raw_spin_lock_irq (2,005,543,390 samples, 0.26%) + + + +leveldb::Block::Iter::Next (116,837,971 samples, 0.02%) + + + +leveldb::ParseInternalKey (4,448,305,516 samples, 0.58%) + + + +update_cfs_group (472,770,811 samples, 0.06%) + + + +native_queued_spin_lock_slowpath (1,330,014,580 samples, 0.17%) + + + +exit_to_usermode_loop (14,633,020,147 samples, 1.91%) +e.. + + +irq_exit (632,809,847 samples, 0.08%) + + + +leveldb::LookupKey::memtable_key (577,477,996 samples, 0.08%) + + + +error_entry (1,859,919,550 samples, 0.24%) + + + +update_cfs_group (1,347,229,546 samples, 0.18%) + + + +std::__invoke_impl<void, leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadForward (93,253,103,040 samples, 12.17%) +std::__invoke_impl.. + + +__mod_node_page_state (550,345,788 samples, 0.07%) + + + +leveldb::InternalKeyComparator::Compare (359,189,528 samples, 0.05%) + + + +radix_tree_lookup_slot (2,121,059,150 samples, 0.28%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +__rwsem_mark_wake (3,069,712,090 samples, 0.40%) + + + +leveldb::Block::Iter::ParseNextKey (105,608,671 samples, 0.01%) + + + +leveldb::IteratorWrapper::Valid (84,973,620 samples, 0.01%) + + + +do_syscall_64 (591,615,404 samples, 0.08%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +wake_up_q (1,350,251,990 samples, 0.18%) + + + +leveldb::Block::Iter::NextEntryOffset (3,723,167,653 samples, 0.49%) + + + +leveldb::Version::Unref (171,058,153 samples, 0.02%) + + + +std::basic_ios<char, std::char_traits<char> >::good (513,487,030 samples, 0.07%) + + + +leveldb::DecodeFixed32 (514,966,716 samples, 0.07%) + + + +leveldb::Benchmark::ReadReverse (5,909,065,841 samples, 0.77%) + + + +sys_read (93,669,937 samples, 0.01%) + + + +leveldb::IteratorWrapper::Next (748,863,456 samples, 0.10%) + + + +leveldb::ExtractUserKey (3,503,510,018 samples, 0.46%) + + + +update_load_avg (617,833,525 samples, 0.08%) + + + +leveldb::IteratorWrapper::Prev (60,308,798,556 samples, 7.87%) +leveldb::It.. + + +std::ios_base::ios_base (506,612,576 samples, 0.07%) + + + +std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (138,422,696,426 samples, 18.07%) +std::thread::_Invoker<std::t.. + + +__GI___unlink (171,058,153 samples, 0.02%) + + + +leveldb::Slice::Slice (376,119,562 samples, 0.05%) + + + +std::thread::_State_impl<std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (138,422,696,426 samples, 18.07%) +std::thread::_State_impl<std.. + + +new_sync_write (1,025,517,495 samples, 0.13%) + + + +down_write_killable (22,719,237,758 samples, 2.97%) +do.. + + +__dynamic_cast (73,546,435 samples, 0.01%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (19,455,906,185 samples, 2.54%) +le.. + + +do_syscall_64 (623,650,923 samples, 0.08%) + + + +leveldb::ParsedInternalKey::ParsedInternalKey (72,587,241 samples, 0.01%) + + + +__softirqentry_text_start (528,405,201 samples, 0.07%) + + + +leveldb::Slice::compare (660,119,551 samples, 0.09%) + + + +inode_permission (757,084,509 samples, 0.10%) + + + +page_counter_uncharge (521,802,005 samples, 0.07%) + + + +touch_atime (860,170,207 samples, 0.11%) + + + +futex_wait_setup (4,861,851,501 samples, 0.63%) + + + +entry_SYSCALL_64_after_hwframe (87,457,053 samples, 0.01%) + + + +__fsnotify_parent (52,201,760,057 samples, 6.81%) +__fsnotif.. + + +mutex_lock (240,678,280 samples, 0.03%) + + + +__inode_permission (637,157,751 samples, 0.08%) + + + +leveldb::Block::Iter::NextEntryOffset (4,843,114,107 samples, 0.63%) + + + +leveldb::GetLengthPrefixedSlice (543,862,875 samples, 0.07%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (149,240,336 samples, 0.02%) + + + +native_irq_return_iret (173,018,268 samples, 0.02%) + + + +leveldb::GetLengthPrefixedSlice (486,199,798 samples, 0.06%) + + + +ext4_evict_inode (171,058,153 samples, 0.02%) + + + +leveldb::IteratorWrapper::Update (597,741,715 samples, 0.08%) + + + +mutex_lock (1,235,614,240 samples, 0.16%) + + + +leveldb::IteratorWrapper::Next (90,535,681 samples, 0.01%) + + + +std::thread::_Invoker<std::tuple<void (17,626,808,785 samples, 2.30%) +s.. + + +[unknown] (978,973,591 samples, 0.13%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::~DBPreFetchIter (171,058,153 samples, 0.02%) + + + +leveldb::IteratorWrapper::key (531,622,034 samples, 0.07%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate (699,492,104 samples, 0.09%) + + + +leveldb::Block::Iter::Next (113,076,697 samples, 0.01%) + + + +dput (3,741,723,175 samples, 0.49%) + + + +entry_SYSCALL_64_after_hwframe (20,828,557,229 samples, 2.72%) +en.. + + +leveldb::(anonymous namespace)::MergingIterator::value (1,156,878,930 samples, 0.15%) + + + +ttwu_do_activate (973,040,923 samples, 0.13%) + + + +security_file_permission (14,331,575,034 samples, 1.87%) +s.. + + +find_get_entry (766,743,064 samples, 0.10%) + + + +std::basic_filebuf<char, std::char_traits<char> >::basic_filebuf (477,657,327 samples, 0.06%) + + + +malloc (106,139,976 samples, 0.01%) + + + +native_write_msr (553,676,397 samples, 0.07%) + + + +smp_apic_timer_interrupt (65,021,832 samples, 0.01%) + + + +leveldb::IteratorWrapper::Next (145,619,418 samples, 0.02%) + + + +__sched_text_start (12,514,250,578 samples, 1.63%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign (563,622,097 samples, 0.07%) + + + +do_syscall_64 (10,434,375,490 samples, 1.36%) + + + +leveldb::Slice::Slice (75,787,565 samples, 0.01%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +apic_timer_interrupt (456,643,946 samples, 0.06%) + + + +copy_page_to_iter (29,256,996,322 samples, 3.82%) +copy.. + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (744,750,670 samples, 0.10%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append@plt (852,898,788 samples, 0.11%) + + + +vm_stat_account (75,824,041 samples, 0.01%) + + + +call_rwsem_wake (1,456,649,116 samples, 0.19%) + + + +leveldb::IteratorWrapper::Update (2,349,348,149 samples, 0.31%) + + + +prepare_exit_to_usermode (721,439,765 samples, 0.09%) + + + +__task_rq_lock (1,330,014,580 samples, 0.17%) + + + +leveldb::DBImpl::BGWork (502,229,687 samples, 0.07%) + + + +syscall_return_via_sysret (1,412,645,635 samples, 0.18%) + + + +ext4_llseek (946,923,031 samples, 0.12%) + + + +mprotect_fixup (7,533,385,418 samples, 0.98%) + + + +__fdget_pos (5,818,184,209 samples, 0.76%) + + + +leveldb::DecodeEntry (725,389,794 samples, 0.09%) + + + +leveldb::IteratorWrapper::Update (5,268,176,759 samples, 0.69%) + + + +leveldb::Slice::size (97,517,190 samples, 0.01%) + + + +run_rebalance_domains (528,405,201 samples, 0.07%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadForward (90,819,231,986 samples, 11.86%) +leveldb::(anonymo.. + + +find_get_entry (7,001,549,814 samples, 0.91%) + + + +update_cfs_group (90,732,790 samples, 0.01%) + + + +leveldb::InternalKeyComparator::Compare (6,944,261,092 samples, 0.91%) + + + +_pthread_cleanup_push_defer (634,629,142 samples, 0.08%) + + + +__memmove_avx_unaligned_erms (15,780,583,492 samples, 2.06%) +_.. + + +leveldb::GetVarint32Ptr (537,768,965 samples, 0.07%) + + + +_IO_un_link (8,699,471,171 samples, 1.14%) + + + +leveldb::(anonymous namespace)::HandleTable::Lookup (569,667,157 samples, 0.07%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +leveldb::IteratorWrapper::key (893,089,306 samples, 0.12%) + + + +leveldb::Block::Iter::ParseNextKey (33,531,398,384 samples, 4.38%) +level.. + + +std::fpos<__mbstate_t>::fpos (664,925,831 samples, 0.09%) + + + +radix_tree_lookup_slot (766,743,064 samples, 0.10%) + + + +fscrypt_file_open (16,931,880,009 samples, 2.21%) +f.. + + +do_syscall_64 (171,058,153 samples, 0.02%) + + + +sys_futex (8,531,324,707 samples, 1.11%) + + + +do_dentry_open (34,107,797,699 samples, 4.45%) +do_de.. + + +entry_SYSCALL_64_after_hwframe (171,058,153 samples, 0.02%) + + + +memcpy@plt (713,056,057 samples, 0.09%) + + + +leveldb::ParseInternalKey (2,973,499,111 samples, 0.39%) + + + +__fsnotify_parent (35,235,514,829 samples, 4.60%) +__fsn.. + + +leveldb::(anonymous namespace)::MergingIterator::Prev (96,849,119,226 samples, 12.64%) +leveldb::(anonymous.. + + +__mprotect (57,945,998,800 samples, 7.56%) +__mprotect + + +ext4_file_write_iter (1,025,517,495 samples, 0.13%) + + + +__libc_enable_asynccancel (611,918,208 samples, 0.08%) + + + +leveldb::Slice::Slice (225,908,035 samples, 0.03%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::Next (3,643,664,425 samples, 0.48%) + + + +get_mem_cgroup_from_mm (1,357,191,421 samples, 0.18%) + + + +leveldb::GetLengthPrefixedSlice (491,048,470 samples, 0.06%) + + + +sched_clock (965,103,126 samples, 0.13%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +select_task_rq_fair (1,078,623,608 samples, 0.14%) + + + +std::ios_base::_M_call_callbacks@plt (618,064,110 samples, 0.08%) + + + +leveldb::ExtractUserKey (672,343,199 samples, 0.09%) + + + +strlen (534,596,231 samples, 0.07%) + + + +leveldb::IteratorWrapper::Next (703,160,164 samples, 0.09%) + + + +leveldb::Benchmark::ReadSequential (4,565,575,663 samples, 0.60%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +native_write_msr (69,667,712 samples, 0.01%) + + + +leveldb::Slice::size (1,511,587,537 samples, 0.20%) + + + +leveldb::Block::Iter::Compare (719,145,365 samples, 0.09%) + + + +syscall_return_via_sysret (1,964,247,322 samples, 0.26%) + + + +task_work_run (13,424,472,825 samples, 1.75%) + + + +leveldb::IteratorWrapper::key (762,739,338 samples, 0.10%) + + + +leveldb::Status::Status (478,967,407 samples, 0.06%) + + + +new_sync_read (43,729,150,890 samples, 5.71%) +new_syn.. + + +__GI___writev (1,065,715,939 samples, 0.14%) + + + +std::atomic<bool>::store (74,865,610 samples, 0.01%) + + + +fput (81,109,122 samples, 0.01%) + + + +leveldb::(anonymous namespace)::DBIter::ParseKey (1,902,975,084 samples, 0.25%) + + + +lockref_put_return (3,654,783,369 samples, 0.48%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (24,660,730,439 samples, 3.22%) +lev.. + + +leveldb::IteratorWrapper::value (857,772,239 samples, 0.11%) + + + +__do_page_fault (38,930,023,552 samples, 5.08%) +__do_p.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::SetDataIterator (985,072,823 samples, 0.13%) + + + +dget_parent (9,815,297,447 samples, 1.28%) + + + +_IO_file_fopen@@GLIBC_2.2.5 (1,365,457,328 samples, 0.18%) + + + +smp_apic_timer_interrupt (553,376,191 samples, 0.07%) + + + +wake_up_q (15,103,780,079 samples, 1.97%) +w.. + + +[unknown] (978,973,591 samples, 0.13%) + + + +leveldb::IteratorWrapper::Next (14,318,282,008 samples, 1.87%) +l.. + + +std::ios_base::~ios_base (572,740,875 samples, 0.07%) + + + +std::has_facet<std::ctype<char> > (567,289,045 samples, 0.07%) + + + +dget_parent (6,715,777,495 samples, 0.88%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace@plt (816,279,134 samples, 0.11%) + + + +lockref_put_return (570,976,423 samples, 0.07%) + + + +__fsnotify_parent (667,187,750 samples, 0.09%) + + + +leveldb::(anonymous namespace)::MergingIterator::Next (1,714,261,782 samples, 0.22%) + + + +leveldb::IteratorWrapper::value (7,130,608,450 samples, 0.93%) + + + +do_syscall_64 (451,498,976 samples, 0.06%) + + + +__fsnotify_parent (574,876,974 samples, 0.08%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (622,916,203 samples, 0.08%) + + + +leveldb::MemTableIterator::key (607,988,182 samples, 0.08%) + + + +leveldb::GetVarint32Ptr (1,970,983,613 samples, 0.26%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +dget_parent (2,593,722,714 samples, 0.34%) + + + +sys_close (3,526,868,357 samples, 0.46%) + + + +do_syscall_64 (107,903,129 samples, 0.01%) + + + +leveldb::IteratorWrapper::Valid (531,671,451 samples, 0.07%) + + + +wake_q_add (109,040,947 samples, 0.01%) + + + +schedule (5,595,652,258 samples, 0.73%) + + + +try_to_wake_up (5,145,893,404 samples, 0.67%) + + + +__perf_event_task_sched_out (256,088,572 samples, 0.03%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +task_work_add (645,899,645 samples, 0.08%) + + + +leveldb::Block::Iter::ParseNextKey (86,212,616 samples, 0.01%) + + + +leveldb::IteratorWrapper::status (434,661,999 samples, 0.06%) + + + +switch_to_thread_stack (488,693,793 samples, 0.06%) + + + +leveldb::Block::Iter::ParseNextKey (7,806,972,965 samples, 1.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Next (78,240,234 samples, 0.01%) + + + +leveldb::DBImpl::Get (4,727,759,465 samples, 0.62%) + + + +sys_read (617,249,733 samples, 0.08%) + + + +__softirqentry_text_start (632,809,847 samples, 0.08%) + + + +mem_cgroup_try_charge (3,480,199,406 samples, 0.45%) + + + +__slab_alloc (875,251,063 samples, 0.11%) + + + +dput (667,187,750 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (554,486,105 samples, 0.07%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (749,838,445 samples, 0.10%) + + + +__entry_trampoline_start (845,247,995 samples, 0.11%) + + + +schedule (3,050,505,772 samples, 0.40%) + + + +page_fault (6,253,598,844 samples, 0.82%) + + + +__fdget_pos (1,159,103,679 samples, 0.15%) + + + +native_queued_spin_lock_slowpath (796,003,679 samples, 0.10%) + + + +lockref_put_return (546,854,069 samples, 0.07%) + + + +x86_pmu_enable (567,044,760 samples, 0.07%) + + + +dequeue_entity (5,818,976,243 samples, 0.76%) + + + +leveldb::DBImpl::GarbageCollect (6,598,615,742 samples, 0.86%) + + + +leveldb::(anonymous namespace)::DBIter::Next (82,135,321,548 samples, 10.72%) +leveldb::(anony.. + + +[unknown] (978,973,591 samples, 0.13%) + + + +entry_SYSCALL_64_after_hwframe (54,230,151,441 samples, 7.08%) +entry_SYS.. + + +security_file_permission (38,066,986,884 samples, 4.97%) +securi.. + + +entry_SYSCALL_64_after_hwframe (10,434,375,490 samples, 1.36%) + + + +leveldb::IteratorWrapper::Valid (584,535,587 samples, 0.08%) + + + +finish_task_switch (127,419,133 samples, 0.02%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (723,538,621 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Prev (62,116,971,423 samples, 8.11%) +leveldb::(a.. + + +[unknown] (641,364,442 samples, 0.08%) + + + +security_file_open (15,506,925,790 samples, 2.02%) +s.. + + +leveldb::DecodeEntry (206,452,185 samples, 0.03%) + + + +lockref_put_return (1,987,032,319 samples, 0.26%) + + + +inotify_handle_event (538,619,661 samples, 0.07%) + + + +leveldb::(anonymous namespace)::MergingIterator::~MergingIterator (171,058,153 samples, 0.02%) + + + +restore_nameidata (650,389,908 samples, 0.08%) + + + +sys_lseek (71,702,569 samples, 0.01%) + + + +std::istream::read (102,929,300 samples, 0.01%) + + + +reweight_entity (693,562,311 samples, 0.09%) + + + +getname (1,873,799,322 samples, 0.24%) + + + +operator new[]@plt (685,740,507 samples, 0.09%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::IteratorWrapper::value (1,952,992,741 samples, 0.25%) + + + +_raw_spin_lock_irq (1,020,711,154 samples, 0.13%) + + + +lockref_put_return (552,539,325 samples, 0.07%) + + + +ext4_da_write_end (67,301,186 samples, 0.01%) + + + +leveldb::Slice::size (224,788,054 samples, 0.03%) + + + +leveldb::IteratorWrapper::Valid (78,253,287 samples, 0.01%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +std::thread::_State_impl<std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadForward (93,253,103,040 samples, 12.17%) +std::thread::_Stat.. + + +leveldb::IteratorWrapper::Valid (1,386,369,626 samples, 0.18%) + + + +std::__invoke<void (17,626,808,785 samples, 2.30%) +s.. + + +mem_cgroup_update_lru_size (198,517,012 samples, 0.03%) + + + +legitimize_path.isra.29 (2,014,530,344 samples, 0.26%) + + + +leveldb::Block::Iter::NextEntryOffset (274,287,883 samples, 0.04%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (1,050,020,112 samples, 0.14%) + + + +__unqueue_futex (526,542,433 samples, 0.07%) + + + +__radix_tree_lookup (2,104,805,506 samples, 0.27%) + + + +lockref_put_return (3,189,183,850 samples, 0.42%) + + + +[unknown] (330,174,128,468 samples, 43.10%) +[unknown] + + +__task_rq_lock (225,870,186 samples, 0.03%) + + + +[unknown] (22,635,963,307 samples, 2.96%) +[u.. + + +__intel_pmu_enable_all.constprop.23 (567,044,760 samples, 0.07%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (99,583,078 samples, 0.01%) + + + +smp_apic_timer_interrupt (456,643,946 samples, 0.06%) + + + +leveldb::Slice::data (69,982,629 samples, 0.01%) + + + +_IO_default_xsputn (70,293,108 samples, 0.01%) + + + +__alloc_pages_nodemask (464,602,907 samples, 0.06%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +std::__invoke<leveldb::(anonymous namespace)::DBPreFetchIter::SeekToLast (166,155,643 samples, 0.02%) + + + +rwsem_down_read_failed (20,057,945,922 samples, 2.62%) +rw.. + + +sys_unlink (171,058,153 samples, 0.02%) + + + +do_filp_open (50,564,152,847 samples, 6.60%) +do_filp_o.. + + +leveldb::(anonymous namespace)::MergingIterator::Valid (508,522,929 samples, 0.07%) + + + +deactivate_task (3,168,674,776 samples, 0.41%) + + + +_find_next_bit (151,031,773 samples, 0.02%) + + + +_raw_spin_trylock (528,405,201 samples, 0.07%) + + + +try_to_wake_up (544,057,077 samples, 0.07%) + + + +dput (197,239,634 samples, 0.03%) + + + +dget_parent (26,855,531,098 samples, 3.51%) +dge.. + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize@plt (1,042,744,807 samples, 0.14%) + + + +__libc_read (243,939,212 samples, 0.03%) + + + +rwsem_spin_on_owner (3,011,294,270 samples, 0.39%) + + + +leveldb::MemTableIterator::Next (78,240,234 samples, 0.01%) + + + +finish_task_switch (91,631,064 samples, 0.01%) + + + +native_queued_spin_lock_slowpath (2,543,301,598 samples, 0.33%) + + + +lockref_put_return (8,792,522,684 samples, 1.15%) + + + +alloc_pages_vma (464,602,907 samples, 0.06%) + + + +try_charge (152,899,667 samples, 0.02%) + + + +get_page_from_freelist (1,780,561,312 samples, 0.23%) + + + +dequeue_task_fair (6,523,553,303 samples, 0.85%) + + + +dput (9,445,837,148 samples, 1.23%) + + + +__indirect_thunk_start (546,235,899 samples, 0.07%) + + + +leveldb::DecodeFixed32 (5,182,987,771 samples, 0.68%) + + + +rwsem_down_write_failed_killable (21,239,515,685 samples, 2.77%) +rw.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::key (639,748,523 samples, 0.08%) + + + +leveldb::Block::Iter::~Iter (550,410,824 samples, 0.07%) + + + +leveldb::IteratorWrapper::Next (974,258,792 samples, 0.13%) + + + +default_send_IPI_single_phys (445,491,328 samples, 0.06%) + + + +reweight_entity (432,381,808 samples, 0.06%) + + + +irq_exit (521,802,005 samples, 0.07%) + + + +lookup_fast (2,224,592,366 samples, 0.29%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +security_file_permission (1,220,487,886 samples, 0.16%) + + + +page_fault (449,936,786 samples, 0.06%) + + + +new_sync_read (591,615,404 samples, 0.08%) + + + +__alloc_fd (1,725,798,610 samples, 0.23%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (2,620,496,666 samples, 0.34%) + + + +fsnotify (538,619,661 samples, 0.07%) + + + +alloc_pages_vma (123,259,560 samples, 0.02%) + + + +__libc_read (535,060,753 samples, 0.07%) + + + +__delayacct_tsk_init (97,772,251 samples, 0.01%) + + + +leveldb::MemTable::KeyComparator::operator (917,936,100 samples, 0.12%) + + + +__fget_light (3,035,248,774 samples, 0.40%) + + + +enqueue_task_fair (2,591,922,690 samples, 0.34%) + + + +lockref_put_return (451,510,259 samples, 0.06%) + + + +generic_perform_write (421,185,836 samples, 0.05%) + + + +leveldb::Slice::data (586,589,694 samples, 0.08%) + + + +leveldb::DBImpl::BackgroundCall (502,229,687 samples, 0.07%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (90,535,681 samples, 0.01%) + + + +leveldb::IteratorWrapper::Prev (52,803,305,612 samples, 6.89%) +leveldb::.. + + +llist_add_batch (626,647,055 samples, 0.08%) + + + +leveldb::IteratorWrapper::Valid (65,467,555 samples, 0.01%) + + + +ext4_file_read_iter (43,624,833,114 samples, 5.70%) +ext4_fi.. + + +leveldb::IteratorWrapper::Prev (73,604,874 samples, 0.01%) + + + +release_pages (147,603,996 samples, 0.02%) + + + +__handle_mm_fault (12,488,435,423 samples, 1.63%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (4,576,552,410 samples, 0.60%) + + + +__f_unlock_pos (88,470,339 samples, 0.01%) + + + +leveldb::Block::Iter::Valid (542,143,842 samples, 0.07%) + + + +mutex_lock (2,740,616,005 samples, 0.36%) + + + +leveldb::(anonymous namespace)::DBIter::Prev (5,654,803,480 samples, 0.74%) + + + +__free_slab (521,802,005 samples, 0.07%) + + + +std::locale::~locale (194,899,346 samples, 0.03%) + + + +std::use_facet<std::ctype<char> > (674,904,260 samples, 0.09%) + + + +do_futex (8,476,447,610 samples, 1.11%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (738,975,443 samples, 0.10%) + + + +mem_cgroup_try_charge (184,428,429 samples, 0.02%) + + + +__fput (462,555,665 samples, 0.06%) + + + +leveldb::IteratorWrapper::Next (29,854,507,250 samples, 3.90%) +leve.. + + +__radix_tree_lookup (766,743,064 samples, 0.10%) + + + +leveldb::(anonymous namespace)::HandleTable::FindPointer (569,667,157 samples, 0.07%) + + + +leveldb::Block::Iter::Next (721,418,901 samples, 0.09%) + + + +__fsnotify_parent (687,517,197 samples, 0.09%) + + + +leveldb::Slice::Slice (637,397,677 samples, 0.08%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (11,683,982,950 samples, 1.53%) + + + +std::locale::~locale (832,450,116 samples, 0.11%) + + + +leveldb::MemTableIterator::value (558,595,009 samples, 0.07%) + + + +leveldb::InternalKeyComparator::Compare (773,995,646 samples, 0.10%) + + + +leveldb::(anonymous namespace)::DBIter::ParseKey (21,742,495,232 samples, 2.84%) +le.. + + +leveldb::Block::Iter::Prev (1,758,491,664 samples, 0.23%) + + + +__memcmp_avx2_movbe (723,538,621 samples, 0.09%) + + + +common_file_perm (2,737,820,206 samples, 0.36%) + + + +__strcmp_sse2_unaligned (501,672,914 samples, 0.07%) + + + +__vfs_write (1,025,517,495 samples, 0.13%) + + + +mark_wake_futex (1,137,190,802 samples, 0.15%) + + + +leveldb::IteratorWrapper::value (10,994,913,181 samples, 1.44%) + + + +try_to_wake_up (1,187,244,305 samples, 0.15%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (1,828,366,930 samples, 0.24%) + + + +leveldb::MemTableIterator::Prev (18,097,989,127 samples, 2.36%) +l.. + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Prev (18,097,989,127 samples, 2.36%) +l.. + + +ext4_dirty_inode (92,914,075 samples, 0.01%) + + + +intel_tfa_pmu_enable_all (65,670,829 samples, 0.01%) + + + +__do_page_fault (6,233,373,769 samples, 0.81%) + + + +leveldb::(anonymous namespace)::DBIter::value (657,025,128 samples, 0.09%) + + + +__memcmp_avx2_movbe (1,245,748,027 samples, 0.16%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::InitDataBlock (2,608,815,738 samples, 0.34%) + + + +leveldb::Slice::size (804,249,510 samples, 0.10%) + + + +leveldb::Slice::Slice (66,952,694 samples, 0.01%) + + + +leveldb::Version::Get (1,720,339,135 samples, 0.22%) + + + +__handle_mm_fault (464,602,907 samples, 0.06%) + + + +tick_sched_timer (488,660,560 samples, 0.06%) + + + +generic_write_end (180,170,669 samples, 0.02%) + + + +leveldb::Slice::Slice (596,541,838 samples, 0.08%) + + + +truncate_cleanup_page (140,707,492 samples, 0.02%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::Prev (5,818,468,560 samples, 0.76%) + + + +__inode_permission (757,084,509 samples, 0.10%) + + + +leveldb::IteratorWrapper::value (3,994,548,704 samples, 0.52%) + + + +std::atomic<bool>::store (714,169,672 samples, 0.09%) + + + +do_syscall_64 (1,065,715,939 samples, 0.14%) + + + +__dynamic_cast (616,556,527 samples, 0.08%) + + + +leveldb::(anonymous namespace)::MergingIterator::Valid (748,838,788 samples, 0.10%) + + + +entry_SYSCALL_64_after_hwframe (146,906,135,425 samples, 19.18%) +entry_SYSCALL_64_after_hwframe + + +std::__invoke<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (138,422,696,426 samples, 18.07%) +std::__invoke<leveldb::(anon.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (657,025,128 samples, 0.09%) + + + +____fput (10,405,835,423 samples, 1.36%) + + + +up_read (3,158,923,203 samples, 0.41%) + + + +leveldb::(anonymous namespace)::MergingIterator::~MergingIterator (171,058,153 samples, 0.02%) + + + +__softirqentry_text_start (456,643,946 samples, 0.06%) + + + +pagevec_lru_move_fn (1,281,894,047 samples, 0.17%) + + + +ext4_file_read_iter (3,781,431,442 samples, 0.49%) + + + +dput (546,854,069 samples, 0.07%) + + + +leveldb::Slice::size (647,471,416 samples, 0.08%) + + + +vfs_read (217,760,301 samples, 0.03%) + + + +leveldb::ExtractUserKey (2,099,145,903 samples, 0.27%) + + + +copy_user_enhanced_fast_string (25,796,492,245 samples, 3.37%) +cop.. + + +try_charge (1,248,177,185 samples, 0.16%) + + + +do_page_fault (38,935,143,285 samples, 5.08%) +do_pag.. + + +std::thread::_Invoker<std::tuple<void (17,626,808,785 samples, 2.30%) +s.. + + +leveldb::(anonymous namespace)::MergingIterator::FindLargest (801,035,908 samples, 0.10%) + + + +_IO_vsnprintf (630,757,272 samples, 0.08%) + + + +leveldb::IteratorWrapper::Valid (532,005,993 samples, 0.07%) + + + +__intel_pmu_disable_all (179,025,732 samples, 0.02%) + + + +ttwu_do_activate (4,571,369,289 samples, 0.60%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (518,791,440 samples, 0.07%) + + + +leveldb::IteratorWrapper::value (584,535,587 samples, 0.08%) + + + +sys_write (1,361,942,985 samples, 0.18%) + + + +leveldb::GetLengthPrefixedSlice (736,919,648 samples, 0.10%) + + + +leveldb::Slice::compare (654,780,634 samples, 0.09%) + + + +lockref_put_return (667,187,750 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Prev (57,236,063,634 samples, 7.47%) +leveldb::(.. + + +wake_q_add (487,381,567 samples, 0.06%) + + + +__legitimize_mnt (1,494,493,676 samples, 0.20%) + + + +lockref_put_return (19,658,948,207 samples, 2.57%) +lo.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (93,289,240 samples, 0.01%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +tick_sched_handle (488,660,560 samples, 0.06%) + + + +sys_lseek (7,756,478,299 samples, 1.01%) + + + +leveldb::(anonymous namespace)::DBIter::ParseKey (772,399,450 samples, 0.10%) + + + +leveldb::IteratorWrapper::Update (3,815,296,512 samples, 0.50%) + + + +__entry_trampoline_start (1,670,313,668 samples, 0.22%) + + + +wake_up_q (5,179,226,686 samples, 0.68%) + + + +leveldb::Slice::compare (104,018,567 samples, 0.01%) + + + +dget_parent (5,383,271,883 samples, 0.70%) + + + +sys_read (140,726,443,531 samples, 18.37%) +sys_read + + +cfree@GLIBC_2.2.5 (1,382,118,029 samples, 0.18%) + + + +std::has_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (85,022,517 samples, 0.01%) + + + +__intel_pmu_enable_all.constprop.23 (111,149,746 samples, 0.01%) + + + +perf_event_mmap (3,004,225,511 samples, 0.39%) + + + +call_rwsem_wake (563,012,882 samples, 0.07%) + + + +leveldb::Slice::size (108,625,152 samples, 0.01%) + + + +task_ctx_sched_out (236,141,465 samples, 0.03%) + + + +_raw_spin_lock (2,573,529,212 samples, 0.34%) + + + +current_kernel_time64 (705,394,168 samples, 0.09%) + + + +up_write (19,145,034,346 samples, 2.50%) +up.. + + +std::thread::_State_impl<std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::SeekToLast (166,155,643 samples, 0.02%) + + + +terminate_walk (582,646,250 samples, 0.08%) + + + +ttwu_do_wakeup (66,371,085 samples, 0.01%) + + + +leveldb::Block::Iter::key (1,276,246,582 samples, 0.17%) + + + +__virt_addr_valid (583,175,849 samples, 0.08%) + + + +leveldb::IteratorWrapper::Valid (1,033,158,469 samples, 0.13%) + + + +__do_page_fault (464,689,473 samples, 0.06%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (624,944,712 samples, 0.08%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace@plt (155,793,433 samples, 0.02%) + + + +wake_up_q (1,187,244,305 samples, 0.15%) + + + +call_rcu_sched (1,200,435,237 samples, 0.16%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::Put (133,279,425 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindLessThan (17,185,171,620 samples, 2.24%) +l.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksBackward (2,466,288,144 samples, 0.32%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (476,984,630 samples, 0.06%) + + + +call_rwsem_down_read_failed (20,066,832,950 samples, 2.62%) +ca.. + + +do_sys_open (71,772,734,594 samples, 9.37%) +do_sys_open + + +native_queued_spin_lock_slowpath (2,658,697,801 samples, 0.35%) + + + +leveldb::Slice::data (613,471,901 samples, 0.08%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (656,861,837 samples, 0.09%) + + + +leveldb::Slice::Slice (1,443,703,842 samples, 0.19%) + + + +leveldb::(anonymous namespace)::DBIter::Prev (131,266,750,681 samples, 17.14%) +leveldb::(anonymous namesp.. + + +rw_verify_area (197,239,634 samples, 0.03%) + + + +__cgroup_account_cputime (474,421,794 samples, 0.06%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +activate_page (370,132,486 samples, 0.05%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::MemTable::Get (2,455,999,870 samples, 0.32%) + + + +leveldb::MemTableIterator::value (486,199,798 samples, 0.06%) + + + +do_page_fault (464,689,473 samples, 0.06%) + + + +entry_SYSCALL_64_after_hwframe (864,157,367 samples, 0.11%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Seek (1,828,366,930 samples, 0.24%) + + + +leveldb::(anonymous namespace)::DBIter::FindNextUserEntry (1,902,975,084 samples, 0.25%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (532,005,993 samples, 0.07%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (632,540,725 samples, 0.08%) + + + +update_curr (1,909,204,367 samples, 0.25%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Prev (3,179,243,738 samples, 0.42%) + + + +leveldb::IteratorWrapper::value (632,540,725 samples, 0.08%) + + + +leveldb::Version::Get (2,253,368,769 samples, 0.29%) + + + +__fget_light (118,326,340 samples, 0.02%) + + + +dput (17,100,219,278 samples, 2.23%) +d.. + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (1,687,351,623 samples, 0.22%) + + + +leveldb::Block::Iter::GetRestartPoint (1,753,737,167 samples, 0.23%) + + + +__libc_read (93,669,937 samples, 0.01%) + + + +dput.part.26 (275,373,433 samples, 0.04%) + + + +rw_verify_area (38,666,478,563 samples, 5.05%) +rw_ver.. + + +_IO_vsnprintf (2,045,880,790 samples, 0.27%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (825,856,106 samples, 0.11%) + + + +leveldb::DecodeFixed32 (1,104,243,402 samples, 0.14%) + + + +generic_file_read_iter (591,615,404 samples, 0.08%) + + + +__fdget_pos (3,703,250,510 samples, 0.48%) + + + +do_futex (8,523,478,782 samples, 1.11%) + + + +lockref_get_not_dead (520,036,668 samples, 0.07%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +std::istream::seekg@plt (645,969,760 samples, 0.08%) + + + +memcmp@plt (627,635,652 samples, 0.08%) + + + +entry_SYSCALL_64_after_hwframe (93,669,937 samples, 0.01%) + + + +leveldb::(anonymous namespace)::MergingIterator::key (934,531,257 samples, 0.12%) + + + +leveldb::Version::ForEachOverlapping (2,253,368,769 samples, 0.29%) + + + +__fsnotify_parent (13,133,710,262 samples, 1.71%) + + + +sync_regs (1,052,760,023 samples, 0.14%) + + + +intel_tfa_pmu_enable_all (567,044,760 samples, 0.07%) + + + +leveldb::InternalKeyComparator::Compare (734,458,642 samples, 0.10%) + + + +leveldb::Slice::Slice (505,598,789 samples, 0.07%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (166,155,643 samples, 0.02%) + + + +leveldb::Block::Iter::Valid (198,565,835 samples, 0.03%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (1,050,897,728 samples, 0.14%) + + + +leveldb::(anonymous namespace)::MergingIterator::key (1,815,280,857 samples, 0.24%) + + + +copy_page_to_iter (640,264,680 samples, 0.08%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (2,137,114,114 samples, 0.28%) + + + +do_iter_write (1,065,715,939 samples, 0.14%) + + + +pagecache_get_page (766,743,064 samples, 0.10%) + + + +sys_mprotect (50,758,450,824 samples, 6.63%) +sys_mprot.. + + +__hrtimer_run_queues (488,660,560 samples, 0.06%) + + + +pagecache_get_page (1,983,392,566 samples, 0.26%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::IteratorWrapper::Valid (108,234,452 samples, 0.01%) + + + +__cxxabiv1::__vmi_class_type_info::__do_dyncast (558,280,990 samples, 0.07%) + + + +enqueue_entity (163,727,231 samples, 0.02%) + + + +apic_timer_interrupt (553,376,191 samples, 0.07%) + + + +std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (17,626,808,785 samples, 2.30%) +s.. + + +leveldb::InternalKeyComparator::Compare (8,634,820,092 samples, 1.13%) + + + +get_empty_filp (7,415,846,289 samples, 0.97%) + + + +aa_file_perm (77,685,252 samples, 0.01%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +apic_timer_interrupt (65,021,832 samples, 0.01%) + + + +leveldb::Block::Iter::GetRestartPoint (6,848,806,411 samples, 0.89%) + + + +leveldb::IteratorWrapper::Prev (570,933,837 samples, 0.07%) + + + +leveldb::DB::Put (1,473,240,706 samples, 0.19%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::GetAndParseTrueValue (4,370,637,619 samples, 0.57%) + + + +lockref_get_not_zero (10,349,819,931 samples, 1.35%) + + + +__cxxabiv1::__si_class_type_info::__do_dyncast (604,376,292 samples, 0.08%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (961,619,021 samples, 0.13%) + + + +try_to_wake_up (15,029,921,874 samples, 1.96%) +t.. + + +do_iter_readv_writev (472,131,262 samples, 0.06%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (561,373,053 samples, 0.07%) + + + +do_syscall_64 (243,939,212 samples, 0.03%) + + + +sys_read (1,220,487,886 samples, 0.16%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +wake_up_q (2,962,288,538 samples, 0.39%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (438,603,478 samples, 0.06%) + + + +leveldb::Table::BlockReader (644,410,474 samples, 0.08%) + + + +futex_wake (7,856,585,011 samples, 1.03%) + + + +_raw_spin_lock (1,330,014,580 samples, 0.17%) + + + +leveldb::(anonymous namespace)::DBIter::~DBIter (171,058,153 samples, 0.02%) + + + +std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::SeekToLast (166,155,643 samples, 0.02%) + + + +set_task_cpu (520,658,426 samples, 0.07%) + + + +filp_close (1,389,191,336 samples, 0.18%) + + + +leveldb::MemTableIterator::Next (612,953,607 samples, 0.08%) + + + +leveldb::DecodeFixed32 (591,613,321 samples, 0.08%) + + + +hrtimer_interrupt (488,660,560 samples, 0.06%) + + + +leveldb::IteratorWrapper::value (657,025,128 samples, 0.09%) + + + +page_fault (38,942,455,941 samples, 5.08%) +page_f.. + + +__fget (2,304,797,696 samples, 0.30%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::MemTable::KeyComparator::operator (14,955,289,161 samples, 1.95%) +l.. + + +do_syscall_64 (1,361,942,985 samples, 0.18%) + + + +update_cfs_group (488,660,560 samples, 0.06%) + + + +leveldb::MakeFileName (591,759,634 samples, 0.08%) + + + +sys_read (591,615,404 samples, 0.08%) + + + +truncate_inode_pages_range (171,058,153 samples, 0.02%) + + + +__alloc_pages_nodemask (4,170,870,371 samples, 0.54%) + + + +update_curr (85,922,545 samples, 0.01%) + + + +syscall_return_via_sysret (592,276,114 samples, 0.08%) + + + +lru_cache_add_active_or_unevictable (1,636,001,618 samples, 0.21%) + + + +file_free_rcu (521,802,005 samples, 0.07%) + + + +update_process_times (488,660,560 samples, 0.06%) + + + +fclose@@GLIBC_2.2.5 (1,327,097,998 samples, 0.17%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (2,042,422,167 samples, 0.27%) + + + +dput (4,225,871,831 samples, 0.55%) + + + +ext4_file_write_iter (472,131,262 samples, 0.06%) + + + +select_task_rq_fair (719,837,295 samples, 0.09%) + + + +entry_SYSCALL_64_after_hwframe (10,720,018,541 samples, 1.40%) + + + +do_page_fault (591,615,404 samples, 0.08%) + + + +update_rq_clock (95,638,296 samples, 0.01%) + + + +__close_fd (3,512,941,619 samples, 0.46%) + + + +do_page_fault (6,253,598,844 samples, 0.82%) + + + +dput.part.26 (8,841,354,859 samples, 1.15%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (2,609,291,669 samples, 0.34%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (664,309,428 samples, 0.09%) + + + +leveldb::ExtractUserKey (1,293,426,510 samples, 0.17%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::clear (121,655,361 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (536,603,294 samples, 0.07%) + + + +generic_permission (637,157,751 samples, 0.08%) + + + +irq_exit (528,405,201 samples, 0.07%) + + + +std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::SeekToLast (166,155,643 samples, 0.02%) + + + +__memcmp_avx2_movbe (98,409,259 samples, 0.01%) + + + +leveldb::Block::Iter::~Iter (550,410,824 samples, 0.07%) + + + +dput (6,411,248,683 samples, 0.84%) + + + +activate_task (3,423,621,286 samples, 0.45%) + + + +select_task_rq_fair (2,790,380,199 samples, 0.36%) + + + +std::_Vector_base<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::_Vector_impl::~_Vector_impl (508,601,420 samples, 0.07%) + + + +leveldb::IteratorWrapper::Valid (893,089,306 samples, 0.12%) + + + +leveldb::(anonymous namespace)::DBIter::FindPrevUserEntry (5,654,803,480 samples, 0.74%) + + + +update_load_avg (72,610,772 samples, 0.01%) + + + +lockref_put_return (1,444,237,583 samples, 0.19%) + + + +dequeue_entity (627,465,391 samples, 0.08%) + + + +apparmor_file_alloc_security (1,877,406,135 samples, 0.25%) + + + +leveldb::Block::Iter::Prev (48,307,263,543 samples, 6.31%) +leveldb:.. + + +task_tick_fair (488,660,560 samples, 0.06%) + + + +ext4_release_file (451,520,283 samples, 0.06%) + + + +_raw_spin_trylock (88,940,727 samples, 0.01%) + + + +update_cfs_group (1,230,536,996 samples, 0.16%) + + + +leveldb::Benchmark::ThreadBody (10,474,641,504 samples, 1.37%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (1,086,198,923 samples, 0.14%) + + + +entry_SYSCALL_64_stage2 (139,976,003 samples, 0.02%) + + + +rw_verify_area (1,220,487,886 samples, 0.16%) + + + +dequeue_task_fair (1,383,012,716 samples, 0.18%) + + + +entry_SYSCALL_64_after_hwframe (1,383,153,670 samples, 0.18%) + + + +leveldb::(anonymous namespace)::MergingIterator::FindLargest (7,814,301,313 samples, 1.02%) + + + +leveldb::Iterator::CleanupNode::Run (171,058,153 samples, 0.02%) + + + +generic_write_end (67,301,186 samples, 0.01%) + + + +change_protection (1,526,080,947 samples, 0.20%) + + + +leveldb::(anonymous namespace)::DBIter::Next (3,643,664,425 samples, 0.48%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +[unknown] (2,207,237,004 samples, 0.29%) + + + +leveldb::IteratorWrapper::Valid (561,373,053 samples, 0.07%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (795,463,285 samples, 0.10%) + + + +lockref_put_return (15,103,600,401 samples, 1.97%) +l.. + + +leveldb::ValueLogFileName (1,187,303,813 samples, 0.16%) + + + +_raw_spin_lock_irq (3,859,944,730 samples, 0.50%) + + + +lockref_get_not_zero (26,834,252,595 samples, 3.50%) +loc.. + + +dput.part.26 (3,654,783,369 samples, 0.48%) + + + +file_free_rcu (632,809,847 samples, 0.08%) + + + +vfs_read (1,220,487,886 samples, 0.16%) + + + +leveldb::IteratorWrapper::Valid (536,603,294 samples, 0.07%) + + + +copy_user_enhanced_fast_string (591,615,404 samples, 0.08%) + + + +__fsnotify_parent (14,829,109,031 samples, 1.94%) +_.. + + +__rwsem_mark_wake (83,745,209 samples, 0.01%) + + + +leveldb::Slice::Slice (2,712,270,284 samples, 0.35%) + + + +leveldb::IteratorWrapper::Prev (3,354,204,026 samples, 0.44%) + + + +syscall_return_via_sysret (183,709,086 samples, 0.02%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::value (706,708,243 samples, 0.09%) + + + +__memcmp_avx2_movbe (1,261,464,397 samples, 0.16%) + + + +leveldb::Block::Iter::GetRestartPoint (1,986,649,889 samples, 0.26%) + + + +__do_page_fault (449,936,786 samples, 0.06%) + + + +std::basic_streambuf<char, std::char_traits<char> >::xsgetn (588,267,172 samples, 0.08%) + + + +entry_SYSCALL_64_after_hwframe (519,234,726 samples, 0.07%) + + + +std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadForward (93,253,103,040 samples, 12.17%) +std::thread::_Invo.. + + +leveldb::(anonymous namespace)::MemTableInserter::Put (173,045,168 samples, 0.02%) + + + +sysmalloc (50,510,564,186 samples, 6.59%) +sysmalloc + + +path_openat (50,534,762,220 samples, 6.60%) +path_ope.. + + +get_mem_cgroup_from_mm (2,146,409,747 samples, 0.28%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Prev (145,856,380 samples, 0.02%) + + + +apparmor_file_free_security (1,386,010,083 samples, 0.18%) + + + +task_ctx_sched_out (556,599,645 samples, 0.07%) + + + +leveldb::(anonymous namespace)::MergingIterator::FindSmallest (1,243,690,325 samples, 0.16%) + + + +leveldb::Block::Iter::GetRestartPoint (514,966,716 samples, 0.07%) + + + +std::__basic_file<char>::is_open@plt (84,351,975 samples, 0.01%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (657,025,128 samples, 0.09%) + + + +generic_permission (711,163,601 samples, 0.09%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::InternalKeyComparator::Compare (5,247,046,359 samples, 0.68%) + + + +__libc_disable_asynccancel (547,939,869 samples, 0.07%) + + + +__call_rcu.constprop.69 (855,320,120 samples, 0.11%) + + + +do_syscall_64 (10,633,370,367 samples, 1.39%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (669,261,860 samples, 0.09%) + + + +search_exception_tables (591,615,404 samples, 0.08%) + + + +pick_next_task_fair (1,460,491,284 samples, 0.19%) + + + +__generic_file_write_iter (967,946,424 samples, 0.13%) + + + +find_get_entry (227,405,734 samples, 0.03%) + + + +leveldb::Block::Iter::Next (9,974,520,484 samples, 1.30%) + + + +deactivate_task (7,015,571,341 samples, 0.92%) + + + +_raw_spin_lock (1,324,791,558 samples, 0.17%) + + + +leveldb::Slice::size (680,797,812 samples, 0.09%) + + + +leveldb::Slice::Slice (763,201,000 samples, 0.10%) + + + +std::locale::~locale (158,198,213 samples, 0.02%) + + + +___slab_alloc (875,251,063 samples, 0.11%) + + + +leveldb::IteratorWrapper::value (3,256,597,440 samples, 0.43%) + + + +__close_nocancel (21,119,638,592 samples, 2.76%) +__.. + + +std::locale::~locale (202,573,698 samples, 0.03%) + + + +[unknown] (572,740,875 samples, 0.07%) + + + +select_task_rq_fair (502,511,429 samples, 0.07%) + + + +fsnotify (729,297,540 samples, 0.10%) + + + +try_to_wake_up (1,307,131,835 samples, 0.17%) + + + +leveldb::Block::Iter::NextEntryOffset (645,172,216 samples, 0.08%) + + + +apparmor_file_mprotect (71,764,944 samples, 0.01%) + + + +leveldb::IteratorWrapper::value (715,661,849 samples, 0.09%) + + + +_do_fork (107,903,129 samples, 0.01%) + + + +__activate_page (198,517,012 samples, 0.03%) + + + +page_fault (464,689,473 samples, 0.06%) + + + +update_load_avg (2,819,446,369 samples, 0.37%) + + + +sys_read (639,247,449 samples, 0.08%) + + + +x86_pmu_enable (65,670,829 samples, 0.01%) + + + +vfs_writev (1,065,715,939 samples, 0.14%) + + + +leveldb::Slice::Slice (513,529,929 samples, 0.07%) + + + +rwsem_wake (18,997,914,808 samples, 2.48%) +rw.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (664,309,428 samples, 0.09%) + + + +__sched_text_start (5,453,181,113 samples, 0.71%) + + + +anon_vma_interval_tree_remove (626,194,665 samples, 0.08%) + + + +leveldb::Slice::data (1,386,991,109 samples, 0.18%) + + + +iput (171,058,153 samples, 0.02%) + + + +std::__basic_file<char>::fd@plt (874,366,988 samples, 0.11%) + + + +std::basic_ifstream<char, std::char_traits<char> >::close (642,167,192 samples, 0.08%) + + + +down_read (64,959,233 samples, 0.01%) + + + +copyout (1,011,431,922 samples, 0.13%) + + + +__lru_cache_add (1,374,661,405 samples, 0.18%) + + + +clear_page_erms (73,356,486 samples, 0.01%) + + + +leveldb::IteratorWrapper::Valid (111,783,584 samples, 0.01%) + + + +generic_file_read_iter (3,781,431,442 samples, 0.49%) + + + +leveldb::(anonymous namespace)::DBIter::~DBIter (171,058,153 samples, 0.02%) + + + +std::operator+<char, std::char_traits<char>, std::allocator<char> > (571,560,142 samples, 0.07%) + + + +dput.part.26 (3,189,183,850 samples, 0.42%) + + + +leveldb::IteratorWrapper::Set (550,410,824 samples, 0.07%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>@plt (507,028,486 samples, 0.07%) + + + +llseek (93,850,190 samples, 0.01%) + + + +_raw_spin_lock (225,870,186 samples, 0.03%) + + + +leveldb::(anonymous namespace)::DBIter::Valid (145,512,687 samples, 0.02%) + + + +__entry_trampoline_start (624,174,002 samples, 0.08%) + + + +__fd_install (1,070,115,041 samples, 0.14%) + + + +@plt (882,042,855 samples, 0.12%) + + + +dequeue_entity (1,951,510,549 samples, 0.25%) + + + +activate_task (937,319,633 samples, 0.12%) + + + +std::locale::operator= (1,337,169,781 samples, 0.17%) + + + +lockref_get_not_zero (9,815,297,447 samples, 1.28%) + + + +leveldb::Slice::data (537,328,206 samples, 0.07%) + + + +leveldb::IteratorWrapper::Update (2,409,062,190 samples, 0.31%) + + + +generic_perform_write (935,111,002 samples, 0.12%) + + + +leveldb::TableCache::Get (1,720,339,135 samples, 0.22%) + + + +leveldb::Block::Iter::Prev (3,179,243,738 samples, 0.42%) + + + +leveldb::GetVarint32Ptr (139,607,689 samples, 0.02%) + + + +vma_merge (1,031,416,700 samples, 0.13%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (85,568,417 samples, 0.01%) + + + +__fget (118,326,340 samples, 0.02%) + + + +dput.part.26 (667,187,750 samples, 0.09%) + + + +page_fault (591,615,404 samples, 0.08%) + + + +mutex_unlock (88,470,339 samples, 0.01%) + + + +std::istream::sentry::sentry (799,502,305 samples, 0.10%) + + + +db_bench (765,993,609,758 samples, 100.00%) +db_bench + + +leveldb::(anonymous namespace)::MergingIterator::FindSmallest (9,125,412,838 samples, 1.19%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +rw_verify_area (14,374,827,347 samples, 1.88%) +r.. + + +leveldb::Slice::data (1,847,006,343 samples, 0.24%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +update_curr (575,498,449 samples, 0.08%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (4,930,882,283 samples, 0.64%) + + + +leveldb::MemTableIterator::value (2,706,917,325 samples, 0.35%) + + + +__lll_unlock_wake_private (12,977,912,171 samples, 1.69%) + + + +__mark_inode_dirty (92,914,075 samples, 0.01%) + + + +down_read_trylock (520,141,228 samples, 0.07%) + + + +leveldb::WriteBatch::Iterate (664,093,638 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksForward (1,402,463,707 samples, 0.18%) + + + +leveldb::IteratorWrapper::value (664,309,428 samples, 0.09%) + + + +__handle_mm_fault (1,023,360,275 samples, 0.13%) + + + +lockref_put_return (69,519,928 samples, 0.01%) + + + +sched_clock_cpu (636,423,566 samples, 0.08%) + + + +mem_cgroup_handle_over_high (549,259,856 samples, 0.07%) + + + +dput (116,141,329 samples, 0.02%) + + + +new_sync_read (3,781,431,442 samples, 0.49%) + + + +do_syscall_64 (93,669,937 samples, 0.01%) + + + +pick_next_task_idle (120,907,185 samples, 0.02%) + + + +sys_lseek (813,835,799 samples, 0.11%) + + + +pagevec_lru_move_fn (346,121,008 samples, 0.05%) + + + +leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadEntryPoint (502,229,687 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (74,209,812,500 samples, 9.69%) +entry_SYSCALL_.. + + +page_counter_try_charge (417,883,118 samples, 0.05%) + + + +leveldb::DBImpl::ReadValueLog (2,147,517,350 samples, 0.28%) + + + +do_syscall_64 (19,337,009,525 samples, 2.52%) +do.. + + +anon_vma_interval_tree_insert (93,205,056 samples, 0.01%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +do_syscall_64 (74,209,812,500 samples, 9.69%) +do_syscall_64 + + +leveldb::(anonymous namespace)::MergingIterator::value (7,820,113,117 samples, 1.02%) + + + +pfn_pte (148,017,129 samples, 0.02%) + + + +leveldb::GetVarint32Ptr (1,974,550,449 samples, 0.26%) + + + +leveldb::ParsedInternalKey::ParsedInternalKey (1,327,067,891 samples, 0.17%) + + + +leveldb::GetVarint32PtrFallback (543,862,875 samples, 0.07%) + + + +memcg_kmem_uncharge (521,802,005 samples, 0.07%) + + + +__atime_needs_update (796,390,153 samples, 0.10%) + + + +leveldb::DBImpl::BGWorkGC (6,649,937,594 samples, 0.87%) + + + +dget_parent (10,349,819,931 samples, 1.35%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::key (1,615,514,412 samples, 0.21%) + + + +__fsnotify_parent (520,529,851 samples, 0.07%) + + + +leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadMain (502,229,687 samples, 0.07%) + + + +leveldb::Status::Status (434,661,999 samples, 0.06%) + + + +do_unlinkat (171,058,153 samples, 0.02%) + + + +__entry_trampoline_start (2,407,917,509 samples, 0.31%) + + + +leveldb::DecodeEntry (204,545,638 samples, 0.03%) + + + +dput.part.26 (15,113,186,959 samples, 1.97%) +d.. + + +wake_q_add (79,066,541 samples, 0.01%) + + + +leveldb::IteratorWrapper::value (656,861,837 samples, 0.09%) + + + +leveldb::GetVarint32 (491,048,470 samples, 0.06%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::Hash (591,613,321 samples, 0.08%) + + + +native_sched_clock (965,103,126 samples, 0.13%) + + + +pick_next_task_idle (539,659,209 samples, 0.07%) + + + +memset (97,772,251 samples, 0.01%) + + + +leveldb::InternalKeyComparator::Compare (723,538,621 samples, 0.09%) + + + +leveldb::MakeFileName (81,514,440 samples, 0.01%) + + + +dput.part.26 (451,510,259 samples, 0.06%) + + + +reweight_entity (1,337,310,558 samples, 0.17%) + + + +error_entry (1,052,760,023 samples, 0.14%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Prev (68,074,427 samples, 0.01%) + + + +select_task_rq_fair (132,294,970 samples, 0.02%) + + + +sys_read (19,337,009,525 samples, 2.52%) +sy.. + + +leveldb::WriteBatchInternal::InsertInto (664,093,638 samples, 0.09%) + + + +apic_timer_interrupt (521,802,005 samples, 0.07%) + + + +strncpy_from_user (1,767,719,771 samples, 0.23%) + + + +rwsem_wake (1,456,649,116 samples, 0.19%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindLessThan (145,856,380 samples, 0.02%) + + + +leveldb::Slice::Slice (119,284,226 samples, 0.02%) + + + +down_read (21,246,748,140 samples, 2.77%) +do.. + + +leveldb::Table::InternalGet (1,720,339,135 samples, 0.22%) + + + +leveldb::DBImpl::BackgroundGarbageCollect (6,649,937,594 samples, 0.87%) + + + +llist_add_batch (707,496,961 samples, 0.09%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +entry_SYSCALL_64_after_hwframe (15,864,302,895 samples, 2.07%) +e.. + + +_IO_padn (759,046,294 samples, 0.10%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (1,392,523,325 samples, 0.18%) + + + +std::istream::seekg (1,107,056,846 samples, 0.14%) + + + +__alloc_pages_nodemask (502,912,074 samples, 0.07%) + + + +ext4_da_write_begin (815,527,728 samples, 0.11%) + + + +rcu_segcblist_enqueue (345,115,117 samples, 0.05%) + + + +do_syscall_64 (20,787,426,969 samples, 2.71%) +do.. + + +__intel_pmu_enable_all.constprop.23 (65,670,829 samples, 0.01%) + + + +leveldb::(anonymous namespace)::DBIter::ParseKey (463,003,095 samples, 0.06%) + + + +leveldb::InternalKeyComparator::Compare (518,764,842 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (591,615,404 samples, 0.08%) + + + +dequeue_task_fair (2,040,923,060 samples, 0.27%) + + + +std::__basic_file<char>::is_open@plt (628,585,879 samples, 0.08%) + + + +leveldb::IteratorWrapper::Prev (3,208,347,646 samples, 0.42%) + + + +leveldb::(anonymous namespace)::DBIter::FindPrevUserEntry (131,111,765,706 samples, 17.12%) +leveldb::(anonymous namesp.. + + +leveldb::Slice::Slice (69,495,873 samples, 0.01%) + + + +__rwsem_mark_wake (891,919,734 samples, 0.12%) + + + +leveldb::ExtractUserKey (2,245,211,047 samples, 0.29%) + + + +std::basic_ifstream<char, std::char_traits<char> >::close (636,086,422 samples, 0.08%) + + + +mark_page_accessed (2,359,440,012 samples, 0.31%) + + + +complete_walk (2,014,530,344 samples, 0.26%) + + + +evict (171,058,153 samples, 0.02%) + + + +leveldb::GetLengthPrefixedSlice (139,607,689 samples, 0.02%) + + + +__fsnotify_parent (593,584,677 samples, 0.08%) + + + +apparmor_file_alloc_security (1,240,687,696 samples, 0.16%) + + + +__fput (9,932,510,469 samples, 1.30%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Lookup (569,667,157 samples, 0.07%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize@plt (79,383,370 samples, 0.01%) + + + +leveldb::Slice::compare (689,202,727 samples, 0.09%) + + + +vfs_read (591,615,404 samples, 0.08%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::~vector (508,601,420 samples, 0.07%) + + + +native_queued_spin_lock_slowpath (225,870,186 samples, 0.03%) + + + +__libc_read (639,247,449 samples, 0.08%) + + + +finish_task_switch (1,386,922,501 samples, 0.18%) + + + +__memcmp_avx2_movbe (319,243,509 samples, 0.04%) + + + +llseek (659,210,729 samples, 0.09%) + + + +leveldb::IteratorWrapper::Prev (3,179,243,738 samples, 0.42%) + + + +vfs_open (34,780,976,673 samples, 4.54%) +vfs_o.. + + +__fsnotify_parent (14,573,939,884 samples, 1.90%) +_.. + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (900,083,337 samples, 0.12%) + + + +apparmor_file_permission (2,737,820,206 samples, 0.36%) + + + +native_queued_spin_lock_slowpath (1,314,797,654 samples, 0.17%) + + + +wake_up_q (549,583,245 samples, 0.07%) + + + +__libc_read (1,202,578,267 samples, 0.16%) + + + +std::locale::locale (5,071,094,049 samples, 0.66%) + + + +leveldb::Slice::data (66,059,501 samples, 0.01%) + + + +security_file_alloc (2,602,001,543 samples, 0.34%) + + + +rwsem_down_read_failed (3,777,270,400 samples, 0.49%) + + + +__radix_tree_lookup (1,778,773,611 samples, 0.23%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Prev (3,208,347,646 samples, 0.42%) + + + +do_syscall_64 (53,665,276,224 samples, 7.01%) +do_syscal.. + + +__fsnotify_parent (312,540,393 samples, 0.04%) + + + +futex_wait (8,509,626,359 samples, 1.11%) + + + +sched_clock_cpu (965,103,126 samples, 0.13%) + + + +vfprintf (1,844,812,507 samples, 0.24%) + + + +entry_SYSCALL_64_after_hwframe (1,065,715,939 samples, 0.14%) + + + +lockref_put_return (604,482,289 samples, 0.08%) + + + +[libstdc++.so.6.0.25] (249,468,763,894 samples, 32.57%) +[libstdc++.so.6.0.25] + + +inode_permission (637,157,751 samples, 0.08%) + + + +leveldb::Block::Iter::ParseNextKey (1,730,938,761 samples, 0.23%) + + + +lockref_put_return (5,621,299,968 samples, 0.73%) + + + +dput.part.26 (19,669,991,577 samples, 2.57%) +dp.. + + +__vfs_read (591,615,404 samples, 0.08%) + + + +leveldb::Slice::size (163,930,043 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string@plt (637,674,048 samples, 0.08%) + + + +perf_iterate_sb (2,289,493,803 samples, 0.30%) + + + +try_to_wake_up (2,914,738,706 samples, 0.38%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (141,015,307 samples, 0.02%) + + + +__dynamic_cast (826,592,145 samples, 0.11%) + + + +cmp_ex_search (591,615,404 samples, 0.08%) + + + +_raw_spin_lock_irqsave (1,530,177,784 samples, 0.20%) + + + +vfs_read (136,110,363,545 samples, 17.77%) +vfs_read + + +rw_verify_area (574,876,974 samples, 0.08%) + + + +syscall_return_via_sysret (3,093,243,813 samples, 0.40%) + + + +get_futex_value_locked (766,845,064 samples, 0.10%) + + + +leveldb::IteratorWrapper::Next (721,418,901 samples, 0.09%) + + + +std::basic_streambuf<char, std::char_traits<char> >::xsgetn@plt (483,240,543 samples, 0.06%) + + + +__perf_event_task_sched_in (611,519,913 samples, 0.08%) + + + +radix_tree_lookup_slot (1,778,773,611 samples, 0.23%) + + + +__sched_text_start (3,028,166,203 samples, 0.40%) + + + +leveldb::IteratorWrapper::value (1,581,296,633 samples, 0.21%) + + + +__entry_trampoline_start (2,103,941,752 samples, 0.27%) + + + +ext4_file_open (16,931,880,009 samples, 2.21%) +e.. + + +idle_cpu (601,929,703 samples, 0.08%) + + + +[unknown] (1,362,079,681 samples, 0.18%) + + + +ctx_sched_out (556,599,645 samples, 0.07%) + + + +__perf_event_task_sched_in (131,685,613 samples, 0.02%) + + + +native_irq_return_iret (1,046,656,530 samples, 0.14%) + + + +__fsnotify_parent (197,239,634 samples, 0.03%) + + + +intel_tfa_pmu_enable_all (111,149,746 samples, 0.01%) + + + +security_file_permission (574,876,974 samples, 0.08%) + + + +leveldb::MemTableIterator::key (1,186,132,818 samples, 0.15%) + + + +put_prev_task_fair (499,796,586 samples, 0.07%) + + + +handle_mm_fault (464,602,907 samples, 0.06%) + + + +leveldb::Table::BlockReader (2,555,557,880 samples, 0.33%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (92,256,901 samples, 0.01%) + + + +leveldb::Slice::compare (488,693,793 samples, 0.06%) + + + +__d_lookup_rcu (1,903,008,889 samples, 0.25%) + + + +entry_SYSCALL_64_after_hwframe (639,247,449 samples, 0.08%) + + + +__sched_text_start (1,980,417,367 samples, 0.26%) + + + +leveldb::(anonymous namespace)::MergingIterator::key (2,405,465,945 samples, 0.31%) + + + +sys_writev (1,065,715,939 samples, 0.14%) + + + +__perf_event_task_sched_out (559,895,754 samples, 0.07%) + + + +leveldb::(anonymous namespace)::DBIter::ParseKey (18,650,400,973 samples, 2.43%) +le.. + + +rcu_process_callbacks (521,802,005 samples, 0.07%) + + + +leveldb::Slice::data (1,448,848,505 samples, 0.19%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create@plt (709,167,381 samples, 0.09%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +smp_apic_timer_interrupt (488,660,560 samples, 0.06%) + + + +try_module_get (270,642,008 samples, 0.04%) + + + +leveldb::GetLengthPrefixedSlice (3,903,226,977 samples, 0.51%) + + + +dequeue_task_fair (1,190,062,247 samples, 0.16%) + + + +leveldb::IteratorWrapper::value (3,370,620,948 samples, 0.44%) + + + +all (765,993,609,758 samples, 100%) + + + +leveldb::Slice::size (119,102,612 samples, 0.02%) + + + +kmem_cache_free (521,802,005 samples, 0.07%) + + + +get_page_from_freelist (464,602,907 samples, 0.06%) + + + +leveldb::(anonymous namespace)::MergingIterator::Next (40,829,213,234 samples, 5.33%) +leveld.. + + +leveldb::(anonymous namespace)::MergingIterator::key (1,186,165,707 samples, 0.15%) + + + +schedule (1,980,417,367 samples, 0.26%) + + + +leveldb::DBImpl::Put (1,473,240,706 samples, 0.19%) + + + +dput.part.26 (5,846,956,344 samples, 0.76%) + + + +find_get_entry (1,983,392,566 samples, 0.26%) + + + +rebalance_domains (528,405,201 samples, 0.07%) + + + +leveldb::IteratorWrapper::key (1,490,996,708 samples, 0.19%) + + + +current_time (746,127,550 samples, 0.10%) + + + +_IO_old_init (1,310,313,379 samples, 0.17%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (657,025,128 samples, 0.09%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (149,240,336 samples, 0.02%) + + + +malloc (4,498,813,233 samples, 0.59%) + + + +entry_SYSCALL_64_stage2 (511,439,957 samples, 0.07%) + + + +enqueue_entity (80,681,622 samples, 0.01%) + + + +__libc_read (1,220,487,886 samples, 0.16%) + + + +entry_SYSCALL_64_after_hwframe (243,939,212 samples, 0.03%) + + + +enqueue_task_fair (80,681,622 samples, 0.01%) + + + +__pthread_disable_asynccancel (629,921,040 samples, 0.08%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::SeekToLast (166,155,643 samples, 0.02%) + + + +leveldb::IteratorWrapper::Update (3,528,635,856 samples, 0.46%) + + + +leveldb::(anonymous namespace)::DBIter::key (729,037,031 samples, 0.10%) + + + +down_read (4,435,787,161 samples, 0.58%) + + + +deactivate_task (1,383,012,716 samples, 0.18%) + + + +std::__invoke_impl<void, void (17,626,808,785 samples, 2.30%) +s.. + + +fd_install (1,070,115,041 samples, 0.14%) + + + +leveldb::MemTableIterator::key (767,527,983 samples, 0.10%) + + + +grab_cache_page_write_begin (766,743,064 samples, 0.10%) + + + +leveldb::InternalKeyComparator::Compare (719,145,365 samples, 0.09%) + + + +_IO_vsnprintf (934,382,859 samples, 0.12%) + + + +llseek (22,867,417,449 samples, 2.99%) +ll.. + + +apparmor_file_open (632,337,724 samples, 0.08%) + + + +ext4_da_invalidatepage (140,707,492 samples, 0.02%) + + + +__fget (2,406,169,114 samples, 0.31%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::IteratorWrapper::Valid (574,746,332 samples, 0.08%) + + + +std::allocator<char>::allocator@plt (477,692,309 samples, 0.06%) + + + +call_rwsem_down_read_failed (3,777,270,400 samples, 0.49%) + + + +search_extable (591,615,404 samples, 0.08%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::HashSlice (591,613,321 samples, 0.08%) + + + +rcu_process_callbacks (632,809,847 samples, 0.08%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +clear_page_erms (2,329,901,477 samples, 0.30%) + + + +entry_SYSCALL_64_after_hwframe (107,903,129 samples, 0.01%) + + + +leveldb::IteratorWrapper::Next (887,357,272 samples, 0.12%) + + + +getname_flags (1,873,799,322 samples, 0.24%) + + + +_IO_link_in (1,974,930,527 samples, 0.26%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (99,069,434 samples, 0.01%) + + + +update_rq_clock (965,103,126 samples, 0.13%) + + + +__slab_free (521,802,005 samples, 0.07%) + + + +leveldb::IteratorWrapper::key (1,240,053,593 samples, 0.16%) + + + +leveldb::GetLengthPrefixedSlice (1,186,132,818 samples, 0.15%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +leveldb::IteratorWrapper::Prev (87,349,372,697 samples, 11.40%) +leveldb::Iterator.. + + +__kmalloc (481,731,867 samples, 0.06%) + + + +leveldb::IteratorWrapper::Next (22,652,871,021 samples, 2.96%) +le.. + + +__lll_lock_wait_private (13,803,931,816 samples, 1.80%) +_.. + + +leveldb::IteratorWrapper::Update (607,988,182 samples, 0.08%) + + + +_raw_spin_lock (65,122,207 samples, 0.01%) + + + +leveldb::(anonymous namespace)::MergingIterator::Prev (4,155,239,934 samples, 0.54%) + + + +lockref_put_return (197,239,634 samples, 0.03%) + + + +leveldb::Slice::compare (72,575,900 samples, 0.01%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::Block::Iter::Valid (511,482,302 samples, 0.07%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::IteratorWrapper::Next (72,344,821 samples, 0.01%) + + + +std::basic_filebuf<char, std::char_traits<char> >::close (609,437,119 samples, 0.08%) + + + +leveldb::InternalKeyComparator::Compare (74,646,011 samples, 0.01%) + + + +page_counter_cancel (521,802,005 samples, 0.07%) + + + +do_page_fault (449,936,786 samples, 0.06%) + + + +leveldb::IteratorWrapper::Valid (68,575,643 samples, 0.01%) + + + +__memcmp_avx2_movbe (738,975,443 samples, 0.10%) + + + +leveldb::DecodeFixed64 (837,916,535 samples, 0.11%) + + + +leveldb::IteratorWrapper::Update (711,450,301 samples, 0.09%) + + + +call_rwsem_wake (18,997,914,808 samples, 2.48%) +ca.. + + +leveldb::WriteBatchInternal::ConverToValueLog (750,299,350 samples, 0.10%) + + + +may_open (1,153,518,542 samples, 0.15%) + + + +update_curr (468,332,934 samples, 0.06%) + + + +scheduler_tick (488,660,560 samples, 0.06%) + + + +__libc_read (155,683,535,668 samples, 20.32%) +__libc_read + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign@plt (591,064,610 samples, 0.08%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::key (1,908,212,432 samples, 0.25%) + + + +__libc_write (1,383,153,670 samples, 0.18%) + + + +__vfs_read (3,781,431,442 samples, 0.49%) + + + +leveldb::IteratorWrapper::iter (540,794,090 samples, 0.07%) + + + +leveldb::Block::Iter::Seek (1,592,043,172 samples, 0.21%) + + + +std::__invoke<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadForward (93,253,103,040 samples, 12.17%) +std::__invoke<leve.. + + +leveldb::IteratorWrapper::Valid (779,598,924 samples, 0.10%) + + + +__GI___libc_open (75,335,761,001 samples, 9.84%) +__GI___libc_open + + +leveldb::(anonymous namespace)::MergingIterator::Valid (78,219,543 samples, 0.01%) + + + +rcu_process_callbacks (456,643,946 samples, 0.06%) + + + +dput.part.26 (2,781,634,248 samples, 0.36%) + + + +leveldb::IteratorWrapper::Update (91,893,987 samples, 0.01%) + + + +account_entity_enqueue (758,943,054 samples, 0.10%) + + + +leveldb::Iterator::~Iterator (171,058,153 samples, 0.02%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (584,535,587 samples, 0.08%) + + + +osq_lock (5,754,102,198 samples, 0.75%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +call_rwsem_down_write_failed_killable (21,281,177,275 samples, 2.78%) +ca.. + + +dput.part.26 (69,519,928 samples, 0.01%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (978,807,051 samples, 0.13%) + + + +vfs_write (1,338,057,888 samples, 0.17%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (694,001,740 samples, 0.09%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +[unknown] (2,199,461,477 samples, 0.29%) + + + +leveldb::DBImpl::BackgroundCompaction (502,229,687 samples, 0.07%) + + + +std::__invoke_impl<void, leveldb::(anonymous namespace)::DBPreFetchIter::SeekToLast (166,155,643 samples, 0.02%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::GetAndParseTrueValue (676,244,565 samples, 0.09%) + + + +ext4_file_open (639,060,841 samples, 0.08%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Lookup (654,681,623 samples, 0.09%) + + + +leveldb::DecodeEntry (7,011,010,143 samples, 0.92%) + + + +futex_wait_queue_me (3,575,456,172 samples, 0.47%) + + + +path_init (930,388,909 samples, 0.12%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +enqueue_task_fair (932,810,118 samples, 0.12%) + + + +_raw_spin_lock (1,193,425,564 samples, 0.16%) + + + +swapgs_restore_regs_and_return_to_usermode (3,223,477,152 samples, 0.42%) + + + +_raw_spin_lock (629,355,040 samples, 0.08%) + + + +leveldb::Version::~Version (171,058,153 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (3,370,620,948 samples, 0.44%) + + + +security_file_mprotect (633,826,129 samples, 0.08%) + + + +_raw_spin_lock (1,152,487,671 samples, 0.15%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_terminate_output (666,878,188 samples, 0.09%) + + + +error_entry (89,696,599 samples, 0.01%) + + + +ext4_invalidatepage (72,179,869 samples, 0.01%) + + + +do_syscall_64 (146,263,630,531 samples, 19.09%) +do_syscall_64 + + +leveldb::Block::Iter::status (434,661,999 samples, 0.06%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +__pagevec_lru_add_fn (673,553,638 samples, 0.09%) + + + +update_cfs_group (576,071,372 samples, 0.08%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +leveldb::Slice::Slice (543,297,489 samples, 0.07%) + + + +__calc_delta (638,583,320 samples, 0.08%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::~DBPreFetchIter (171,058,153 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (1,439,812,593 samples, 0.19%) + + + +leveldb::Block::Iter::ParseNextKey (169,795,995 samples, 0.02%) + + + +x86_pmu_disable (179,025,732 samples, 0.02%) + + + +lockref_put_return (2,756,465,314 samples, 0.36%) + + + +unlazy_walk (2,014,530,344 samples, 0.26%) + + + +_cond_resched (446,376,357 samples, 0.06%) + + + +leveldb::TableBuilder::Add (494,210,836 samples, 0.06%) + + + +file_free_rcu (456,643,946 samples, 0.06%) + + + +mntput_no_expire (95,057,570 samples, 0.01%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Insert (173,045,168 samples, 0.02%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +__memcmp_avx2_movbe (889,043,121 samples, 0.12%) + + + +lockref_put_return (2,781,634,248 samples, 0.36%) + + + +sys_read (243,939,212 samples, 0.03%) + + + +std::use_facet<std::codecvt<char, char, __mbstate_t> > (571,493,791 samples, 0.07%) + + + +leveldb::MemTable::Add (173,045,168 samples, 0.02%) + + + +leveldb::IteratorWrapper::Valid (441,358,956 samples, 0.06%) + + + +leveldb::Slice::size (280,739,474 samples, 0.04%) + + + +syscall_return_via_sysret (4,309,861,164 samples, 0.56%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (701,468,842 samples, 0.09%) + + + +dput (6,417,932,767 samples, 0.84%) + + + +leveldb::Slice::data (136,834,939 samples, 0.02%) + + + +clear_buddies (684,852,941 samples, 0.09%) + + + +prepare_exit_to_usermode (1,131,058,363 samples, 0.15%) + + + +leveldb::IteratorWrapper::value (952,969,680 samples, 0.12%) + + + +sync_mm_rss (106,538,215 samples, 0.01%) + + + +leveldb::GetVarint32Ptr (447,964,229 samples, 0.06%) + + + +do_syscall_64 (639,247,449 samples, 0.08%) + + + +std::basic_filebuf<char, std::char_traits<char> >::~basic_filebuf (23,558,972,053 samples, 3.08%) +std.. + + +leveldb::DecodeEntry (1,082,588,808 samples, 0.14%) + + + +irq_exit (456,643,946 samples, 0.06%) + + + +leveldb::DecodeFixed32 (607,330,798 samples, 0.08%) + + + +__perf_event_task_sched_in (65,670,829 samples, 0.01%) + + + +block_invalidatepage (72,179,869 samples, 0.01%) + + + +ctx_sched_out (179,025,732 samples, 0.02%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +dput (25,298,668,471 samples, 3.30%) +dput + + +leveldb::ExtractUserKey (729,037,031 samples, 0.10%) + + + +std::basic_ios<char, std::char_traits<char> >::_M_cache_locale@plt (507,568,544 samples, 0.07%) + + + +leveldb::Block::Iter::ParseNextKey (721,418,901 samples, 0.09%) + + + +leveldb::Slice::size (617,370,301 samples, 0.08%) + + + +_IO_no_init (770,446,213 samples, 0.10%) + + + +sys_clone (107,903,129 samples, 0.01%) + + + +leveldb::IteratorWrapper::value (664,309,428 samples, 0.09%) + + + +copy_page_to_iter (591,615,404 samples, 0.08%) + + + +entry_SYSCALL_64_after_hwframe (1,220,487,886 samples, 0.16%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::InitDataBlock (1,629,483,297 samples, 0.21%) + + + +ext4_mark_inode_dirty (92,914,075 samples, 0.01%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +_int_malloc (3,193,640,351 samples, 0.42%) + + + +ttwu_do_activate (114,458,310 samples, 0.01%) + + + +__vma_adjust (992,931,564 samples, 0.13%) + + + +ext4_file_read_iter (591,615,404 samples, 0.08%) + + + +leveldb::Block::Iter::value (564,589,827 samples, 0.07%) + + + +leveldb::(anonymous namespace)::MergingIterator::Valid (733,731,694 samples, 0.10%) + + + +select_idle_sibling (601,929,703 samples, 0.08%) + + + +vfs_read (93,669,937 samples, 0.01%) + + + +lockref_get_not_zero (5,383,271,883 samples, 0.70%) + + + +leveldb::DBImpl::ReadValueLog (2,565,787,455 samples, 0.33%) + + + +virtual thunk to std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream (1,362,079,681 samples, 0.18%) + + + +[unknown] (23,558,972,053 samples, 3.08%) +[un.. + + +do_mprotect_pkey (50,758,450,824 samples, 6.63%) +do_mprote.. + + +leveldb::DecodeEntry (2,716,217,578 samples, 0.35%) + + + +leveldb::DecodeFixed64 (1,507,365,086 samples, 0.20%) + + + +lockref_put_return (5,846,956,344 samples, 0.76%) + + + +leveldb::Block::Iter::value (578,542,864 samples, 0.08%) + + + +__update_load_avg_se.isra.38 (1,618,691,939 samples, 0.21%) + + + +pagecache_get_page (7,516,533,427 samples, 0.98%) + + + +leveldb::WriteBatch::Iterate (677,142,300 samples, 0.09%) + + + +leveldb::(anonymous namespace)::DBIter::FindNextUserEntry (29,067,094,617 samples, 3.79%) +leve.. + + +std::use_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > > (704,916,234 samples, 0.09%) + + + +leveldb::GetLengthPrefixedSlice (490,869,959 samples, 0.06%) + + + +std::__basic_file<char>::is_open (474,444,350 samples, 0.06%) + + + +leveldb::(anonymous namespace)::MergingIterator::FindSmallest (518,764,842 samples, 0.07%) + + + +leveldb::IteratorWrapper::iter (81,602,570 samples, 0.01%) + + + +vfs_read (18,156,258,789 samples, 2.37%) +v.. + + +leveldb::(anonymous namespace)::DBIter::SaveKey (1,118,878,781 samples, 0.15%) + + + +leveldb::IteratorWrapper::Update (3,850,945,878 samples, 0.50%) + + + +leveldb::Slice::compare (71,274,061 samples, 0.01%) + + + +truncate_inode_pages_final (171,058,153 samples, 0.02%) + + + +discard_slab (521,802,005 samples, 0.07%) + + + +leveldb::MemTable::KeyComparator::operator (126,935,571 samples, 0.02%) + + + +leveldb::ValueLogFileName (729,732,937 samples, 0.10%) + + + +apic_timer_interrupt (632,809,847 samples, 0.08%) + + + +__lseek (906,102,231 samples, 0.12%) + + + +leveldb::Slice::Slice (648,363,853 samples, 0.08%) + + + +std::basic_filebuf<char, std::char_traits<char> >::underflow (676,296,386 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksForward (4,273,435,794 samples, 0.56%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (989,775,499 samples, 0.13%) + + + +leveldb::(anonymous namespace)::MergingIterator::Next (2,217,949,117 samples, 0.29%) + + + +leveldb::BlockBuilder::Add (494,210,836 samples, 0.06%) + + + +leveldb::ExtractUserKey (580,359,697 samples, 0.08%) + + + +x86_pmu_enable (111,149,746 samples, 0.01%) + + + +copy_process.part.36 (107,903,129 samples, 0.01%) + + + +leveldb::IteratorWrapper::key (756,263,251 samples, 0.10%) + + + +security_file_free (1,433,422,611 samples, 0.19%) + + + +__entry_trampoline_start (637,146,608 samples, 0.08%) + + + +leveldb::ParsedInternalKey::ParsedInternalKey (434,246,096 samples, 0.06%) + + + +memcg_kmem_get_cache (1,375,189,873 samples, 0.18%) + + + +std::has_facet<std::codecvt<char, char, __mbstate_t> > (1,297,324,360 samples, 0.17%) + + + +leveldb::MemTableIterator::Prev (145,856,380 samples, 0.02%) + + + +mntput (95,057,570 samples, 0.01%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (137,878,061,514 samples, 18.00%) +leveldb::(anonymous namespa.. + + +__entry_trampoline_start (514,680,691 samples, 0.07%) + + + +operator new[]@plt (102,852,201 samples, 0.01%) + + + +leveldb::Slice::size (715,944,923 samples, 0.09%) + + + +std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadBackward (138,422,696,426 samples, 18.07%) +std::thread::_Invoker<std::t.. + + +leveldb::IteratorWrapper::key (463,478,311 samples, 0.06%) + + + +dget_parent (17,457,492,280 samples, 2.28%) +d.. + + +get_unused_fd_flags (1,725,798,610 samples, 0.23%) + + + +__fget_light (754,061,625 samples, 0.10%) + + + +__do_page_fault (591,615,404 samples, 0.08%) + + + +fopen@@GLIBC_2.2.5 (74,838,108 samples, 0.01%) + + + +__atime_needs_update (597,703,492 samples, 0.08%) + + + +leveldb::Slice::Slice (417,826,789 samples, 0.05%) + + + +leveldb::Block::Iter::SeekToRestartPoint (2,410,448,401 samples, 0.31%) + + + +cfree@GLIBC_2.2.5 (544,634,912 samples, 0.07%) + + + +ext4_da_write_begin (150,809,070 samples, 0.02%) + + + +swapgs_restore_regs_and_return_to_usermode (1,257,598,907 samples, 0.16%) + + + +activate_task (80,681,622 samples, 0.01%) + + + +lockref_put_return (275,373,433 samples, 0.04%) + + + +sys_futex (69,476,462 samples, 0.01%) + + + +[unknown] (735,034,379 samples, 0.10%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (509,409,203 samples, 0.07%) + + + +handle_mm_fault (13,842,735,546 samples, 1.81%) +h.. + + +leveldb::IteratorWrapper::value (656,861,837 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (915,173,863 samples, 0.12%) + + + +deactivate_task (1,215,120,613 samples, 0.16%) + + + +__softirqentry_text_start (521,802,005 samples, 0.07%) + + + +dequeue_entity (698,159,775 samples, 0.09%) + + + +leveldb::ExtractUserKey (2,548,563,521 samples, 0.33%) + + + +finish_task_switch (971,545,415 samples, 0.13%) + + + +leveldb::IteratorWrapper::key (779,598,924 samples, 0.10%) + + + +[unknown] (37,137,106,651 samples, 4.85%) +[unkno.. + + +smp_apic_timer_interrupt (632,809,847 samples, 0.08%) + + + +lockref_get_not_zero (6,715,777,495 samples, 0.88%) + + + +leveldb::DBImpl::Write (1,473,240,706 samples, 0.19%) + + + +kmem_cache_alloc (644,295,412 samples, 0.08%) + + + +__libc_read (20,303,189,192 samples, 2.65%) +__.. + + +__vfs_read (43,803,140,023 samples, 5.72%) +__vfs_r.. + + +__fget_light (2,434,318,428 samples, 0.32%) + + + +leveldb::MemTable::KeyComparator::operator (842,593,673 samples, 0.11%) + + + +lockref_get_not_zero (17,432,600,341 samples, 2.28%) +l.. + + +__alloc_pages_nodemask (120,633,584 samples, 0.02%) + + + +[unknown] (641,364,442 samples, 0.08%) + + + +__generic_file_write_iter (455,374,733 samples, 0.06%) + + + +leveldb::Slice::Slice (486,199,798 samples, 0.06%) + + + +std::thread::_M_start_thread (166,155,643 samples, 0.02%) + + + +_raw_spin_lock (162,954,172 samples, 0.02%) + + + +perf_iterate_ctx (1,765,639,429 samples, 0.23%) + + + +do_syscall_64 (15,787,036,406 samples, 2.06%) +d.. + + +leveldb::ExtractUserKey (3,098,735,871 samples, 0.40%) + + + +apic_timer_interrupt (488,660,560 samples, 0.06%) + + + +change_protection_range (896,725,907 samples, 0.12%) + + + +kmem_cache_alloc (2,316,549,900 samples, 0.30%) + + + +lockref_get_not_zero (2,584,050,632 samples, 0.34%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksBackward (133,445,266 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (72,344,821 samples, 0.01%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +[unknown] (978,973,591 samples, 0.13%) + + + +do_syscall_64 (1,220,487,886 samples, 0.16%) + + + +leveldb::GetVarint32Ptr (543,862,875 samples, 0.07%) + + + +dput (451,510,259 samples, 0.06%) + + + +security_file_permission (197,239,634 samples, 0.03%) + + + +may_expand_vm (1,192,943,092 samples, 0.16%) + + + +leveldb::Slice::Slice (93,070,666 samples, 0.01%) + + + +alloc_pages_vma (4,197,840,382 samples, 0.55%) + + + +lockref_get (624,823,360 samples, 0.08%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace@plt (98,111,593 samples, 0.01%) + + + +sys_futex (9,361,713,732 samples, 1.22%) + + + +handle_mm_fault (1,135,634,020 samples, 0.15%) + + + +ext4_da_write_end (219,757,339 samples, 0.03%) + + + +leveldb::(anonymous namespace)::DBPreFetchIter::GetAndParseTrueValue (7,325,535,789 samples, 0.96%) + + + +generic_file_read_iter (42,455,597,338 samples, 5.54%) +generic.. + + +leveldb::GetLengthPrefixedSlice (2,636,941,844 samples, 0.34%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (2,684,891,320 samples, 0.35%) + + + +enqueue_entity (1,942,770,957 samples, 0.25%) + + + +up_read (602,341,620 samples, 0.08%) + + + +leveldb::GetVarint32 (543,862,875 samples, 0.07%) + + + +std::thread::_Invoker<std::tuple<leveldb::(anonymous namespace)::DBPreFetchIter::PreFetchThreadForward (93,253,103,040 samples, 12.17%) +std::thread::_Invo.. + + +kfree (620,901,817 samples, 0.08%) + + + +leveldb::(anonymous namespace)::CleanupIteratorState (171,058,153 samples, 0.02%) + + + +leveldb::Slice::Slice (1,308,452,339 samples, 0.17%) + + + +leveldb::IteratorWrapper::Valid (202,332,270 samples, 0.03%) + + + +_cond_resched (597,233,596 samples, 0.08%) + + + +dput (275,373,433 samples, 0.04%) + + + +leveldb::(anonymous namespace)::LRUCache::Lookup (569,667,157 samples, 0.07%) + + + +__GI___fileno (2,544,490,671 samples, 0.33%) + + + +fput (1,350,469,926 samples, 0.18%) + + + +rwsem_wake (563,012,882 samples, 0.07%) + + + +__fsnotify_parent (6,875,040,348 samples, 0.90%) + + + +entry_SYSCALL_64_after_hwframe (19,337,009,525 samples, 2.52%) +en.. + + +_raw_spin_lock (424,722,982 samples, 0.06%) + + + +__clone (114,049,101 samples, 0.01%) + + + + diff --git a/设计文档.assets/recover_valuelog.png b/设计文档.assets/recover_valuelog.png new file mode 100644 index 0000000000000000000000000000000000000000..82c3ddd6915da62a375ddf89d84a4e7b91f7a81f GIT binary patch literal 31466 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/write_1.svg b/设计文档.assets/write_1.svg new file mode 100644 index 0000000..87cb465 --- /dev/null +++ b/设计文档.assets/write_1.svg @@ -0,0 +1,5766 @@ + + + + + + + + + + + + + + +Flame Graph + +Reset Zoom +Search +ic + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irqrestore (20,202,020 samples, 0.11%) + + + +generic_permission (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +path_get (10,101,010 samples, 0.06%) + + + +leveldb::GetVarint32 (20,202,020 samples, 0.11%) + + + +__aa_path_perm (222,222,220 samples, 1.24%) + + + +operator new (10,101,010 samples, 0.06%) + + + +submit_bio_noacct (20,202,020 samples, 0.11%) + + + +leveldb::EncodeFixed32 (10,101,010 samples, 0.06%) + + + +ext4_da_write_begin (2,101,010,080 samples, 11.69%) +ext4_da_write_begin + + +fault_in_readable (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::Slice::size (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +x64_sys_call (10,101,010 samples, 0.06%) + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +leveldb::DecodeFixed32 (20,202,020 samples, 0.11%) + + + +filemap_release_folio (141,414,140 samples, 0.79%) + + + +kmem_cache_alloc (60,606,060 samples, 0.34%) + + + +security_file_free (20,202,020 samples, 0.11%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +leveldb::GetVarint32Ptr (50,505,050 samples, 0.28%) + + + +xas_start (30,303,030 samples, 0.17%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +folio_batch_move_lru (70,707,070 samples, 0.39%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::operator[] (80,808,080 samples, 0.45%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::find (70,707,070 samples, 0.39%) + + + +is_vmalloc_addr (10,101,010 samples, 0.06%) + + + +aa_str_perms (202,020,200 samples, 1.12%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +path_openat (1,232,323,220 samples, 6.86%) +path_openat + + +leveldb::GetLengthPrefixedSlice (10,101,010 samples, 0.06%) + + + +locks_remove_posix (20,202,020 samples, 0.11%) + + + +fd_install (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +apparmor_file_permission (20,202,020 samples, 0.11%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.06%) + + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +[libstdc++.so.6.0.30] (10,101,010 samples, 0.06%) + + + +mptspi_qcmd (20,202,020 samples, 0.11%) + + + +ext4_sync_file (141,414,140 samples, 0.79%) + + + +entry_SYSCALL_64_after_hwframe (292,929,290 samples, 1.63%) + + + +balance_dirty_pages_ratelimited_flags (181,818,180 samples, 1.01%) + + + +__get_user_8 (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +lruvec_stat_mod_folio (10,101,010 samples, 0.06%) + + + +new_slab (10,101,010 samples, 0.06%) + + + +_raw_spin_lock (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_base (30,303,030 samples, 0.17%) + + + +down_write (10,101,010 samples, 0.06%) + + + +__fsnotify_parent (40,404,040 samples, 0.22%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (30,303,030 samples, 0.17%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Insert (282,828,280 samples, 1.57%) + + + +dput (10,101,010 samples, 0.06%) + + + +current_obj_cgroup (10,101,010 samples, 0.06%) + + + +percpu_counter_add_batch (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__srcu_read_lock (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator* (10,101,010 samples, 0.06%) + + + +do_writev (10,101,010 samples, 0.06%) + + + +mem_cgroup_flush_stats.part.0 (131,313,130 samples, 0.73%) + + + +path_name (161,616,160 samples, 0.90%) + + + +__es_tree_search.isra.0 (10,101,010 samples, 0.06%) + + + +leveldb::EncodeVarint32 (20,202,020 samples, 0.11%) + + + +_raw_read_lock (20,202,020 samples, 0.11%) + + + +xas_find (10,101,010 samples, 0.06%) + + + +lockref_get_not_zero (20,202,020 samples, 0.11%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (111,111,110 samples, 0.62%) + + + +__folio_cancel_dirty (10,101,010 samples, 0.06%) + + + +void std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_realloc_insert<std::pair<leveldb::Slice, leveldb::Slice> > (111,111,110 samples, 0.62%) + + + +__filemap_fdatawrite_range (20,202,020 samples, 0.11%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::max_size (10,101,010 samples, 0.06%) + + + +std::locale::~locale (20,202,020 samples, 0.11%) + + + +leveldb::log::Writer::AddRecord (484,848,480 samples, 2.70%) +le.. + + +ksys_write (111,111,110 samples, 0.62%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +void std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::_M_push_back_aux<leveldb::DBImpl::Writer*> (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (20,202,020 samples, 0.11%) + + + +void std::_Destroy<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice> > (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (2,040,404,020 samples, 11.35%) +leveldb::SkipLis.. + + +aa_label_next_confined (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatch::WriteBatch (10,101,010 samples, 0.06%) + + + +std::locale::operator= (10,101,010 samples, 0.06%) + + + +get_partial_node.part.0 (10,101,010 samples, 0.06%) + + + +__get_random_u32_below (10,101,010 samples, 0.06%) + + + +___slab_alloc (151,515,150 samples, 0.84%) + + + +__block_commit_write (141,414,140 samples, 0.79%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::vector (50,505,050 samples, 0.28%) + + + +open_last_lookups (20,202,020 samples, 0.11%) + + + +ima_file_check (30,303,030 samples, 0.17%) + + + +mntget (10,101,010 samples, 0.06%) + + + +init_file (60,606,060 samples, 0.34%) + + + +void std::thread::_Invoker<std::tuple<void (7,101,010,030 samples, 39.52%) +void std::thread::_Invoker<std::tuple<void + + +leveldb::WriteBatchInternal::Contents (20,202,020 samples, 0.11%) + + + +apparmor_file_free_security (20,202,020 samples, 0.11%) + + + +alloc_fd (10,101,010 samples, 0.06%) + + + +std::mutex::lock (10,101,010 samples, 0.06%) + + + +__fdget_pos (10,101,010 samples, 0.06%) + + + +unsigned long const& std::min<unsigned long> (10,101,010 samples, 0.06%) + + + +leveldb::PutLengthPrefixedSlice (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::MemTableInserter::Put (2,212,121,190 samples, 12.31%) +leveldb::(anonymou.. + + +kmem_cache_alloc (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +putname (20,202,020 samples, 0.11%) + + + +leveldb::VarintLength (10,101,010 samples, 0.06%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +leveldb::port::Mutex::Unlock (10,101,010 samples, 0.06%) + + + +folio_alloc (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (979,797,970 samples, 5.45%) +leveldb.. + + +std::pair<leveldb::Slice, leveldb::Slice>& std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::emplace_back<std::pair<leveldb::Slice, leveldb::Slice> > (111,111,110 samples, 0.62%) + + + +leveldb::MemTable::KeyComparator::operator (151,515,150 samples, 0.84%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (60,606,060 samples, 0.34%) + + + +leveldb::log::Writer::EmitPhysicalRecord (1,111,111,100 samples, 6.18%) +leveldb:.. + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::vector (70,707,070 samples, 0.39%) + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +lockref_put_return (10,101,010 samples, 0.06%) + + + +__alloc_pages (10,101,010 samples, 0.06%) + + + +ima_file_free (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::Slice::data (10,101,010 samples, 0.06%) + + + +block_invalidate_folio (161,616,160 samples, 0.90%) + + + +leveldb::Benchmark::DoWrite (1,484,848,470 samples, 8.26%) +leveldb::Be.. + + +std::ostream::write (20,202,020 samples, 0.11%) + + + +ext4_invalidate_folio (202,020,200 samples, 1.12%) + + + +std::_Select1st<std::pair<unsigned long const, unsigned long> >::operator (10,101,010 samples, 0.06%) + + + +memcpy@plt (10,101,010 samples, 0.06%) + + + +irqentry_exit (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (212,121,210 samples, 1.18%) + + + +__es_insert_extent (30,303,030 samples, 0.17%) + + + +__rmqueue_pcplist (50,505,050 samples, 0.28%) + + + +ext4_do_writepages (20,202,020 samples, 0.11%) + + + +__folio_mark_dirty (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::difference_type __gnu_cxx::operator-<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > > (10,101,010 samples, 0.06%) + + + +blk_mq_dispatch_rq_list (121,212,120 samples, 0.67%) + + + +__memmove_evex_unaligned_erms (363,636,360 samples, 2.02%) +_.. + + +ext4_inode_attach_jinode (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::WriteValueLog (505,050,500 samples, 2.81%) +le.. + + +send_to_group (232,323,230 samples, 1.29%) + + + +__snprintf (10,101,010 samples, 0.06%) + + + +try_to_unlazy (30,303,030 samples, 0.17%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +aa_dfa_match (181,818,180 samples, 1.01%) + + + +xas_descend (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::vector (10,101,010 samples, 0.06%) + + + +std::operator& (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +ext4_da_write_end (181,818,180 samples, 1.01%) + + + +__get_random_u32_below (10,101,010 samples, 0.06%) + + + +fsnotify_handle_inode_event.isra.0 (111,111,110 samples, 0.62%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_deallocate (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.06%) + + + +leveldb::Status::~Status (10,101,010 samples, 0.06%) + + + +ext4_io_submit (20,202,020 samples, 0.11%) + + + +copy_from_kernel_nofault_allowed (10,101,010 samples, 0.06%) + + + +__rcu_read_unlock (10,101,010 samples, 0.06%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +leveldb::MemTableIterator::key (191,919,190 samples, 1.07%) + + + +complete_walk (30,303,030 samples, 0.17%) + + + +d_absolute_path (10,101,010 samples, 0.06%) + + + +scsi_queue_rq (121,212,120 samples, 0.67%) + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__kmalloc (20,202,020 samples, 0.11%) + + + +generic_perform_write (10,101,010 samples, 0.06%) + + + +do_iter_readv_writev (2,808,080,780 samples, 15.63%) +do_iter_readv_writev + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_base (10,101,010 samples, 0.06%) + + + +leveldb::Benchmark::ThreadBody (6,696,969,630 samples, 37.27%) +leveldb::Benchmark::ThreadBody + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::NewNode (20,202,020 samples, 0.11%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +std::ostream::sentry::sentry (20,202,020 samples, 0.11%) + + + +leveldb::TableBuilder::Flush (30,303,030 samples, 0.17%) + + + +rw_verify_area (30,303,030 samples, 0.17%) + + + +security_file_permission (20,202,020 samples, 0.11%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_end (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadEntryPoint (404,040,400 samples, 2.25%) +l.. + + +void std::_Destroy_aux<true>::__destroy<std::pair<leveldb::Slice, leveldb::Slice>*> (10,101,010 samples, 0.06%) + + + +strchr@plt (10,101,010 samples, 0.06%) + + + +leveldb::Benchmark::Run (454,545,450 samples, 2.53%) +le.. + + +dquot_file_open (20,202,020 samples, 0.11%) + + + +folio_unlock (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.11%) + + + +vfs_writev (3,262,626,230 samples, 18.16%) +vfs_writev + + +copy_page_from_iter_atomic (20,202,020 samples, 0.11%) + + + +std::istream::tellg (20,202,020 samples, 0.11%) + + + +evict (454,545,450 samples, 2.53%) +ev.. + + +std::allocator_traits<std::allocator<std::pair<unsigned long, unsigned long> > >::deallocate (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::BuildBatchGroup (40,404,040 samples, 0.22%) + + + +__alloc_pages (20,202,020 samples, 0.11%) + + + +__filemap_add_folio (505,050,500 samples, 2.81%) +__.. + + +irq_exit_rcu (30,303,030 samples, 0.17%) + + + +vfs_write (434,343,430 samples, 2.42%) +vf.. + + +_int_malloc (10,101,010 samples, 0.06%) + + + +inode_needs_update_time (50,505,050 samples, 0.28%) + + + +get_vma_policy (10,101,010 samples, 0.06%) + + + +__gthread_mutex_unlock (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::pair<unsigned long, unsigned long>* std::__relocate_a<std::pair<unsigned long, unsigned long>*, std::pair<unsigned long, unsigned long>*, std::allocator<std::pair<unsigned long, unsigned long> > > (10,101,010 samples, 0.06%) + + + +__blk_mq_sched_dispatch_requests (121,212,120 samples, 0.67%) + + + +ext4_buffered_write_iter (50,505,050 samples, 0.28%) + + + +__rseq_handle_notify_resume (10,101,010 samples, 0.06%) + + + +__rcu_read_unlock (20,202,020 samples, 0.11%) + + + +copy_from_kernel_nofault (10,101,010 samples, 0.06%) + + + +leveldb::MemTableIterator::value (10,101,010 samples, 0.06%) + + + +std::_Deque_base<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::_M_get_Tp_allocator (10,101,010 samples, 0.06%) + + + +balance_dirty_pages_ratelimited (10,101,010 samples, 0.06%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.11%) + + + +find_lock_entries (40,404,040 samples, 0.22%) + + + +_IO_link_in (20,202,020 samples, 0.11%) + + + +leveldb::Status::operator= (20,202,020 samples, 0.11%) + + + +_int_malloc (20,202,020 samples, 0.11%) + + + +leveldb::ExtractUserKey (10,101,010 samples, 0.06%) + + + +std::less<unsigned long>::operator (10,101,010 samples, 0.06%) + + + +ext4_da_get_block_prep (282,828,280 samples, 1.57%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +vfs_write (101,010,100 samples, 0.56%) + + + +leveldb::crc32c::Value (10,101,010 samples, 0.06%) + + + +_int_malloc (50,505,050 samples, 0.28%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (10,101,010 samples, 0.06%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::empty (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_max_size (10,101,010 samples, 0.06%) + + + +ext4_buffered_write_iter (191,919,190 samples, 1.07%) + + + +truncate_inode_pages_range (10,101,010 samples, 0.06%) + + + +leveldb::port::Mutex::AssertHeld (10,101,010 samples, 0.06%) + + + +std::less<unsigned long>::operator (30,303,030 samples, 0.17%) + + + +leveldb::Status::OK (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::push_back (111,111,110 samples, 0.62%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +mntget (10,101,010 samples, 0.06%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +filemap_get_entry (20,202,020 samples, 0.11%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +get_page_from_freelist (131,313,130 samples, 0.73%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.11%) + + + +aa_label_next_confined (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +ktime_get_coarse_real_ts64 (20,202,020 samples, 0.11%) + + + +[unknown] (60,606,060 samples, 0.34%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__GI___libc_write (979,797,970 samples, 5.45%) +__GI___.. + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (70,707,070 samples, 0.39%) + + + +folio_alloc (686,868,680 samples, 3.82%) +foli.. + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +void std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long, unsigned long> > (40,404,040 samples, 0.22%) + + + +mpt_put_msg_frame (111,111,110 samples, 0.62%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::size (10,101,010 samples, 0.06%) + + + +__GI___pthread_enable_asynccancel (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock (10,101,010 samples, 0.06%) + + + +consume_obj_stock (10,101,010 samples, 0.06%) + + + +leveldb::Benchmark::WriteSeq (1,484,848,470 samples, 8.26%) +leveldb::Be.. + + +leveldb::DBImpl::WriteValueLog (212,121,210 samples, 1.18%) + + + +inotify_free_event (40,404,040 samples, 0.22%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Insert (2,131,313,110 samples, 11.86%) +leveldb::SkipList.. + + +common_interrupt (10,101,010 samples, 0.06%) + + + +std::pair<unsigned long, unsigned long>* std::__niter_base<std::pair<unsigned long, unsigned long>*> (10,101,010 samples, 0.06%) + + + +__x64_sys_unlink (454,545,450 samples, 2.53%) +__.. + + +std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (10,101,010 samples, 0.06%) + + + +x64_sys_call (80,808,080 samples, 0.45%) + + + +do_syscall_64 (1,838,383,820 samples, 10.23%) +do_syscall_64 + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.06%) + + + +unlink_chunk.constprop.0 (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_do_relocate (30,303,030 samples, 0.17%) + + + +leveldb::GetVarint32 (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.06%) + + + +leveldb::Arena::AllocateAligned (10,101,010 samples, 0.06%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice> > (30,303,030 samples, 0.17%) + + + +x64_sys_call (1,525,252,510 samples, 8.49%) +x64_sys_call + + +entry_SYSCALL_64_after_hwframe (454,545,450 samples, 2.53%) +en.. + + +kfree (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.06%) + + + +x64_sys_call (343,434,340 samples, 1.91%) +x.. + + +mptscsih_qcmd (20,202,020 samples, 0.11%) + + + +std::basic_fstream<char, std::char_traits<char> >::is_open (10,101,010 samples, 0.06%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +leveldb::EncodeFixed32 (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_allocate (10,101,010 samples, 0.06%) + + + +leveldb::Slice::data (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::push_back (40,404,040 samples, 0.22%) + + + +std::ios_base::ios_base (30,303,030 samples, 0.17%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_Vector_base (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::BackgroundCall (404,040,400 samples, 2.25%) +l.. + + +security_file_free (30,303,030 samples, 0.17%) + + + +delete_from_page_cache_batch (70,707,070 samples, 0.39%) + + + +leveldb::PutLengthPrefixedSlice (20,202,020 samples, 0.11%) + + + +fsnotify (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +get_mem_cgroup_from_mm (20,202,020 samples, 0.11%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (10,101,010 samples, 0.06%) + + + +leveldb::log::Writer::AddRecord (1,121,212,110 samples, 6.24%) +leveldb:.. + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +xas_load (60,606,060 samples, 0.34%) + + + +memcmp@plt (10,101,010 samples, 0.06%) + + + +leveldb::Slice::data (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_allocate (20,202,020 samples, 0.11%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_end (10,101,010 samples, 0.06%) + + + +vma_alloc_folio (30,303,030 samples, 0.17%) + + + +getname_flags.part.0 (141,414,140 samples, 0.79%) + + + +ext4_claim_free_clusters (10,101,010 samples, 0.06%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::front (10,101,010 samples, 0.06%) + + + +balance_dirty_pages (131,313,130 samples, 0.73%) + + + +leveldb::InternalKeyComparator::Compare (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +try_charge_memcg (30,303,030 samples, 0.17%) + + + +blk_mq_flush_plug_list (121,212,120 samples, 0.67%) + + + +void __gnu_cxx::new_allocator<leveldb::DBImpl::Writer*>::construct<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*> (10,101,010 samples, 0.06%) + + + +bool __gnu_cxx::operator!=<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > > (10,101,010 samples, 0.06%) + + + +leveldb::EncodeVarint32 (10,101,010 samples, 0.06%) + + + +leveldb::Status::Status (10,101,010 samples, 0.06%) + + + +alloc_buffer_head (222,222,220 samples, 1.24%) + + + +ext4_da_write_begin (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::Slice::data (20,202,020 samples, 0.11%) + + + +leveldb::WriteBatch::Put (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_relocate (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (10,101,010 samples, 0.06%) + + + +leveldb::Slice::remove_prefix (10,101,010 samples, 0.06%) + + + +std::remove_reference<char const*&>::type&& std::move<char const*&> (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (10,101,010 samples, 0.06%) + + + +std::ios_base::~ios_base (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::push_back (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +filemap_alloc_folio (10,101,010 samples, 0.06%) + + + +leveldb::GetLengthPrefixedSlice (30,303,030 samples, 0.17%) + + + +std::pair<leveldb::Slice, leveldb::Slice>::pair<leveldb::Slice, leveldb::Slice, true> (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.06%) + + + +fault_in_readable (20,202,020 samples, 0.11%) + + + +std::ios_base::_M_init (30,303,030 samples, 0.17%) + + + +get_unused_fd_flags (50,505,050 samples, 0.28%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (10,101,010 samples, 0.06%) + + + +[unknown] (60,606,060 samples, 0.34%) + + + +mpt_put_msg_frame (20,202,020 samples, 0.11%) + + + +__GI___libc_cleanup_push_defer (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_right (10,101,010 samples, 0.06%) + + + +do_writepages (20,202,020 samples, 0.11%) + + + +__memmove_evex_unaligned_erms (30,303,030 samples, 0.17%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::PutLengthPrefixedSlice (10,101,010 samples, 0.06%) + + + +__blk_mq_do_dispatch_sched (121,212,120 samples, 0.67%) + + + +[unknown] (60,606,060 samples, 0.34%) + + + +[unknown] (262,626,260 samples, 1.46%) + + + +leveldb::TableBuilder::WriteBlock (10,101,010 samples, 0.06%) + + + +allocate_slab (141,414,140 samples, 0.79%) + + + +__vsnprintf_internal (10,101,010 samples, 0.06%) + + + +std::basic_filebuf<char, std::char_traits<char> >::xsputn (60,606,060 samples, 0.34%) + + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +__x64_sys_lseek (80,808,080 samples, 0.45%) + + + +__radix_tree_lookup (10,101,010 samples, 0.06%) + + + +ext4_file_write_iter (2,797,979,770 samples, 15.57%) +ext4_file_write_iter + + +folio_alloc_buffers (10,101,010 samples, 0.06%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (20,202,020 samples, 0.11%) + + + +void __gnu_cxx::new_allocator<leveldb::DBImpl::Writer*>::construct<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*> (20,202,020 samples, 0.11%) + + + +inotify_handle_inode_event (171,717,170 samples, 0.96%) + + + +leveldb::InternalKeyComparator::Compare (80,808,080 samples, 0.45%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.06%) + + + +__srcu_read_lock (30,303,030 samples, 0.17%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.06%) + + + +x64_sys_call (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::MutexLock::MutexLock (10,101,010 samples, 0.06%) + + + +ext4_block_write_begin (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +ext4_block_write_begin (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.06%) + + + +make_vfsuid (10,101,010 samples, 0.06%) + + + +__filemap_get_folio (20,202,020 samples, 0.11%) + + + +security_file_open (616,161,610 samples, 3.43%) +sec.. + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::back (10,101,010 samples, 0.06%) + + + +scsi_queue_rq (20,202,020 samples, 0.11%) + + + +filemap_alloc_folio (30,303,030 samples, 0.17%) + + + +file_close_fd (10,101,010 samples, 0.06%) + + + +ext4_evict_inode (454,545,450 samples, 2.53%) +ex.. + + +balance_dirty_pages_ratelimited_flags (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (10,101,010 samples, 0.06%) + + + +leveldb::Slice::Slice (40,404,040 samples, 0.22%) + + + +__dynamic_cast (10,101,010 samples, 0.06%) + + + +ext4_file_write_iter (50,505,050 samples, 0.28%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (979,797,970 samples, 5.45%) +leveldb.. + + +__cond_resched (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::Writer*& std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::emplace_back<leveldb::DBImpl::Writer*> (50,505,050 samples, 0.28%) + + + +fscrypt_file_open (30,303,030 samples, 0.17%) + + + +entry_SYSCALL_64_after_hwframe (696,969,690 samples, 3.88%) +entr.. + + +ext4_da_write_begin (20,202,020 samples, 0.11%) + + + +inode_needs_update_time (10,101,010 samples, 0.06%) + + + +leveldb::MemTable::KeyComparator::operator (10,101,010 samples, 0.06%) + + + +_int_free (10,101,010 samples, 0.06%) + + + +leveldb::TableBuilder::WriteRawBlock (10,101,010 samples, 0.06%) + + + +__radix_tree_lookup (20,202,020 samples, 0.11%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +__rcu_read_lock (10,101,010 samples, 0.06%) + + + +get_page_from_freelist (10,101,010 samples, 0.06%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign (10,101,010 samples, 0.06%) + + + +entry_SYSCALL_64_after_hwframe (676,767,670 samples, 3.77%) +entr.. + + +leveldb::Status::Status (10,101,010 samples, 0.06%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (10,101,010 samples, 0.06%) + + + +_raw_spin_lock (20,202,020 samples, 0.11%) + + + +rseq_ip_fixup (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +memset_orig (60,606,060 samples, 0.34%) + + + +std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (7,101,010,030 samples, 39.52%) +std::thread::_State_impl<std::thread::_Invoker<std::tuple<void + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +__blk_flush_plug (121,212,120 samples, 0.67%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (30,303,030 samples, 0.17%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_terminate_output (10,101,010 samples, 0.06%) + + + +evict (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irqrestore (80,808,080 samples, 0.45%) + + + +unsigned char const* leveldb::crc32c::(anonymous namespace)::RoundUp<4> (10,101,010 samples, 0.06%) + + + +free_pcppages_bulk (20,202,020 samples, 0.11%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~_Vector_base (10,101,010 samples, 0.06%) + + + +try_to_free_buffers (111,111,110 samples, 0.62%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_relocate (30,303,030 samples, 0.17%) + + + +mpage_submit_folio (10,101,010 samples, 0.06%) + + + +std::allocator_traits<std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (20,202,020 samples, 0.11%) + + + +__blk_mq_do_dispatch_sched (20,202,020 samples, 0.11%) + + + +ext4_block_write_begin (20,202,020 samples, 0.11%) + + + +do_filp_open (1,242,424,230 samples, 6.91%) +do_filp_o.. + + +[unknown] (40,404,040 samples, 0.22%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::~ValueLogInserter (10,101,010 samples, 0.06%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +locks_remove_file (10,101,010 samples, 0.06%) + + + +ext4_truncate (10,101,010 samples, 0.06%) + + + +std::remove_reference<char const*&>::type&& std::move<char const*&> (10,101,010 samples, 0.06%) + + + +__kmalloc (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatchInternal::SetSequence (10,101,010 samples, 0.06%) + + + +__folio_batch_release (101,010,100 samples, 0.56%) + + + +__strchrnul_evex (30,303,030 samples, 0.17%) + + + +wbc_account_cgroup_owner (10,101,010 samples, 0.06%) + + + +__vfprintf_internal (121,212,120 samples, 0.67%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.06%) + + + +std::__basic_file<char>::close (10,101,010 samples, 0.06%) + + + +leveldb::EncodeVarint32 (10,101,010 samples, 0.06%) + + + +up_write (20,202,020 samples, 0.11%) + + + +strlen (10,101,010 samples, 0.06%) + + + +__check_heap_object (20,202,020 samples, 0.11%) + + + +leveldb::GetLengthPrefixedSlice (10,101,010 samples, 0.06%) + + + +operator new (10,101,010 samples, 0.06%) + + + +leveldb::crc32c::(anonymous namespace)::ReadUint32LE (20,202,020 samples, 0.11%) + + + +aa_path_perm (494,949,490 samples, 2.75%) +aa.. + + +mem_cgroup_wb_stats (131,313,130 samples, 0.73%) + + + +kmem_cache_free (50,505,050 samples, 0.28%) + + + +truncate_cleanup_folio (202,020,200 samples, 1.12%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +common_interrupt (30,303,030 samples, 0.17%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (383,838,380 samples, 2.14%) +l.. + + +__x64_sys_write (20,202,020 samples, 0.11%) + + + +ext4_es_insert_delayed_block (80,808,080 samples, 0.45%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +should_failslab.constprop.0 (20,202,020 samples, 0.11%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +mutex_unlock (10,101,010 samples, 0.06%) + + + +_raw_spin_trylock (40,404,040 samples, 0.22%) + + + +ext4_remove_blocks (10,101,010 samples, 0.06%) + + + +__irq_exit_rcu (20,202,020 samples, 0.11%) + + + +__memcg_slab_post_alloc_hook (20,202,020 samples, 0.11%) + + + +generic_perform_write (30,303,030 samples, 0.17%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +void std::allocator_traits<std::allocator<leveldb::DBImpl::Writer*> >::destroy<leveldb::DBImpl::Writer*> (10,101,010 samples, 0.06%) + + + +locks_remove_file (20,202,020 samples, 0.11%) + + + +__mark_inode_dirty (30,303,030 samples, 0.17%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::find (50,505,050 samples, 0.28%) + + + +get_mem_cgroup_from_mm (70,707,070 samples, 0.39%) + + + +ext4_buffered_write_iter (2,797,979,770 samples, 15.57%) +ext4_buffered_write_iter + + +syscall_exit_to_user_mode_prepare (10,101,010 samples, 0.06%) + + + +do_dentry_open (838,383,830 samples, 4.67%) +do_de.. + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (10,101,010 samples, 0.06%) + + + +down_write (10,101,010 samples, 0.06%) + + + +filemap_fdatawrite_wbc (20,202,020 samples, 0.11%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.06%) + + + +scsi_dispatch_cmd (111,111,110 samples, 0.62%) + + + +alloc_pages_mpol (656,565,650 samples, 3.65%) +allo.. + + +folio_alloc_buffers (242,424,240 samples, 1.35%) + + + +leveldb::Slice::remove_prefix (10,101,010 samples, 0.06%) + + + +leveldb::GetVarint32Ptr (353,535,350 samples, 1.97%) +l.. + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::count (70,707,070 samples, 0.39%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::~_Vector_base (20,202,020 samples, 0.11%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::push_back (10,101,010 samples, 0.06%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (111,111,110 samples, 0.62%) + + + +std::allocator<std::pair<leveldb::Slice, leveldb::Slice> >::allocator (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +page_counter_try_charge (10,101,010 samples, 0.06%) + + + +leveldb::ExtractUserKey (10,101,010 samples, 0.06%) + + + +truncate_folio_batch_exceptionals.part.0 (20,202,020 samples, 0.11%) + + + +ext4_ext_truncate (10,101,010 samples, 0.06%) + + + +inode_needs_update_time (30,303,030 samples, 0.17%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +fsnotify_handle_inode_event.isra.0 (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::WriteBatch::Iterate (2,373,737,350 samples, 13.21%) +leveldb::WriteBatch:.. + + +obj_cgroup_charge (10,101,010 samples, 0.06%) + + + +__fsnotify_parent (10,101,010 samples, 0.06%) + + + +__fdget_pos (30,303,030 samples, 0.17%) + + + +do_writev (3,313,131,280 samples, 18.44%) +do_writev + + +std::codecvt<char, char, __mbstate_t>::do_always_noconv (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.06%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.06%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::allocate (10,101,010 samples, 0.06%) + + + +__strlen_evex (20,202,020 samples, 0.11%) + + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (20,202,020 samples, 0.11%) + + + +__file_remove_privs (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~_Vector_base (10,101,010 samples, 0.06%) + + + +leveldb::Status::ok (10,101,010 samples, 0.06%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +main (454,545,450 samples, 2.53%) +main + + +__legitimize_mnt (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_max_size (40,404,040 samples, 0.22%) + + + +__gthread_mutex_unlock (10,101,010 samples, 0.06%) + + + +leveldb::port::Mutex::Unlock (30,303,030 samples, 0.17%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_right (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (10,101,010 samples, 0.06%) + + + +filemap_get_folios_tag (10,101,010 samples, 0.06%) + + + +generic_perform_write (2,707,070,680 samples, 15.06%) +generic_perform_write + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +blk_mq_dispatch_plug_list (121,212,120 samples, 0.67%) + + + +get_any_partial (10,101,010 samples, 0.06%) + + + +__rcu_read_lock (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (30,303,030 samples, 0.17%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::basic_fstream<char, std::char_traits<char> >::basic_fstream (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_get_Tp_allocator (10,101,010 samples, 0.06%) + + + +file_close_fd (10,101,010 samples, 0.06%) + + + +std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (10,101,010 samples, 0.06%) + + + +__blk_mq_sched_dispatch_requests (20,202,020 samples, 0.11%) + + + +fsnotify (141,414,140 samples, 0.79%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +__memcg_slab_post_alloc_hook (10,101,010 samples, 0.06%) + + + +blk_mq_dispatch_rq_list (20,202,020 samples, 0.11%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::SetNext (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__mem_cgroup_charge (181,818,180 samples, 1.01%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::NoBarrier_SetNext (10,101,010 samples, 0.06%) + + + +get_page_from_freelist (575,757,570 samples, 3.20%) +get.. + + +__fdget_pos (20,202,020 samples, 0.11%) + + + +leveldb::GetVarint32 (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::pair<unsigned long, unsigned long>& std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::emplace_back<std::pair<unsigned long, unsigned long> > (50,505,050 samples, 0.28%) + + + +entry_SYSCALL_64_after_hwframe (141,414,140 samples, 0.79%) + + + +__x64_sys_write (111,111,110 samples, 0.62%) + + + +leveldb::ExtractUserKey (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +ext4_do_writepages (141,414,140 samples, 0.79%) + + + +do_syscall_64 (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__es_remove_extent (20,202,020 samples, 0.11%) + + + +std::basic_filebuf<char, std::char_traits<char> >::seekoff (20,202,020 samples, 0.11%) + + + +std::istream::seekg (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::~vector (20,202,020 samples, 0.11%) + + + +all (17,969,696,790 samples, 100%) + + + +submit_bio (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__next_zones_zonelist (40,404,040 samples, 0.22%) + + + +ext4_file_write_iter (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +jbd2_journal_add_journal_head (10,101,010 samples, 0.06%) + + + +inotify_free_event (30,303,030 samples, 0.17%) + + + +do_writepages (141,414,140 samples, 0.79%) + + + +fault_in_readable (20,202,020 samples, 0.11%) + + + +fsnotify_handle_inode_event.isra.0 (202,020,200 samples, 1.12%) + + + +rmqueue (20,202,020 samples, 0.11%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irqrestore (60,606,060 samples, 0.34%) + + + +__alloc_pages (131,313,130 samples, 0.73%) + + + +do_syscall_64 (292,929,290 samples, 1.63%) + + + +std::__invoke_result<void (7,101,010,030 samples, 39.52%) +std::__invoke_result<void + + +__mem_cgroup_uncharge_list (10,101,010 samples, 0.06%) + + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::batch_insert (878,787,870 samples, 4.89%) +leveld.. + + +mpage_prepare_extent_to_map (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::BGWork (404,040,400 samples, 2.25%) +l.. + + +do_open (969,696,960 samples, 5.40%) +do_open + + +free_unref_page_commit (20,202,020 samples, 0.11%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (10,101,010 samples, 0.06%) + + + +inotify_handle_inode_event (111,111,110 samples, 0.62%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_allocate (10,101,010 samples, 0.06%) + + + +memset_orig (60,606,060 samples, 0.34%) + + + +rmqueue_bulk (10,101,010 samples, 0.06%) + + + +lockref_get_not_zero (10,101,010 samples, 0.06%) + + + +d_absolute_path (141,414,140 samples, 0.79%) + + + +alloc_pages_mpol (10,101,010 samples, 0.06%) + + + +malloc (131,313,130 samples, 0.73%) + + + +asm_common_interrupt (30,303,030 samples, 0.17%) + + + +leveldb::DecodeFixed64 (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +blk_mq_dispatch_plug_list (20,202,020 samples, 0.11%) + + + +walk_component (20,202,020 samples, 0.11%) + + + +leveldb::BlockBuilder::Add (101,010,100 samples, 0.56%) + + + +build_open_flags (20,202,020 samples, 0.11%) + + + +__fput_sync (10,101,010 samples, 0.06%) + + + +ext4_release_folio (141,414,140 samples, 0.79%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate (20,202,020 samples, 0.11%) + + + +prepend_path (121,212,120 samples, 0.67%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +kmem_cache_alloc (202,020,200 samples, 1.12%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +__x64_sys_writev (3,313,131,280 samples, 18.44%) +__x64_sys_writev + + +[unknown] (30,303,030 samples, 0.17%) + + + +blk_mq_run_hw_queue (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +cgroup_rstat_flush (131,313,130 samples, 0.73%) + + + +leveldb::Slice::operator[] (20,202,020 samples, 0.11%) + + + +folio_alloc (10,101,010 samples, 0.06%) + + + +__submit_bio (20,202,020 samples, 0.11%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::DBImpl::CompactMemTable (404,040,400 samples, 2.25%) +l.. + + +scsi_dispatch_cmd (20,202,020 samples, 0.11%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.06%) + + + +__srcu_read_lock (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::~ValueLogInserter (10,101,010 samples, 0.06%) + + + +sysmalloc (30,303,030 samples, 0.17%) + + + +leveldb::MemTable::Add (303,030,300 samples, 1.69%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__x64_sys_unlink (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatchInternal::InsertInto (2,393,939,370 samples, 13.32%) +leveldb::WriteBatchI.. + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +std::__basic_file<char>::is_open (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadMain (404,040,400 samples, 2.25%) +l.. + + +fput (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (60,606,060 samples, 0.34%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::DBImpl::MakeRoomForWrite (10,101,010 samples, 0.06%) + + + +dput (10,101,010 samples, 0.06%) + + + +apparmor_file_alloc_security (20,202,020 samples, 0.11%) + + + +x64_sys_call (20,202,020 samples, 0.11%) + + + +do_unlinkat (10,101,010 samples, 0.06%) + + + +aa_put_buffer (10,101,010 samples, 0.06%) + + + +apparmor_file_open (515,151,510 samples, 2.87%) +ap.. + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +generic_perform_write (151,515,150 samples, 0.84%) + + + +allocate_slab (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_check_len (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +blk_mq_flush_plug_list.part.0 (121,212,120 samples, 0.67%) + + + +fault_in_iov_iter_readable (30,303,030 samples, 0.17%) + + + +send_to_group (40,404,040 samples, 0.22%) + + + +leveldb::Status::Status (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatchInternal::InsertInto (343,434,340 samples, 1.91%) +l.. + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +leveldb::TableBuilder::Add (171,717,170 samples, 0.96%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +ext4_file_write_iter (10,101,010 samples, 0.06%) + + + +jbd2_journal_get_write_access (10,101,010 samples, 0.06%) + + + +void __gnu_cxx::new_allocator<leveldb::DBImpl::Writer*>::construct<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*> (10,101,010 samples, 0.06%) + + + +do_syscall_64 (3,747,474,710 samples, 20.85%) +do_syscall_64 + + +__next_zones_zonelist (10,101,010 samples, 0.06%) + + + +unsigned long const& std::min<unsigned long> (10,101,010 samples, 0.06%) + + + +do_anonymous_page (30,303,030 samples, 0.17%) + + + +fclose@@GLIBC_2.2.5 (30,303,030 samples, 0.17%) + + + +jbd2_journal_grab_journal_head (10,101,010 samples, 0.06%) + + + +ext4_writepages (20,202,020 samples, 0.11%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__niter_base<std::pair<leveldb::Slice, leveldb::Slice>*> (10,101,010 samples, 0.06%) + + + +leveldb::Slice::data (20,202,020 samples, 0.11%) + + + +alloc_pages_mpol (10,101,010 samples, 0.06%) + + + +blk_mq_sched_dispatch_requests (20,202,020 samples, 0.11%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::push_back (50,505,050 samples, 0.28%) + + + +leveldb::WriteBatchInternal::Count (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock (10,101,010 samples, 0.06%) + + + +file_modified (60,606,060 samples, 0.34%) + + + +__strchr_evex (30,303,030 samples, 0.17%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +module_put (10,101,010 samples, 0.06%) + + + +iput (10,101,010 samples, 0.06%) + + + +mptscsih_qcmd (111,111,110 samples, 0.62%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (191,919,190 samples, 1.07%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_do_relocate (20,202,020 samples, 0.11%) + + + +leveldb::BuildTable (393,939,390 samples, 2.19%) +l.. + + +common_interrupt (10,101,010 samples, 0.06%) + + + +fsnotify_destroy_event (30,303,030 samples, 0.17%) + + + +radix_tree_lookup (20,202,020 samples, 0.11%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::SetNext (30,303,030 samples, 0.17%) + + + +entry_SYSCALL_64_after_hwframe (1,858,585,840 samples, 10.34%) +entry_SYSCALL_6.. + + +leveldb::PutLengthPrefixedSlice (10,101,010 samples, 0.06%) + + + +_itoa_word (20,202,020 samples, 0.11%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +leveldb::DestroyDB (454,545,450 samples, 2.53%) +le.. + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +std::ios_base::_M_dispose_callbacks (10,101,010 samples, 0.06%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::_Deque_iterator (10,101,010 samples, 0.06%) + + + +__fput_sync (272,727,270 samples, 1.52%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +void std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long, unsigned long> > (111,111,110 samples, 0.62%) + + + +dget_parent (20,202,020 samples, 0.11%) + + + +std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > > (30,303,030 samples, 0.17%) + + + +dget_parent (30,303,030 samples, 0.17%) + + + +__memcg_slab_post_alloc_hook (40,404,040 samples, 0.22%) + + + +leveldb::WriteBatchInternal::Sequence (10,101,010 samples, 0.06%) + + + +__GI___libc_write (373,737,370 samples, 2.08%) +_.. + + +strlen@plt (10,101,010 samples, 0.06%) + + + +__fdget_pos (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +iput (454,545,450 samples, 2.53%) +iput + + +leveldb::WriteBatchInternal::ConverToValueLog (484,848,480 samples, 2.70%) +le.. + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::WriteBatchInternal::SetCount (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (10,101,010 samples, 0.06%) + + + +lookup_fast (20,202,020 samples, 0.11%) + + + +free_buffer_head (101,010,100 samples, 0.56%) + + + +std::pair<leveldb::Slice, leveldb::Slice>& std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::emplace_back<std::pair<leveldb::Slice, leveldb::Slice> > (40,404,040 samples, 0.22%) + + + +filemap_alloc_folio (696,969,690 samples, 3.88%) +file.. + + +std::allocator<std::pair<unsigned long, unsigned long> >::allocator (10,101,010 samples, 0.06%) + + + +___slab_alloc (20,202,020 samples, 0.11%) + + + +sysvec_apic_timer_interrupt (10,101,010 samples, 0.06%) + + + +handle_softirqs (30,303,030 samples, 0.17%) + + + +leveldb::MemTable::KeyComparator::operator (888,888,880 samples, 4.95%) +leveld.. + + +__srcu_read_unlock (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irq (171,717,170 samples, 0.96%) + + + +__cond_resched (10,101,010 samples, 0.06%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::max_size (10,101,010 samples, 0.06%) + + + +__irq_exit_rcu (30,303,030 samples, 0.17%) + + + +apparmor_file_permission (10,101,010 samples, 0.06%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +leveldb::GetVarint32Ptr (20,202,020 samples, 0.11%) + + + +__fsnotify_parent (202,020,200 samples, 1.12%) + + + +leveldb::MutexLock::MutexLock (10,101,010 samples, 0.06%) + + + +rmqueue (70,707,070 samples, 0.39%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +folio_unlock (10,101,010 samples, 0.06%) + + + +leveldb::GetVarint32 (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (20,202,020 samples, 0.11%) + + + +_raw_spin_lock (20,202,020 samples, 0.11%) + + + +inode_to_bdi (30,303,030 samples, 0.17%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +xas_start (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::size (30,303,030 samples, 0.17%) + + + +__gnu_cxx::__normal_iterator<std::pair<unsigned long, unsigned long>*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > >::base (10,101,010 samples, 0.06%) + + + +step_into (10,101,010 samples, 0.06%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +do_syscall_64 (717,171,710 samples, 3.99%) +do_s.. + + +[unknown] (40,404,040 samples, 0.22%) + + + +__kmalloc (80,808,080 samples, 0.45%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_relocate (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +__virt_addr_valid (10,101,010 samples, 0.06%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +file_write_and_wait_range (141,414,140 samples, 0.79%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.06%) + + + +_IO_no_init (10,101,010 samples, 0.06%) + + + +__srcu_read_lock (10,101,010 samples, 0.06%) + + + +memset_orig (10,101,010 samples, 0.06%) + + + +slab_update_freelist.constprop.0.isra.0 (10,101,010 samples, 0.06%) + + + +copy_from_kernel_nofault (40,404,040 samples, 0.22%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +dget_parent (10,101,010 samples, 0.06%) + + + +leveldb::EncodeFixed64 (10,101,010 samples, 0.06%) + + + +blk_mq_sched_dispatch_requests (121,212,120 samples, 0.67%) + + + +ext4_file_open (50,505,050 samples, 0.28%) + + + +__memcg_slab_post_alloc_hook (50,505,050 samples, 0.28%) + + + +uncharge_folio (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_max_size (20,202,020 samples, 0.11%) + + + +ext4_release_file (20,202,020 samples, 0.11%) + + + +irq_exit_rcu (10,101,010 samples, 0.06%) + + + +kmem_cache_alloc (20,202,020 samples, 0.11%) + + + +irq_exit_rcu (20,202,020 samples, 0.11%) + + + +leveldb::GetVarint32 (20,202,020 samples, 0.11%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (60,606,060 samples, 0.34%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Equal (10,101,010 samples, 0.06%) + + + +filemap_add_folio (606,060,600 samples, 3.37%) +fil.. + + +ext4_buffered_write_iter (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irq (131,313,130 samples, 0.73%) + + + +do_syscall_64 (696,969,690 samples, 3.88%) +do_s.. + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (10,101,010 samples, 0.06%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.06%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +xas_descend (10,101,010 samples, 0.06%) + + + +__dquot_initialize (20,202,020 samples, 0.11%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (30,303,030 samples, 0.17%) + + + +lockref_put_return (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.06%) + + + +std::pair<unsigned long, unsigned long>& std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::emplace_back<std::pair<unsigned long, unsigned long> > (131,313,130 samples, 0.73%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (90,909,090 samples, 0.51%) + + + +folio_unlock (10,101,010 samples, 0.06%) + + + +generic_file_llseek_size (10,101,010 samples, 0.06%) + + + +refill_obj_stock (30,303,030 samples, 0.17%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_max_size (10,101,010 samples, 0.06%) + + + +__kmalloc (30,303,030 samples, 0.17%) + + + +leveldb::BlockBuilder::CurrentSizeEstimate (10,101,010 samples, 0.06%) + + + +ext4_has_free_clusters (10,101,010 samples, 0.06%) + + + +kmem_cache_alloc (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_check_len (60,606,060 samples, 0.34%) + + + +leveldb::WriteBatch::Put (20,202,020 samples, 0.11%) + + + +ext4_free_blocks (10,101,010 samples, 0.06%) + + + +x64_sys_call (20,202,020 samples, 0.11%) + + + +__check_object_size (50,505,050 samples, 0.28%) + + + +__GI__IO_un_link.part.0 (10,101,010 samples, 0.06%) + + + +cfree@GLIBC_2.2.5 (20,202,020 samples, 0.11%) + + + +std::basic_filebuf<char, std::char_traits<char> >::open (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::NewNode (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (20,202,020 samples, 0.11%) + + + +fsnotify (50,505,050 samples, 0.28%) + + + +std::__basic_file<char>::open (30,303,030 samples, 0.17%) + + + +alloc_empty_file (131,313,130 samples, 0.73%) + + + +__filemap_get_folio (1,404,040,390 samples, 7.81%) +__filemap_g.. + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatchInternal::Count (10,101,010 samples, 0.06%) + + + +std::pair<unsigned long, unsigned long>::pair<unsigned long&, unsigned long, true> (10,101,010 samples, 0.06%) + + + +__x64_sys_openat (1,505,050,490 samples, 8.38%) +__x64_sys_o.. + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::_Deque_iterator (20,202,020 samples, 0.11%) + + + +void std::__invoke_impl<void, void (7,101,010,030 samples, 39.52%) +void std::__invoke_impl<void, void + + +leveldb::WriteBatchInternal::SetCount (10,101,010 samples, 0.06%) + + + +node_dirty_ok (30,303,030 samples, 0.17%) + + + +_int_free (80,808,080 samples, 0.45%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (383,838,380 samples, 2.14%) +l.. + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::count (70,707,070 samples, 0.39%) + + + +leveldb::Slice::operator[] (10,101,010 samples, 0.06%) + + + +may_open (20,202,020 samples, 0.11%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.06%) + + + +strncpy_from_user (70,707,070 samples, 0.39%) + + + +__filemap_fdatawrite_range (141,414,140 samples, 0.79%) + + + +handle_softirqs (20,202,020 samples, 0.11%) + + + +std::_Select1st<std::pair<unsigned long const, unsigned long> >::operator (10,101,010 samples, 0.06%) + + + +entry_SYSCALL_64_after_hwframe (3,747,474,710 samples, 20.85%) +entry_SYSCALL_64_after_hwframe + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +__dquot_alloc_space (20,202,020 samples, 0.11%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_base (30,303,030 samples, 0.17%) + + + +rh_timer_func (10,101,010 samples, 0.06%) + + + +node_page_state (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irq (20,202,020 samples, 0.11%) + + + +leveldb::port::Mutex::Lock (10,101,010 samples, 0.06%) + + + +asm_common_interrupt (30,303,030 samples, 0.17%) + + + +leveldb::GetVarint32PtrFallback (10,101,010 samples, 0.06%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.06%) + + + +fdatasync (151,515,150 samples, 0.84%) + + + +folio_unlock (10,101,010 samples, 0.06%) + + + +uhci_hub_status_data (10,101,010 samples, 0.06%) + + + +leveldb::PutVarint64 (30,303,030 samples, 0.17%) + + + +alloc_buffer_head (10,101,010 samples, 0.06%) + + + +__memcmp_evex_movbe (111,111,110 samples, 0.62%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__gnu_cxx::new_allocator<std::pair<unsigned long, unsigned long> >::_M_max_size (10,101,010 samples, 0.06%) + + + +lockref_put_return (10,101,010 samples, 0.06%) + + + +__memcg_slab_free_hook (50,505,050 samples, 0.28%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +leveldb::GetLengthPrefixedSlice (60,606,060 samples, 0.34%) + + + +ext4_da_get_block_prep (10,101,010 samples, 0.06%) + + + +leveldb::Benchmark::WriteRandom (5,212,121,160 samples, 29.01%) +leveldb::Benchmark::WriteRandom + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::allocate (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +handle_pte_fault (30,303,030 samples, 0.17%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_Vector_impl_data::_Vector_impl_data (10,101,010 samples, 0.06%) + + + +__GI___writev (4,030,302,990 samples, 22.43%) +__GI___writev + + +ext4_es_lookup_extent (10,101,010 samples, 0.06%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*> (30,303,030 samples, 0.17%) + + + +ext4_mb_mark_context (10,101,010 samples, 0.06%) + + + +__legitimize_path (10,101,010 samples, 0.06%) + + + +kmem_cache_alloc (10,101,010 samples, 0.06%) + + + +bool std::has_facet<std::ctype<char> > (10,101,010 samples, 0.06%) + + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.06%) + + + +leveldb::PutVarint32 (10,101,010 samples, 0.06%) + + + +kmem_cache_free (101,010,100 samples, 0.56%) + + + +_IO_str_init_static_internal (10,101,010 samples, 0.06%) + + + +__GI___libc_cleanup_push_defer (10,101,010 samples, 0.06%) + + + +mptspi_qcmd (111,111,110 samples, 0.62%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +check_heap_object (30,303,030 samples, 0.17%) + + + +ext4_writepages (141,414,140 samples, 0.79%) + + + +x64_sys_call (141,414,140 samples, 0.79%) + + + +do_unlinkat (454,545,450 samples, 2.53%) +do.. + + +ext4_mb_clear_bb (10,101,010 samples, 0.06%) + + + +create_empty_buffers (252,525,250 samples, 1.41%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +leveldb::GetVarint32Ptr (30,303,030 samples, 0.17%) + + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +clear_page_erms (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::Arena::Allocate (10,101,010 samples, 0.06%) + + + +_raw_spin_lock (10,101,010 samples, 0.06%) + + + +__fsnotify_parent (10,101,010 samples, 0.06%) + + + +_find_next_zero_bit (20,202,020 samples, 0.11%) + + + +get_page_from_freelist (20,202,020 samples, 0.11%) + + + +dget_parent (10,101,010 samples, 0.06%) + + + +___slab_alloc (10,101,010 samples, 0.06%) + + + +lockref_get_not_zero (20,202,020 samples, 0.11%) + + + +__zone_watermark_ok (10,101,010 samples, 0.06%) + + + +std::less<unsigned long>::operator (10,101,010 samples, 0.06%) + + + +std::istream::seekg (20,202,020 samples, 0.11%) + + + +truncate_inode_pages_range (434,343,430 samples, 2.42%) +tr.. + + +[unknown] (70,707,070 samples, 0.39%) + + + +refill_obj_stock (10,101,010 samples, 0.06%) + + + +d_namespace_path.constprop.0 (151,515,150 samples, 0.84%) + + + +std::_Rb_tree_iterator<std::pair<unsigned long const, unsigned long> >::operator* (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::max_size (40,404,040 samples, 0.22%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::Put (50,505,050 samples, 0.28%) + + + +__GI__IO_un_link.part.0 (50,505,050 samples, 0.28%) + + + +std::ios_base::~ios_base (20,202,020 samples, 0.11%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::end (10,101,010 samples, 0.06%) + + + +__folio_mark_dirty (80,808,080 samples, 0.45%) + + + +shuffle_freelist (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::RemoveObsoleteFiles (10,101,010 samples, 0.06%) + + + +std::__basic_file<char>::seekoff (20,202,020 samples, 0.11%) + + + +call_timer_fn (10,101,010 samples, 0.06%) + + + +inode_permission (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.06%) + + + +_raw_spin_lock (20,202,020 samples, 0.11%) + + + +leveldb::crc32c::(anonymous namespace)::ReadUint32LE (10,101,010 samples, 0.06%) + + + +current_obj_cgroup (20,202,020 samples, 0.11%) + + + +ext4_da_write_begin (70,707,070 samples, 0.39%) + + + +leveldb::InternalKeyComparator::Compare (414,141,410 samples, 2.30%) +l.. + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::front (30,303,030 samples, 0.17%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::Writer*& std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::emplace_back<leveldb::DBImpl::Writer*> (20,202,020 samples, 0.11%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::base (10,101,010 samples, 0.06%) + + + +pthread_mutex_unlock@@GLIBC_2.2.5 (20,202,020 samples, 0.11%) + + + +ext4_da_write_begin (20,202,020 samples, 0.11%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.06%) + + + +_raw_spin_unlock_irq (70,707,070 samples, 0.39%) + + + +_IO_link_in (10,101,010 samples, 0.06%) + + + +__radix_tree_lookup (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::batch_insert (343,434,340 samples, 1.91%) +l.. + + +obj_cgroup_charge (10,101,010 samples, 0.06%) + + + +run_timer_softirq (10,101,010 samples, 0.06%) + + + +leveldb::GetLengthPrefixedSlice (60,606,060 samples, 0.34%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (30,303,030 samples, 0.17%) + + + +copy_page_from_iter_atomic (151,515,150 samples, 0.84%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +__x64_sys_openat (10,101,010 samples, 0.06%) + + + +__x64_sys_close (323,232,320 samples, 1.80%) + + + +__run_timers (10,101,010 samples, 0.06%) + + + +blk_mq_submit_bio (20,202,020 samples, 0.11%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator++ (10,101,010 samples, 0.06%) + + + +timestamp_truncate (10,101,010 samples, 0.06%) + + + +syscall_exit_to_user_mode (10,101,010 samples, 0.06%) + + + +folio_add_lru (80,808,080 samples, 0.45%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (20,202,020 samples, 0.11%) + + + +leveldb::ExtractUserKey (121,212,120 samples, 0.67%) + + + +folio_alloc_buffers (10,101,010 samples, 0.06%) + + + +leveldb::Benchmark::DoWrite (5,202,020,150 samples, 28.95%) +leveldb::Benchmark::DoWrite + + +__x64_sys_fdatasync (141,414,140 samples, 0.79%) + + + +do_user_addr_fault (30,303,030 samples, 0.17%) + + + +ext4_da_write_begin (10,101,010 samples, 0.06%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.06%) + + + +ext4_file_open (10,101,010 samples, 0.06%) + + + +fsnotify (10,101,010 samples, 0.06%) + + + +void std::_Construct<std::pair<leveldb::Slice, leveldb::Slice>, std::pair<leveldb::Slice, leveldb::Slice> const&> (10,101,010 samples, 0.06%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.06%) + + + +__fsnotify_parent (50,505,050 samples, 0.28%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_relocate (20,202,020 samples, 0.11%) + + + +std::ios_base::_M_init (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +filp_flush (20,202,020 samples, 0.11%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::push_back (50,505,050 samples, 0.28%) + + + +std::basic_ios<char, std::char_traits<char> >::init (10,101,010 samples, 0.06%) + + + +[unknown] (2,989,898,960 samples, 16.64%) +[unknown] + + +std::locale::~locale (20,202,020 samples, 0.11%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +common_interrupt (30,303,030 samples, 0.17%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +__GI___unlink (10,101,010 samples, 0.06%) + + + +blk_add_rq_to_plug (20,202,020 samples, 0.11%) + + + +leveldb::DBImpl::MakeRoomForWrite (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_create_storage (20,202,020 samples, 0.11%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::vector (10,101,010 samples, 0.06%) + + + +unsigned long& std::forward<unsigned long&> (10,101,010 samples, 0.06%) + + + +do_syscall_64 (454,545,450 samples, 2.53%) +do.. + + +leveldb::(anonymous namespace)::PosixWritableFile::Append (10,101,010 samples, 0.06%) + + + +hook_file_open (10,101,010 samples, 0.06%) + + + +obj_cgroup_uncharge (30,303,030 samples, 0.17%) + + + +std::__basic_file<char>::xsputn_2 (30,303,030 samples, 0.17%) + + + +ext4_nonda_switch (10,101,010 samples, 0.06%) + + + +ext4_file_write_iter (10,101,010 samples, 0.06%) + + + +filemap_get_entry (80,808,080 samples, 0.45%) + + + +std::mutex::unlock (30,303,030 samples, 0.17%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +leveldb::Status::~Status (10,101,010 samples, 0.06%) + + + +irqentry_exit (10,101,010 samples, 0.06%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__relocate_a<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice>*, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::Write (5,111,111,060 samples, 28.44%) +leveldb::DBImpl::Write + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::allocate (10,101,010 samples, 0.06%) + + + +scsi_prepare_cmd (10,101,010 samples, 0.06%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::allocate (20,202,020 samples, 0.11%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +blk_mq_flush_plug_list.part.0 (20,202,020 samples, 0.11%) + + + +leveldb::WriteBatch::Put (30,303,030 samples, 0.17%) + + + +std::__basic_file<char>::is_open (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (20,202,020 samples, 0.11%) + + + +_raw_write_lock (20,202,020 samples, 0.11%) + + + +new_slab (141,414,140 samples, 0.79%) + + + +usb_hcd_poll_rh_status (10,101,010 samples, 0.06%) + + + +free_unref_page_list (40,404,040 samples, 0.22%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_internal_buffer (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (171,717,170 samples, 0.96%) + + + +consume_obj_stock (10,101,010 samples, 0.06%) + + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (30,303,030 samples, 0.17%) + + + +leveldb::Slice::data (10,101,010 samples, 0.06%) + + + +ext4_da_reserve_space (50,505,050 samples, 0.28%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__slab_free (30,303,030 samples, 0.17%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::operator[] (121,212,120 samples, 0.67%) + + + +ext4_block_write_begin (646,464,640 samples, 3.60%) +ext.. + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_deallocate (10,101,010 samples, 0.06%) + + + +malloc (10,101,010 samples, 0.06%) + + + +_IO_file_open (30,303,030 samples, 0.17%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (1,838,383,820 samples, 10.23%) +leveldb::SkipLi.. + + +__close_nocancel (989,898,980 samples, 5.51%) +__close.. + + +security_file_permission (10,101,010 samples, 0.06%) + + + +blk_finish_plug (121,212,120 samples, 0.67%) + + + +current_obj_cgroup (20,202,020 samples, 0.11%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +_IO_default_xsputn (50,505,050 samples, 0.28%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::Put (121,212,120 samples, 0.67%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (10,101,010 samples, 0.06%) + + + +void std::allocator_traits<std::allocator<leveldb::DBImpl::Writer*> >::construct<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*> (10,101,010 samples, 0.06%) + + + +kmem_cache_free (30,303,030 samples, 0.17%) + + + +truncate_inode_pages_final (10,101,010 samples, 0.06%) + + + +aa_path_name (161,616,160 samples, 0.90%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +[libstdc++.so.6.0.30] (7,101,010,030 samples, 39.52%) +[libstdc++.so.6.0.30] + + +ksys_write (464,646,460 samples, 2.59%) +ks.. + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (10,101,010 samples, 0.06%) + + + +filemap_fdatawrite_wbc (141,414,140 samples, 0.79%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__srcu_read_unlock (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__memcg_slab_post_alloc_hook (10,101,010 samples, 0.06%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.06%) + + + +__virt_addr_valid (10,101,010 samples, 0.06%) + + + +__gthread_active_p (10,101,010 samples, 0.06%) + + + +__GI___libc_write (20,202,020 samples, 0.11%) + + + +leveldb::InternalKeyComparator::Compare (10,101,010 samples, 0.06%) + + + +do_syscall_64 (141,414,140 samples, 0.79%) + + + +radix_tree_lookup (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatch::Iterate (202,020,200 samples, 1.12%) + + + +inode_permission (10,101,010 samples, 0.06%) + + + +leveldb::crc32c::Extend (50,505,050 samples, 0.28%) + + + +unlink_chunk.constprop.0 (40,404,040 samples, 0.22%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::operator++ (10,101,010 samples, 0.06%) + + + +leveldb::Slice::Slice (40,404,040 samples, 0.22%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::ValueLogInserter (10,101,010 samples, 0.06%) + + + +leveldb::MemTable::Add (2,202,020,180 samples, 12.25%) +leveldb::MemTable:.. + + +_IO_file_fopen@@GLIBC_2.2.5 (20,202,020 samples, 0.11%) + + + +common_interrupt (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::MemTableInserter::Put (323,232,320 samples, 1.80%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (20,202,020 samples, 0.11%) + + + +leveldb::Slice::compare (20,202,020 samples, 0.11%) + + + +x64_sys_call (131,313,130 samples, 0.73%) + + + +__irq_exit_rcu (10,101,010 samples, 0.06%) + + + +__memcpy (10,101,010 samples, 0.06%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (30,303,030 samples, 0.17%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (40,404,040 samples, 0.22%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*> (20,202,020 samples, 0.11%) + + + +__filemap_get_folio (40,404,040 samples, 0.22%) + + + +ext4_invalidate_folio (10,101,010 samples, 0.06%) + + + +__GI___fileno (10,101,010 samples, 0.06%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (10,101,010 samples, 0.06%) + + + +leveldb::PutVarint32 (10,101,010 samples, 0.06%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.06%) + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::end (10,101,010 samples, 0.06%) + + + +filemap_get_entry (10,101,010 samples, 0.06%) + + + +submit_bio_noacct_nocheck (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +ksys_lseek (60,606,060 samples, 0.34%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::max_size (20,202,020 samples, 0.11%) + + + +security_file_alloc (40,404,040 samples, 0.22%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (80,808,080 samples, 0.45%) + + + +fault_in_iov_iter_readable (20,202,020 samples, 0.11%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::operator-- (10,101,010 samples, 0.06%) + + + +void std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_realloc_insert<std::pair<leveldb::Slice, leveldb::Slice> > (20,202,020 samples, 0.11%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::begin (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +leveldb::WriteBatchInternal::ConverToValueLog (1,151,515,140 samples, 6.41%) +leveldb:.. + + +__x64_sys_write (464,646,460 samples, 2.59%) +__.. + + +[unknown] (40,404,040 samples, 0.22%) + + + +alloc_pages_mpol (20,202,020 samples, 0.11%) + + + +__memmove_evex_unaligned_erms (10,101,010 samples, 0.06%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +leveldb::Slice::size (10,101,010 samples, 0.06%) + + + +ksys_write (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_create_storage (20,202,020 samples, 0.11%) + + + +_raw_spin_unlock_irqrestore (50,505,050 samples, 0.28%) + + + +__GI___libc_open (2,151,515,130 samples, 11.97%) +__GI___libc_open + + +mpage_process_page_bufs (10,101,010 samples, 0.06%) + + + +mem_cgroup_commit_charge (10,101,010 samples, 0.06%) + + + +aa_lookup_condperms (10,101,010 samples, 0.06%) + + + +ext4_evict_inode (10,101,010 samples, 0.06%) + + + +std::less<unsigned long>::operator (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +truncate_cleanup_folio (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +__rcu_read_unlock (10,101,010 samples, 0.06%) + + + +x64_sys_call (454,545,450 samples, 2.53%) +x6.. + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::size (10,101,010 samples, 0.06%) + + + +clear_page_erms (131,313,130 samples, 0.73%) + + + +std::basic_fstream<char, std::char_traits<char> >::basic_fstream (10,101,010 samples, 0.06%) + + + +do_syscall_64 (676,767,670 samples, 3.77%) +do_s.. + + +entry_SYSCALL_64_after_hwframe (717,171,710 samples, 3.99%) +entr.. + + +fclose@@GLIBC_2.2.5 (10,101,010 samples, 0.06%) + + + +aa_get_buffer (30,303,030 samples, 0.17%) + + + +__memmove_evex_unaligned_erms (10,101,010 samples, 0.06%) + + + +kmem_cache_free (20,202,020 samples, 0.11%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (70,707,070 samples, 0.39%) + + + +__handle_mm_fault (30,303,030 samples, 0.17%) + + + +ext4_file_write_iter (191,919,190 samples, 1.07%) + + + +__memcg_slab_free_hook (10,101,010 samples, 0.06%) + + + +rb_next (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Sync (151,515,150 samples, 0.84%) + + + +filemap_get_entry (20,202,020 samples, 0.11%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +handle_mm_fault (30,303,030 samples, 0.17%) + + + +x64_sys_call (3,323,232,290 samples, 18.49%) +x64_sys_call + + +__x64_sys_fdatasync (20,202,020 samples, 0.11%) + + + +path_get (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::front (10,101,010 samples, 0.06%) + + + +obj_cgroup_uncharge (10,101,010 samples, 0.06%) + + + +leveldb::VersionSet::NumLevelFiles (10,101,010 samples, 0.06%) + + + +__GI___unlink (454,545,450 samples, 2.53%) +__.. + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (20,202,020 samples, 0.11%) + + + +std::thread::_Invoker<std::tuple<void (7,101,010,030 samples, 39.52%) +std::thread::_Invoker<std::tuple<void + + +aa_file_perm (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::push_back (141,414,140 samples, 0.79%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Sync (20,202,020 samples, 0.11%) + + + +leveldb::port::Mutex::Lock (30,303,030 samples, 0.17%) + + + +exc_page_fault (30,303,030 samples, 0.17%) + + + +prepend_copy (60,606,060 samples, 0.34%) + + + +ext4_ext_rm_leaf (10,101,010 samples, 0.06%) + + + +std::__basic_file<char>::is_open (20,202,020 samples, 0.11%) + + + +leveldb::WriteBatchInternal::SetCount (10,101,010 samples, 0.06%) + + + +leveldb::log::Writer::EmitPhysicalRecord (464,646,460 samples, 2.59%) +le.. + + +getname (141,414,140 samples, 0.79%) + + + +std::mutex::lock (30,303,030 samples, 0.17%) + + + +alloc_anon_folio (30,303,030 samples, 0.17%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (10,101,010 samples, 0.06%) + + + +leveldb::WriteBatch::Iterate (333,333,330 samples, 1.85%) +l.. + + +asm_common_interrupt (10,101,010 samples, 0.06%) + + + +ext4_llseek (20,202,020 samples, 0.11%) + + + +leveldb::GetLengthPrefixedSlice (414,141,410 samples, 2.30%) +l.. + + +std::ostream::write (60,606,060 samples, 0.34%) + + + +rw_verify_area (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_check_len (40,404,040 samples, 0.22%) + + + +leveldb::crc32c::Extend (90,909,090 samples, 0.51%) + + + +std::allocator_traits<std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (20,202,020 samples, 0.11%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::new_allocator (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (20,202,020 samples, 0.11%) + + + +leveldb::DBImpl::Write (1,444,444,430 samples, 8.04%) +leveldb::DB.. + + +fsnotify_destroy_event (40,404,040 samples, 0.22%) + + + +__d_lookup_rcu (20,202,020 samples, 0.11%) + + + +jbd2_journal_try_to_free_buffers (141,414,140 samples, 0.79%) + + + +__memset_evex_unaligned_erms (10,101,010 samples, 0.06%) + + + +balance_dirty_pages_ratelimited (181,818,180 samples, 1.01%) + + + +release_pages (10,101,010 samples, 0.06%) + + + +dquot_file_open (20,202,020 samples, 0.11%) + + + +consume_obj_stock (10,101,010 samples, 0.06%) + + + +_IO_old_init (10,101,010 samples, 0.06%) + + + +__rcu_read_lock (10,101,010 samples, 0.06%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::GetMaxHeight (10,101,010 samples, 0.06%) + + + +do_sys_openat2 (1,474,747,460 samples, 8.21%) +do_sys_open.. + + +release_pages (101,010,100 samples, 0.56%) + + + +folio_account_cleaned (10,101,010 samples, 0.06%) + + + +leveldb::Slice::compare (30,303,030 samples, 0.17%) + + + +ext4_es_insert_delayed_block (10,101,010 samples, 0.06%) + + + +leveldb::DBImpl::BackgroundCompaction (404,040,400 samples, 2.25%) +l.. + + +prepend (70,707,070 samples, 0.39%) + + + +link_path_walk.part.0.constprop.0 (101,010,100 samples, 0.56%) + + + +ktime_get_coarse_real_ts64 (10,101,010 samples, 0.06%) + + + +create_empty_buffers (10,101,010 samples, 0.06%) + + + +mnt_get_write_access (20,202,020 samples, 0.11%) + + + +ksys_write (20,202,020 samples, 0.11%) + + + +x64_sys_call (464,646,460 samples, 2.59%) +x6.. + + +_IO_default_xsputn (30,303,030 samples, 0.17%) + + + +block_write_end (151,515,150 samples, 0.84%) + + + +fdatasync (20,202,020 samples, 0.11%) + + + +__ext4_journal_get_write_access (10,101,010 samples, 0.06%) + + + +_raw_spin_lock (10,101,010 samples, 0.06%) + + + +__check_object_size.part.0 (50,505,050 samples, 0.28%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::WriteUnbuffered (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::begin (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +std::basic_ios<char, std::char_traits<char> >::init (10,101,010 samples, 0.06%) + + + +llseek@GLIBC_2.2.5 (1,202,020,190 samples, 6.69%) +llseek@GL.. + + +file_write_and_wait_range (20,202,020 samples, 0.11%) + + + +leveldb::WriteBatch::Iterate (101,010,100 samples, 0.56%) + + + +__rcu_read_unlock (10,101,010 samples, 0.06%) + + + +inotify_handle_inode_event (40,404,040 samples, 0.22%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::NoBarrier_SetNext (20,202,020 samples, 0.11%) + + + +kfree (30,303,030 samples, 0.17%) + + + +leveldb::Slice::compare (20,202,020 samples, 0.11%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_check_len (20,202,020 samples, 0.11%) + + + +apparmor_current_getlsmblob_subj (10,101,010 samples, 0.06%) + + + +mod_objcg_state (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (20,202,020 samples, 0.11%) + + + +mark_buffer_dirty (131,313,130 samples, 0.73%) + + + +std::basic_filebuf<char, std::char_traits<char> >::open (10,101,010 samples, 0.06%) + + + +lookup_fast (10,101,010 samples, 0.06%) + + + +__fsnotify_parent (353,535,350 samples, 1.97%) +_.. + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_impl_data::_Vector_impl_data (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +ext4_ext_remove_space (10,101,010 samples, 0.06%) + + + +db_bench (17,969,696,790 samples, 100.00%) +db_bench + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.06%) + + + +ext4_nonda_switch (10,101,010 samples, 0.06%) + + + +inotify_merge (10,101,010 samples, 0.06%) + + + +ext4_file_write_iter (20,202,020 samples, 0.11%) + + + +up_write (10,101,010 samples, 0.06%) + + + +clear_page_erms (20,202,020 samples, 0.11%) + + + +lookup_fast (10,101,010 samples, 0.06%) + + + +ext4_sync_file (20,202,020 samples, 0.11%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +obj_cgroup_charge (10,101,010 samples, 0.06%) + + + +dnotify_flush (10,101,010 samples, 0.06%) + + + +[unknown] (40,404,040 samples, 0.22%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (20,202,020 samples, 0.11%) + + + +asm_sysvec_apic_timer_interrupt (10,101,010 samples, 0.06%) + + + +lockref_get (20,202,020 samples, 0.11%) + + + +__memcg_slab_free_hook (20,202,020 samples, 0.11%) + + + +unsigned long const& std::min<unsigned long> (10,101,010 samples, 0.06%) + + + +leveldb::GetLengthPrefixedSlice (20,202,020 samples, 0.11%) + + + +___slab_alloc (10,101,010 samples, 0.06%) + + + +__fsnotify_parent (90,909,090 samples, 0.51%) + + + +blk_mq_run_hw_queue (121,212,120 samples, 0.67%) + + + +file_modified (10,101,010 samples, 0.06%) + + + +apparmor_file_permission (10,101,010 samples, 0.06%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_max_size (10,101,010 samples, 0.06%) + + + +__alloc_pages (636,363,630 samples, 3.54%) +__a.. + + +leveldb::(anonymous namespace)::ValueLogInserter::ValueLogInserter (20,202,020 samples, 0.11%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.06%) + + + +truncate_inode_pages_final (444,444,440 samples, 2.47%) +tr.. + + +free_unref_page_prepare (10,101,010 samples, 0.06%) + + + +terminate_walk (10,101,010 samples, 0.06%) + + + +vfs_open (888,888,880 samples, 4.95%) +vfs_open + + +[unknown] (70,707,070 samples, 0.39%) + + + +xas_load (10,101,010 samples, 0.06%) + + + +send_to_group (131,313,130 samples, 0.73%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_Vector_base (10,101,010 samples, 0.06%) + + + +[unknown] (70,707,070 samples, 0.39%) + + + +__memcpy (10,101,010 samples, 0.06%) + + + +clear_page_erms (393,939,390 samples, 2.19%) +c.. + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator* (10,101,010 samples, 0.06%) + + + +drop_buffers.constprop.0 (10,101,010 samples, 0.06%) + + + +handle_softirqs (10,101,010 samples, 0.06%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_allocate (10,101,010 samples, 0.06%) + + + +vfs_write (20,202,020 samples, 0.11%) + + + +virtual thunk to std::basic_fstream<char, std::char_traits<char> >::~basic_fstream (30,303,030 samples, 0.17%) + + + +fsnotify (282,828,280 samples, 1.57%) + + + +__libc_start_call_main (454,545,450 samples, 2.53%) +__.. + + +_raw_spin_unlock (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::~ValueLogInserter (10,101,010 samples, 0.06%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::push_back (20,202,020 samples, 0.11%) + + + +fsnotify (10,101,010 samples, 0.06%) + + + +security_current_getlsmblob_subj (30,303,030 samples, 0.17%) + + + +leveldb::crc32c::Extend (10,101,010 samples, 0.06%) + + + +__fput (222,222,220 samples, 1.24%) + + + +leveldb::InternalKeyComparator::Compare (20,202,020 samples, 0.11%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::vector (10,101,010 samples, 0.06%) + + + +leveldb::Status::operator= (20,202,020 samples, 0.11%) + + + +__memcg_slab_free_hook (30,303,030 samples, 0.17%) + + + +__d_lookup_rcu (10,101,010 samples, 0.06%) + + + +leveldb::(anonymous namespace)::KeyBuffer::slice (10,101,010 samples, 0.06%) + + + +asm_exc_page_fault (30,303,030 samples, 0.17%) + + + +ext4_claim_free_clusters (20,202,020 samples, 0.11%) + + + +ext4_da_map_blocks.constprop.0 (242,424,240 samples, 1.35%) + + + +leveldb::GetLengthPrefixedSlice (90,909,090 samples, 0.51%) + + + +file_modified (30,303,030 samples, 0.17%) + + + +ext4_nonda_switch (10,101,010 samples, 0.06%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (10,101,010 samples, 0.06%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.06%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (10,101,010 samples, 0.06%) + + + +leveldb::Slice::operator[] (10,101,010 samples, 0.06%) + + + +do_syscall_64 (10,101,010 samples, 0.06%) + + + +do_syscall_64 (20,202,020 samples, 0.11%) + + + +leveldb::DBImpl::WriteLevel0Table (393,939,390 samples, 2.19%) +l.. + + +leveldb::WriteBatch::Put (30,303,030 samples, 0.17%) + + + +consume_stock (10,101,010 samples, 0.06%) + + + + diff --git a/设计文档.assets/write_2.svg b/设计文档.assets/write_2.svg new file mode 100644 index 0000000..84f2cc6 --- /dev/null +++ b/设计文档.assets/write_2.svg @@ -0,0 +1,10950 @@ + + + + + + + + + + + + + + +Flame Graph + +Reset Zoom +Search +ic + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::EncodeVarint32 (20,202,020 samples, 0.04%) + + + +__x64_sys_write (20,202,020 samples, 0.04%) + + + +ondemand_readahead (10,101,010 samples, 0.02%) + + + +std::istream::seekg (20,202,020 samples, 0.04%) + + + +fsnotify_compare_groups (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +std::ctype<char> const& std::use_facet<std::ctype<char> > (10,101,010 samples, 0.02%) + + + +leveldb::MakeFileName (30,303,030 samples, 0.07%) + + + +__handle_mm_fault (10,101,010 samples, 0.02%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (20,202,020 samples, 0.04%) + + + +leveldb::Slice::remove_prefix (30,303,030 samples, 0.07%) + + + +submit_bio (90,909,090 samples, 0.20%) + + + +leveldb::DBImpl::Write (16,191,919,030 samples, 35.64%) +leveldb::DBImpl::Write + + +ext4_inode_attach_jinode (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::Add (262,626,260 samples, 0.58%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::InternalKeyComparator::Compare (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::HashSlice (10,101,010 samples, 0.02%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +dget_parent (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::Valid (20,202,020 samples, 0.04%) + + + +radix_tree_lookup (20,202,020 samples, 0.04%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::~_Vector_base (20,202,020 samples, 0.04%) + + + +std::allocator<char>::allocator (10,101,010 samples, 0.02%) + + + +errseq_check (10,101,010 samples, 0.02%) + + + +__rcu_read_unlock (10,101,010 samples, 0.02%) + + + +filemap_get_read_batch (151,515,150 samples, 0.33%) + + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (10,101,010 samples, 0.02%) + + + +[unknown] (20,202,020 samples, 0.04%) + + + +fput (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (40,404,040 samples, 0.09%) + + + +bool std::has_facet<std::codecvt<char, char, __mbstate_t> > (40,404,040 samples, 0.09%) + + + +__rcu_read_unlock (10,101,010 samples, 0.02%) + + + +leveldb::MemTableIterator::key (161,616,160 samples, 0.36%) + + + +_raw_spin_trylock (10,101,010 samples, 0.02%) + + + +ext4_da_write_begin (10,101,010 samples, 0.02%) + + + +futex_wait_queue (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__memmove_evex_unaligned_erms (616,161,610 samples, 1.36%) + + + +__GI___unlink (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__alloc_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> >, std::pair<leveldb::Slice, leveldb::Slice> >::_S_select_on_copy (20,202,020 samples, 0.04%) + + + +blk_mq_dispatch_plug_list (20,202,020 samples, 0.04%) + + + +std::codecvt<char, char, __mbstate_t>::do_max_length (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +path_openat (1,737,373,720 samples, 3.82%) +path.. + + +leveldb::crc32c::Extend (20,202,020 samples, 0.04%) + + + +process_measurement (10,101,010 samples, 0.02%) + + + +ext4_inode_attach_jinode (30,303,030 samples, 0.07%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +process_measurement (20,202,020 samples, 0.04%) + + + +leveldb::Slice::compare (50,505,050 samples, 0.11%) + + + +leveldb::port::Mutex::Unlock (20,202,020 samples, 0.04%) + + + +__wake_up (10,101,010 samples, 0.02%) + + + +operator delete (10,101,010 samples, 0.02%) + + + +dput (10,101,010 samples, 0.02%) + + + +leveldb::Slice::empty (10,101,010 samples, 0.02%) + + + +fsnotify (10,101,010 samples, 0.02%) + + + +__GI___lll_lock_wait (10,101,010 samples, 0.02%) + + + +do_futex (5,555,555,500 samples, 12.23%) +do_futex + + +leveldb::TableBuilder::Flush (40,404,040 samples, 0.09%) + + + +inotify_handle_inode_event (30,303,030 samples, 0.07%) + + + +[libstdc++.so.6.0.30] (30,303,030 samples, 0.07%) + + + +leveldb::InternalKeyComparator::Compare (40,404,040 samples, 0.09%) + + + +blk_mq_submit_bio (20,202,020 samples, 0.04%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +iput (10,101,010 samples, 0.02%) + + + +ext4_da_get_block_prep (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixMmapReadableFile::Read (10,101,010 samples, 0.02%) + + + +memset_orig (10,101,010 samples, 0.02%) + + + +block_write_end (20,202,020 samples, 0.04%) + + + +__memcg_slab_free_hook (70,707,070 samples, 0.16%) + + + +mutex_unlock (10,101,010 samples, 0.02%) + + + +std::basic_fstream<char, std::char_traits<char> >::close (40,404,040 samples, 0.09%) + + + +std::basic_ios<char, std::char_traits<char> >::init (20,202,020 samples, 0.04%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +kmem_cache_alloc (161,616,160 samples, 0.36%) + + + +truncate_cleanup_folio (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::ParseNextKey (212,121,210 samples, 0.47%) + + + +bdev_getblk (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_end (10,101,010 samples, 0.02%) + + + +void __gnu_cxx::new_allocator<unsigned int>::construct<unsigned int, unsigned int> (10,101,010 samples, 0.02%) + + + +_find_first_bit (10,101,010 samples, 0.02%) + + + +ext4_bread_batch (10,101,010 samples, 0.02%) + + + +balance_dirty_pages_ratelimited (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (10,101,010 samples, 0.02%) + + + +__memcg_slab_post_alloc_hook (10,101,010 samples, 0.02%) + + + +lookup_bh_lru (10,101,010 samples, 0.02%) + + + +__submit_bio (80,808,080 samples, 0.18%) + + + +part_in_flight (70,707,070 samples, 0.16%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +up_write (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +__fdget_pos (40,404,040 samples, 0.09%) + + + +futex_wait_setup (10,101,010 samples, 0.02%) + + + +__memmove_evex_unaligned_erms (10,101,010 samples, 0.02%) + + + +futex_q_lock (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::MutexLock::MutexLock (30,303,030 samples, 0.07%) + + + +leveldb::Block::Iter::Next (272,727,270 samples, 0.60%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +asm_sysvec_reschedule_ipi (10,101,010 samples, 0.02%) + + + +leveldb::DB::Put (1,424,242,410 samples, 3.13%) +lev.. + + +policy_nodemask (10,101,010 samples, 0.02%) + + + +lockref_get_not_zero (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_iterator<std::pair<unsigned long const, unsigned long> >::_Rb_tree_iterator (10,101,010 samples, 0.02%) + + + +ext4_mark_iloc_dirty (20,202,020 samples, 0.04%) + + + +leveldb::Status::operator= (40,404,040 samples, 0.09%) + + + +lockref_put_return (10,101,010 samples, 0.02%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +leveldb::DecodeEntry (30,303,030 samples, 0.07%) + + + +mntget (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +scsi_dispatch_cmd (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::HandleTable::Lookup (20,202,020 samples, 0.04%) + + + +ext4_do_update_inode.isra.0 (20,202,020 samples, 0.04%) + + + +__filemap_add_folio (414,141,410 samples, 0.91%) + + + +generic_update_time (10,101,010 samples, 0.02%) + + + +std::less<unsigned long>::operator (20,202,020 samples, 0.04%) + + + +rw_verify_area (90,909,090 samples, 0.20%) + + + +current_obj_cgroup (30,303,030 samples, 0.07%) + + + +ext4_file_write_iter (3,020,201,990 samples, 6.65%) +ext4_file.. + + +__memcg_slab_post_alloc_hook (50,505,050 samples, 0.11%) + + + +leveldb::Block::Iter::~Iter (10,101,010 samples, 0.02%) + + + +__mark_inode_dirty (40,404,040 samples, 0.09%) + + + +void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*> (10,101,010 samples, 0.02%) + + + +leveldb::GetLengthPrefixedSlice (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::substr (20,202,020 samples, 0.04%) + + + +leveldb::Compaction::ReleaseInputs (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irq (101,010,100 samples, 0.22%) + + + +schedule (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (10,101,010 samples, 0.02%) + + + +free_unref_page_list (10,101,010 samples, 0.02%) + + + +ext4_evict_inode (30,303,030 samples, 0.07%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (20,202,020 samples, 0.04%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::count (10,101,010 samples, 0.02%) + + + +[unknown] (404,040,400 samples, 0.89%) + + + +leveldb::crc32c::(anonymous namespace)::ReadUint32LE (111,111,110 samples, 0.24%) + + + +leveldb::DecodeFixed64 (10,101,010 samples, 0.02%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.02%) + + + +std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > > (10,101,010 samples, 0.02%) + + + +scsi_init_command (10,101,010 samples, 0.02%) + + + +__next_zones_zonelist (30,303,030 samples, 0.07%) + + + +folio_add_lru (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::WriteRawBlock (262,626,260 samples, 0.58%) + + + +fault_in_readable (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +[unknown] (20,202,020 samples, 0.04%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (20,202,020 samples, 0.04%) + + + +futex_wait (80,808,080 samples, 0.18%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (10,101,010 samples, 0.02%) + + + +leveldb::ExtractUserKey (80,808,080 samples, 0.18%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +std::vector<unsigned int, std::allocator<unsigned int> >::push_back (20,202,020 samples, 0.04%) + + + +aa_label_next_confined (10,101,010 samples, 0.02%) + + + +filemap_get_entry (70,707,070 samples, 0.16%) + + + +void std::_Destroy<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice> > (10,101,010 samples, 0.02%) + + + +blk_mq_get_tag (10,101,010 samples, 0.02%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.02%) + + + +scsi_dispatch_cmd (858,585,850 samples, 1.89%) +s.. + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Insert (10,101,010 samples, 0.02%) + + + +futex_wait (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (20,202,020 samples, 0.04%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::front (40,404,040 samples, 0.09%) + + + +generic_perform_write (10,101,010 samples, 0.02%) + + + +filemap_alloc_folio (686,868,680 samples, 1.51%) + + + +__GI___libc_write (252,525,250 samples, 0.56%) + + + +__check_object_size (90,909,090 samples, 0.20%) + + + +__filemap_get_folio (30,303,030 samples, 0.07%) + + + +get_partial_node.part.0 (20,202,020 samples, 0.04%) + + + +finish_task_switch.isra.0 (20,202,020 samples, 0.04%) + + + +std::operator== (10,101,010 samples, 0.02%) + + + +__schedule (30,303,030 samples, 0.07%) + + + +__legitimize_mnt (20,202,020 samples, 0.04%) + + + +lseek64@plt (10,101,010 samples, 0.02%) + + + +fsnotify_handle_inode_event.isra.0 (40,404,040 samples, 0.09%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksForward (70,707,070 samples, 0.16%) + + + +std::locale::id::_M_id (40,404,040 samples, 0.09%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (10,101,010 samples, 0.02%) + + + +leveldb::PutLengthPrefixedSlice (10,101,010 samples, 0.02%) + + + +std::ctype<char> const& std::use_facet<std::ctype<char> > (30,303,030 samples, 0.07%) + + + +submit_bio (60,606,060 samples, 0.13%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (101,010,100 samples, 0.22%) + + + +leveldb::Slice::operator[] (20,202,020 samples, 0.04%) + + + +security_file_permission (30,303,030 samples, 0.07%) + + + +leveldb::WriteBatch::Iterate (262,626,260 samples, 0.58%) + + + +mpt_put_msg_frame (10,101,010 samples, 0.02%) + + + +dd_insert_request.isra.0 (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (20,202,020 samples, 0.04%) + + + +do_unlinkat (10,101,010 samples, 0.02%) + + + +do_read_fault (20,202,020 samples, 0.04%) + + + +malloc (10,101,010 samples, 0.02%) + + + +__x64_sys_unlink (10,101,010 samples, 0.02%) + + + +operator delete (10,101,010 samples, 0.02%) + + + +inode_needs_update_time (40,404,040 samples, 0.09%) + + + +operator delete (20,202,020 samples, 0.04%) + + + +[libstdc++.so.6.0.30] (27,040,403,770 samples, 59.52%) +[libstdc++.so.6.0.30] + + +leveldb::GetLengthPrefixedSlice (80,808,080 samples, 0.18%) + + + +leveldb::ValueLogFileName (40,404,040 samples, 0.09%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +_IO_file_open (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadMain (6,101,010,040 samples, 13.43%) +leveldb::(anonymous .. + + +_int_free (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (30,303,030 samples, 0.07%) + + + +leveldb::WriteBatch::Iterate (323,232,320 samples, 0.71%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::Status::ok (10,101,010 samples, 0.02%) + + + +folio_alloc (20,202,020 samples, 0.04%) + + + +ext4_da_write_begin (2,010,100,990 samples, 4.42%) +ext4_.. + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::size (30,303,030 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (363,636,360 samples, 0.80%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (70,707,070 samples, 0.16%) + + + +__rcu_read_unlock (20,202,020 samples, 0.04%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +std::vector<unsigned int, std::allocator<unsigned int> >::size (10,101,010 samples, 0.02%) + + + +file_close_fd (20,202,020 samples, 0.04%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +__GI___lll_lock_wake (10,101,010 samples, 0.02%) + + + +mntput_no_expire (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +futex_wake (5,515,151,460 samples, 12.14%) +futex_wake + + +irqentry_exit (10,101,010 samples, 0.02%) + + + +do_unlinkat (10,101,010 samples, 0.02%) + + + +scsi_queue_rq (30,303,030 samples, 0.07%) + + + +leveldb::IteratorWrapper::Valid (20,202,020 samples, 0.04%) + + + +_raw_read_lock (30,303,030 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (999,999,990 samples, 2.20%) +e.. + + +leveldb::DBImpl::Writer*& std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::emplace_back<leveldb::DBImpl::Writer*> (90,909,090 samples, 0.20%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +_int_free (40,404,040 samples, 0.09%) + + + +ext4_buffered_write_iter (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irq (70,707,070 samples, 0.16%) + + + +copy_page_from_iter_atomic (20,202,020 samples, 0.04%) + + + +leveldb::Status::OK (10,101,010 samples, 0.02%) + + + +get_page_from_freelist (10,101,010 samples, 0.02%) + + + +cfree@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +ondemand_readahead (1,292,929,280 samples, 2.85%) +on.. + + +leveldb::Status::~Status (10,101,010 samples, 0.02%) + + + +__memcmp_evex_movbe (30,303,030 samples, 0.07%) + + + +std::pair<leveldb::Slice, leveldb::Slice> const& std::forward<std::pair<leveldb::Slice, leveldb::Slice> const&> (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::Flush (515,151,510 samples, 1.13%) + + + +std::__basic_file<char>::open (30,303,030 samples, 0.07%) + + + +_IO_default_xsputn (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.02%) + + + +__filemap_fdatawrite_range (121,212,120 samples, 0.27%) + + + +void __gnu_cxx::new_allocator<leveldb::DBImpl::Writer*>::destroy<leveldb::DBImpl::Writer*> (10,101,010 samples, 0.02%) + + + +block_write_end (60,606,060 samples, 0.13%) + + + +truncate_inode_pages_final (30,303,030 samples, 0.07%) + + + +release_pages (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::WriteRawBlock (20,202,020 samples, 0.04%) + + + +leveldb::BlockBuilder::Add (1,404,040,390 samples, 3.09%) +lev.. + + +asm_common_interrupt (20,202,020 samples, 0.04%) + + + +wake_up_q (10,101,010 samples, 0.02%) + + + +leveldb::Version::Ref (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::allocate (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::Put (191,919,190 samples, 0.42%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +lockref_get_not_zero (20,202,020 samples, 0.04%) + + + +std::fpos<__mbstate_t>::fpos (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::WriteLevel0Table (494,949,490 samples, 1.09%) + + + +leveldb::ReadBlock (101,010,100 samples, 0.22%) + + + +__GI___libc_open (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock (10,101,010 samples, 0.02%) + + + +ext4_file_write_iter (20,202,020 samples, 0.04%) + + + +std::basic_ios<char, std::char_traits<char> >::init (20,202,020 samples, 0.04%) + + + +get_page_from_freelist (525,252,520 samples, 1.16%) + + + +leveldb::port::Mutex::Lock (30,303,030 samples, 0.07%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Lock (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::key (10,101,010 samples, 0.02%) + + + +apparmor_file_alloc_security (30,303,030 samples, 0.07%) + + + +ext4_inode_csum_set (10,101,010 samples, 0.02%) + + + +rmqueue_bulk (10,101,010 samples, 0.02%) + + + +std::locale::operator= (10,101,010 samples, 0.02%) + + + +lockref_get_not_zero (10,101,010 samples, 0.02%) + + + +kmem_cache_free (90,909,090 samples, 0.20%) + + + +std::ios_base::_M_init (30,303,030 samples, 0.07%) + + + +x64_sys_call (20,202,020 samples, 0.04%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Equal (30,303,030 samples, 0.07%) + + + +void std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::construct<std::pair<leveldb::Slice, leveldb::Slice>, std::pair<leveldb::Slice, leveldb::Slice> > (10,101,010 samples, 0.02%) + + + +do_syscall_64 (242,424,240 samples, 0.53%) + + + +leveldb::GetLengthPrefixedSlice (10,101,010 samples, 0.02%) + + + +futex_wait (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (3,070,707,040 samples, 6.76%) +leveldb::.. + + +ext4_file_open (111,111,110 samples, 0.24%) + + + +scsi_queue_rq (10,101,010 samples, 0.02%) + + + +do_syscall_64 (30,303,030 samples, 0.07%) + + + +syscall_exit_to_user_mode_prepare (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +std::mutex::lock (30,303,030 samples, 0.07%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.02%) + + + +aa_path_name (282,828,280 samples, 0.62%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::count (30,303,030 samples, 0.07%) + + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +mptscsih_qcmd (60,606,060 samples, 0.13%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::SetNext (10,101,010 samples, 0.02%) + + + +leveldb::Version::Unref (10,101,010 samples, 0.02%) + + + +filemap_fault (10,101,010 samples, 0.02%) + + + +mark_buffer_dirty (50,505,050 samples, 0.11%) + + + +folio_alloc (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatchInternal::Count (20,202,020 samples, 0.04%) + + + +ext4_da_write_begin (80,808,080 samples, 0.18%) + + + +__GI___unlink (10,101,010 samples, 0.02%) + + + +std::__deque_buf_size (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::Valid (10,101,010 samples, 0.02%) + + + +__mark_inode_dirty (20,202,020 samples, 0.04%) + + + +entry_SYSCALL_64_after_hwframe (30,303,030 samples, 0.07%) + + + +leveldb::Slice::data (20,202,020 samples, 0.04%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.02%) + + + +unsigned int& std::vector<unsigned int, std::allocator<unsigned int> >::emplace_back<unsigned int> (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (30,303,030 samples, 0.07%) + + + +finish_task_switch.isra.0 (10,101,010 samples, 0.02%) + + + +send_to_group (313,131,310 samples, 0.69%) + + + +__x64_sys_write (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (30,303,030 samples, 0.07%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::PutVarint32 (30,303,030 samples, 0.07%) + + + +mem_cgroup_wb_stats (111,111,110 samples, 0.24%) + + + +ext4_lookup (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (70,707,070 samples, 0.16%) + + + +operator new (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +_raw_spin_unlock (10,101,010 samples, 0.02%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_relocate (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +std::mutex::unlock (393,939,390 samples, 0.87%) + + + +ext4_io_submit (20,202,020 samples, 0.04%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +blk_mq_flush_plug_list.part.0 (20,202,020 samples, 0.04%) + + + +memset_orig (60,606,060 samples, 0.13%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::end (10,101,010 samples, 0.02%) + + + +__GI___lll_lock_wake (70,707,070 samples, 0.16%) + + + +std::__invoke_result<void (27,040,403,770 samples, 59.52%) +std::__invoke_result<void + + +obj_cgroup_charge (20,202,020 samples, 0.04%) + + + +__alloc_pages (10,101,010 samples, 0.02%) + + + +__blk_mq_do_dispatch_sched (898,989,890 samples, 1.98%) +_.. + + +leveldb::log::Writer::AddRecord (313,131,310 samples, 0.69%) + + + +schedule (30,303,030 samples, 0.07%) + + + +fault_in_readable (10,101,010 samples, 0.02%) + + + +leveldb::crc32c::(anonymous namespace)::ReadUint32LE (10,101,010 samples, 0.02%) + + + +folio_mapping (20,202,020 samples, 0.04%) + + + +__radix_tree_lookup (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (50,505,050 samples, 0.11%) + + + +truncate_inode_pages_final (10,101,010 samples, 0.02%) + + + +filemap_read (1,858,585,840 samples, 4.09%) +file.. + + +ext4_file_read_iter (1,878,787,860 samples, 4.14%) +ext4.. + + +_IO_unsave_markers (30,303,030 samples, 0.07%) + + + +leveldb::DBImpl::Writer*& std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::emplace_back<leveldb::DBImpl::Writer*> (10,101,010 samples, 0.02%) + + + +do_filp_open (1,777,777,760 samples, 3.91%) +do_f.. + + +__fdget_pos (10,101,010 samples, 0.02%) + + + +ext4_da_get_block_prep (30,303,030 samples, 0.07%) + + + +std::vector<leveldb::Slice, std::allocator<leveldb::Slice> >::size (30,303,030 samples, 0.07%) + + + +_raw_spin_unlock_irqrestore (141,414,140 samples, 0.31%) + + + +futex_q_lock (10,101,010 samples, 0.02%) + + + +x64_sys_call (30,303,030 samples, 0.07%) + + + +link_path_walk.part.0.constprop.0 (171,717,170 samples, 0.38%) + + + +leveldb::Block::Iter::Valid (10,101,010 samples, 0.02%) + + + +__x64_sys_unlink (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::push_back (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +leveldb::Block::NumRestarts (10,101,010 samples, 0.02%) + + + +leveldb::Status::Status (10,101,010 samples, 0.02%) + + + +leveldb::Benchmark::ThreadBody (16,585,858,420 samples, 36.51%) +leveldb::Benchmark::ThreadBody + + +should_fail_alloc_page (10,101,010 samples, 0.02%) + + + +bdev_getblk (10,101,010 samples, 0.02%) + + + +__GI___futex_abstimed_wait_cancelable64 (181,818,180 samples, 0.40%) + + + +locks_remove_posix (50,505,050 samples, 0.11%) + + + +pthread_mutex_unlock@@GLIBC_2.2.5 (70,707,070 samples, 0.16%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +asm_common_interrupt (20,202,020 samples, 0.04%) + + + +leveldb::Slice::operator[] (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::WriteValueLog (30,303,030 samples, 0.07%) + + + +__block_commit_write (242,424,240 samples, 0.53%) + + + +leveldb::crc32c::Extend (10,101,010 samples, 0.02%) + + + +current_time (20,202,020 samples, 0.04%) + + + +memset@plt (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (20,202,020 samples, 0.04%) + + + +get_page_from_freelist (60,606,060 samples, 0.13%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +ext4_get_reserved_space (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatchInternal::InsertInto (282,828,280 samples, 0.62%) + + + +leveldb::Slice::compare (20,202,020 samples, 0.04%) + + + +leveldb::port::Mutex::Lock (10,101,010 samples, 0.02%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_destroy_internal_buffer (20,202,020 samples, 0.04%) + + + +leveldb::WriteBatch::Iterate (40,404,040 samples, 0.09%) + + + +___slab_alloc (80,808,080 samples, 0.18%) + + + +leveldb::Arena::Allocate (10,101,010 samples, 0.02%) + + + +leveldb::VarintLength (10,101,010 samples, 0.02%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (141,414,140 samples, 0.31%) + + + +operator new (10,101,010 samples, 0.02%) + + + +generic_write_check_limits (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (30,303,030 samples, 0.07%) + + + +[unknown] (20,202,020 samples, 0.04%) + + + +__GI_____strtoull_l_internal (10,101,010 samples, 0.02%) + + + +__vfprintf_internal (121,212,120 samples, 0.27%) + + + +std::pair<leveldb::Slice, leveldb::Slice>&& std::forward<std::pair<leveldb::Slice, leveldb::Slice> > (10,101,010 samples, 0.02%) + + + +copy_from_kernel_nofault_allowed (10,101,010 samples, 0.02%) + + + +blk_mq_flush_plug_list.part.0 (10,101,010 samples, 0.02%) + + + +std::pair<leveldb::Slice, leveldb::Slice>::pair<leveldb::Slice, leveldb::Slice, true> (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +__GI___lll_lock_wait (30,303,030 samples, 0.07%) + + + +__futex_wait (80,808,080 samples, 0.18%) + + + +[unknown] (30,303,030 samples, 0.07%) + + + +__virt_addr_valid (30,303,030 samples, 0.07%) + + + +file_modified (10,101,010 samples, 0.02%) + + + +__alloc_pages (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_relocate (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +__filemap_get_folio (70,707,070 samples, 0.16%) + + + +copy_from_kernel_nofault (50,505,050 samples, 0.11%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Insert (222,222,220 samples, 0.49%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Sync (121,212,120 samples, 0.27%) + + + +mem_cgroup_commit_charge (70,707,070 samples, 0.16%) + + + +std::mutex::unlock (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::RandomGenerator::Generate (20,202,020 samples, 0.04%) + + + +leveldb::VersionSet::LastSequence (10,101,010 samples, 0.02%) + + + +balance_dirty_pages (111,111,110 samples, 0.24%) + + + +__ext4_journal_start_sb (10,101,010 samples, 0.02%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.02%) + + + +std::basic_fstream<char, std::char_traits<char> >::close (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_max_size (30,303,030 samples, 0.07%) + + + +__memset_evex_unaligned_erms (30,303,030 samples, 0.07%) + + + +filemap_get_entry (30,303,030 samples, 0.07%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.02%) + + + +mptscsih_qcmd (10,101,010 samples, 0.02%) + + + +std::condition_variable::notify_all (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Seek (727,272,720 samples, 1.60%) + + + +file_modified (70,707,070 samples, 0.16%) + + + +std::basic_ios<char, std::char_traits<char> >::_M_cache_locale (10,101,010 samples, 0.02%) + + + +std::pair<unsigned long, unsigned long>& std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::emplace_back<std::pair<unsigned long, unsigned long> > (10,101,010 samples, 0.02%) + + + +do_syscall_64 (70,707,070 samples, 0.16%) + + + +process_output_block (10,101,010 samples, 0.02%) + + + +std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (20,202,020 samples, 0.04%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (10,101,010 samples, 0.02%) + + + +wake_up_q (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::SeekToFirst (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::vector (10,101,010 samples, 0.02%) + + + +path_get (20,202,020 samples, 0.04%) + + + +__fsnotify_parent (40,404,040 samples, 0.09%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::BuildBatchGroup (40,404,040 samples, 0.09%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.02%) + + + +__dd_dispatch_request (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::begin (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::reserve (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +futex_wake_mark (60,606,060 samples, 0.13%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.04%) + + + +__x64_sys_fdatasync (30,303,030 samples, 0.07%) + + + +__raw_spin_lock_irqsave (20,202,020 samples, 0.04%) + + + +std::basic_filebuf<char, std::char_traits<char> >::open (30,303,030 samples, 0.07%) + + + +leveldb::InternalKeyComparator::Compare (707,070,700 samples, 1.56%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (2,272,727,250 samples, 5.00%) +leveld.. + + +leveldb::Block::Iter::NextEntryOffset (10,101,010 samples, 0.02%) + + + +leveldb::Random::OneIn (30,303,030 samples, 0.07%) + + + +leveldb::InternalKeyComparator::Compare (191,919,190 samples, 0.42%) + + + +leveldb::WriteBatch::Iterate (171,717,170 samples, 0.38%) + + + +schedule (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +evict (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.02%) + + + +copy_page_from_iter_atomic (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Lookup (80,808,080 samples, 0.18%) + + + +__filemap_get_folio (10,101,010 samples, 0.02%) + + + +down_write (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::RandomGenerator::Generate (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::Valid (10,101,010 samples, 0.02%) + + + +blk_add_rq_to_plug (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::WriteUnbuffered (10,101,010 samples, 0.02%) + + + +fault_in_iov_iter_readable (20,202,020 samples, 0.04%) + + + +_raw_spin_unlock_irq (202,020,200 samples, 0.44%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.02%) + + + +__blk_mq_sched_dispatch_requests (30,303,030 samples, 0.07%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +folio_mark_accessed (10,101,010 samples, 0.02%) + + + +mnt_put_write_access (20,202,020 samples, 0.04%) + + + +_IO_link_in (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::MemTableInserter::Put (3,818,181,780 samples, 8.40%) +leveldb::(an.. + + +alloc_pages_mpol (70,707,070 samples, 0.16%) + + + +blk_mq_flush_plug_list.part.0 (30,303,030 samples, 0.07%) + + + +file_write_and_wait_range (30,303,030 samples, 0.07%) + + + +__GI___lll_lock_wait (40,404,040 samples, 0.09%) + + + +wake_up_q (1,070,707,060 samples, 2.36%) +w.. + + +__cond_resched (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (10,101,010 samples, 0.02%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::empty (10,101,010 samples, 0.02%) + + + +inode_update_timestamps (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (393,939,390 samples, 0.87%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +elv_rqhash_del (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::SeekToRestartPoint (20,202,020 samples, 0.04%) + + + +__GI___pthread_enable_asynccancel (10,101,010 samples, 0.02%) + + + +prepend (70,707,070 samples, 0.16%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (10,101,010 samples, 0.02%) + + + +inotify_free_event (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux (20,202,020 samples, 0.04%) + + + +futex_hash (10,101,010 samples, 0.02%) + + + +fdatasync (121,212,120 samples, 0.27%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +__x64_sys_fdatasync (121,212,120 samples, 0.27%) + + + +_IO_default_finish (20,202,020 samples, 0.04%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +_raw_read_unlock (10,101,010 samples, 0.02%) + + + +walk_component (50,505,050 samples, 0.11%) + + + +_IO_file_close (10,101,010 samples, 0.02%) + + + +memcmp@plt (10,101,010 samples, 0.02%) + + + +std::mutex::lock (20,202,020 samples, 0.04%) + + + +leveldb::TableBuilder::Finish (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::_Vector_base (20,202,020 samples, 0.04%) + + + +__ext4_journal_get_write_access (10,101,010 samples, 0.02%) + + + +aa_file_perm (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.02%) + + + +bool std::has_facet<std::ctype<char> > (10,101,010 samples, 0.02%) + + + +do_syscall_64 (363,636,360 samples, 0.80%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::_Deque_iterator (20,202,020 samples, 0.04%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +leveldb::crc32c::(anonymous namespace)::ReadUint32LE (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatchInternal::Contents (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::Slice, std::allocator<leveldb::Slice> >::_M_allocate (50,505,050 samples, 0.11%) + + + +leveldb::VarintLength (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::max_size (10,101,010 samples, 0.02%) + + + +handle_mm_fault (10,101,010 samples, 0.02%) + + + +ext4_es_insert_delayed_block (50,505,050 samples, 0.11%) + + + +std::mutex::unlock (20,202,020 samples, 0.04%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (10,101,010 samples, 0.02%) + + + +mptspi_qcmd (20,202,020 samples, 0.04%) + + + +leveldb::ParseFakeValueForValuelog (50,505,050 samples, 0.11%) + + + +sysvec_reschedule_ipi (10,101,010 samples, 0.02%) + + + +folio_alloc_buffers (222,222,220 samples, 0.49%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +xas_load (10,101,010 samples, 0.02%) + + + +copy_from_kernel_nofault_allowed (20,202,020 samples, 0.04%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +filemap_add_folio (10,101,010 samples, 0.02%) + + + +crypto_shash_update (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (20,202,020 samples, 0.04%) + + + +d_absolute_path (232,323,230 samples, 0.51%) + + + +find_lock_entries (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatch::Handler::~Handler (10,101,010 samples, 0.02%) + + + +std::basic_filebuf<char, std::char_traits<char> >::close (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::~Iter (30,303,030 samples, 0.07%) + + + +leveldb::Version::Unref (10,101,010 samples, 0.02%) + + + +asm_sysvec_reschedule_ipi (10,101,010 samples, 0.02%) + + + +folio_batch_move_lru (30,303,030 samples, 0.07%) + + + +leveldb::EncodeVarint32 (20,202,020 samples, 0.04%) + + + +__GI___libc_write (2,232,323,210 samples, 4.91%) +__GI__.. + + +obj_cgroup_charge (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +leveldb::DecodeEntry (60,606,060 samples, 0.13%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +futex_q_lock (10,101,010 samples, 0.02%) + + + +do_syscall_64 (10,101,010 samples, 0.02%) + + + +fault_in_readable (40,404,040 samples, 0.09%) + + + +__fsnotify_parent (30,303,030 samples, 0.07%) + + + +leveldb::BlockHandle::DecodeFrom (10,101,010 samples, 0.02%) + + + +vfs_write (20,202,020 samples, 0.04%) + + + +x64_sys_call (60,606,060 samples, 0.13%) + + + +submit_bio_noacct (80,808,080 samples, 0.18%) + + + +ext4_fill_raw_inode (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::_M_pop_front_aux (10,101,010 samples, 0.02%) + + + +__find_get_block (10,101,010 samples, 0.02%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +leveldb::IteratorWrapper::Valid (20,202,020 samples, 0.04%) + + + +leveldb::IteratorWrapper::Next (727,272,720 samples, 1.60%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +__GI___fileno (20,202,020 samples, 0.04%) + + + +fsnotify_handle_inode_event.isra.0 (252,525,250 samples, 0.56%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::_Deque_iterator (10,101,010 samples, 0.02%) + + + +mpt_put_msg_frame (60,606,060 samples, 0.13%) + + + +leveldb::DBImpl::BGWorkGC (4,353,535,310 samples, 9.58%) +leveldb::DBIm.. + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_get_Tp_allocator (10,101,010 samples, 0.02%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::deallocate (30,303,030 samples, 0.07%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_do_relocate (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::key (10,101,010 samples, 0.02%) + + + +__blk_mq_sched_dispatch_requests (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_get_Tp_allocator (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::GetRestartPoint (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__niter_base<std::pair<leveldb::Slice, leveldb::Slice>*> (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (80,808,080 samples, 0.18%) + + + +lookup_open.isra.0 (20,202,020 samples, 0.04%) + + + +leveldb::EncodeFixed32 (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (40,404,040 samples, 0.09%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +__d_lookup_rcu (30,303,030 samples, 0.07%) + + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +leveldb::operator== (60,606,060 samples, 0.13%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Iterator (10,101,010 samples, 0.02%) + + + +lockref_put_return (10,101,010 samples, 0.02%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::count (262,626,260 samples, 0.58%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (121,212,120 samples, 0.27%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.02%) + + + +page_cache_ra_unbounded (10,101,010 samples, 0.02%) + + + +mptspi_qcmd (30,303,030 samples, 0.07%) + + + +blk_mq_flush_plug_list.part.0 (60,606,060 samples, 0.13%) + + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (30,303,030 samples, 0.07%) + + + +alloc_empty_file (161,616,160 samples, 0.36%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_deallocate (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::end (20,202,020 samples, 0.04%) + + + +std::less<unsigned long>::operator (40,404,040 samples, 0.09%) + + + +dget_parent (20,202,020 samples, 0.04%) + + + +folio_batch_move_lru (10,101,010 samples, 0.02%) + + + +ext4_block_write_begin (555,555,550 samples, 1.22%) + + + +leveldb::Version::Get (1,191,919,180 samples, 2.62%) +le.. + + +__memcmp_evex_movbe (10,101,010 samples, 0.02%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +__fdget_pos (90,909,090 samples, 0.20%) + + + +ext4_fill_raw_inode (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +ext4_buffered_write_iter (111,111,110 samples, 0.24%) + + + +__fsnotify_parent (434,343,430 samples, 0.96%) + + + +leveldb::Block::Iter::~Iter (30,303,030 samples, 0.07%) + + + +std::_Select1st<std::pair<unsigned long const, unsigned long> >::operator (10,101,010 samples, 0.02%) + + + +leveldb::MutexLock::~MutexLock (20,202,020 samples, 0.04%) + + + +dput (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (90,909,090 samples, 0.20%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::ExtractUserKey (20,202,020 samples, 0.04%) + + + +__x64_sys_write (151,515,150 samples, 0.33%) + + + +__gnu_cxx::new_allocator<std::pair<unsigned long, unsigned long> >::_M_max_size (10,101,010 samples, 0.02%) + + + +_raw_spin_lock (30,303,030 samples, 0.07%) + + + +__GI___lll_lock_wait (30,303,030 samples, 0.07%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (20,202,020 samples, 0.04%) + + + +get_partial_node.part.0 (10,101,010 samples, 0.02%) + + + +_int_malloc (10,101,010 samples, 0.02%) + + + +shuffle_freelist (10,101,010 samples, 0.02%) + + + +mptspi_qcmd (10,101,010 samples, 0.02%) + + + +std::__basic_file<char>::xsputn_2 (50,505,050 samples, 0.11%) + + + +leveldb::Slice::Slice (30,303,030 samples, 0.07%) + + + +terminate_walk (40,404,040 samples, 0.09%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::NumEntries (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::GetMaxHeight (10,101,010 samples, 0.02%) + + + +common_interrupt (20,202,020 samples, 0.04%) + + + +iput (10,101,010 samples, 0.02%) + + + +blk_mq_run_hw_queue (898,989,890 samples, 1.98%) +b.. + + +leveldb::DecodeFixed32 (101,010,100 samples, 0.22%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::find (20,202,020 samples, 0.04%) + + + +__strstr_sse2 (70,707,070 samples, 0.16%) + + + +leveldb::Block::Iter::Valid (10,101,010 samples, 0.02%) + + + +_int_malloc (10,101,010 samples, 0.02%) + + + +_IO_file_finish@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +__next_zones_zonelist (10,101,010 samples, 0.02%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +std::locale::locale (10,101,010 samples, 0.02%) + + + +open_last_lookups (30,303,030 samples, 0.07%) + + + +ext4_reserve_inode_write (20,202,020 samples, 0.04%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::begin (20,202,020 samples, 0.04%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +x64_sys_call (121,212,120 samples, 0.27%) + + + +leveldb::ExtractUserKey (10,101,010 samples, 0.02%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +std::mutex::unlock (90,909,090 samples, 0.20%) + + + +path_name (282,828,280 samples, 0.62%) + + + +read_pages (10,101,010 samples, 0.02%) + + + +__memcg_slab_post_alloc_hook (10,101,010 samples, 0.02%) + + + +security_file_open (727,272,720 samples, 1.60%) + + + +__mark_inode_dirty (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::RemoveObsoleteFiles (30,303,030 samples, 0.07%) + + + +x64_sys_call (30,303,030 samples, 0.07%) + + + +__x64_sys_write (1,272,727,260 samples, 2.80%) +__.. + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (10,101,010 samples, 0.02%) + + + +__GI___unlink (10,101,010 samples, 0.02%) + + + +lockref_put_return (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +__GI___lll_lock_wait (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::LRUCache::LRU_Append (10,101,010 samples, 0.02%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_internal_buffer (10,101,010 samples, 0.02%) + + + +__ext4_find_entry (10,101,010 samples, 0.02%) + + + +ext4_readahead (111,111,110 samples, 0.24%) + + + +__cond_resched (10,101,010 samples, 0.02%) + + + +std::operator- (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::operator== (10,101,010 samples, 0.02%) + + + +ksys_lseek (151,515,150 samples, 0.33%) + + + +unlink_chunk.constprop.0 (20,202,020 samples, 0.04%) + + + +leveldb::WriteBatch::~WriteBatch (10,101,010 samples, 0.02%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::_M_set_node (10,101,010 samples, 0.02%) + + + +std::ios_base::_M_dispose_callbacks (20,202,020 samples, 0.04%) + + + +ksys_write (202,020,200 samples, 0.44%) + + + +std::basic_filebuf<char, std::char_traits<char> >::xsputn (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (2,262,626,240 samples, 4.98%) +leveld.. + + +__GI___lll_lock_wait (20,202,020 samples, 0.04%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_terminate_output (30,303,030 samples, 0.07%) + + + +std::ios_base::~ios_base (50,505,050 samples, 0.11%) + + + +__ext4_journal_stop (10,101,010 samples, 0.02%) + + + +futex_wake_mark (10,101,010 samples, 0.02%) + + + +__memmove_evex_unaligned_erms (90,909,090 samples, 0.20%) + + + +leveldb::EncodeVarint32 (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatch::Iterate (3,969,696,930 samples, 8.74%) +leveldb::Wri.. + + +__mark_inode_dirty (40,404,040 samples, 0.09%) + + + +inode_permission (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.04%) + + + +__find_get_block (10,101,010 samples, 0.02%) + + + +__submit_bio (20,202,020 samples, 0.04%) + + + +__memcg_slab_post_alloc_hook (20,202,020 samples, 0.04%) + + + +consume_obj_stock (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__legitimize_mnt (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::pop_front (30,303,030 samples, 0.07%) + + + +std::mutex::lock (212,121,210 samples, 0.47%) + + + +[unknown] (80,808,080 samples, 0.18%) + + + +strlen (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.02%) + + + +n_tty_write (10,101,010 samples, 0.02%) + + + +_raw_spin_lock (20,202,020 samples, 0.04%) + + + +ext4_da_write_begin (20,202,020 samples, 0.04%) + + + +leveldb::DBImpl::WriteValueLog (1,080,808,070 samples, 2.38%) +l.. + + +dput (10,101,010 samples, 0.02%) + + + +_IO_old_init (20,202,020 samples, 0.04%) + + + +__memmove_evex_unaligned_erms (10,101,010 samples, 0.02%) + + + +leveldb::Table::InternalGet (10,101,010 samples, 0.02%) + + + +ext4_journal_check_start (10,101,010 samples, 0.02%) + + + +get_futex_key (20,202,020 samples, 0.04%) + + + +leveldb::MutexLock::MutexLock (30,303,030 samples, 0.07%) + + + +operator delete (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (20,202,020 samples, 0.04%) + + + +leveldb::GetLengthPrefixedSlice (10,101,010 samples, 0.02%) + + + +common_interrupt (20,202,020 samples, 0.04%) + + + +_raw_spin_lock (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_get_Tp_allocator (10,101,010 samples, 0.02%) + + + +mptscsih_qcmd (20,202,020 samples, 0.04%) + + + +wake_up_q (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::Valid (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +ext4_bio_write_folio (30,303,030 samples, 0.07%) + + + +inotify_handle_inode_event (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (10,101,010 samples, 0.02%) + + + +current_obj_cgroup (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::KeyComparator::operator (313,131,310 samples, 0.69%) + + + +leveldb::port::Mutex::Lock (212,121,210 samples, 0.47%) + + + +std::allocator_traits<std::allocator<leveldb::Slice> >::allocate (50,505,050 samples, 0.11%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (646,464,640 samples, 1.42%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (20,202,020 samples, 0.04%) + + + +__folio_start_writeback (20,202,020 samples, 0.04%) + + + +do_syscall_64 (10,101,010 samples, 0.02%) + + + +do_open (1,292,929,280 samples, 2.85%) +do.. + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +leveldb::VersionSet::NumLevelFiles (30,303,030 samples, 0.07%) + + + +alloc_buffer_head (10,101,010 samples, 0.02%) + + + +mpt_put_msg_frame (20,202,020 samples, 0.04%) + + + +irq_exit_rcu (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (10,101,010 samples, 0.02%) + + + +generic_update_time (50,505,050 samples, 0.11%) + + + +page_cache_async_ra (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::Update (10,101,010 samples, 0.02%) + + + +leveldb::crc32c::Extend (30,303,030 samples, 0.07%) + + + +balance_dirty_pages_ratelimited (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::Update (10,101,010 samples, 0.02%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (20,202,020 samples, 0.04%) + + + +leveldb::Table::BlockReader (20,202,020 samples, 0.04%) + + + +scsi_queue_rq (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (30,303,030 samples, 0.07%) + + + +__srcu_read_lock (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +__aa_path_perm (161,616,160 samples, 0.36%) + + + +leveldb::VersionSet::AppendVersion (10,101,010 samples, 0.02%) + + + +std::__basic_file<char>::is_open (20,202,020 samples, 0.04%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::Status::Status (10,101,010 samples, 0.02%) + + + +std::operator& (10,101,010 samples, 0.02%) + + + +kmem_cache_free (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::begin (10,101,010 samples, 0.02%) + + + +exc_page_fault (10,101,010 samples, 0.02%) + + + +leveldb::Iterator::CleanupNode::Run (30,303,030 samples, 0.07%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +vfs_read (2,040,404,020 samples, 4.49%) +vfs_r.. + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.02%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +try_to_free_buffers (10,101,010 samples, 0.02%) + + + +asm_exc_page_fault (10,101,010 samples, 0.02%) + + + +strlen (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_allocate (20,202,020 samples, 0.04%) + + + +ksys_write (20,202,020 samples, 0.04%) + + + +scsi_dispatch_cmd (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::LRUCache::Ref (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::size (20,202,020 samples, 0.04%) + + + +blk_add_rq_to_plug (20,202,020 samples, 0.04%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +ext4_do_update_inode.isra.0 (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +_itoa_word (10,101,010 samples, 0.02%) + + + +std::basic_filebuf<char, std::char_traits<char> >::close (60,606,060 samples, 0.13%) + + + +__GI___libc_write (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Lookup (20,202,020 samples, 0.04%) + + + +__submit_bio (60,606,060 samples, 0.13%) + + + +__blk_mq_sched_dispatch_requests (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (121,212,120 samples, 0.27%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +leveldb::Slice::size (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (272,727,270 samples, 0.60%) + + + +aa_path_perm (606,060,600 samples, 1.33%) + + + +copy_page_to_iter (292,929,290 samples, 0.64%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~_Vector_base (40,404,040 samples, 0.09%) + + + +__memcg_slab_free_hook (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::CompactionState::current_output (30,303,030 samples, 0.07%) + + + +consume_stock (10,101,010 samples, 0.02%) + + + +do_user_addr_fault (10,101,010 samples, 0.02%) + + + +dquot_file_open (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (30,303,030 samples, 0.07%) + + + +submit_bio_noacct_nocheck (80,808,080 samples, 0.18%) + + + +leveldb::ReadBlock (10,101,010 samples, 0.02%) + + + +mpage_submit_folio (30,303,030 samples, 0.07%) + + + +radix_tree_lookup (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_const_iterator<std::pair<unsigned long const, unsigned long> >::_Rb_tree_const_iterator (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::max_size (10,101,010 samples, 0.02%) + + + +do_syscall_64 (30,303,030 samples, 0.07%) + + + +__blk_mq_do_dispatch_sched (10,101,010 samples, 0.02%) + + + +do_syscall_64 (30,303,030 samples, 0.07%) + + + +ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +strncpy_from_user (161,616,160 samples, 0.36%) + + + +ext4_sync_file (121,212,120 samples, 0.27%) + + + +__blk_mq_do_dispatch_sched (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +__blk_mq_do_dispatch_sched (20,202,020 samples, 0.04%) + + + +mpage_submit_folio (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::back (10,101,010 samples, 0.02%) + + + +kmem_cache_free (40,404,040 samples, 0.09%) + + + +ext4_inode_csum (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +vfs_write (20,202,020 samples, 0.04%) + + + +__x64_sys_read (2,070,707,050 samples, 4.56%) +__x64.. + + +leveldb::ExtractUserKey (50,505,050 samples, 0.11%) + + + +ksys_write (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (111,111,110 samples, 0.24%) + + + +cfree@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +is_vmalloc_addr (30,303,030 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (2,575,757,550 samples, 5.67%) +entry_S.. + + +bool std::has_facet<std::ctype<char> > (20,202,020 samples, 0.04%) + + + +lockref_get (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.04%) + + + +do_dentry_open (10,101,010 samples, 0.02%) + + + +memcpy@plt (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (20,202,020 samples, 0.04%) + + + +kfree (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::NewNode (60,606,060 samples, 0.13%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (20,202,020 samples, 0.04%) + + + +__futex_wait (10,101,010 samples, 0.02%) + + + +__memcg_slab_post_alloc_hook (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::LRUCache::Ref (10,101,010 samples, 0.02%) + + + +inotify_handle_inode_event (252,525,250 samples, 0.56%) + + + +syscall_exit_to_user_mode (10,101,010 samples, 0.02%) + + + +ext4_reserve_inode_write (10,101,010 samples, 0.02%) + + + +do_syscall_64 (30,303,030 samples, 0.07%) + + + +leveldb::EncodeVarint32 (20,202,020 samples, 0.04%) + + + +__legitimize_path (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::_Vector_impl_data::_Vector_impl_data (10,101,010 samples, 0.02%) + + + +std::thread::_Invoker<std::tuple<void (27,040,403,770 samples, 59.52%) +std::thread::_Invoker<std::tuple<void + + +up_write (20,202,020 samples, 0.04%) + + + +d_absolute_path (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +xas_start (20,202,020 samples, 0.04%) + + + +std::ios_base::_M_dispose_callbacks (10,101,010 samples, 0.02%) + + + +leveldb::BlockHandle::DecodeFrom (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (60,606,060 samples, 0.13%) + + + +process_echoes (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.02%) + + + +__find_get_block_slow (10,101,010 samples, 0.02%) + + + +x64_sys_call (5,575,757,520 samples, 12.27%) +x64_sys_call + + +std::__basic_file<char>::fd (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (20,202,020 samples, 0.04%) + + + +__strlen_evex (10,101,010 samples, 0.02%) + + + +std::basic_fstream<char, std::char_traits<char> >::~basic_fstream (30,303,030 samples, 0.07%) + + + +ext4_inode_csum_set (10,101,010 samples, 0.02%) + + + +__alloc_pages (40,404,040 samples, 0.09%) + + + +x64_sys_call (2,222,222,200 samples, 4.89%) +x64_sy.. + + +folio_alloc_buffers (10,101,010 samples, 0.02%) + + + +__memmove_evex_unaligned_erms (20,202,020 samples, 0.04%) + + + +leveldb::Block::Iter::status (10,101,010 samples, 0.02%) + + + +folio_unlock (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Append (20,202,020 samples, 0.04%) + + + +ktime_get_coarse_real_ts64 (10,101,010 samples, 0.02%) + + + +__dynamic_cast (30,303,030 samples, 0.07%) + + + +leveldb::IteratorWrapper::Next (959,595,950 samples, 2.11%) +l.. + + +__memcmp_evex_movbe (10,101,010 samples, 0.02%) + + + +__fsnotify_parent (50,505,050 samples, 0.11%) + + + +do_syscall_64 (10,101,010 samples, 0.02%) + + + +unsigned long const& std::min<unsigned long> (10,101,010 samples, 0.02%) + + + +leveldb::ExtractUserKey (60,606,060 samples, 0.13%) + + + +mptscsih_qcmd (10,101,010 samples, 0.02%) + + + +blk_mq_run_hw_queue (60,606,060 samples, 0.13%) + + + +__filemap_add_folio (111,111,110 samples, 0.24%) + + + +leveldb::MemTableIterator::Valid (10,101,010 samples, 0.02%) + + + +__schedule (10,101,010 samples, 0.02%) + + + +__srcu_read_lock (20,202,020 samples, 0.04%) + + + +ksys_write (10,101,010 samples, 0.02%) + + + +create_empty_buffers (232,323,230 samples, 0.51%) + + + +aa_str_perms (10,101,010 samples, 0.02%) + + + +import_iovec (10,101,010 samples, 0.02%) + + + +std::basic_filebuf<char, std::char_traits<char> >::seekoff (50,505,050 samples, 0.11%) + + + +x64_sys_call (545,454,540 samples, 1.20%) + + + +leveldb::MutexLock::MutexLock (20,202,020 samples, 0.04%) + + + +truncate_inode_pages_final (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +std::condition_variable::~condition_variable (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::empty (10,101,010 samples, 0.02%) + + + +futex_wake (40,404,040 samples, 0.09%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::empty (10,101,010 samples, 0.02%) + + + +__submit_bio (10,101,010 samples, 0.02%) + + + +blk_mq_flush_plug_list (10,101,010 samples, 0.02%) + + + +ext4_fill_raw_inode (10,101,010 samples, 0.02%) + + + +do_unlinkat (10,101,010 samples, 0.02%) + + + +std::basic_filebuf<char, std::char_traits<char> >::xsgetn (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (30,303,030 samples, 0.07%) + + + +leveldb::MutexLock::MutexLock (10,101,010 samples, 0.02%) + + + +generic_write_checks (10,101,010 samples, 0.02%) + + + +pthread_cond_destroy@plt (10,101,010 samples, 0.02%) + + + +x64_sys_call (80,808,080 samples, 0.18%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::RandomHeight (50,505,050 samples, 0.11%) + + + +leveldb::Version::ForEachOverlapping (1,323,232,310 samples, 2.91%) +le.. + + +filemap_alloc_folio (20,202,020 samples, 0.04%) + + + +leveldb::Slice::Slice (30,303,030 samples, 0.07%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (40,404,040 samples, 0.09%) + + + +leveldb::BlockBuilder::CurrentSizeEstimate (20,202,020 samples, 0.04%) + + + +__handle_mm_fault (30,303,030 samples, 0.07%) + + + +leveldb::IteratorWrapper::Valid (10,101,010 samples, 0.02%) + + + +void std::allocator_traits<std::allocator<unsigned int> >::construct<unsigned int, unsigned int> (10,101,010 samples, 0.02%) + + + +void std::allocator_traits<std::allocator<leveldb::DBImpl::Writer*> >::construct<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*> (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Release (20,202,020 samples, 0.04%) + + + +std::vector<leveldb::Slice, std::allocator<leveldb::Slice> >::_M_check_len (40,404,040 samples, 0.09%) + + + +page_cache_ra_unbounded (10,101,010 samples, 0.02%) + + + +std::condition_variable::condition_variable (10,101,010 samples, 0.02%) + + + +void std::_Destroy<leveldb::Slice*, leveldb::Slice> (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (40,404,040 samples, 0.09%) + + + +leveldb::DBImpl::WriteValueLog (60,606,060 samples, 0.13%) + + + +folio_add_lru (30,303,030 samples, 0.07%) + + + +__dynamic_cast (20,202,020 samples, 0.04%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_Vector_base (10,101,010 samples, 0.02%) + + + +__blk_flush_plug (919,191,910 samples, 2.02%) +_.. + + +leveldb::InternalKeyComparator::user_comparator (10,101,010 samples, 0.02%) + + + +alloc_buffer_head (202,020,200 samples, 0.44%) + + + +pthread_mutex_unlock@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +leveldb::ExtractUserKey (20,202,020 samples, 0.04%) + + + +__blk_flush_plug (10,101,010 samples, 0.02%) + + + +std::basic_ios<char, std::char_traits<char> >::_M_cache_locale (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::key (30,303,030 samples, 0.07%) + + + +mpage_map_and_submit_extent (30,303,030 samples, 0.07%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (20,202,020 samples, 0.04%) + + + +plist_del (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +pthread_mutex_unlock@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +__check_object_size (10,101,010 samples, 0.02%) + + + +copy_page_from_iter_atomic (191,919,190 samples, 0.42%) + + + +__gthread_mutex_lock (10,101,010 samples, 0.02%) + + + +unsigned long const& std::max<unsigned long> (10,101,010 samples, 0.02%) + + + +do_dentry_open (1,070,707,060 samples, 2.36%) +d.. + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (181,818,180 samples, 0.40%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +futex_wait_setup (30,303,030 samples, 0.07%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (40,404,040 samples, 0.09%) + + + +try_charge_memcg (10,101,010 samples, 0.02%) + + + +mntget (10,101,010 samples, 0.02%) + + + +__cond_resched (10,101,010 samples, 0.02%) + + + +memcpy@plt (30,303,030 samples, 0.07%) + + + +generic_perform_write (90,909,090 samples, 0.20%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_seek (30,303,030 samples, 0.07%) + + + +leveldb::Benchmark::DoWrite (16,575,757,410 samples, 36.48%) +leveldb::Benchmark::DoWrite + + +std::iterator_traits<char const*>::difference_type std::distance<char const*> (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::Status::~Status (20,202,020 samples, 0.04%) + + + +futex_wake (10,101,010 samples, 0.02%) + + + +blk_mq_dispatch_rq_list (30,303,030 samples, 0.07%) + + + +leveldb::TableBuilder::Add (2,606,060,580 samples, 5.74%) +leveldb.. + + +read_pages (10,101,010 samples, 0.02%) + + + +vfs_open (1,101,010,090 samples, 2.42%) +vf.. + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (70,707,070 samples, 0.16%) + + + +inotify_merge (20,202,020 samples, 0.04%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +vfs_writev (3,606,060,570 samples, 7.94%) +vfs_writev + + +__x64_sys_lseek (10,101,010 samples, 0.02%) + + + +unlink_chunk.constprop.0 (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (90,909,090 samples, 0.20%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::empty (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (10,101,010 samples, 0.02%) + + + +do_syscall_64 (40,404,040 samples, 0.09%) + + + +do_unlinkat (30,303,030 samples, 0.07%) + + + +truncate_inode_pages_range (10,101,010 samples, 0.02%) + + + +scsi_queue_rq (20,202,020 samples, 0.04%) + + + +page_cache_ra_order (10,101,010 samples, 0.02%) + + + +__GI___libc_write (232,323,230 samples, 0.51%) + + + +ext4_mark_iloc_dirty (10,101,010 samples, 0.02%) + + + +__dquot_initialize (10,101,010 samples, 0.02%) + + + +aa_lookup_condperms (10,101,010 samples, 0.02%) + + + +getname_flags.part.0 (282,828,280 samples, 0.62%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_M_lower_bound (181,818,180 samples, 0.40%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (20,202,020 samples, 0.04%) + + + +std::vector<leveldb::Slice, std::allocator<leveldb::Slice> >::_S_relocate (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~_Vector_base (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +_copy_to_iter (282,828,280 samples, 0.62%) + + + +release_pages (10,101,010 samples, 0.02%) + + + +__GI___libc_write (20,202,020 samples, 0.04%) + + + +leveldb::WriteBatch::Clear (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::~ValueLogInserter (60,606,060 samples, 0.13%) + + + +__irq_exit_rcu (20,202,020 samples, 0.04%) + + + +blk_mq_flush_plug_list.part.0 (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::BackgroundGarbageCollect (4,353,535,310 samples, 9.58%) +leveldb::DBIm.. + + +__rcu_read_lock (30,303,030 samples, 0.07%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::TableCache::FindTable (90,909,090 samples, 0.20%) + + + +ext4_do_update_inode.isra.0 (10,101,010 samples, 0.02%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (181,818,180 samples, 0.40%) + + + +leveldb::Status::operator= (30,303,030 samples, 0.07%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::DBImpl::Write (1,343,434,330 samples, 2.96%) +le.. + + +futex_wait_queue (10,101,010 samples, 0.02%) + + + +_int_free (10,101,010 samples, 0.02%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +lockref_get_not_zero (10,101,010 samples, 0.02%) + + + +do_user_addr_fault (30,303,030 samples, 0.07%) + + + +leveldb::crc32c::(anonymous namespace)::ReadUint32LE (90,909,090 samples, 0.20%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +__rmqueue_pcplist (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::batch_insert (2,070,707,050 samples, 4.56%) +level.. + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__relocate_a_1<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice>*, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > (10,101,010 samples, 0.02%) + + + +__find_get_block (10,101,010 samples, 0.02%) + + + +x64_sys_call (343,434,340 samples, 0.76%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (10,101,010 samples, 0.02%) + + + +mutex_lock (10,101,010 samples, 0.02%) + + + +__fsnotify_parent (40,404,040 samples, 0.09%) + + + +fault_in_iov_iter_readable (10,101,010 samples, 0.02%) + + + +inode_needs_update_time (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::vector (10,101,010 samples, 0.02%) + + + +rb_next (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator++ (10,101,010 samples, 0.02%) + + + +__x64_sys_openat (2,222,222,200 samples, 4.89%) +__x64_.. + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +file_modified (50,505,050 samples, 0.11%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::allocator_traits<std::allocator<leveldb::Slice> >::deallocate (10,101,010 samples, 0.02%) + + + +__blk_flush_plug (30,303,030 samples, 0.07%) + + + +schedule (10,101,010 samples, 0.02%) + + + +ext4_dirty_inode (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +get_futex_key (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32PtrFallback (10,101,010 samples, 0.02%) + + + +__dquot_alloc_space (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +aa_get_buffer (10,101,010 samples, 0.02%) + + + +fsnotify_insert_event (40,404,040 samples, 0.09%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +xa_load (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::GetMaxHeight (20,202,020 samples, 0.04%) + + + +do_futex (60,606,060 samples, 0.13%) + + + +ext4_journal_check_start (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (242,424,240 samples, 0.53%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::operator!= (10,101,010 samples, 0.02%) + + + +blk_mq_dispatch_plug_list (60,606,060 samples, 0.13%) + + + +leveldb::SaveValue (20,202,020 samples, 0.04%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +std::condition_variable::~condition_variable (10,101,010 samples, 0.02%) + + + +file_modified (111,111,110 samples, 0.24%) + + + +ext4_es_lookup_extent (20,202,020 samples, 0.04%) + + + +file_modified (10,101,010 samples, 0.02%) + + + +ext4_da_map_blocks.constprop.0 (30,303,030 samples, 0.07%) + + + +do_syscall_64 (1,212,121,200 samples, 2.67%) +do.. + + +leveldb::IteratorWrapper::Update (121,212,120 samples, 0.27%) + + + +operator new (40,404,040 samples, 0.09%) + + + +__blk_mq_do_dispatch_sched (60,606,060 samples, 0.13%) + + + +ext4_bio_write_folio (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +percpu_counter_add_batch (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (20,202,020 samples, 0.04%) + + + +do_futex (50,505,050 samples, 0.11%) + + + +std::basic_filebuf<char, std::char_traits<char> >::basic_filebuf (20,202,020 samples, 0.04%) + + + +leveldb::MemTable::Add (3,757,575,720 samples, 8.27%) +leveldb::Me.. + + +std::mutex::unlock (50,505,050 samples, 0.11%) + + + +leveldb::MaxGrandParentOverlapBytes (10,101,010 samples, 0.02%) + + + +std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > const& std::use_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (10,101,010 samples, 0.02%) + + + +do_fault (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::push_back (171,717,170 samples, 0.38%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (10,101,010 samples, 0.02%) + + + +blk_mq_run_hw_queue (30,303,030 samples, 0.07%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +do_sys_openat2 (2,181,818,160 samples, 4.80%) +do_sys.. + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::find (222,222,220 samples, 0.49%) + + + +leveldb::WriteBatch::Handler::Handler (10,101,010 samples, 0.02%) + + + +generic_write_checks (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::front (20,202,020 samples, 0.04%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +__blk_mq_get_tag (10,101,010 samples, 0.02%) + + + +__x64_sys_openat (20,202,020 samples, 0.04%) + + + +_int_malloc (20,202,020 samples, 0.04%) + + + +void std::_Destroy<std::pair<leveldb::Slice, leveldb::Slice>*> (10,101,010 samples, 0.02%) + + + +send_to_group (292,929,290 samples, 0.64%) + + + +handle_softirqs (20,202,020 samples, 0.04%) + + + +leveldb::GetLengthPrefixedSlice (141,414,140 samples, 0.31%) + + + +leveldb::DBImpl::Write (212,121,210 samples, 0.47%) + + + +locks_remove_file (10,101,010 samples, 0.02%) + + + +leveldb::BlockBuilder::Add (131,313,130 samples, 0.29%) + + + +filemap_get_pages (1,474,747,460 samples, 3.25%) +fil.. + + +do_futex (10,101,010 samples, 0.02%) + + + +mutex_lock (10,101,010 samples, 0.02%) + + + +[unknown] (20,202,020 samples, 0.04%) + + + +lockref_get_not_zero (20,202,020 samples, 0.04%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::Arena::Allocate (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__gthread_mutex_unlock (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +cfree@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +get_unused_fd_flags (20,202,020 samples, 0.04%) + + + +__filemap_get_folio (1,404,040,390 samples, 3.09%) +__f.. + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (40,404,040 samples, 0.09%) + + + +__x64_sys_lseek (212,121,210 samples, 0.47%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (10,101,010 samples, 0.02%) + + + +__GI___pthread_enable_asynccancel (10,101,010 samples, 0.02%) + + + +leveldb::Hash (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +find_lock_entries (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_create_storage (20,202,020 samples, 0.04%) + + + +___slab_alloc (30,303,030 samples, 0.07%) + + + +ext4_file_write_iter (111,111,110 samples, 0.24%) + + + +std::_Rb_tree_iterator<std::pair<unsigned long const, unsigned long> >::operator* (10,101,010 samples, 0.02%) + + + +ext4_release_file (10,101,010 samples, 0.02%) + + + +std::condition_variable::notify_one (10,101,010 samples, 0.02%) + + + +truncate_cleanup_folio (20,202,020 samples, 0.04%) + + + +leveldb::Benchmark::WriteRandom (16,585,858,420 samples, 36.51%) +leveldb::Benchmark::WriteRandom + + +mod_lruvec_state (30,303,030 samples, 0.07%) + + + +filemap_add_folio (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +do_syscall_64 (151,515,150 samples, 0.33%) + + + +mutex_unlock (10,101,010 samples, 0.02%) + + + +jbd2_journal_get_write_access (10,101,010 samples, 0.02%) + + + +__futex_wait (10,101,010 samples, 0.02%) + + + +hook_file_open (10,101,010 samples, 0.02%) + + + +std::mutex::unlock (6,030,302,970 samples, 13.27%) +std::mutex::unlock + + +x64_sys_call (2,070,707,050 samples, 4.56%) +x64_s.. + + +leveldb::IteratorWrapper::Next (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.04%) + + + +leveldb::WriteBatchInternal::Count (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (80,808,080 samples, 0.18%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::ok (10,101,010 samples, 0.02%) + + + +leveldb::InternalKey::DecodeFrom (40,404,040 samples, 0.09%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.02%) + + + +__rmqueue_pcplist (10,101,010 samples, 0.02%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +__ext4_mark_inode_dirty (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::BackgroundCompaction (6,101,010,040 samples, 13.43%) +leveldb::DBImpl::Bac.. + + +leveldb::(anonymous namespace)::ValueLogInserter::Put (20,202,020 samples, 0.04%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.02%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::select_on_container_copy_construction (10,101,010 samples, 0.02%) + + + +void std::__invoke_impl<void, void (27,040,403,770 samples, 59.52%) +void std::__invoke_impl<void, void + + +__memcmp_evex_movbe (60,606,060 samples, 0.13%) + + + +__mem_cgroup_charge (20,202,020 samples, 0.04%) + + + +leveldb::BlockHandle::BlockHandle (10,101,010 samples, 0.02%) + + + +std::basic_fstream<char, std::char_traits<char> >::basic_fstream (60,606,060 samples, 0.13%) + + + +ext4_da_write_end (282,828,280 samples, 0.62%) + + + +__mem_cgroup_charge (151,515,150 samples, 0.33%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::back (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (10,101,010 samples, 0.02%) + + + +update_io_ticks (70,707,070 samples, 0.16%) + + + +iterate_tty_write (20,202,020 samples, 0.04%) + + + +__x64_sys_write (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (484,848,480 samples, 1.07%) + + + +__d_lookup_rcu (10,101,010 samples, 0.02%) + + + +leveldb::Status::~Status (20,202,020 samples, 0.04%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::new_allocator (10,101,010 samples, 0.02%) + + + +our_mnt (20,202,020 samples, 0.04%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::operator* (10,101,010 samples, 0.02%) + + + +node_dirty_ok (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (1,323,232,310 samples, 2.91%) +en.. + + +getname (323,232,320 samples, 0.71%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_right (20,202,020 samples, 0.04%) + + + +inode_to_bdi (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (10,101,010 samples, 0.02%) + + + +mntput (10,101,010 samples, 0.02%) + + + +__rmqueue_pcplist (121,212,120 samples, 0.27%) + + + +schedule_debug.constprop.0 (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (40,404,040 samples, 0.09%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.02%) + + + +kmem_cache_free (30,303,030 samples, 0.07%) + + + +generic_perform_write (60,606,060 samples, 0.13%) + + + +_IO_setb (10,101,010 samples, 0.02%) + + + +std::basic_ios<char, std::char_traits<char> >::init (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (10,101,010 samples, 0.02%) + + + +ext4_da_map_blocks.constprop.0 (252,525,250 samples, 0.56%) + + + +exc_page_fault (30,303,030 samples, 0.07%) + + + +do_syscall_64 (2,575,757,550 samples, 5.67%) +do_sysc.. + + +obj_cgroup_uncharge (10,101,010 samples, 0.02%) + + + +fault_in_iov_iter_readable (60,606,060 samples, 0.13%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Valid (10,101,010 samples, 0.02%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (30,303,030 samples, 0.07%) + + + +node_dirty_ok (90,909,090 samples, 0.20%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (696,969,690 samples, 1.53%) + + + +leveldb::Slice::compare (20,202,020 samples, 0.04%) + + + +security_file_permission (20,202,020 samples, 0.04%) + + + +__get_user_nocheck_4 (10,101,010 samples, 0.02%) + + + +blk_mq_sched_dispatch_requests (898,989,890 samples, 1.98%) +b.. + + +leveldb::Version::~Version (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::empty (10,101,010 samples, 0.02%) + + + +futex_wait (10,101,010 samples, 0.02%) + + + +do_iter_readv_writev (3,040,404,010 samples, 6.69%) +do_iter_r.. + + +std::basic_ios<char, std::char_traits<char> >::good (20,202,020 samples, 0.04%) + + + +_raw_spin_unlock_irqrestore (20,202,020 samples, 0.04%) + + + +leveldb::Slice::size (40,404,040 samples, 0.09%) + + + +blk_mq_dispatch_rq_list (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::empty (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (20,202,020 samples, 0.04%) + + + +__fsnotify_parent (474,747,470 samples, 1.04%) + + + +x64_sys_call (20,202,020 samples, 0.04%) + + + +std::_Vector_base<leveldb::Slice, std::allocator<leveldb::Slice> >::~_Vector_base (20,202,020 samples, 0.04%) + + + +ext4_file_write_iter (111,111,110 samples, 0.24%) + + + +leveldb::Slice::size (40,404,040 samples, 0.09%) + + + +try_to_wake_up (10,101,010 samples, 0.02%) + + + +_int_free (90,909,090 samples, 0.20%) + + + +leveldb::Block::Block (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::KeyComparator::operator (1,474,747,460 samples, 3.25%) +lev.. + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +ext4_do_writepages (30,303,030 samples, 0.07%) + + + +iput (10,101,010 samples, 0.02%) + + + +xas_start (10,101,010 samples, 0.02%) + + + +leveldb::ParseInternalKey (111,111,110 samples, 0.24%) + + + +do_syscall_64 (10,101,010 samples, 0.02%) + + + +submit_bio_noacct_nocheck (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +ext4_block_write_begin (40,404,040 samples, 0.09%) + + + +leveldb::GetVarint32 (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_deallocate (40,404,040 samples, 0.09%) + + + +operator new (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<unsigned long, unsigned long>*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > >::operator* (20,202,020 samples, 0.04%) + + + +folio_alloc (686,868,680 samples, 1.51%) + + + +mod_objcg_state (20,202,020 samples, 0.04%) + + + +ima_file_free (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::LRUCache::Lookup (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Lock (30,303,030 samples, 0.07%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +blk_mq_dispatch_rq_list (10,101,010 samples, 0.02%) + + + +leveldb::Block::NewIterator (20,202,020 samples, 0.04%) + + + +make_vfsuid (10,101,010 samples, 0.02%) + + + +xas_start (10,101,010 samples, 0.02%) + + + +std::mutex::lock (70,707,070 samples, 0.16%) + + + +ext4_mark_iloc_dirty (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::Slice, std::allocator<leveldb::Slice> >::_M_get_Tp_allocator (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::_S_max_size (10,101,010 samples, 0.02%) + + + +filemap_map_pages (20,202,020 samples, 0.04%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::back (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (1,070,707,060 samples, 2.36%) +_.. + + +balance_dirty_pages_ratelimited_flags (70,707,070 samples, 0.16%) + + + +__fsnotify_parent (10,101,010 samples, 0.02%) + + + +_IO_str_init_static_internal (10,101,010 samples, 0.02%) + + + +__GI___lll_lock_wake (30,303,030 samples, 0.07%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.02%) + + + +xas_descend (30,303,030 samples, 0.07%) + + + +__memcmp_evex_movbe (60,606,060 samples, 0.13%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (30,303,030 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (40,404,040 samples, 0.09%) + + + +allocate_slab (50,505,050 samples, 0.11%) + + + +leveldb::Block::~Block (10,101,010 samples, 0.02%) + + + +leveldb::DecodeEntry (161,616,160 samples, 0.36%) + + + +fscrypt_file_open (60,606,060 samples, 0.13%) + + + +fdatasync (30,303,030 samples, 0.07%) + + + +do_futex (343,434,340 samples, 0.76%) + + + +mptscsih_qcmd (30,303,030 samples, 0.07%) + + + +aa_label_is_subset (10,101,010 samples, 0.02%) + + + +rw_verify_area (60,606,060 samples, 0.13%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_iterator<std::pair<unsigned long const, unsigned long> >::operator* (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +get_page_from_freelist (40,404,040 samples, 0.09%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +[unknown] (151,515,150 samples, 0.33%) + + + +lookup_fast (30,303,030 samples, 0.07%) + + + +leveldb::MutexLock::~MutexLock (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append (20,202,020 samples, 0.04%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_relocate (20,202,020 samples, 0.04%) + + + +void std::vector<leveldb::Slice, std::allocator<leveldb::Slice> >::_M_realloc_insert<leveldb::Slice const&> (90,909,090 samples, 0.20%) + + + +x64_sys_call (20,202,020 samples, 0.04%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::crc32c::Extend (242,424,240 samples, 0.53%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__futex_wait (20,202,020 samples, 0.04%) + + + +percpu_counter_add_batch (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::Add (242,424,240 samples, 0.53%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Next (777,777,770 samples, 1.71%) + + + +x64_sys_call (1,131,313,120 samples, 2.49%) +x6.. + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_Vector_base (20,202,020 samples, 0.04%) + + + +init_file (60,606,060 samples, 0.13%) + + + +std::pair<leveldb::Slice, leveldb::Slice> const& std::forward<std::pair<leveldb::Slice, leveldb::Slice> const&> (10,101,010 samples, 0.02%) + + + +__ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (202,020,200 samples, 0.44%) + + + +futex_wait_queue (40,404,040 samples, 0.09%) + + + +x64_sys_call (3,646,464,610 samples, 8.03%) +x64_sys_call + + +leveldb::Random::Next (10,101,010 samples, 0.02%) + + + +blk_mq_flush_plug_list.part.0 (10,101,010 samples, 0.02%) + + + +consume_obj_stock (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Flush (20,202,020 samples, 0.04%) + + + +leveldb::IteratorWrapper::SeekToFirst (20,202,020 samples, 0.04%) + + + +leveldb::Version::Unref (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +aa_put_buffer (10,101,010 samples, 0.02%) + + + +mpt_put_msg_frame (10,101,010 samples, 0.02%) + + + +create_empty_buffers (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +__strchr_evex (40,404,040 samples, 0.09%) + + + +x64_sys_call (222,222,220 samples, 0.49%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +rmqueue (131,313,130 samples, 0.29%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::operator[] (10,101,010 samples, 0.02%) + + + +dput (10,101,010 samples, 0.02%) + + + +void std::allocator_traits<std::allocator<std::pair<unsigned long, unsigned long> > >::construct<std::pair<unsigned long, unsigned long>, std::pair<unsigned long, unsigned long> > (10,101,010 samples, 0.02%) + + + +folio_alloc (70,707,070 samples, 0.16%) + + + +leveldb::EncodeFixed64 (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__alloc_pages (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::_Vector_impl::~_Vector_impl (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::AssertHeld (10,101,010 samples, 0.02%) + + + +read (2,535,353,510 samples, 5.58%) +read + + +__gnu_cxx::__normal_iterator<std::pair<unsigned long, unsigned long>*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > >::operator- (10,101,010 samples, 0.02%) + + + +xas_start (20,202,020 samples, 0.04%) + + + +jbd2_journal_stop (10,101,010 samples, 0.02%) + + + +dget_parent (20,202,020 samples, 0.04%) + + + +__fsnotify_parent (60,606,060 samples, 0.13%) + + + +filp_flush (60,606,060 samples, 0.13%) + + + +scsi_dispatch_cmd (10,101,010 samples, 0.02%) + + + +ext4_da_reserve_space (50,505,050 samples, 0.11%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32 (10,101,010 samples, 0.02%) + + + +mntput_no_expire (10,101,010 samples, 0.02%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (242,424,240 samples, 0.53%) + + + +leveldb::MemTable::ApproximateMemoryUsage (10,101,010 samples, 0.02%) + + + +ext4_buffered_write_iter (555,555,550 samples, 1.22%) + + + +leveldb::GetLengthPrefixedSlice (626,262,620 samples, 1.38%) + + + +std::ios_base::ios_base (20,202,020 samples, 0.04%) + + + +__memcmp_evex_movbe (40,404,040 samples, 0.09%) + + + +pthread_mutex_lock@plt (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (30,303,030 samples, 0.07%) + + + +ext4_generic_write_checks (30,303,030 samples, 0.07%) + + + +fsnotify_handle_inode_event.isra.0 (262,626,260 samples, 0.58%) + + + +mptspi_qcmd (10,101,010 samples, 0.02%) + + + +try_module_get (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::size (20,202,020 samples, 0.04%) + + + +x64_sys_call (1,292,929,280 samples, 2.85%) +x6.. + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::MergingIterator::key (10,101,010 samples, 0.02%) + + + +finish_task_switch.isra.0 (10,101,010 samples, 0.02%) + + + +leveldb::log::Writer::EmitPhysicalRecord (2,535,353,510 samples, 5.58%) +leveldb.. + + +bool __gnu_cxx::operator!=<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > > (10,101,010 samples, 0.02%) + + + +leveldb::Slice::operator[] (353,535,350 samples, 0.78%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +filemap_fdatawrite_wbc (30,303,030 samples, 0.07%) + + + +leveldb::TableCache::Get (1,141,414,130 samples, 2.51%) +le.. + + +std::__basic_file<char>::~__basic_file (20,202,020 samples, 0.04%) + + + +mptspi_qcmd (10,101,010 samples, 0.02%) + + + +blk_account_io_start (70,707,070 samples, 0.16%) + + + +_raw_spin_lock (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__filemap_fdatawrite_range (30,303,030 samples, 0.07%) + + + +free_unref_page_prepare (10,101,010 samples, 0.02%) + + + +timestamp_truncate (10,101,010 samples, 0.02%) + + + +leveldb::Slice::compare (10,101,010 samples, 0.02%) + + + +operator new (10,101,010 samples, 0.02%) + + + +get_page_from_freelist (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (10,101,010 samples, 0.02%) + + + +std::fpos<__mbstate_t>::fpos (20,202,020 samples, 0.04%) + + + +std::istream::sentry::sentry (10,101,010 samples, 0.02%) + + + +asm_sysvec_reschedule_ipi (10,101,010 samples, 0.02%) + + + +operator new[] (10,101,010 samples, 0.02%) + + + +refill_obj_stock (20,202,020 samples, 0.04%) + + + +__schedule (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +putname (30,303,030 samples, 0.07%) + + + +may_open (30,303,030 samples, 0.07%) + + + +mutex_unlock (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (262,626,260 samples, 0.58%) + + + +do_syscall_64 (10,101,010 samples, 0.02%) + + + +lru_gen_refault (40,404,040 samples, 0.09%) + + + +leveldb::Slice::operator[] (80,808,080 samples, 0.18%) + + + +_IO_file_open (50,505,050 samples, 0.11%) + + + +leveldb::Block::Iter::key (10,101,010 samples, 0.02%) + + + +filemap_add_folio (585,858,580 samples, 1.29%) + + + +ext4_da_write_begin (131,313,130 samples, 0.29%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +mptscsih_qcmd (10,101,010 samples, 0.02%) + + + +post_alloc_hook (10,101,010 samples, 0.02%) + + + +prepend_copy (60,606,060 samples, 0.13%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +leveldb::MutexLock::MutexLock (10,101,010 samples, 0.02%) + + + +std::mutex::lock (30,303,030 samples, 0.07%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::end (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +fopen@@GLIBC_2.2.5 (30,303,030 samples, 0.07%) + + + +ext4_release_folio (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (40,404,040 samples, 0.09%) + + + +crc32c_pcl_intel_update (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::end (10,101,010 samples, 0.02%) + + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<unsigned long, unsigned long>*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > >::base (10,101,010 samples, 0.02%) + + + +submit_bio_noacct_nocheck (20,202,020 samples, 0.04%) + + + +std::mutex::lock (10,101,010 samples, 0.02%) + + + +__srcu_read_unlock (10,101,010 samples, 0.02%) + + + +sysvec_reschedule_ipi (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (40,404,040 samples, 0.09%) + + + +__folio_mark_dirty (141,414,140 samples, 0.31%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (10,101,010 samples, 0.02%) + + + +__mark_inode_dirty (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_deallocate (10,101,010 samples, 0.02%) + + + +[unknown] (20,202,020 samples, 0.04%) + + + +sbitmap_get (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_allocate (10,101,010 samples, 0.02%) + + + +filemap_add_folio (181,818,180 samples, 0.40%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (20,202,020 samples, 0.04%) + + + +ext4_claim_free_clusters (10,101,010 samples, 0.02%) + + + +__mark_inode_dirty (50,505,050 samples, 0.11%) + + + +__radix_tree_lookup (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Lock (30,303,030 samples, 0.07%) + + + +std::ostream::sentry::sentry (10,101,010 samples, 0.02%) + + + +lockref_put_return (40,404,040 samples, 0.09%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (323,232,320 samples, 0.71%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*> (40,404,040 samples, 0.09%) + + + +__blk_mq_do_dispatch_sched (10,101,010 samples, 0.02%) + + + +rmqueue_bulk (90,909,090 samples, 0.20%) + + + +__vsnprintf_internal (10,101,010 samples, 0.02%) + + + +security_inode_permission (10,101,010 samples, 0.02%) + + + +__gnu_cxx::new_allocator<leveldb::Slice>::allocate (10,101,010 samples, 0.02%) + + + +__rcu_read_unlock (10,101,010 samples, 0.02%) + + + +submit_bio (20,202,020 samples, 0.04%) + + + +folio_add_lru (161,616,160 samples, 0.36%) + + + +void __gnu_cxx::new_allocator<leveldb::DBImpl::Writer*>::construct<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*> (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +setup_object (10,101,010 samples, 0.02%) + + + +kmem_cache_free (10,101,010 samples, 0.02%) + + + +obj_cgroup_charge (10,101,010 samples, 0.02%) + + + +rmqueue (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadEntryPoint (6,101,010,040 samples, 13.43%) +leveldb::(anonymous .. + + +std::_Rb_tree_iterator<std::pair<unsigned long const, unsigned long> >::operator* (30,303,030 samples, 0.07%) + + + +leveldb::operator== (10,101,010 samples, 0.02%) + + + +__ext4_journal_start_sb (10,101,010 samples, 0.02%) + + + +filemap_alloc_folio (70,707,070 samples, 0.16%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::deallocate (10,101,010 samples, 0.02%) + + + +__GI___pthread_enable_asynccancel (10,101,010 samples, 0.02%) + + + +folio_memcg_lock (20,202,020 samples, 0.04%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_right (20,202,020 samples, 0.04%) + + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (10,101,010 samples, 0.02%) + + + +__blk_mq_do_dispatch_sched (30,303,030 samples, 0.07%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::basic_ios<char, std::char_traits<char> >::_M_cache_locale (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (111,111,110 samples, 0.24%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice> > (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::vector (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::push_back (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +ext4_file_write_iter (20,202,020 samples, 0.04%) + + + +leveldb::GetLengthPrefixedSlice (20,202,020 samples, 0.04%) + + + +__x64_sys_close (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_addr (10,101,010 samples, 0.02%) + + + +truncate_inode_pages_range (30,303,030 samples, 0.07%) + + + +irqentry_exit (10,101,010 samples, 0.02%) + + + +rmqueue (10,101,010 samples, 0.02%) + + + +__alloc_pages_slowpath.constprop.0 (10,101,010 samples, 0.02%) + + + +std::pair<leveldb::Slice, leveldb::Slice>& std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::emplace_back<std::pair<leveldb::Slice, leveldb::Slice> > (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (10,101,010 samples, 0.02%) + + + +futex_wake (10,101,010 samples, 0.02%) + + + +std::operator& (20,202,020 samples, 0.04%) + + + +leveldb::IteratorWrapper::Valid (30,303,030 samples, 0.07%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice> > (60,606,060 samples, 0.13%) + + + +leveldb::IteratorWrapper::Valid (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_const_iterator<std::pair<unsigned long const, unsigned long> >::_Rb_tree_const_iterator (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::LRUCache::LRU_Append (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +ext4_dirty_inode (40,404,040 samples, 0.09%) + + + +leveldb::WriteBatchInternal::Contents (10,101,010 samples, 0.02%) + + + +ksys_write (151,515,150 samples, 0.33%) + + + +truncate_inode_pages_final (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::LRUCache::LRU_Append (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +std::basic_ios<char, std::char_traits<char> >::_M_cache_locale (20,202,020 samples, 0.04%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::value (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator* (10,101,010 samples, 0.02%) + + + +finish_task_switch.isra.0 (10,101,010 samples, 0.02%) + + + +try_to_unlazy (40,404,040 samples, 0.09%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::port::CondVar::SignalAll (10,101,010 samples, 0.02%) + + + +allocate_slab (20,202,020 samples, 0.04%) + + + +void std::_Destroy_aux<true>::__destroy<std::pair<leveldb::Slice, leveldb::Slice>*> (10,101,010 samples, 0.02%) + + + +blk_mq_sched_dispatch_requests (30,303,030 samples, 0.07%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator++ (10,101,010 samples, 0.02%) + + + +memset_orig (10,101,010 samples, 0.02%) + + + +_int_malloc (70,707,070 samples, 0.16%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::size (20,202,020 samples, 0.04%) + + + +ext4_invalidate_folio (20,202,020 samples, 0.04%) + + + +submit_bio_noacct (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +mpage_map_and_submit_buffers (10,101,010 samples, 0.02%) + + + +__ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +leveldb::GetLengthPrefixedSlice (30,303,030 samples, 0.07%) + + + +mutex_lock (20,202,020 samples, 0.04%) + + + +__GI___lll_lock_wake (20,202,020 samples, 0.04%) + + + +aa_dfa_match (111,111,110 samples, 0.24%) + + + +__memcmp_evex_movbe (70,707,070 samples, 0.16%) + + + +ima_file_free (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::Iter (10,101,010 samples, 0.02%) + + + +__futex_wait (50,505,050 samples, 0.11%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +leveldb::Status::ok (10,101,010 samples, 0.02%) + + + +__srcu_read_lock (10,101,010 samples, 0.02%) + + + +leveldb::Version::~Version (10,101,010 samples, 0.02%) + + + +leveldb::log::Writer::AddRecord (2,585,858,560 samples, 5.69%) +leveldb.. + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +operator new (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (60,606,060 samples, 0.13%) + + + +alloc_pages_mpol (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Lookup (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +__file_remove_privs (10,101,010 samples, 0.02%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +__block_commit_write (60,606,060 samples, 0.13%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatch::Put (151,515,150 samples, 0.33%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Valid (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::WriteBatchInternal::ConverToValueLog (202,020,200 samples, 0.44%) + + + +copy_page_from_iter_atomic (20,202,020 samples, 0.04%) + + + +ext4_llseek (20,202,020 samples, 0.04%) + + + +submit_bio (10,101,010 samples, 0.02%) + + + +__memcmp_evex_movbe (40,404,040 samples, 0.09%) + + + +[libstdc++.so.6.0.30] (10,101,010 samples, 0.02%) + + + +map_id_up (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (30,303,030 samples, 0.07%) + + + +__schedule (20,202,020 samples, 0.04%) + + + +leveldb::port::Mutex::Lock (70,707,070 samples, 0.16%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +apparmor_file_permission (60,606,060 samples, 0.13%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::push_back (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +leveldb::Table::BlockReader (181,818,180 samples, 0.40%) + + + +futex_hash (20,202,020 samples, 0.04%) + + + +_raw_spin_unlock_irqrestore (5,363,636,310 samples, 11.81%) +_raw_spin_unlock_.. + + +copy_page_from_iter_atomic (10,101,010 samples, 0.02%) + + + +blk_mq_sched_dispatch_requests (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (30,303,030 samples, 0.07%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::MemTableInserter::~MemTableInserter (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksForward (10,101,010 samples, 0.02%) + + + +wake_up_q (40,404,040 samples, 0.09%) + + + +leveldb::GetLengthPrefixedSlice (50,505,050 samples, 0.11%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +file_write_and_wait_range (121,212,120 samples, 0.27%) + + + +entry_SYSCALL_64_after_hwframe (30,303,030 samples, 0.07%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +pthread_mutex_unlock@@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +send_to_group (50,505,050 samples, 0.11%) + + + +bool std::has_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::PackSequenceAndType (10,101,010 samples, 0.02%) + + + +std::operator== (10,101,010 samples, 0.02%) + + + +mpage_map_and_submit_extent (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_S_max_size (10,101,010 samples, 0.02%) + + + +iput (30,303,030 samples, 0.07%) + + + +lookup_fast (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +xas_descend (30,303,030 samples, 0.07%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::Saver::Saver (10,101,010 samples, 0.02%) + + + +handle_softirqs (20,202,020 samples, 0.04%) + + + +touch_atime (50,505,050 samples, 0.11%) + + + +_raw_spin_unlock_irqrestore (20,202,020 samples, 0.04%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (20,202,020 samples, 0.04%) + + + +obj_cgroup_charge (10,101,010 samples, 0.02%) + + + +__srcu_read_unlock (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::MergingIterator::FindSmallest (484,848,480 samples, 1.07%) + + + +futex_wake_mark (10,101,010 samples, 0.02%) + + + +ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatch::WriteBatch (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (20,202,020 samples, 0.04%) + + + +leveldb::TableBuilder::WriteBlock (20,202,020 samples, 0.04%) + + + +__GI___lll_lock_wait (10,101,010 samples, 0.02%) + + + +leveldb::Arena::MemoryUsage (10,101,010 samples, 0.02%) + + + +_int_malloc (10,101,010 samples, 0.02%) + + + +mutex_lock (10,101,010 samples, 0.02%) + + + +[unknown] (80,808,080 samples, 0.18%) + + + +void std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long, unsigned long> > (10,101,010 samples, 0.02%) + + + +leveldb::InternalKey::user_key (10,101,010 samples, 0.02%) + + + +wake_up_q (5,393,939,340 samples, 11.87%) +wake_up_q + + +do_futex (80,808,080 samples, 0.18%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +copy_page_from_iter_atomic (10,101,010 samples, 0.02%) + + + +__check_object_size.part.0 (80,808,080 samples, 0.18%) + + + +leveldb::WriteBatchInternal::ConverToValueLog (2,595,959,570 samples, 5.71%) +leveldb.. + + +leveldb::WriteBatchInternal::Count (10,101,010 samples, 0.02%) + + + +___slab_alloc (10,101,010 samples, 0.02%) + + + +_int_malloc (10,101,010 samples, 0.02%) + + + +obj_cgroup_uncharge (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::size (10,101,010 samples, 0.02%) + + + +should_failslab.constprop.0 (10,101,010 samples, 0.02%) + + + +void std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_realloc_insert<std::pair<leveldb::Slice, leveldb::Slice> > (20,202,020 samples, 0.04%) + + + +leveldb::Block::NewIterator (10,101,010 samples, 0.02%) + + + +_raw_spin_lock (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::push_back (90,909,090 samples, 0.20%) + + + +leveldb::(anonymous namespace)::ValueLogChecker::Put (111,111,110 samples, 0.24%) + + + +___slab_alloc (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (80,808,080 samples, 0.18%) + + + +leveldb::IteratorWrapper::Valid (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (212,121,210 samples, 0.47%) + + + +operator delete (10,101,010 samples, 0.02%) + + + +balance_dirty_pages_ratelimited (70,707,070 samples, 0.16%) + + + +leveldb::Slice::compare (20,202,020 samples, 0.04%) + + + +leveldb::GetVarint32Ptr (121,212,120 samples, 0.27%) + + + +mpt_put_msg_frame (848,484,840 samples, 1.87%) +m.. + + +[unknown] (10,101,010 samples, 0.02%) + + + +blk_mq_run_hw_queue (10,101,010 samples, 0.02%) + + + +futex_wake (10,101,010 samples, 0.02%) + + + +generic_file_read_iter (1,878,787,860 samples, 4.14%) +gene.. + + +leveldb::(anonymous namespace)::MergingIterator::Next (1,515,151,500 samples, 3.33%) +lev.. + + +xas_load (70,707,070 samples, 0.16%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (20,202,020 samples, 0.04%) + + + +std::basic_ios<char, std::char_traits<char> >::clear (10,101,010 samples, 0.02%) + + + +__blk_mq_sched_dispatch_requests (60,606,060 samples, 0.13%) + + + +std::unique_lock<std::mutex>::unique_lock (10,101,010 samples, 0.02%) + + + +do_writev (3,646,464,610 samples, 8.03%) +do_writev + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::size (10,101,010 samples, 0.02%) + + + +__get_user_nocheck_4 (10,101,010 samples, 0.02%) + + + +leveldb::DeleteBlock (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (151,515,150 samples, 0.33%) + + + +blk_mq_dispatch_rq_list (878,787,870 samples, 1.93%) +b.. + + +___slab_alloc (30,303,030 samples, 0.07%) + + + +security_file_permission (60,606,060 samples, 0.13%) + + + +__GI___pthread_enable_asynccancel (20,202,020 samples, 0.04%) + + + +std::istream::seekg (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (20,202,020 samples, 0.04%) + + + +leveldb::IteratorWrapper::key (10,101,010 samples, 0.02%) + + + +pthread_cond_broadcast@@GLIBC_2.3.2 (30,303,030 samples, 0.07%) + + + +current_obj_cgroup (10,101,010 samples, 0.02%) + + + +__srcu_read_unlock (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed64 (30,303,030 samples, 0.07%) + + + +std::mutex::lock (30,303,030 samples, 0.07%) + + + +complete_walk (40,404,040 samples, 0.09%) + + + +blk_mq_sched_dispatch_requests (10,101,010 samples, 0.02%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::load (10,101,010 samples, 0.02%) + + + +xas_load (60,606,060 samples, 0.13%) + + + +atime_needs_update (50,505,050 samples, 0.11%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +leveldb::Random::Next (30,303,030 samples, 0.07%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32PtrFallback (10,101,010 samples, 0.02%) + + + +[unknown] (4,686,868,640 samples, 10.32%) +[unknown] + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::InitDataBlock (30,303,030 samples, 0.07%) + + + +std::basic_fstream<char, std::char_traits<char> >::basic_fstream (10,101,010 samples, 0.02%) + + + +blk_mq_sched_dispatch_requests (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +balance_dirty_pages_ratelimited (202,020,200 samples, 0.44%) + + + +leveldb::IteratorWrapper::key (30,303,030 samples, 0.07%) + + + +cgroup_rstat_flush (101,010,100 samples, 0.22%) + + + +fscrypt_file_open (10,101,010 samples, 0.02%) + + + +ext4_getblk (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatch::Put (70,707,070 samples, 0.16%) + + + +std::atomic<leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node*>::store (20,202,020 samples, 0.04%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~_Vector_base (10,101,010 samples, 0.02%) + + + +leveldb::Status::Status (10,101,010 samples, 0.02%) + + + +block_write_end (262,626,260 samples, 0.58%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::~vector (40,404,040 samples, 0.09%) + + + +d_lookup (10,101,010 samples, 0.02%) + + + +irqentry_exit_to_user_mode (10,101,010 samples, 0.02%) + + + +do_syscall_64 (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::BackgroundCall (6,101,010,040 samples, 13.43%) +leveldb::DBImpl::Bac.. + + +ksys_lseek (10,101,010 samples, 0.02%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate (30,303,030 samples, 0.07%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append (10,101,010 samples, 0.02%) + + + +mntput (20,202,020 samples, 0.04%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::BGWork (6,101,010,040 samples, 13.43%) +leveldb::DBImpl::BGW.. + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::less<unsigned long>::operator (70,707,070 samples, 0.16%) + + + +leveldb::DBImpl::MakeRoomForWrite (70,707,070 samples, 0.16%) + + + +rmqueue (20,202,020 samples, 0.04%) + + + +std::pair<unsigned long, unsigned long>& std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::emplace_back<std::pair<unsigned long, unsigned long> > (181,818,180 samples, 0.40%) + + + +ext4_evict_inode (10,101,010 samples, 0.02%) + + + +ext4_buffered_write_iter (2,999,999,970 samples, 6.60%) +ext4_buff.. + + +blk_mq_flush_plug_list.part.0 (919,191,910 samples, 2.02%) +b.. + + +clear_page_erms (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::MergingIterator::value (191,919,190 samples, 0.42%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +alloc_buffer_head (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::Sync (30,303,030 samples, 0.07%) + + + +__memcpy (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32Ptr (60,606,060 samples, 0.13%) + + + +leveldb::(anonymous namespace)::MergingIterator::Valid (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_max_size (10,101,010 samples, 0.02%) + + + +operator delete (10,101,010 samples, 0.02%) + + + +leveldb::SaveValue (10,101,010 samples, 0.02%) + + + +leveldb::EncodeVarint64 (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::end (10,101,010 samples, 0.02%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::Writer::~Writer (10,101,010 samples, 0.02%) + + + +mod_memcg_state (10,101,010 samples, 0.02%) + + + +file_modified (10,101,010 samples, 0.02%) + + + +blk_mq_run_hw_queue (20,202,020 samples, 0.04%) + + + +leveldb::WriteBatchInternal::SetCount (20,202,020 samples, 0.04%) + + + +memcmp@plt (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +__rcu_read_unlock (10,101,010 samples, 0.02%) + + + +std::mutex::lock (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +up_write (10,101,010 samples, 0.02%) + + + +ktime_get_coarse_real_ts64 (10,101,010 samples, 0.02%) + + + +std::mutex::lock (10,101,010 samples, 0.02%) + + + +operator new (20,202,020 samples, 0.04%) + + + +generic_update_time (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::Writer*& std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::emplace_back<leveldb::DBImpl::Writer*> (10,101,010 samples, 0.02%) + + + +page_cache_ra_unbounded (1,292,929,280 samples, 2.85%) +pa.. + + +bdev_getblk (10,101,010 samples, 0.02%) + + + +void std::_Destroy<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice> > (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::push_back (10,101,010 samples, 0.02%) + + + +__x64_sys_unlink (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::FlushBuffer (242,424,240 samples, 0.53%) + + + +__xas_next (10,101,010 samples, 0.02%) + + + +ext4_mpage_readpages (111,111,110 samples, 0.24%) + + + +__ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +__memcg_slab_post_alloc_hook (50,505,050 samples, 0.11%) + + + +leveldb::TableBuilder::WriteBlock (262,626,260 samples, 0.58%) + + + +leveldb::ExtractUserKey (111,111,110 samples, 0.24%) + + + +leveldb::Slice::data (20,202,020 samples, 0.04%) + + + +ext4_file_write_iter (575,757,570 samples, 1.27%) + + + +entry_SYSCALL_64_after_hwframe (30,303,030 samples, 0.07%) + + + +try_to_wake_up (343,434,340 samples, 0.76%) + + + +page_cache_ra_order (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (242,424,240 samples, 0.53%) + + + +_IO_file_close_it@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +leveldb::DBImpl::DoCompactionWork (5,484,848,430 samples, 12.07%) +leveldb::DBImpl::D.. + + +do_syscall_64 (202,020,200 samples, 0.44%) + + + +leveldb::Iterator::~Iterator (30,303,030 samples, 0.07%) + + + +folio_add_file_rmap_ptes (10,101,010 samples, 0.02%) + + + +std::pair<leveldb::Slice, leveldb::Slice>& std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::emplace_back<std::pair<leveldb::Slice, leveldb::Slice> > (161,616,160 samples, 0.36%) + + + +up_write (10,101,010 samples, 0.02%) + + + +leveldb::ParseInternalKey (20,202,020 samples, 0.04%) + + + +kmem_cache_alloc (40,404,040 samples, 0.09%) + + + +__x64_sys_futex (50,505,050 samples, 0.11%) + + + +ksys_read (2,070,707,050 samples, 4.56%) +ksys_.. + + +create_empty_buffers (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +__x64_sys_write (202,020,200 samples, 0.44%) + + + +__gnu_cxx::new_allocator<std::pair<unsigned long, unsigned long> >::new_allocator (10,101,010 samples, 0.02%) + + + +blk_mq_sched_dispatch_requests (60,606,060 samples, 0.13%) + + + +mem_cgroup_flush_stats.part.0 (101,010,100 samples, 0.22%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +memset_orig (50,505,050 samples, 0.11%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::_Deque_iterator (20,202,020 samples, 0.04%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +check_heap_object (40,404,040 samples, 0.09%) + + + +timestamp_truncate (20,202,020 samples, 0.04%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +leveldb::crc32c::Value (252,525,250 samples, 0.56%) + + + +lockref_put_return (20,202,020 samples, 0.04%) + + + +virtual thunk to std::basic_fstream<char, std::char_traits<char> >::~basic_fstream (151,515,150 samples, 0.33%) + + + +inotify_free_event (20,202,020 samples, 0.04%) + + + +dd_insert_requests (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +__fdget_pos (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::begin (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +std::istream::tellg (20,202,020 samples, 0.04%) + + + +leveldb::Block::Iter::Compare (252,525,250 samples, 0.56%) + + + +_raw_spin_unlock_irqrestore (121,212,120 samples, 0.27%) + + + +_raw_spin_unlock (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::value (60,606,060 samples, 0.13%) + + + +inode_to_bdi (10,101,010 samples, 0.02%) + + + +leveldb::Version::~Version (10,101,010 samples, 0.02%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::deallocate (10,101,010 samples, 0.02%) + + + +ext4_nonda_switch (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::Get (737,373,730 samples, 1.62%) + + + +leveldb::DBImpl::user_comparator (10,101,010 samples, 0.02%) + + + +__GI___lll_lock_wait (20,202,020 samples, 0.04%) + + + +leveldb::GetLengthPrefixedSlice (10,101,010 samples, 0.02%) + + + +do_writepages (30,303,030 samples, 0.07%) + + + +scsi_queue_rq (878,787,870 samples, 1.93%) +s.. + + +leveldb::Arena::MemoryUsage (10,101,010 samples, 0.02%) + + + +folio_alloc_buffers (10,101,010 samples, 0.02%) + + + +[unknown] (20,202,020 samples, 0.04%) + + + +leveldb::TableBuilder::FileSize (20,202,020 samples, 0.04%) + + + +ext4_io_submit (60,606,060 samples, 0.13%) + + + +_raw_spin_unlock_irqrestore (343,434,340 samples, 0.76%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::batch_insert (141,414,140 samples, 0.31%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::begin (10,101,010 samples, 0.02%) + + + +__memcmp_evex_movbe (40,404,040 samples, 0.09%) + + + +kfree (20,202,020 samples, 0.04%) + + + +do_syscall_64 (4,020,201,980 samples, 8.85%) +do_syscall_64 + + +std::ostream::write (20,202,020 samples, 0.04%) + + + +std::__basic_file<char>::seekoff (20,202,020 samples, 0.04%) + + + +apparmor_file_alloc_security (30,303,030 samples, 0.07%) + + + +kmem_cache_alloc (30,303,030 samples, 0.07%) + + + +blk_mq_dispatch_plug_list (10,101,010 samples, 0.02%) + + + +leveldb::MutexLock::~MutexLock (50,505,050 samples, 0.11%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::push_back (10,101,010 samples, 0.02%) + + + +blk_mq_dispatch_rq_list (10,101,010 samples, 0.02%) + + + +memcmp@plt (20,202,020 samples, 0.04%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +fclose@@GLIBC_2.2.5 (20,202,020 samples, 0.04%) + + + +clear_page_erms (222,222,220 samples, 0.49%) + + + +__GI___lll_lock_wake (30,303,030 samples, 0.07%) + + + +leveldb::PutLengthPrefixedSlice (40,404,040 samples, 0.09%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::front (10,101,010 samples, 0.02%) + + + +apparmor_current_getlsmblob_subj (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::MakeRoomForWrite (10,101,010 samples, 0.02%) + + + +pthread_mutex_unlock@@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +cfree@GLIBC_2.2.5 (30,303,030 samples, 0.07%) + + + +leveldb::Slice::size (20,202,020 samples, 0.04%) + + + +__kmalloc (70,707,070 samples, 0.16%) + + + +__GI___lll_lock_wake (383,838,380 samples, 0.84%) + + + +getname (10,101,010 samples, 0.02%) + + + +lookup_fast (10,101,010 samples, 0.02%) + + + +__get_user_nocheck_4 (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Lock (50,505,050 samples, 0.11%) + + + +leveldb::IteratorWrapper::Valid (10,101,010 samples, 0.02%) + + + +__rcu_read_unlock (20,202,020 samples, 0.04%) + + + +blk_mq_dispatch_rq_list (60,606,060 samples, 0.13%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::push_back (212,121,210 samples, 0.47%) + + + +lookup_bh_lru (10,101,010 samples, 0.02%) + + + +do_syscall_64 (40,404,040 samples, 0.09%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::base (10,101,010 samples, 0.02%) + + + +std::pair<unsigned long, unsigned long>&& std::forward<std::pair<unsigned long, unsigned long> > (20,202,020 samples, 0.04%) + + + +scsi_dispatch_cmd (20,202,020 samples, 0.04%) + + + +ext4_file_open (10,101,010 samples, 0.02%) + + + +mptspi_qcmd (858,585,850 samples, 1.89%) +m.. + + +do_syscall_64 (121,212,120 samples, 0.27%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +std::__basic_file<char>::is_open (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +blk_mq_dispatch_rq_list (20,202,020 samples, 0.04%) + + + +filemap_get_pages (10,101,010 samples, 0.02%) + + + +futex_wake (343,434,340 samples, 0.76%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (30,303,030 samples, 0.07%) + + + +std::basic_filebuf<char, std::char_traits<char> >::~basic_filebuf (50,505,050 samples, 0.11%) + + + +std::_Select1st<std::pair<unsigned long const, unsigned long> >::operator (20,202,020 samples, 0.04%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +ext4_dirty_inode (10,101,010 samples, 0.02%) + + + +__irq_exit_rcu (20,202,020 samples, 0.04%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +do_syscall_64 (2,343,434,320 samples, 5.16%) +do_sys.. + + +__gnu_cxx::new_allocator<std::pair<unsigned long, unsigned long> >::max_size (10,101,010 samples, 0.02%) + + + +dput (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::NextEntryOffset (10,101,010 samples, 0.02%) + + + +__srcu_read_unlock (20,202,020 samples, 0.04%) + + + +std::mutex::unlock (20,202,020 samples, 0.04%) + + + +leveldb::GetLengthPrefixedSlice (20,202,020 samples, 0.04%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +dput (10,101,010 samples, 0.02%) + + + +__gthread_mutex_unlock (10,101,010 samples, 0.02%) + + + +try_to_wake_up (5,363,636,310 samples, 11.81%) +try_to_wake_up + + +rw_verify_area (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.02%) + + + +pthread_mutex_unlock@plt (10,101,010 samples, 0.02%) + + + +__check_heap_object (10,101,010 samples, 0.02%) + + + +__memcg_slab_free_hook (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +fsnotify (60,606,060 samples, 0.13%) + + + +leveldb::TableBuilder::ok (60,606,060 samples, 0.13%) + + + +leveldb::PutLengthPrefixedSlice (40,404,040 samples, 0.09%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +scsi_dispatch_cmd (30,303,030 samples, 0.07%) + + + +xas_load (20,202,020 samples, 0.04%) + + + +__fdget_pos (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_iterator<std::pair<unsigned long const, unsigned long> >::operator* (20,202,020 samples, 0.04%) + + + +__dquot_alloc_space (30,303,030 samples, 0.07%) + + + +blk_mq_dispatch_plug_list (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.02%) + + + +leveldb::WriteBatch::Put (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (20,202,020 samples, 0.04%) + + + +lockref_get_not_zero (20,202,020 samples, 0.04%) + + + +mem_cgroup_commit_charge (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +dget_parent (10,101,010 samples, 0.02%) + + + +futex_wake (1,101,010,090 samples, 2.42%) +fu.. + + +leveldb::EncodeVarint64 (40,404,040 samples, 0.09%) + + + +entry_SYSCALL_64_after_hwframe (1,222,222,210 samples, 2.69%) +en.. + + +__d_lookup_rcu (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (20,202,020 samples, 0.04%) + + + +std::basic_filebuf<char, std::char_traits<char> >::_M_terminate_output (20,202,020 samples, 0.04%) + + + +folio_batch_move_lru (141,414,140 samples, 0.31%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.02%) + + + +scsi_dispatch_cmd (60,606,060 samples, 0.13%) + + + +get_page_from_freelist (10,101,010 samples, 0.02%) + + + +__cxxabiv1::__si_class_type_info::~__si_class_type_info (60,606,060 samples, 0.13%) + + + +module_put (20,202,020 samples, 0.04%) + + + +x64_sys_call (222,222,220 samples, 0.49%) + + + +leveldb::Block::Iter::Seek (626,262,620 samples, 1.38%) + + + +std::basic_streambuf<char, std::char_traits<char> >::xsgetn (10,101,010 samples, 0.02%) + + + +__futex_queue (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +all (45,434,342,980 samples, 100%) + + + +fault_in_iov_iter_readable (10,101,010 samples, 0.02%) + + + +void std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_realloc_insert<std::pair<leveldb::Slice, leveldb::Slice> > (131,313,130 samples, 0.29%) + + + +alloc_pages_mpol (646,464,640 samples, 1.42%) + + + +blk_mq_sched_dispatch_requests (20,202,020 samples, 0.04%) + + + +scsi_complete (10,101,010 samples, 0.02%) + + + +void std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::_M_push_back_aux<leveldb::DBImpl::Writer*> (20,202,020 samples, 0.04%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Next (181,818,180 samples, 0.40%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::operator[] (323,232,320 samples, 0.71%) + + + +ext4_block_write_begin (50,505,050 samples, 0.11%) + + + +std::atomic<bool>::load (50,505,050 samples, 0.11%) + + + +std::ios_base::_M_call_callbacks (10,101,010 samples, 0.02%) + + + +__futex_unqueue (10,101,010 samples, 0.02%) + + + +ext4_get_inode_loc (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +blk_mq_submit_bio (80,808,080 samples, 0.18%) + + + +leveldb::PutVarint32 (121,212,120 samples, 0.27%) + + + +__x64_sys_futex (343,434,340 samples, 0.76%) + + + +__gnu_cxx::__normal_iterator<leveldb::FileMetaData* const*, std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +ext4_dirty_inode (40,404,040 samples, 0.09%) + + + +leveldb::(anonymous namespace)::LRUCache::Release (20,202,020 samples, 0.04%) + + + +__x64_sys_futex (5,565,656,510 samples, 12.25%) +__x64_sys_futex + + +wake_up_q (343,434,340 samples, 0.76%) + + + +leveldb::MutexLock::~MutexLock (10,101,010 samples, 0.02%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +bool std::has_facet<std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > > > (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +std::operator& (10,101,010 samples, 0.02%) + + + +workingset_refault (40,404,040 samples, 0.09%) + + + +blk_mq_flush_plug_list (30,303,030 samples, 0.07%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (20,202,020 samples, 0.04%) + + + +d_namespace_path.constprop.0 (252,525,250 samples, 0.56%) + + + +leveldb::(anonymous namespace)::ValueLogChecker::CheckValid (10,101,010 samples, 0.02%) + + + +try_to_wake_up (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::key (10,101,010 samples, 0.02%) + + + +leveldb::EncodeFixed32 (20,202,020 samples, 0.04%) + + + +std::pair<unsigned long, unsigned long>::pair<unsigned long&, unsigned long, true> (10,101,010 samples, 0.02%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::deallocate (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +wake_q_add_safe (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::value (181,818,180 samples, 0.40%) + + + +do_writepages (121,212,120 samples, 0.27%) + + + +leveldb::WriteBatchInternal::Count (10,101,010 samples, 0.02%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +__kmalloc (20,202,020 samples, 0.04%) + + + +asm_exc_page_fault (30,303,030 samples, 0.07%) + + + +leveldb::IteratorWrapper::Next (20,202,020 samples, 0.04%) + + + +page_cache_sync_ra (10,101,010 samples, 0.02%) + + + +mark_buffer_dirty (202,020,200 samples, 0.44%) + + + +leveldb::Block::Iter::ParseNextKey (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Lock (10,101,010 samples, 0.02%) + + + +pthread_mutex_lock@@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32 (40,404,040 samples, 0.09%) + + + +__blk_mq_sched_dispatch_requests (10,101,010 samples, 0.02%) + + + +get_mem_cgroup_from_mm (10,101,010 samples, 0.02%) + + + +_IO_default_xsputn (40,404,040 samples, 0.09%) + + + +leveldb::(anonymous namespace)::ValueLogChecker::~ValueLogChecker (40,404,040 samples, 0.09%) + + + +shuffle_freelist (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32Ptr (50,505,050 samples, 0.11%) + + + +__folio_mark_dirty (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (20,202,020 samples, 0.04%) + + + +leveldb::IteratorWrapper::key (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (40,404,040 samples, 0.09%) + + + +entry_SYSCALL_64_after_hwframe (121,212,120 samples, 0.27%) + + + +std::_Vector_base<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_deallocate (10,101,010 samples, 0.02%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +leveldb::GetLengthPrefixedSlice (50,505,050 samples, 0.11%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::allocate (20,202,020 samples, 0.04%) + + + +blk_done_softirq (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32Ptr (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::~_Vector_base (10,101,010 samples, 0.02%) + + + +futex_wait (10,101,010 samples, 0.02%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__relocate_a<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice>*, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > (10,101,010 samples, 0.02%) + + + +do_futex (1,111,111,100 samples, 2.45%) +do.. + + +balance_dirty_pages_ratelimited_flags (171,717,170 samples, 0.38%) + + + +blk_finish_plug (30,303,030 samples, 0.07%) + + + +percpu_counter_add_batch (20,202,020 samples, 0.04%) + + + +generic_perform_write (2,828,282,800 samples, 6.22%) +generic_.. + + +do_syscall_64 (999,999,990 samples, 2.20%) +d.. + + +blk_mq_dispatch_plug_list (30,303,030 samples, 0.07%) + + + +leveldb::Block::Iter::NextEntryOffset (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data (10,101,010 samples, 0.02%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::PosixWritableFile::WriteUnbuffered (10,101,010 samples, 0.02%) + + + +leveldb::PutLengthPrefixedSlice (10,101,010 samples, 0.02%) + + + +futex_q_lock (10,101,010 samples, 0.02%) + + + +alloc_pages_mpol (20,202,020 samples, 0.04%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::__relocate_a<std::pair<leveldb::Slice, leveldb::Slice>*, std::pair<leveldb::Slice, leveldb::Slice>*, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > (10,101,010 samples, 0.02%) + + + +futex_wait_queue (10,101,010 samples, 0.02%) + + + +blk_mq_submit_bio (60,606,060 samples, 0.13%) + + + +leveldb::(anonymous namespace)::LRUCache::Lookup (10,101,010 samples, 0.02%) + + + +db_bench (45,434,342,980 samples, 100.00%) +db_bench + + +std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (27,040,403,770 samples, 59.52%) +std::thread::_State_impl<std::thread::_Invoker<std::tuple<void + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +handle_pte_fault (10,101,010 samples, 0.02%) + + + +leveldb::EncodeFixed64 (10,101,010 samples, 0.02%) + + + +__cxxabiv1::__si_class_type_info::__do_dyncast (30,303,030 samples, 0.07%) + + + +std::__basic_file<char>::is_open (10,101,010 samples, 0.02%) + + + +_raw_spin_lock (10,101,010 samples, 0.02%) + + + +syscall_exit_to_user_mode_prepare (10,101,010 samples, 0.02%) + + + +__cond_resched (20,202,020 samples, 0.04%) + + + +do_futex (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (40,404,040 samples, 0.09%) + + + +do_syscall_64 (20,202,020 samples, 0.04%) + + + +generic_update_time (10,101,010 samples, 0.02%) + + + +__wake_up (40,404,040 samples, 0.09%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::key (60,606,060 samples, 0.13%) + + + +std::allocator_traits<std::allocator<std::pair<unsigned long, unsigned long> > >::deallocate (10,101,010 samples, 0.02%) + + + +leveldb::port::CondVar::SignalAll (10,101,010 samples, 0.02%) + + + +__cond_resched (10,101,010 samples, 0.02%) + + + +ext4_sync_file (30,303,030 samples, 0.07%) + + + +leveldb::BuildTable (494,949,490 samples, 1.09%) + + + +ext4_da_reserve_space (20,202,020 samples, 0.04%) + + + +std::pair<leveldb::Slice, leveldb::Slice>* std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >, std::pair<leveldb::Slice, leveldb::Slice>*> (50,505,050 samples, 0.11%) + + + +node_page_state (50,505,050 samples, 0.11%) + + + +rw_verify_area (10,101,010 samples, 0.02%) + + + +fsnotify_destroy_event (20,202,020 samples, 0.04%) + + + +__ext4_mark_inode_dirty (30,303,030 samples, 0.07%) + + + +strncpy_from_user (30,303,030 samples, 0.07%) + + + +blk_add_rq_to_plug (60,606,060 samples, 0.13%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +fsnotify (20,202,020 samples, 0.04%) + + + +submit_bio_noacct (60,606,060 samples, 0.13%) + + + +blk_mq_dispatch_plug_list (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::KeyComparator::operator (30,303,030 samples, 0.07%) + + + +__es_insert_extent (10,101,010 samples, 0.02%) + + + +__mark_inode_dirty (10,101,010 samples, 0.02%) + + + +fclose@@GLIBC_2.2.5 (60,606,060 samples, 0.13%) + + + +leveldb::VersionSet::LogAndApply (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::LRUCache::Unref (10,101,010 samples, 0.02%) + + + +dd_dispatch_request (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux (10,101,010 samples, 0.02%) + + + +mpt_put_msg_frame (30,303,030 samples, 0.07%) + + + +leveldb::MutexLock::~MutexLock (90,909,090 samples, 0.20%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (10,101,010 samples, 0.02%) + + + +generic_update_time (40,404,040 samples, 0.09%) + + + +irq_exit_rcu (20,202,020 samples, 0.04%) + + + +__blk_mq_alloc_requests (10,101,010 samples, 0.02%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_deallocate (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice> const*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::operator* (10,101,010 samples, 0.02%) + + + +std::operator== (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (6,030,302,970 samples, 13.27%) +leveldb::port::Mutex.. + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (222,222,220 samples, 0.49%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::operator[] (111,111,110 samples, 0.24%) + + + +leveldb::LookupKey::LookupKey (10,101,010 samples, 0.02%) + + + +std::codecvt<char, char, __mbstate_t>::do_always_noconv (20,202,020 samples, 0.04%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +leveldb::crc32c::Extend (212,121,210 samples, 0.47%) + + + +leveldb::DBImpl::Writer::Writer (10,101,010 samples, 0.02%) + + + +__futex_wait (10,101,010 samples, 0.02%) + + + +std::ostream::write (50,505,050 samples, 0.11%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::resize (10,101,010 samples, 0.02%) + + + +vfs_write (181,818,180 samples, 0.40%) + + + +futex_wait (50,505,050 samples, 0.11%) + + + +leveldb::DBImpl::Writer::Writer (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__GI__IO_un_link.part.0 (20,202,020 samples, 0.04%) + + + +wake_all_kswapds (10,101,010 samples, 0.02%) + + + +_int_malloc (10,101,010 samples, 0.02%) + + + +do_syscall_64 (111,111,110 samples, 0.24%) + + + +free_buffer_head (10,101,010 samples, 0.02%) + + + +mptspi_qcmd (60,606,060 samples, 0.13%) + + + +__schedule (10,101,010 samples, 0.02%) + + + +__memmove_evex_unaligned_erms (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::FinishCompactionOutputFile (131,313,130 samples, 0.29%) + + + +irqentry_exit (10,101,010 samples, 0.02%) + + + +leveldb::MutexLock::MutexLock (30,303,030 samples, 0.07%) + + + +leveldb::IteratorWrapper::Update (151,515,150 samples, 0.33%) + + + +std::basic_ios<char, std::char_traits<char> >::good (10,101,010 samples, 0.02%) + + + +ext4_writepages (121,212,120 samples, 0.27%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::Iterator::RegisterCleanup (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +__folio_batch_release (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (90,909,090 samples, 0.20%) + + + +check_heap_object (10,101,010 samples, 0.02%) + + + +should_failslab.constprop.0 (10,101,010 samples, 0.02%) + + + +vfs_write (141,414,140 samples, 0.31%) + + + +refill_obj_stock (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::push_back (10,101,010 samples, 0.02%) + + + +leveldb::Slice::remove_prefix (10,101,010 samples, 0.02%) + + + +__fsnotify_parent (60,606,060 samples, 0.13%) + + + +generic_permission (10,101,010 samples, 0.02%) + + + +futex_wait_setup (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::Update (40,404,040 samples, 0.09%) + + + +page_cache_async_ra (1,292,929,280 samples, 2.85%) +pa.. + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +std::_Deque_base<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::_M_get_Tp_allocator (10,101,010 samples, 0.02%) + + + +__GI___writev (4,424,242,380 samples, 9.74%) +__GI___writev + + +__fput (323,232,320 samples, 0.71%) + + + +leveldb::FindFile (50,505,050 samples, 0.11%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_key (70,707,070 samples, 0.16%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::clear (10,101,010 samples, 0.02%) + + + +leveldb::EncodeFixed64 (10,101,010 samples, 0.02%) + + + +std::mutex::lock (50,505,050 samples, 0.11%) + + + +leveldb::EncodeVarint32 (40,404,040 samples, 0.09%) + + + +__strchrnul_evex (50,505,050 samples, 0.11%) + + + +inode_permission (70,707,070 samples, 0.16%) + + + +mpt_put_msg_frame (10,101,010 samples, 0.02%) + + + +try_to_wake_up (1,070,707,060 samples, 2.36%) +t.. + + +ext4_reserve_inode_write (20,202,020 samples, 0.04%) + + + +ktime_get_coarse_real_ts64 (10,101,010 samples, 0.02%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32 (20,202,020 samples, 0.04%) + + + +leveldb::Arena::AllocateAligned (20,202,020 samples, 0.04%) + + + +leveldb::IteratorWrapper::value (20,202,020 samples, 0.04%) + + + +wakeup_kswapd (10,101,010 samples, 0.02%) + + + +__ext4_mark_inode_dirty (30,303,030 samples, 0.07%) + + + +futex_wait_setup (30,303,030 samples, 0.07%) + + + +irqentry_exit (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::_Vector_base<leveldb::Slice, std::allocator<leveldb::Slice> >::_M_deallocate (10,101,010 samples, 0.02%) + + + +leveldb::TableBuilder::status (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::GetLengthPrefixedSlice (60,606,060 samples, 0.13%) + + + +idr_find (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (20,202,020 samples, 0.04%) + + + +__memcmp_evex_movbe (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::ExtractUserKey (60,606,060 samples, 0.13%) + + + +__gnu_cxx::new_allocator<leveldb::Slice>::_M_max_size (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +filemap_alloc_folio (10,101,010 samples, 0.02%) + + + +__memcmp_evex_movbe (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (20,202,020 samples, 0.04%) + + + +std::_Select1st<std::pair<unsigned long const, unsigned long> >::operator (10,101,010 samples, 0.02%) + + + +apparmor_current_getlsmblob_subj (10,101,010 samples, 0.02%) + + + +dget_parent (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (4,030,302,990 samples, 8.87%) +entry_SYSCAL.. + + +std::less<unsigned long>::operator (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +file_close_fd_locked (20,202,020 samples, 0.04%) + + + +x64_sys_call (151,515,150 samples, 0.33%) + + + +xas_descend (20,202,020 samples, 0.04%) + + + +leveldb::crc32c::Value (20,202,020 samples, 0.04%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.02%) + + + +generic_update_time (40,404,040 samples, 0.09%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::GetRestartPoint (20,202,020 samples, 0.04%) + + + +std::allocator_traits<std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::allocate (10,101,010 samples, 0.02%) + + + +apparmor_file_permission (30,303,030 samples, 0.07%) + + + +void std::thread::_Invoker<std::tuple<void (27,040,403,770 samples, 59.52%) +void std::thread::_Invoker<std::tuple<void + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::MemTableInserter::Put (242,424,240 samples, 0.53%) + + + +std::allocator_traits<std::allocator<std::pair<unsigned long, unsigned long> > >::max_size (20,202,020 samples, 0.04%) + + + +leveldb::WriteBatchInternal::checkValueLog (262,626,260 samples, 0.58%) + + + +leveldb::GetVarint64 (10,101,010 samples, 0.02%) + + + +aa_audit_file (10,101,010 samples, 0.02%) + + + +evict (10,101,010 samples, 0.02%) + + + +do_fault (30,303,030 samples, 0.07%) + + + +folio_lruvec_lock_irqsave (20,202,020 samples, 0.04%) + + + +ext4_evict_inode (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::ValueLogInserter::ValueLogInserter (20,202,020 samples, 0.04%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +ext4_evict_inode (10,101,010 samples, 0.02%) + + + +std::map<unsigned long, unsigned long, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::lower_bound (90,909,090 samples, 0.20%) + + + +leveldb::MutexLock::~MutexLock (20,202,020 samples, 0.04%) + + + +leveldb::Slice::compare (101,010,100 samples, 0.22%) + + + +__do_fault (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (20,202,020 samples, 0.04%) + + + +__alloc_pages (585,858,580 samples, 1.29%) + + + +leveldb::GetVarint32Ptr (565,656,560 samples, 1.24%) + + + +llseek@GLIBC_2.2.5 (2,080,808,060 samples, 4.58%) +llsee.. + + +std::locale::locale (10,101,010 samples, 0.02%) + + + +__GI___pthread_disable_asynccancel (40,404,040 samples, 0.09%) + + + +[unknown] (30,303,030 samples, 0.07%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::Compaction::ShouldStopBefore (70,707,070 samples, 0.16%) + + + +__x64_sys_writev (10,101,010 samples, 0.02%) + + + +leveldb::MutexLock::~MutexLock (20,202,020 samples, 0.04%) + + + +blk_finish_plug (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::value (101,010,100 samples, 0.22%) + + + +futex_wait_queue (20,202,020 samples, 0.04%) + + + +apparmor_file_open (646,464,640 samples, 1.42%) + + + +fsnotify (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (30,303,030 samples, 0.07%) + + + +fsnotify (383,838,380 samples, 0.84%) + + + +kmem_cache_alloc (60,606,060 samples, 0.13%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::KeyIsAfterNode (171,717,170 samples, 0.38%) + + + +__rcu_read_lock (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Node (20,202,020 samples, 0.04%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +ondemand_readahead (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +x64_sys_call (20,202,020 samples, 0.04%) + + + +get_page_from_freelist (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +leveldb::Version::Ref (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::Next (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_check_len (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::key (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (10,101,010 samples, 0.02%) + + + +ext4_dirty_inode (40,404,040 samples, 0.09%) + + + +ext4_file_write_iter (20,202,020 samples, 0.04%) + + + +unsigned long const& std::min<unsigned long> (10,101,010 samples, 0.02%) + + + +leveldb::Slice::operator[] (50,505,050 samples, 0.11%) + + + +__filemap_get_folio (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__gnu_cxx::new_allocator<leveldb::FileMetaData*>::max_size (10,101,010 samples, 0.02%) + + + +apparmor_file_permission (20,202,020 samples, 0.04%) + + + +generic_perform_write (353,535,350 samples, 0.78%) + + + +bio_associate_blkg (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::KeyComparator::operator (20,202,020 samples, 0.04%) + + + +std::remove_reference<char const*&>::type&& std::move<char const*&> (10,101,010 samples, 0.02%) + + + +fsnotify (10,101,010 samples, 0.02%) + + + +pthread_cond_wait@@GLIBC_2.3.2 (10,101,010 samples, 0.02%) + + + +percpu_counter_add_batch (20,202,020 samples, 0.04%) + + + +blk_mq_submit_bio (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::BuildBatchGroup (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::Valid (20,202,020 samples, 0.04%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::allocate (10,101,010 samples, 0.02%) + + + +leveldb::Slice::size (20,202,020 samples, 0.04%) + + + +leveldb::DBImpl::Writer::~Writer (20,202,020 samples, 0.04%) + + + +dget_parent (20,202,020 samples, 0.04%) + + + +tty_write (20,202,020 samples, 0.04%) + + + +leveldb::Slice::remove_prefix (20,202,020 samples, 0.04%) + + + +leveldb::Slice::empty (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::value (60,606,060 samples, 0.13%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::~vector (40,404,040 samples, 0.09%) + + + +leveldb::(anonymous namespace)::KeyBuffer::slice (10,101,010 samples, 0.02%) + + + +fsnotify_insert_event (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint32Ptr (20,202,020 samples, 0.04%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +page_cache_ra_order (1,292,929,280 samples, 2.85%) +pa.. + + +__gthread_active_p (10,101,010 samples, 0.02%) + + + +std::deque<leveldb::DBImpl::Writer*, std::allocator<leveldb::DBImpl::Writer*> >::empty (10,101,010 samples, 0.02%) + + + +security_file_permission (20,202,020 samples, 0.04%) + + + +entry_SYSCALL_64_after_hwframe (1,767,676,750 samples, 3.89%) +entr.. + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::remove_reference<std::pair<leveldb::Slice, leveldb::Slice>&>::type&& std::move<std::pair<leveldb::Slice, leveldb::Slice>&> (10,101,010 samples, 0.02%) + + + +from_kuid (10,101,010 samples, 0.02%) + + + +std::locale::~locale (50,505,050 samples, 0.11%) + + + +clear_page_erms (40,404,040 samples, 0.09%) + + + +entry_SYSCALL_64_after_hwframe (10,101,010 samples, 0.02%) + + + +prepend_path (222,222,220 samples, 0.49%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +blk_mq_flush_plug_list (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (70,707,070 samples, 0.16%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign (10,101,010 samples, 0.02%) + + + +__blk_mq_sched_dispatch_requests (898,989,890 samples, 1.98%) +_.. + + +leveldb::(anonymous namespace)::HandleTable::FindPointer (20,202,020 samples, 0.04%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +__kmalloc (151,515,150 samples, 0.33%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +apparmor_file_free_security (30,303,030 samples, 0.07%) + + + +dget_parent (10,101,010 samples, 0.02%) + + + +__x64_sys_unlink (30,303,030 samples, 0.07%) + + + +leveldb::GetVarint64Ptr (20,202,020 samples, 0.04%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +__gnu_cxx::new_allocator<std::pair<leveldb::Slice, leveldb::Slice> >::deallocate (20,202,020 samples, 0.04%) + + + +leveldb::operator== (10,101,010 samples, 0.02%) + + + +std::operator& (10,101,010 samples, 0.02%) + + + +__GI___lll_lock_wait (171,717,170 samples, 0.38%) + + + +leveldb::Slice::data (20,202,020 samples, 0.04%) + + + +leveldb::InternalKeyComparator::Compare (30,303,030 samples, 0.07%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +wake_q_add_safe (10,101,010 samples, 0.02%) + + + +file_tty_write.constprop.0 (20,202,020 samples, 0.04%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::NoBarrier_SetNext (20,202,020 samples, 0.04%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +fault_in_iov_iter_readable (20,202,020 samples, 0.04%) + + + +std::_Vector_base<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_Vector_impl::_Vector_impl (10,101,010 samples, 0.02%) + + + +mpage_map_and_submit_buffers (30,303,030 samples, 0.07%) + + + +leveldb::IteratorWrapper::Next (363,636,360 samples, 0.80%) + + + +leveldb::Block::Iter::ParseNextKey (80,808,080 samples, 0.18%) + + + +leveldb::Status::ok (10,101,010 samples, 0.02%) + + + +_raw_spin_lock (10,101,010 samples, 0.02%) + + + +truncate_inode_pages_range (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (1,131,313,120 samples, 2.49%) +__.. + + +__fdget_pos (20,202,020 samples, 0.04%) + + + +std::istream::sentry::sentry (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::Slice::data (10,101,010 samples, 0.02%) + + + +filemap_fdatawrite_wbc (121,212,120 samples, 0.27%) + + + +leveldb::WriteBatchInternal::InsertInto (4,040,404,000 samples, 8.89%) +leveldb::Wri.. + + +blk_complete_reqs (10,101,010 samples, 0.02%) + + + +leveldb::Slice::remove_prefix (20,202,020 samples, 0.04%) + + + +ext4_da_get_block_prep (252,525,250 samples, 0.56%) + + + +leveldb::DBImpl::Put (1,444,444,430 samples, 3.18%) +lev.. + + +__ext4_mark_inode_dirty (30,303,030 samples, 0.07%) + + + +get_futex_key (10,101,010 samples, 0.02%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +futex_wait (20,202,020 samples, 0.04%) + + + +lockref_get_not_zero (10,101,010 samples, 0.02%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +leveldb::(anonymous namespace)::ShardedLRUCache::Value (10,101,010 samples, 0.02%) + + + +irq_exit_rcu (10,101,010 samples, 0.02%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +std::allocator<leveldb::Slice>::~allocator (10,101,010 samples, 0.02%) + + + +submit_bio_noacct (20,202,020 samples, 0.04%) + + + +leveldb::BlockBuilder::Add (10,101,010 samples, 0.02%) + + + +_raw_spin_unlock_irqrestore (30,303,030 samples, 0.07%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::key (50,505,050 samples, 0.11%) + + + +pthread_mutex_lock@plt (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::end (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual (3,434,343,400 samples, 7.56%) +leveldb::S.. + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::push_back (20,202,020 samples, 0.04%) + + + +mod_objcg_state (20,202,020 samples, 0.04%) + + + +x64_sys_call (50,505,050 samples, 0.11%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::vector (121,212,120 samples, 0.27%) + + + +leveldb::DBImpl::GarbageCollect (4,272,727,230 samples, 9.40%) +leveldb::DBIm.. + + +ktime_get_coarse_real_ts64 (10,101,010 samples, 0.02%) + + + +entry_SYSCALL_64_after_hwframe (242,424,240 samples, 0.53%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::SetNext (10,101,010 samples, 0.02%) + + + +leveldb::ExtractUserKey (20,202,020 samples, 0.04%) + + + +leveldb::DecodeFixed32 (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::CompactMemTable (535,353,530 samples, 1.18%) + + + +do_syscall_64 (5,737,373,680 samples, 12.63%) +do_syscall_64 + + +leveldb::InternalKeyComparator::Compare (151,515,150 samples, 0.33%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::push_back (10,101,010 samples, 0.02%) + + + +inotify_handle_inode_event (242,424,240 samples, 0.53%) + + + +fsnotify (363,636,360 samples, 0.80%) + + + +_find_next_zero_bit (20,202,020 samples, 0.04%) + + + +entry_SYSCALL_64_after_hwframe (40,404,040 samples, 0.09%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_do_relocate (10,101,010 samples, 0.02%) + + + +truncate_inode_pages_range (10,101,010 samples, 0.02%) + + + +handle_pte_fault (30,303,030 samples, 0.07%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::begin (10,101,010 samples, 0.02%) + + + +__blk_flush_plug (10,101,010 samples, 0.02%) + + + +_IO_link_in (10,101,010 samples, 0.02%) + + + +__futex_wait (10,101,010 samples, 0.02%) + + + +security_file_free (10,101,010 samples, 0.02%) + + + +__x64_sys_close (535,353,530 samples, 1.18%) + + + +__x64_sys_writev (3,646,464,610 samples, 8.03%) +__x64_sys_w.. + + +entry_SYSCALL_64_after_hwframe (5,757,575,700 samples, 12.67%) +entry_SYSCALL_64_af.. + + +__filemap_add_folio (10,101,010 samples, 0.02%) + + + +leveldb::ExtractUserKey (20,202,020 samples, 0.04%) + + + +operator delete (20,202,020 samples, 0.04%) + + + +blk_mq_run_hw_queue (10,101,010 samples, 0.02%) + + + +handle_mm_fault (30,303,030 samples, 0.07%) + + + +kmem_cache_free (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::Writer*&& std::forward<leveldb::DBImpl::Writer*> (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Iterator::Seek (10,101,010 samples, 0.02%) + + + +security_file_alloc (30,303,030 samples, 0.07%) + + + +__GI___unlink (30,303,030 samples, 0.07%) + + + +percpu_counter_add_batch (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Node::Node (20,202,020 samples, 0.04%) + + + +void std::_Construct<std::pair<leveldb::Slice, leveldb::Slice>, std::pair<leveldb::Slice, leveldb::Slice> const&> (10,101,010 samples, 0.02%) + + + +__f_unlock_pos (10,101,010 samples, 0.02%) + + + +leveldb::Table::InternalGet (949,494,940 samples, 2.09%) +l.. + + +read_pages (1,030,303,020 samples, 2.27%) +r.. + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (10,101,010 samples, 0.02%) + + + +_find_first_bit (20,202,020 samples, 0.04%) + + + +__memmove_evex_unaligned_erms (30,303,030 samples, 0.07%) + + + +jbd2_journal_try_to_free_buffers (10,101,010 samples, 0.02%) + + + +_raw_spin_trylock (111,111,110 samples, 0.24%) + + + +std::vector<leveldb::Slice, std::allocator<leveldb::Slice> >::~vector (30,303,030 samples, 0.07%) + + + +try_to_wake_up (10,101,010 samples, 0.02%) + + + +__srcu_read_unlock (20,202,020 samples, 0.04%) + + + +new_slab (20,202,020 samples, 0.04%) + + + +_raw_spin_unlock_irqrestore (10,101,010 samples, 0.02%) + + + +security_current_getlsmblob_subj (30,303,030 samples, 0.07%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::~vector (10,101,010 samples, 0.02%) + + + +__GI__IO_un_link.part.0 (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >::empty (10,101,010 samples, 0.02%) + + + +__rcu_read_unlock (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksForward (10,101,010 samples, 0.02%) + + + +pthread_once@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +filemap_release_folio (10,101,010 samples, 0.02%) + + + +irqentry_exit (10,101,010 samples, 0.02%) + + + +__memcmp_evex_movbe (181,818,180 samples, 0.40%) + + + +leveldb::Slice::remove_prefix (10,101,010 samples, 0.02%) + + + +x64_sys_call (10,101,010 samples, 0.02%) + + + +leveldb::SkipList<char const*, leveldb::MemTable::KeyComparator>::Insert (3,686,868,650 samples, 8.11%) +leveldb::Sk.. + + +[unknown] (10,101,010 samples, 0.02%) + + + +__alloc_pages (60,606,060 samples, 0.13%) + + + +std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<char const*> >, std::is_move_constructible<char const*>, std::is_move_assignable<char const*> >::value, void>::type std::swap<char const*> (10,101,010 samples, 0.02%) + + + +leveldb::BlockContents::BlockContents (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Lock (20,202,020 samples, 0.04%) + + + +leveldb::InternalKeyComparator::Compare (282,828,280 samples, 0.62%) + + + +ima_file_check (60,606,060 samples, 0.13%) + + + +[unknown] (50,505,050 samples, 0.11%) + + + +ext4_has_free_clusters (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +__fput_sync (424,242,420 samples, 0.93%) + + + +std::mutex::unlock (20,202,020 samples, 0.04%) + + + +void std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long, unsigned long> > (131,313,130 samples, 0.29%) + + + +make_vfsgid (10,101,010 samples, 0.02%) + + + +up_write (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +do_syscall_64 (1,323,232,310 samples, 2.91%) +do.. + + +get_mem_cgroup_from_mm (50,505,050 samples, 0.11%) + + + +leveldb::(anonymous namespace)::LRUCache::Lookup (60,606,060 samples, 0.13%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +leveldb::Status::operator= (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare (10,101,010 samples, 0.02%) + + + +submit_bio_noacct_nocheck (60,606,060 samples, 0.13%) + + + +scsi_queue_rq (10,101,010 samples, 0.02%) + + + +block_invalidate_folio (20,202,020 samples, 0.04%) + + + +inotify_merge (10,101,010 samples, 0.02%) + + + +fault_in_readable (10,101,010 samples, 0.02%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +copy_iovec_from_user (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (50,505,050 samples, 0.11%) + + + +malloc (141,414,140 samples, 0.31%) + + + +__radix_tree_lookup (20,202,020 samples, 0.04%) + + + +__GI___lll_lock_wake (5,949,494,890 samples, 13.09%) +__GI___lll_lock_wake + + +leveldb::Block::Iter::GetRestartPoint (10,101,010 samples, 0.02%) + + + +leveldb::IteratorWrapper::key (10,101,010 samples, 0.02%) + + + +cfree@GLIBC_2.2.5 (10,101,010 samples, 0.02%) + + + +blk_finish_plug (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::GetRestartPoint (20,202,020 samples, 0.04%) + + + +security_file_free (70,707,070 samples, 0.16%) + + + +leveldb::PutVarint64 (10,101,010 samples, 0.02%) + + + +fsnotify_destroy_event (10,101,010 samples, 0.02%) + + + +std::_Rb_tree<unsigned long, std::pair<unsigned long const, unsigned long>, std::_Select1st<std::pair<unsigned long const, unsigned long> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, unsigned long> > >::_S_right (10,101,010 samples, 0.02%) + + + +filemap_get_entry (10,101,010 samples, 0.02%) + + + +common_interrupt (10,101,010 samples, 0.02%) + + + +__x64_sys_read (30,303,030 samples, 0.07%) + + + +leveldb::(anonymous namespace)::MergingIterator::key (30,303,030 samples, 0.07%) + + + +__GI___libc_open (2,919,191,890 samples, 6.43%) +__GI___l.. + + +rmqueue (10,101,010 samples, 0.02%) + + + +build_open_flags (10,101,010 samples, 0.02%) + + + +std::mutex::lock (10,101,010 samples, 0.02%) + + + +std::_Rb_tree_node<std::pair<unsigned long const, unsigned long> >::_M_valptr (10,101,010 samples, 0.02%) + + + +blk_mq_flush_plug_list (919,191,910 samples, 2.02%) +b.. + + +leveldb::DecodeFixed32 (20,202,020 samples, 0.04%) + + + +try_to_wake_up (40,404,040 samples, 0.09%) + + + +[unknown] (30,303,030 samples, 0.07%) + + + +std::vector<leveldb::Slice, std::allocator<leveldb::Slice> >::push_back (111,111,110 samples, 0.24%) + + + +do_syscall_64 (1,767,676,750 samples, 3.89%) +do_s.. + + +__alloc_pages (10,101,010 samples, 0.02%) + + + +schedule_debug.constprop.0 (10,101,010 samples, 0.02%) + + + +leveldb::GetVarint64 (20,202,020 samples, 0.04%) + + + +ext4_buffered_write_iter (111,111,110 samples, 0.24%) + + + +__GI___lll_lock_wake (70,707,070 samples, 0.16%) + + + +ext4_reserve_inode_write (10,101,010 samples, 0.02%) + + + +blk_finish_plug (919,191,910 samples, 2.02%) +b.. + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::_M_check_len (60,606,060 samples, 0.13%) + + + +leveldb::Slice::data (60,606,060 samples, 0.13%) + + + +filemap_alloc_folio (10,101,010 samples, 0.02%) + + + +leveldb::MemTable::KeyComparator::operator (101,010,100 samples, 0.22%) + + + +leveldb::Status::Status (10,101,010 samples, 0.02%) + + + +leveldb::Version::Get (1,333,333,320 samples, 2.93%) +le.. + + +memcg_account_kmem (10,101,010 samples, 0.02%) + + + +ksys_write (1,242,424,230 samples, 2.73%) +ks.. + + +_raw_spin_lock_irqsave (20,202,020 samples, 0.04%) + + + +evict (30,303,030 samples, 0.07%) + + + +mptscsih_qcmd (858,585,850 samples, 1.89%) +m.. + + +ext4_da_write_end (60,606,060 samples, 0.13%) + + + +__x64_sys_futex (10,101,010 samples, 0.02%) + + + +__blk_mq_sched_dispatch_requests (20,202,020 samples, 0.04%) + + + +folio_mark_accessed (10,101,010 samples, 0.02%) + + + +std::vector<leveldb::DBImpl::CompactionState::Output, std::allocator<leveldb::DBImpl::CompactionState::Output> >::size (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +crypto_shash_update (10,101,010 samples, 0.02%) + + + +leveldb::port::Mutex::Unlock (90,909,090 samples, 0.20%) + + + +__vfprintf_internal (10,101,010 samples, 0.02%) + + + +std::_Deque_iterator<leveldb::DBImpl::Writer*, leveldb::DBImpl::Writer*&, leveldb::DBImpl::Writer**>::operator++ (10,101,010 samples, 0.02%) + + + +new_slab (50,505,050 samples, 0.11%) + + + +path_init (10,101,010 samples, 0.02%) + + + +leveldb::Block::Iter::value (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +operator new (10,101,010 samples, 0.02%) + + + +do_read_fault (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size (10,101,010 samples, 0.02%) + + + +blk_mq_run_hw_queue (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >::size (10,101,010 samples, 0.02%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +__import_iovec (10,101,010 samples, 0.02%) + + + +std::ostream::write (10,101,010 samples, 0.02%) + + + +__gnu_cxx::__aligned_membuf<std::pair<unsigned long const, unsigned long> >::_M_ptr (10,101,010 samples, 0.02%) + + + +aa_file_perm (10,101,010 samples, 0.02%) + + + +__ext4_mark_inode_dirty (10,101,010 samples, 0.02%) + + + +fput (40,404,040 samples, 0.09%) + + + +std::basic_filebuf<char, std::char_traits<char> >::underflow (20,202,020 samples, 0.04%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_S_do_relocate (20,202,020 samples, 0.04%) + + + +do_futex (20,202,020 samples, 0.04%) + + + +pthread_cond_signal@@GLIBC_2.3.2 (1,303,030,290 samples, 2.87%) +pt.. + + +__fsnotify_parent (40,404,040 samples, 0.09%) + + + +get_unused_fd_flags (30,303,030 samples, 0.07%) + + + +leveldb::Slice::Slice (10,101,010 samples, 0.02%) + + + +clear_page_erms (10,101,010 samples, 0.02%) + + + +handle_softirqs (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::_M_check_len (30,303,030 samples, 0.07%) + + + +__irq_exit_rcu (10,101,010 samples, 0.02%) + + + +_copy_to_iter (10,101,010 samples, 0.02%) + + + +sysvec_reschedule_ipi (10,101,010 samples, 0.02%) + + + +[unknown] (10,101,010 samples, 0.02%) + + + +std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace (10,101,010 samples, 0.02%) + + + +dquot_file_open (20,202,020 samples, 0.04%) + + + +alloc_fd (10,101,010 samples, 0.02%) + + + +__close_nocancel (1,262,626,250 samples, 2.78%) +__.. + + +vfs_write (1,151,515,140 samples, 2.53%) +vf.. + + +schedule (10,101,010 samples, 0.02%) + + + +evict (10,101,010 samples, 0.02%) + + + +asm_common_interrupt (10,101,010 samples, 0.02%) + + + +__d_lookup (10,101,010 samples, 0.02%) + + + +futex_wait_queue (10,101,010 samples, 0.02%) + + + +futex_wait (10,101,010 samples, 0.02%) + + + +std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > >::back (10,101,010 samples, 0.02%) + + + +leveldb::DBImpl::Get (2,262,626,240 samples, 4.98%) +leveld.. + + +std::istream::sentry::sentry (30,303,030 samples, 0.07%) + + + +[unknown] (60,606,060 samples, 0.13%) + + + +ext4_writepages (30,303,030 samples, 0.07%) + + + +leveldb::PutVarint64 (40,404,040 samples, 0.09%) + + + +leveldb::Random::Uniform (10,101,010 samples, 0.02%) + + + +inode_needs_update_time (10,101,010 samples, 0.02%) + + + +leveldb::InternalKeyComparator::Compare (212,121,210 samples, 0.47%) + + + +leveldb::WriteBatch::WriteBatch (10,101,010 samples, 0.02%) + + + +leveldb::Status::operator= (20,202,020 samples, 0.04%) + + + +aa_str_perms (121,212,120 samples, 0.27%) + + + +leveldb::TableBuilder::status (20,202,020 samples, 0.04%) + + + +entry_SYSCALL_64_after_hwframe (20,202,020 samples, 0.04%) + + + +scsi_queue_rq (60,606,060 samples, 0.13%) + + + +__gnu_cxx::__normal_iterator<std::pair<leveldb::Slice, leveldb::Slice>*, std::vector<std::pair<leveldb::Slice, leveldb::Slice>, std::allocator<std::pair<leveldb::Slice, leveldb::Slice> > > >::__normal_iterator (10,101,010 samples, 0.02%) + + + +leveldb::log::Writer::EmitPhysicalRecord (313,131,310 samples, 0.69%) + + + +entry_SYSCALL_64_after_hwframe (2,343,434,320 samples, 5.16%) +entry_.. + + +blk_mq_dispatch_plug_list (909,090,900 samples, 2.00%) +b.. + + +ext4_do_writepages (121,212,120 samples, 0.27%) + + + +ext4_inode_table (10,101,010 samples, 0.02%) + + + + diff --git a/设计文档.md b/设计文档.md index ba13452..38ff753 100644 --- a/设计文档.md +++ b/设计文档.md @@ -1,656 +1,1167 @@ -# 代码设计 - -## 1.项目概述 - -### 1.1 实现字段查询功能 - -LevelDB 的基本数据结构是由一个 key 和对应的 value 组成,其中 value 是一个简单的字节序列(可以是字符串或二进制数据)。默认情况下,LevelDB 不支持像关系型数据库那样的字段查询功能。然而,在实际应用中,用户可能需要对存储的数据进行更加精细的操作,特别是当值包含多个逻辑字段时,直接使用现有的 LevelDB 接口难以满足需求。 -在本实验中,我们的目标是扩展 LevelDB 的功能,使其 value 支持多字段结构,并实现通过字段值查询对应的 key 的功能。 - -### 1.2 KV 分离 - -在 LevelDB 及其采用的 LSM 树结构中,性能挑战之一在于 Compaction 操作的效率。Compaction 是指将内存中的数据合并到磁盘上的过程,此过程中涉及大量的读写操作,对于系统的整体性能有着重要影响。在 Compaction 时,所有涉及到的旧 sstable 中的键值对都将被写入到新 sstable 中,而 Value 通常比 Key 大得多。如果将 Key 和 Value 分离存储,合并时只涉及 key 写入 sstable 的过程,可以显著减少 Compaction 的开销,从而提升性能。 -基于此我们计划实施键值分离策略。具体而言,键将保持原有的排序方式,而值将被独立存储。这样做可以在不影响查询性能的前提下,大幅降低 Compaction 过程中的数据迁移量,进而减少不必要的磁盘 I/O ,提升系统的合并效率。 - - - - - -## 2.功能设计 - -Andy Pavlo在15445课程中说,完成一个项目,应先写出能够完成正确性要求的代码,再在此基础上提升性能,避免不成熟的优化方式。 - -因此,我们的项目流程将保持每周推进代码进度,在完成目标要求的代码的基础上,不断迭代优化性能。 - -![image-20241125122706607](设计文档.assets/image-20241125122706607.png) - -### 2.1.字段设计 - -- **设计目标**: - - 将 LevelDB 中的 `value` 组织成字段数组,每个数组元素对应一个字段(字段名:字段值)。 - - 字段会被序列化为字符串,然后插入LevelDB。 - - 这些字段可以通过解析字符串得到,字段名与字段值都是字符串类型。 - - 允许任意调整字段。 - - 实现通过字段值查询对应的 `key`。 -- **实现思路**: - -函数 `Put_with_fields` 负责插入含字段的数据。原字段数据经过序列化函数 `SerializeValue` 处理后,函数 `Put_with_fields` 调用 `Put` 将序列化后的字段插入 leveldb。 - -函数 `Get_with_fields` 负责获得含字段的数据。使用 `Get` 从 leveldb 中获取 `key` 和序列化后的 `value`,调用 `ParseValue` 可以将字段反序列化。 - -函数 `Get_keys_by_field` 使用iterator遍历数据库中的所有键值对,解析每个 `Value`,提取字段数组 `FieldArray`。检查字段数组中是否存在目标字段,如果匹配,则记录其对应的 `Key`。将所有匹配 `key` 汇总到 `keys` 中返回。 - -**初步实现**(第一周 已完成):在 leveldb 内部实现以上功能。内部实现会导致读取时无法区分多字段类型和原生 kv 对,扩展性不足。 - -**后续改进_1**(第二周 已完成):为了解决无法区分多字段类型和原生 kv 对的问题,将以上函数功能实现在用户层级,使 leveldb 内部对多字段类型无感知。 - -**后续改进_2**(第三周 已完成):在完成其余功能过程中,发现leveldb在coding类中有一些编码实现,因此也做了将字段设计放入coding类实现的版本。 - - - -### 2.2.KV分离 - -#### 设计思路 - -- **KV 分离设计** - - a. 将LevelDB的key-value存储结构进行扩展,分离存储key和value。(当Value长度不大时不进行分离) - - b. 将Key和指向Value的元数据存储在LSM-tree中。 - - c.将Value和其余需要额外存储在ValueLog的元数据存储于ValueLog文件。通过LSM-tree中的元数据可查询到对应的Value所处的ValueLog。 - -- **读取操作。** - - KV分离后依然支持点查询与范围查询操作。 - -- **Value log的管理** - - a.通过GC操作释放Value log中的无效数据。(对于我们的不同实现版本,GC操作有所不同) - - b.GC能把旧Value log中没有失效的数据写入新的Value log,并在有必要时更新LSM-tree。 - - c.GC过程不能过度阻塞用户的Put和Get操作。(过度阻塞则和原本消耗大量资源的Compaction无区别,没有得到期望的性能提升) - -- **确保操作的原子性** - -​ a.Write时先写ValueLog再写WAL,从而保证操作的原子性。 - -​ b.对不同版本的GC实现,均需保证GC操作过程中发生dump后,恢复数据仍能保证正确性。 - -#### 实现思路 - -#### 初步实现:Single ValueLog(第一周 已完成) - -使用单一Value Log简单的实现KV分离,该实现较为简单,仅需在Put/Get函数内部进行简单修改,但在大数据量场景下性能极差。 - -##### 优点:实现简单,合并时开销小 - -##### 缺点:大数据量下性能极差,不能作为最终方案。 - - - -#### 第二种实现:ValueLog per table(第二周 已完成) - -对每个SSTable和MemTable建立一个Value Log。该实现相比于初步实现更加复杂,需要在合并时查询所有相关Value Log,并建立新Value Log。此外还要考虑在合并结束后将废弃的Value Log异步删除。 - -**Trick.为什么要在Put到MemTable时就放入Value Log而非dump至SS Table时才放入Value Log?** - -原因:将写ValueLog推迟至SSTable并没有减少Put时写入磁盘的总数据量(写ValueLog:ValueLog中写Value,WAl中写Key和Value元数据;不写ValueLog:WAL中写Key和Value),优点是将两次无法并行的写文件操作变为一次写文件操作。但该方法有一个缺陷,即leveldb原生的管理数据的方式是MemTable和SSTable大小相等。而经过这样改变后,MemTable在dump成SSTable后其大小会突然减少(Value全部转移至ValueLog),导致一个SSTable中存储的数据量过少。而原本valuelog的优势(一个SSTable可以放更多键值对使得table cache命中率变高)也将不存在了。我们将两个做法都进行了实现,通过对比性能发现后者不如前者,因此选择保留前者设计。 - -##### 优点:随合并自动GC,无需考虑GC。 - -##### 缺点:合并时开销未能减小。 - -#### 第三种实现:Fixsize ValueLog(第三周 已完成) - -**该实现参考TiTanDB实现** - -使用相对固定大小的Value Log,例如每个Value Log大小约为16MB。新添加的键值对依次将值与其长度(其实还有键和键长度)存入最新Value Log,当Value Log大小满了之后就创建新Value Log。需要设计一种异步的GC方法,该方法不会对Compaction,Get或Put造成明显的延迟。 - -##### 优点:合并时开销小。 - -##### 缺点:需要设计一种优秀的异步GC方式。 - -## 3. 数据结构设计 - -### KV分离后 Value 结构设计 - -一个Value,开头是使用Varint64存储的FieldNum,表示有FieldNum个Field组成。然后是使用Varint64存储的Field X name size,表示该field的字段名长度,然后是字段名,然后是使用Varint64存储的Field X Value size,表示该field的值长度,然后是值。 - -![leveldb_values](设计文档.assets/leveldb_values.png) - -### ValueLog结构设计 - -#### Single ValueLog设计 - -使用一个Value Log文件的设计中,我们只需记录Value在Value Log中对应的偏移量和Value长度即可。 - -Value Log中只记录Value值,无需记录元信息。 - -![ValueLog](设计文档.assets/ValueLog-17325302026895.png) - -#### ValueLog per table设计 - -Value设计为:1字节标志位+Varint64文件ID+Varint64偏移量+Varint64长度。 - -在存储时根据Value大小是否较大选择进行KV分离。若分离则标志位为true,否则标志位为false。 - -日志文件中仍然只需记录Value值即可,无需记录元信息。 - -![ValueLog](设计文档.assets/ValueLog-17325304026617.png) - -#### Fixsize ValueLog设计(第一版,有漏洞) - - - -![ValueLog](设计文档.assets/ValueLog-17325310409799.png) - -这一版设计有些复杂,但存在漏洞。我们的最终设计并非如此。 - -在Value开头使用一字节标志位表示是否KV分离。 - -如果KV分离,则接下来是Varint64的文件ID和Varint64的文件内offset。 - -在ValueLog中,在开头记录当前会索引到该Value Log的键值对数量Using count。如果Using count==0,则表示该ValueLog不被任何键值对使用,可以删除。 - -**Using count在Value Log添加键值对时进行+1**。 - -**Using count**在**其中任意键值对被合并**,**并且 该键值对由于合并时被更加新的键值对覆盖 或者 该键值对的True using Sign=False**时,进行**-1**。 - -在一个Value通过SSTable索引到Value Log后,其索引到的开头是一个**Value True Using Sign**。该标志位同样是一字节,标志了当前该Value是否是真正的Value。 - -**若标志位为True表示是真正的Value,那么标志位后是Varint64的Value长度+Value本身。** - -**若标志位为False表示不是真正的Value,那么标志位后是Varint64的下一个可能存在有真实对应Value的Value Log文件ID和Varint64的在下一个Value Log文件中的offset。** - -**Value True Using Sign发生变化有两种情况:** - -**1** - -一个键值对由于合并时被更加新的键值对覆盖时,不仅将Using count进行-1,同时也将其Value True Using Sign设置为False。 - -**2** - -在键值对加入到Value Log时,其Value True Using Sign设置为True。 - -当后台异步GC过程检测到一个Value Log的Using count较小时,将对其中Value True Using Sign仍为True的Value做以下处理: - - - -1.将Value对应的数据(设为True的标志位,Value len和Value本身)像新数据一样写入最新的Value Log中。 - -2.将原Value True Using Sign置为False - -3.将原Value Log中标志位后的数据修改为新写入的Value Log的ID和数据所处的Offset。 - -(保证原Value大小大于16,以防Varint64(Value len)+Value len [!CAUTION] -> -> **!注意!在实现过程中发现性能缺陷** - -当合并时由于需要扫描合并的SSTable,要对其中每个Value做读ValueLog操作(因为可能可以更新Value指向的ValueLog),导致一次合并会涉及很多次的ValueLog文件读写,性能过于低效,因此想到了新的操作方法。 - - - -#### fixsize_valuelog实际设计 - -![d85456f5f58abb55d9e83f3c020f0b7](设计文档.assets/d85456f5f58abb55d9e83f3c020f0b7.png) - -#### 新的`valuelog` 文件的组织方式: - -`valuelog` 文件存储了 **键值对(KV)** 数据,每条记录按照以下格式组织: - -1. **键的长度**(`key_len`):`uint64_t`,标识键的字节长度。 -2. **键**(`key`):实际的键数据,长度为 `key_len`。 -3. **值的长度**(`value_len`):`uint64_t`,标识值的字节长度。 -4. **值**(`value`):实际的值数据,长度为 `value_len`。 - -在sstable中key对应的value位置存储了对应valuelog文件的id和在文件中的offset。 - -**注1:在valueLog中重复存key会导致写方法,但是是有必要的,详见GC过程** - -**注2:将Key放在Value后是一个潜在的优化,可以加速Get** - -#### gc过程: - -垃圾回收的核心思想是扫描所有非最新的 `valuelog` 文件(最新的ValueLog还会被插入新的数据,因此不对其进行垃圾回收),检查文件中的记录是否有效。如果记录的键值对已失效(比如键在 `sstable` 中不存在或元数据不匹配),则该记录会被忽略;如果记录的键值对是该键对应最新的键值对,则将该键值对重新Put进MemTable。在对整个旧的`ValueLog`做完上述操作后删除整个旧的的 `valuelog` 文件。 - -#### 详细过程 - -1. **扫描数据库目录**: -- 遍历 `valuelog` 文件。 -2. **处理每个 `valuelog` 文件**: - - - 打开文件,逐条读取记录。 -3. **读取每条记录**: - - 按文件结构读取 `key_len`、`key`、`value_len`、`value`。 - - 检查 sstable是否包含该键: - - 如果键不存在,忽略此条记录。 - - 如果键存在,验证元数据是否有效(包括 `valuelog_id` 和 `offset`)。 - - 有效的键值对会被重新 put 进入数据库(在此操作中自然的被插入到最新的ValueLog中),SSTable中无效的键值对则会在compaction过程中被自然的回收。 -4. **清理无效文件**: -- 对ValueLog扫描完毕后,删除该ValueLog。 - -#### 验证元数据/重新Put的正确性保证 - -在发现当前键值对有效后会将该键值对重新调用Put插入数据库,然而在此过程中如果有用户新插入了对应的Key的键值对,则有概率覆盖用户插入的键值对,这是错误的。因此我们要保证在此过程中不会新插入新的该Key对应的键值对。 - -我们使用了三个新的操作来实现该操作: - -1.一个新的全局互斥锁GC_mutex - -2.一个新的全局变量inserting_key,使用GC_mutex管理的conditional variable进行访问保护 - -3.更改write逻辑,可以访问当前writer队列的末尾write请求,并在其做完时获得其对应的conditional variable的提醒 - -下图是实现整个操作的模拟,左侧是图标,Lock和UnLock都指对GC_mutex的操作 - -![lock_for_GC](设计文档.assets/lock_for_GC.png) - -## 4. 接口/函数设计 - -#### 4. 1Value多字段设计 - -##### **4.1.1 数据序列化与反序列化** - -**序列化字段数组为字符串值** - -```cpp -std::string SerializeValue(const FieldArray& fields); -``` - -- **输入**:字段数组 `fields`。 - -- **输出**:序列化后的字符串。 - - - -**反序列化字符串值为字段数组** - -```c++ -void DeserializeValue(const std::string& value_str, FieldArray* res); -``` - -- **输入**:序列化字符串 `value_str`。 -- **输出**:字段数组 `res`。 - - - -##### **4.1.2 数据查询接口** - -**按字段查找键** - -```c++ -Status DB::Get_keys_by_field(const ReadOptions& options, const Field field, std::vector* keys); -``` - -- **输入**: - - 读取选项 `options`。 - - 字段值 `field`。 -- **输出**: - - 操作状态 `Status`。 - - 符合条件的键列表 `keys`。 - - - -##### **4.1.3 判断文件是否为 `valuelog` 文件** - -**判断给定文件是否为 `.valuelog` 格式的文件。** - -```c++ -bool IsValueLogFile(const std::string& filename) ; -``` - -**输入**: - -- 文件名 `filename`,可以是完整路径或纯文件名。 - -**输出**: - -- 布尔值 `true`:文件是 `valuelog` 文件。 -- 布尔值 `false`:文件不是 `valuelog` 文件。 - - - -##### **4.1.4 解析 `sstable` 中的Value元信息(用于Fixsize ValueLog)** - -**解析 `sstable` 中存储的值,提取 `valuelog_id` 和 `offset` 信息。** - -```c++ -void ParseStoredValue(const std::string& stored_value, uint64_t& valuelog_id, uint64_t& offset); -``` - -- **输入**: - - 存储值 `stored_value`,格式为 `"valuelog_id|offset"`。 -- **输出**: - - `valuelog_id`:解析出的 ValueLog 文件 ID。 - - `offset`:解析出的记录偏移量。 - - - -##### **4.1.5 获取 `ValueLog` 文件 ID** - -**从文件名中提取 ValueLog 文件的 ID(假设文件名格式为 `number.valuelog`)。** - -``` -uint64_t GetValueLogID(const std::string& valuelog_name); -``` - -- **输入**: - - 文件名 `valuelog_name`,可以是完整路径或仅文件名,格式需符合 `number.valuelog`。 -- **输出**: - - `uint64_t` 类型,返回提取的文件 ID。 - - - -#### 4.2 Value Log设计 - -##### **4.2.1 WriteValueLog** - -将一堆键值对的值顺序写入Value Log,用于writebatch写入数据库,以及Value Log GC的时候(valuelog per table)。两者都会对多个键值对同时操作,因此设计为批处理。 - -该函数被mutex_保护,保证不会多线程调用。 - -```cpp -std::vector> WriteValueLog(std::vector value); -``` - -- **输入**:一个Slice vector,表示要写入Value Log的Value们。 - -- **输出**:一个std::pair vector,每个pair中:第一个uint64_t是Value Log文件ID,第二个uint64_t是处在Value Log中的偏移量。 - -> [!NOTE] -> -> 在第三版设计中,valuelog中会存储key,所以还需要传入key - - - -##### **4.2.2 ReadValueLog** - -通过Value Log读取目标键值对的值。 - -```cpp -Status ReadValueLog(uint64_t file_id, uint64_t offset,Slice* value); -``` - -- **输入**:第一个uint64_t是Value Log文件ID,第二个uint64_t是处在Value Log中的偏移量,第三个是指向要传回的value的指针。 -- **输出**:一个Status,表示是否成功传回对应Value。 - -> [!NOTE] -> -> 在第三版设计中,valuelog中会存储key,所以还会多一个返回参数Key - -##### **4.2.3 测试GC** - -调用`MaybeScheduleGarbageCollect()`来安排一个后台线程执行垃圾回收任务。它会等待所有已安排的垃圾回收任务完成,这通过循环检查`background_garbage_collect_scheduled_`标志,并在该标志为真时等待`background_gc_finished_signal_`信号来实现。 - -```cpp -void DBImpl::manual_GarbageCollect() -``` - - - -##### **4.2.4 调用线程进行GC** - -启动一个新的后台线程执行`BGWorkGC`方法。使用互斥锁gc_mutex_确保同时最多只有一个GC后台线程会进行。 - -```cpp -void DBImpl::MaybeScheduleGarbageCollect() -``` - - - -##### **4.2.5 调用负责GC函数** - -调用`BackgroundGarbageCollect()`进行实际的垃圾回收工作。 - -```cpp -void DBImpl::BGWorkGC(void* db) -``` - - - -##### **4.2.6 后台GC函数** - -负责执行后台垃圾回收任务(即调用GarbageCollect)。确保在完成任务后通知等待的线程。 - -(当前等待的函数仅两个:Test与DBImpl的析构函数) - -```cpp -void DBImpl::BackgroundGarbageCollect() -``` - - - -##### **4.2.7 后台GC函数** - -垃圾回收的核心实现。在目前的设计下,它遍历数据库目录中的所有valuelog文件,并尝试回收不再需要的数据。 - -```cpp -void DBImpl::GarbageCollect() -``` - - - -##### 4.2.8 改动TableMeta(用于valuelog per table) - -对TableMeta新增一个uint64_t的属性valuelog_id,表示该SSTable所对应的valuelog id。如果该SSTable内所有Value长度均小于ValueLog要求长度,则该属性值为0。 - -这个设计对versionEdit以及compact的各个函数均有影响。 - - - -##### 4.2.9 class ValueLogInserter : public WriteBatch::Handler{} - -用于将一个WriteBatch里的所有键值对插入到ValueLog里,并生成将Value指向ValueLog的新WriteBatch。 - - - -##### 4.2.10 Status WriteBatchInternal::ConverToValueLog(WriteBatch* b,DB* db_) - -使用ValueLogInserter将b中的键值对更新至ValueLog,并将更新后的WriteBatch放回b。 - -该函数用于Write中的队首线程build batch后且写WAL日志/写Memtable前。 - - - ------- - - - -## 5. 功能测试 - -### 5.1**单元测试(测试用例)**: - -#### 依据我们的设计,每周的工作内容完成后,都将对当前完成的功能进行正确性检验。以下以第一周我们完成的功能为例: - -#### 第一周(已完成) - -**字段数组的存储与读取:** - -验证了 `Put_with_fields` 和 `Get_with_fields` 的正确性,确保字段数组可以正确序列化存储并反序列化读取。 - -**基于字段的键查询:** - -验证了 `Get_keys_by_field` 的逻辑,确保能够根据字段值查找所有匹配的键。 - -**Key Value分离:** - -并未额外设计,通过上两个功能的正确运行能够证明Key Value分离的初步实现大体是正确的。 - - - -#### 第二、三周(已完成) - -**对多字段Value实现更严谨的测试** - -针对范围查询进行更严格的测试(因为范围查询难于单点查询),进行了乱序插入后测试范围查询能否查询到分布在lsm-tree各处且key完全随机的目标value。 - -``` -std::vector keys; - std::vector target_keys; - for(int i=0;i<10000;i++){ - std::string key=std::to_string(rand()%10000)+"_"+std::to_string(i);//random for generate nonincreasing keys - FieldArray fields={ - {"name", key}, - {"address", std::to_string(rand()%7)}, - {"phone", std::to_string(rand()%114514)} - }; - if(rand()%5==0){ - fields[0].second="special_key"; - target_keys.push_back(key); - } - keys.push_back(key); - db->Put(WriteOptions(),key,SerializeValue(fields)); - } - std::sort(target_keys.begin(),target_keys.end()); - std::vector key_res; - Get_keys_by_field(db,ReadOptions(),{"name", "special_key"},&key_res); - ASSERT_TRUE(CompareKey(key_res, target_keys)); -``` - -2.向表内插入大量value较大的键值对后检验正确性(该测试被leveldb原benchmark完美取代。使用leveldb原benchmark获得了正确性保障) - -对于for(int j=0;j<5000;j++)这一段,我们也尝试过将5000改成rand()%1000,同样通过了测试。 - -``` -std::vector values; - for(int i=0;i<500000;i++){ - std::string key=std::to_string(i); - std::string value; - for(int j=0;j<5000;j++){ - value+=std::to_string(i); - } - values.push_back(value); - db->Put(writeOptions,key,value); - } - for(int i=0;i<500000;i++){ - std::string key=std::to_string(i); - std::string value; - Status s=db->Get(readOptions,key,&value); - assert(s.ok()); - if(values[i]!=value){ - std::cout< values; - for(int i=0;i<5000;i++){ - std::string key=std::to_string(i); - std::string value; - for(int j=0;j<1000;j++){ - value+=std::to_string(i); - } - values.push_back(value); - db->Put(writeOptions,key,value); - } - std::cout<<"start gc"<manual_GarbageCollect(); - std::cout<<"finish gc"<Get(readOptions,key,&value); - assert(s.ok()); - if(values[i]!=value){ - std::cout<>。 + +- 以一种可以包含所有字段总长度以及每个字段各自的长度以及数据的方式对其进行序列化与反序列化。 + +函数 `SerializeValue` 负责将`vector>`形式的字段数组序列化为单个字符串。 + +函数 `DeserializeValue` 负责反序列化含字段的数据。如果反序列化失败则返回异常Status。 + +函数 `Get_keys_by_field` 使用iterator遍历数据库中的所有键值对,使用`DeserializeValue`解析每个 `Value`,如果成功提取字段数组 `FieldArray`则检查字段数组中是否存在目标字段,如果匹配,则记录其对应的 `Key`。将所有匹配 `key` 汇总到 `keys` 中返回。 + + + +### 2.2.KV分离 + +#### 设计思路 + +- **KV 分离设计** + + - 将LevelDB的key-value存储结构进行扩展,分离存储key和value。(当Value长度不大时不进行分离) + + - 将Key和Value的元数据存储在LSM-tree中。 + + - 将Value和其余需要额外存储在ValueLog的元数据存储于ValueLog文件。通过LSM-tree中Value的元数据可查询到对应的Value所处的ValueLog。 + +- **读取操作。** + + - 实现KV分离后仍支持原先点查询与范围查询操作。 + - 实现额外的无序范围查询以减少由于KV分离所导致的范围查询性能损失。 + +- **Value log的管理** + + - 数据在进入MemTable与Wal日志前先进入ValueLog。 + - 用户可以在Options中启用ValueLog CRC选项,使ValueLog文件遭到损坏时数据库仍能正常运行。 + - 通过GC操作释放Value log中的无效数据。GC能将旧Value log中没有失效的数据写入新的Value log,并更新LSM-tree。 + - GC过程不能过度阻塞用户的Put和Get操作。(过度阻塞则和原本消耗大量资源的Compaction无区别,没有得到期望的性能提升) + - GC操作仅对无效数据达到一定量级的ValueLog进行。 + - 使用常驻内存的ValueLog元数据表来维护ValueLog中有效数据占比的信息。 + +- **操作正确性** + + - Write时先写ValueLog再写WAL,从而保证操作的原子性。 + - GC操作需使用某种算法设计来保证GC操作与其他Put操作和Get操作并发的正确性。 + +#### 初步实现:Single ValueLog + +使用单一Value Log简单的实现KV分离,该实现较为简单,仅需在Put/Get函数内部进行简单修改,但在大数据量场景下性能极差。 + +##### 优点:实现简单,合并时开销小 + +##### 缺点:大数据量下性能极差,不能作为最终方案。 + + + +#### 优化实现:ValueLog per table + +对每个SSTable和MemTable建立一个Value Log。该实现相比于初步实现更加复杂,需要在合并时查询所有相关Value Log,并建立新Value Log。此外还要考虑在合并结束后将废弃的Value Log异步删除。 + +**Trick.为什么要在Put到MemTable时就放入Value Log而非dump至SS Table时才放入Value Log?** + +原因:将写ValueLog推迟至SSTable并没有减少Put时写入磁盘的总数据量(写ValueLog:ValueLog中写Value,WAl中写Key和Value元数据;不写ValueLog:WAL中写Key和Value),优点是将两次无法并行的写文件操作变为一次写文件操作。但该方法有一个缺陷,即leveldb原生的管理数据的方式是MemTable和SSTable大小相等。而经过这样改变后,MemTable在dump成SSTable后其大小会突然减少(Value全部转移至ValueLog),导致一个SSTable中存储的数据量过少。而原本valuelog的优势(一个SSTable可以放更多键值对使得table cache命中率变高)也将不存在了。我们将两个做法都进行了实现,通过对比性能发现后者不如前者,因此选择保留前者设计。 + +##### 优点:随合并自动GC,无需考虑GC。 + +##### 缺点:合并时开销未能减小。 + + + +#### 最终实现:Fixsize ValueLog + +**该实现参考TiTanDB实现** + +使用相对固定大小的Value Log,默认每个Value Log大小约为64MB。新添加的键值对依次将值与其长度(其实还有键和键长度)存入最新Value Log,当Value Log大小满了之后就创建新Value Log。需要设计一种异步的GC方法,该方法不会对Compaction,Get或Put造成明显的延迟。 + +##### 优点:合并时开销小。 + +##### 缺点:需要使用异步GC对ValueLog进行垃圾回收,会造成一定的写放大。 + +## 3. 实现设计 + +### 序列化 Value 结构设计 + +开头是使用Varint64存储的FieldNum,表示有FieldNum个Field组成。然后是使用Varint64存储的Field X name size,表示该field的字段名长度,然后是字段名,然后是使用Varint64存储的Field X Value size,表示该field的值长度,然后是值。 + +![leveldb_values](设计文档.assets/leveldb_values.png) + +### ValueLog结构设计 + +#### Single ValueLog设计 + +使用一个Value Log文件的设计中,我们只需记录Value在Value Log中对应的偏移量和Value长度即可。 + +Value Log中只记录Value值,无需记录元信息。 + +![ValueLog](设计文档.assets/ValueLog-17325302026895.png) + +#### ValueLog per table设计 + +Value设计为:1字节标志位+Varint64文件ID+Varint64偏移量+Varint64长度。 + +在存储时根据Value大小是否较大选择进行KV分离。若分离则标志位为true,否则标志位为false。 + +日志文件中仍然只需记录Value值即可,无需记录元信息。 + +![ValueLog](设计文档.assets/ValueLog-17325304026617.png) + +#### Fixsize ValueLog设计(第一版,有漏洞) + + + +![ValueLog](设计文档.assets/ValueLog-17325310409799.png) + +这一版设计有些复杂,但存在漏洞。我们的最终设计并非如此。 + +在Value开头使用一字节标志位表示是否KV分离。 + +如果KV分离,则接下来是Varint64的文件ID和Varint64的文件内offset。 + +在ValueLog中,在开头记录当前会索引到该Value Log的键值对数量Using count。如果Using count==0,则表示该ValueLog不被任何键值对使用,可以删除。 + +**Using count在Value Log添加键值对时进行+1**。 + +**Using count**在**其中任意键值对被合并**,**并且 该键值对由于合并时被更加新的键值对覆盖 或者 该键值对的True using Sign=False**时,进行**-1**。 + +在一个Value通过SSTable索引到Value Log后,其索引到的开头是一个**Value True Using Sign**。该标志位同样是一字节,标志了当前该Value是否是真正的Value。 + +**若标志位为True表示是真正的Value,那么标志位后是Varint64的Value长度+Value本身。** + +**若标志位为False表示不是真正的Value,那么标志位后是Varint64的下一个可能存在有真实对应Value的Value Log文件ID和Varint64的在下一个Value Log文件中的offset。** + +**Value True Using Sign发生变化有两种情况:** + +**1** + +一个键值对由于合并时被更加新的键值对覆盖时,不仅将Using count进行-1,同时也将其Value True Using Sign设置为False。 + +**2** + +在键值对加入到Value Log时,其Value True Using Sign设置为True。 + +当后台异步GC过程检测到一个Value Log的Using count较小时,将对其中Value True Using Sign仍为True的Value做以下处理: + + + +1.将Value对应的数据(设为True的标志位,Value len和Value本身)像新数据一样写入最新的Value Log中。 + +2.将原Value True Using Sign置为False + +3.将原Value Log中标志位后的数据修改为新写入的Value Log的ID和数据所处的Offset。 + +(保证原Value大小大于16,以防Varint64(Value len)+Value len [!CAUTION] +> +> **!注意!在实现过程中发现性能缺陷** + +当合并时由于需要扫描合并的SSTable,要对其中每个Value做读ValueLog操作(因为可能可以更新Value指向的ValueLog),导致一次合并会涉及很多次的ValueLog文件读写,性能过于低效,因此想到了新的操作方法。 + + + +#### fixsize_valuelog实际设计 + +![d85456f5f58abb55d9e83f3c020f0b7](设计文档.assets/d85456f5f58abb55d9e83f3c020f0b7.png) + +#### 最终`valuelog` 文件的组织方式: + +`valuelog` 文件存储了 **键值对(KV)** 数据,每条记录按照以下格式组织: + +1. **值的长度**(`value_len`):`uint64_t`,标识值的字节长度。 +2. **值**(`value`):实际的值数据,长度为 `value_len`。 +3. **键的长度**(`key_len`):`uint64_t`,标识键的字节长度。 +4. **键**(`key`):实际的键数据,长度为 `key_len`。 +5. **CRC校验码**:如果启用了valuelog_crc,那么在键后会加上一个uin32_t(4字节)的CRC校验码。该校验码通过对value和key进行双重哈希得到。 + +在sstable中key对应的value位置存储了对应valuelog文件的id和在文件中的offset。 + +**trick1:在valueLog中重复存key会导致写方法,但是是有必要的,详见GC过程** + +**trick2:将Key放在Value后,使得不启用CRC校验码时可以无需读取key_len和key,加速read** + +**trick3:CRC校验码无需校验长度,因为如果长度不对,那么解析出来的值/键/CRC校验码位置也都会出错** + +**trick4:CRC校验码使用Extend进行两重哈希,因为如果要对key和value一起哈希,那么每次校验需要额外开辟一个给key和value一起使用的内存空间,往该内存空间填充数据的过程如下:文件指针获取value长度,右移,获取key长度,左移,获取value,右移,获取key;性能不如单独开空间的连续右移读取操作** + +### gc过程: + +垃圾回收的核心思想是扫描所有非最新的 `valuelog` 文件(最新的ValueLog还会被插入新的数据,因此不对其进行垃圾回收),检查文件中的记录是否有效。如果记录的键值对已失效(比如键在 `sstable` 中不存在或元数据不匹配),则该记录会被忽略;如果记录的键值对是该键对应最新的键值对,则将该键值对重新Put进MemTable。在对整个旧的`ValueLog`做完上述操作后删除整个旧的的 `valuelog` 文件。 + +#### 详细过程 + +1. **扫描数据库目录**: +- 遍历所有未被GC处理的`valuelog` 文件。 +- 使用内存表`valuelog_origin`和`valuelog_usage`判定每个ValueLog是否空洞率达到要求。如果达到要求则进入第二步。(该操作要持有mutex_锁) +2. **依次处理所有通过第一步的 `valuelog` 文件**: + - 打开文件,逐条读取记录。 + - 如果打开文件失败,则忽略该ValueLog。否则进入第三步。 +3. **读取每条记录**: + - 按文件结构读取 `value_len`、`value`、`key_len`、`key`。 + - 检查 sstable是否包含该键: + - 如果键不存在,忽略此条记录。 + - 如果键存在,验证元数据是否有效(包括 `valuelog_id` 和 `offset`)。 + - 若元数据匹配不上,同样忽略此条记录。 + - 有效的键值对会被重新 put 进入数据库(在此操作中自然的被插入到最新的ValueLog中),SSTable中无效的键值对则会在compaction过程中被自然的回收。 + - 如果一条记录异常(读文件失败,或者CRC校验失败),则跳过整个ValueLog(已经GC的部分不影响)。该ValueLog不会进入后面的**延迟删除**环节。 +4. **延迟清理GC完毕的ValueLog文件**: +- 对ValueLog扫描完毕后,**延迟删除(Trick2)**该ValueLog。 + +#### Trick1:验证元数据/重新Put的正确性保证 + +在发现当前键值对有效后会将该键值对重新调用Put插入数据库,然而在此过程中如果有用户新插入了对应的Key的键值对,则有概率覆盖用户插入的键值对,这是错误的。因此我们要保证在此过程中不会新插入新的该Key对应的键值对。 + +我们使用了三个新的操作来实现该操作: + +1.一个新的全局变量inserting_key,使用mutex_管理的conditional variable进行访问保护 + +2.更改write逻辑,在即将进入writer队列前,使用`ValueLogChecker`对要插入的writebatch进行遍历,确保writebatch中不存在与inserting_key相同的key。 + +下图是实现整个操作的模拟,左侧是图标,Lock和UnLock都指对GC_mutex的操作 + +![lock_for_GC](设计文档.assets/lock_for_GC.png) + +ValueLogChecker主要逻辑如下: + +lock_key\_=mutex_ + +cond_var\_=mutex_保护的条件变量 + +```c++ +//check if all data in the writebatch is different from the given key (the key gc is searching) +//if find a key was the same to target key, then all keys must be scaned again. +void CheckValid(){ + int len=keys.size(); + if(!len)return; + int l=0; + int r=len-1; + bool locked=false; + while(!lock_key_->empty()){ + locked=false; + while(!lock_key_->empty()&&keys[l]==*lock_key_){ + cond_var_->Wait(); + locked=true; + } + if(locked){ + r=l-1;//a full round to make sure no key = current lock_key + if(r<0)r=len-1; + } + else if(l==r)break; + if(++l==len)l=0; + } + } +``` + + + +#### Trick2:仅针对空洞率高的ValueLog进行GC,使用内存表维护ValueLog空洞率 + +使用内存表`ValueLogOrigin`和`ValueLogUsage`来维护每个ValueLog中总共记录的键值对数量,以及其中有效的键值对数量。 + +##### 维护内存表的三个地方: + +1.`writeValueLog`末尾:将本次插入的数量加入两张内存表中。 + +2.`doCompactionWork`抛弃重复key的旧数据时:如果它使用ValueLog,就解析出它对应的ValueLog ID,将对应的ValueLogUsage值-1。 + +3.`Recover`结束时:需要遍历所有恢复完成后有效的数据,将它们对应的ValueLog加入ValueLogOrigin和ValueLogUsage。这一步有些复杂,请看以下说明。 + +![recover_valuelog](设计文档.assets/recover_valuelog.png) + + + +#### Trick3:延迟删除valueLog文件 + +在leveldb中,同一时间正在进行的多个查询可能读到不同版本的数据。因此即使我们将一整个valuelog进行GC后,指向该valueLog的kv键值对仍然可能被一个较旧的长时间查询读到。因此,我们必须确保所有指向该valueLog的键值对都已经绝对不会读到,才可对该valueLog进行删除。并且延迟删除valueLog的设计本身并不会对系统带来磁盘空间上的更多负担,因此该实现是可以进行的。 + +那么重要的就是该如何实现该设计。 + +我们的设计是:利用versionset维护的version链表,当且仅当在valueLog m GC完成时活着的所有version都死亡时(从version链表中移除,触发析构函数),才会将该valueLog删除。 + +**我们在全局维护一个global map(在versionset类中),该map记录了所有GC完成,有待被删除的valueLog ID和它们对应的活跃version数量。** + +**我们在每个version中维护一个 valueLog set,表示该version移除时要在global map更新的valueLogID。** + +**一个version的析构函数在将一个valueLog的活跃version数量降至0时,会直接将该valueLog删除。** + +![later_delete](设计文档.assets/later_delete.png) + +### 范围读取优化 + +#### 实现1.prefetch + +实现了该方法,但效果不佳,且与valueLog cache冲突,现在不在最新的代码中。 + +**可以checkout旧commit来体验:9d8062e474e0a121bae0a167754cb869892ab124** + +**1.在创建internal iterator时,还伴随着一个隐式的prefetch iterator的创建** + +**2.在internal iterator进行seek(to first/to last/to particular key)操作后,prefetch iterator会做同样的seek,然后异步的进行next并将对value的解析交给worker线程们。worker线程将处理后的结果放入该Value对应偏移量的prefetch数组位置中。** + +**3.主线程使用bool原子变量对prefetch数组进行访问,如果已经有元素,那么直接加载该元素。** + +经过实验发现,我们的prefetch有一些缺陷。 + +**缺陷1.IO次数未减少** + +通过实验发现,在benchmark中扫描性能在最后情况仅提升一倍,并且prefetch已经高度命中(92%命中prefetch)。 + +经过perf火焰图测试发现,大多数时间仍用于系统调用read,IO仍然是瓶颈,因此未从本质上解决问题。 + +![prefetch](设计文档.assets/prefetch.svg) + +**缺陷2:prefetch数组需要存放所有Value,实践中不可行** + +由于以上两个缺陷,我们抛弃了Prefetch功能,转而实现了后面更高效的新方法。 + +#### 实现2.ValueLog Cache + +- 复用leveldb的LRU cache接口。 + +- 在Options中增加一个memory valuelog number作为LRU链表上限。该上限可以通过计算期望的valueLog使用内存容量除以valueLog大小得到。 + +- 每次读valuelog时,若该valuelog非最新valuelog,则通过LRU cache来读取。(不在cache中则会插入cache) + +- leveldb::RandomAccessFile在绝大多数状况使用mmap来访问文件。尝试过不使用mmap而固定使用将整个文件读入内存作为cache的方式,效果远不如mmap。 + +**优势** + +当ValueLogCache可以容纳数据库中所有ValueLog时,性能表现很棒,Scan可以达到原LevelDB Scan性能的2/3。(原4000MB/S,现在3000MB/S,不使用ValueLogCache则400MB/S) + +**劣势** + +当ValueLogCache无法容纳所有ValueLog时,性能提升水平将骤降,Scan性能仅从400MB/S提升至500MB/S。 + +我们保留了ValueLog Cache的设计。与此同时我们提出了一种新的Scan方式,使用这种新的Scan方式将解决以上遇到的大部分问题。 + +#### 实现3.Unordered Iterator + +**观察:**许多使用NoSQL scan功能的场景并不需求Iterator返回数据的有序性。并且使用Iterator时并不会用Prev和Next反复横跳,而是单向遍历。 + +基于观察,我们提出了Unordered Iterator。即与原Iterator功能相同但不保证返回数据有序性的Iterator。 + +该Iterator有以下特点: + +**1.性能比普通Iterator提升约3~4倍** + +**2.相比于ValueLog Cache内存需求大大减小,一般32MB即可满足需求** + +**3.不支持Prev,Seek,SeekToFirst, SeekToLast功能。在创建Iterator时需要给定Key的上下界lowerbound,upperbound** + +#### 工作流程 + +过程有些复杂,只能上代码了。 + +注:mode==0表示在使用iter遍历阶段 + +mode==1表示遍历valuelog_map阶段 + +mode==2表示读完所有数据,InValid了。 + +``` +void UnorderedIter::Next() { + if(mode==0){ + if(iter_->Valid()&&!keyGreaterThanRequire()) + { + if(first_one){ + first_one=false; + } + else iter_->Next(); + for(; + iter_->Valid()&&memory_usageNext()) + { + if(checkLongValue(iter_->value())){ + auto pr=GetAndParseValue(iter_->value()); + valuelog_map[pr.first].push_back(pr.second); + } + else{ + now_key=iter_->key(); + now_value=iter_->value(); + now_value.remove_prefix(1); + return; + } + } + } + + valuelog_map_iter=valuelog_map.begin(); + if(valuelog_map_iter!=valuelog_map.end()){ + + for(auto it=valuelog_map.begin();it!=valuelog_map.end();it++){ + std::sort(it->second.begin(),it->second.end()); + } + + std::string file_name_ = ValueLogFileName(db_name_, valuelog_map_iter->first); + assert(!current_file); + current_file=new std::ifstream(file_name_, std::ios::in | std::ios::binary); + vec_idx=0; + } + + } + + mode=1; + + if(valuelog_map_iter==valuelog_map.end()){ + mode=2; + return; + } + + int offset=valuelog_map_iter->second[vec_idx++]; + bool res=MyReadValuelog(offset); + + if(vec_idx>=valuelog_map_iter->second.size()){ + valuelog_map_iter++; + + if(valuelog_map_iter==valuelog_map.end()){ + valuelog_map.clear(); + memory_usage=0; + mode=0; + if(current_file){ + current_file->close(); + delete current_file; + current_file=nullptr; + } + } + else{ + std::string file_name_ = ValueLogFileName(db_name_, valuelog_map_iter->first); + if(current_file){ + current_file->close(); + delete current_file; + } + current_file=new std::ifstream(file_name_, std::ios::in | std::ios::binary); + vec_idx=0; + } + + } + + if(!res)Next();//ignore fault like other iter did + +} +``` + +大体思路: + +1.如果读取到的值是ValueLog中的,那么就将它的元数据(ValueLog ID+Offset)记录在map中,并暂时跳过它。 + +2.如果map中积攒的ID和Offset到达指定内存使用量大小,那么接下来知直到map清空为止,都会不使用iter.Next而是遍历map。 + +3.遍历map流程:遍历顺序伪代码大概为: + +``` +for(id: ValueLogIDs){ + file=OpenValueLog(id) + for(offset: ValueLogOffsets[id]){ + return file.read(offset) + } +} +``` + + + +## 4. 部分需注意的接口/函数设计 + +由于代码过多,仅说明几个有代表性的函数。 + +#### 4. 1Value多字段设计 + +##### **4.1.1 数据序列化与反序列化** + +**序列化字段数组为字符串值** + +```cpp +std::string SerializeValue(const FieldArray& fields); +``` + +- **输入**:字段数组 `fields`。 + +- **输出**:序列化后的字符串。 + + + +**反序列化字符串值为字段数组** + +```c++ +Status DeserializeValue(const std::string& value_str,FieldArray* res); +``` + +- **输入**: + - 序列化字符串 `value_str`。 + - 存放反序列化结果的`res`。 +- **输出**:反序列化状态,如果反序列化失败则返回异常状态。 + + + +##### **4.1.2 数据查询接口** + +**按字段查找键** + +```c++ +Status Get_keys_by_field(DB *db,const ReadOptions& options, const Field field,std::vector *keys); +``` + +- **输入**: + - 使用的数据库`db` + - 读取选项 `options` + - 字段值 `field` + - 用于存放满足条件的keys的数组`keys` +- **输出**: + - 操作状态 `Status`。 + +#### 4.2 Value Log设计 + +##### 4.2.1ValueLogInserter + +用于将writebatch中的数据插入valuelog,并生成新的writebatch。 + +**特点:为了提升性能以及保证正确性,将batch中所有要插入valuelog的数据排到最后使用writeValueLog进行统一插入。这样一个writeBatch只会写ValueLog一次** + +**注意,这个函数会对writebatch内部数据进行重排序!然而可以证明在我们使用它的地方(插入Memtable之前),重排序是不影响正确性的。这里的重排序等价于将writer队列里相邻的元素进行交换。** + +```c++ +class ValueLogInserter : public WriteBatch::Handler { + public: + WriteBatch writeBatch_; + DB* db_; + int use_valuelog_len_; + std::vector> kvs; + ValueLogInserter(DB* db,int use_valuelog_len){ + db_=db; + use_valuelog_len_=use_valuelog_len; + } + + void Put(const Slice& key, const Slice& value) override { + Slice new_value; + std::string buf; + if(value.size()WriteValueLog(kvs); + for(int i=0;iIterate(&inserter); + inserter.batch_insert(); + *b=inserter.writeBatch_; + return res; +} +``` + + + +##### **4.2.2 WriteValueLog** + +将一堆键值对的值顺序写入Value Log,用于writebatch写入数据库,在数据库正常运行时一般writebatch包含多个键值对,因此设计为批处理。 + +该函数被mutex_保护,保证不会多线程调用。 + +```cpp +std::vector> WriteValueLog(std::vector value); +``` + +- **输入**:一个Slice vector,表示要写入Value Log的Value们。 + +- **输出**:一个std::pair vector,每个pair中:第一个uint64_t是Value Log文件ID,第二个uint64_t是处在Value Log中的偏移量。 + +**函数内部只使用了一次文件写入操作,因此可以提升性能且避免多次写入导致的非原子操作。** + + + +##### **4.2.2 ReadValueLog** + +通过Value Log读取目标键值对的值。 + +```cpp +Status DBImpl::ReadValueLog(uint64_t file_id, uint64_t offset, + std::string* value, bool check_crc) +``` + +- **输入**:第一个uint64_t是Value Log文件ID,第二个uint64_t是处在Value Log中的偏移量,第三个是指向要传回的value的指针。第四个是是否检查数据正确性。 +- **输出**:一个Status,表示是否成功传回对应Value。 + +**函数内部使用ValueLog Cache提升随机读与Scan性能。UnorderIterator不使用该函数** + +##### **4.2.3 手动GC** + +调用`MaybeScheduleGarbageCollect()`来安排一个后台线程执行垃圾回收任务。它会等待所有已安排的垃圾回收任务完成,这通过循环检查`background_garbage_collect_scheduled_`标志,并在该标志为真时等待`background_gc_finished_signal_`信号来实现。 + +```cpp +void DBImpl::manual_GarbageCollect() { + MaybeScheduleGarbageCollect(); + while (background_garbage_collect_scheduled_) { + background_gc_finished_signal_.Wait(); + } + gc_mutex_.Unlock(); +} +``` + +##### **4.2.7 后台GC函数** + +垃圾回收的核心实现。在设计中已经对函数内容进行了详细的解释。 + +**该函数内部会获取mutex\_锁,请勿在持有mutex_的情况下执行** + +```cpp +void DBImpl::GarbageCollect() +``` + + + +##### 4.2.8 三种iterator + +分别对应:普通iterator,不解析Value的Iterator(即原版Iterator),Unordered Iterator + +``` + Iterator* NewIterator(const ReadOptions&) override; + Iterator* NewOriginalIterator(const ReadOptions&); + Iterator* NewUnorderedIterator(const ReadOptions&,const Slice &lower_key,const Slice &upper_key) override;//upper key not included +``` + + + +##### 4.2.9 新增可选项 + +Options新增: + +``` + //when a value's length>=this value, leveldb will use valuelog to improve performance + int use_valuelog_length=1000;//if -1,then don't use valuelog. If env=memEnv, then it must be set to -1. + + // maximum size of value_log file + int value_log_size=1<<26; + //cache for valuelog(may use lot of memory) + int mem_value_log_number=0;//0=don't use valuelog cache + //memory usage limit for a single unordered iterator + float GC_THRESHOLD=0.6; + //if valuelog_crc is on, every k-v pair using valuelog_crc will use crc in valuelog_crc + bool valuelog_crc=false; + //use GC for valuelog + bool valuelog_gc=true; +``` + +ReadOptions新增: + +``` + bool find_value_log_for_gc = false;//为true时会返回经过parseTrueValue的结果,为false则会返回未经处理的Value,即第一位为标志位的value。 + + int max_unorder_iter_memory_usage=64<<20; //每个unordered_iterator可使用的内存量 + + bool verify_checksums_for_valuelog=false; //是否启用CRC校验码来使得valueLog文件获得高可用性。 +``` + +WriteOptions新增: + +``` + bool valuelog_write=false;//用于GC自己的插入操作,用户不应该设置为true。为true时,valueLog不会对数据进行与inserting_key的比较 +``` + + + +------ + + + +## 5. 功能测试 + +### 5.1**单元测试(测试用例)**: + +我们写了共九个大测试。 + +分别为: + +- 数据全部处于valueLog 的iterator测试 +- 数据部分处于valueLog 的iterator测试 +- Unordered iterator测试 +- 多字段的 field测试 + - 包括混合value(一些value使用多字段,一些value不使用多字段而是原生value)的测试 +- get_keys_by_field测试 + - 包括混合value(一些value使用多字段,一些value不使用多字段而是原生value)的测试 +- valuelog 的通用common测试 +- valuelog文件损坏或丢失的corruption测试 + - 包含在遇到valueLog损毁的数据时,iterator对异常数据的两方向跳过测试。 +- 垃圾回收有效性的garbagecollect测试 +- valuelog元数据恢复的recover测试 + +### 5.2**性能测试(Benchmark)与结果**: + +我们使用两种benchMark进行测试,分别为LevelDB的原生benchMark以及YSCB-BenchMark。 + +对于原生benchMark,我们增加了对UnorderedIterator的性能测试。 + +对于YCSB-BenchMark,我们增加了对GetKeysByField的支持,使用我们的YCSB-BenchMark可以在任意负载中加上该查询。并且对范围查询我们使用了UnorderedIterator。 + +两者的数据来源均放在benchmark_data.md中。 + +#### LevelDB-Bencmark + +##### 测试条件: + +每个Value长度为5000 + +``` +LevelDB: version 1.23 +Date: Sat Jan 4 21:54:09 2025 +CPU: 24 * AMD Ryzen AI 9 HX 370 w/ Radeon 890M +CPUCache: 1024 KB +Keys: 16 bytes each +Values: 5000 bytes each (2500 bytes after compression) +Entries: 1000000 +RawSize: 4783.6 MB (estimated) +FileSize: 2399.4 MB (estimated) +``` + +#### 吞吐/延迟/写放大 + +##### 吞吐 + +单位为每秒完成的数据量(1/平均延迟) + +``` +fillseq : 106112.8 ops/s +fillsync : 56.15 ops/s +fillrandom : 610308.24 ops/s +overwrite : 228731.95 ops/s +readrandom : 169747.14 ops/s +readunorderseq : 800640.51 ops/s +readseq : 308546.43 ops/s +readreverse : 300751.88 ops/s +``` + +##### 延迟(平均延迟) + +``` +fillseq : 9.424 micros/op +fillsync : 1322.246 micros/op +fillrandom : 16.385 micros/op +overwrite : 43.718 micros/op +readrandom : 5.891 micros/op +readunorderseq : 1.249 micros/op +readseq : 3.241 micros/op +readreverse : 3.325 micros/op +``` + +##### 写放大 + +compaction写放大:一次db_bench中采样的多个compact报告 + +``` +Compacted 4@0 + 1@1 files => 6669290 bytes +Compacted 4@0 + 4@1 files => 10282912 bytes +Compacted 5@1 + 1@2 files => 11013480 bytes +Compacted 1@1 + 6@2 files => 11644355 bytes +Compacted 1@1 + 6@2 files => 12208492 bytes +Compacted 1@1 + 6@2 files => 12737041 bytes +Compacted 1@1 + 7@2 files => 13229722 bytes +Compacted 1@1 + 7@2 files => 13696506 bytes +Compacted 3@0 + 1@1 files => 5170431 bytes +Compacted 1@1 + 4@2 files => 8884824 bytes +Compacted 1@1 + 3@2 files => 4365997 bytes +``` + +gc写放大:一次db_bench中采样的多个gc报告 + +``` +gc valuelog 10 success and write 29198136 bytes +gc valuelog 13 success and write 26650008 bytes +gc valuelog 14 success and write 23499960 bytes +gc valuelog 15 success and write 20951832 bytes +gc valuelog 16 success and write 18965496 bytes +gc valuelog 17 success and write 16582896 bytes +gc valuelog 18 success and write 15213528 bytes +gc valuelog 21 success and write 13969560 bytes +gc valuelog 22 success and write 12545016 bytes +gc valuelog 23 success and write 11777568 bytes +gc valuelog 24 success and write 11602008 bytes +gc valuelog 25 success and write 11441496 bytes +gc valuelog 26 success and write 11762520 bytes +gc valuelog 29 success and write 11486640 bytes +gc valuelog 30 success and write 12208944 bytes +gc valuelog 31 success and write 11953128 bytes +gc valuelog 32 success and write 12555048 bytes +gc valuelog 33 success and write 12334344 bytes +``` + + + + + +#### 读性能对比 + +##### 随机读 + +![image-20250105205822843](设计文档.assets/image-20250105205822843.png) + +##### 原生范围查询 + +![image-20250105205545925](设计文档.assets/image-20250105205545925.png) + +#### unordered范围查询与有序查询对比 + +![image-20250105210350396](设计文档.assets/image-20250105210350396.png) + +#### 写性能对比 + +单位:(micros/op) + +顺序插入性能加速比为2。 + +随机插入加速比为11。 + +随机覆写加速比为5.18。 + +![image-20250105205248481](设计文档.assets/image-20250105205248481.png) + +#### 全表合并 + +性能加速比为100。(因为大量数据都不在LSM-Tree中) + +![image-20250105211313118](设计文档.assets/image-20250105211313118.png) + +#### YCSB-Benchmark + +**图例解析:Version_0代表原levelDB,Version_3代表我们最新的代码,后面的数字乘法表示value长度为x\*y, value使用x个长度为y的field组成。(组成value的函数为我们的SereializeValue,解析函数是我们的DesereializeValue)** + +##### WorkLoada(场景:**软件使用session存储记录最近的操作**) + +操作占比: + +``` +readproportion=0.5 +updateproportion=0.5 +``` + +性能对比: + +(Read操作在大数据长度下反而吞吐量降低的原因应该是因为同时处理的Write操作大大增多) + +![image-20250105214330108](设计文档.assets/image-20250105214330108.png) + +![image-20250105214340947](设计文档.assets/image-20250105214340947.png) + + + +##### WorkLoadb(场景:**照片标签;添加标签是一种更新操作,但大多数操作是读取**) + +操作占比: + +``` +readproportion=0.95 +updateproportion=0.05 +``` + +性能对比: + +![image-20250105214821722](设计文档.assets/image-20250105214821722.png) + +![image-20250105214830808](设计文档.assets/image-20250105214830808.png) + +##### WorkLoadc(场景:**用户资料缓存,其中资料在其他地方构建(例如,在 Hadoop 中)**) + +操作占比: + +``` +readproportion=1 +``` + +性能对比: + +![image-20250105214948117](设计文档.assets/image-20250105214948117.png) + +##### WorkLoadd(场景:用户状态更新:用户想要读取最新的数据) + +操作占比: + +``` +readproportion=0.95 +insertproportion=0.05 +``` + +性能对比: + +![image-20250105215019964](设计文档.assets/image-20250105215019964.png) + +![image-20250105215125243](设计文档.assets/image-20250105215125243.png) + +##### WorkLoade(场景:带线程的对话(或论坛帖子),其中每次扫描都是为了获取给定线程中的帖子(假设这些帖子是按线程 ID 聚集的)。) + +操作占比: + +可以看到每次扫描长度很短,因此unorderiter的大范围查询优势无法发挥。 + +``` +scanproportion=0.95 +insertproportion=0.05 +maxscanlength=100 +``` + +性能对比: + +![image-20250105215224964](设计文档.assets/image-20250105215224964.png) + +![image-20250105215237395](设计文档.assets/image-20250105215237395.png) + +##### WorkLoadf(场景:用户数据库,其中用户记录由用户读取和修改,或者用于记录用户活动) + +操作占比: + +``` +readproportion=0.5 +readmodifywriteproportion=0.5 +``` + +性能对比: + +![image-20250105215644951](设计文档.assets/image-20250105215644951.png) + +![image-20250105215719856](设计文档.assets/image-20250105215719856.png) + +#### GetKeys性能 + +##### WorkLoadGetKeys(场景:大部分随机读,小部分使用全表扫描) + +**仅测试version_3,因为原leveldb无该功能** + +操作占比: + +``` +readproportion=0.999 +getkeysbyfieldproportion=0.001 +``` + +性能对比: + +![image-20250105220322830](设计文档.assets/image-20250105220322830.png) + +![image-20250105220226773](设计文档.assets/image-20250105220226773.png) + +## 6. 正确性分析与性能分析 + +#### 1.内存管理分析 + +使用Valgrind对内存泄漏进行测试。通过Valgrind测试我们找到了许多代码导致内存泄漏的点。经过修正,最新的代码已经没有大的内存泄漏: + +```sh +==1245789== +==1245789== HEAP SUMMARY: +==1245789== in use at exit: 904 bytes in 6 blocks +==1245789== total heap usage: 5,307,916 allocs, 5,307,910 frees, 14,706,723,479 bytes allocated +==1245789== +==1245789== 8 bytes in 1 blocks are definitely lost in loss record 1 of 6 +==1245789== at 0x4849013: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==1245789== by 0x12E025: leveldb::DBImpl::MaybeScheduleGarbageCollect() (db_impl.cc:738) +==1245789== by 0x12DD53: leveldb::DBImpl::manual_GarbageCollect() (db_impl.cc:689) +==1245789== by 0x11F2CD: Test_garbage_collect_test_Test::TestBody() (test.cpp:585) +==1245789== by 0x1BA874: void testing::internal::HandleSehExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2653) +==1245789== by 0x1B326E: void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2689) +==1245789== by 0x18C767: testing::Test::Run() (gtest.cc:2728) +==1245789== by 0x18D1F7: testing::TestInfo::Run() (gtest.cc:2874) +==1245789== by 0x18DB95: testing::TestSuite::Run() (gtest.cc:3052) +==1245789== by 0x19E681: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:6020) +==1245789== by 0x1BB997: bool testing::internal::HandleSehExceptionsInMethodIfSupported(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2653) +==1245789== by 0x1B4514: bool testing::internal::HandleExceptionsInMethodIfSupported(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2689) +==1245789== +==1245789== 8 bytes in 1 blocks are definitely lost in loss record 2 of 6 +==1245789== at 0x4849013: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==1245789== by 0x12E025: leveldb::DBImpl::MaybeScheduleGarbageCollect() (db_impl.cc:738) +==1245789== by 0x12DD53: leveldb::DBImpl::manual_GarbageCollect() (db_impl.cc:689) +==1245789== by 0x1207DC: Test_recovery_test_Test::TestBody() (test.cpp:684) +==1245789== by 0x1BA874: void testing::internal::HandleSehExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2653) +==1245789== by 0x1B326E: void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2689) +==1245789== by 0x18C767: testing::Test::Run() (gtest.cc:2728) +==1245789== by 0x18D1F7: testing::TestInfo::Run() (gtest.cc:2874) +==1245789== by 0x18DB95: testing::TestSuite::Run() (gtest.cc:3052) +==1245789== by 0x19E681: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:6020) +==1245789== by 0x1BB997: bool testing::internal::HandleSehExceptionsInMethodIfSupported(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2653) +==1245789== by 0x1B4514: bool testing::internal::HandleExceptionsInMethodIfSupported(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2689) +==1245789== +==1245789== 288 bytes in 1 blocks are possibly lost in loss record 5 of 6 +==1245789== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==1245789== by 0x40147D9: calloc (rtld-malloc.h:44) +==1245789== by 0x40147D9: allocate_dtv (dl-tls.c:375) +==1245789== by 0x40147D9: _dl_allocate_tls (dl-tls.c:634) +==1245789== by 0x4C337B4: allocate_stack (allocatestack.c:430) +==1245789== by 0x4C337B4: pthread_create@@GLIBC_2.34 (pthread_create.c:647) +==1245789== by 0x4947328: std::thread::_M_start_thread(std::unique_ptr >, void (*)()) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30) +==1245789== by 0x170167: std::thread::thread(void (&)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*&&) (std_thread.h:143) +==1245789== by 0x16FE3D: leveldb::(anonymous namespace)::PosixEnv::Schedule(void (*)(void*), void*) (env_posix.cc:822) +==1245789== by 0x12DEE9: leveldb::DBImpl::MaybeScheduleCompaction() (db_impl.cc:718) +==1245789== by 0x131C65: leveldb::DBImpl::MakeRoomForWrite(bool) (db_impl.cc:1556) +==1245789== by 0x1310F8: leveldb::DBImpl::Write(leveldb::WriteOptions const&, leveldb::WriteBatch*) (db_impl.cc:1374) +==1245789== by 0x134D41: leveldb::DB::Put(leveldb::WriteOptions const&, leveldb::Slice const&, leveldb::Slice const&) (db_impl.cc:2072) +==1245789== by 0x130E87: leveldb::DBImpl::Put(leveldb::WriteOptions const&, leveldb::Slice const&, leveldb::Slice const&) (db_impl.cc:1343) +==1245789== by 0x117F82: Test_mix_valuelog_iterator_test_Test::TestBody() (test.cpp:169) +==1245789== +==1245789== LEAK SUMMARY: +==1245789== definitely lost: 16 bytes in 2 blocks +==1245789== indirectly lost: 0 bytes in 0 blocks +==1245789== possibly lost: 288 bytes in 1 blocks +==1245789== still reachable: 600 bytes in 3 blocks +==1245789== suppressed: 0 bytes in 0 blocks +==1245789== Reachable blocks (those to which a pointer was found) are not shown. +==1245789== To see them, rerun with: --leak-check=full --show-leak-kinds=all +==1245789== +==1245789== For lists of detected and suppressed errors, rerun with: -s +==1245789== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) +``` + +#### 2.正确性分析 + +我们的代码能够通过LevelDB原生的所有测试!以及我们新加的ValueLog测试。 + +在build目录下使用`./leveldb_tests`进行levelDB原生的所有测试 + +![image-20250105194658678](设计文档.assets/image-20250105194658678.png) + +在build目录下使用`./valuelogTest`进行我们的ValueLog测试 + +![image-20250105194455143](设计文档.assets/image-20250105194455143.png) + + + +#### 3.overwrite性能下降分析 + +在benchMark测试中发现,overwrite相比于fillRandom下降了较多的性能,因此使用perf进行了对比分析。 + +通过perf发现,原因是由于overwrite导致许多valueLog的空洞率下降,从而使得GC开始运行,进而使得Write操作需要在获取mutex_锁的情况下进行key的等值检查,有些耗费时间。 + +以下第一张图是fillRandom的火焰图,第二张图是overwrite的火焰图。 + +![write_1](设计文档.assets/write_1.svg) + +![write_2](设计文档.assets/write_2.svg) + +## 7. 分工和进度安排 + +| 功能 | 完成日期 | 分工 | +| --------------------------------------- | -------- | ------------- | +| 完成初步的多字段Value实现和KV分离实现 | 11月20日 | 谢瑞阳 | +| 完成设计文档 | 11月27日 | 徐翔宇&谢瑞阳 | +| 将多字段Value实现迁移至用户层级 | 11月27日 | 徐翔宇 | +| 完成第二版ValueLog | 11月28日 | 徐翔宇&谢瑞阳 | +| 完成第二版ValueLog的测试 | 11月28日 | 徐翔宇&谢瑞阳 | +| 完成第三版ValueLog | 12月4日 | 徐翔宇&谢瑞阳 | +| 完成第三版ValueLog的测试 | 12月4日 | 徐翔宇&谢瑞阳 | +| 完成BenchMark,对不同KV分离方案进行测试 | 12月8日 | 徐翔宇&谢瑞阳 | +| 学习TiTanDB的代码,学习优化方法 | 12月13日 | 徐翔宇&谢瑞阳 | +| ValueLog元数据管理初步实现 | 12月22日 | 徐翔宇 | +| ValueLog元数据管理改进实现,支持Recover | 12月26日 | 谢瑞阳 | +| Prefetch iterator实现 | 12月26日 | 徐翔宇&谢瑞阳 | +| valuelog cache实现 | 12月30号 | 徐翔宇&谢瑞阳 | +| unordered iterator实现 | 1月1号 | 谢瑞阳 | +| valuelog crc校验码实现 | 1月3号 | 徐翔宇&谢瑞阳 | +| 完善各类测试 | 1月3号 | 徐翔宇&谢瑞阳 | +| 各类性能测试数据记录以及分析 | 1月5日 | 徐翔宇 | +| 完成设计文档 | 1月5日 | 徐翔宇&谢瑞阳 | + +

542#!I=$2njd{13Wo*RJua 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105210254484.png b/设计文档.assets/image-20250105210254484.png new file mode 100644 index 0000000000000000000000000000000000000000..7905eda8e2415a5f2ec2bef0dbc698bdc4aaa4d9 GIT binary patch literal 10357 zcmdsdXH-*L*KTYWL?nnJHl!$s^cIk+k)nd2qVy(U5C|Y3z3Cw|MG#OrasUOT_hKkY z6)>O_DFLGN7LZ;8cgFWSKi+%qJI42od(NMm9}Y?OUVE)sp83pY?%6LzM zN4`~Iu|-bbks4KvD{^^YC}}(JN5_ZL!NjnjxihN$bBU4C-JyvO`^JZbH#gP>SBt~K zOv)8j$4-=z1YuV%B~_8(iHY*0`|w9y&G7tIQg6;K1j1DRsyG61$@a~01maJ0`#}Wa z=1D6$1mfLui9HBJr%D`LW6e#3n~KA+2*l&Q|M}&eB53rA;?AO?q@<+p&L-KC5H)d1 z(WfFUZ7i7gb(z=t0T z9}ga9XZP8muBxi2RBcRUZq5?y2P@nQjhG+v@2!^D6_k#2Qu=~*($EM+4Xu#ud7BYI z+@VB745!n0D|I>7SDthiQMTIw_xp(E;+M9bKYv~ctISnx=5$XV#R%vXSd2EmawU7a z>K0a2RaJVf`fSZNF3g7cZVfj#H>aee(070T{v9nQ#uYC=U&r!{Rj{BJm*l&>o|#)E zrFXEgzfb< z-{$M^VfUCwE-I4fb==vel1gkNORLw0o~0-G=nooycr@8pY%@-bm(ue$H#gsZ=#=!M zi5J=p5$Dtj3JR=kY|OVWUpH~l(9lp*Ysoin#G~%TqZe3}?hfMZwQ&T*N9p#1D9gUp zcPO)_h;xf$#6^!vgHk(r-|dPO`3(EWmoHz&#$FT=c{tMpcZd3W5BRK)M#rOVBgl2_ z@Qu$ViL9|B+wR8LzP>n~=+e1oUu@u>>5H++ho!i#jEaSP7g)6jZ zig@|*2t_$2D@3?@s~ua&$i!rGKY{xF#}892EiK)xr{7_rovm?2oBK&J&KEKU!ZIr8 z$ywyBF)2Mgy^h{}2rVum!T}9?8u=XVzBoqRUagL96l`c{aG~_QwO{P6-d+Y1U%Pfq z{|E}>we(FDwrg!~Z&F~yyOyT>xv<%#<>lhiQhRch5mGd< zyr{wE1+4Vy<;$gs)G+NkcfQ0+&83DZY;+`TONfard^fPq)++9=%nj&I*ADDQ89Vegc*W^xP7Ovje-tlLOZ;bqv4;!2M>CTMVQaMEzdWwyWEpal0# zn_p1BXyUc!Ec1sed>x#rAt)|BzR7@-cBpSNRr3pnSFyWd4qMR$71lpH#=xnt_G3?U zi{w4O?d|RG@bIPIpS-{W3=IB4XFf+kjPMH!cT1^Vzh0o9-N6U0k9)5!F`3@MhsB67Y*4p_tJch9rr&2|9FYBd)~t`p*P_-Rzt8mgR{P#MJ#Fppr(OFU zz>Q;LWAK>3Gd|Kd?a9fGbbl1D=4&sAwA$C6D>J?Gf`Y7S{kg4X6#+ zrg!OGOsv_?`_AnN%0CBkh#^ghdml6Rs7n}xdU2tT-U3+@Ded9Mz*CZXwz zii?*cH5I}O@1LVojOt}A5^mPQW2J2S&f?GW@wtzLtBzE#&XdPId4s|SlIj-_Y>gGi zIi7%*d{zl$`Q=V6Ob`>86&7J8Yn1<5_tI)biVlkD2OBsQ9Xg{RfY*gQZu8xC668M{ zH$Na{Jm@-pZeI@O&2f&Oj!sUauXL7NX*r*&8m8itl7N-18jUvbIquS2IvCEax@7VW zQvdYn(=1UIZvuLhWF@5mO=sAG69OVQzRgyJFPM22BI@>mhtmN&b&TCdvr7lt7wW)# z`_FiZh>3|=wk9Y)W2GNhrzJn5?A+u~{j==s?77O-*A@J{M_Qu#Y5?y{wilv@h3`QE zpKWWr=)N%WTHe!Qm$$b!WO6};O2X^;6DjA?>B62r_g?!M=(sw{Hys%sC{eUWXMyif z;4r0>9GZ>b4w-|POYwjm9b3dcmfi$(F!=o$t$$eTo(6FwT$I_AtzXR&%=RYOnp0yxhO z5Q-Z#71l@M?W@+;$CIW{p3LIZXE-MGrK#znUlunr(@?&h{uf6Sy) zC{bWK7WdT7kgeZ)cvRV~kjIOGVSig8 z|BEJ+Tx^J6SzS$1@YY9$M@2=&$II#!&d$z$`*w>OF*IaW*n7$;7#IUHn+%!-x!2m- zdWAyb#UttbPNH$TrFH`r&kgkTWn^WCwK;%$D5-=Ias6eY+}u|Np@bEZDDv|1`}XZ) zL2GDg3JVK|X+EJXcKo_Hwoq?J>)Rju81Sf1rXshLft#?gwg~+2+s|}>)2?#)yW251 zH%cRTAsA`dQPH* zPSInKNo|&ey;<5eH*VY*iAuitE+;4F-Me?m$)A2S%d=}1EdyoBjA|SXzCRdJZ^n1w z!qmh>Ou^eGiwhSnIF=iV;`SjBACWoxfOmCb&lBA$2QP8_Il#Dgw@`G8b#XI6A*l@l ziq1G!>c{~rL2remmeGuyoKPE@-*=Ld^*%yYTUlFQ;O95^@W@Jp4QFG+f8jy~WKr14 z%1U!@)#&JG!P_ot*xvFc74YN!{rg9c9;NRGJ3Vw3mtl}bArqt>%-q~`k>N>6xr(Yy z&^ERYOm0)m_FGR0+z6soyISbajj>#jKHR^V4AQN!U2;kwDhR&WPUghKC8*fdNb^B%N<5N{{Cc3Q@))-lq zf%tKuuI#|*??6p>A)#e#EM$M@&K(If+77sKOO#+k5_{JnL?NZHR|pYvV)#N1E;v!j zTr3vCs4Y=;eA$EL11H2sS6s5qE~j1c2*e8x2MzHjmpEobzI^iAe@xi;R96Kw42a<& zIeQ+qgJ?;~(UFlXKuhGe-d;Yu+idyx5P@c!8wni{_wLl??*04sYbGfO;@uXSc%7V_ zh6(iWbLCo6hlN-y)IWMr=tZz!z6zLv1@?0O2VDC{`jdZm^xxF|5Jd-zs;hUFCOa@e zMMXvZ{rydGz?s8BL#LvT96J_I9E(xgi$DZ@{F)zoi6ak7j58v*&~tA2>;y2LghF>w zZy0j0wY9bEC=wziJlR~FCvvihH>oqU@l9Hq%&Ab4eYJN1x5VV+B;>e5CNtR2F(8x} zqt4^~u&KHEFy^yKBA6JfGgJ5&@^@HwKZFe~C1zjNaW*y-MgUl20o|1=S2WVKexrD7 ztd&@-Sq>AValyL|bq>@+=~K$e%B;`s*UuKs)6e=f2#f zSfjH#(9eFKA&Cr*Ueb7h=HU`dvRMhFqfhP#HnDe+Q;PU9M-B->IF zhvJE>U2Q6G5c>NP#7C~KE$6jv-bAguXd8Eu zNqlnY67uJ=$Ccz4+nmuYca4lr=Q_geHEeNG9b_`Oy`2ls#?Bta%YV)Bsk*&=ZUV)? z*w|<6ODv>dW>;KX+|=r(tc(owb%4i*wd5f7@+F)gT5T*ZJdaLFG6B+}uYZ9?0rg67 zz5fD3`wx?858AMhz(G;T66X23T=uPGhF^^IMHO-)W(+1O;}=0>wTfyW#^ z%W0LCp5ACzYLNXMIHyw98ORWp9f{$^b&Hqp-@gyuY^DWMo%gN7T_&tF%A=fmfz=wiQU7~2tn_%@WFh8u;s^~g%UDG~ z6*D;19`b+39C<3O)T@7C}sOS#z*6rH`xZVO5UX75@(7{I? zH@>|l(yWm!Z7APnmOsI*)?)N{sS_Q5`ZNjL|A;RJ$*~m5Fs9oK00?O z7ylui^{=xCKCwz85D4k%ybjY)wosTa*Xpi&E09ZUN&R-Nw{G3KeEBjL8f?c=ztf|x zsToGZ5*|&qLq|JY;?VKKRf4dey{)@*va;0sY3_c5H}GCDd}uMi7L74VqYJZ}$=4>(xv#RH%~rxd(&Y39!o1W`)Hb++Fk z&=N8f8B)+UC9flgalyUfOd7_eV20Q{?kk;TsSbz;}kDnV6U~dwd=|_&oXO z0B3u9yO_8*Z@e&6brJ9R>cRg5WunULkulEfVU~~_2a|I#g6v_uva%#M&s3{15D)1L zrp9-)@80d|>MAZNK}$%m<eafdAbot`K z!o~fHYoAy&Q|jh0etcA)zHKMWfF@sR&-3`vLpR9BL3nwXG({mMh7l$G`1(7a~+ za4at7My!{D3CMUlI?U%F-zD`sSTd|KR!GP}Z$^cr+|p8=za+c+MC065 za3Un_z`#IiYAVDRNMZ{fXL<%!`WE|c0kYQ6e` zN996{S5JHond}SW4iM{YgF7ZWWyaT9&y?u*X8L_H1j@>zfUw_NT3Wv+jci3E^V1i6V9u)RM z5B*-gud8c$zVS?VSJytjPg?03!48V4Xep_d@eQg^V6DTiAD7GJvSMq0NF(Tam&-_Ipt#O-*m_O2fs_)3Pv>D)u@0-Q8lIB`)tORq78Swu5J}K@PdPx@z+l1SUOFE|T!@ z+(Dq=n zSFY5qVQF7Z!Nu_9%8VY>dX!=+($n3Yp6v^A|Auppais@zl*289FwcYQOgt%)w%1Hd zl6;<7w!QAU5SADG?3nPB6lc=gE}qg9GQMKIT}^n>q^R52^M*|cD0Hy)e!t7q0eaV6 z;v6#+5T-ZmQs)9AwuvXm>$UjhDSIxLkV4D0fZ|RCf$&Xr-JO?IG{$~stXi@2lj*Ow z(Z=mkDiunzijGS#G7YRai7rz4%UWy6Vz{pibbioS=qKx&ZcUBnB!K4t>h@x}Hj~~By@uFCa8k~mR zH^k@!J3A}pL7)V5;vo7-^_DC}{sI3l8s&++=KFcRgk;BpVcU{*?8>;?M*%rLA>kB7 zH>KX}o6Ff69>7tMF$4v>Uei>PlB1L_0_BH+CAbilh2y-uM|vYb90rEaC)$>gae-U* zkG=Gsve585J1=ijHyIV=G2_u$+L_-oxm`o@VlDW!v%V?_XsyITyfvR>eWvWw&$Z-| z)Rw+;GhRJSmEFDW$2Qk2DE}jj>)7X^p-*Gz29b$p9UCK;uH5hW6SPyBbg-TrRI-Ra z+WY-`ns7m0-c2N@uYO!Bhn$4O*)XeEb)I!Gl^*}kxvwt7NU;<{4~68+sa(;g*1+_5 zTJa7jUy<_OfIgU@OB@`kJutn3;pR#5hqm#K23K3GA9+ryijFGx7^DWZXram6+Ycw( z-@?5%uDt#DQ-({5Wm6{4p?<;mpbu99vveAanc-1GwM>egSO)*DEE7K;V$40UfBU9Hhzx!!zgaUc2YrfGzB$tPD4X>1b7Y^0DiGA0kz%1?_bf3Dh{OZ*!7@R&THx#b;^~ZdAi>Ai;BYj0y9dFg5 z!KSa*4iVrAm~eFT;+rh=2`;vfygEAFAS;6ZR-&VfVO)@&>bqaL%q{iQkK4CzAJ%_d zWxnR65KoMXj4U*(fBH`Q_RX7L+uI#~eB2dS`}3jnjLRlo{>C&VMpSeuDLkB6l=8&& z`nS-lP~U+L2ETh#QlhPKF4P@WqAQSFy}bb$O(Ky%Si_+WE?@q%h7Bh9>s^iu)~68% zjK+&j!z!=xtgJ7eJK!=WM@N|U%>xR7NP0I@yZ&Lj5-=nZ#Rqh_(PJUq)0BycAeVEu zp-X@V9*jr&WAuHPJSFicC|&Szyf9k1I>>)4M>pTBKyh~2CT6?q1+(}%oquKWLe8m) zXd$Bv-}6HD-z`q378gtM@>;@M3w?*FXNJNzfd(6wJKl#=7#R%!XG!vy;uCeZKT};Z zZ*;1A>as4`IU=$Yu+Pmk6&^u|QxIK?` z!Rj2TRMTK+*<--Yb)v9 zsaPoWVOf}?qXfNe8@I8s>0s{~Yh&Pyh>Y|{0chE(s5C%pOLiYWO_eEL)B*(t-U0d3 z+oz92GAEs`QwCaYU=Y9Jg2!;KcT`pIleMxV)fb6R`$d99#q*)lHis_3$;k;SHF++2F+Id^Uio(u zHs=CG(}e(9^^?eOBX^jTfEVvY(x*U>nHKBYqT_#$r(SKEm6EvaYs~U>v$X?jISaSo z?Fi@!iwlMJ)6tdKla2NCjvu5W_4Pp*%dIW-JGJ%V&`E8)zLFC&GXeqvFFmP0{Fr9R z)xI5RHvpd|rl$!oX*D0@RwrlN%^YdU?2FgEbLY(sN4OZK!|TImc69ahdb_)$p-+j7 z6i*~7Pp|pv{ajMlS1M)uM0M?t^lLGZUrubqp*3A5 z>zfof`WgjiI+zzZ1azdg?>^0AxXx6=9u_De-T@UPBQsMc$MC%%bo)fX(ta-A?!Y(S z_tWdJ=XR^bed}{%JFjT{M>GGQ zrr3VR7D3lR_wj^_PVoL1Kc^BzK%37>;dBncu4H<{u6*{xG*p5dK(St-y*lr0a>~cx zEt<0RvG}_czvx7~tr=^8-od*q2*i=Gc{k}RC;yI@<%rA}=)YjP4-JsY4wHo?_c=Vz Sd@8h6h-=CkN;w$QKmHenaL4EX literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105210350396.png b/设计文档.assets/image-20250105210350396.png new file mode 100644 index 0000000000000000000000000000000000000000..d421c0796d986b8fa205802ce9ee2354e1d7c53e GIT binary patch literal 11666 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%0D4L^BE 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 F{{zAovp@g< literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105214330108.png b/设计文档.assets/image-20250105214330108.png new file mode 100644 index 0000000000000000000000000000000000000000..88699e21bd4f0bbaca4a34a95907aa19957d9244 GIT binary patch literal 32299 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 literal 0 HcmV?d00001 diff --git a/设计文档.assets/image-20250105214340947.png b/设计文档.assets/image-20250105214340947.png new file mode 100644 index 0000000000000000000000000000000000000000..e6416308072007f27c447621a919f8e35744ef6c GIT binary patch literal 33262 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