summaryrefslogtreecommitdiffstats
path: root/test/expected
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-07 04:48:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-07 04:48:35 +0000
commit207df6fc406e81bfeebdff7f404bd242ff3f099f (patch)
treea1a796b056909dd0a04ffec163db9363a8757808 /test/expected
parentReleasing progress-linux version 0.11.2-1~progress7.99u1. (diff)
downloadlnav-207df6fc406e81bfeebdff7f404bd242ff3f099f.tar.xz
lnav-207df6fc406e81bfeebdff7f404bd242ff3f099f.zip
Merging upstream version 0.12.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/expected')
-rw-r--r--test/expected/expected.am326
-rw-r--r--test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.err (renamed from test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err)0
-rw-r--r--test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.out5263
-rw-r--r--test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.err (renamed from test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.err)0
-rw-r--r--test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.out1
-rw-r--r--test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.err4
-rw-r--r--test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.out1
-rw-r--r--test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.err (renamed from test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out)0
-rw-r--r--test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.out1
-rw-r--r--test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.err (renamed from test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.out)0
-rw-r--r--test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.out1
-rw-r--r--test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.err (renamed from test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.out)0
-rw-r--r--test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.out9
-rw-r--r--test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out3
-rw-r--r--test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.err (renamed from test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.out)0
-rw-r--r--test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.out9
-rw-r--r--test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.err (renamed from test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.err)0
-rw-r--r--test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.out4
-rw-r--r--test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.err (renamed from test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.err)0
-rw-r--r--test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.out1187
-rw-r--r--test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out4
-rw-r--r--test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.err (renamed from test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err)0
-rw-r--r--test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.out2
-rw-r--r--test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.err7
-rw-r--r--test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.out (renamed from test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.err)0
-rw-r--r--test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err4
-rw-r--r--test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out45
-rw-r--r--test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out2
-rw-r--r--test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out32
-rw-r--r--test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out2
-rw-r--r--test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.err (renamed from test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.err)0
-rw-r--r--test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.out2
-rw-r--r--test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out4
-rw-r--r--test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out2
-rw-r--r--test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err2
-rw-r--r--test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.err (renamed from test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out)0
-rw-r--r--test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.out2
-rw-r--r--test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.err (renamed from test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out)0
-rw-r--r--test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.out3
-rw-r--r--test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out10
-rw-r--r--test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.err (renamed from test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.out)0
-rw-r--r--test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.out1
-rw-r--r--test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.err (renamed from test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.err)0
-rw-r--r--test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.out1
-rw-r--r--test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out8
-rw-r--r--test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out2
-rw-r--r--test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err4
-rw-r--r--test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out12
-rw-r--r--test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out2
-rw-r--r--test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.err (renamed from test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.err)0
-rw-r--r--test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.out1
-rw-r--r--test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out1673
-rw-r--r--test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out5
-rw-r--r--test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out4
-rw-r--r--test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out2
-rw-r--r--test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.err6
-rw-r--r--test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.out0
-rw-r--r--test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.err6
-rw-r--r--test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.out0
-rw-r--r--test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err7
-rw-r--r--test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out2
-rw-r--r--test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.err0
-rw-r--r--test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.out1
-rw-r--r--test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out2
-rw-r--r--test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out6
-rw-r--r--test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out18
-rw-r--r--test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out6
-rw-r--r--test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.err6
-rw-r--r--test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.out0
-rw-r--r--test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.err0
-rw-r--r--test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.out1
-rw-r--r--test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err20
-rw-r--r--test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err46
-rw-r--r--test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err2
-rw-r--r--test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.err2
-rw-r--r--test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.out0
-rw-r--r--test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.err0
-rw-r--r--test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.out2
-rw-r--r--test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.err0
-rw-r--r--test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.out1
-rw-r--r--test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out18
-rw-r--r--test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err171
-rw-r--r--test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err15
-rw-r--r--test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err61
-rw-r--r--test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err4
-rw-r--r--test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.err0
-rw-r--r--test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.out86
-rw-r--r--test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.err0
-rw-r--r--test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.out0
-rw-r--r--test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.err0
-rw-r--r--test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.out0
-rw-r--r--test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.err0
-rw-r--r--test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.out0
-rw-r--r--test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.err0
-rw-r--r--test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.out85
-rw-r--r--test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.err0
-rw-r--r--test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.out70
-rw-r--r--test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.err0
-rw-r--r--test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.out4
-rw-r--r--test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.err0
-rw-r--r--test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.out70
-rw-r--r--test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out10
-rw-r--r--test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out28
-rw-r--r--test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out208
-rw-r--r--test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out6
-rw-r--r--test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out26
-rw-r--r--test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.err0
-rw-r--r--test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.out52
-rw-r--r--test/expected/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out20
-rw-r--r--test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out8
-rw-r--r--test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out26
-rw-r--r--test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out8
-rw-r--r--test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out4
-rw-r--r--test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out4
-rw-r--r--test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out28
-rw-r--r--test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.err0
-rw-r--r--test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.out20
-rw-r--r--test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out3
-rw-r--r--test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out2
-rw-r--r--test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out48
-rw-r--r--test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out4
-rw-r--r--test/expected/test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out2
-rw-r--r--test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out4
-rw-r--r--test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out4
-rw-r--r--test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out8
-rw-r--r--test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out6
-rw-r--r--test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out8
-rw-r--r--test/expected/test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out2
-rw-r--r--test/expected/test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out2
-rw-r--r--test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out2
-rw-r--r--test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.err0
-rw-r--r--test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.out4
-rw-r--r--test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out6
-rw-r--r--test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.err0
-rw-r--r--test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.out3
-rw-r--r--test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out2
-rw-r--r--test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out4
-rw-r--r--test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out4
-rw-r--r--test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.err0
-rw-r--r--test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.out2
-rw-r--r--test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.err0
-rw-r--r--test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.out3
-rw-r--r--test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out5
-rw-r--r--test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.err0
-rw-r--r--test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.out3
-rw-r--r--test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.err0
-rw-r--r--test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.out3
-rw-r--r--test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out6
-rw-r--r--test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.err15
-rw-r--r--test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.out0
-rw-r--r--test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.err0
-rw-r--r--test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.out3
-rw-r--r--test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.err0
-rw-r--r--test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.out4
-rw-r--r--test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.err0
-rw-r--r--test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.out4
-rw-r--r--test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out12
-rw-r--r--test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.err0
-rw-r--r--test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.out3
-rw-r--r--test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.err7
-rw-r--r--test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.out0
-rw-r--r--test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out2
-rw-r--r--test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.err0
-rw-r--r--test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.out41
-rw-r--r--test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.err0
-rw-r--r--test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.out2
-rw-r--r--test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.err0
-rw-r--r--test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.out2
-rw-r--r--test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.err0
-rw-r--r--test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.out7
-rw-r--r--test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.err6
-rw-r--r--test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.out0
-rw-r--r--test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out4
-rw-r--r--test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out2
-rw-r--r--test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.err0
-rw-r--r--test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.out2
-rw-r--r--test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out12
-rw-r--r--test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out4
-rw-r--r--test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out1
-rw-r--r--test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.err0
-rw-r--r--test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.out2
-rw-r--r--test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.err10
-rw-r--r--test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.out0
-rw-r--r--test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.err10
-rw-r--r--test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.out0
-rw-r--r--test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.err0
-rw-r--r--test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.out2
-rw-r--r--test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.err0
-rw-r--r--test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.out4
-rw-r--r--test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err3
-rw-r--r--test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out2
-rw-r--r--test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err47
-rw-r--r--test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err6
-rw-r--r--test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err2
-rw-r--r--test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out23
-rw-r--r--test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err6
-rw-r--r--test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.err0
-rw-r--r--test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.out11
-rw-r--r--test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.err0
-rw-r--r--test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.out89
-rw-r--r--test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out6
-rw-r--r--test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out33
-rw-r--r--test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out1
-rw-r--r--test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.err0
-rw-r--r--test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.out5
-rw-r--r--test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.err0
-rw-r--r--test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.out11
-rw-r--r--test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.err0
-rw-r--r--test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.out (renamed from test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out)15
-rw-r--r--test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out5
-rw-r--r--test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out5
-rw-r--r--test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out2
-rw-r--r--test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out3
-rw-r--r--test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out3
-rw-r--r--test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out3
-rw-r--r--test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out3
-rw-r--r--test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out3
-rw-r--r--test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out3
-rw-r--r--test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out3
-rw-r--r--test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out7
-rw-r--r--test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out3
-rw-r--r--test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out3
-rw-r--r--test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.err0
-rw-r--r--test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.out6
-rw-r--r--test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.err0
-rw-r--r--test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.out3
-rw-r--r--test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out2
-rw-r--r--test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out4
-rw-r--r--test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.err0
-rw-r--r--test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.out46
-rw-r--r--test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out6
-rw-r--r--test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.err0
-rw-r--r--test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.out23
-rw-r--r--test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.err0
-rw-r--r--test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.out2
-rw-r--r--test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err3
-rw-r--r--test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.err0
-rw-r--r--test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.out2
-rw-r--r--test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.err0
-rw-r--r--test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.out5
-rw-r--r--test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out6
-rw-r--r--test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out2
-rw-r--r--test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.err0
-rw-r--r--test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.out83
-rw-r--r--test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.err0
-rw-r--r--test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.out40
-rw-r--r--test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.err0
-rw-r--r--test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.out2
-rw-r--r--test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out4
-rw-r--r--test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err3
-rw-r--r--test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.err0
-rw-r--r--test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.out11
-rw-r--r--test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out2
-rw-r--r--test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out2
-rw-r--r--test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.err0
-rw-r--r--test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.out2
-rw-r--r--test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out2
-rw-r--r--test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err3
-rw-r--r--test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.err0
-rw-r--r--test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.out4
-rw-r--r--test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out4
-rw-r--r--test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.err0
-rw-r--r--test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.out4
-rw-r--r--test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.err0
-rw-r--r--test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.out3
-rw-r--r--test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out2
-rw-r--r--test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out4
-rw-r--r--test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out4
-rw-r--r--test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out2
-rw-r--r--test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.err0
-rw-r--r--test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.out10
-rw-r--r--test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out10
-rw-r--r--test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out2
-rw-r--r--test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.err0
-rw-r--r--test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.out6
-rw-r--r--test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out4
-rw-r--r--test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out4
-rw-r--r--test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out2
-rw-r--r--test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.err0
-rw-r--r--test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.out4
-rw-r--r--test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err3
-rw-r--r--test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.err0
-rw-r--r--test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.out11
-rw-r--r--test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.err0
-rw-r--r--test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.out2
-rw-r--r--test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.err0
-rw-r--r--test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.out2
-rw-r--r--test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.err0
-rw-r--r--test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.out4
-rw-r--r--test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.err0
-rw-r--r--test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.out9
-rw-r--r--test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.err0
-rw-r--r--test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.out7
-rw-r--r--test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.err0
-rw-r--r--test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.out17
-rw-r--r--test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.err0
-rw-r--r--test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.out0
-rw-r--r--test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.err0
-rw-r--r--test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.out2
-rw-r--r--test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.err0
-rw-r--r--test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.out2
-rw-r--r--test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err2
-rw-r--r--test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err2
-rw-r--r--test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out6
-rw-r--r--test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.err0
-rw-r--r--test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.out5
-rw-r--r--test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out10
-rw-r--r--test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out4
-rw-r--r--test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out10
-rw-r--r--test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out6
-rw-r--r--test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out4
-rw-r--r--test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out4
-rw-r--r--test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out10
-rw-r--r--test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err5
-rw-r--r--test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err2
-rw-r--r--test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err2
-rw-r--r--test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err5
-rw-r--r--test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.err0
-rw-r--r--test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.out3
-rw-r--r--test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out4
-rw-r--r--test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.err7
-rw-r--r--test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.out0
-rw-r--r--test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out4
-rw-r--r--test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.err7
-rw-r--r--test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.out0
-rw-r--r--test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out54
-rw-r--r--test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out4
-rw-r--r--test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out4
-rw-r--r--test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out4
-rw-r--r--test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out4
-rw-r--r--test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out24
-rw-r--r--test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out8
-rw-r--r--test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out48
-rw-r--r--test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out12
-rw-r--r--test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.err0
-rw-r--r--test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.out2
-rw-r--r--test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out2
-rw-r--r--test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.err0
-rw-r--r--test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.out2
-rw-r--r--test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out198
-rw-r--r--test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.err1
-rw-r--r--test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.out0
-rw-r--r--test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err1
-rw-r--r--test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out2
-rw-r--r--test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.err1
-rw-r--r--test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.out0
-rw-r--r--test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.err1
-rw-r--r--test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.out0
-rw-r--r--test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.err0
-rw-r--r--test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.out2
-rw-r--r--test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out2
-rw-r--r--test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out2
-rw-r--r--test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err2
-rw-r--r--test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out2
-rw-r--r--test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err2
-rw-r--r--test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out2
-rw-r--r--test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.err0
-rw-r--r--test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.out2
-rw-r--r--test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out2
-rw-r--r--test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.err0
-rw-r--r--test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.out2
-rw-r--r--test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err2
-rw-r--r--test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out37
-rw-r--r--test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err2
-rw-r--r--test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.err4
-rw-r--r--test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.out0
-rw-r--r--test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.err0
-rw-r--r--test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.out2
-rw-r--r--test/expected/test_sql_time_func.sh_6fd8504e94688c4e7915f3a9eb5b030713141d03.out0
-rw-r--r--test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err2
-rw-r--r--test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.err0
-rw-r--r--test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.out2
-rw-r--r--test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.err0
-rw-r--r--test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.out2
-rw-r--r--test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.err8
-rw-r--r--test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.out0
-rw-r--r--test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.err0
-rw-r--r--test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.out2
-rw-r--r--test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.err0
-rw-r--r--test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.out2
-rw-r--r--test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out3
-rw-r--r--test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.err0
-rw-r--r--test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.out46
-rw-r--r--test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.err0
-rw-r--r--test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.out47
-rw-r--r--test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out2
-rw-r--r--test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out6
-rw-r--r--test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out2
-rw-r--r--test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out4
-rw-r--r--test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out4
-rw-r--r--test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.err4
-rw-r--r--test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.out0
-rw-r--r--test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err4
-rw-r--r--test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out2
-rw-r--r--test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.err11
-rw-r--r--test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.out0
-rw-r--r--test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err2
-rw-r--r--test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.err7
-rw-r--r--test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.out0
-rw-r--r--test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err2
-rw-r--r--test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err4
-rw-r--r--test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.err0
-rw-r--r--test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.out3
-rw-r--r--test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err0
-rw-r--r--test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out26
-rw-r--r--test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.err0
-rw-r--r--test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.out2
-rw-r--r--test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.err0
-rw-r--r--test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.out5
-rw-r--r--test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.err0
-rw-r--r--test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.out49
-rw-r--r--test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.err0
-rw-r--r--test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.out25
-rw-r--r--test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.err0
-rw-r--r--test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.out1
-rw-r--r--test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err2
-rw-r--r--test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.err0
-rw-r--r--test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out9
-rw-r--r--test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.err0
-rw-r--r--test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.out6
-rw-r--r--test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.err0
-rw-r--r--test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.out5
-rw-r--r--test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out157
-rw-r--r--test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.err0
-rw-r--r--test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.out42
-rw-r--r--test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out109
-rw-r--r--test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.err0
-rw-r--r--test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.out43
-rw-r--r--test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.err0
-rw-r--r--test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.out4
-rw-r--r--test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.err0
-rw-r--r--test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.out98
-rw-r--r--test/expected/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out2
-rw-r--r--test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out111
-rw-r--r--test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out56
-rw-r--r--test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.err0
-rw-r--r--test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.out6
-rw-r--r--test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out4
-rw-r--r--test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.err0
-rw-r--r--test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.out2
-rw-r--r--test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out2
-rw-r--r--test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out159
-rw-r--r--test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out22
-rw-r--r--test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.err0
-rw-r--r--test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out51
-rw-r--r--test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out109
-rw-r--r--test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.err0
-rw-r--r--test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.out40
-rw-r--r--test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.err0
-rw-r--r--test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.out38
-rw-r--r--test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.err0
-rw-r--r--test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.out25
452 files changed, 10703 insertions, 2031 deletions
diff --git a/test/expected/expected.am b/test/expected/expected.am
index 6a88ee8..bedc4dc 100644
--- a/test/expected/expected.am
+++ b/test/expected/expected.am
@@ -1,15 +1,35 @@
EXPECTED_FILES = \
+ $(srcdir)/%reldir%/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.err \
+ $(srcdir)/%reldir%/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.out \
+ $(srcdir)/%reldir%/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.err \
+ $(srcdir)/%reldir%/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.out \
+ $(srcdir)/%reldir%/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.err \
+ $(srcdir)/%reldir%/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.out \
$(srcdir)/%reldir%/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.err \
$(srcdir)/%reldir%/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.out \
+ $(srcdir)/%reldir%/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.err \
+ $(srcdir)/%reldir%/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.out \
+ $(srcdir)/%reldir%/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.err \
+ $(srcdir)/%reldir%/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.out \
$(srcdir)/%reldir%/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.err \
$(srcdir)/%reldir%/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.out \
+ $(srcdir)/%reldir%/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.err \
+ $(srcdir)/%reldir%/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.out \
$(srcdir)/%reldir%/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.err \
$(srcdir)/%reldir%/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.out \
- $(srcdir)/%reldir%/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err \
- $(srcdir)/%reldir%/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out \
+ $(srcdir)/%reldir%/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.err \
+ $(srcdir)/%reldir%/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.out \
+ $(srcdir)/%reldir%/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.err \
+ $(srcdir)/%reldir%/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.out \
+ $(srcdir)/%reldir%/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.err \
+ $(srcdir)/%reldir%/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.out \
$(srcdir)/%reldir%/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.err \
$(srcdir)/%reldir%/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out \
+ $(srcdir)/%reldir%/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.err \
+ $(srcdir)/%reldir%/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.out \
+ $(srcdir)/%reldir%/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.err \
+ $(srcdir)/%reldir%/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.out \
$(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err \
$(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out \
$(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err \
@@ -74,6 +94,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out \
$(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err \
$(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out \
+ $(srcdir)/%reldir%/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.err \
+ $(srcdir)/%reldir%/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.out \
$(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err \
$(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out \
$(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err \
@@ -88,6 +110,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out \
$(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err \
$(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out \
+ $(srcdir)/%reldir%/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.err \
+ $(srcdir)/%reldir%/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.out \
$(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err \
$(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out \
$(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err \
@@ -96,6 +120,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out \
$(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err \
$(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out \
+ $(srcdir)/%reldir%/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.err \
+ $(srcdir)/%reldir%/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.out \
$(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err \
$(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out \
$(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err \
@@ -130,6 +156,10 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out \
$(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err \
$(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out \
+ $(srcdir)/%reldir%/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.err \
+ $(srcdir)/%reldir%/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.out \
+ $(srcdir)/%reldir%/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.err \
+ $(srcdir)/%reldir%/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.out \
$(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err \
$(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out \
$(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err \
@@ -150,6 +180,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out \
$(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err \
$(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out \
+ $(srcdir)/%reldir%/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.err \
+ $(srcdir)/%reldir%/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.out \
$(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err \
$(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out \
$(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err \
@@ -184,16 +216,18 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out \
$(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err \
$(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out \
+ $(srcdir)/%reldir%/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.err \
+ $(srcdir)/%reldir%/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.out \
$(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err \
$(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out \
$(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err \
$(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out \
- $(srcdir)/%reldir%/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err \
- $(srcdir)/%reldir%/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out \
$(srcdir)/%reldir%/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err \
$(srcdir)/%reldir%/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out \
$(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err \
$(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out \
+ $(srcdir)/%reldir%/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.err \
+ $(srcdir)/%reldir%/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.out \
$(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err \
$(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out \
$(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err \
@@ -210,12 +244,16 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out \
$(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err \
$(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out \
+ $(srcdir)/%reldir%/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.err \
+ $(srcdir)/%reldir%/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.out \
$(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err \
$(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out \
$(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err \
$(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out \
$(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err \
$(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out \
+ $(srcdir)/%reldir%/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.err \
+ $(srcdir)/%reldir%/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.out \
$(srcdir)/%reldir%/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.err \
$(srcdir)/%reldir%/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.out \
$(srcdir)/%reldir%/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.err \
@@ -244,12 +282,34 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out \
$(srcdir)/%reldir%/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err \
$(srcdir)/%reldir%/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out \
+ $(srcdir)/%reldir%/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.err \
+ $(srcdir)/%reldir%/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.out \
+ $(srcdir)/%reldir%/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.err \
+ $(srcdir)/%reldir%/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.out \
+ $(srcdir)/%reldir%/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.err \
+ $(srcdir)/%reldir%/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.out \
$(srcdir)/%reldir%/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err \
$(srcdir)/%reldir%/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out \
$(srcdir)/%reldir%/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err \
$(srcdir)/%reldir%/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out \
$(srcdir)/%reldir%/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err \
$(srcdir)/%reldir%/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out \
+ $(srcdir)/%reldir%/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.err \
+ $(srcdir)/%reldir%/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.out \
+ $(srcdir)/%reldir%/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.err \
+ $(srcdir)/%reldir%/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.out \
+ $(srcdir)/%reldir%/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.err \
+ $(srcdir)/%reldir%/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.out \
+ $(srcdir)/%reldir%/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.err \
+ $(srcdir)/%reldir%/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.out \
+ $(srcdir)/%reldir%/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.err \
+ $(srcdir)/%reldir%/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.out \
+ $(srcdir)/%reldir%/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.err \
+ $(srcdir)/%reldir%/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.out \
+ $(srcdir)/%reldir%/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.err \
+ $(srcdir)/%reldir%/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.out \
+ $(srcdir)/%reldir%/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.err \
+ $(srcdir)/%reldir%/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.out \
$(srcdir)/%reldir%/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err \
$(srcdir)/%reldir%/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out \
$(srcdir)/%reldir%/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err \
@@ -260,6 +320,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out \
$(srcdir)/%reldir%/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err \
$(srcdir)/%reldir%/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out \
+ $(srcdir)/%reldir%/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.err \
+ $(srcdir)/%reldir%/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.out \
$(srcdir)/%reldir%/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.err \
$(srcdir)/%reldir%/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out \
$(srcdir)/%reldir%/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err \
@@ -276,6 +338,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out \
$(srcdir)/%reldir%/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err \
$(srcdir)/%reldir%/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out \
+ $(srcdir)/%reldir%/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.err \
+ $(srcdir)/%reldir%/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.out \
$(srcdir)/%reldir%/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err \
$(srcdir)/%reldir%/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out \
$(srcdir)/%reldir%/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err \
@@ -302,18 +366,24 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out \
$(srcdir)/%reldir%/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err \
$(srcdir)/%reldir%/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out \
+ $(srcdir)/%reldir%/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.err \
+ $(srcdir)/%reldir%/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.out \
$(srcdir)/%reldir%/test_logfile.sh_05d1505168bf34b89fc0d1a39f1409cfe798119e.err \
$(srcdir)/%reldir%/test_logfile.sh_05d1505168bf34b89fc0d1a39f1409cfe798119e.out \
$(srcdir)/%reldir%/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.err \
$(srcdir)/%reldir%/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out \
$(srcdir)/%reldir%/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.err \
$(srcdir)/%reldir%/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.out \
- $(srcdir)/%reldir%/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err \
- $(srcdir)/%reldir%/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out \
+ $(srcdir)/%reldir%/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.err \
+ $(srcdir)/%reldir%/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.out \
$(srcdir)/%reldir%/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.err \
$(srcdir)/%reldir%/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out \
$(srcdir)/%reldir%/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.err \
$(srcdir)/%reldir%/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out \
+ $(srcdir)/%reldir%/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.err \
+ $(srcdir)/%reldir%/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.out \
+ $(srcdir)/%reldir%/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.err \
+ $(srcdir)/%reldir%/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.out \
$(srcdir)/%reldir%/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.err \
$(srcdir)/%reldir%/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out \
$(srcdir)/%reldir%/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.err \
@@ -322,12 +392,28 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.out \
$(srcdir)/%reldir%/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.err \
$(srcdir)/%reldir%/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.out \
+ $(srcdir)/%reldir%/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.err \
+ $(srcdir)/%reldir%/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.out \
+ $(srcdir)/%reldir%/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.err \
+ $(srcdir)/%reldir%/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.out \
$(srcdir)/%reldir%/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.err \
$(srcdir)/%reldir%/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.out \
$(srcdir)/%reldir%/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.err \
$(srcdir)/%reldir%/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out \
+ $(srcdir)/%reldir%/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.err \
+ $(srcdir)/%reldir%/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.out \
+ $(srcdir)/%reldir%/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.err \
+ $(srcdir)/%reldir%/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.out \
+ $(srcdir)/%reldir%/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.err \
+ $(srcdir)/%reldir%/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.out \
+ $(srcdir)/%reldir%/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.err \
+ $(srcdir)/%reldir%/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.out \
$(srcdir)/%reldir%/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.err \
$(srcdir)/%reldir%/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out \
+ $(srcdir)/%reldir%/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.err \
+ $(srcdir)/%reldir%/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.out \
+ $(srcdir)/%reldir%/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.err \
+ $(srcdir)/%reldir%/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.out \
$(srcdir)/%reldir%/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err \
$(srcdir)/%reldir%/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out \
$(srcdir)/%reldir%/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err \
@@ -340,6 +426,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out \
$(srcdir)/%reldir%/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err \
$(srcdir)/%reldir%/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out \
+ $(srcdir)/%reldir%/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.err \
+ $(srcdir)/%reldir%/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.out \
$(srcdir)/%reldir%/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err \
$(srcdir)/%reldir%/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out \
$(srcdir)/%reldir%/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err \
@@ -348,6 +436,10 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out \
$(srcdir)/%reldir%/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err \
$(srcdir)/%reldir%/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out \
+ $(srcdir)/%reldir%/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.err \
+ $(srcdir)/%reldir%/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.out \
+ $(srcdir)/%reldir%/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.err \
+ $(srcdir)/%reldir%/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.out \
$(srcdir)/%reldir%/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err \
$(srcdir)/%reldir%/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out \
$(srcdir)/%reldir%/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err \
@@ -356,6 +448,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out \
$(srcdir)/%reldir%/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err \
$(srcdir)/%reldir%/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out \
+ $(srcdir)/%reldir%/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.err \
+ $(srcdir)/%reldir%/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.out \
$(srcdir)/%reldir%/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err \
$(srcdir)/%reldir%/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out \
$(srcdir)/%reldir%/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err \
@@ -376,16 +470,78 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.out \
$(srcdir)/%reldir%/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.err \
$(srcdir)/%reldir%/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.out \
+ $(srcdir)/%reldir%/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.err \
+ $(srcdir)/%reldir%/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.out \
+ $(srcdir)/%reldir%/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.err \
+ $(srcdir)/%reldir%/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.out \
+ $(srcdir)/%reldir%/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.err \
+ $(srcdir)/%reldir%/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.out \
+ $(srcdir)/%reldir%/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.err \
+ $(srcdir)/%reldir%/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.out \
+ $(srcdir)/%reldir%/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.err \
+ $(srcdir)/%reldir%/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.out \
+ $(srcdir)/%reldir%/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err \
+ $(srcdir)/%reldir%/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.out \
+ $(srcdir)/%reldir%/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.err \
+ $(srcdir)/%reldir%/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.out \
+ $(srcdir)/%reldir%/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.err \
+ $(srcdir)/%reldir%/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.out \
+ $(srcdir)/%reldir%/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.err \
+ $(srcdir)/%reldir%/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out \
+ $(srcdir)/%reldir%/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err \
+ $(srcdir)/%reldir%/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.out \
+ $(srcdir)/%reldir%/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.err \
+ $(srcdir)/%reldir%/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.out \
+ $(srcdir)/%reldir%/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.err \
+ $(srcdir)/%reldir%/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.out \
+ $(srcdir)/%reldir%/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.err \
+ $(srcdir)/%reldir%/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.out \
+ $(srcdir)/%reldir%/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.err \
+ $(srcdir)/%reldir%/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.out \
+ $(srcdir)/%reldir%/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.err \
+ $(srcdir)/%reldir%/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.out \
+ $(srcdir)/%reldir%/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.err \
+ $(srcdir)/%reldir%/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.out \
+ $(srcdir)/%reldir%/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err \
+ $(srcdir)/%reldir%/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.out \
+ $(srcdir)/%reldir%/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.err \
+ $(srcdir)/%reldir%/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.out \
+ $(srcdir)/%reldir%/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.err \
+ $(srcdir)/%reldir%/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.out \
+ $(srcdir)/%reldir%/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.err \
+ $(srcdir)/%reldir%/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.out \
+ $(srcdir)/%reldir%/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err \
+ $(srcdir)/%reldir%/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.out \
+ $(srcdir)/%reldir%/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.err \
+ $(srcdir)/%reldir%/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.out \
+ $(srcdir)/%reldir%/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.err \
+ $(srcdir)/%reldir%/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.out \
+ $(srcdir)/%reldir%/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.err \
+ $(srcdir)/%reldir%/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.out \
+ $(srcdir)/%reldir%/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.err \
+ $(srcdir)/%reldir%/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out \
+ $(srcdir)/%reldir%/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.err \
+ $(srcdir)/%reldir%/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.out \
+ $(srcdir)/%reldir%/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err \
+ $(srcdir)/%reldir%/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.out \
+ $(srcdir)/%reldir%/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.err \
+ $(srcdir)/%reldir%/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.out \
+ $(srcdir)/%reldir%/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.err \
+ $(srcdir)/%reldir%/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.out \
$(srcdir)/%reldir%/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err \
$(srcdir)/%reldir%/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out \
$(srcdir)/%reldir%/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err \
$(srcdir)/%reldir%/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out \
+ $(srcdir)/%reldir%/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.err \
+ $(srcdir)/%reldir%/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.out \
$(srcdir)/%reldir%/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err \
$(srcdir)/%reldir%/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out \
$(srcdir)/%reldir%/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err \
$(srcdir)/%reldir%/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out \
$(srcdir)/%reldir%/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err \
$(srcdir)/%reldir%/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out \
+ $(srcdir)/%reldir%/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.err \
+ $(srcdir)/%reldir%/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.out \
$(srcdir)/%reldir%/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err \
$(srcdir)/%reldir%/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out \
$(srcdir)/%reldir%/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err \
@@ -404,8 +560,14 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out \
$(srcdir)/%reldir%/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err \
$(srcdir)/%reldir%/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out \
+ $(srcdir)/%reldir%/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.err \
+ $(srcdir)/%reldir%/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.out \
$(srcdir)/%reldir%/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err \
$(srcdir)/%reldir%/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out \
+ $(srcdir)/%reldir%/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.err \
+ $(srcdir)/%reldir%/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.out \
+ $(srcdir)/%reldir%/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.err \
+ $(srcdir)/%reldir%/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.out \
$(srcdir)/%reldir%/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.err \
$(srcdir)/%reldir%/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out \
$(srcdir)/%reldir%/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.err \
@@ -432,44 +594,62 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out \
$(srcdir)/%reldir%/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.err \
$(srcdir)/%reldir%/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out \
+ $(srcdir)/%reldir%/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.err \
+ $(srcdir)/%reldir%/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.out \
$(srcdir)/%reldir%/test_sql.sh_02def66745b063518473df862987747909f56ccc.err \
$(srcdir)/%reldir%/test_sql.sh_02def66745b063518473df862987747909f56ccc.out \
+ $(srcdir)/%reldir%/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.err \
+ $(srcdir)/%reldir%/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.out \
$(srcdir)/%reldir%/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.err \
$(srcdir)/%reldir%/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out \
$(srcdir)/%reldir%/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.err \
$(srcdir)/%reldir%/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.out \
$(srcdir)/%reldir%/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.err \
$(srcdir)/%reldir%/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out \
+ $(srcdir)/%reldir%/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.err \
+ $(srcdir)/%reldir%/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.out \
$(srcdir)/%reldir%/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.err \
$(srcdir)/%reldir%/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out \
+ $(srcdir)/%reldir%/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.err \
+ $(srcdir)/%reldir%/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.out \
$(srcdir)/%reldir%/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.err \
$(srcdir)/%reldir%/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.out \
+ $(srcdir)/%reldir%/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.err \
+ $(srcdir)/%reldir%/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.out \
$(srcdir)/%reldir%/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.err \
$(srcdir)/%reldir%/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.out \
$(srcdir)/%reldir%/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.err \
$(srcdir)/%reldir%/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.out \
$(srcdir)/%reldir%/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err \
$(srcdir)/%reldir%/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.out \
+ $(srcdir)/%reldir%/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.err \
+ $(srcdir)/%reldir%/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.out \
$(srcdir)/%reldir%/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.err \
$(srcdir)/%reldir%/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.out \
+ $(srcdir)/%reldir%/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.err \
+ $(srcdir)/%reldir%/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.out \
$(srcdir)/%reldir%/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.err \
$(srcdir)/%reldir%/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out \
$(srcdir)/%reldir%/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.err \
$(srcdir)/%reldir%/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out \
+ $(srcdir)/%reldir%/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.err \
+ $(srcdir)/%reldir%/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.out \
$(srcdir)/%reldir%/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.err \
$(srcdir)/%reldir%/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.out \
$(srcdir)/%reldir%/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.err \
$(srcdir)/%reldir%/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.out \
+ $(srcdir)/%reldir%/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.err \
+ $(srcdir)/%reldir%/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.out \
$(srcdir)/%reldir%/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.err \
$(srcdir)/%reldir%/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.out \
+ $(srcdir)/%reldir%/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.err \
+ $(srcdir)/%reldir%/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.out \
$(srcdir)/%reldir%/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.err \
$(srcdir)/%reldir%/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.out \
$(srcdir)/%reldir%/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.err \
$(srcdir)/%reldir%/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.out \
$(srcdir)/%reldir%/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.err \
$(srcdir)/%reldir%/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out \
- $(srcdir)/%reldir%/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.err \
- $(srcdir)/%reldir%/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.out \
$(srcdir)/%reldir%/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.err \
$(srcdir)/%reldir%/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.out \
$(srcdir)/%reldir%/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err \
@@ -478,6 +658,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.out \
$(srcdir)/%reldir%/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err \
$(srcdir)/%reldir%/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out \
+ $(srcdir)/%reldir%/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.err \
+ $(srcdir)/%reldir%/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.out \
$(srcdir)/%reldir%/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.err \
$(srcdir)/%reldir%/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out \
$(srcdir)/%reldir%/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err \
@@ -486,16 +668,22 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.out \
$(srcdir)/%reldir%/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.err \
$(srcdir)/%reldir%/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out \
+ $(srcdir)/%reldir%/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.err \
+ $(srcdir)/%reldir%/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.out \
$(srcdir)/%reldir%/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.err \
$(srcdir)/%reldir%/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out \
$(srcdir)/%reldir%/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err \
$(srcdir)/%reldir%/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.out \
+ $(srcdir)/%reldir%/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.err \
+ $(srcdir)/%reldir%/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.out \
$(srcdir)/%reldir%/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.err \
$(srcdir)/%reldir%/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.out \
$(srcdir)/%reldir%/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.err \
$(srcdir)/%reldir%/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out \
$(srcdir)/%reldir%/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.err \
$(srcdir)/%reldir%/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.out \
+ $(srcdir)/%reldir%/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.err \
+ $(srcdir)/%reldir%/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.out \
$(srcdir)/%reldir%/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.err \
$(srcdir)/%reldir%/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.out \
$(srcdir)/%reldir%/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.err \
@@ -504,6 +692,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.out \
$(srcdir)/%reldir%/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.err \
$(srcdir)/%reldir%/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.out \
+ $(srcdir)/%reldir%/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.err \
+ $(srcdir)/%reldir%/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.out \
$(srcdir)/%reldir%/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.err \
$(srcdir)/%reldir%/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out \
$(srcdir)/%reldir%/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.err \
@@ -514,10 +704,14 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.out \
$(srcdir)/%reldir%/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.err \
$(srcdir)/%reldir%/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out \
+ $(srcdir)/%reldir%/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.err \
+ $(srcdir)/%reldir%/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.out \
$(srcdir)/%reldir%/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.err \
$(srcdir)/%reldir%/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out \
$(srcdir)/%reldir%/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.err \
$(srcdir)/%reldir%/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out \
+ $(srcdir)/%reldir%/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.err \
+ $(srcdir)/%reldir%/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.out \
$(srcdir)/%reldir%/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.err \
$(srcdir)/%reldir%/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.out \
$(srcdir)/%reldir%/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.err \
@@ -528,20 +722,30 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.out \
$(srcdir)/%reldir%/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.err \
$(srcdir)/%reldir%/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out \
- $(srcdir)/%reldir%/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.err \
- $(srcdir)/%reldir%/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.out \
+ $(srcdir)/%reldir%/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.err \
+ $(srcdir)/%reldir%/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.out \
$(srcdir)/%reldir%/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err \
$(srcdir)/%reldir%/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.out \
+ $(srcdir)/%reldir%/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.err \
+ $(srcdir)/%reldir%/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.out \
$(srcdir)/%reldir%/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.err \
$(srcdir)/%reldir%/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.out \
+ $(srcdir)/%reldir%/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.err \
+ $(srcdir)/%reldir%/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.out \
+ $(srcdir)/%reldir%/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.err \
+ $(srcdir)/%reldir%/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.out \
$(srcdir)/%reldir%/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.err \
$(srcdir)/%reldir%/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.out \
+ $(srcdir)/%reldir%/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.err \
+ $(srcdir)/%reldir%/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.out \
$(srcdir)/%reldir%/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.err \
$(srcdir)/%reldir%/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.out \
$(srcdir)/%reldir%/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.err \
$(srcdir)/%reldir%/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.out \
$(srcdir)/%reldir%/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.err \
$(srcdir)/%reldir%/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.out \
+ $(srcdir)/%reldir%/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.err \
+ $(srcdir)/%reldir%/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.out \
$(srcdir)/%reldir%/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.err \
$(srcdir)/%reldir%/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.out \
$(srcdir)/%reldir%/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.err \
@@ -568,6 +772,10 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.out \
$(srcdir)/%reldir%/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.err \
$(srcdir)/%reldir%/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.out \
+ $(srcdir)/%reldir%/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.err \
+ $(srcdir)/%reldir%/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.out \
+ $(srcdir)/%reldir%/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.err \
+ $(srcdir)/%reldir%/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.out \
$(srcdir)/%reldir%/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.err \
$(srcdir)/%reldir%/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.out \
$(srcdir)/%reldir%/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.err \
@@ -606,8 +814,12 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.err \
$(srcdir)/%reldir%/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.out \
+ $(srcdir)/%reldir%/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.err \
+ $(srcdir)/%reldir%/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.err \
$(srcdir)/%reldir%/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.out \
+ $(srcdir)/%reldir%/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.err \
+ $(srcdir)/%reldir%/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.err \
$(srcdir)/%reldir%/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.err \
@@ -624,6 +836,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.err \
$(srcdir)/%reldir%/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.out \
+ $(srcdir)/%reldir%/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.err \
+ $(srcdir)/%reldir%/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err \
$(srcdir)/%reldir%/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.out \
$(srcdir)/%reldir%/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.err \
@@ -648,6 +862,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out \
$(srcdir)/%reldir%/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err \
$(srcdir)/%reldir%/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out \
+ $(srcdir)/%reldir%/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.err \
+ $(srcdir)/%reldir%/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.out \
$(srcdir)/%reldir%/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err \
$(srcdir)/%reldir%/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out \
$(srcdir)/%reldir%/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err \
@@ -740,10 +956,16 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.out \
$(srcdir)/%reldir%/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err \
$(srcdir)/%reldir%/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.out \
+ $(srcdir)/%reldir%/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.err \
+ $(srcdir)/%reldir%/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.out \
$(srcdir)/%reldir%/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err \
$(srcdir)/%reldir%/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out \
+ $(srcdir)/%reldir%/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.err \
+ $(srcdir)/%reldir%/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.out \
$(srcdir)/%reldir%/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err \
$(srcdir)/%reldir%/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out \
+ $(srcdir)/%reldir%/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.err \
+ $(srcdir)/%reldir%/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.out \
$(srcdir)/%reldir%/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err \
$(srcdir)/%reldir%/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out \
$(srcdir)/%reldir%/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err \
@@ -764,12 +986,16 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out \
$(srcdir)/%reldir%/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err \
$(srcdir)/%reldir%/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err \
@@ -778,6 +1004,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err \
@@ -790,8 +1018,6 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out \
- $(srcdir)/%reldir%/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err \
- $(srcdir)/%reldir%/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err \
@@ -802,6 +1028,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err \
@@ -814,8 +1042,12 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err \
@@ -868,6 +1100,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err \
@@ -880,6 +1114,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.err \
+ $(srcdir)/%reldir%/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err \
@@ -916,12 +1152,16 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.err \
@@ -930,14 +1170,24 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.out \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.err \
+ $(srcdir)/%reldir%/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.err \
$(srcdir)/%reldir%/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.out \
$(srcdir)/%reldir%/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.err \
@@ -946,6 +1196,10 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.out \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.err \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out \
+ $(srcdir)/%reldir%/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.err \
+ $(srcdir)/%reldir%/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.out \
+ $(srcdir)/%reldir%/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.err \
+ $(srcdir)/%reldir%/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.out \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.err \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.err \
@@ -970,6 +1224,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_a1e6ee4f098d525330d5f58a9d71cbbd816d51bb.out \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.err \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out \
+ $(srcdir)/%reldir%/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.err \
+ $(srcdir)/%reldir%/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.out \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.err \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.out \
$(srcdir)/%reldir%/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.err \
@@ -990,32 +1246,74 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.out \
$(srcdir)/%reldir%/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.err \
$(srcdir)/%reldir%/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.out \
+ $(srcdir)/%reldir%/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.err \
+ $(srcdir)/%reldir%/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.out \
$(srcdir)/%reldir%/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.err \
$(srcdir)/%reldir%/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.out \
$(srcdir)/%reldir%/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err \
$(srcdir)/%reldir%/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.out \
+ $(srcdir)/%reldir%/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.err \
+ $(srcdir)/%reldir%/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.out \
$(srcdir)/%reldir%/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err \
$(srcdir)/%reldir%/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.out \
- $(srcdir)/%reldir%/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err \
- $(srcdir)/%reldir%/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out \
$(srcdir)/%reldir%/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.err \
$(srcdir)/%reldir%/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.out \
+ $(srcdir)/%reldir%/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.err \
+ $(srcdir)/%reldir%/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.out \
+ $(srcdir)/%reldir%/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err \
+ $(srcdir)/%reldir%/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out \
+ $(srcdir)/%reldir%/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.err \
+ $(srcdir)/%reldir%/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.out \
+ $(srcdir)/%reldir%/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.err \
+ $(srcdir)/%reldir%/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.out \
+ $(srcdir)/%reldir%/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.err \
+ $(srcdir)/%reldir%/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.out \
+ $(srcdir)/%reldir%/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.err \
+ $(srcdir)/%reldir%/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.out \
+ $(srcdir)/%reldir%/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.err \
+ $(srcdir)/%reldir%/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.out \
+ $(srcdir)/%reldir%/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.err \
+ $(srcdir)/%reldir%/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out \
+ $(srcdir)/%reldir%/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.err \
+ $(srcdir)/%reldir%/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.out \
+ $(srcdir)/%reldir%/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.err \
+ $(srcdir)/%reldir%/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.out \
$(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err \
$(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out \
+ $(srcdir)/%reldir%/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.err \
+ $(srcdir)/%reldir%/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.out \
$(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err \
$(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out \
+ $(srcdir)/%reldir%/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.err \
+ $(srcdir)/%reldir%/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.out \
+ $(srcdir)/%reldir%/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.err \
+ $(srcdir)/%reldir%/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.out \
+ $(srcdir)/%reldir%/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.err \
+ $(srcdir)/%reldir%/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.out \
$(srcdir)/%reldir%/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.err \
$(srcdir)/%reldir%/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out \
$(srcdir)/%reldir%/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err \
$(srcdir)/%reldir%/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out \
+ $(srcdir)/%reldir%/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.err \
+ $(srcdir)/%reldir%/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.out \
$(srcdir)/%reldir%/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err \
$(srcdir)/%reldir%/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out \
+ $(srcdir)/%reldir%/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.err \
+ $(srcdir)/%reldir%/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.out \
$(srcdir)/%reldir%/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err \
$(srcdir)/%reldir%/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out \
$(srcdir)/%reldir%/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err \
$(srcdir)/%reldir%/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out \
$(srcdir)/%reldir%/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err \
$(srcdir)/%reldir%/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out \
+ $(srcdir)/%reldir%/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.err \
+ $(srcdir)/%reldir%/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out \
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err \
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out \
+ $(srcdir)/%reldir%/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.err \
+ $(srcdir)/%reldir%/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.out \
+ $(srcdir)/%reldir%/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.err \
+ $(srcdir)/%reldir%/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.out \
+ $(srcdir)/%reldir%/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.err \
+ $(srcdir)/%reldir%/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.out \
$()
diff --git a/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err b/test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.err
index e69de29..e69de29 100644
--- a/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err
+++ b/test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.err
diff --git a/test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.out b/test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.out
new file mode 100644
index 0000000..1a62b0e
--- /dev/null
+++ b/test/expected/test_cli.sh_0b3639753916f71254e8c9cce4ebb8bfd9978d3e.out
@@ -0,0 +1,5263 @@
+{
+ "tuning": {
+ "archive-manager": {
+ "min-free-space": 33554432,
+ "cache-ttl": "2d"
+ },
+ "piper": {
+ "max-size": 10485760,
+ "rotations": 4,
+ "ttl": "2d"
+ },
+ "file-vtab": {
+ "max-content-size": 33554432
+ },
+ "logfile": {
+ "max-unrecognized-lines": 1000
+ },
+ "remote": {
+ "cache-ttl": "2d",
+ "ssh": {
+ "command": "ssh",
+ "transfer-command": "cat > {0:} && chmod ugo+rx ./{0:}",
+ "start-command": "bash -c ./{0:}",
+ "flags": "",
+ "options": {
+
+ },
+ "config": {
+ "BatchMode": "yes",
+ "ConnectTimeout": "10"
+ }
+ }
+ },
+ "clipboard": {
+ "impls": {
+ "MacOS": {
+ "test": "command -v pbcopy",
+ "general": {
+ "write": "pbcopy",
+ "read": "pbpaste -Prefer txt"
+ },
+ "find": {
+ "write": "pbcopy -pboard find",
+ "read": "pbpaste -pboard find -Prefer txt"
+ }
+ },
+ "NeoVim": {
+ "test": "command -v win32yank.exe",
+ "general": {
+ "write": "win32yank.exe -i --crlf",
+ "read": "win32yank.exe -o --lf"
+ },
+ "find": {
+ "write": "",
+ "read": ""
+ }
+ },
+ "Wayland": {
+ "test": "test -n \"$WAYLAND_DISPLAY\"",
+ "general": {
+ "write": "wl-copy --foreground --type text/plain",
+ "read": "wl-paste --no-newline"
+ },
+ "find": {
+ "write": "",
+ "read": ""
+ }
+ },
+ "Windows": {
+ "test": "command -v clip.exe",
+ "general": {
+ "write": "clip.exe",
+ "read": ""
+ },
+ "find": {
+ "write": "",
+ "read": ""
+ }
+ },
+ "X11-xclip": {
+ "test": "test -n \"$DISPLAY\" && command -v xclip",
+ "general": {
+ "write": "xclip -i -selection clipboard",
+ "read": "xclip -o -selection clipboard"
+ },
+ "find": {
+ "write": "",
+ "read": ""
+ }
+ },
+ "tmux": {
+ "test": "test -n \"$TMUX\" -a -z \"$SSH_CLIENT\"",
+ "general": {
+ "write": "tmux load-buffer -",
+ "read": "tmux save-buffer -"
+ },
+ "find": {
+ "write": "",
+ "read": ""
+ }
+ }
+ }
+ },
+ "url-scheme": {
+ "docker": {
+ "handler": "docker-url-handler"
+ },
+ "docker-compose": {
+ "handler": "docker-compose-url-handler"
+ },
+ "hw": {
+ "handler": "hw-url-handler"
+ },
+ "journald": {
+ "handler": "journald-url-handler"
+ },
+ "piper": {
+ "handler": "piper-url-handler"
+ },
+ "podman": {
+ "handler": "docker-url-handler"
+ }
+ }
+ },
+ "ui": {
+ "clock-format": "%Y-%m-%dT%H:%M:%S %Z",
+ "dim-text": false,
+ "default-colors": true,
+ "keymap": "default",
+ "theme": "default",
+ "theme-defs": {
+ "default": {
+ "vars": {
+ "semantic_highlight_color": "semantic()"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "Silver",
+ "background-color": "Black",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "DarkCyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "#262626",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "Red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "Green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "Maroon",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "Cyan1",
+ "background-color": "Red",
+ "underline": true,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "Cyan1",
+ "background-color": "#5f005f",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "Maroon",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "Silver",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "Teal",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "Silver",
+ "background-color": "Teal",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "Black",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "Black",
+ "background-color": "#888",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "Black",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h2": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "Teal",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "Blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "Teal",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "Red",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "Silver",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "#444",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "#00f",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "string": {
+ "color": "Green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "Green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "Teal",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "Teal",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "Blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "Silver",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "Green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "type": {
+ "color": "Blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "Cyan1",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "Silver",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "Teal",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "Red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "Green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "Maroon",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "Green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "Yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "Red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "Blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "Black",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "Yellow",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "Red",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "Green",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "Red",
+ "background-color": "Grey37",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "Silver",
+ "background-color": "Grey37",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "Teal",
+ "background-color": "Blue",
+ "underline": true,
+ "bold": false
+ },
+ "title": {
+ "color": "Silver",
+ "background-color": "Blue",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "Black",
+ "background-color": "Silver",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "Black",
+ "background-color": "Teal",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "Silver",
+ "background-color": "Grey37",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "Purple",
+ "background-color": "",
+ "underline": true,
+ "bold": true
+ },
+ "suggestion": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "Yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "Red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "Red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "Red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+ "colors": {
+ "pattern": "(?:#[a-fA-F0-9]{6}|#[a-fA-F0-9]{3}\\b)",
+ "style": {
+ "color": "${semantic_highlight_color}",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "ipv4": {
+ "pattern": "\\b(?<!\\d\\.)\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b(?!\\.\\d)",
+ "style": {
+ "color": "${semantic_highlight_color}",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "xml": {
+ "pattern": "</?([^ >=!]+)[^>]*>",
+ "style": {
+ "color": "${semantic_highlight_color}",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "xml-decl": {
+ "pattern": "<!([^ >=!]+)[^>]*>",
+ "style": {
+ "color": "${semantic_highlight_color}",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ }
+ }
+ },
+ "dracula": {
+ "vars": {
+ "black": "#282A36",
+ "blue": "#BD93F9",
+ "cyan": "#8BE9FD",
+ "green": "#50FA7B",
+ "magenta": "#FF79C6",
+ "orange": "#FFB86C",
+ "pink": "#FF79C6",
+ "purple": "#BD93F9",
+ "red": "#FF5555",
+ "semantic_highlight_color": "semantic()",
+ "white": "#F8F8F2",
+ "yellow": "#F1FA8C"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "#f6f6f6",
+ "background-color": "$black",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "#1c1c1c",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "$cyan",
+ "background-color": "#44475A",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "$cyan",
+ "background-color": "#2a2c38",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$black",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$black",
+ "background-color": "$white",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$white",
+ "background-color": "#333",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$black",
+ "background-color": "#888",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "$purple",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "h2": {
+ "color": "$purple",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "$purple",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#6272A4",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "#99a",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "$yellow",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "$blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "$cyan",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "$green",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "$orange",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "#444",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "$pink",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "string": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "#6272A4",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "$pink",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "$orange",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "#78dce8",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "type": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "$pink",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "#f00",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "#0f0",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "#6272A4",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "$green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "$red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "#f6f6f6",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "$yellow",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "$red",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "$green",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "$red",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "#555",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "$black",
+ "background-color": "#5394ec",
+ "underline": true,
+ "bold": false
+ },
+ "title": {
+ "color": "#f6f6f6",
+ "background-color": "#5394ec",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "#5394ec",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "#555",
+ "background-color": "#66d9ee",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "#aaa",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "#fff",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "suggestion": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ },
+ "eldar": {
+ "vars": {
+ "black": "#000000",
+ "blue": "#729fcf",
+ "cyan": "#34e2e2",
+ "green": "#8ae234",
+ "magenta": "#ad7fa8",
+ "orange": "#ef8c29",
+ "red": "#ef2929",
+ "semantic_highlight_color": "semantic()",
+ "white": "#ffffff",
+ "yellow": "#fce94f"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "$white",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "$cyan",
+ "background-color": "$red",
+ "underline": true,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "$cyan",
+ "background-color": "#5f005f",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$black",
+ "background-color": "Grey37",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$black",
+ "background-color": "$white",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$white",
+ "background-color": "#333",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$black",
+ "background-color": "$white",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h2": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "#448",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "$blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "$red",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "#eee",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "#444",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "string": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "type": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "$green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "$red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "$black",
+ "background-color": "#999",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "$yellow",
+ "background-color": "#999",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "$red",
+ "background-color": "#999",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "$green",
+ "background-color": "#999",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "$red",
+ "background-color": "Grey",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "$black",
+ "background-color": "Grey",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "$black",
+ "background-color": "#5394ec",
+ "underline": true,
+ "bold": false
+ },
+ "title": {
+ "color": "$black",
+ "background-color": "$blue",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "#5394ec",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "$black",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$black",
+ "background-color": "Grey",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "#fff",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "suggestion": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ },
+ "grayscale": {
+ "vars": {
+ "black": "#2d2a2e",
+ "blue": "#5394ec",
+ "cyan": "#66d9ee",
+ "green": "#a7e22e",
+ "magenta": "#ae81ff",
+ "plaintext": "#ccc",
+ "red": "#f92772",
+ "white": "#f6f6f6",
+ "yellow": "#fe9720"
+ },
+ "styles": {
+ "identifier": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "text": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "#aaa",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "#fff",
+ "background-color": "#555",
+ "underline": true,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "#888",
+ "background-color": "#333",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$plaintext",
+ "background-color": "#626262",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$black",
+ "background-color": "$plaintext",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$plaintext",
+ "background-color": "#333",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$black",
+ "background-color": "#888",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h2": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "#999",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "#888",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "string": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "comment": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "#aaa",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "#aaa",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "#ccc",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "type": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "#f6f6f6",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "$yellow",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "$red",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "$green",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "$red",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "#555",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "$black",
+ "background-color": "#5394ec",
+ "underline": true,
+ "bold": false
+ },
+ "title": {
+ "color": "#f6f6f6",
+ "background-color": "#8a8a8a",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "#5394ec",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "#e4e4e4",
+ "background-color": "#626262",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "#555",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "#fff",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "suggestion": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ },
+ "monocai": {
+ "vars": {
+ "black": "#2d2a2e",
+ "blue": "#5394ec",
+ "cyan": "#66d9ee",
+ "green": "#a7e22e",
+ "magenta": "#ae81ff",
+ "orange": "#fc9867",
+ "red": "#f92772",
+ "semantic_highlight_color": "semantic()",
+ "white": "#808080",
+ "yellow": "#fe9720"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "#f6f6f6",
+ "background-color": "$black",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "#1c1c1c",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "$cyan",
+ "background-color": "#7f005f",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "$cyan",
+ "background-color": "#5f005f",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$white",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$black",
+ "background-color": "$white",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$white",
+ "background-color": "#333",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$black",
+ "background-color": "#888",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "h2": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "$orange",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "$blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "$red",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "#eee",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "#444",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "#ff6188",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "string": {
+ "color": "#ffd866",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "#949194",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "#a9dc76",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "#a9dc76",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "#78dce8",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "type": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "#f00",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "#0f0",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "#656e76",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "$green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "$red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "#f6f6f6",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "$yellow",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "$red",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "$green",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "$red",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "#555",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "$black",
+ "background-color": "#5394ec",
+ "underline": true,
+ "bold": false
+ },
+ "title": {
+ "color": "#f6f6f6",
+ "background-color": "#5394ec",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "#5394ec",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "#555",
+ "background-color": "#66d9ee",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "#aaa",
+ "background-color": "#2f2f2f",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "#fff",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "suggestion": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ },
+ "night-owl": {
+ "vars": {
+ "black": "#011627",
+ "blue": "#5394ec",
+ "cyan": "#33cccc",
+ "green": "#007f00",
+ "magenta": "#ff70ff",
+ "red": "#ff6868",
+ "semantic_highlight_color": "semantic()",
+ "white": "#d6deeb",
+ "yellow": "#cdcd00"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "#011627",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "#d6deeb",
+ "background-color": "#011627",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "#1c1c1c",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "#ef5350",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "#b39554",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "$cyan",
+ "background-color": "$red",
+ "underline": true,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "$cyan",
+ "background-color": "#5f005f",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$base00",
+ "background-color": "$base3",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$black",
+ "background-color": "#666",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$white",
+ "background-color": "#333",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$black",
+ "background-color": "$white",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h2": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "#2d5a80",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "$blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "$red",
+ "background-color": "#222",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "#eee",
+ "background-color": "#222",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "#444",
+ "background-color": "#222",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "#c792ea",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "string": {
+ "color": "#ecc48d",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "#676e95",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "#addb67",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "#addb67",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "#82aaff",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "#f78c6c",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "type": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "#b03435",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "#264b33",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "$green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "$red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "#82aaff",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "#f8f8f0",
+ "background-color": "#162d40",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "#b39554",
+ "background-color": "#162d40",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "#ef5350",
+ "background-color": "#162d40",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "#264b33",
+ "background-color": "#162d40",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "#ef5350",
+ "background-color": "#0F1F2B",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "#f0f0f0",
+ "background-color": "#0F1F2B",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "$black",
+ "background-color": "#2d5a80",
+ "underline": true,
+ "bold": true
+ },
+ "title": {
+ "color": "#f8f0f0",
+ "background-color": "#2d5a80",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "#5394ec",
+ "background-color": "#353535",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "#f8f8f0",
+ "background-color": "#005f5f",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "#aaa",
+ "background-color": "#0F1F2B",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "#2d5a80",
+ "background-color": "",
+ "underline": true,
+ "bold": true
+ },
+ "suggestion": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "#b39554",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "#ef5350",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "#ef5350",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "#ef5350",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ },
+ "solarized-dark": {
+ "vars": {
+ "base0": "#839496",
+ "base00": "#657b83",
+ "base01": "#586e75",
+ "base02": "#073642",
+ "base03": "#002b36",
+ "base1": "#93a1a1",
+ "base2": "#eee8d5",
+ "base3": "#fdf6e3",
+ "black": "#002b36",
+ "blue": "#268bd2",
+ "cyan": "#2aa198",
+ "green": "#859900",
+ "magenta": "#d33682",
+ "orange": "#cb4b16",
+ "red": "#dc322f",
+ "semantic_highlight_color": "semantic()",
+ "violet": "#6c71c4",
+ "yellow": "#b58900"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "$base0",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "$cyan",
+ "background-color": "$red",
+ "underline": true,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "$cyan",
+ "background-color": "#5f005f",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$base00",
+ "background-color": "$base3",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$base03",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$base0",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$base03",
+ "background-color": "$base0",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h2": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "#99a",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "$blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "$red",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "#eee",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "#444",
+ "background-color": "#121212",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "string": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "$base01",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "#888",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "type": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "$green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "$red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "$base2",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "$yellow",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "$red",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "$green",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "$red",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "$base1",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "$black",
+ "background-color": "#5394ec",
+ "underline": true,
+ "bold": false
+ },
+ "title": {
+ "color": "$base02",
+ "background-color": "$blue",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "$base01",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "$base00",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$base1",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "#fff",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "suggestion": {
+ "color": "$base02",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ },
+ "solarized-light": {
+ "vars": {
+ "base0": "#839496",
+ "base00": "#657b83",
+ "base01": "#586e75",
+ "base02": "#073642",
+ "base03": "#002b36",
+ "base1": "#93a1a1",
+ "base2": "#ededb0",
+ "base3": "#fdf6e3",
+ "black": "#002b36",
+ "blue": "#268bd2",
+ "cyan": "#2aa198",
+ "green": "#859900",
+ "magenta": "#d33682",
+ "orange": "#cb4b16",
+ "red": "#dc322f",
+ "semantic_highlight_color": "semantic()",
+ "violet": "#6c71c4",
+ "yellow": "#b58900"
+ },
+ "styles": {
+ "identifier": {
+ "color": "semantic()",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "text": {
+ "color": "$base00",
+ "background-color": "$base3",
+ "underline": false,
+ "bold": false
+ },
+ "selected-text": {
+ "color": "",
+ "background-color": "$cyan",
+ "underline": false,
+ "bold": false
+ },
+ "alt-text": {
+ "color": "",
+ "background-color": "$base2",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "ok": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "hidden": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "cursor-line": {
+ "color": "$base0",
+ "background-color": "#fafa4a",
+ "underline": true,
+ "bold": true
+ },
+ "disabled-cursor-line": {
+ "color": "$cyan",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "adjusted-time": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "skewed-time": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "file-offset": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "offset-time": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid-msg": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "popup": {
+ "color": "$base00",
+ "background-color": "$base2",
+ "underline": false,
+ "bold": false
+ },
+ "focused": {
+ "color": "$base03",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": false
+ },
+ "disabled-focused": {
+ "color": "$base0",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": false
+ },
+ "scrollbar": {
+ "color": "$base3",
+ "background-color": "$base00",
+ "underline": false,
+ "bold": false
+ },
+ "h1": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h2": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h3": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h4": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h5": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "h6": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "hr": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "hyperlink": {
+ "color": "",
+ "background-color": "",
+ "underline": true,
+ "bold": false
+ },
+ "list-glyph": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "breadcrumb": {
+ "color": "#99a",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "table-border": {
+ "color": "#444",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "table-header": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "quote-border": {
+ "color": "#666",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-text": {
+ "color": "",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-border": {
+ "color": "$blue",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "footnote-text": {
+ "color": "#eee",
+ "background-color": "#444",
+ "underline": false,
+ "bold": false
+ },
+ "snippet-border": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "indent-guide": {
+ "color": "$base1",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "syntax-styles": {
+ "inline-code": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "quoted-code": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "code-border": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "keyword": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "string": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": true
+ },
+ "comment": {
+ "color": "$base1",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "doc-directive": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "variable": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "symbol": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "null": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "ascii-control": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "non-ascii": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "number": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "type": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "function": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "separators-references-accessors": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-special": {
+ "color": "$cyan",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "re-repeat": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-delete": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-add": {
+ "color": "$green",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "diff-section": {
+ "color": "$magenta",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-low": {
+ "color": "",
+ "background-color": "$green",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-medium": {
+ "color": "",
+ "background-color": "$yellow",
+ "underline": false,
+ "bold": false
+ },
+ "spectrogram-high": {
+ "color": "",
+ "background-color": "$red",
+ "underline": false,
+ "bold": false
+ },
+ "file": {
+ "color": "$blue",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "status-styles": {
+ "text": {
+ "color": "$base2",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "warn": {
+ "color": "$yellow",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "alert": {
+ "color": "$red",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "active": {
+ "color": "$green",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "inactive-alert": {
+ "color": "$red",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "inactive": {
+ "color": "$base1",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "title-hotkey": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "title": {
+ "color": "$base2",
+ "background-color": "$base00",
+ "underline": false,
+ "bold": true
+ },
+ "disabled-title": {
+ "color": "$base2",
+ "background-color": "$base02",
+ "underline": false,
+ "bold": true
+ },
+ "subtitle": {
+ "color": "$base2",
+ "background-color": "$base01",
+ "underline": false,
+ "bold": true
+ },
+ "info": {
+ "color": "$base1",
+ "background-color": "$base03",
+ "underline": false,
+ "bold": false
+ },
+ "hotkey": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "suggestion": {
+ "color": "$base1",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "log-level-styles": {
+ "trace": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug5": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug4": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug3": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug2": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "debug": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "info": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "stats": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "notice": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "warning": {
+ "color": "$yellow",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "error": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "critical": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "fatal": {
+ "color": "$red",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ },
+ "invalid": {
+ "color": "",
+ "background-color": "",
+ "underline": false,
+ "bold": false
+ }
+ },
+ "highlights": {
+
+ }
+ }
+ },
+ "mouse": {
+ "mode": "disabled"
+ },
+ "movement": {
+ "mode": "cursor"
+ },
+ "keymap-defs": {
+ "de": {
+ "x21": {
+ "id": "",
+ "command": ":goto last 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x22": {
+ "id": "",
+ "command": ":goto last 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x24": {
+ "id": "",
+ "command": ":goto last 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x25": {
+ "id": "",
+ "command": ":goto last 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x26": {
+ "id": "",
+ "command": ":goto last hour",
+ "alt-msg": ""
+ },
+ "x31": {
+ "id": "",
+ "command": ":goto next 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x32": {
+ "id": "",
+ "command": ":goto next 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x33": {
+ "id": "",
+ "command": ":goto next 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x34": {
+ "id": "",
+ "command": ":goto next 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x35": {
+ "id": "",
+ "command": ":goto next 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x36": {
+ "id": "",
+ "command": ":goto next hour",
+ "alt-msg": ""
+ },
+ "x37": {
+ "id": "",
+ "command": ":goto previous minute",
+ "alt-msg": ""
+ },
+ "x38": {
+ "id": "",
+ "command": ":goto next minute",
+ "alt-msg": ""
+ },
+ "xc2xa7": {
+ "id": "",
+ "command": ":goto last 30 minutes after the hour",
+ "alt-msg": ""
+ }
+ },
+ "default": {
+ "x04": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET top = top + (height / 2), selection = (CASE movement WHEN 'top' THEN selection ELSE top + (height / 2) + (selection - top) END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": ""
+ },
+ "x06": {
+ "id": "",
+ "command": ";UPDATE lnav_view_filters SET enabled = 1 - enabled WHERE view_name = (SELECT name FROM lnav_view_stack WHERE name in ('log', 'text') ORDER BY rowid DESC LIMIT 1)",
+ "alt-msg": ""
+ },
+ "x0c": {
+ "id": "",
+ "command": ":write-screen-to -",
+ "alt-msg": ""
+ },
+ "x12": {
+ "id": "",
+ "command": ":reset-session",
+ "alt-msg": ""
+ },
+ "x15": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET top = max(0, top - (height / 2)), selection = (CASE movement WHEN 'top' THEN selection ELSE max(0, top - (height / 2) + (selection - top)) END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": ""
+ },
+ "x17": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET options = json_set(options, '$.word-wrap', CASE jget(options, '/word-wrap', 'none') WHEN 'none' THEN 'normal' ELSE 'none' END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": ""
+ },
+ "x18": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET movement = (CASE movement WHEN 'top' THEN 'cursor' ELSE 'top' END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": ""
+ },
+ "x21": {
+ "id": "",
+ "command": ":goto last 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x23": {
+ "id": "",
+ "command": ":goto last 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x24": {
+ "id": "",
+ "command": ":goto last 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x25": {
+ "id": "",
+ "command": ":goto last 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x2f": {
+ "id": "",
+ "command": ":prompt search",
+ "alt-msg": ""
+ },
+ "x31": {
+ "id": "",
+ "command": ":goto next 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x32": {
+ "id": "",
+ "command": ":goto next 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x33": {
+ "id": "",
+ "command": ":goto next 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x34": {
+ "id": "",
+ "command": ":goto next 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x35": {
+ "id": "",
+ "command": ":goto next 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x36": {
+ "id": "",
+ "command": ":goto next hour",
+ "alt-msg": ""
+ },
+ "x37": {
+ "id": "",
+ "command": ":goto previous minute",
+ "alt-msg": ""
+ },
+ "x38": {
+ "id": "",
+ "command": ":goto next minute",
+ "alt-msg": ""
+ },
+ "x3a": {
+ "id": "",
+ "command": ":prompt command",
+ "alt-msg": ""
+ },
+ "x3b": {
+ "id": "",
+ "command": ":prompt sql",
+ "alt-msg": ""
+ },
+ "x3d": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET paused = 1 - paused",
+ "alt-msg": ""
+ },
+ "x3f": {
+ "id": "",
+ "command": ":toggle-view help",
+ "alt-msg": ""
+ },
+ "x40": {
+ "id": "",
+ "command": ":goto last 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x45": {
+ "id": "",
+ "command": ":prev-mark error",
+ "alt-msg": "${keymap_def_alt_warning}"
+ },
+ "x4e": {
+ "id": "",
+ "command": ":prev-mark search",
+ "alt-msg": "${keymap_def_scroll_horiz}"
+ },
+ "x50": {
+ "id": "",
+ "command": ":toggle-view pretty",
+ "alt-msg": "${keymap_def_pop_view}"
+ },
+ "x51": {
+ "id": "",
+ "command": "|lnav-pop-view ${keyseq}",
+ "alt-msg": ""
+ },
+ "x54": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET options = json_set(options, '$.row-time-offset', CASE jget(options, '/row-time-offset', 'hide') WHEN 'hide' THEN 'show' ELSE 'hide' END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": "${keymap_def_time_offset}"
+ },
+ "x55": {
+ "id": "",
+ "command": ":prev-mark",
+ "alt-msg": ""
+ },
+ "x57": {
+ "id": "",
+ "command": ":prev-mark warning",
+ "alt-msg": "${keymap_def_alt_hour_boundary}"
+ },
+ "x58": {
+ "id": "",
+ "command": ":close",
+ "alt-msg": ""
+ },
+ "x5e": {
+ "id": "",
+ "command": ":goto last hour",
+ "alt-msg": ""
+ },
+ "x60": {
+ "id": "org.lnav.key.breadcrumb.focus",
+ "command": ":prompt breadcrumb",
+ "alt-msg": ""
+ },
+ "x63": {
+ "id": "",
+ "command": "|lnav-copy-text",
+ "alt-msg": "${keymap_def_clear}"
+ },
+ "x65": {
+ "id": "",
+ "command": ":next-mark error",
+ "alt-msg": "${keymap_def_alt_warning}"
+ },
+ "x67": {
+ "id": "",
+ "command": ":goto 0",
+ "alt-msg": ""
+ },
+ "x69": {
+ "id": "",
+ "command": ":toggle-view histogram",
+ "alt-msg": "${keymap_def_zoom}"
+ },
+ "x6d": {
+ "id": "",
+ "command": ":mark",
+ "alt-msg": "${keymap_def_next_user_mark}"
+ },
+ "x6e": {
+ "id": "",
+ "command": ":next-mark search",
+ "alt-msg": "${keymap_def_scroll_horiz}"
+ },
+ "x70": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET options = json_set(options, '$.row-details', CASE jget(options, '/row-details', 'hide') WHEN 'hide' THEN 'show' ELSE 'hide' END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": ""
+ },
+ "x71": {
+ "id": "",
+ "command": "|lnav-pop-view ${keyseq}",
+ "alt-msg": ""
+ },
+ "x75": {
+ "id": "",
+ "command": ":next-mark",
+ "alt-msg": "${keymap_def_next_mark}"
+ },
+ "x76": {
+ "id": "",
+ "command": ":toggle-view db",
+ "alt-msg": ""
+ },
+ "x77": {
+ "id": "",
+ "command": ":next-mark warning",
+ "alt-msg": "${keymap_def_alt_hour_boundary}"
+ },
+ "x78": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET options = json_set(options, '$.hidden-fields', CASE jget(options, '/hidden-fields', 'hide') WHEN 'hide' THEN 'show' ELSE 'hide' END) WHERE name = (SELECT name FROM lnav_top_view)",
+ "alt-msg": ""
+ },
+ "x7b": {
+ "id": "",
+ "command": ":prev-section",
+ "alt-msg": "${keymap_def_next_location}"
+ },
+ "x7c": {
+ "id": "",
+ "command": ":prompt script",
+ "alt-msg": ""
+ },
+ "x7d": {
+ "id": "",
+ "command": ":next-section",
+ "alt-msg": "${keymap_def_prev_location}"
+ }
+ },
+ "fr": {
+ "x22": {
+ "id": "",
+ "command": ":goto next 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x26": {
+ "id": "",
+ "command": ":goto next 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x27": {
+ "id": "",
+ "command": ":goto next 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x28": {
+ "id": "",
+ "command": ":goto next 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x2d": {
+ "id": "",
+ "command": ":goto next hour",
+ "alt-msg": ""
+ },
+ "x31": {
+ "id": "",
+ "command": ":goto last 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x32": {
+ "id": "",
+ "command": ":goto last 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x33": {
+ "id": "",
+ "command": ":goto last 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x34": {
+ "id": "",
+ "command": ":goto last 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x35": {
+ "id": "",
+ "command": ":goto last 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x36": {
+ "id": "",
+ "command": ":goto last hour",
+ "alt-msg": ""
+ },
+ "x37": {
+ "id": "",
+ "command": ":goto previous minute",
+ "alt-msg": ""
+ },
+ "xc3xa8": {
+ "id": "",
+ "command": ":goto next minute",
+ "alt-msg": ""
+ },
+ "xc3xa9": {
+ "id": "",
+ "command": ":goto next 20 minutes after the hour",
+ "alt-msg": ""
+ }
+ },
+ "sv": {
+ "x22": {
+ "id": "",
+ "command": ":goto last 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x26": {
+ "id": "",
+ "command": ":goto last hour",
+ "alt-msg": ""
+ },
+ "x2b": {
+ "id": "",
+ "command": ";UPDATE lnav_views SET paused = 1 - paused",
+ "alt-msg": ""
+ },
+ "x3d": {
+ "id": "",
+ "command": ":goto last day",
+ "alt-msg": ""
+ },
+ "x60": {
+ "id": "",
+ "command": ":prompt breadcrumb",
+ "alt-msg": ""
+ },
+ "xc2xa4": {
+ "id": "",
+ "command": ":goto last 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "xc2xa7": {
+ "id": "org.lnav.key.breadcrumb.focus",
+ "command": ":prompt breadcrumb",
+ "alt-msg": ""
+ },
+ "xe2x82xac": {
+ "id": "",
+ "command": ":goto last 40 minutes after the hour",
+ "alt-msg": ""
+ }
+ },
+ "uk": {
+ "x22": {
+ "id": "",
+ "command": ":goto last 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "xc2xa3": {
+ "id": "",
+ "command": ":goto last 30 minutes after the hour",
+ "alt-msg": ""
+ }
+ },
+ "us": {
+ "x21": {
+ "id": "",
+ "command": ":goto last 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x23": {
+ "id": "",
+ "command": ":goto last 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x24": {
+ "id": "",
+ "command": ":goto last 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x25": {
+ "id": "",
+ "command": ":goto last 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x31": {
+ "id": "",
+ "command": ":goto next 10 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x32": {
+ "id": "",
+ "command": ":goto next 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x33": {
+ "id": "",
+ "command": ":goto next 30 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x34": {
+ "id": "",
+ "command": ":goto next 40 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x35": {
+ "id": "",
+ "command": ":goto next 50 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x36": {
+ "id": "",
+ "command": ":goto next hour",
+ "alt-msg": ""
+ },
+ "x37": {
+ "id": "",
+ "command": ":goto previous minute",
+ "alt-msg": ""
+ },
+ "x38": {
+ "id": "",
+ "command": ":goto next minute",
+ "alt-msg": ""
+ },
+ "x40": {
+ "id": "",
+ "command": ":goto last 20 minutes after the hour",
+ "alt-msg": ""
+ },
+ "x5e": {
+ "id": "",
+ "command": ":goto last hour",
+ "alt-msg": ""
+ }
+ }
+ }
+ },
+ "log": {
+ "date-time": {
+ "convert-zoned-to-local": true
+ },
+ "watch-expressions": {
+
+ },
+ "annotations": {
+ "com.vmware.vmacore.backtrace": {
+ "description": "Convert a vmacore backtrace into human-readable text",
+ "condition": ":log_body LIKE '%[context]%[/context]%'",
+ "handler": "com.vmware.btresolver.py"
+ },
+ "org.lnav.test": {
+ "description": "test annotation",
+ "condition": ":c_ip IS NOT NULL AND $TEST_ANNO = '1'",
+ "handler": "anno-test.sh"
+ }
+ }
+ },
+ "global": {
+ "keymap_def_alt_hour_boundary": "Press ${ansi_bold}6${ansi_bold}/${ansi_bold}^${ansi_norm} to move to the next/previous hour boundary",
+ "keymap_def_alt_warning": "Press ${ansi_bold}w${ansi_norm}/${ansi_bold}W${ansi_norm} to move forward/backward through ${ansi_yellow}warning${ansi_norm} messages",
+ "keymap_def_clear": "Press ${ansi_bold}C${ansi_norm} to clear marked messages",
+ "keymap_def_db_view": "Press ${ansi_bold}v${ansi_norm}/${ansi_bold}V${ansi_norm} to switch to the SQL result view",
+ "keymap_def_hist_view": "Press ${ansi_bold}i${ansi_norm}/${ansi_bold}I${ansi_norm} to switch to the histogram view",
+ "keymap_def_next_mark": "Press ${ansi_bold}c${ansi_norm} to copy marked lines to the clipboard; press ${ansi_bold}C${ansi_norm} to clear marked lines",
+ "keymap_def_next_section": "Press ${ansi_bold}}${ansi_norm} to move to the next section in the view",
+ "keymap_def_next_user_mark": "Press ${ansi_bold}u${ansi_norm}/${ansi_bold}U${ansi_norm} to move forward/backward through user bookmarks",
+ "keymap_def_pop_view": "Press ${ansi_bold}q${ansi_norm} to return to the previous view",
+ "keymap_def_prev_section": "Press ${ansi_bold}{${ansi_norm} to move to the previous section in the view",
+ "keymap_def_scroll_horiz": "Press \\'${ansi_bold}>${ansi_norm}\\' or \\'${ansi_bold}<${ansi_norm}\\' to scroll horizontally to a search result",
+ "keymap_def_text_view": "Press ${ansi_bold}t${ansi_norm} to switch to the text view",
+ "keymap_def_time_offset": "Press ${ansi_bold}s${ansi_norm}/${ansi_bold}S${ansi_norm} to move forward/backward through slow downs",
+ "keymap_def_zoom": "Press ${ansi_bold}z${ansi_norm}/${ansi_bold}Z${ansi_norm} to zoom in/out"
+ }
+}
+
diff --git a/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.err b/test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.err
index e69de29..e69de29 100644
--- a/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.err
+++ b/test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.err
diff --git a/test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.out b/test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.out
new file mode 100644
index 0000000..45b983b
--- /dev/null
+++ b/test/expected/test_cli.sh_108c6922cde063429f76abc3fdb8a81ad9a2f671.out
@@ -0,0 +1 @@
+hi
diff --git a/test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.err b/test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.err
new file mode 100644
index 0000000..0f7ae0c
--- /dev/null
+++ b/test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.err
@@ -0,0 +1,4 @@
+ⓘ info: the following piper captures were found in:
+ piper-tmp/lnav-user-{uid}-work/piper
+ = note: The captures currently consume 33B of disk space. File sizes include associated metadata.
+ = help: You can reopen a capture by passing the piper URL to lnav
diff --git a/test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.out b/test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.out
new file mode 100644
index 0000000..26c7111
--- /dev/null
+++ b/test/expected/test_cli.sh_10c33e465ef7681c6b5519d05d557426b26cd43d.out
@@ -0,0 +1 @@
+ just now piper://p-e25e2eb68547f31e42da0818b4d0084f-000  33.0 B “[0] echo hi”
diff --git a/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out b/test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.err
index e69de29..e69de29 100644
--- a/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out
+++ b/test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.err
diff --git a/test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.out b/test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.out
new file mode 100644
index 0000000..45b983b
--- /dev/null
+++ b/test/expected/test_cli.sh_3114508cf42fb2608ef77f4bc294a84885c97a79.out
@@ -0,0 +1 @@
+hi
diff --git a/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.out b/test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.err
index e69de29..e69de29 100644
--- a/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.out
+++ b/test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.err
diff --git a/test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.out b/test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.out
new file mode 100644
index 0000000..45b983b
--- /dev/null
+++ b/test/expected/test_cli.sh_4327033cfae0d4c170a38a3c4a570520bfabb493.out
@@ -0,0 +1 @@
+hi
diff --git a/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.out b/test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.err
index e69de29..e69de29 100644
--- a/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.out
+++ b/test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.err
diff --git a/test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.out b/test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.out
new file mode 100644
index 0000000..f6223f2
--- /dev/null
+++ b/test/expected/test_cli.sh_76aa57821598962e59063a40c20171040c95a731.out
@@ -0,0 +1,9 @@
+[
+ {
+ "filepath": "[0] echo hi",
+ "descriptor": "org.lnav.piper.header",
+ "mimetype": "application/json",
+ "ctime": "2013-06-06T19:13:20.000",
+ "cwd": "{test_dir}"
+ }
+]
diff --git a/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out b/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out
deleted file mode 100644
index 1e0a993..0000000
--- a/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out
+++ /dev/null
@@ -1,3 +0,0 @@
-2013-06-06T19:13:20.123 Hello, World!
-2013-06-06T19:13:20.123 Goodbye, World!
-2013-06-06T19:13:20.123 ---- END-OF-STDIN ----
diff --git a/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.out b/test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.err
index e69de29..e69de29 100644
--- a/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.out
+++ b/test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.err
diff --git a/test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.out b/test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.out
new file mode 100644
index 0000000..f6223f2
--- /dev/null
+++ b/test/expected/test_cli.sh_af3ace7762b4cc150fcdcac86083b379bded7b32.out
@@ -0,0 +1,9 @@
+[
+ {
+ "filepath": "[0] echo hi",
+ "descriptor": "org.lnav.piper.header",
+ "mimetype": "application/json",
+ "ctime": "2013-06-06T19:13:20.000",
+ "cwd": "{test_dir}"
+ }
+]
diff --git a/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.err b/test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.err
index e69de29..e69de29 100644
--- a/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.err
+++ b/test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.err
diff --git a/test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.out b/test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.out
new file mode 100644
index 0000000..7600bd0
--- /dev/null
+++ b/test/expected/test_cli.sh_c69c835a3c43210225cf62564b3e9584c899af20.out
@@ -0,0 +1,4 @@
+Feb 25 16:20:15 192.168.4.2 haproxy[7]: 95.216.197.33:56224 [25/Feb/2019:16:20:10.111] prod_http_in/sktst2: SSL handshake failure
+Feb 25 16:20:16 192.168.4.2 haproxy[7]: 87.183.41.77:50188 [25/Feb/2019:16:20:12.321] prod_http_in~ bk_ktest_sonst/nginx_sonst 0/0/1/0/1 200 5959 - - ---- 9/9/0/0/0 0/0 {Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0} {} "GET /media/pi_fontawesome/css/font-awesome.css?1550939694 HTTP/1.1"
+Feb 25 16:20:17 192.168.4.2 haproxy[7]: 87.183.41.77:50187 [25/Feb/2019:16:20:12.325] prod_http_in~ bk_ktest_sonst/nginx_sonst 0/0/1/0/1 200 1859 - - ---- 9/9/0/0/0 0/0 {Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0} {} "GET /media/pi_popup/1.1.0/magnific-popup.css?1550939704 HTTP/1.1"
+Feb 25 16:20:18 192.168.4.2 haproxy[7]: 87.183.41.77:50189 [25/Feb/2019:16:20:12.331] prod_http_in~ bk_ktest_sonst/nginx_sonst 0/0/1/0/1 200 2496 - - ---- 9/9/0/0/0 0/0 {Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0} {} "GET /media/core/core.css?1550939640 HTTP/1.1"
diff --git a/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.err b/test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.err
index e69de29..e69de29 100644
--- a/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.err
+++ b/test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.err
diff --git a/test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.out b/test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.out
new file mode 100644
index 0000000..22a87a3
--- /dev/null
+++ b/test/expected/test_cli.sh_cc06341dd560f927512e92c7c0985ed8b25827ae.out
@@ -0,0 +1,1187 @@
+/global/keymap_def_alt_hour_boundary -> default-keymap.json:5
+/global/keymap_def_alt_warning -> default-keymap.json:4
+/global/keymap_def_clear -> default-keymap.json:13
+/global/keymap_def_db_view -> default-keymap.json:8
+/global/keymap_def_hist_view -> default-keymap.json:9
+/global/keymap_def_next_mark -> default-keymap.json:16
+/global/keymap_def_next_section -> default-keymap.json:15
+/global/keymap_def_next_user_mark -> default-keymap.json:7
+/global/keymap_def_pop_view -> default-keymap.json:11
+/global/keymap_def_prev_section -> default-keymap.json:14
+/global/keymap_def_scroll_horiz -> default-keymap.json:6
+/global/keymap_def_text_view -> default-keymap.json:10
+/global/keymap_def_time_offset -> default-keymap.json:17
+/global/keymap_def_zoom -> default-keymap.json:12
+/log/annotations/com.vmware.vmacore.backtrace/condition -> root-config.json:23
+/log/annotations/com.vmware.vmacore.backtrace/description -> root-config.json:22
+/log/annotations/com.vmware.vmacore.backtrace/handler -> root-config.json:24
+/log/annotations/org.lnav.test/condition -> {test_dir}/configs/installed/anno-test.json:7
+/log/annotations/org.lnav.test/description -> {test_dir}/configs/installed/anno-test.json:6
+/log/annotations/org.lnav.test/handler -> {test_dir}/configs/installed/anno-test.json:8
+/log/date-time/convert-zoned-to-local -> root-config.json:18
+/tuning/archive-manager/cache-ttl -> root-config.json:31
+/tuning/archive-manager/min-free-space -> root-config.json:30
+/tuning/clipboard/impls/MacOS/find/read -> root-config.json:59
+/tuning/clipboard/impls/MacOS/find/write -> root-config.json:58
+/tuning/clipboard/impls/MacOS/general/read -> root-config.json:55
+/tuning/clipboard/impls/MacOS/general/write -> root-config.json:54
+/tuning/clipboard/impls/MacOS/test -> root-config.json:52
+/tuning/clipboard/impls/NeoVim/general/read -> root-config.json:87
+/tuning/clipboard/impls/NeoVim/general/write -> root-config.json:86
+/tuning/clipboard/impls/NeoVim/test -> root-config.json:84
+/tuning/clipboard/impls/Wayland/general/read -> root-config.json:66
+/tuning/clipboard/impls/Wayland/general/write -> root-config.json:65
+/tuning/clipboard/impls/Wayland/test -> root-config.json:63
+/tuning/clipboard/impls/Windows/general/write -> root-config.json:93
+/tuning/clipboard/impls/Windows/test -> root-config.json:91
+/tuning/clipboard/impls/X11-xclip/general/read -> root-config.json:73
+/tuning/clipboard/impls/X11-xclip/general/write -> root-config.json:72
+/tuning/clipboard/impls/X11-xclip/test -> root-config.json:70
+/tuning/clipboard/impls/tmux/general/read -> root-config.json:80
+/tuning/clipboard/impls/tmux/general/write -> root-config.json:79
+/tuning/clipboard/impls/tmux/test -> root-config.json:77
+/tuning/piper/max-size -> root-config.json:45
+/tuning/piper/rotations -> root-config.json:46
+/tuning/piper/ttl -> root-config.json:47
+/tuning/remote/ssh/command -> root-config.json:35
+/tuning/remote/ssh/config/BatchMode -> root-config.json:37
+/tuning/remote/ssh/config/ConnectTimeout -> root-config.json:38
+/tuning/remote/ssh/start-command -> root-config.json:40
+/tuning/remote/ssh/transfer-command -> root-config.json:41
+/tuning/url-scheme/docker-compose/handler -> root-config.json:103
+/tuning/url-scheme/docker/handler -> root-config.json:100
+/tuning/url-scheme/hw/handler -> {test_dir}/configs/installed/hw-url-handler.json:6
+/tuning/url-scheme/journald/handler -> root-config.json:106
+/tuning/url-scheme/piper/handler -> root-config.json:109
+/tuning/url-scheme/podman/handler -> root-config.json:112
+/ui/clock-format -> root-config.json:4
+/ui/default-colors -> root-config.json:6
+/ui/dim-text -> root-config.json:5
+/ui/keymap -> root-config.json:7
+/ui/keymap-defs/de/x21/command -> de-keymap.json:31
+/ui/keymap-defs/de/x22/command -> de-keymap.json:34
+/ui/keymap-defs/de/x24/command -> de-keymap.json:40
+/ui/keymap-defs/de/x25/command -> de-keymap.json:43
+/ui/keymap-defs/de/x26/command -> de-keymap.json:46
+/ui/keymap-defs/de/x31/command -> de-keymap.json:7
+/ui/keymap-defs/de/x32/command -> de-keymap.json:10
+/ui/keymap-defs/de/x33/command -> de-keymap.json:13
+/ui/keymap-defs/de/x34/command -> de-keymap.json:16
+/ui/keymap-defs/de/x35/command -> de-keymap.json:19
+/ui/keymap-defs/de/x36/command -> de-keymap.json:22
+/ui/keymap-defs/de/x37/command -> de-keymap.json:25
+/ui/keymap-defs/de/x38/command -> de-keymap.json:28
+/ui/keymap-defs/de/xc2xa7/command -> de-keymap.json:37
+/ui/keymap-defs/default/x04/command -> default-keymap.json:77
+/ui/keymap-defs/default/x06/command -> default-keymap.json:65
+/ui/keymap-defs/default/x0c/command -> default-keymap.json:68
+/ui/keymap-defs/default/x12/command -> default-keymap.json:71
+/ui/keymap-defs/default/x15/command -> default-keymap.json:80
+/ui/keymap-defs/default/x17/command -> default-keymap.json:146
+/ui/keymap-defs/default/x18/command -> default-keymap.json:74
+/ui/keymap-defs/default/x21/command -> default-keymap.json:47
+/ui/keymap-defs/default/x23/command -> default-keymap.json:53
+/ui/keymap-defs/default/x24/command -> default-keymap.json:56
+/ui/keymap-defs/default/x25/command -> default-keymap.json:59
+/ui/keymap-defs/default/x2f/command -> default-keymap.json:95
+/ui/keymap-defs/default/x31/command -> default-keymap.json:23
+/ui/keymap-defs/default/x32/command -> default-keymap.json:26
+/ui/keymap-defs/default/x33/command -> default-keymap.json:29
+/ui/keymap-defs/default/x34/command -> default-keymap.json:32
+/ui/keymap-defs/default/x35/command -> default-keymap.json:35
+/ui/keymap-defs/default/x36/command -> default-keymap.json:38
+/ui/keymap-defs/default/x37/command -> default-keymap.json:41
+/ui/keymap-defs/default/x38/command -> default-keymap.json:44
+/ui/keymap-defs/default/x3a/command -> default-keymap.json:89
+/ui/keymap-defs/default/x3b/command -> default-keymap.json:98
+/ui/keymap-defs/default/x3d/command -> default-keymap.json:83
+/ui/keymap-defs/default/x3f/command -> default-keymap.json:164
+/ui/keymap-defs/default/x40/command -> default-keymap.json:50
+/ui/keymap-defs/default/x45/alt-msg -> default-keymap.json:102
+/ui/keymap-defs/default/x45/command -> default-keymap.json:101
+/ui/keymap-defs/default/x4e/alt-msg -> default-keymap.json:129
+/ui/keymap-defs/default/x4e/command -> default-keymap.json:128
+/ui/keymap-defs/default/x50/alt-msg -> default-keymap.json:172
+/ui/keymap-defs/default/x50/command -> default-keymap.json:171
+/ui/keymap-defs/default/x51/command -> default-keymap.json:185
+/ui/keymap-defs/default/x54/alt-msg -> default-keymap.json:137
+/ui/keymap-defs/default/x54/command -> default-keymap.json:136
+/ui/keymap-defs/default/x55/command -> default-keymap.json:153
+/ui/keymap-defs/default/x57/alt-msg -> default-keymap.json:110
+/ui/keymap-defs/default/x57/command -> default-keymap.json:109
+/ui/keymap-defs/default/x58/command -> default-keymap.json:86
+/ui/keymap-defs/default/x5e/command -> default-keymap.json:62
+/ui/keymap-defs/default/x60/command -> default-keymap.json:176
+/ui/keymap-defs/default/x60/id -> default-keymap.json:175
+/ui/keymap-defs/default/x63/alt-msg -> default-keymap.json:118
+/ui/keymap-defs/default/x63/command -> default-keymap.json:117
+/ui/keymap-defs/default/x65/alt-msg -> default-keymap.json:106
+/ui/keymap-defs/default/x65/command -> default-keymap.json:105
+/ui/keymap-defs/default/x67/command -> default-keymap.json:121
+/ui/keymap-defs/default/x69/alt-msg -> default-keymap.json:168
+/ui/keymap-defs/default/x69/command -> default-keymap.json:167
+/ui/keymap-defs/default/x6d/alt-msg -> default-keymap.json:125
+/ui/keymap-defs/default/x6d/command -> default-keymap.json:124
+/ui/keymap-defs/default/x6e/alt-msg -> default-keymap.json:133
+/ui/keymap-defs/default/x6e/command -> default-keymap.json:132
+/ui/keymap-defs/default/x70/command -> default-keymap.json:140
+/ui/keymap-defs/default/x71/command -> default-keymap.json:182
+/ui/keymap-defs/default/x75/alt-msg -> default-keymap.json:150
+/ui/keymap-defs/default/x75/command -> default-keymap.json:149
+/ui/keymap-defs/default/x76/command -> default-keymap.json:179
+/ui/keymap-defs/default/x77/alt-msg -> default-keymap.json:114
+/ui/keymap-defs/default/x77/command -> default-keymap.json:113
+/ui/keymap-defs/default/x78/command -> default-keymap.json:143
+/ui/keymap-defs/default/x7b/alt-msg -> default-keymap.json:161
+/ui/keymap-defs/default/x7b/command -> default-keymap.json:160
+/ui/keymap-defs/default/x7c/command -> default-keymap.json:92
+/ui/keymap-defs/default/x7d/alt-msg -> default-keymap.json:157
+/ui/keymap-defs/default/x7d/command -> default-keymap.json:156
+/ui/keymap-defs/fr/x22/command -> fr-keymap.json:13
+/ui/keymap-defs/fr/x26/command -> fr-keymap.json:7
+/ui/keymap-defs/fr/x27/command -> fr-keymap.json:16
+/ui/keymap-defs/fr/x28/command -> fr-keymap.json:19
+/ui/keymap-defs/fr/x2d/command -> fr-keymap.json:22
+/ui/keymap-defs/fr/x31/command -> fr-keymap.json:28
+/ui/keymap-defs/fr/x32/command -> fr-keymap.json:31
+/ui/keymap-defs/fr/x33/command -> fr-keymap.json:34
+/ui/keymap-defs/fr/x34/command -> fr-keymap.json:37
+/ui/keymap-defs/fr/x35/command -> fr-keymap.json:40
+/ui/keymap-defs/fr/x36/command -> fr-keymap.json:43
+/ui/keymap-defs/fr/x37/command -> fr-keymap.json:46
+/ui/keymap-defs/fr/xc3xa8/command -> fr-keymap.json:25
+/ui/keymap-defs/fr/xc3xa9/command -> fr-keymap.json:10
+/ui/keymap-defs/sv/x22/command -> sv-keymap.json:7
+/ui/keymap-defs/sv/x26/command -> sv-keymap.json:16
+/ui/keymap-defs/sv/x2b/command -> sv-keymap.json:22
+/ui/keymap-defs/sv/x3d/command -> sv-keymap.json:19
+/ui/keymap-defs/sv/x60/command -> sv-keymap.json:26
+/ui/keymap-defs/sv/x60/id -> sv-keymap.json:25
+/ui/keymap-defs/sv/xc2xa4/command -> sv-keymap.json:10
+/ui/keymap-defs/sv/xc2xa7/command -> sv-keymap.json:30
+/ui/keymap-defs/sv/xc2xa7/id -> sv-keymap.json:29
+/ui/keymap-defs/sv/xe2x82xac/command -> sv-keymap.json:13
+/ui/keymap-defs/uk/x22/command -> uk-keymap.json:7
+/ui/keymap-defs/uk/xc2xa3/command -> uk-keymap.json:10
+/ui/keymap-defs/us/x21/command -> us-keymap.json:31
+/ui/keymap-defs/us/x23/command -> us-keymap.json:37
+/ui/keymap-defs/us/x24/command -> us-keymap.json:40
+/ui/keymap-defs/us/x25/command -> us-keymap.json:43
+/ui/keymap-defs/us/x31/command -> us-keymap.json:7
+/ui/keymap-defs/us/x32/command -> us-keymap.json:10
+/ui/keymap-defs/us/x33/command -> us-keymap.json:13
+/ui/keymap-defs/us/x34/command -> us-keymap.json:16
+/ui/keymap-defs/us/x35/command -> us-keymap.json:19
+/ui/keymap-defs/us/x36/command -> us-keymap.json:22
+/ui/keymap-defs/us/x37/command -> us-keymap.json:25
+/ui/keymap-defs/us/x38/command -> us-keymap.json:28
+/ui/keymap-defs/us/x40/command -> us-keymap.json:34
+/ui/keymap-defs/us/x5e/command -> us-keymap.json:46
+/ui/mouse/mode -> root-config.json:10
+/ui/movement/mode -> root-config.json:13
+/ui/theme -> root-config.json:8
+/ui/theme-defs/default/highlights/colors/pattern -> default-theme.json:295
+/ui/theme-defs/default/highlights/colors/style/color -> default-theme.json:297
+/ui/theme-defs/default/highlights/ipv4/pattern -> default-theme.json:301
+/ui/theme-defs/default/highlights/ipv4/style/color -> default-theme.json:303
+/ui/theme-defs/default/highlights/xml-decl/pattern -> default-theme.json:313
+/ui/theme-defs/default/highlights/xml-decl/style/color -> default-theme.json:315
+/ui/theme-defs/default/highlights/xml/pattern -> default-theme.json:307
+/ui/theme-defs/default/highlights/xml/style/color -> default-theme.json:309
+/ui/theme-defs/default/log-level-styles/critical/color -> default-theme.json:287
+/ui/theme-defs/default/log-level-styles/error/color -> default-theme.json:284
+/ui/theme-defs/default/log-level-styles/fatal/color -> default-theme.json:290
+/ui/theme-defs/default/log-level-styles/warning/color -> default-theme.json:281
+/ui/theme-defs/default/status-styles/active/background-color -> default-theme.json:254
+/ui/theme-defs/default/status-styles/active/color -> default-theme.json:253
+/ui/theme-defs/default/status-styles/alert/background-color -> default-theme.json:250
+/ui/theme-defs/default/status-styles/alert/color -> default-theme.json:249
+/ui/theme-defs/default/status-styles/disabled-title/background-color -> default-theme.json:233
+/ui/theme-defs/default/status-styles/disabled-title/bold -> default-theme.json:234
+/ui/theme-defs/default/status-styles/disabled-title/color -> default-theme.json:232
+/ui/theme-defs/default/status-styles/hotkey/bold -> default-theme.json:276
+/ui/theme-defs/default/status-styles/hotkey/color -> default-theme.json:274
+/ui/theme-defs/default/status-styles/hotkey/underline -> default-theme.json:275
+/ui/theme-defs/default/status-styles/inactive-alert/background-color -> default-theme.json:266
+/ui/theme-defs/default/status-styles/inactive-alert/color -> default-theme.json:265
+/ui/theme-defs/default/status-styles/inactive/background-color -> default-theme.json:262
+/ui/theme-defs/default/status-styles/inactive/color -> default-theme.json:261
+/ui/theme-defs/default/status-styles/info/background-color -> default-theme.json:258
+/ui/theme-defs/default/status-styles/info/color -> default-theme.json:257
+/ui/theme-defs/default/status-styles/subtitle/background-color -> default-theme.json:238
+/ui/theme-defs/default/status-styles/subtitle/color -> default-theme.json:237
+/ui/theme-defs/default/status-styles/text/background-color -> default-theme.json:242
+/ui/theme-defs/default/status-styles/text/color -> default-theme.json:241
+/ui/theme-defs/default/status-styles/title-hotkey/background-color -> default-theme.json:270
+/ui/theme-defs/default/status-styles/title-hotkey/color -> default-theme.json:269
+/ui/theme-defs/default/status-styles/title-hotkey/underline -> default-theme.json:271
+/ui/theme-defs/default/status-styles/title/background-color -> default-theme.json:228
+/ui/theme-defs/default/status-styles/title/bold -> default-theme.json:229
+/ui/theme-defs/default/status-styles/title/color -> default-theme.json:227
+/ui/theme-defs/default/status-styles/warn/background-color -> default-theme.json:246
+/ui/theme-defs/default/status-styles/warn/color -> default-theme.json:245
+/ui/theme-defs/default/styles/adjusted-time/color -> default-theme.json:55
+/ui/theme-defs/default/styles/alt-text/background-color -> default-theme.json:22
+/ui/theme-defs/default/styles/breadcrumb/bold -> default-theme.json:114
+/ui/theme-defs/default/styles/breadcrumb/color -> default-theme.json:113
+/ui/theme-defs/default/styles/cursor-line/background-color -> default-theme.json:46
+/ui/theme-defs/default/styles/cursor-line/bold -> default-theme.json:47
+/ui/theme-defs/default/styles/cursor-line/color -> default-theme.json:45
+/ui/theme-defs/default/styles/cursor-line/underline -> default-theme.json:48
+/ui/theme-defs/default/styles/disabled-cursor-line/background-color -> default-theme.json:52
+/ui/theme-defs/default/styles/disabled-cursor-line/color -> default-theme.json:51
+/ui/theme-defs/default/styles/disabled-focused/background-color -> default-theme.json:83
+/ui/theme-defs/default/styles/disabled-focused/color -> default-theme.json:82
+/ui/theme-defs/default/styles/error/bold -> default-theme.json:34
+/ui/theme-defs/default/styles/error/color -> default-theme.json:33
+/ui/theme-defs/default/styles/file-offset/color -> default-theme.json:64
+/ui/theme-defs/default/styles/focused/background-color -> default-theme.json:79
+/ui/theme-defs/default/styles/focused/color -> default-theme.json:78
+/ui/theme-defs/default/styles/footnote-border/background-color -> default-theme.json:131
+/ui/theme-defs/default/styles/footnote-border/color -> default-theme.json:130
+/ui/theme-defs/default/styles/footnote-text/background-color -> default-theme.json:135
+/ui/theme-defs/default/styles/footnote-text/color -> default-theme.json:134
+/ui/theme-defs/default/styles/h1/underline -> default-theme.json:86
+/ui/theme-defs/default/styles/h2/underline -> default-theme.json:89
+/ui/theme-defs/default/styles/h3/underline -> default-theme.json:92
+/ui/theme-defs/default/styles/h4/underline -> default-theme.json:95
+/ui/theme-defs/default/styles/h5/underline -> default-theme.json:98
+/ui/theme-defs/default/styles/h6/underline -> default-theme.json:101
+/ui/theme-defs/default/styles/hidden/bold -> default-theme.json:42
+/ui/theme-defs/default/styles/hidden/color -> default-theme.json:41
+/ui/theme-defs/default/styles/hr/color -> default-theme.json:104
+/ui/theme-defs/default/styles/hyperlink/underline -> default-theme.json:107
+/ui/theme-defs/default/styles/identifier/background-color -> default-theme.json:18
+/ui/theme-defs/default/styles/identifier/color -> default-theme.json:19
+/ui/theme-defs/default/styles/indent-guide/color -> default-theme.json:141
+/ui/theme-defs/default/styles/info/bold -> default-theme.json:30
+/ui/theme-defs/default/styles/info/color -> default-theme.json:29
+/ui/theme-defs/default/styles/invalid-msg/color -> default-theme.json:67
+/ui/theme-defs/default/styles/list-glyph/color -> default-theme.json:110
+/ui/theme-defs/default/styles/offset-time/color -> default-theme.json:61
+/ui/theme-defs/default/styles/ok/bold -> default-theme.json:26
+/ui/theme-defs/default/styles/ok/color -> default-theme.json:25
+/ui/theme-defs/default/styles/popup/background-color -> default-theme.json:71
+/ui/theme-defs/default/styles/popup/color -> default-theme.json:70
+/ui/theme-defs/default/styles/quote-border/background-color -> default-theme.json:124
+/ui/theme-defs/default/styles/quote-border/color -> default-theme.json:123
+/ui/theme-defs/default/styles/quoted-text/background-color -> default-theme.json:127
+/ui/theme-defs/default/styles/scrollbar/background-color -> default-theme.json:75
+/ui/theme-defs/default/styles/scrollbar/color -> default-theme.json:74
+/ui/theme-defs/default/styles/selected-text/background-color -> default-theme.json:15
+/ui/theme-defs/default/styles/skewed-time/color -> default-theme.json:58
+/ui/theme-defs/default/styles/snippet-border/color -> default-theme.json:138
+/ui/theme-defs/default/styles/table-border/color -> default-theme.json:117
+/ui/theme-defs/default/styles/table-header/bold -> default-theme.json:120
+/ui/theme-defs/default/styles/text/background-color -> default-theme.json:12
+/ui/theme-defs/default/styles/text/color -> default-theme.json:11
+/ui/theme-defs/default/styles/warning/bold -> default-theme.json:38
+/ui/theme-defs/default/styles/warning/color -> default-theme.json:37
+/ui/theme-defs/default/syntax-styles/ascii-control/color -> default-theme.json:207
+/ui/theme-defs/default/syntax-styles/code-border/background-color -> default-theme.json:155
+/ui/theme-defs/default/syntax-styles/code-border/color -> default-theme.json:154
+/ui/theme-defs/default/syntax-styles/comment/color -> default-theme.json:165
+/ui/theme-defs/default/syntax-styles/diff-add/color -> default-theme.json:186
+/ui/theme-defs/default/syntax-styles/diff-delete/color -> default-theme.json:183
+/ui/theme-defs/default/syntax-styles/diff-section/color -> default-theme.json:189
+/ui/theme-defs/default/syntax-styles/doc-directive/color -> default-theme.json:168
+/ui/theme-defs/default/syntax-styles/file/color -> default-theme.json:201
+/ui/theme-defs/default/syntax-styles/function/color -> default-theme.json:216
+/ui/theme-defs/default/syntax-styles/inline-code/background-color -> default-theme.json:147
+/ui/theme-defs/default/syntax-styles/inline-code/color -> default-theme.json:146
+/ui/theme-defs/default/syntax-styles/keyword/color -> default-theme.json:158
+/ui/theme-defs/default/syntax-styles/non-ascii/color -> default-theme.json:210
+/ui/theme-defs/default/syntax-styles/null/color -> default-theme.json:204
+/ui/theme-defs/default/syntax-styles/number/bold -> default-theme.json:213
+/ui/theme-defs/default/syntax-styles/quoted-code/background-color -> default-theme.json:151
+/ui/theme-defs/default/syntax-styles/quoted-code/color -> default-theme.json:150
+/ui/theme-defs/default/syntax-styles/re-repeat/color -> default-theme.json:180
+/ui/theme-defs/default/syntax-styles/re-special/color -> default-theme.json:177
+/ui/theme-defs/default/syntax-styles/separators-references-accessors/color -> default-theme.json:219
+/ui/theme-defs/default/syntax-styles/spectrogram-high/background-color -> default-theme.json:198
+/ui/theme-defs/default/syntax-styles/spectrogram-low/background-color -> default-theme.json:192
+/ui/theme-defs/default/syntax-styles/spectrogram-medium/background-color -> default-theme.json:195
+/ui/theme-defs/default/syntax-styles/string/bold -> default-theme.json:162
+/ui/theme-defs/default/syntax-styles/string/color -> default-theme.json:161
+/ui/theme-defs/default/syntax-styles/symbol/color -> default-theme.json:174
+/ui/theme-defs/default/syntax-styles/type/color -> default-theme.json:222
+/ui/theme-defs/default/syntax-styles/variable/color -> default-theme.json:171
+/ui/theme-defs/default/vars/semantic_highlight_color -> default-theme.json:7
+/ui/theme-defs/dracula/log-level-styles/critical/color -> dracula.json:303
+/ui/theme-defs/dracula/log-level-styles/error/color -> dracula.json:300
+/ui/theme-defs/dracula/log-level-styles/fatal/color -> dracula.json:306
+/ui/theme-defs/dracula/log-level-styles/warning/color -> dracula.json:297
+/ui/theme-defs/dracula/status-styles/active/background-color -> dracula.json:281
+/ui/theme-defs/dracula/status-styles/active/color -> dracula.json:280
+/ui/theme-defs/dracula/status-styles/alert/background-color -> dracula.json:277
+/ui/theme-defs/dracula/status-styles/alert/color -> dracula.json:276
+/ui/theme-defs/dracula/status-styles/disabled-title/background-color -> dracula.json:241
+/ui/theme-defs/dracula/status-styles/disabled-title/bold -> dracula.json:242
+/ui/theme-defs/dracula/status-styles/disabled-title/color -> dracula.json:240
+/ui/theme-defs/dracula/status-styles/hotkey/color -> dracula.json:264
+/ui/theme-defs/dracula/status-styles/hotkey/underline -> dracula.json:265
+/ui/theme-defs/dracula/status-styles/inactive-alert/background-color -> dracula.json:289
+/ui/theme-defs/dracula/status-styles/inactive-alert/color -> dracula.json:288
+/ui/theme-defs/dracula/status-styles/inactive/background-color -> dracula.json:285
+/ui/theme-defs/dracula/status-styles/inactive/color -> dracula.json:284
+/ui/theme-defs/dracula/status-styles/info/background-color -> dracula.json:256
+/ui/theme-defs/dracula/status-styles/info/color -> dracula.json:255
+/ui/theme-defs/dracula/status-styles/subtitle/background-color -> dracula.json:251
+/ui/theme-defs/dracula/status-styles/subtitle/bold -> dracula.json:252
+/ui/theme-defs/dracula/status-styles/subtitle/color -> dracula.json:250
+/ui/theme-defs/dracula/status-styles/suggestion/color -> dracula.json:292
+/ui/theme-defs/dracula/status-styles/text/background-color -> dracula.json:269
+/ui/theme-defs/dracula/status-styles/text/color -> dracula.json:268
+/ui/theme-defs/dracula/status-styles/title-hotkey/background-color -> dracula.json:260
+/ui/theme-defs/dracula/status-styles/title-hotkey/color -> dracula.json:259
+/ui/theme-defs/dracula/status-styles/title-hotkey/underline -> dracula.json:261
+/ui/theme-defs/dracula/status-styles/title/background-color -> dracula.json:246
+/ui/theme-defs/dracula/status-styles/title/bold -> dracula.json:247
+/ui/theme-defs/dracula/status-styles/title/color -> dracula.json:245
+/ui/theme-defs/dracula/status-styles/warn/background-color -> dracula.json:273
+/ui/theme-defs/dracula/status-styles/warn/color -> dracula.json:272
+/ui/theme-defs/dracula/styles/adjusted-time/color -> dracula.json:64
+/ui/theme-defs/dracula/styles/alt-text/background-color -> dracula.json:32
+/ui/theme-defs/dracula/styles/breadcrumb/bold -> dracula.json:125
+/ui/theme-defs/dracula/styles/breadcrumb/color -> dracula.json:124
+/ui/theme-defs/dracula/styles/cursor-line/background-color -> dracula.json:56
+/ui/theme-defs/dracula/styles/cursor-line/bold -> dracula.json:57
+/ui/theme-defs/dracula/styles/cursor-line/color -> dracula.json:55
+/ui/theme-defs/dracula/styles/disabled-cursor-line/background-color -> dracula.json:61
+/ui/theme-defs/dracula/styles/disabled-cursor-line/color -> dracula.json:60
+/ui/theme-defs/dracula/styles/disabled-focused/background-color -> dracula.json:84
+/ui/theme-defs/dracula/styles/disabled-focused/color -> dracula.json:83
+/ui/theme-defs/dracula/styles/error/bold -> dracula.json:44
+/ui/theme-defs/dracula/styles/error/color -> dracula.json:43
+/ui/theme-defs/dracula/styles/file-offset/color -> dracula.json:73
+/ui/theme-defs/dracula/styles/focused/background-color -> dracula.json:80
+/ui/theme-defs/dracula/styles/focused/color -> dracula.json:79
+/ui/theme-defs/dracula/styles/footnote-border/background-color -> dracula.json:143
+/ui/theme-defs/dracula/styles/footnote-border/color -> dracula.json:142
+/ui/theme-defs/dracula/styles/footnote-text/background-color -> dracula.json:147
+/ui/theme-defs/dracula/styles/footnote-text/color -> dracula.json:146
+/ui/theme-defs/dracula/styles/h1/bold -> dracula.json:96
+/ui/theme-defs/dracula/styles/h1/color -> dracula.json:95
+/ui/theme-defs/dracula/styles/h2/color -> dracula.json:99
+/ui/theme-defs/dracula/styles/h2/underline -> dracula.json:100
+/ui/theme-defs/dracula/styles/h3/color -> dracula.json:103
+/ui/theme-defs/dracula/styles/h4/underline -> dracula.json:106
+/ui/theme-defs/dracula/styles/h5/underline -> dracula.json:109
+/ui/theme-defs/dracula/styles/h6/underline -> dracula.json:112
+/ui/theme-defs/dracula/styles/hidden/bold -> dracula.json:52
+/ui/theme-defs/dracula/styles/hidden/color -> dracula.json:51
+/ui/theme-defs/dracula/styles/hr/color -> dracula.json:115
+/ui/theme-defs/dracula/styles/hyperlink/underline -> dracula.json:118
+/ui/theme-defs/dracula/styles/identifier/color -> dracula.json:22
+/ui/theme-defs/dracula/styles/indent-guide/color -> dracula.json:153
+/ui/theme-defs/dracula/styles/info/bold -> dracula.json:40
+/ui/theme-defs/dracula/styles/info/color -> dracula.json:39
+/ui/theme-defs/dracula/styles/invalid-msg/color -> dracula.json:76
+/ui/theme-defs/dracula/styles/list-glyph/color -> dracula.json:121
+/ui/theme-defs/dracula/styles/offset-time/color -> dracula.json:70
+/ui/theme-defs/dracula/styles/ok/bold -> dracula.json:36
+/ui/theme-defs/dracula/styles/ok/color -> dracula.json:35
+/ui/theme-defs/dracula/styles/popup/background-color -> dracula.json:88
+/ui/theme-defs/dracula/styles/popup/color -> dracula.json:87
+/ui/theme-defs/dracula/styles/quote-border/background-color -> dracula.json:135
+/ui/theme-defs/dracula/styles/quote-border/color -> dracula.json:134
+/ui/theme-defs/dracula/styles/quoted-text/background-color -> dracula.json:139
+/ui/theme-defs/dracula/styles/quoted-text/color -> dracula.json:138
+/ui/theme-defs/dracula/styles/scrollbar/background-color -> dracula.json:92
+/ui/theme-defs/dracula/styles/scrollbar/color -> dracula.json:91
+/ui/theme-defs/dracula/styles/selected-text/background-color -> dracula.json:29
+/ui/theme-defs/dracula/styles/skewed-time/color -> dracula.json:67
+/ui/theme-defs/dracula/styles/snippet-border/color -> dracula.json:150
+/ui/theme-defs/dracula/styles/table-border/color -> dracula.json:128
+/ui/theme-defs/dracula/styles/table-header/bold -> dracula.json:131
+/ui/theme-defs/dracula/styles/text/background-color -> dracula.json:26
+/ui/theme-defs/dracula/styles/text/color -> dracula.json:25
+/ui/theme-defs/dracula/styles/warning/bold -> dracula.json:48
+/ui/theme-defs/dracula/styles/warning/color -> dracula.json:47
+/ui/theme-defs/dracula/syntax-styles/ascii-control/color -> dracula.json:220
+/ui/theme-defs/dracula/syntax-styles/code-border/background-color -> dracula.json:167
+/ui/theme-defs/dracula/syntax-styles/code-border/color -> dracula.json:166
+/ui/theme-defs/dracula/syntax-styles/comment/color -> dracula.json:178
+/ui/theme-defs/dracula/syntax-styles/diff-add/color -> dracula.json:199
+/ui/theme-defs/dracula/syntax-styles/diff-delete/color -> dracula.json:196
+/ui/theme-defs/dracula/syntax-styles/diff-section/color -> dracula.json:202
+/ui/theme-defs/dracula/syntax-styles/doc-directive/color -> dracula.json:181
+/ui/theme-defs/dracula/syntax-styles/file/color -> dracula.json:214
+/ui/theme-defs/dracula/syntax-styles/function/color -> dracula.json:229
+/ui/theme-defs/dracula/syntax-styles/inline-code/background-color -> dracula.json:159
+/ui/theme-defs/dracula/syntax-styles/inline-code/color -> dracula.json:158
+/ui/theme-defs/dracula/syntax-styles/keyword/bold -> dracula.json:171
+/ui/theme-defs/dracula/syntax-styles/keyword/color -> dracula.json:170
+/ui/theme-defs/dracula/syntax-styles/non-ascii/color -> dracula.json:223
+/ui/theme-defs/dracula/syntax-styles/null/color -> dracula.json:217
+/ui/theme-defs/dracula/syntax-styles/number/bold -> dracula.json:226
+/ui/theme-defs/dracula/syntax-styles/quoted-code/background-color -> dracula.json:163
+/ui/theme-defs/dracula/syntax-styles/quoted-code/color -> dracula.json:162
+/ui/theme-defs/dracula/syntax-styles/re-repeat/color -> dracula.json:193
+/ui/theme-defs/dracula/syntax-styles/re-special/color -> dracula.json:190
+/ui/theme-defs/dracula/syntax-styles/separators-references-accessors/color -> dracula.json:232
+/ui/theme-defs/dracula/syntax-styles/spectrogram-high/background-color -> dracula.json:211
+/ui/theme-defs/dracula/syntax-styles/spectrogram-low/background-color -> dracula.json:205
+/ui/theme-defs/dracula/syntax-styles/spectrogram-medium/background-color -> dracula.json:208
+/ui/theme-defs/dracula/syntax-styles/string/bold -> dracula.json:175
+/ui/theme-defs/dracula/syntax-styles/string/color -> dracula.json:174
+/ui/theme-defs/dracula/syntax-styles/symbol/color -> dracula.json:187
+/ui/theme-defs/dracula/syntax-styles/type/color -> dracula.json:235
+/ui/theme-defs/dracula/syntax-styles/variable/color -> dracula.json:184
+/ui/theme-defs/dracula/vars/black -> dracula.json:7
+/ui/theme-defs/dracula/vars/blue -> dracula.json:11
+/ui/theme-defs/dracula/vars/cyan -> dracula.json:13
+/ui/theme-defs/dracula/vars/green -> dracula.json:9
+/ui/theme-defs/dracula/vars/magenta -> dracula.json:12
+/ui/theme-defs/dracula/vars/orange -> dracula.json:15
+/ui/theme-defs/dracula/vars/pink -> dracula.json:17
+/ui/theme-defs/dracula/vars/purple -> dracula.json:16
+/ui/theme-defs/dracula/vars/red -> dracula.json:8
+/ui/theme-defs/dracula/vars/semantic_highlight_color -> dracula.json:18
+/ui/theme-defs/dracula/vars/white -> dracula.json:14
+/ui/theme-defs/dracula/vars/yellow -> dracula.json:10
+/ui/theme-defs/eldar/log-level-styles/critical/color -> eldar.json:299
+/ui/theme-defs/eldar/log-level-styles/error/color -> eldar.json:296
+/ui/theme-defs/eldar/log-level-styles/fatal/color -> eldar.json:302
+/ui/theme-defs/eldar/log-level-styles/warning/color -> eldar.json:293
+/ui/theme-defs/eldar/status-styles/active/background-color -> eldar.json:264
+/ui/theme-defs/eldar/status-styles/active/color -> eldar.json:263
+/ui/theme-defs/eldar/status-styles/alert/background-color -> eldar.json:260
+/ui/theme-defs/eldar/status-styles/alert/color -> eldar.json:259
+/ui/theme-defs/eldar/status-styles/disabled-title/background-color -> eldar.json:237
+/ui/theme-defs/eldar/status-styles/disabled-title/bold -> eldar.json:238
+/ui/theme-defs/eldar/status-styles/disabled-title/color -> eldar.json:236
+/ui/theme-defs/eldar/status-styles/hotkey/color -> eldar.json:276
+/ui/theme-defs/eldar/status-styles/hotkey/underline -> eldar.json:277
+/ui/theme-defs/eldar/status-styles/inactive-alert/background-color -> eldar.json:285
+/ui/theme-defs/eldar/status-styles/inactive-alert/color -> eldar.json:284
+/ui/theme-defs/eldar/status-styles/inactive/background-color -> eldar.json:281
+/ui/theme-defs/eldar/status-styles/inactive/color -> eldar.json:280
+/ui/theme-defs/eldar/status-styles/info/background-color -> eldar.json:268
+/ui/theme-defs/eldar/status-styles/info/color -> eldar.json:267
+/ui/theme-defs/eldar/status-styles/subtitle/background-color -> eldar.json:247
+/ui/theme-defs/eldar/status-styles/subtitle/bold -> eldar.json:248
+/ui/theme-defs/eldar/status-styles/subtitle/color -> eldar.json:246
+/ui/theme-defs/eldar/status-styles/suggestion/color -> eldar.json:288
+/ui/theme-defs/eldar/status-styles/text/background-color -> eldar.json:252
+/ui/theme-defs/eldar/status-styles/text/color -> eldar.json:251
+/ui/theme-defs/eldar/status-styles/title-hotkey/background-color -> eldar.json:272
+/ui/theme-defs/eldar/status-styles/title-hotkey/color -> eldar.json:271
+/ui/theme-defs/eldar/status-styles/title-hotkey/underline -> eldar.json:273
+/ui/theme-defs/eldar/status-styles/title/background-color -> eldar.json:242
+/ui/theme-defs/eldar/status-styles/title/bold -> eldar.json:243
+/ui/theme-defs/eldar/status-styles/title/color -> eldar.json:241
+/ui/theme-defs/eldar/status-styles/warn/background-color -> eldar.json:256
+/ui/theme-defs/eldar/status-styles/warn/color -> eldar.json:255
+/ui/theme-defs/eldar/styles/adjusted-time/color -> eldar.json:64
+/ui/theme-defs/eldar/styles/alt-text/bold -> eldar.json:31
+/ui/theme-defs/eldar/styles/breadcrumb/bold -> eldar.json:123
+/ui/theme-defs/eldar/styles/breadcrumb/color -> eldar.json:122
+/ui/theme-defs/eldar/styles/cursor-line/background-color -> eldar.json:55
+/ui/theme-defs/eldar/styles/cursor-line/bold -> eldar.json:56
+/ui/theme-defs/eldar/styles/cursor-line/color -> eldar.json:54
+/ui/theme-defs/eldar/styles/cursor-line/underline -> eldar.json:57
+/ui/theme-defs/eldar/styles/disabled-cursor-line/background-color -> eldar.json:61
+/ui/theme-defs/eldar/styles/disabled-cursor-line/color -> eldar.json:60
+/ui/theme-defs/eldar/styles/disabled-focused/background-color -> eldar.json:84
+/ui/theme-defs/eldar/styles/disabled-focused/color -> eldar.json:83
+/ui/theme-defs/eldar/styles/error/bold -> eldar.json:43
+/ui/theme-defs/eldar/styles/error/color -> eldar.json:42
+/ui/theme-defs/eldar/styles/file-offset/color -> eldar.json:73
+/ui/theme-defs/eldar/styles/focused/background-color -> eldar.json:80
+/ui/theme-defs/eldar/styles/focused/color -> eldar.json:79
+/ui/theme-defs/eldar/styles/footnote-border/background-color -> eldar.json:140
+/ui/theme-defs/eldar/styles/footnote-border/color -> eldar.json:139
+/ui/theme-defs/eldar/styles/footnote-text/background-color -> eldar.json:144
+/ui/theme-defs/eldar/styles/footnote-text/color -> eldar.json:143
+/ui/theme-defs/eldar/styles/h1/underline -> eldar.json:95
+/ui/theme-defs/eldar/styles/h2/underline -> eldar.json:98
+/ui/theme-defs/eldar/styles/h3/underline -> eldar.json:101
+/ui/theme-defs/eldar/styles/h4/underline -> eldar.json:104
+/ui/theme-defs/eldar/styles/h5/underline -> eldar.json:107
+/ui/theme-defs/eldar/styles/h6/underline -> eldar.json:110
+/ui/theme-defs/eldar/styles/hidden/bold -> eldar.json:51
+/ui/theme-defs/eldar/styles/hidden/color -> eldar.json:50
+/ui/theme-defs/eldar/styles/hr/color -> eldar.json:113
+/ui/theme-defs/eldar/styles/hyperlink/underline -> eldar.json:116
+/ui/theme-defs/eldar/styles/identifier/background-color -> eldar.json:20
+/ui/theme-defs/eldar/styles/identifier/color -> eldar.json:21
+/ui/theme-defs/eldar/styles/indent-guide/color -> eldar.json:150
+/ui/theme-defs/eldar/styles/info/bold -> eldar.json:39
+/ui/theme-defs/eldar/styles/info/color -> eldar.json:38
+/ui/theme-defs/eldar/styles/invalid-msg/color -> eldar.json:76
+/ui/theme-defs/eldar/styles/list-glyph/color -> eldar.json:119
+/ui/theme-defs/eldar/styles/offset-time/color -> eldar.json:70
+/ui/theme-defs/eldar/styles/ok/bold -> eldar.json:35
+/ui/theme-defs/eldar/styles/ok/color -> eldar.json:34
+/ui/theme-defs/eldar/styles/popup/background-color -> eldar.json:88
+/ui/theme-defs/eldar/styles/popup/color -> eldar.json:87
+/ui/theme-defs/eldar/styles/quote-border/background-color -> eldar.json:133
+/ui/theme-defs/eldar/styles/quote-border/color -> eldar.json:132
+/ui/theme-defs/eldar/styles/quoted-text/background-color -> eldar.json:136
+/ui/theme-defs/eldar/styles/scrollbar/background-color -> eldar.json:92
+/ui/theme-defs/eldar/styles/scrollbar/color -> eldar.json:91
+/ui/theme-defs/eldar/styles/selected-text/background-color -> eldar.json:28
+/ui/theme-defs/eldar/styles/skewed-time/color -> eldar.json:67
+/ui/theme-defs/eldar/styles/snippet-border/color -> eldar.json:147
+/ui/theme-defs/eldar/styles/table-border/color -> eldar.json:126
+/ui/theme-defs/eldar/styles/table-header/bold -> eldar.json:129
+/ui/theme-defs/eldar/styles/text/background-color -> eldar.json:25
+/ui/theme-defs/eldar/styles/text/color -> eldar.json:24
+/ui/theme-defs/eldar/styles/warning/bold -> eldar.json:47
+/ui/theme-defs/eldar/styles/warning/color -> eldar.json:46
+/ui/theme-defs/eldar/syntax-styles/ascii-control/color -> eldar.json:219
+/ui/theme-defs/eldar/syntax-styles/code-border/background-color -> eldar.json:164
+/ui/theme-defs/eldar/syntax-styles/code-border/color -> eldar.json:163
+/ui/theme-defs/eldar/syntax-styles/comment/color -> eldar.json:174
+/ui/theme-defs/eldar/syntax-styles/diff-add/color -> eldar.json:198
+/ui/theme-defs/eldar/syntax-styles/diff-delete/color -> eldar.json:195
+/ui/theme-defs/eldar/syntax-styles/diff-section/color -> eldar.json:201
+/ui/theme-defs/eldar/syntax-styles/doc-directive/color -> eldar.json:177
+/ui/theme-defs/eldar/syntax-styles/file/color -> eldar.json:213
+/ui/theme-defs/eldar/syntax-styles/function/color -> eldar.json:225
+/ui/theme-defs/eldar/syntax-styles/inline-code/background-color -> eldar.json:156
+/ui/theme-defs/eldar/syntax-styles/inline-code/color -> eldar.json:155
+/ui/theme-defs/eldar/syntax-styles/keyword/color -> eldar.json:167
+/ui/theme-defs/eldar/syntax-styles/non-ascii/color -> eldar.json:222
+/ui/theme-defs/eldar/syntax-styles/null/color -> eldar.json:216
+/ui/theme-defs/eldar/syntax-styles/number/color -> eldar.json:180
+/ui/theme-defs/eldar/syntax-styles/quoted-code/background-color -> eldar.json:160
+/ui/theme-defs/eldar/syntax-styles/quoted-code/color -> eldar.json:159
+/ui/theme-defs/eldar/syntax-styles/re-repeat/color -> eldar.json:192
+/ui/theme-defs/eldar/syntax-styles/re-special/color -> eldar.json:189
+/ui/theme-defs/eldar/syntax-styles/separators-references-accessors/color -> eldar.json:228
+/ui/theme-defs/eldar/syntax-styles/spectrogram-high/background-color -> eldar.json:210
+/ui/theme-defs/eldar/syntax-styles/spectrogram-low/background-color -> eldar.json:204
+/ui/theme-defs/eldar/syntax-styles/spectrogram-medium/background-color -> eldar.json:207
+/ui/theme-defs/eldar/syntax-styles/string/bold -> eldar.json:171
+/ui/theme-defs/eldar/syntax-styles/string/color -> eldar.json:170
+/ui/theme-defs/eldar/syntax-styles/symbol/color -> eldar.json:186
+/ui/theme-defs/eldar/syntax-styles/type/color -> eldar.json:231
+/ui/theme-defs/eldar/syntax-styles/variable/color -> eldar.json:183
+/ui/theme-defs/eldar/vars/black -> eldar.json:7
+/ui/theme-defs/eldar/vars/blue -> eldar.json:11
+/ui/theme-defs/eldar/vars/cyan -> eldar.json:12
+/ui/theme-defs/eldar/vars/green -> eldar.json:13
+/ui/theme-defs/eldar/vars/magenta -> eldar.json:10
+/ui/theme-defs/eldar/vars/orange -> eldar.json:15
+/ui/theme-defs/eldar/vars/red -> eldar.json:9
+/ui/theme-defs/eldar/vars/semantic_highlight_color -> eldar.json:16
+/ui/theme-defs/eldar/vars/white -> eldar.json:14
+/ui/theme-defs/eldar/vars/yellow -> eldar.json:8
+/ui/theme-defs/grayscale/log-level-styles/critical/color -> grayscale.json:235
+/ui/theme-defs/grayscale/log-level-styles/error/color -> grayscale.json:232
+/ui/theme-defs/grayscale/log-level-styles/fatal/color -> grayscale.json:238
+/ui/theme-defs/grayscale/log-level-styles/warning/color -> grayscale.json:229
+/ui/theme-defs/grayscale/status-styles/active/background-color -> grayscale.json:209
+/ui/theme-defs/grayscale/status-styles/active/color -> grayscale.json:208
+/ui/theme-defs/grayscale/status-styles/alert/background-color -> grayscale.json:205
+/ui/theme-defs/grayscale/status-styles/alert/color -> grayscale.json:204
+/ui/theme-defs/grayscale/status-styles/disabled-title/background-color -> grayscale.json:173
+/ui/theme-defs/grayscale/status-styles/disabled-title/bold -> grayscale.json:174
+/ui/theme-defs/grayscale/status-styles/disabled-title/color -> grayscale.json:172
+/ui/theme-defs/grayscale/status-styles/hotkey/color -> grayscale.json:192
+/ui/theme-defs/grayscale/status-styles/hotkey/underline -> grayscale.json:193
+/ui/theme-defs/grayscale/status-styles/inactive-alert/background-color -> grayscale.json:221
+/ui/theme-defs/grayscale/status-styles/inactive-alert/color -> grayscale.json:220
+/ui/theme-defs/grayscale/status-styles/inactive/background-color -> grayscale.json:217
+/ui/theme-defs/grayscale/status-styles/inactive/color -> grayscale.json:216
+/ui/theme-defs/grayscale/status-styles/info/background-color -> grayscale.json:213
+/ui/theme-defs/grayscale/status-styles/info/color -> grayscale.json:212
+/ui/theme-defs/grayscale/status-styles/subtitle/background-color -> grayscale.json:183
+/ui/theme-defs/grayscale/status-styles/subtitle/bold -> grayscale.json:184
+/ui/theme-defs/grayscale/status-styles/subtitle/color -> grayscale.json:182
+/ui/theme-defs/grayscale/status-styles/suggestion/color -> grayscale.json:224
+/ui/theme-defs/grayscale/status-styles/text/background-color -> grayscale.json:197
+/ui/theme-defs/grayscale/status-styles/text/color -> grayscale.json:196
+/ui/theme-defs/grayscale/status-styles/title-hotkey/background-color -> grayscale.json:188
+/ui/theme-defs/grayscale/status-styles/title-hotkey/color -> grayscale.json:187
+/ui/theme-defs/grayscale/status-styles/title-hotkey/underline -> grayscale.json:189
+/ui/theme-defs/grayscale/status-styles/title/background-color -> grayscale.json:178
+/ui/theme-defs/grayscale/status-styles/title/bold -> grayscale.json:179
+/ui/theme-defs/grayscale/status-styles/title/color -> grayscale.json:177
+/ui/theme-defs/grayscale/status-styles/warn/background-color -> grayscale.json:201
+/ui/theme-defs/grayscale/status-styles/warn/color -> grayscale.json:200
+/ui/theme-defs/grayscale/styles/adjusted-time/color -> grayscale.json:61
+/ui/theme-defs/grayscale/styles/alt-text/bold -> grayscale.json:28
+/ui/theme-defs/grayscale/styles/breadcrumb/bold -> grayscale.json:120
+/ui/theme-defs/grayscale/styles/breadcrumb/color -> grayscale.json:119
+/ui/theme-defs/grayscale/styles/cursor-line/background-color -> grayscale.json:52
+/ui/theme-defs/grayscale/styles/cursor-line/bold -> grayscale.json:53
+/ui/theme-defs/grayscale/styles/cursor-line/color -> grayscale.json:51
+/ui/theme-defs/grayscale/styles/cursor-line/underline -> grayscale.json:54
+/ui/theme-defs/grayscale/styles/disabled-cursor-line/background-color -> grayscale.json:58
+/ui/theme-defs/grayscale/styles/disabled-cursor-line/color -> grayscale.json:57
+/ui/theme-defs/grayscale/styles/disabled-focused/background-color -> grayscale.json:81
+/ui/theme-defs/grayscale/styles/disabled-focused/color -> grayscale.json:80
+/ui/theme-defs/grayscale/styles/error/bold -> grayscale.json:40
+/ui/theme-defs/grayscale/styles/error/color -> grayscale.json:39
+/ui/theme-defs/grayscale/styles/file-offset/color -> grayscale.json:70
+/ui/theme-defs/grayscale/styles/focused/background-color -> grayscale.json:77
+/ui/theme-defs/grayscale/styles/focused/color -> grayscale.json:76
+/ui/theme-defs/grayscale/styles/footnote-border/background-color -> grayscale.json:137
+/ui/theme-defs/grayscale/styles/footnote-border/color -> grayscale.json:136
+/ui/theme-defs/grayscale/styles/footnote-text/background-color -> grayscale.json:141
+/ui/theme-defs/grayscale/styles/footnote-text/color -> grayscale.json:140
+/ui/theme-defs/grayscale/styles/h1/underline -> grayscale.json:92
+/ui/theme-defs/grayscale/styles/h2/underline -> grayscale.json:95
+/ui/theme-defs/grayscale/styles/h3/underline -> grayscale.json:98
+/ui/theme-defs/grayscale/styles/h4/underline -> grayscale.json:101
+/ui/theme-defs/grayscale/styles/h5/underline -> grayscale.json:104
+/ui/theme-defs/grayscale/styles/h6/underline -> grayscale.json:107
+/ui/theme-defs/grayscale/styles/hidden/bold -> grayscale.json:48
+/ui/theme-defs/grayscale/styles/hidden/color -> grayscale.json:47
+/ui/theme-defs/grayscale/styles/hr/color -> grayscale.json:110
+/ui/theme-defs/grayscale/styles/hyperlink/underline -> grayscale.json:113
+/ui/theme-defs/grayscale/styles/identifier/background-color -> grayscale.json:19
+/ui/theme-defs/grayscale/styles/identifier/bold -> grayscale.json:21
+/ui/theme-defs/grayscale/styles/identifier/color -> grayscale.json:20
+/ui/theme-defs/grayscale/styles/indent-guide/color -> grayscale.json:147
+/ui/theme-defs/grayscale/styles/info/bold -> grayscale.json:36
+/ui/theme-defs/grayscale/styles/info/color -> grayscale.json:35
+/ui/theme-defs/grayscale/styles/invalid-msg/color -> grayscale.json:73
+/ui/theme-defs/grayscale/styles/list-glyph/color -> grayscale.json:116
+/ui/theme-defs/grayscale/styles/offset-time/color -> grayscale.json:67
+/ui/theme-defs/grayscale/styles/ok/bold -> grayscale.json:32
+/ui/theme-defs/grayscale/styles/ok/color -> grayscale.json:31
+/ui/theme-defs/grayscale/styles/popup/background-color -> grayscale.json:85
+/ui/theme-defs/grayscale/styles/popup/color -> grayscale.json:84
+/ui/theme-defs/grayscale/styles/quote-border/background-color -> grayscale.json:130
+/ui/theme-defs/grayscale/styles/quote-border/color -> grayscale.json:129
+/ui/theme-defs/grayscale/styles/quoted-text/background-color -> grayscale.json:133
+/ui/theme-defs/grayscale/styles/scrollbar/background-color -> grayscale.json:89
+/ui/theme-defs/grayscale/styles/scrollbar/color -> grayscale.json:88
+/ui/theme-defs/grayscale/styles/skewed-time/color -> grayscale.json:64
+/ui/theme-defs/grayscale/styles/snippet-border/color -> grayscale.json:144
+/ui/theme-defs/grayscale/styles/table-border/color -> grayscale.json:123
+/ui/theme-defs/grayscale/styles/table-header/bold -> grayscale.json:126
+/ui/theme-defs/grayscale/styles/text/background-color -> grayscale.json:25
+/ui/theme-defs/grayscale/styles/text/color -> grayscale.json:24
+/ui/theme-defs/grayscale/styles/warning/bold -> grayscale.json:44
+/ui/theme-defs/grayscale/styles/warning/color -> grayscale.json:43
+/ui/theme-defs/grayscale/syntax-styles/ascii-control/color -> grayscale.json:161
+/ui/theme-defs/grayscale/syntax-styles/comment/color -> grayscale.json:152
+/ui/theme-defs/grayscale/syntax-styles/doc-directive/color -> grayscale.json:155
+/ui/theme-defs/grayscale/syntax-styles/non-ascii/color -> grayscale.json:164
+/ui/theme-defs/grayscale/syntax-styles/null/color -> grayscale.json:158
+/ui/theme-defs/grayscale/syntax-styles/number/bold -> grayscale.json:167
+/ui/theme-defs/grayscale/vars/black -> grayscale.json:7
+/ui/theme-defs/grayscale/vars/blue -> grayscale.json:11
+/ui/theme-defs/grayscale/vars/cyan -> grayscale.json:13
+/ui/theme-defs/grayscale/vars/green -> grayscale.json:9
+/ui/theme-defs/grayscale/vars/magenta -> grayscale.json:12
+/ui/theme-defs/grayscale/vars/plaintext -> grayscale.json:15
+/ui/theme-defs/grayscale/vars/red -> grayscale.json:8
+/ui/theme-defs/grayscale/vars/white -> grayscale.json:14
+/ui/theme-defs/grayscale/vars/yellow -> grayscale.json:10
+/ui/theme-defs/monocai/log-level-styles/critical/color -> monocai.json:300
+/ui/theme-defs/monocai/log-level-styles/error/color -> monocai.json:297
+/ui/theme-defs/monocai/log-level-styles/fatal/color -> monocai.json:303
+/ui/theme-defs/monocai/log-level-styles/warning/color -> monocai.json:294
+/ui/theme-defs/monocai/status-styles/active/background-color -> monocai.json:278
+/ui/theme-defs/monocai/status-styles/active/color -> monocai.json:277
+/ui/theme-defs/monocai/status-styles/alert/background-color -> monocai.json:274
+/ui/theme-defs/monocai/status-styles/alert/color -> monocai.json:273
+/ui/theme-defs/monocai/status-styles/disabled-title/background-color -> monocai.json:238
+/ui/theme-defs/monocai/status-styles/disabled-title/bold -> monocai.json:239
+/ui/theme-defs/monocai/status-styles/disabled-title/color -> monocai.json:237
+/ui/theme-defs/monocai/status-styles/hotkey/color -> monocai.json:261
+/ui/theme-defs/monocai/status-styles/hotkey/underline -> monocai.json:262
+/ui/theme-defs/monocai/status-styles/inactive-alert/background-color -> monocai.json:286
+/ui/theme-defs/monocai/status-styles/inactive-alert/color -> monocai.json:285
+/ui/theme-defs/monocai/status-styles/inactive/background-color -> monocai.json:282
+/ui/theme-defs/monocai/status-styles/inactive/color -> monocai.json:281
+/ui/theme-defs/monocai/status-styles/info/background-color -> monocai.json:253
+/ui/theme-defs/monocai/status-styles/info/color -> monocai.json:252
+/ui/theme-defs/monocai/status-styles/subtitle/background-color -> monocai.json:248
+/ui/theme-defs/monocai/status-styles/subtitle/bold -> monocai.json:249
+/ui/theme-defs/monocai/status-styles/subtitle/color -> monocai.json:247
+/ui/theme-defs/monocai/status-styles/suggestion/color -> monocai.json:289
+/ui/theme-defs/monocai/status-styles/text/background-color -> monocai.json:266
+/ui/theme-defs/monocai/status-styles/text/color -> monocai.json:265
+/ui/theme-defs/monocai/status-styles/title-hotkey/background-color -> monocai.json:257
+/ui/theme-defs/monocai/status-styles/title-hotkey/color -> monocai.json:256
+/ui/theme-defs/monocai/status-styles/title-hotkey/underline -> monocai.json:258
+/ui/theme-defs/monocai/status-styles/title/background-color -> monocai.json:243
+/ui/theme-defs/monocai/status-styles/title/bold -> monocai.json:244
+/ui/theme-defs/monocai/status-styles/title/color -> monocai.json:242
+/ui/theme-defs/monocai/status-styles/warn/background-color -> monocai.json:270
+/ui/theme-defs/monocai/status-styles/warn/color -> monocai.json:269
+/ui/theme-defs/monocai/styles/adjusted-time/color -> monocai.json:62
+/ui/theme-defs/monocai/styles/alt-text/background-color -> monocai.json:30
+/ui/theme-defs/monocai/styles/breadcrumb/bold -> monocai.json:123
+/ui/theme-defs/monocai/styles/breadcrumb/color -> monocai.json:122
+/ui/theme-defs/monocai/styles/cursor-line/background-color -> monocai.json:54
+/ui/theme-defs/monocai/styles/cursor-line/bold -> monocai.json:55
+/ui/theme-defs/monocai/styles/cursor-line/color -> monocai.json:53
+/ui/theme-defs/monocai/styles/disabled-cursor-line/background-color -> monocai.json:59
+/ui/theme-defs/monocai/styles/disabled-cursor-line/color -> monocai.json:58
+/ui/theme-defs/monocai/styles/disabled-focused/background-color -> monocai.json:82
+/ui/theme-defs/monocai/styles/disabled-focused/color -> monocai.json:81
+/ui/theme-defs/monocai/styles/error/bold -> monocai.json:42
+/ui/theme-defs/monocai/styles/error/color -> monocai.json:41
+/ui/theme-defs/monocai/styles/file-offset/color -> monocai.json:71
+/ui/theme-defs/monocai/styles/focused/background-color -> monocai.json:78
+/ui/theme-defs/monocai/styles/focused/color -> monocai.json:77
+/ui/theme-defs/monocai/styles/footnote-border/background-color -> monocai.json:140
+/ui/theme-defs/monocai/styles/footnote-border/color -> monocai.json:139
+/ui/theme-defs/monocai/styles/footnote-text/background-color -> monocai.json:144
+/ui/theme-defs/monocai/styles/footnote-text/color -> monocai.json:143
+/ui/theme-defs/monocai/styles/h1/bold -> monocai.json:94
+/ui/theme-defs/monocai/styles/h1/color -> monocai.json:93
+/ui/theme-defs/monocai/styles/h2/color -> monocai.json:97
+/ui/theme-defs/monocai/styles/h2/underline -> monocai.json:98
+/ui/theme-defs/monocai/styles/h3/color -> monocai.json:101
+/ui/theme-defs/monocai/styles/h4/underline -> monocai.json:104
+/ui/theme-defs/monocai/styles/h5/underline -> monocai.json:107
+/ui/theme-defs/monocai/styles/h6/underline -> monocai.json:110
+/ui/theme-defs/monocai/styles/hidden/bold -> monocai.json:50
+/ui/theme-defs/monocai/styles/hidden/color -> monocai.json:49
+/ui/theme-defs/monocai/styles/hr/color -> monocai.json:113
+/ui/theme-defs/monocai/styles/hyperlink/underline -> monocai.json:116
+/ui/theme-defs/monocai/styles/identifier/color -> monocai.json:20
+/ui/theme-defs/monocai/styles/indent-guide/color -> monocai.json:150
+/ui/theme-defs/monocai/styles/info/bold -> monocai.json:38
+/ui/theme-defs/monocai/styles/info/color -> monocai.json:37
+/ui/theme-defs/monocai/styles/invalid-msg/color -> monocai.json:74
+/ui/theme-defs/monocai/styles/list-glyph/color -> monocai.json:119
+/ui/theme-defs/monocai/styles/offset-time/color -> monocai.json:68
+/ui/theme-defs/monocai/styles/ok/bold -> monocai.json:34
+/ui/theme-defs/monocai/styles/ok/color -> monocai.json:33
+/ui/theme-defs/monocai/styles/popup/background-color -> monocai.json:86
+/ui/theme-defs/monocai/styles/popup/color -> monocai.json:85
+/ui/theme-defs/monocai/styles/quote-border/background-color -> monocai.json:133
+/ui/theme-defs/monocai/styles/quote-border/color -> monocai.json:132
+/ui/theme-defs/monocai/styles/quoted-text/background-color -> monocai.json:136
+/ui/theme-defs/monocai/styles/scrollbar/background-color -> monocai.json:90
+/ui/theme-defs/monocai/styles/scrollbar/color -> monocai.json:89
+/ui/theme-defs/monocai/styles/selected-text/background-color -> monocai.json:27
+/ui/theme-defs/monocai/styles/skewed-time/color -> monocai.json:65
+/ui/theme-defs/monocai/styles/snippet-border/color -> monocai.json:147
+/ui/theme-defs/monocai/styles/table-border/color -> monocai.json:126
+/ui/theme-defs/monocai/styles/table-header/bold -> monocai.json:129
+/ui/theme-defs/monocai/styles/text/background-color -> monocai.json:24
+/ui/theme-defs/monocai/styles/text/color -> monocai.json:23
+/ui/theme-defs/monocai/styles/warning/bold -> monocai.json:46
+/ui/theme-defs/monocai/styles/warning/color -> monocai.json:45
+/ui/theme-defs/monocai/syntax-styles/ascii-control/color -> monocai.json:217
+/ui/theme-defs/monocai/syntax-styles/code-border/background-color -> monocai.json:164
+/ui/theme-defs/monocai/syntax-styles/code-border/color -> monocai.json:163
+/ui/theme-defs/monocai/syntax-styles/comment/color -> monocai.json:175
+/ui/theme-defs/monocai/syntax-styles/diff-add/color -> monocai.json:196
+/ui/theme-defs/monocai/syntax-styles/diff-delete/color -> monocai.json:193
+/ui/theme-defs/monocai/syntax-styles/diff-section/color -> monocai.json:199
+/ui/theme-defs/monocai/syntax-styles/doc-directive/color -> monocai.json:178
+/ui/theme-defs/monocai/syntax-styles/file/color -> monocai.json:211
+/ui/theme-defs/monocai/syntax-styles/function/color -> monocai.json:226
+/ui/theme-defs/monocai/syntax-styles/inline-code/background-color -> monocai.json:156
+/ui/theme-defs/monocai/syntax-styles/inline-code/color -> monocai.json:155
+/ui/theme-defs/monocai/syntax-styles/keyword/bold -> monocai.json:168
+/ui/theme-defs/monocai/syntax-styles/keyword/color -> monocai.json:167
+/ui/theme-defs/monocai/syntax-styles/non-ascii/color -> monocai.json:220
+/ui/theme-defs/monocai/syntax-styles/null/color -> monocai.json:214
+/ui/theme-defs/monocai/syntax-styles/number/bold -> monocai.json:223
+/ui/theme-defs/monocai/syntax-styles/quoted-code/background-color -> monocai.json:160
+/ui/theme-defs/monocai/syntax-styles/quoted-code/color -> monocai.json:159
+/ui/theme-defs/monocai/syntax-styles/re-repeat/color -> monocai.json:190
+/ui/theme-defs/monocai/syntax-styles/re-special/color -> monocai.json:187
+/ui/theme-defs/monocai/syntax-styles/separators-references-accessors/color -> monocai.json:229
+/ui/theme-defs/monocai/syntax-styles/spectrogram-high/background-color -> monocai.json:208
+/ui/theme-defs/monocai/syntax-styles/spectrogram-low/background-color -> monocai.json:202
+/ui/theme-defs/monocai/syntax-styles/spectrogram-medium/background-color -> monocai.json:205
+/ui/theme-defs/monocai/syntax-styles/string/bold -> monocai.json:172
+/ui/theme-defs/monocai/syntax-styles/string/color -> monocai.json:171
+/ui/theme-defs/monocai/syntax-styles/symbol/color -> monocai.json:184
+/ui/theme-defs/monocai/syntax-styles/type/color -> monocai.json:232
+/ui/theme-defs/monocai/syntax-styles/variable/color -> monocai.json:181
+/ui/theme-defs/monocai/vars/black -> monocai.json:7
+/ui/theme-defs/monocai/vars/blue -> monocai.json:11
+/ui/theme-defs/monocai/vars/cyan -> monocai.json:13
+/ui/theme-defs/monocai/vars/green -> monocai.json:9
+/ui/theme-defs/monocai/vars/magenta -> monocai.json:12
+/ui/theme-defs/monocai/vars/orange -> monocai.json:15
+/ui/theme-defs/monocai/vars/red -> monocai.json:8
+/ui/theme-defs/monocai/vars/semantic_highlight_color -> monocai.json:16
+/ui/theme-defs/monocai/vars/white -> monocai.json:14
+/ui/theme-defs/monocai/vars/yellow -> monocai.json:10
+/ui/theme-defs/night-owl/log-level-styles/critical/color -> night-owl.json:299
+/ui/theme-defs/night-owl/log-level-styles/error/color -> night-owl.json:296
+/ui/theme-defs/night-owl/log-level-styles/fatal/color -> night-owl.json:302
+/ui/theme-defs/night-owl/log-level-styles/warning/color -> night-owl.json:293
+/ui/theme-defs/night-owl/status-styles/active/background-color -> night-owl.json:266
+/ui/theme-defs/night-owl/status-styles/active/color -> night-owl.json:265
+/ui/theme-defs/night-owl/status-styles/alert/background-color -> night-owl.json:262
+/ui/theme-defs/night-owl/status-styles/alert/color -> night-owl.json:261
+/ui/theme-defs/night-owl/status-styles/disabled-title/background-color -> night-owl.json:236
+/ui/theme-defs/night-owl/status-styles/disabled-title/bold -> night-owl.json:237
+/ui/theme-defs/night-owl/status-styles/disabled-title/color -> night-owl.json:235
+/ui/theme-defs/night-owl/status-styles/hotkey/bold -> night-owl.json:278
+/ui/theme-defs/night-owl/status-styles/hotkey/color -> night-owl.json:277
+/ui/theme-defs/night-owl/status-styles/hotkey/underline -> night-owl.json:279
+/ui/theme-defs/night-owl/status-styles/inactive-alert/background-color -> night-owl.json:274
+/ui/theme-defs/night-owl/status-styles/inactive-alert/color -> night-owl.json:273
+/ui/theme-defs/night-owl/status-styles/inactive/background-color -> night-owl.json:270
+/ui/theme-defs/night-owl/status-styles/inactive/color -> night-owl.json:269
+/ui/theme-defs/night-owl/status-styles/info/background-color -> night-owl.json:250
+/ui/theme-defs/night-owl/status-styles/info/color -> night-owl.json:249
+/ui/theme-defs/night-owl/status-styles/subtitle/background-color -> night-owl.json:246
+/ui/theme-defs/night-owl/status-styles/subtitle/color -> night-owl.json:245
+/ui/theme-defs/night-owl/status-styles/suggestion/color -> night-owl.json:288
+/ui/theme-defs/night-owl/status-styles/text/background-color -> night-owl.json:254
+/ui/theme-defs/night-owl/status-styles/text/color -> night-owl.json:253
+/ui/theme-defs/night-owl/status-styles/title-hotkey/background-color -> night-owl.json:283
+/ui/theme-defs/night-owl/status-styles/title-hotkey/bold -> night-owl.json:284
+/ui/theme-defs/night-owl/status-styles/title-hotkey/color -> night-owl.json:282
+/ui/theme-defs/night-owl/status-styles/title-hotkey/underline -> night-owl.json:285
+/ui/theme-defs/night-owl/status-styles/title/background-color -> night-owl.json:241
+/ui/theme-defs/night-owl/status-styles/title/bold -> night-owl.json:242
+/ui/theme-defs/night-owl/status-styles/title/color -> night-owl.json:240
+/ui/theme-defs/night-owl/status-styles/warn/background-color -> night-owl.json:258
+/ui/theme-defs/night-owl/status-styles/warn/color -> night-owl.json:257
+/ui/theme-defs/night-owl/styles/adjusted-time/color -> night-owl.json:63
+/ui/theme-defs/night-owl/styles/alt-text/background-color -> night-owl.json:30
+/ui/theme-defs/night-owl/styles/breadcrumb/bold -> night-owl.json:122
+/ui/theme-defs/night-owl/styles/breadcrumb/color -> night-owl.json:121
+/ui/theme-defs/night-owl/styles/cursor-line/background-color -> night-owl.json:54
+/ui/theme-defs/night-owl/styles/cursor-line/bold -> night-owl.json:55
+/ui/theme-defs/night-owl/styles/cursor-line/color -> night-owl.json:53
+/ui/theme-defs/night-owl/styles/cursor-line/underline -> night-owl.json:56
+/ui/theme-defs/night-owl/styles/disabled-cursor-line/background-color -> night-owl.json:60
+/ui/theme-defs/night-owl/styles/disabled-cursor-line/color -> night-owl.json:59
+/ui/theme-defs/night-owl/styles/disabled-focused/background-color -> night-owl.json:83
+/ui/theme-defs/night-owl/styles/disabled-focused/color -> night-owl.json:82
+/ui/theme-defs/night-owl/styles/error/bold -> night-owl.json:42
+/ui/theme-defs/night-owl/styles/error/color -> night-owl.json:41
+/ui/theme-defs/night-owl/styles/file-offset/color -> night-owl.json:72
+/ui/theme-defs/night-owl/styles/focused/background-color -> night-owl.json:79
+/ui/theme-defs/night-owl/styles/focused/color -> night-owl.json:78
+/ui/theme-defs/night-owl/styles/footnote-border/background-color -> night-owl.json:139
+/ui/theme-defs/night-owl/styles/footnote-border/color -> night-owl.json:138
+/ui/theme-defs/night-owl/styles/footnote-text/background-color -> night-owl.json:143
+/ui/theme-defs/night-owl/styles/footnote-text/color -> night-owl.json:142
+/ui/theme-defs/night-owl/styles/h1/underline -> night-owl.json:94
+/ui/theme-defs/night-owl/styles/h2/underline -> night-owl.json:97
+/ui/theme-defs/night-owl/styles/h3/underline -> night-owl.json:100
+/ui/theme-defs/night-owl/styles/h4/underline -> night-owl.json:103
+/ui/theme-defs/night-owl/styles/h5/underline -> night-owl.json:106
+/ui/theme-defs/night-owl/styles/h6/underline -> night-owl.json:109
+/ui/theme-defs/night-owl/styles/hidden/bold -> night-owl.json:50
+/ui/theme-defs/night-owl/styles/hidden/color -> night-owl.json:49
+/ui/theme-defs/night-owl/styles/hr/color -> night-owl.json:112
+/ui/theme-defs/night-owl/styles/hyperlink/underline -> night-owl.json:115
+/ui/theme-defs/night-owl/styles/identifier/background-color -> night-owl.json:19
+/ui/theme-defs/night-owl/styles/identifier/color -> night-owl.json:20
+/ui/theme-defs/night-owl/styles/indent-guide/color -> night-owl.json:149
+/ui/theme-defs/night-owl/styles/info/bold -> night-owl.json:38
+/ui/theme-defs/night-owl/styles/info/color -> night-owl.json:37
+/ui/theme-defs/night-owl/styles/invalid-msg/color -> night-owl.json:75
+/ui/theme-defs/night-owl/styles/list-glyph/color -> night-owl.json:118
+/ui/theme-defs/night-owl/styles/offset-time/color -> night-owl.json:69
+/ui/theme-defs/night-owl/styles/ok/bold -> night-owl.json:34
+/ui/theme-defs/night-owl/styles/ok/color -> night-owl.json:33
+/ui/theme-defs/night-owl/styles/popup/background-color -> night-owl.json:87
+/ui/theme-defs/night-owl/styles/popup/color -> night-owl.json:86
+/ui/theme-defs/night-owl/styles/quote-border/background-color -> night-owl.json:132
+/ui/theme-defs/night-owl/styles/quote-border/color -> night-owl.json:131
+/ui/theme-defs/night-owl/styles/quoted-text/background-color -> night-owl.json:135
+/ui/theme-defs/night-owl/styles/scrollbar/background-color -> night-owl.json:91
+/ui/theme-defs/night-owl/styles/scrollbar/color -> night-owl.json:90
+/ui/theme-defs/night-owl/styles/selected-text/background-color -> night-owl.json:27
+/ui/theme-defs/night-owl/styles/skewed-time/color -> night-owl.json:66
+/ui/theme-defs/night-owl/styles/snippet-border/color -> night-owl.json:146
+/ui/theme-defs/night-owl/styles/table-border/color -> night-owl.json:125
+/ui/theme-defs/night-owl/styles/table-header/bold -> night-owl.json:128
+/ui/theme-defs/night-owl/styles/text/background-color -> night-owl.json:24
+/ui/theme-defs/night-owl/styles/text/color -> night-owl.json:23
+/ui/theme-defs/night-owl/styles/warning/bold -> night-owl.json:46
+/ui/theme-defs/night-owl/styles/warning/color -> night-owl.json:45
+/ui/theme-defs/night-owl/syntax-styles/ascii-control/color -> night-owl.json:218
+/ui/theme-defs/night-owl/syntax-styles/code-border/background-color -> night-owl.json:163
+/ui/theme-defs/night-owl/syntax-styles/code-border/color -> night-owl.json:162
+/ui/theme-defs/night-owl/syntax-styles/comment/color -> night-owl.json:173
+/ui/theme-defs/night-owl/syntax-styles/diff-add/color -> night-owl.json:197
+/ui/theme-defs/night-owl/syntax-styles/diff-delete/color -> night-owl.json:194
+/ui/theme-defs/night-owl/syntax-styles/diff-section/color -> night-owl.json:200
+/ui/theme-defs/night-owl/syntax-styles/doc-directive/color -> night-owl.json:176
+/ui/theme-defs/night-owl/syntax-styles/file/color -> night-owl.json:212
+/ui/theme-defs/night-owl/syntax-styles/function/color -> night-owl.json:224
+/ui/theme-defs/night-owl/syntax-styles/inline-code/background-color -> night-owl.json:155
+/ui/theme-defs/night-owl/syntax-styles/inline-code/color -> night-owl.json:154
+/ui/theme-defs/night-owl/syntax-styles/keyword/color -> night-owl.json:166
+/ui/theme-defs/night-owl/syntax-styles/non-ascii/color -> night-owl.json:221
+/ui/theme-defs/night-owl/syntax-styles/null/color -> night-owl.json:215
+/ui/theme-defs/night-owl/syntax-styles/number/color -> night-owl.json:185
+/ui/theme-defs/night-owl/syntax-styles/quoted-code/background-color -> night-owl.json:159
+/ui/theme-defs/night-owl/syntax-styles/quoted-code/color -> night-owl.json:158
+/ui/theme-defs/night-owl/syntax-styles/re-repeat/color -> night-owl.json:191
+/ui/theme-defs/night-owl/syntax-styles/re-special/color -> night-owl.json:188
+/ui/theme-defs/night-owl/syntax-styles/separators-references-accessors/color -> night-owl.json:227
+/ui/theme-defs/night-owl/syntax-styles/spectrogram-high/background-color -> night-owl.json:209
+/ui/theme-defs/night-owl/syntax-styles/spectrogram-low/background-color -> night-owl.json:203
+/ui/theme-defs/night-owl/syntax-styles/spectrogram-medium/background-color -> night-owl.json:206
+/ui/theme-defs/night-owl/syntax-styles/string/bold -> night-owl.json:170
+/ui/theme-defs/night-owl/syntax-styles/string/color -> night-owl.json:169
+/ui/theme-defs/night-owl/syntax-styles/symbol/color -> night-owl.json:182
+/ui/theme-defs/night-owl/syntax-styles/type/color -> night-owl.json:230
+/ui/theme-defs/night-owl/syntax-styles/variable/color -> night-owl.json:179
+/ui/theme-defs/night-owl/vars/black -> night-owl.json:7
+/ui/theme-defs/night-owl/vars/blue -> night-owl.json:11
+/ui/theme-defs/night-owl/vars/cyan -> night-owl.json:13
+/ui/theme-defs/night-owl/vars/green -> night-owl.json:9
+/ui/theme-defs/night-owl/vars/magenta -> night-owl.json:12
+/ui/theme-defs/night-owl/vars/red -> night-owl.json:8
+/ui/theme-defs/night-owl/vars/semantic_highlight_color -> night-owl.json:15
+/ui/theme-defs/night-owl/vars/white -> night-owl.json:14
+/ui/theme-defs/night-owl/vars/yellow -> night-owl.json:10
+/ui/theme-defs/solarized-dark/log-level-styles/critical/color -> solarized-dark.json:307
+/ui/theme-defs/solarized-dark/log-level-styles/error/color -> solarized-dark.json:304
+/ui/theme-defs/solarized-dark/log-level-styles/fatal/color -> solarized-dark.json:310
+/ui/theme-defs/solarized-dark/log-level-styles/warning/color -> solarized-dark.json:301
+/ui/theme-defs/solarized-dark/status-styles/active/background-color -> solarized-dark.json:272
+/ui/theme-defs/solarized-dark/status-styles/active/color -> solarized-dark.json:271
+/ui/theme-defs/solarized-dark/status-styles/alert/background-color -> solarized-dark.json:268
+/ui/theme-defs/solarized-dark/status-styles/alert/color -> solarized-dark.json:267
+/ui/theme-defs/solarized-dark/status-styles/disabled-title/background-color -> solarized-dark.json:245
+/ui/theme-defs/solarized-dark/status-styles/disabled-title/bold -> solarized-dark.json:246
+/ui/theme-defs/solarized-dark/status-styles/disabled-title/color -> solarized-dark.json:244
+/ui/theme-defs/solarized-dark/status-styles/hotkey/color -> solarized-dark.json:284
+/ui/theme-defs/solarized-dark/status-styles/hotkey/underline -> solarized-dark.json:285
+/ui/theme-defs/solarized-dark/status-styles/inactive-alert/background-color -> solarized-dark.json:293
+/ui/theme-defs/solarized-dark/status-styles/inactive-alert/color -> solarized-dark.json:292
+/ui/theme-defs/solarized-dark/status-styles/inactive/background-color -> solarized-dark.json:289
+/ui/theme-defs/solarized-dark/status-styles/inactive/color -> solarized-dark.json:288
+/ui/theme-defs/solarized-dark/status-styles/info/background-color -> solarized-dark.json:276
+/ui/theme-defs/solarized-dark/status-styles/info/color -> solarized-dark.json:275
+/ui/theme-defs/solarized-dark/status-styles/subtitle/background-color -> solarized-dark.json:255
+/ui/theme-defs/solarized-dark/status-styles/subtitle/bold -> solarized-dark.json:256
+/ui/theme-defs/solarized-dark/status-styles/subtitle/color -> solarized-dark.json:254
+/ui/theme-defs/solarized-dark/status-styles/suggestion/color -> solarized-dark.json:296
+/ui/theme-defs/solarized-dark/status-styles/text/background-color -> solarized-dark.json:260
+/ui/theme-defs/solarized-dark/status-styles/text/color -> solarized-dark.json:259
+/ui/theme-defs/solarized-dark/status-styles/title-hotkey/background-color -> solarized-dark.json:280
+/ui/theme-defs/solarized-dark/status-styles/title-hotkey/color -> solarized-dark.json:279
+/ui/theme-defs/solarized-dark/status-styles/title-hotkey/underline -> solarized-dark.json:281
+/ui/theme-defs/solarized-dark/status-styles/title/background-color -> solarized-dark.json:250
+/ui/theme-defs/solarized-dark/status-styles/title/bold -> solarized-dark.json:251
+/ui/theme-defs/solarized-dark/status-styles/title/color -> solarized-dark.json:249
+/ui/theme-defs/solarized-dark/status-styles/warn/background-color -> solarized-dark.json:264
+/ui/theme-defs/solarized-dark/status-styles/warn/color -> solarized-dark.json:263
+/ui/theme-defs/solarized-dark/styles/adjusted-time/color -> solarized-dark.json:72
+/ui/theme-defs/solarized-dark/styles/alt-text/background-color -> solarized-dark.json:39
+/ui/theme-defs/solarized-dark/styles/breadcrumb/bold -> solarized-dark.json:131
+/ui/theme-defs/solarized-dark/styles/breadcrumb/color -> solarized-dark.json:130
+/ui/theme-defs/solarized-dark/styles/cursor-line/background-color -> solarized-dark.json:63
+/ui/theme-defs/solarized-dark/styles/cursor-line/bold -> solarized-dark.json:64
+/ui/theme-defs/solarized-dark/styles/cursor-line/color -> solarized-dark.json:62
+/ui/theme-defs/solarized-dark/styles/cursor-line/underline -> solarized-dark.json:65
+/ui/theme-defs/solarized-dark/styles/disabled-cursor-line/background-color -> solarized-dark.json:69
+/ui/theme-defs/solarized-dark/styles/disabled-cursor-line/color -> solarized-dark.json:68
+/ui/theme-defs/solarized-dark/styles/disabled-focused/background-color -> solarized-dark.json:100
+/ui/theme-defs/solarized-dark/styles/disabled-focused/color -> solarized-dark.json:99
+/ui/theme-defs/solarized-dark/styles/error/bold -> solarized-dark.json:51
+/ui/theme-defs/solarized-dark/styles/error/color -> solarized-dark.json:50
+/ui/theme-defs/solarized-dark/styles/file-offset/color -> solarized-dark.json:81
+/ui/theme-defs/solarized-dark/styles/focused/background-color -> solarized-dark.json:96
+/ui/theme-defs/solarized-dark/styles/focused/color -> solarized-dark.json:95
+/ui/theme-defs/solarized-dark/styles/footnote-border/background-color -> solarized-dark.json:148
+/ui/theme-defs/solarized-dark/styles/footnote-border/color -> solarized-dark.json:147
+/ui/theme-defs/solarized-dark/styles/footnote-text/background-color -> solarized-dark.json:152
+/ui/theme-defs/solarized-dark/styles/footnote-text/color -> solarized-dark.json:151
+/ui/theme-defs/solarized-dark/styles/h1/underline -> solarized-dark.json:103
+/ui/theme-defs/solarized-dark/styles/h2/underline -> solarized-dark.json:106
+/ui/theme-defs/solarized-dark/styles/h3/underline -> solarized-dark.json:109
+/ui/theme-defs/solarized-dark/styles/h4/underline -> solarized-dark.json:112
+/ui/theme-defs/solarized-dark/styles/h5/underline -> solarized-dark.json:115
+/ui/theme-defs/solarized-dark/styles/h6/underline -> solarized-dark.json:118
+/ui/theme-defs/solarized-dark/styles/hidden/bold -> solarized-dark.json:59
+/ui/theme-defs/solarized-dark/styles/hidden/color -> solarized-dark.json:58
+/ui/theme-defs/solarized-dark/styles/hr/color -> solarized-dark.json:121
+/ui/theme-defs/solarized-dark/styles/hyperlink/underline -> solarized-dark.json:124
+/ui/theme-defs/solarized-dark/styles/identifier/background-color -> solarized-dark.json:28
+/ui/theme-defs/solarized-dark/styles/identifier/color -> solarized-dark.json:29
+/ui/theme-defs/solarized-dark/styles/indent-guide/color -> solarized-dark.json:158
+/ui/theme-defs/solarized-dark/styles/info/bold -> solarized-dark.json:47
+/ui/theme-defs/solarized-dark/styles/info/color -> solarized-dark.json:46
+/ui/theme-defs/solarized-dark/styles/invalid-msg/color -> solarized-dark.json:84
+/ui/theme-defs/solarized-dark/styles/list-glyph/color -> solarized-dark.json:127
+/ui/theme-defs/solarized-dark/styles/offset-time/color -> solarized-dark.json:78
+/ui/theme-defs/solarized-dark/styles/ok/bold -> solarized-dark.json:43
+/ui/theme-defs/solarized-dark/styles/ok/color -> solarized-dark.json:42
+/ui/theme-defs/solarized-dark/styles/popup/background-color -> solarized-dark.json:88
+/ui/theme-defs/solarized-dark/styles/popup/color -> solarized-dark.json:87
+/ui/theme-defs/solarized-dark/styles/quote-border/background-color -> solarized-dark.json:141
+/ui/theme-defs/solarized-dark/styles/quote-border/color -> solarized-dark.json:140
+/ui/theme-defs/solarized-dark/styles/quoted-text/background-color -> solarized-dark.json:144
+/ui/theme-defs/solarized-dark/styles/scrollbar/background-color -> solarized-dark.json:92
+/ui/theme-defs/solarized-dark/styles/scrollbar/color -> solarized-dark.json:91
+/ui/theme-defs/solarized-dark/styles/selected-text/background-color -> solarized-dark.json:36
+/ui/theme-defs/solarized-dark/styles/skewed-time/color -> solarized-dark.json:75
+/ui/theme-defs/solarized-dark/styles/snippet-border/color -> solarized-dark.json:155
+/ui/theme-defs/solarized-dark/styles/table-border/color -> solarized-dark.json:134
+/ui/theme-defs/solarized-dark/styles/table-header/bold -> solarized-dark.json:137
+/ui/theme-defs/solarized-dark/styles/text/background-color -> solarized-dark.json:33
+/ui/theme-defs/solarized-dark/styles/text/color -> solarized-dark.json:32
+/ui/theme-defs/solarized-dark/styles/warning/bold -> solarized-dark.json:55
+/ui/theme-defs/solarized-dark/styles/warning/color -> solarized-dark.json:54
+/ui/theme-defs/solarized-dark/syntax-styles/ascii-control/color -> solarized-dark.json:224
+/ui/theme-defs/solarized-dark/syntax-styles/code-border/background-color -> solarized-dark.json:172
+/ui/theme-defs/solarized-dark/syntax-styles/code-border/color -> solarized-dark.json:171
+/ui/theme-defs/solarized-dark/syntax-styles/comment/color -> solarized-dark.json:182
+/ui/theme-defs/solarized-dark/syntax-styles/diff-add/color -> solarized-dark.json:203
+/ui/theme-defs/solarized-dark/syntax-styles/diff-delete/color -> solarized-dark.json:200
+/ui/theme-defs/solarized-dark/syntax-styles/diff-section/color -> solarized-dark.json:206
+/ui/theme-defs/solarized-dark/syntax-styles/doc-directive/color -> solarized-dark.json:185
+/ui/theme-defs/solarized-dark/syntax-styles/file/color -> solarized-dark.json:218
+/ui/theme-defs/solarized-dark/syntax-styles/function/color -> solarized-dark.json:233
+/ui/theme-defs/solarized-dark/syntax-styles/inline-code/background-color -> solarized-dark.json:164
+/ui/theme-defs/solarized-dark/syntax-styles/inline-code/color -> solarized-dark.json:163
+/ui/theme-defs/solarized-dark/syntax-styles/keyword/color -> solarized-dark.json:175
+/ui/theme-defs/solarized-dark/syntax-styles/non-ascii/color -> solarized-dark.json:227
+/ui/theme-defs/solarized-dark/syntax-styles/null/color -> solarized-dark.json:221
+/ui/theme-defs/solarized-dark/syntax-styles/number/bold -> solarized-dark.json:230
+/ui/theme-defs/solarized-dark/syntax-styles/quoted-code/background-color -> solarized-dark.json:168
+/ui/theme-defs/solarized-dark/syntax-styles/quoted-code/color -> solarized-dark.json:167
+/ui/theme-defs/solarized-dark/syntax-styles/re-repeat/color -> solarized-dark.json:197
+/ui/theme-defs/solarized-dark/syntax-styles/re-special/color -> solarized-dark.json:194
+/ui/theme-defs/solarized-dark/syntax-styles/separators-references-accessors/color -> solarized-dark.json:236
+/ui/theme-defs/solarized-dark/syntax-styles/spectrogram-high/background-color -> solarized-dark.json:215
+/ui/theme-defs/solarized-dark/syntax-styles/spectrogram-low/background-color -> solarized-dark.json:209
+/ui/theme-defs/solarized-dark/syntax-styles/spectrogram-medium/background-color -> solarized-dark.json:212
+/ui/theme-defs/solarized-dark/syntax-styles/string/bold -> solarized-dark.json:179
+/ui/theme-defs/solarized-dark/syntax-styles/string/color -> solarized-dark.json:178
+/ui/theme-defs/solarized-dark/syntax-styles/symbol/color -> solarized-dark.json:191
+/ui/theme-defs/solarized-dark/syntax-styles/type/color -> solarized-dark.json:239
+/ui/theme-defs/solarized-dark/syntax-styles/variable/color -> solarized-dark.json:188
+/ui/theme-defs/solarized-dark/vars/base0 -> solarized-dark.json:11
+/ui/theme-defs/solarized-dark/vars/base00 -> solarized-dark.json:10
+/ui/theme-defs/solarized-dark/vars/base01 -> solarized-dark.json:9
+/ui/theme-defs/solarized-dark/vars/base02 -> solarized-dark.json:8
+/ui/theme-defs/solarized-dark/vars/base03 -> solarized-dark.json:7
+/ui/theme-defs/solarized-dark/vars/base1 -> solarized-dark.json:12
+/ui/theme-defs/solarized-dark/vars/base2 -> solarized-dark.json:13
+/ui/theme-defs/solarized-dark/vars/base3 -> solarized-dark.json:14
+/ui/theme-defs/solarized-dark/vars/black -> solarized-dark.json:15
+/ui/theme-defs/solarized-dark/vars/blue -> solarized-dark.json:21
+/ui/theme-defs/solarized-dark/vars/cyan -> solarized-dark.json:22
+/ui/theme-defs/solarized-dark/vars/green -> solarized-dark.json:23
+/ui/theme-defs/solarized-dark/vars/magenta -> solarized-dark.json:19
+/ui/theme-defs/solarized-dark/vars/orange -> solarized-dark.json:17
+/ui/theme-defs/solarized-dark/vars/red -> solarized-dark.json:18
+/ui/theme-defs/solarized-dark/vars/semantic_highlight_color -> solarized-dark.json:24
+/ui/theme-defs/solarized-dark/vars/violet -> solarized-dark.json:20
+/ui/theme-defs/solarized-dark/vars/yellow -> solarized-dark.json:16
+/ui/theme-defs/solarized-light/log-level-styles/critical/color -> solarized-light.json:257
+/ui/theme-defs/solarized-light/log-level-styles/error/color -> solarized-light.json:254
+/ui/theme-defs/solarized-light/log-level-styles/fatal/color -> solarized-light.json:260
+/ui/theme-defs/solarized-light/log-level-styles/warning/color -> solarized-light.json:251
+/ui/theme-defs/solarized-light/status-styles/active/background-color -> solarized-light.json:231
+/ui/theme-defs/solarized-light/status-styles/active/color -> solarized-light.json:230
+/ui/theme-defs/solarized-light/status-styles/alert/background-color -> solarized-light.json:227
+/ui/theme-defs/solarized-light/status-styles/alert/color -> solarized-light.json:226
+/ui/theme-defs/solarized-light/status-styles/disabled-title/background-color -> solarized-light.json:209
+/ui/theme-defs/solarized-light/status-styles/disabled-title/bold -> solarized-light.json:210
+/ui/theme-defs/solarized-light/status-styles/disabled-title/color -> solarized-light.json:208
+/ui/theme-defs/solarized-light/status-styles/inactive-alert/background-color -> solarized-light.json:243
+/ui/theme-defs/solarized-light/status-styles/inactive-alert/color -> solarized-light.json:242
+/ui/theme-defs/solarized-light/status-styles/inactive/background-color -> solarized-light.json:239
+/ui/theme-defs/solarized-light/status-styles/inactive/color -> solarized-light.json:238
+/ui/theme-defs/solarized-light/status-styles/info/background-color -> solarized-light.json:235
+/ui/theme-defs/solarized-light/status-styles/info/color -> solarized-light.json:234
+/ui/theme-defs/solarized-light/status-styles/subtitle/background-color -> solarized-light.json:214
+/ui/theme-defs/solarized-light/status-styles/subtitle/bold -> solarized-light.json:215
+/ui/theme-defs/solarized-light/status-styles/subtitle/color -> solarized-light.json:213
+/ui/theme-defs/solarized-light/status-styles/suggestion/color -> solarized-light.json:246
+/ui/theme-defs/solarized-light/status-styles/text/background-color -> solarized-light.json:219
+/ui/theme-defs/solarized-light/status-styles/text/color -> solarized-light.json:218
+/ui/theme-defs/solarized-light/status-styles/title/background-color -> solarized-light.json:204
+/ui/theme-defs/solarized-light/status-styles/title/bold -> solarized-light.json:205
+/ui/theme-defs/solarized-light/status-styles/title/color -> solarized-light.json:203
+/ui/theme-defs/solarized-light/status-styles/warn/background-color -> solarized-light.json:223
+/ui/theme-defs/solarized-light/status-styles/warn/color -> solarized-light.json:222
+/ui/theme-defs/solarized-light/styles/adjusted-time/color -> solarized-light.json:67
+/ui/theme-defs/solarized-light/styles/alt-text/background-color -> solarized-light.json:38
+/ui/theme-defs/solarized-light/styles/breadcrumb/bold -> solarized-light.json:123
+/ui/theme-defs/solarized-light/styles/breadcrumb/color -> solarized-light.json:122
+/ui/theme-defs/solarized-light/styles/cursor-line/background-color -> solarized-light.json:58
+/ui/theme-defs/solarized-light/styles/cursor-line/bold -> solarized-light.json:59
+/ui/theme-defs/solarized-light/styles/cursor-line/color -> solarized-light.json:57
+/ui/theme-defs/solarized-light/styles/cursor-line/underline -> solarized-light.json:60
+/ui/theme-defs/solarized-light/styles/disabled-cursor-line/background-color -> solarized-light.json:64
+/ui/theme-defs/solarized-light/styles/disabled-cursor-line/color -> solarized-light.json:63
+/ui/theme-defs/solarized-light/styles/disabled-focused/background-color -> solarized-light.json:92
+/ui/theme-defs/solarized-light/styles/disabled-focused/color -> solarized-light.json:91
+/ui/theme-defs/solarized-light/styles/error/bold -> solarized-light.json:46
+/ui/theme-defs/solarized-light/styles/error/color -> solarized-light.json:45
+/ui/theme-defs/solarized-light/styles/focused/background-color -> solarized-light.json:88
+/ui/theme-defs/solarized-light/styles/focused/color -> solarized-light.json:87
+/ui/theme-defs/solarized-light/styles/footnote-border/background-color -> solarized-light.json:140
+/ui/theme-defs/solarized-light/styles/footnote-border/color -> solarized-light.json:139
+/ui/theme-defs/solarized-light/styles/footnote-text/background-color -> solarized-light.json:144
+/ui/theme-defs/solarized-light/styles/footnote-text/color -> solarized-light.json:143
+/ui/theme-defs/solarized-light/styles/h1/underline -> solarized-light.json:95
+/ui/theme-defs/solarized-light/styles/h2/underline -> solarized-light.json:98
+/ui/theme-defs/solarized-light/styles/h3/underline -> solarized-light.json:101
+/ui/theme-defs/solarized-light/styles/h4/underline -> solarized-light.json:104
+/ui/theme-defs/solarized-light/styles/h5/underline -> solarized-light.json:107
+/ui/theme-defs/solarized-light/styles/h6/underline -> solarized-light.json:110
+/ui/theme-defs/solarized-light/styles/hidden/bold -> solarized-light.json:54
+/ui/theme-defs/solarized-light/styles/hidden/color -> solarized-light.json:53
+/ui/theme-defs/solarized-light/styles/hr/color -> solarized-light.json:113
+/ui/theme-defs/solarized-light/styles/hyperlink/underline -> solarized-light.json:116
+/ui/theme-defs/solarized-light/styles/identifier/color -> solarized-light.json:28
+/ui/theme-defs/solarized-light/styles/indent-guide/color -> solarized-light.json:150
+/ui/theme-defs/solarized-light/styles/invalid-msg/color -> solarized-light.json:76
+/ui/theme-defs/solarized-light/styles/list-glyph/color -> solarized-light.json:119
+/ui/theme-defs/solarized-light/styles/offset-time/color -> solarized-light.json:73
+/ui/theme-defs/solarized-light/styles/ok/bold -> solarized-light.json:42
+/ui/theme-defs/solarized-light/styles/ok/color -> solarized-light.json:41
+/ui/theme-defs/solarized-light/styles/popup/background-color -> solarized-light.json:80
+/ui/theme-defs/solarized-light/styles/popup/color -> solarized-light.json:79
+/ui/theme-defs/solarized-light/styles/quote-border/background-color -> solarized-light.json:133
+/ui/theme-defs/solarized-light/styles/quote-border/color -> solarized-light.json:132
+/ui/theme-defs/solarized-light/styles/quoted-text/background-color -> solarized-light.json:136
+/ui/theme-defs/solarized-light/styles/scrollbar/background-color -> solarized-light.json:84
+/ui/theme-defs/solarized-light/styles/scrollbar/color -> solarized-light.json:83
+/ui/theme-defs/solarized-light/styles/selected-text/background-color -> solarized-light.json:35
+/ui/theme-defs/solarized-light/styles/skewed-time/color -> solarized-light.json:70
+/ui/theme-defs/solarized-light/styles/snippet-border/color -> solarized-light.json:147
+/ui/theme-defs/solarized-light/styles/table-border/color -> solarized-light.json:126
+/ui/theme-defs/solarized-light/styles/table-header/bold -> solarized-light.json:129
+/ui/theme-defs/solarized-light/styles/text/background-color -> solarized-light.json:32
+/ui/theme-defs/solarized-light/styles/text/color -> solarized-light.json:31
+/ui/theme-defs/solarized-light/styles/warning/bold -> solarized-light.json:50
+/ui/theme-defs/solarized-light/styles/warning/color -> solarized-light.json:49
+/ui/theme-defs/solarized-light/syntax-styles/comment/color -> solarized-light.json:162
+/ui/theme-defs/solarized-light/syntax-styles/diff-add/color -> solarized-light.json:183
+/ui/theme-defs/solarized-light/syntax-styles/diff-delete/color -> solarized-light.json:180
+/ui/theme-defs/solarized-light/syntax-styles/diff-section/color -> solarized-light.json:186
+/ui/theme-defs/solarized-light/syntax-styles/doc-directive/color -> solarized-light.json:165
+/ui/theme-defs/solarized-light/syntax-styles/file/color -> solarized-light.json:198
+/ui/theme-defs/solarized-light/syntax-styles/keyword/color -> solarized-light.json:155
+/ui/theme-defs/solarized-light/syntax-styles/re-repeat/color -> solarized-light.json:177
+/ui/theme-defs/solarized-light/syntax-styles/re-special/color -> solarized-light.json:174
+/ui/theme-defs/solarized-light/syntax-styles/spectrogram-high/background-color -> solarized-light.json:195
+/ui/theme-defs/solarized-light/syntax-styles/spectrogram-low/background-color -> solarized-light.json:189
+/ui/theme-defs/solarized-light/syntax-styles/spectrogram-medium/background-color -> solarized-light.json:192
+/ui/theme-defs/solarized-light/syntax-styles/string/bold -> solarized-light.json:159
+/ui/theme-defs/solarized-light/syntax-styles/string/color -> solarized-light.json:158
+/ui/theme-defs/solarized-light/syntax-styles/symbol/color -> solarized-light.json:171
+/ui/theme-defs/solarized-light/syntax-styles/variable/color -> solarized-light.json:168
+/ui/theme-defs/solarized-light/vars/base0 -> solarized-light.json:11
+/ui/theme-defs/solarized-light/vars/base00 -> solarized-light.json:10
+/ui/theme-defs/solarized-light/vars/base01 -> solarized-light.json:9
+/ui/theme-defs/solarized-light/vars/base02 -> solarized-light.json:8
+/ui/theme-defs/solarized-light/vars/base03 -> solarized-light.json:7
+/ui/theme-defs/solarized-light/vars/base1 -> solarized-light.json:12
+/ui/theme-defs/solarized-light/vars/base2 -> solarized-light.json:13
+/ui/theme-defs/solarized-light/vars/base3 -> solarized-light.json:14
+/ui/theme-defs/solarized-light/vars/black -> solarized-light.json:15
+/ui/theme-defs/solarized-light/vars/blue -> solarized-light.json:21
+/ui/theme-defs/solarized-light/vars/cyan -> solarized-light.json:22
+/ui/theme-defs/solarized-light/vars/green -> solarized-light.json:23
+/ui/theme-defs/solarized-light/vars/magenta -> solarized-light.json:19
+/ui/theme-defs/solarized-light/vars/orange -> solarized-light.json:17
+/ui/theme-defs/solarized-light/vars/red -> solarized-light.json:18
+/ui/theme-defs/solarized-light/vars/semantic_highlight_color -> solarized-light.json:24
+/ui/theme-defs/solarized-light/vars/violet -> solarized-light.json:20
+/ui/theme-defs/solarized-light/vars/yellow -> solarized-light.json:16
diff --git a/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out b/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out
index 751c83b..2db5d3c 100644
--- a/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out
+++ b/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out
@@ -1,2 +1,2 @@
-filepath lines 
-stdin   4 
+filepath  lines  
+stdin  4
diff --git a/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err b/test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.err
index e69de29..e69de29 100644
--- a/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err
+++ b/test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.err
diff --git a/test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.out b/test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.out
new file mode 100644
index 0000000..8d4265f
--- /dev/null
+++ b/test/expected/test_cli.sh_ff7da172f4350a2adb74b8764575823d798ed8b6.out
@@ -0,0 +1,2 @@
+Hello, World!
+Goodbye, World!
diff --git a/test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.err b/test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.err
new file mode 100644
index 0000000..23dd3a4
--- /dev/null
+++ b/test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.err
@@ -0,0 +1,7 @@
+✘ error: cannot access -- /bad-dir
+ reason: No such file or directory
+ --> command-option:1
+ | :cd /bad-dir 
+ = help: :cd dir
+ ══════════════════════════════════════════════════════════════════════
+ Change the current directory
diff --git a/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.err b/test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.out
index e69de29..e69de29 100644
--- a/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.err
+++ b/test/expected/test_cmds.sh_015ffe79a08f4c9f0cd1cb84c6afa4398f879fc7.out
diff --git a/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err b/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err
index 0d53487..8ecc11d 100644
--- a/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err
+++ b/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err
@@ -1,6 +1,6 @@
✘ error: no log files loaded
 --> command-option:2
 | :close 
- = help: :close
+ = help: :close path
══════════════════════════════════════════════════════════════════════
- Close the top file in the view
+ Close the given file(s) or the top file in the view
diff --git a/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out b/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out
index 6dfcc1c..227341b 100644
--- a/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out
+++ b/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out
@@ -1,14 +1,8 @@
[
{
"log_line": 0,
- "log_part": null,
"log_time": "2009-07-20 22:59:26.000",
- "log_idle_msecs": 0,
"log_level": "info",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"c_ip": "192.168.202.254",
"cs_method": "GET",
"cs_referer": "-",
@@ -19,18 +13,19 @@
"cs_version": "HTTP/1.0",
"sc_bytes": 134,
"sc_status": 200,
- "cs_host": null
+ "cs_host": null,
+ "log_part": null,
+ "log_idle_msecs": 0,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 1,
- "log_part": null,
"log_time": "2009-07-20 22:59:29.000",
- "log_idle_msecs": 3000,
"log_level": "error",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"c_ip": "192.168.202.254",
"cs_method": "GET",
"cs_referer": "-",
@@ -41,18 +36,19 @@
"cs_version": "HTTP/1.0",
"sc_bytes": 46210,
"sc_status": 404,
- "cs_host": null
+ "cs_host": null,
+ "log_part": null,
+ "log_idle_msecs": 3000,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 2,
- "log_part": null,
"log_time": "2009-07-20 22:59:29.000",
- "log_idle_msecs": 0,
"log_level": "info",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"c_ip": "192.168.202.254",
"cs_method": "GET",
"cs_referer": "-",
@@ -63,6 +59,13 @@
"cs_version": "HTTP/1.0",
"sc_bytes": 78929,
"sc_status": 200,
- "cs_host": null
+ "cs_host": null,
+ "log_part": null,
+ "log_idle_msecs": 0,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
}
]
diff --git a/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out b/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out
index 8c91cd9..156d9d9 100644
--- a/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out
+++ b/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out
@@ -1 +1 @@
-2009-07-20 22:59:30,221:ERROR:Goodbye, World!
+2009-07-20 22:59:30,221:ERROR:Goodbye, World!
diff --git a/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out b/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out
index 3f55261..ce0cfbf 100644
--- a/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out
+++ b/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out
@@ -1,23 +1,23 @@
-Apr 7 00:49:42 Tim-Abaft-iMac abashed[0]: Aberrant [abhorrent5701Aberrant]: Link up on en0, 1-Aboard, Full-abortive, Abounding flow-abrupt, Absent [796d,2301,0de1,0300,cde1,3800]
-Apr 7 05:49:53 Tim-Abaft-iMac.absorbing Abstracted[17212]: -[absurd abundant] absurd abusive accept: <acceptable:0x511f30
- accessible=<KSOmahaServer:0x510d80>
- url="https://achondroplasia.example.com/account/accurate2"
- achiever=0
- acid=1
- acidic=1
- acoustic=1
+Apr 7 00:49:42 Tim-Stacks-iMac aback[0]: Abaft [abandoned5701Abaft]: Link up on en0, 1-Gigabit, Full-duplex, Ablaze flow-control, Able [796d,2301,0de1,0300,cde1,3800]
+Apr 7 05:49:53 Tim-Stacks-iMac.local Aboard[17212]: -[aboriginal abortive] aboriginal abounding abrasive: <abrupt:0x511f30
+ absent=<KSOmahaServer:0x510d80>
+ url="https://achondroplasia.example.com/absorbing/abstracted2"
+ absurd=0
+ abundant=1
+ abusive=1
+ accept=1
body=
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <o:gupdate xmlns:o="http://acinetobacter-infections.example.com/accurate2/acrid" protocol="2.0" version="Act-1.2.0.7709" ismachine="1" requestid="{1ca0a968-cbe9-e75b-d00b-4859609878ea}">
- <o:os platform="mac" version="activity" sp="10.10.2_x86_64h"></o:os>
- <o:app appid="com.actually.Ad hoc" version="1.2.0.7709" lang="en-us" installage="180" brand="GGLG">
+ <o:gupdate xmlns:o="http://acinetobacter-infections.example.com/abstracted2/accessible" protocol="2.0" version="KeystoneDaemon-1.2.0.7709" ismachine="1" requestid="{1ca0a968-cbe9-e75b-d00b-4859609878ea}">
+ <o:os platform="mac" version="account" sp="10.10.2_x86_64h"></o:os>
+ <o:app appid="com.achiever.Acid" version="1.2.0.7709" lang="en-us" installage="180" brand="GGLG">
<o:ping r="1" a="1"></o:ping>
<o:updatecheck></o:updatecheck>
</o:app>
</o:gupdate>
>
-Apr 7 07:31:56 Tim-Abaft-iMac.absorbing Add[36403]: ADDICTED: The Adhesive adjoining adjustment is admit 10.9.2 adorable of 10.10.2. Use advice's afford afraid to get afterthought aggressive agonizing agree
- Call agreement:
-Apr 7 07:31:56 Tim-Abaft-iMac.absorbing Add[36403]: 0 Ahead 0x00007fff8a9b3d9b ___Adhesive_Air_airplane_airport + 113
-Apr 7 07:31:56 Tim-Abaft-iMac.absorbing Add[36403]: 1 ajar.alarm 0x00007fff8bc84c13 _alcoholic_alert_alike + 8
-Apr 7 07:32:56 Tim-Abaft-iMac.absorbing alive[234]: Bad data { abc, 123, 456 )}]
+Apr 7 07:31:56 Tim-Stacks-iMac.local Acoustic[36403]: ACOUSTICS: The Act action activity is actually 10.9.2 ad hoc of 10.10.2. Use add's addition adhesive to get admire admit adorable adventurous
+ Call advice:
+Apr 7 07:31:56 Tim-Stacks-iMac.local Acoustic[36403]: 0 Advise 0x00007fff8a9b3d9b ___Act_Afford_afraid_aftermath + 113
+Apr 7 07:31:56 Tim-Stacks-iMac.local Acoustic[36403]: 1 afternoon.afterthought 0x00007fff8bc84c13 _aggressive_agonizing_agree + 8
+Apr 7 07:32:56 Tim-Stacks-iMac.local agreeable[234]: Bad data { abc, 123, 456 )}]
diff --git a/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out b/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out
index c6eedf2..43bbc04 100644
--- a/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out
+++ b/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out
@@ -1 +1 @@
-2009-07-20 22:59:30,221:ERROR:Goodbye, World!
+2009-07-20 22:59:30,221:ERROR:Goodbye, World!
diff --git a/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.err b/test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.err
index e69de29..e69de29 100644
--- a/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.err
+++ b/test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.err
diff --git a/test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.out b/test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.out
new file mode 100644
index 0000000..891f4a7
--- /dev/null
+++ b/test/expected/test_cmds.sh_3b4bea458c59d2bac492e568616b610625037ad0.out
@@ -0,0 +1,2 @@
+⋮:⋮:foo bar baz
+⋮:⋮:foo bar baz
diff --git a/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out b/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out
index dcd3557..1192d46 100644
--- a/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out
+++ b/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out
@@ -1,2 +1,2 @@
-2009-07-20 22:59:30,221:ERROR:Goodbye, World!
-2009-07-20 22:59:30,221:ERROR:Goodbye, World!
+2009-07-20 22:59:30,221:ERROR:Goodbye, World!
+2009-07-20 22:59:30,221:ERROR:Goodbye, World!
diff --git a/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out b/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out
index ef822cd..278a6d1 100644
--- a/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out
+++ b/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out
@@ -1,3 +1,3 @@
2009-07-20 22:59:27,672:DEBUG:Hello, World!
How are you today?
-2009-07-20 22:59:30,221:ERROR:Goodbye, World!
+2009-07-20 22:59:30,221:ERROR:Goodbye, World!
diff --git a/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err b/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err
index e90b75a..5163792 100644
--- a/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err
+++ b/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err
@@ -1,4 +1,4 @@
✘ error: unknown bookmark type: foobar
 --> command-option:2
 | :next-mark foobar 
- = help: available types: error, file, meta, search, user, user-expr, warning
+ = help: available types: error, file, meta, partition, search, user, user-expr, warning
diff --git a/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out b/test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.err
index e69de29..e69de29 100644
--- a/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out
+++ b/test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.err
diff --git a/test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.out b/test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.out
new file mode 100644
index 0000000..f9264f7
--- /dev/null
+++ b/test/expected/test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.out
@@ -0,0 +1,2 @@
+Hello
+World
diff --git a/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out b/test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.err
index e69de29..e69de29 100644
--- a/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out
+++ b/test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.err
diff --git a/test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.out b/test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.out
new file mode 100644
index 0000000..0dd4cb7
--- /dev/null
+++ b/test/expected/test_cmds.sh_68c774418bac897bd4d4fe9dbbf08454886b2e15.out
@@ -0,0 +1,3 @@
+192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
diff --git a/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out b/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out
index 7ad9d78..6377559 100644
--- a/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out
+++ b/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out
@@ -1,5 +1,5 @@
-┏━━┳━━━━━━━━━━━━━┓
-┃c1┃ c2 ┃
-┡━━╇━━━━━━━━━━━━━┩
-│ 1│Hello, World!│
-└━━┴━━━━━━━━━━━━━┘
+┏━━━━━━━━━━┳━━━━━━━━━━━━━┓
+┃ c1 ┃ c2 ┃
+┡━━━━━━━━━━╇━━━━━━━━━━━━━┩
+│ 1│Hello, World!│
+└━━━━━━━━━━┴━━━━━━━━━━━━━┘
diff --git a/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.out b/test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.err
index e69de29..e69de29 100644
--- a/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.out
+++ b/test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.err
diff --git a/test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.out b/test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.out
new file mode 100644
index 0000000..0ac26ae
--- /dev/null
+++ b/test/expected/test_cmds.sh_949826cc086c7a5c87270be172e3caa3bf8f928d.out
@@ -0,0 +1 @@
+{"ts": "2013-09-06T22:00:49.124817Z", "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"} info steve@example.com
diff --git a/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.err b/test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.err
index e69de29..e69de29 100644
--- a/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.err
+++ b/test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.err
diff --git a/test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.out b/test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.out
new file mode 100644
index 0000000..b91e5b5
--- /dev/null
+++ b/test/expected/test_cmds.sh_9527f941dc84a2ac3a030f222e41c6ccd1961cbe.out
@@ -0,0 +1 @@
+Hello, World!
diff --git a/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out b/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out
index 01761e9..bcef8b0 100644
--- a/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out
+++ b/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out
@@ -1,4 +1,4 @@
- Thu Nov 03 09:20:00  1 normal 2 errors 0 warnings  0 marks
- Thu Nov 03 09:45:00  1 normal 0 errors 0 warnings 0 marks
- Fri Feb 03 09:20:00  0 normal 1 errors 0 warnings 0 marks
- Wed Jan 03 09:20:00  1 normal 0 errors 0 warnings 0 marks
+ Thu Nov 03 09:20:00  1 normal 2 errors 0 warnings  0 marks
+ Thu Nov 03 09:45:00  1 normal 0 errors 0 warnings 0 marks
+ Fri Feb 03 09:20:00  0 normal 1 errors 0 warnings 0 marks
+ Wed Jan 03 09:20:00  1 normal 0 errors 0 warnings 0 marks
diff --git a/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out b/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out
deleted file mode 100644
index 1d3eae4..0000000
--- a/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out
+++ /dev/null
@@ -1,2 +0,0 @@
-log_top_line() 
- 51
diff --git a/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err b/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err
index 644b202..94f8e7b 100644
--- a/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err
+++ b/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err
@@ -3,5 +3,5 @@
 | :filter-out 32 
 = help: :filter-out pattern
══════════════════════════════════════════════════════════════════════
- Remove lines that match the given regular expression in the current
- view
+ Remove lines that match the given regular expression in the
+ current view
diff --git a/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out b/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out
index fa6a319..877b967 100644
--- a/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out
+++ b/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out
@@ -1,12 +1,12 @@
{
- "foo bar": null,
+ "foo bar": null,
"array": [
- 1,
- 2,
- 3
+ 1,
+ 2,
+ 3
],
"obj": {
- "one": 1,
- "two": true
+ "one": 1,
+ "two": true
}
}
diff --git a/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out b/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out
index be06882..f4f4bcd 100644
--- a/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out
+++ b/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out
@@ -1 +1 @@
- Sat Nov 03 08:00:00 1 normal 0 errors 0 warnings 0 marks
+ Sat Nov 03 08:00:00 1 normal 0 errors 0 warnings  0 marks
diff --git a/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.err b/test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.err
index e69de29..e69de29 100644
--- a/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.err
+++ b/test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.err
diff --git a/test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.out b/test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.out
new file mode 100644
index 0000000..8ab686e
--- /dev/null
+++ b/test/expected/test_cmds.sh_b3d0588ad144a841200692b46125bddf66f5d8bb.out
@@ -0,0 +1 @@
+Hello, World!
diff --git a/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
index aca5279..8352cf5 100644
--- a/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
+++ b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
@@ -51,33 +51,27 @@ not have to manually specify the log file format. The currently
supported formats are: syslog, apache, strace, tcsh history, and
generic log files with timestamps.
-Lnav will also display data piped in on the standard input. The
-following options are available when doing so:
-
- •  -t  Prepend timestamps to the lines of data being read
- in on the standard input.
- •  -w file  Write the contents of the standard input to
- this file.
+Lnav will also display data piped in on the standard input.
To automatically execute queries or lnav commands after the files have
been loaded, you can use the following options:
•  -c cmd  A command, query, or file to execute. The
first character determines the type of operation: a colon
- ( : ) is used for the built-in commands; a semi-colon ( ;
- ) for SQL queries; and a pipe symbol ( | ) for executing
- a file containing other commands. For example, to open
- the file "foo.log" and go to the tenth line in the file,
- you can do:
+ ( : ) is used for the built-in commands; a semi-colon (
+  ; ) for SQL/PRQL queries; and a pipe symbol ( | ) for
+ executing a file containing other commands. For example,
+ to open the file "foo.log" and go to the tenth line in
+ the file, you can do:
▌lnav -c ':goto 10' foo.log 
This option can be given multiple times to execute
multiple operations in sequence.
•  -f file  A file that contains commands, queries, or
- files to execute. This option is a shortcut for  -c '|file'
- . You can use a dash ( - ) to execute commands from the
- standard input.
+ files to execute. This option is a shortcut for
+  -c '|file' . You can use a dash ( - ) to execute
+ commands from the standard input.
To execute commands/queries without opening the interactive text UI,
you can pass the  -n  option. This combination of options allows you
@@ -111,7 +105,8 @@ On color displays, the lines will be highlighted as follows:
• Errors will be colored in red;
• warnings will be yellow;
- • boundaries between days will be underlined; and
+ • boundaries between days will be underlined;
+ and
• various color highlights will be applied to: IP
addresses, SQL keywords, XML tags, file and line numbers
in Java backtraces, and quoted strings.
@@ -132,13 +127,14 @@ each message and pressing again will show the full paths.
Above and below the main body are status lines that display a variety
of information. The top line displays:
- • The current time, configurable by the  /ui/clock-format 
- property.
- • The highest priority message from the  lnav_user_notifications 
- table. You can insert rows into this table to display
- your own status messages. The default message displayed
- on startup explains how to focus on the next status line
- at the top, which is an interactive breadcrumb bar.
+ • The current time, configurable by the
+  /ui/clock-format  property.
+ • The highest priority message from the
+  lnav_user_notifications  table. You can insert rows into
+ this table to display your own status messages. The
+ default message displayed on startup explains how to
+ focus on the next status line at the top, which is an
+ interactive breadcrumb bar.
The second status line at the top display breadcrumbs for the top line
in the main view. Pressing  ENTER  will focus input on the breadcrumb
@@ -147,8 +143,8 @@ breadcrumbs are:
• The name of the current view.
• In the log view, the timestamp of the top log message.
- • In the log view, the format of the log file the top log
- message is from.
+ • In the log view, the format of the log file the top
+ log message is from.
• The name of the file the top line was pulled from.
• If the top line is within a larger chunk of structured
data, the path to the value in the top line will be
@@ -156,8 +152,8 @@ breadcrumbs are:
Notes:
- 1. Pressing  CTRL-A / CTRL-E  will select the first/last
- breadcrumb.
+ 1. Pressing  CTRL-A / CTRL-E  will select the
+ first/last breadcrumb.
2. Typing text while a breadcrumb is selected will
perform a fuzzy search on the possibilities.
@@ -172,7 +168,8 @@ the following:
• The number of enabled filters and the total number of
filters.
- • The number of lines not displayed because of filtering.
+ • The number of lines not displayed because of
+ filtering.
To edit the filters, you can press TAB to change the focus from the
main view to the filter editor. The editor allows you to create,
@@ -207,14 +204,14 @@ can always use  q  to pop the top view off of the stack.
the log file view.
Q Similar to  q , except it will try to sync the top
time between the current and former views. For
- example, when leaving the spectrogram view with  Q
- , the top time in that view will be matched to the
- top time in the log view.
+ example, when leaving the spectrogram view with
+  Q , the top time in that view will be matched to
+ the top time in the log view.
TAB Toggle focusing on the filter editor or the main
view.
ENTER Focus on the breadcrumb bar.
- a/A Restore the view that was previously popped with  q
- / Q . The  A  hotkey will try to match the top
+ a/A Restore the view that was previously popped with
+  q / Q . The  A  hotkey will try to match the top
times between the two views.
X Close the current text file or log file.
@@ -263,11 +260,10 @@ can always use  q  to pop the top view off of the stack.
and then the last message arrives five seconds
later, the last message will be highlighted as a
slow down.
- {/} Move to the previous/next location in history.
- Whenever you jump to a new location in the view,
- the location will be added to the history. The
- history is not updated when using only the arrow
- keys.
+ {/} Move to the previous/next section in the view. In
+ the LOG view, this moves through partitions. In
+ other views, it moves through sections of
+ documents.
Chronological Navigation
@@ -427,10 +423,10 @@ can always use  q  to pop the top view off of the stack.
name are treated as arguments can be referenced in
the script using  $1 ,  $2 , and so on, like in a
shell script.
- CTRL+], ESCAPE Abort command-line entry started with  / ,  : ,  ;
- , or  | .
+ CTRL+], ESCAPE Abort command-line entry started with  / ,  : ,
+  ; , or  | .
- ▌Note: The regular expression format used by lnav is PCRE[1]
+ ▌Note: The regular expression format used by lnav is ]8;;http://perldoc.perl.org/perlre.html\PCRE]8;;\[1]
▌(Perl-Compatible Regular Expressions).
▌ ▌[1] - http://perldoc.perl.org/perlre.html
@@ -471,14 +467,14 @@ mouse to mark lines of text and move the view by grabbing the
scrollbar.
NOTE: You need to manually enable this feature by setting the LNAV_EXP
-environment variable to "mouse". F2 toggles mouse support.
+environment variable to "mouse".  F2  toggles mouse support.
-SQL Queries (experimental)
+Log Analysis
Lnav has support for performing SQL queries on log files using the
-Sqlite3 "virtual" table feature. For all supported log file types,
+SQLite3 "virtual" table feature. For all supported log file types,
lnav will create tables that can be queried using the subset of SQL
-that is supported by Sqlite3. For example, to get the top ten URLs
+that is supported by SQLite3. For example, to get the top ten URLs
being accessed in any loaded Apache log files, you can execute:
▌;SELECT cs_uri_stem, count(*) AS total FROM access_log 
@@ -542,8 +538,8 @@ structured.
log_procname The name of the process that sent the message.
log_pid The process ID of the process that sent the
message.
- •  access_log  (The column names are the same as those in
- the Microsoft LogParser tool.)
+ •  access_log  (The column names are the same as those
+ in the Microsoft LogParser tool.)
Column Description
══════════════════════════════════════════════════════════
@@ -579,6 +575,37 @@ example of a top ten query into the "/tmp/topten.db" file, you can do:
▌ FROM access_log GROUP BY cs_uri_stem ORDER BY total DESC 
▌ LIMIT 10; 
+PRQL Support
+
+The Pipelined Relational Query Language ]8;;https://prql-lang.org\(PRQL)]8;;\[1] is an alternative
+database query language that compiles to SQL. The main advantage of
+PRQL, in the context of lnav, is that it is easier to work with
+interactively compared to SQL. For example, lnav can provide previews
+of different stages of the pipeline and provide more accurate
+tab-completions for the columns in the result set.
+
+ ▌[1] - https://prql-lang.org
+
+You can execute a PRQL query in the SQL prompt. A PRQL query starts
+with the  from  keyword that specifies the table to use as a data
+source. The next stage of a pipeline is started by entering a pipe
+symbol ( | ) followed by a ]8;;https://prql-lang.org/book/reference/stdlib/transforms/index.html\PRQL transform]8;;\[1]. As you build the query
+in the prompt, lnav will display any relevant help and preview for the
+current and previous stages of the pipeline.
+
+ ▌[1] - https://prql-lang.org/book/reference/stdlib/transforms/index.html
+
+Using the top ten URLs query from earlier as an example, the PRQL
+version would be as follows:
+
+ ▌;from access_log | stats.count_by cs_uri_stem | take 10 
+
+The first stage selects the data source, the web  access_log  table in
+this case. The  stats.count_by  transform is a convenience provided
+by lnav that groups by the given column, counts the rows in each
+group, and sorts by count in descending order. The  take 10 turns
+into the  LIMIT 10 .
+
Dynamic logline Table (experimental)
(NOTE: This feature is still very new and not completely reliable yet,
@@ -702,7 +729,7 @@ For support questions, email:
Parameter
msg The message to display
See Also
- :echo, :eval, :export-session-to, :rebuild, :redirect-to,
+ :cd, :echo, :eval, :export-session-to, :rebuild, :redirect-to, :sh,
:write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
:write-screen-to, :write-table-to, :write-to, :write-view-to
Example
@@ -711,26 +738,53 @@ For support questions, email:
+:annotate
+══════════════════════════════════════════════════════════════════════
+ Analyze the focused log message and attach annotations
+See Also
+ :comment, :tag
+
:append-to path
══════════════════════════════════════════════════════════════════════
Append marked lines in the current view to the given file
Parameter
path The path to the file to append to
See Also
- :echo, :export-session-to, :pipe-line-to, :pipe-to, :redirect-to,
- :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
- :write-screen-to, :write-table-to, :write-to, :write-view-to, echoln()
+ .dump, .read, :echo, :export-session-to, :pipe-line-to, :pipe-to,
+ :redirect-to, :write-csv-to, :write-json-to, :write-jsonlines-to,
+ :write-raw-to, :write-screen-to, :write-table-to, :write-to,
+ :write-view-to, echoln()
Example
#1 To append marked lines to the file /tmp/interesting-lines.txt:
:append-to /tmp/interesting-lines.txt 
+:cd dir
+══════════════════════════════════════════════════════════════════════
+ Change the current directory
+Parameter
+ dir The new current directory
+See Also
+ :alt-msg, :echo, :eval, :export-session-to, :rebuild, :redirect-to,
+ :sh, :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to
+
:clear-comment
══════════════════════════════════════════════════════════════════════
Clear the comment attached to the top log line
See Also
- :comment, :tag
+ :annotate, :comment, :tag
+
+:clear-file-timezone pattern
+══════════════════════════════════════════════════════════════════════
+ Clear the timezone setting for the focused file or the given glob
+ pattern.
+Parameter
+ pattern The glob pattern to match against files that
+ should no longer use this timezone
+See Also
+ :set-file-timezone
:clear-filter-expr
══════════════════════════════════════════════════════════════════════
@@ -764,20 +818,24 @@ For support questions, email:
Clear the partition the top line is a part of
-:close
+:close path
══════════════════════════════════════════════════════════════════════
- Close the top file in the view
+ Close the given file(s) or the top file in the view
+Parameter
+ path A path or glob pattern that specifies the files to
+ close
:comment text
══════════════════════════════════════════════════════════════════════
- Attach a comment to the top log line. The comment will be displayed
- right below the log message it is associated with. The comment can
- be formatted using markdown and you can add new-lines with '\n'.
+ Attach a comment to the top log line. The comment will be
+ displayed right below the log message it is associated with. The
+ comment can be formatted using markdown and you can add new-lines
+ with '\n'.
Parameter
text The comment text
See Also
- :clear-comment, :tag
+ :annotate, :clear-comment, :tag
Example
#1 To add the comment 'This is where it all went wrong' to the top line:
:comment This is where it all went wrong 
@@ -803,9 +861,17 @@ For support questions, email:
+:convert-time-to zone
+══════════════════════════════════════════════════════════════════════
+ Convert the focused timestamp to the given timezone
+Parameter
+ zone The timezone name
+
+
:create-logline-table table-name
══════════════════════════════════════════════════════════════════════
- Create an SQL table using the top line of the log view as a template
+ Create an SQL table using the top line of the log view as a
+ template
Parameter
table-name The name for the new table
See Also
@@ -823,8 +889,8 @@ For support questions, email:
Create an SQL table based on a regex search
Parameters
table-name The name of the table to create
- pattern The regular expression used to capture the
- table columns. If not given, the current search
+ pattern The regular expression used to capture
+ the table columns. If not given, the current search
pattern is used.
See Also
:create-logline-table, :create-logline-table, :delete-search-table,
@@ -834,14 +900,14 @@ For support questions, email:
Example
#1 To create a table named 'task_durations' that matches log messages with the pattern
'duration=(?<duration>\d+)':
- :create-search-table task_durations duration=(?<duration>\d+)
+ :create-search-table task_durations duration=(?<duration>\d+)
-:current-time
+:current-time
══════════════════════════════════════════════════════════════════════
- Print the current time in human-readable form and seconds since the
- epoch
+ Print the current time in human-readable form and seconds since
+ the epoch
:delete-filter pattern
@@ -896,7 +962,7 @@ For support questions, email:
Parameter
tag The tags to delete
See Also
- :comment, :tag
+ :annotate, :comment, :tag
Example
#1 To remove the tags '#BUG123' and '#needs-review' from all log lines:
:delete-tags #BUG123 #needs-review 
@@ -934,12 +1000,13 @@ For support questions, email:
-n Do not print a line-feed at the end of the output
msg The message to display
See Also
- :alt-msg, :append-to, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-json-to, :write-json-to,
- :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
- :write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
- :write-to, :write-to, :write-view-to, :write-view-to, echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-jsonlines-to, :write-jsonlines-to,
+ :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-to, :write-to, :write-view-to,
+ :write-view-to, echoln()
Example
#1 To output 'Hello, World!':
:echo Hello, World! 
@@ -972,9 +1039,10 @@ For support questions, email:
Evaluate the given command/query after doing environment variable
substitution
Parameter
- command The command or query to perform substitution on.
+ command The command or query to perform substitution
+ on.
See Also
- :alt-msg, :echo, :export-session-to, :rebuild, :redirect-to,
+ :alt-msg, :cd, :echo, :export-session-to, :rebuild, :redirect-to, :sh,
:write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
:write-screen-to, :write-table-to, :write-to, :write-view-to
Example
@@ -985,17 +1053,17 @@ For support questions, email:
:export-session-to path
══════════════════════════════════════════════════════════════════════
- Export the current lnav state to an executable lnav script file that
- contains the commands needed to restore the current session
+ Export the current lnav state to an executable lnav script file
+ that contains the commands needed to restore the current session
Parameter
path The path to the file to write
See Also
- :alt-msg, :append-to, :echo, :echo, :eval, :pipe-line-to, :pipe-to,
- :rebuild, :redirect-to, :redirect-to, :write-csv-to, :write-csv-to,
- :write-json-to, :write-json-to, :write-jsonlines-to,
- :write-jsonlines-to, :write-raw-to, :write-raw-to, :write-screen-to,
- :write-screen-to, :write-table-to, :write-table-to, :write-to,
- :write-to, :write-view-to, :write-view-to, echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :echo, :echo, :eval,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to, :sh,
+ :write-csv-to, :write-csv-to, :write-json-to, :write-json-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
+ :write-to, :write-to, :write-view-to, :write-view-to, echoln()
:filter-expr expr
══════════════════════════════════════════════════════════════════════
@@ -1035,8 +1103,8 @@ For support questions, email:
:filter-out pattern
══════════════════════════════════════════════════════════════════════
- Remove lines that match the given regular expression in the current
- view
+ Remove lines that match the given regular expression in the
+ current view
Parameter
pattern The regular expression to match
See Also
@@ -1056,7 +1124,8 @@ For support questions, email:
number, percent into the file,
timestamp, or an anchor in a text file
See Also
- :next-location, :next-mark, :prev-location, :prev-mark, :relative-goto
+ :next-location, :next-mark, :next-section, :prev-location, :prev-mark,
+ :prev-section, :relative-goto
Examples
#1 To go to line 22:
:goto 22 
@@ -1102,7 +1171,7 @@ For support questions, email:
:hide-file path
══════════════════════════════════════════════════════════════════════
- Hide the given file(s) and skip indexing until it is shown again.
+ Hide the given file(s) and skip indexing until it is shown again.
If no path is given, the current file in the view is hidden
Parameter
path A path or glob pattern that specifies the files to
@@ -1154,8 +1223,8 @@ For support questions, email:
:highlight pattern
══════════════════════════════════════════════════════════════════════
- Add coloring to log messages fragments that match the given regular
- expression
+ Add coloring to log messages fragments that match the given
+ regular expression
Parameter
pattern The regular expression to match
See Also
@@ -1196,23 +1265,31 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Move to the next position in the location history
See Also
- :goto, :next-mark, :prev-location, :prev-mark, :relative-goto
+ :goto, :next-mark, :next-section, :prev-location, :prev-mark,
+ :prev-section, :relative-goto
:next-mark type1 [... typeN]
══════════════════════════════════════════════════════════════════════
Move to the next bookmark of the given type in the current view
Parameter
- type The type of bookmark -- error, warning, search, user,
- file, meta
+ type The type of bookmark -- error, warning, search,
+ user, file, meta
See Also
- :goto, :hide-unmarked-lines, :mark, :next-location, :prev-location,
- :prev-mark, :prev-mark, :relative-goto
+ :goto, :hide-unmarked-lines, :mark, :next-location, :next-section,
+ :prev-location, :prev-mark, :prev-mark, :prev-section, :relative-goto
Example
#1 To go to the next error:
:next-mark error 
+:next-section
+══════════════════════════════════════════════════════════════════════
+ Move to the next section in the document
+See Also
+ :goto, :next-location, :next-mark, :prev-location, :prev-mark,
+ :prev-section, :relative-goto
+
:open path1 [... pathN]
══════════════════════════════════════════════════════════════════════
Open the given file(s) in lnav. Opening files on machines
@@ -1246,13 +1323,15 @@ For support questions, email:
:pipe-line-to shell-cmd
══════════════════════════════════════════════════════════════════════
- Pipe the top line to the given shell command
+ Pipe the focused line to the given shell command. Any fields
+ defined by the format will be set as environment variables.
Parameter
shell-cmd The shell command-line to execute
See Also
- :append-to, :echo, :export-session-to, :pipe-to, :redirect-to,
- :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
- :write-screen-to, :write-table-to, :write-to, :write-view-to, echoln()
+ .dump, .read, :append-to, :echo, :export-session-to, :pipe-to,
+ :redirect-to, :write-csv-to, :write-json-to, :write-jsonlines-to,
+ :write-raw-to, :write-screen-to, :write-table-to, :write-to,
+ :write-view-to, echoln()
Example
#1 To write the top line to 'sed' for processing:
:pipe-line-to sed -e 's/foo/bar/g' 
@@ -1265,9 +1344,10 @@ For support questions, email:
Parameter
shell-cmd The shell command-line to execute
See Also
- :append-to, :echo, :export-session-to, :pipe-line-to, :redirect-to,
- :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
- :write-screen-to, :write-table-to, :write-to, :write-view-to, echoln()
+ .dump, .read, :append-to, :echo, :export-session-to, :pipe-line-to,
+ :redirect-to, :write-csv-to, :write-json-to, :write-jsonlines-to,
+ :write-raw-to, :write-screen-to, :write-table-to, :write-to,
+ :write-view-to, echoln()
Example
#1 To write marked lines to 'sed' for processing:
:pipe-to sed -e s/foo/bar/g 
@@ -1278,23 +1358,33 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Move to the previous position in the location history
See Also
- :goto, :next-location, :next-mark, :prev-mark, :relative-goto
+ :goto, :next-location, :next-mark, :next-section, :prev-mark,
+ :prev-section, :relative-goto
:prev-mark type1 [... typeN]
══════════════════════════════════════════════════════════════════════
- Move to the previous bookmark of the given type in the current view
+ Move to the previous bookmark of the given type in the current
+ view
Parameter
- type The type of bookmark -- error, warning, search, user,
- file, meta
+ type The type of bookmark -- error, warning, search,
+ user, file, meta
See Also
:goto, :hide-unmarked-lines, :mark, :next-location, :next-mark,
- :next-mark, :prev-location, :relative-goto
+ :next-mark, :next-section, :prev-location, :prev-section,
+ :relative-goto
Example
#1 To go to the previous error:
:prev-mark error 
+:prev-section
+══════════════════════════════════════════════════════════════════════
+ Move to the previous section in the document
+See Also
+ :goto, :next-location, :next-mark, :next-section, :prev-location,
+ :prev-mark, :relative-goto
+
:prompt type [--alt] [prompt] [initial-value]
══════════════════════════════════════════════════════════════════════
Open the given prompt
@@ -1304,8 +1394,9 @@ For support questions, email:
--alt Perform the alternate action for
this prompt by default
prompt The prompt to display
- initial-value The initial value to fill in for the
- prompt
+ Values: breadcrumb|command|script|search|sql
+ initial-value The initial value to fill in for
+ the prompt
Examples
#1 To open the command prompt with 'filter-in' already filled in:
@@ -1336,7 +1427,7 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Forcefully rebuild file indexes
See Also
- :alt-msg, :echo, :eval, :export-session-to, :redirect-to,
+ :alt-msg, :cd, :echo, :eval, :export-session-to, :redirect-to, :sh,
:write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
:write-screen-to, :write-table-to, :write-to, :write-view-to
@@ -1345,15 +1436,16 @@ For support questions, email:
Redirect the output of commands that write to stdout to the given
file
Parameter
- path The path to the file to write. If not specified, the
- current redirect will be cleared
+ path The path to the file to write. If not specified,
+ the current redirect will be cleared
See Also
- :alt-msg, :append-to, :echo, :echo, :eval, :export-session-to,
- :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :write-csv-to,
- :write-csv-to, :write-json-to, :write-json-to, :write-jsonlines-to,
- :write-jsonlines-to, :write-raw-to, :write-raw-to, :write-screen-to,
- :write-screen-to, :write-table-to, :write-table-to, :write-to,
- :write-to, :write-view-to, :write-view-to, echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :echo, :echo, :eval,
+ :export-session-to, :export-session-to, :pipe-line-to, :pipe-to,
+ :rebuild, :sh, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-jsonlines-to, :write-jsonlines-to,
+ :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-to, :write-to, :write-view-to,
+ :write-view-to, echoln()
Example
#1 To write the output of lnav commands to the file /tmp/script-output.txt:
:redirect-to /tmp/script-output.txt 
@@ -1371,7 +1463,8 @@ For support questions, email:
Parameter
line-count|N% The amount to move the view by.
See Also
- :goto, :next-location, :next-mark, :prev-location, :prev-mark
+ :goto, :next-location, :next-mark, :next-section, :prev-location,
+ :prev-mark, :prev-section
Examples
#1 To move 22 lines down in the view:
:relative-goto +22 
@@ -1418,6 +1511,18 @@ For support questions, email:
+:set-file-timezone zone [pattern]
+══════════════════════════════════════════════════════════════════════
+ Set the timezone to use for log messages that do not include a
+ timezone. The timezone is applied to the focused file or the given
+ glob pattern.
+Parameters
+ zone The timezone name
+ pattern The glob pattern to match against files that
+ should use this timezone
+See Also
+ :clear-file-timezone
+
:set-min-log-level log-level
══════════════════════════════════════════════════════════════════════
Set the minimum log level to display in the log view
@@ -1430,6 +1535,19 @@ For support questions, email:
+:sh --name=<name> cmdline
+══════════════════════════════════════════════════════════════════════
+ Execute the given command-line and display the captured output
+Parameters
+ --name=<name> The name to give to the captured
+ output
+ cmdline The command-line to execute.
+See Also
+ :alt-msg, :cd, :echo, :eval, :export-session-to, :rebuild,
+ :redirect-to, :write-csv-to, :write-json-to, :write-jsonlines-to,
+ :write-raw-to, :write-screen-to, :write-table-to, :write-to,
+ :write-view-to
+
:show-fields field-name1 [... field-nameN]
══════════════════════════════════════════════════════════════════════
Show log message fields that were previously hidden
@@ -1487,8 +1605,8 @@ For support questions, email:
:summarize column-name
══════════════════════════════════════════════════════════════════════
- Execute a SQL query that computes the characteristics of the values
- in the given column
+ Execute a SQL query that computes the characteristics of the
+ values in the given column
Parameter
column-name The name of the column to analyze.
@@ -1516,7 +1634,7 @@ For support questions, email:
Parameter
tag The tags to attach
See Also
- :comment, :delete-tags, :untag
+ :annotate, :comment, :delete-tags, :untag
Example
#1 To add the tags '#BUG123' and '#needs-review' to the top line:
:tag #BUG123 #needs-review 
@@ -1563,7 +1681,7 @@ For support questions, email:
Parameter
tag The tags to detach
See Also
- :comment, :tag
+ :annotate, :comment, :tag
Example
#1 To remove the tags '#BUG123' and '#needs-review' from the top line:
:untag #BUG123 #needs-review 
@@ -1577,11 +1695,11 @@ For support questions, email:
--anonymize Anonymize the table contents
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-json-to, :write-jsonlines-to,
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
:write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
:write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
:write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
@@ -1599,14 +1717,15 @@ For support questions, email:
--anonymize Anonymize the row contents
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
- :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
- :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
- :write-table-to, :write-table-to, :write-table-to, :write-to,
- :write-to, :write-view-to, :write-view-to, :write-view-to, echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-json-to, :write-json-to, :write-json-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-jsonlines-to,
+ :write-raw-to, :write-raw-to, :write-raw-to, :write-screen-to,
+ :write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
+ :write-table-to, :write-to, :write-to, :write-view-to, :write-view-to,
+ :write-view-to, echoln()
Example
#1 To write SQL results as CSV to /tmp/table.csv:
:write-csv-to /tmp/table.csv 
@@ -1620,14 +1739,15 @@ For support questions, email:
--anonymize Anonymize the JSON values
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-jsonlines-to,
- :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
- :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
- :write-table-to, :write-table-to, :write-table-to, :write-to,
- :write-to, :write-view-to, :write-view-to, :write-view-to, echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-jsonlines-to,
+ :write-raw-to, :write-raw-to, :write-raw-to, :write-screen-to,
+ :write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
+ :write-table-to, :write-to, :write-to, :write-view-to, :write-view-to,
+ :write-view-to, echoln()
Example
#1 To write SQL results as JSON to /tmp/table.json:
:write-json-to /tmp/table.json 
@@ -1641,14 +1761,15 @@ For support questions, email:
--anonymize Anonymize the JSON values
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-json-to, :write-raw-to, :write-raw-to,
- :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
- :write-table-to, :write-table-to, :write-table-to, :write-to,
- :write-to, :write-view-to, :write-view-to, :write-view-to, echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-raw-to,
+ :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to,
+ :write-screen-to, :write-table-to, :write-table-to, :write-table-to,
+ :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
+ echoln()
Example
#1 To write SQL results as JSON Lines to /tmp/table.json:
:write-jsonlines-to /tmp/table.json 
@@ -1661,16 +1782,16 @@ For support questions, email:
messages to the file. In the DB view, the contents of the cells are
written to the output file.
Parameters
- --view={log,db} The view to use as the source of
- data
+ --view={log,db} The view to use as the source
+ of data
--anonymize Anonymize the lines
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-json-to, :write-jsonlines-to,
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
:write-jsonlines-to, :write-jsonlines-to, :write-screen-to,
:write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
:write-table-to, :write-to, :write-to, :write-view-to, :write-view-to,
@@ -1689,11 +1810,11 @@ For support questions, email:
--anonymize Anonymize the lines
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-json-to, :write-jsonlines-to,
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
:write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
:write-raw-to, :write-table-to, :write-table-to, :write-table-to,
:write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
@@ -1711,11 +1832,11 @@ For support questions, email:
--anonymize Anonymize the table contents
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-json-to, :write-jsonlines-to,
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
:write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
:write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
:write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
@@ -1733,13 +1854,13 @@ For support questions, email:
--anonymize Anonymize the lines
path The path to the file to write
See Also
- :alt-msg, :append-to, :echo, :echo, :eval, :export-session-to,
- :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
- :redirect-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-jsonlines-to, :write-jsonlines-to,
- :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to,
- :write-table-to, :write-table-to, :write-view-to, :write-view-to,
- echoln()
+ .dump, .read, :alt-msg, :append-to, :cd, :echo, :echo, :eval,
+ :export-session-to, :export-session-to, :pipe-line-to, :pipe-to,
+ :rebuild, :redirect-to, :redirect-to, :sh, :write-csv-to,
+ :write-csv-to, :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-raw-to, :write-raw-to, :write-screen-to,
+ :write-screen-to, :write-table-to, :write-table-to, :write-view-to,
+ :write-view-to, echoln()
Example
#1 To write marked lines to the file /tmp/interesting-lines.txt:
:write-to /tmp/interesting-lines.txt 
@@ -1754,11 +1875,11 @@ For support questions, email:
--anonymize Anonymize the lines
path The path to the file to write
See Also
- :alt-msg, :append-to, :create-logline-table, :create-search-table,
- :echo, :echo, :eval, :export-session-to, :export-session-to,
- :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
- :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
- :write-json-to, :write-json-to, :write-jsonlines-to,
+ .dump, .read, :alt-msg, :append-to, :cd, :create-logline-table,
+ :create-search-table, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :sh, :write-csv-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
:write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
:write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
:write-table-to, :write-table-to, :write-table-to, :write-to,
@@ -1864,13 +1985,13 @@ For support questions, email:
See Also
char(), charindex(), decode(), encode(), endswith(), extract(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To anonymize an IP address:
;SELECT anonymize('Hello, 192.168.1.2') 
@@ -2042,8 +2163,8 @@ For support questions, email:
changes()
══════════════════════════════════════════════════════════════════════
- The number of database rows that were changed, inserted, or deleted
- by the most recent statement.
+ The number of database rows that were changed, inserted, or
+ deleted by the most recent statement.
char(X, ...)
@@ -2055,16 +2176,16 @@ For support questions, email:
See Also
anonymize(), charindex(), decode(), encode(), endswith(), extract(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To get a string with the code points 0x48 and 0x49:
- ;SELECT char(0x48, 0x49) 
+ ;SELECT char(0x48, 0x49) 
@@ -2081,13 +2202,13 @@ For support questions, email:
See Also
anonymize(), char(), decode(), encode(), endswith(), extract(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To search for the string 'abc' within 'abcabc' and starting at position 2:
;SELECT charindex('abc', 'abcabc', 2) 
@@ -2145,7 +2266,7 @@ For support questions, email:
value to the left.
See Also
datetime(), humanize_duration(), julianday(), strftime(), time(),
- timediff(), timeslice()
+ timediff(), timeslice(), timezone()
Examples
#1 To get the date portion of the timestamp '2017-01-02T03:04:05':
;SELECT date('2017-01-02T03:04:05') 
@@ -2164,12 +2285,13 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Returns the date and time in this format: YYYY-MM-DD HH:MM:SS.
Parameters
- timestring The string to convert to a date with time.
+ timestring The string to convert to a date with
+ time.
modifier A transformation that is applied to the
value to the left.
See Also
date(), humanize_duration(), julianday(), strftime(), time(),
- timediff(), timeslice()
+ timediff(), timeslice(), timezone()
Examples
#1 To get the date and time portion of the timestamp '2017-01-02T03:04:05':
;SELECT datetime('2017-01-02T03:04:05') 
@@ -2195,13 +2317,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), encode(), endswith(), extract(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To decode the URI-encoded string '%63%75%72%6c':
;SELECT decode('%63%75%72%6c', 'uri') 
@@ -2266,10 +2388,10 @@ For support questions, email:
Parameter
value The value to write to the current output file
See Also
- :append-to, :echo, :export-session-to, :pipe-line-to, :pipe-to,
- :redirect-to, :write-csv-to, :write-json-to, :write-jsonlines-to,
- :write-raw-to, :write-screen-to, :write-table-to, :write-to,
- :write-view-to
+ .dump, .read, :append-to, :echo, :export-session-to, :pipe-line-to,
+ :pipe-to, :redirect-to, :write-csv-to, :write-json-to,
+ :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to,
+ :write-to, :write-view-to
encode(value, algorithm)
══════════════════════════════════════════════════════════════════════
@@ -2281,13 +2403,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), endswith(), extract(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To base64-encode 'Hello, World!':
;SELECT encode('Hello, World!', 'base64') 
@@ -2311,13 +2433,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), extract(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To test if the string 'notbad.jpg' ends with '.jpg':
;SELECT endswith('notbad.jpg', '.jpg') 
@@ -2352,13 +2474,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To extract key/value pairs from a string:
;SELECT extract('foo=1 bar=2 name="Rolo Tomassi"') 
@@ -2394,6 +2516,42 @@ For support questions, email:
+fstat(pattern)
+══════════════════════════════════════════════════════════════════════
+ A table-valued function for getting information about file
+ paths/globs
+Parameter
+ pattern The file path or glob pattern to query.
+Results
+ st_parent The parent path of the directory entry
+ st_name The name of the directory entry
+ st_dev The device number
+ st_ino The inode number
+ st_type The type of the entry
+ st_mode The protection mode
+ st_nlink The number of hard links to the entry
+ st_uid The ID of the owning user
+ st_user The user name
+ st_gid The ID of the owning group
+ st_group The group name
+ st_rdev The device type
+ st_size The size of the entry in bytes
+ st_blksize The optimal size for I/O
+ st_blocks Blocks allocated for the file
+ st_atime The last access time
+ st_mtime The last modified time
+ st_ctime The creation time
+ error Error message if there was a problem
+ looking up the entry
+ data The contents of the file
+
+Example
+#1 To read a file and raise an error if there is a problem:
+ ;SELECT ifnull(data, raise_error('cannot read: ' || st_name, error)) FROM
+  fstat('/non-existent')
+
+
+
generate_series(start, stop, [step])
══════════════════════════════════════════════════════════════════════
A table-valued-function that returns the whole numbers between a
@@ -2468,12 +2626,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_spooky_hash(), gunzip(), gzip(), humanize_duration(),
- humanize_file_size(), instr(), leftstr(), length(), logfmt2json(),
- lower(), ltrim(), padc(), padl(), padr(), parse_url(), printf(),
- proper(), regexp_capture(), regexp_capture_into_json(), regexp_match(),
- regexp_replace(), replace(), replicate(), reverse(), rightstr(),
- rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
- substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+ humanize_file_size(), humanize_id(), instr(), leftstr(), length(),
+ logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), timezone(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
Examples
#1 To concatenate the values of the column 'ex_procname' from the table
'lnav_example_log':
@@ -2498,12 +2657,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), gunzip(), gzip(), humanize_duration(),
- humanize_file_size(), instr(), leftstr(), length(), logfmt2json(),
- lower(), ltrim(), padc(), padl(), padr(), parse_url(), printf(),
- proper(), regexp_capture(), regexp_capture_into_json(), regexp_match(),
- regexp_replace(), replace(), replicate(), reverse(), rightstr(),
- rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
- substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+ humanize_file_size(), humanize_id(), instr(), leftstr(), length(),
+ logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), timezone(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
Example
#1 To produce a hash of all of the values of 'column1':
;SELECT group_spooky_hash(column1) FROM (VALUES ('abc'), ('123'))
@@ -2518,13 +2678,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
gzip(value, ...)
══════════════════════════════════════════════════════════════════════
@@ -2534,13 +2694,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
hex(X)
══════════════════════════════════════════════════════════════════════
@@ -2563,14 +2723,14 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), date(), datetime(), decode(),
encode(), endswith(), extract(), group_concat(), group_spooky_hash(),
- gunzip(), gzip(), humanize_file_size(), instr(), julianday(),
- leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
- padr(), parse_url(), printf(), proper(), regexp_capture(),
- regexp_capture_into_json(), regexp_match(), regexp_replace(),
- replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), strftime(), substr(), time(),
- timediff(), timeslice(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ gunzip(), gzip(), humanize_file_size(), humanize_id(), instr(),
+ julianday(), leftstr(), length(), logfmt2json(), lower(), ltrim(),
+ padc(), padl(), padr(), parse_url(), printf(), proper(),
+ regexp_capture(), regexp_capture_into_json(), regexp_match(),
+ regexp_replace(), replace(), replicate(), reverse(), rightstr(),
+ rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
+ strftime(), substr(), time(), timediff(), timeslice(), timezone(),
+ timezone(), trim(), unicode(), unparse_url(), upper(), xpath()
Examples
#1 To format a duration:
;SELECT humanize_duration(15 * 60) 
@@ -2589,18 +2749,40 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), instr(), leftstr(), length(), logfmt2json(),
- lower(), ltrim(), padc(), padl(), padr(), parse_url(), printf(),
- proper(), regexp_capture(), regexp_capture_into_json(), regexp_match(),
- regexp_replace(), replace(), replicate(), reverse(), rightstr(),
- rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
- substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+ humanize_duration(), humanize_id(), instr(), leftstr(), length(),
+ logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), timezone(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
Example
#1 To format an amount:
;SELECT humanize_file_size(10 * 1024 * 1024) 
+humanize_id(id)
+══════════════════════════════════════════════════════════════════════
+ Colorize the given ID using ANSI escape codes.
+Parameter
+ id The identifier to color
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
+Example
+#1 To colorize the ID 'cluster1':
+ ;SELECT humanize_id('cluster1') 
+
+
+
ifnull(X, Y)
══════════════════════════════════════════════════════════════════════
Returns a copy of its first non-NULL argument, or NULL if both
@@ -2626,13 +2808,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), leftstr(), length(),
- logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To test get the position of 'b' in the string 'abc':
;SELECT instr('abc', 'b') 
@@ -2647,8 +2829,11 @@ For support questions, email:
ptr The JSON-Pointer to lookup in the object.
default The default value if the value was not found
See Also
- json_concat(), json_contains(), json_group_array(),
- json_group_object(), yaml_to_json()
+ json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_tree(), json_type(),
+ json_valid(), yaml_to_json()
Examples
#1 To get the root of a JSON value:
;SELECT jget('1', '') 
@@ -2691,9 +2876,65 @@ For support questions, email:
+json(X)
+══════════════════════════════════════════════════════════════════════
+ Verifies that its argument is valid JSON and returns a minified
+ version or throws an error.
+Parameter
+ X The string to interpret as JSON.
+See Also
+ jget(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_tree(), json_type(),
+ json_valid(), yaml_to_json()
+
+json_array(X, ...)
+══════════════════════════════════════════════════════════════════════
+ Constructs a JSON array from its arguments.
+Parameter
+ X The values of the JSON array
+See Also
+ jget(), json(), json_array_length(), json_concat(), json_contains(),
+ json_each(), json_extract(), json_group_array(), json_group_object(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To create an array of all types:
+ ;SELECT json_array(NULL, 1, 2.1, 'three', json_array(4), json_object('five', 'six'))
+
+
+#2 To create an empty array:
+ ;SELECT json_array() 
+
+
+
+json_array_length(X, [P])
+══════════════════════════════════════════════════════════════════════
+ Returns the length of a JSON array.
+Parameters
+ X The JSON object.
+ P The path to the array in 'X'.
+See Also
+ jget(), json(), json_array(), json_concat(), json_contains(),
+ json_each(), json_extract(), json_group_array(), json_group_object(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To get the length of an array:
+ ;SELECT json_array_length('[1, 2, 3]') 
+
+
+#2 To get the length of a nested array:
+ ;SELECT json_array_length('{"arr": [1, 2, 3]}', '$.arr')
+
+
+
json_concat(json, value, ...)
══════════════════════════════════════════════════════════════════════
- Returns an array with the given values concatenated onto the end.
+ Returns an array with the given values concatenated onto the end.
If the initial value is null, the result will be an array with the
given elements. If the initial value is an array, the result will
be an array with the given values at the end. If the initial value
@@ -2703,7 +2944,10 @@ For support questions, email:
json The initial JSON value.
value The value(s) to add to the end of the array.
See Also
- jget(), json_contains(), json_group_array(), json_group_object(),
+ jget(), json(), json_array(), json_array_length(), json_contains(),
+ json_each(), json_extract(), json_group_array(), json_group_object(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
yaml_to_json()
Examples
#1 To append the number 4 to null:
@@ -2726,7 +2970,10 @@ For support questions, email:
json The JSON value to query.
value The value to look for in the first argument
See Also
- jget(), json_concat(), json_group_array(), json_group_object(),
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_each(), json_extract(), json_group_array(), json_group_object(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
yaml_to_json()
Examples
#1 To test if a JSON array contains the number 4:
@@ -2738,13 +2985,69 @@ For support questions, email:
+json_each(X, [P])
+══════════════════════════════════════════════════════════════════════
+ A table-valued-function that returns the children of the top-level
+ JSON value
+Parameters
+ X The JSON value to query
+ P The path to the value to query
+Results
+ key The array index for elements of an array or
+ property names of the object
+ value The value for the current element
+ type The type of the current element
+ atom The SQL value of the element, if it is a
+ primitive type
+ fullkey The path to the current element
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_tree(), json_type(),
+ json_valid(), yaml_to_json()
+Example
+#1 To iterate over an array:
+ ;SELECT * FROM json_each('[null,1,"two",{"three":4.5}]')
+
+
+
+json_extract(X, P, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the value(s) from the given JSON at the given path(s).
+Parameters
+ X The JSON value.
+ P The path to extract.
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_group_array(), json_group_object(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To get a number:
+ ;SELECT json_extract('{"num": 1}', '$.num') 
+
+
+#2 To get two numbers:
+ ;SELECT json_extract('{"num": 1, "val": 2}', '$.num', '$.val')
+
+
+#3 To get an object:
+ ;SELECT json_extract('{"obj": {"sub": 1}}', '$.obj')
+
+
+
json_group_array(value, ...)
══════════════════════════════════════════════════════════════════════
Collect the given values from a query into a JSON array
Parameter
value The values to append to the array
See Also
- jget(), json_concat(), json_contains(), json_group_object(),
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_object(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
yaml_to_json()
Examples
#1 To create an array from arguments:
@@ -2763,7 +3066,10 @@ For support questions, email:
name The property name for the value
value The value to add to the object
See Also
- jget(), json_concat(), json_contains(), json_group_array(),
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_insert(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
yaml_to_json()
Examples
#1 To create an object from arguments:
@@ -2775,17 +3081,242 @@ For support questions, email:
+json_insert(X, P, Y)
+══════════════════════════════════════════════════════════════════════
+ Inserts values into a JSON object/array at the given locations, if
+ it does not already exist
+Parameters
+ X The JSON value to update
+ P The path to the insertion point. A '#' array index means
+ append the value
+ Y The value to insert
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_object(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To append to an array:
+ ;SELECT json_insert('[1, 2]', '$[#]', 3) 
+
+
+#2 To update an object:
+ ;SELECT json_insert('{"a": 1}', '$.b', 2) 
+
+
+#3 To ensure a value is set:
+ ;SELECT json_insert('{"a": 1}', '$.a', 2) 
+
+
+#4 To update multiple values:
+ ;SELECT json_insert('{"a": 1}', '$.b', 2, '$.c', 3)
+
+
+
+json_object(N, V)
+══════════════════════════════════════════════════════════════════════
+ Create a JSON object from the given arguments
+Parameters
+ N The property name
+ V The property value
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_quote(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To create an object:
+ ;SELECT json_object('a', 1, 'b', 'c') 
+
+
+#2 To create an empty object:
+ ;SELECT json_object() 
+
+
+
+json_quote(X)
+══════════════════════════════════════════════════════════════════════
+ Returns the JSON representation of the given value, if it is not
+ already JSON
+Parameter
+ X The value to convert
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_remove(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To convert a string:
+ ;SELECT json_quote('Hello, World!') 
+
+
+#2 To pass through an existing JSON value:
+ ;SELECT json_quote(json('"Hello, World!"')) 
+
+
+
+json_remove(X, P, ...)
+══════════════════════════════════════════════════════════════════════
+ Removes paths from a JSON value
+Parameters
+ X The JSON value to update
+ P The paths to remove
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_replace(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To remove elements of an array:
+ ;SELECT json_remove('[1,2,3]', '$[1]', '$[1]') 
+
+
+#2 To remove object properties:
+ ;SELECT json_remove('{"a":1,"b":2}', '$.b') 
+
+
+
+json_replace(X, P, Y)
+══════════════════════════════════════════════════════════════════════
+ Replaces existing values in a JSON object/array at the given
+ locations
+Parameters
+ X The JSON value to update
+ P The path to replace
+ Y The new value for the property
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_set(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To replace an existing value:
+ ;SELECT json_replace('{"a": 1}', '$.a', 2) 
+
+
+#2 To replace a value without creating a new property:
+ ;SELECT json_replace('{"a": 1}', '$.a', 2, '$.b', 3)
+
+
+
+json_set(X, P, Y)
+══════════════════════════════════════════════════════════════════════
+ Inserts or replaces existing values in a JSON object/array at the
+ given locations
+Parameters
+ X The JSON value to update
+ P The path to the insertion point. A '#' array index means
+ append the value
+ Y The value to set
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_tree(), json_type(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To replace an existing array element:
+ ;SELECT json_set('[1, 2]', '$[1]', 3) 
+
+
+#2 To replace a value and create a new property:
+ ;SELECT json_set('{"a": 1}', '$.a', 2, '$.b', 3) 
+
+
+
+json_tree(X, [P])
+══════════════════════════════════════════════════════════════════════
+ A table-valued-function that recursively descends through a JSON
+ value
+Parameters
+ X The JSON value to query
+ P The path to the value to query
+Results
+ key The array index for elements of an array or
+ property names of the object
+ value The value for the current element
+ type The type of the current element
+ atom The SQL value of the element, if it is a
+ primitive type
+ fullkey The path to the current element
+ path The path to the container of this element
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_type(), json_valid(),
+ yaml_to_json()
+Example
+#1 To iterate over an array:
+ ;SELECT key,value,type,atom,fullkey,path FROM
+  json_tree('[null,1,"two",{"three":4.5}]')
+
+
+
+json_type(X, [P])
+══════════════════════════════════════════════════════════════════════
+ Returns the type of a JSON value
+Parameters
+ X The JSON value to query
+ P The path to the value
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_tree(), json_valid(),
+ yaml_to_json()
+Examples
+#1 To get the type of a value:
+ ;SELECT json_type('[null,1,2.1,"three",{"four":5}]')
+
+
+#2 To get the type of an array element:
+ ;SELECT json_type('[null,1,2.1,"three",{"four":5}]', '$[0]')
+
+
+#3 To get the type of a string:
+ ;SELECT json_type('[null,1,2.1,"three",{"four":5}]', '$[3]')
+
+
+
+json_valid(X)
+══════════════════════════════════════════════════════════════════════
+ Tests if the given value is valid JSON
+Parameter
+ X The value to check
+See Also
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_tree(), json_type(),
+ yaml_to_json()
+Examples
+#1 To check an empty string:
+ ;SELECT json_valid('') 
+
+
+#2 To check a string:
+ ;SELECT json_valid('"a"') 
+
+
+
julianday(timestring, modifier, ...)
══════════════════════════════════════════════════════════════════════
Returns the number of days since noon in Greenwich on November 24,
4714 B.C.
Parameters
- timestring The string to convert to a date with time.
+ timestring The string to convert to a date with
+ time.
modifier A transformation that is applied to the
value to the left.
See Also
date(), datetime(), humanize_duration(), strftime(), time(),
- timediff(), timeslice()
+ timediff(), timeslice(), timezone()
Examples
#1 To get the julian day from the timestamp '2017-01-02T03:04:05':
;SELECT julianday('2017-01-02T03:04:05') 
@@ -2802,11 +3333,13 @@ For support questions, email:
lag(expr, [offset], [default])
══════════════════════════════════════════════════════════════════════
- Returns the result of evaluating the expression against the previous
- row in the partition.
+ Returns the result of evaluating the expression against the
+ previous row in the partition.
Parameters
- expr The expression to execute over the previous row
- offset The offset from the current row in the partition
+ expr The expression to execute over the previous
+ row
+ offset The offset from the current row in the
+ partition
default The default value if the previous row does not
exist instead of NULL
See Also
@@ -2821,8 +3354,8 @@ For support questions, email:
last_value(expr)
══════════════════════════════════════════════════════════════════════
- Returns the result of evaluating the expression against the last row
- in the window frame.
+ Returns the result of evaluating the expression against the last
+ row in the window frame.
Parameter
expr The expression to execute over the last row
See Also
@@ -2831,13 +3364,14 @@ For support questions, email:
lead(expr, [offset], [default])
══════════════════════════════════════════════════════════════════════
- Returns the result of evaluating the expression against the next row
- in the partition.
+ Returns the result of evaluating the expression against the next
+ row in the partition.
Parameters
expr The expression to execute over the next row
- offset The offset from the current row in the partition
- default The default value if the next row does not exist
- instead of NULL
+ offset The offset from the current row in the
+ partition
+ default The default value if the next row does not
+ exist instead of NULL
See Also
cume_dist(), dense_rank(), first_value(), lag(), last_value(),
nth_value(), ntile(), percent_rank(), rank(), row_number()
@@ -2852,13 +3386,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), length(),
- logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To get the first character of the string 'abc':
;SELECT leftstr('abc', 1) 
@@ -2878,13 +3412,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To get the length of the string 'abc':
;SELECT length('abc') 
@@ -2895,12 +3429,12 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Match a string against a pattern
Parameters
- pattern The pattern to match. A percent symbol (%) will
- match zero or more characters and an underscore (_) will
- match a single character.
+ pattern The pattern to match. A percent symbol (%)
+ will match zero or more characters and an underscore (_)
+ will match a single character.
str The string to match
- escape The escape character that can be used to prefix
- a literal percent or underscore in the pattern.
+ escape The escape character that can be used to
+ prefix a literal percent or underscore in the pattern.
Examples
#1 To test if the string 'aabcc' contains the letter 'b':
@@ -2981,6 +3515,11 @@ For support questions, email:
+log_msg_line()
+══════════════════════════════════════════════════════════════════════
+ Return the starting line number of the focused log message.
+
+
log_top_datetime()
══════════════════════════════════════════════════════════════════════
Return the timestamp of the line at the top of the log view.
@@ -2988,7 +3527,7 @@ For support questions, email:
log_top_line()
══════════════════════════════════════════════════════════════════════
- Return the line number at the top of the log view.
+ Return the number of the focused line of the log view.
logfmt2json(str)
@@ -2999,13 +3538,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To extract key/value pairs from a log message:
;SELECT logfmt2json('foo=1 bar=2 name="Rolo Tomassi"')
@@ -3021,13 +3560,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), ltrim(), padc(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To lowercase the string 'AbC':
;SELECT lower('AbC') 
@@ -3044,13 +3583,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), padc(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To trim the leading space characters from the string ' abc':
;SELECT ltrim(' abc') 
@@ -3066,8 +3605,8 @@ For support questions, email:
Returns the argument with the maximum value, or return NULL if any
argument is NULL.
Parameter
- X The numbers to find the maximum of. If only one argument is
- given, this function operates as an aggregate.
+ X The numbers to find the maximum of. If only one argument
+ is given, this function operates as an aggregate.
See Also
abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
@@ -3088,8 +3627,8 @@ For support questions, email:
Returns the argument with the minimum value, or return NULL if any
argument is NULL.
Parameter
- X The numbers to find the minimum of. If only one argument is
- given, this function operates as an aggregate.
+ X The numbers to find the minimum of. If only one argument
+ is given, this function operates as an aggregate.
See Also
abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
@@ -3107,8 +3646,8 @@ For support questions, email:
nth_value(expr, N)
══════════════════════════════════════════════════════════════════════
- Returns the result of evaluating the expression against the nth row
- in the window frame.
+ Returns the result of evaluating the expression against the nth
+ row in the window frame.
Parameters
expr The expression to execute over the nth row
N The row number
@@ -3153,13 +3692,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padl(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To pad the string 'abc' to a length of six characters:
;SELECT padc('abc', 6) || 'def' 
@@ -3180,13 +3719,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padr(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To pad the string 'abc' to a length of six characters:
;SELECT padl('abc', 6) 
@@ -3207,13 +3746,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), parse_url(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To pad the string 'abc' to a length of six characters:
;SELECT padr('abc', 6) || 'def' 
@@ -3226,31 +3765,33 @@ For support questions, email:
parse_url(url)
══════════════════════════════════════════════════════════════════════
- Parse a URL and return the components in a JSON object. Limitations:
- not all URL schemes are supported and repeated query parameters are
- not captured.
+ Parse a URL and return the components in a JSON object.
+ Limitations: not all URL schemes are supported and repeated query
+ parameters are not captured.
Parameter
url The URL to parse
Results
scheme The URL's scheme
- username The name of the user specified in the URL
+ username The name of the user specified in the
+ URL
password The password specified in the URL
host The host name / IP specified in the URL
port The port specified in the URL
path The path specified in the URL
query The query string in the URL
- parameters An object containing the query parameters
+ parameters An object containing the query
+ parameters
fragment The fragment specified in the URL
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- printf(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), unparse_url(),
- upper(), xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), unparse_url(), upper(), xpath()
Examples
#1 To parse the URL 'https://example.com/search?q=hello%20world':
;SELECT parse_url('https://example.com/search?q=hello%20world')
@@ -3301,23 +3842,23 @@ For support questions, email:
printf(format, X)
══════════════════════════════════════════════════════════════════════
- Returns a string with this functions arguments substituted into the
- given format. Substitution points are specified using percent (%)
- options, much like the standard C printf() function.
+ Returns a string with this functions arguments substituted into
+ the given format. Substitution points are specified using percent
+ (%) options, much like the standard C printf() function.
Parameters
format The format of the string to return.
- X The argument to substitute at a given position in
- the format.
+ X The argument to substitute at a given position
+ in the format.
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), proper(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To substitute 'World' into the string 'Hello, %s!':
;SELECT printf('Hello, %s!', 'World') 
@@ -3340,13 +3881,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), regexp_capture(), regexp_capture_into_json(),
- regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
- rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To capitalize the words in the string 'hello, world!':
;SELECT proper('hello, world!') 
@@ -3385,11 +3926,17 @@ For support questions, email:
-raise_error(msg)
+raise_error(msg, [reason])
══════════════════════════════════════════════════════════════════════
Raises an error with the given message when executed
-Parameter
- msg The error message
+Parameters
+ msg The error message
+ reason The reason the error occurred
+
+Example
+#1 To raise an error if a variable is not set:
+ ;SELECT ifnull($val, raise_error('please set $val', 'because'))
+
random()
@@ -3454,23 +4001,24 @@ For support questions, email:
regex.
capture_name The name of the capture in the
regex.
- capture_count The total number of captures in the
- regex.
+ capture_count The total number of captures in
+ the regex.
range_start The start of the capture in the
input string.
- range_stop The stop of the capture in the input
+ range_stop The stop of the capture in the
+ input string.
+ content The captured value from the
string.
- content The captured value from the string.
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture_into_json(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture_into_json(),
regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
- strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
- xpath()
+ strfilter(), substr(), timezone(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
Example
#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2':
;SELECT * FROM regexp_capture('a=1; b=2', '(\w+)=(\d+)')
@@ -3498,12 +4046,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(), regexp_match(),
- regexp_replace(), replace(), replicate(), reverse(), rightstr(),
- rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
- substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), timezone(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
Example
#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2':
;SELECT * FROM regexp_capture_into_json('a=1; b=2', '(\w+)=(\d+)')
@@ -3520,13 +4069,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_replace(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To capture the digits from the string '123':
;SELECT regexp_match('(\d+)', '123') 
@@ -3555,13 +4104,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_match(), replace(),
replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To replace the word at the start of the string 'Hello, World!' with 'Goodbye':
;SELECT regexp_replace('Hello, World!', '^(\w+)', 'Goodbye')
@@ -3577,20 +4126,21 @@ For support questions, email:
Returns a string formed by substituting the replacement string for
every occurrence of the old string in the given string.
Parameters
- str The string to perform substitutions on.
+ str The string to perform substitutions
+ on.
old The string to be replaced.
- replacement The string to replace any occurrences of
- the old string with.
+ replacement The string to replace any occurrences
+ of the old string with.
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To replace the string 'x' with 'z' in 'abc':
;SELECT replace('abc', 'x', 'z') 
@@ -3610,13 +4160,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), reverse(), rightstr(), rtrim(), sparkline(), spooky_hash(),
- startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
- upper(), xpath()
+ startswith(), strfilter(), substr(), timezone(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
Example
#1 To repeat the string 'abc' three times:
;SELECT replicate('abc', 3) 
@@ -3631,13 +4181,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Example
#1 To reverse the string 'abc':
;SELECT reverse('abc') 
@@ -3654,13 +4204,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rtrim(), sparkline(), spooky_hash(),
- startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
- upper(), xpath()
+ startswith(), strfilter(), substr(), timezone(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
Examples
#1 To get the last character of the string 'abc':
;SELECT rightstr('abc', 1) 
@@ -3673,8 +4223,8 @@ For support questions, email:
round(num, [digits])
══════════════════════════════════════════════════════════════════════
- Returns a floating-point value rounded to the given number of digits
- to the right of the decimal point.
+ Returns a floating-point value rounded to the given number of
+ digits to the right of the decimal point.
Parameters
num The value to round.
digits The number of digits to the right of the decimal
@@ -3700,8 +4250,8 @@ For support questions, email:
row_number()
══════════════════════════════════════════════════════════════════════
- Returns the number of the row within the current partition, starting
- from 1.
+ Returns the number of the row within the current partition,
+ starting from 1.
See Also
cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(),
nth_value(), ntile(), percent_rank(), rank()
@@ -3722,13 +4272,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To trim the space characters from the end of the string 'abc ':
;SELECT rtrim('abc ') 
@@ -3739,6 +4289,20 @@ For support questions, email:
+shell_exec(cmd, [input], [options])
+══════════════════════════════════════════════════════════════════════
+ Executes a shell command and returns its output.
+Parameters
+ cmd The command to execute.
+ input A blob of data to write to the command's
+ standard input.
+ options A JSON object containing options for the
+ execution with the following properties:
+ env - An object containing the environment
+ variables to set or, if NULL, to unset.
+See Also
+
+
sign(num)
══════════════════════════════════════════════════════════════════════
Returns the sign of the given number as -1, 0, or 1
@@ -3765,10 +4329,10 @@ For support questions, email:
sparkline(value, [upper])
══════════════════════════════════════════════════════════════════════
- Function used to generate a sparkline bar chart. The non-aggregate
- version converts a single numeric value on a range to a bar chart
- character. The aggregate version returns a string with a bar
- character for every numeric input
+ Function used to generate a sparkline bar chart. The
+ non-aggregate version converts a single numeric value on a range to
+ a bar chart character. The aggregate version returns a string with
+ a bar character for every numeric input
Parameters
value The numeric value to convert
upper The upper bound of the numeric range. The
@@ -3777,13 +4341,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), spooky_hash(),
- startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
- upper(), xpath()
+ startswith(), strfilter(), substr(), timezone(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
Examples
#1 To get the unicode block element for the value 32 in the range of 0-128:
;SELECT sparkline(32, 128) 
@@ -3802,13 +4366,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
- upper(), xpath()
+ startswith(), strfilter(), substr(), timezone(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
Examples
#1 To produce a hash for the string 'Hello, World!':
;SELECT spooky_hash('Hello, World!') 
@@ -3829,8 +4393,8 @@ For support questions, email:
sqlite_compileoption_get(N)
══════════════════════════════════════════════════════════════════════
- Returns the N-th compile-time option used to build SQLite or NULL if
- N is out of range.
+ Returns the N-th compile-time option used to build SQLite or NULL
+ if N is out of range.
Parameter
N The option number to get
@@ -3850,8 +4414,8 @@ For support questions, email:
sqlite_source_id()
══════════════════════════════════════════════════════════════════════
- Returns a string that identifies the specific version of the source
- code that was used to build the SQLite library.
+ Returns a string that identifies the specific version of the
+ source code that was used to build the SQLite library.
sqlite_version()
@@ -3884,13 +4448,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), strfilter(), substr(), trim(), unicode(), unparse_url(),
- upper(), xpath()
+ spooky_hash(), strfilter(), substr(), timezone(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
Examples
#1 To test if the string 'foobar' starts with 'foo':
;SELECT startswith('foobar', 'foo') 
@@ -3911,12 +4475,12 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), substr(), trim(), unicode(),
+ spooky_hash(), startswith(), substr(), timezone(), trim(), unicode(),
unparse_url(), upper(), xpath()
Example
#1 To get the 'b', 'c', and 'd' characters from the string 'abcabc':
@@ -3926,17 +4490,19 @@ For support questions, email:
strftime(format, timestring, modifier, ...)
══════════════════════════════════════════════════════════════════════
- Returns the date formatted according to the format string specified
- as the first argument.
+ Returns the date formatted according to the format string
+ specified as the first argument.
Parameters
- format A format string with substitutions similar
- to those found in the strftime() standard C library.
- timestring The string to convert to a date with time.
+ format A format string with substitutions
+ similar to those found in the strftime() standard C
+ library.
+ timestring The string to convert to a date with
+ time.
modifier A transformation that is applied to the
value to the left.
See Also
date(), datetime(), humanize_duration(), julianday(), time(),
- timediff(), timeslice()
+ timediff(), timeslice(), timezone()
Examples
#1 To get the year from the timestamp '2017-01-02T03:04:05':
;SELECT strftime('%Y', '2017-01-02T03:04:05') 
@@ -3969,13 +4535,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), trim(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), timezone(), trim(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To get the substring starting at the second character until the end of the string
'abc':
@@ -4024,7 +4590,7 @@ For support questions, email:
value to the left.
See Also
date(), datetime(), humanize_duration(), julianday(), strftime(),
- timediff(), timeslice()
+ timediff(), timeslice(), timezone()
Examples
#1 To get the time portion of the timestamp '2017-01-02T03:04:05':
;SELECT time('2017-01-02T03:04:05') 
@@ -4047,7 +4613,7 @@ For support questions, email:
time2 The timestamp to subtract from the first
See Also
date(), datetime(), humanize_duration(), julianday(), strftime(),
- time(), timeslice()
+ time(), timeslice(), timezone()
Examples
#1 To get the difference between two timestamps:
;SELECT timediff('2017-02-03T04:05:06', '2017-02-03T04:05:00')
@@ -4060,14 +4626,14 @@ For support questions, email:
timeslice(time, slice)
══════════════════════════════════════════════════════════════════════
- Return the start of the slice of time that the given timestamp falls
- in. If the time falls outside of the slice, NULL is returned.
+ Return the start of the slice of time that the given timestamp
+ falls in. If the time falls outside of the slice, NULL is returned.
Parameters
time The timestamp to get the time slice for.
slice The size of the time slices
See Also
date(), datetime(), humanize_duration(), julianday(), strftime(),
- time(), timediff()
+ time(), timediff(), timezone()
Examples
#1 To get the timestamp rounded down to the start of the ten minute slice:
;SELECT timeslice('2017-01-01T05:05:00', '10m') 
@@ -4084,6 +4650,30 @@ For support questions, email:
+timezone(tz, ts)
+══════════════════════════════════════════════════════════════════════
+ Convert a timestamp to the given timezone
+Parameters
+ tz The target timezone
+ ts The source timestamp
+See Also
+ anonymize(), char(), charindex(), date(), datetime(), decode(),
+ encode(), endswith(), extract(), group_concat(), group_spooky_hash(),
+ gunzip(), gzip(), humanize_duration(), humanize_duration(),
+ humanize_file_size(), humanize_id(), instr(), julianday(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), strftime(), substr(), time(),
+ timediff(), timeslice(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To convert a time to America/Los_Angeles:
+ ;SELECT timezone('America/Los_Angeles', '2022-03-02T10:00')
+
+
+
total(X)
══════════════════════════════════════════════════════════════════════
Returns the sum of the values in the group as a floating-point.
@@ -4103,8 +4693,8 @@ For support questions, email:
total_changes()
══════════════════════════════════════════════════════════════════════
- Returns the number of row changes caused by INSERT, UPDATE or DELETE
- statements since the current database connection was opened.
+ Returns the number of row changes caused by INSERT, UPDATE or
+ DELETE statements since the current database connection was opened.
trim(str, [chars])
@@ -4119,13 +4709,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), unicode(),
- unparse_url(), upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(),
+ unicode(), unparse_url(), upper(), xpath()
Examples
#1 To trim spaces from the start and end of the string ' abc ':
;SELECT trim(' abc ') 
@@ -4162,12 +4752,12 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(),
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
unparse_url(), upper(), xpath()
Example
#1 To get the unicode code point for the first character of 'abc':
@@ -4191,13 +4781,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- upper(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), upper(), xpath()
Example
#1 To unparse the object '{"scheme": "https", "host": "example.com"}':
;SELECT unparse_url('{"scheme": "https", "host": "example.com"}')
@@ -4213,13 +4803,13 @@ For support questions, email:
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), xpath()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), xpath()
Example
#1 To uppercase the string 'aBc':
;SELECT upper('aBc') 
@@ -4236,31 +4826,34 @@ For support questions, email:
xmldoc The XML document as a string.
Results
result The result of the XPATH expression.
- node_path The absolute path to the node containing the
- result.
- node_attr The node's attributes stored in JSON object.
+ node_path The absolute path to the node containing
+ the result.
+ node_attr The node's attributes stored in JSON
+ object.
node_text The node's text value.
See Also
anonymize(), char(), charindex(), decode(), encode(), endswith(),
extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
- humanize_duration(), humanize_file_size(), instr(), leftstr(),
- length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
- parse_url(), printf(), proper(), regexp_capture(),
+ humanize_duration(), humanize_file_size(), humanize_id(), instr(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
regexp_capture_into_json(), regexp_match(), regexp_replace(),
replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
- spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
- unparse_url(), upper()
+ spooky_hash(), startswith(), strfilter(), substr(), timezone(), trim(),
+ unicode(), unparse_url(), upper()
Examples
#1 To select the XML nodes on the path '/abc/def':
;SELECT * FROM xpath('/abc/def', '<abc><def a="b">Hello</def><def>Bye</def></abc>')
#2 To select all 'a' attributes on the path '/abc/def':
- ;SELECT * FROM xpath('/abc/def/@a', '<abc><def a="b">Hello</def><def>Bye</def></abc>')
+ ;SELECT * FROM xpath('/abc/def/@a', '<abc><def
+  a="b">Hello</def><def>Bye</def></abc>')
#3 To select the text nodes on the path '/abc/def':
- ;SELECT * FROM xpath('/abc/def/text()', '<abc><def a="b">Hello &#x2605;</def></abc>')
+ ;SELECT * FROM xpath('/abc/def/text()', '<abc><def a="b">Hello
+  &#x2605;</def></abc>')
@@ -4270,8 +4863,11 @@ For support questions, email:
Parameter
yaml The YAML value to convert to JSON.
See Also
- jget(), json_concat(), json_contains(), json_group_array(),
- json_group_object()
+ jget(), json(), json_array(), json_array_length(), json_concat(),
+ json_contains(), json_each(), json_extract(), json_group_array(),
+ json_group_object(), json_insert(), json_object(), json_quote(),
+ json_remove(), json_replace(), json_set(), json_tree(), json_type(),
+ json_valid()
Example
#1 To convert the document "abc: def":
;SELECT yaml_to_json('abc: def') 
@@ -4290,7 +4886,8 @@ For support questions, email:
Attach a database file to the current connection.
Parameters
filename The path to the database file.
- schema-name The prefix for tables in this database.
+ schema-name The prefix for tables in this
+ database.
Example
#1 To attach the database file '/tmp/customers.db' with the name customers:
@@ -4306,8 +4903,9 @@ For support questions, email:
Parameters
base-expr The base expression that is used for
comparison in the branches
- cmp-expr The expression to test if this branch should
- be taken
+ cmp-expr The expression to test if this branch
+ should be taken
+ then-expr - The result for this branch.
else-expr The result of this CASE if no branches
matched.
@@ -4321,8 +4919,8 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Assign a name to a SELECT statement
Parameters
- IF NOT EXISTS Do not create the view if it already
- exists
+ IF NOT EXISTS Do not create the view if it
+ already exists
schema-name. The database to create the view in
view-name The name of the view
select-stmt The SELECT statement the view
@@ -4341,7 +4939,8 @@ For support questions, email:
══════════════════════════════════════════════════════════════════════
Detach a database from the current connection.
Parameter
- schema-name The prefix for tables in this database.
+ schema-name The prefix for tables in this
+ database.
Example
#1 To detach the database named 'customers':
@@ -4383,10 +4982,10 @@ For support questions, email:
table The table(s) to query for data
cond The conditions used to select the
rows to return.
- grouping-expr The expression to use when grouping
- rows.
- ordering-term The values to use when ordering the
- result set.
+ grouping-expr The expression to use when
+ grouping rows.
+ ordering-term The values to use when ordering
+ the result set.
limit-expr The maximum number of rows to
return.
@@ -4402,8 +5001,10 @@ For support questions, email:
Parameters
table The table to update
column-name The columns in the table to update.
- cond The condition used to determine whether
- a row should be updated.
+ expr - The values to place into the
+ column.
+ cond The condition used to determine
+ whether a row should be updated.
Example
#1 To mark the syslog message at line 40:
@@ -4416,7 +5017,7 @@ For support questions, email:
Create a temporary view that exists only for the duration of a SQL
statement.
Parameters
- cte-table-name The name for the temporary table.
+ cte-table-name The name for the temporary
+ table.
select-stmt The SELECT statement used to
populate the temporary table.
-
diff --git a/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out b/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out
index 5fb4d90..e27bfe5 100644
--- a/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out
+++ b/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out
@@ -33,5 +33,6 @@ Apr 7 07:32:56 Tim-Stacks-iMac.local logger[234]: Bad data {
abc,
123,
456
-)
-}]
+ )
+}
+]
diff --git a/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out b/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out
index 76c53dd..fe0221c 100644
--- a/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out
+++ b/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out
@@ -1,2 +1,2 @@
- Sat Nov 03 09:20:00 1 normal 2 errors  0 warnings  1 marks
- Sat Nov 03 09:45:00 1 normal 0 errors 0 warnings 0 marks
+ Sat Nov 03 09:20:00 1 normal 2 errors  0 warnings  1 marks
+ Sat Nov 03 09:45:00 1 normal 0 errors 0 warnings 0 marks
diff --git a/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out b/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out
index bc67837..0c0137a 100644
--- a/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out
+++ b/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out
@@ -1 +1 @@
- Sat Nov 03 00:00:00 2 normal 2 errors 0 warnings 0 marks
+ Sat Nov 03 00:00:00 2 normal  2 errors 0 warnings  0 marks
diff --git a/test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.err b/test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.err
new file mode 100644
index 0000000..a55e4f8
--- /dev/null
+++ b/test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.err
@@ -0,0 +1,6 @@
+✘ error: invalid epoch time: 16120724091612072409 -- Value too large to be stored in data type
+ --> command-option:1
+ | :unix-time 16120724091612072409 
+ = help: :unix-time seconds
+ ══════════════════════════════════════════════════════════════════════
+ Convert epoch time to a human-readable form
diff --git a/test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.out b/test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_cmds.sh_d0d0ff9b68adc17136329f457fe52d5addcb12c0.out
diff --git a/test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.err b/test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.err
new file mode 100644
index 0000000..040fef2
--- /dev/null
+++ b/test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.err
@@ -0,0 +1,6 @@
+✘ error: {test_dir}/logfile_access_log.0 is not a directory
+ --> command-option:1
+ | :cd {test_dir}/logfile_access_log.0
+ = help: :cd dir
+ ══════════════════════════════════════════════════════════════════════
+ Change the current directory
diff --git a/test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.out b/test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_cmds.sh_d1afefacbdd387f02562c8633968b0162a588502.out
diff --git a/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err b/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err
deleted file mode 100644
index 07df1b2..0000000
--- a/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err
+++ /dev/null
@@ -1,7 +0,0 @@
-✘ error: invalid timestamp: 2022-06-16Tabc
- reason: the leading part of the timestamp was matched, however, the trailing text “Tabc” was not
- --> command-option:1
- | :goto 2022-06-16Tabc 
- |  ^--^ unrecognized input 
- = note: input matched time format “%Y-%m-%d”
- = help: fix the timestamp or remove the trailing text
diff --git a/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out b/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out
index 1d3eae4..926f0f5 100644
--- a/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out
+++ b/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out
@@ -1,2 +1,2 @@
-log_top_line() 
+log_top_line() 
51
diff --git a/test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.err b/test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.err
diff --git a/test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.out b/test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.out
new file mode 100644
index 0000000..c9c79dc
--- /dev/null
+++ b/test/expected/test_cmds.sh_da5f7160b967e60dbd772573614e2da89c5e22b2.out
@@ -0,0 +1 @@
+2009-07-20T15:59:26.000 -0700
diff --git a/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out b/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out
index f3d0606..24a89e7 100644
--- a/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out
+++ b/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out
@@ -1 +1 @@
- Sat Nov 03 08:00:00 2 normal 2 errors 0 warnings 0 marks
+ Sat Nov 03 08:00:00 2 normal  2 errors 0 warnings  0 marks
diff --git a/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out b/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out
index e905c55..85a13ff 100644
--- a/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out
+++ b/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out
@@ -1,3 +1,3 @@
-10.0.0.1 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/aberrant HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
-10.0.0.1 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/abject/ablaze/able.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
-10.0.0.1 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/abject/ablaze/aboard.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
+10.0.0.1 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/abashed HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
+10.0.0.1 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/aberrant/abhorrent/abiding.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
+10.0.0.1 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/aberrant/abhorrent/ablaze.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
diff --git a/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out b/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out
index 21e4506..012e2ef 100644
--- a/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out
+++ b/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out
@@ -1,12 +1,12 @@
{
- "foo bar" : null,
- "array" : [
- 1,
- 2,
- 3
- ],
- "obj" : {
- "one" : 1,
-  "two" : true
+ "foo bar" : null,
+ "array" : [
+ 1,
+ 2,
+ 3
+ ],
+ "obj" : {
+ "one" : 1,
+ "two" : true
}
}
diff --git a/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out b/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out
index 6599581..96a0a22 100644
--- a/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out
+++ b/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out
@@ -1,3 +1,3 @@
-{"log_line":0,"log_part":null,"log_time":"2009-07-20 22:59:26.000","log_idle_msecs":0,"log_level":"info","log_mark":0,"log_comment":null,"log_tags":null,"log_filters":null,"c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/cgi/tramp","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":134,"sc_status":200,"cs_host":null}
-{"log_line":1,"log_part":null,"log_time":"2009-07-20 22:59:29.000","log_idle_msecs":3000,"log_level":"error","log_mark":0,"log_comment":null,"log_tags":null,"log_filters":null,"c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkboot.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":46210,"sc_status":404,"cs_host":null}
-{"log_line":2,"log_part":null,"log_time":"2009-07-20 22:59:29.000","log_idle_msecs":0,"log_level":"info","log_mark":0,"log_comment":null,"log_tags":null,"log_filters":null,"c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkernel.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":78929,"sc_status":200,"cs_host":null}
+{"log_line":0,"log_time":"2009-07-20 22:59:26.000","log_level":"info","c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/cgi/tramp","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":134,"sc_status":200,"cs_host":null,"log_part":null,"log_idle_msecs":0,"log_mark":0,"log_comment":null,"log_tags":null,"log_annotations":null,"log_filters":null}
+{"log_line":1,"log_time":"2009-07-20 22:59:29.000","log_level":"error","c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkboot.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":46210,"sc_status":404,"cs_host":null,"log_part":null,"log_idle_msecs":3000,"log_mark":0,"log_comment":null,"log_tags":null,"log_annotations":null,"log_filters":null}
+{"log_line":2,"log_time":"2009-07-20 22:59:29.000","log_level":"info","c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkernel.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":78929,"sc_status":200,"cs_host":null,"log_part":null,"log_idle_msecs":0,"log_mark":0,"log_comment":null,"log_tags":null,"log_annotations":null,"log_filters":null}
diff --git a/test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.err b/test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.err
new file mode 100644
index 0000000..5874e8a
--- /dev/null
+++ b/test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.err
@@ -0,0 +1,6 @@
+✘ error: Unable to get timezone: bad-zone -- bad-zone not found in timezone database
+ --> command-option:2
+ | :convert-time-to bad-zone 
+ = help: :convert-time-to zone
+ ══════════════════════════════════════════════════════════════════════
+ Convert the focused timestamp to the given timezone
diff --git a/test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.out b/test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_cmds.sh_ec3a64cad41b070a1d04e2bfc3dc14cb2d964091.out
diff --git a/test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.err b/test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.err
diff --git a/test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.out b/test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.out
new file mode 100644
index 0000000..3d14be3
--- /dev/null
+++ b/test/expected/test_config.sh_13fa2428c26fa12e732209620e21466b36bab252.out
@@ -0,0 +1 @@
+Hello, /finn at seattle!
diff --git a/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err b/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err
deleted file mode 100644
index 092b26a..0000000
--- a/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err
+++ /dev/null
@@ -1,20 +0,0 @@
-✘ error: 'bad' is not a supported configuration $schema version
- --> {test_dir}/bad-config2/formats/invalid-config/config.bad-schema.json:2
- |  "$schema": "bad" 
- = note: expecting one of the following $schema values:
-  https://lnav.org/schemas/config-v1.schema.json
- = help: Property Synopsis
- /$schema <schema-uri>
- Description
- The URI that specifies the schema that describes this type of file
- Example
- https://lnav.org/schemas/config-v1.schema.json
-✘ error: invalid JSON
- --> {test_dir}/bad-config2/formats/invalid-config/config.malformed.json:3
- | parse error: object key and value must be separated by a colon (':')
- |  "ui": "theme", "abc", "def": "" }
- |  (right here) ------^
- | 
-✘ error: invalid JSON
- reason: parse error: premature EOF
- --> {test_dir}/bad-config2/formats/invalid-config/config.truncated.json:3
diff --git a/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err b/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err
index ec11ba5..f04b83a 100644
--- a/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err
+++ b/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err
@@ -1,4 +1,23 @@
-✘ error: 'bad' is not a supported configuration $schema version
+⚠ warning: unexpected value for property “/ui/theme-defs/invalid-theme/styles/text/bad-property”
+ --> {test_dir}/bad-config2/configs/invalid-theme/config.json:9
+ |  "bad-property": "abc"
+ = help: Available Properties
+ color #hex|color_name
+ background-color #hex|color_name
+ underline
+ bold
+✘ error: “abc(” is not a valid regular expression
+ reason: missing closing parenthesis
+ --> /ui/theme-defs/invalid-theme/highlights/foobar/pattern
+ | abc( 
+ |  ^ missing closing parenthesis 
+ --> {test_dir}/bad-config2/configs/invalid-theme/config.json:14
+ |  "pattern": "abc("
+ = help: Property Synopsis
+ /ui/theme-defs/invalid-theme/highlights/foobar/pattern regular expression
+ Description
+ The regular expression to highlight
+✘ error: “bad” is not a supported configuration $schema version
 --> {test_dir}/bad-config2/formats/invalid-config/config.bad-schema.json:2
 |  "$schema": "bad" 
 = note: expecting one of the following $schema values:
@@ -36,3 +55,28 @@
✘ error: invalid JSON
reason: parse error: premature EOF
 --> {test_dir}/bad-config2/formats/invalid-config/config.truncated.json:3
+✘ error: missing value for property “/log/annotations/org.lnav.test.no-condition/condition”
+ reason: incomplete input
+ --> /log/annotations/org.lnav.test.no-condition/condition
+ = help: Property Synopsis
+ /log/annotations/org.lnav.test.no-condition/condition <SQL-expression>
+ Description
+ The SQLite expression to execute for a log message that determines whether or not this annotation is applicable. The expression is evaluated the same way as a filter expression
+✘ error: missing value for property “/log/annotations/org.lnav.test.no-handler/handler”
+ reason: Every annotation requires a handler
+ = help: Property Synopsis
+ /log/annotations/org.lnav.test.no-handler/handler <script>
+ Description
+ The script to execute to generate the annotation content. A JSON object with the log message content will be sent to the script on the standard input
+✘ error: invalid value for property “/ui/theme-defs/invalid-theme/styles/text/color”
+ reason: invalid color -- “InvalidColor”
+ |  reason: Unknown color: 'InvalidColor'. See https://jonasjacek.github.io/colors/ for a list of supported color names
+ --> {test_dir}/bad-config2/configs/invalid-theme/config.json:8
+ = help: Property Synopsis
+ /ui/theme-defs/invalid-theme/styles/text/color #hex|color_name
+ Description
+ The foreground color value for this style. The value can be the name of an xterm color, the hexadecimal value, or a theme variable reference.
+ Examples
+ #fff
+ Green
+ $black
diff --git a/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err b/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err
index 93cba93..1849a63 100644
--- a/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err
+++ b/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err
@@ -1,6 +1,6 @@
✘ error: invalid value for property “/ui/theme”
reason: unknown theme -- “baddy”
- |   = help: The available themes are: default, eldar, grayscale, monocai, night-owl, solarized-dark, solarized-light
+ |   = help: The available themes are: default, dracula, eldar, grayscale, monocai, night-owl, solarized-dark, solarized-light
 --> command-option:1
 = help: Property Synopsis
/ui/theme theme_name
diff --git a/test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.err b/test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.err
new file mode 100644
index 0000000..8b4f3e4
--- /dev/null
+++ b/test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.err
@@ -0,0 +1,2 @@
+✘ error: unable to open configuration file: /non-existent/file
+ reason: No such file or directory
diff --git a/test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.out b/test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_format_installer.sh_1e08efc3b8c7b67d944a1f8c475cd31d98d5b4f6.out
diff --git a/test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.err b/test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.err
diff --git a/test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.out b/test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.out
new file mode 100644
index 0000000..95b5acd
--- /dev/null
+++ b/test/expected/test_format_installer.sh_6cd73153a8990b8ddb8ce489e90ec667a442f7f9.out
@@ -0,0 +1,2 @@
+✔ installed -- ../installer-test-home/.lnav/formats/installed/test_log.json
+ = note: the previously installed “test_log.json” was backed up to -- ../installer-test-home/.lnav/formats/installed/test_log.json.bak
diff --git a/test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.err b/test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.err
diff --git a/test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.out b/test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.out
new file mode 100644
index 0000000..8ac09f2
--- /dev/null
+++ b/test/expected/test_format_installer.sh_947cbc64a150c7fe2a17e1c7a69e9a932aeaa16b.out
@@ -0,0 +1 @@
+ⓘ info: file is already installed at -- ../installer-test-home/.lnav/formats/installed/test_log.json
diff --git a/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out b/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out
index 5f62842..2b877c6 100644
--- a/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out
+++ b/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out
@@ -1,9 +1,9 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters
-0,<NULL>,2016-06-30 12:00:01.000,0,trace,0,<NULL>,<NULL>,<NULL>
-1,<NULL>,2016-06-30 12:00:02.000,1000,debug,0,<NULL>,<NULL>,<NULL>
-2,<NULL>,2016-06-30 12:00:03.000,1000,debug2,0,<NULL>,<NULL>,<NULL>
-3,<NULL>,2016-06-30 12:00:04.000,1000,debug3,0,<NULL>,<NULL>,<NULL>
-4,<NULL>,2016-06-30 12:00:05.000,1000,info,0,<NULL>,<NULL>,<NULL>
-5,<NULL>,2016-06-30 12:00:06.000,1000,warning,0,<NULL>,<NULL>,<NULL>
-6,<NULL>,2016-06-30 12:00:07.000,1000,fatal,0,<NULL>,<NULL>,<NULL>
-7,<NULL>,2016-06-30 12:00:08.000,1000,info,0,<NULL>,<NULL>,<NULL>
+log_line,log_time,log_level,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2016-06-30 12:00:01.000,trace,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2016-06-30 12:00:02.000,debug,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2016-06-30 12:00:03.000,debug2,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+3,2016-06-30 12:00:04.000,debug3,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+4,2016-06-30 12:00:05.000,info,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+5,2016-06-30 12:00:06.000,warning,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+6,2016-06-30 12:00:07.000,fatal,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+7,2016-06-30 12:00:08.000,info,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err b/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err
deleted file mode 100644
index 202b451..0000000
--- a/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err
+++ /dev/null
@@ -1,171 +0,0 @@
-✘ error: “invalid(abc” is not a valid regular expression
- reason: missing closing parenthesis
- --> /invalid_props_log/tags/badtag3/pattern
- | invalid(abc 
- |  ^ missing closing parenthesis
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:35
- |  "pattern": "invalid(abc"
- = help: Property Synopsis
- /invalid_props_log/tags/badtag3/pattern <regex>
- Description
- The regular expression to match against the body of the log message
- Example
- \w+ is down
-✘ error: “abc(def” is not a valid regular expression
- reason: missing closing parenthesis
- --> /invalid_props_log/search-table/bad_table_regex/pattern
- | abc(def 
- |  ^ missing closing parenthesis 
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:40
- |  "pattern": "abc(def" 
- = help: Property Synopsis
- /invalid_props_log/search-table/bad_table_regex/pattern <regex>
- Description
- The regular expression for this search table.
-✘ error: “^(?<timestamp>\d+: (?<body>.*)$” is not a valid regular expression
- reason: missing closing parenthesis
- --> /bad_regex_log/regex/std/pattern
- | ^(?<timestamp>\d+: (?<body>.*)$ 
- |  ^ missing closing parenthesis
- --> {test_dir}/bad-config/formats/invalid-regex/format.json:6
- |  "pattern": "^(?<timestamp>\\d+: (?<body>.*)$"
- = help: Property Synopsis
- /bad_regex_log/regex/std/pattern <message-regex>
- Description
- The regular expression to match a log message and capture fields.
-✘ error: “(foo” is not a valid regular expression
- reason: missing closing parenthesis
- --> pattern
- | (foo 
- |  ^ missing closing parenthesis 
- --> {test_dir}/bad-config/formats/invalid-regex/format.json:13
- |  "error": "(foo" 
- = help: Property Synopsis
- /bad_regex_log/level/error <pattern|integer>
- Description
- The regular expression used to match the log text for this level. For JSON logs with numeric levels, this should be the number for the corresponding level.
-✘ error: “abc(” is not a valid regular expression
- reason: missing closing parenthesis
- --> /bad_regex_log/highlights/foobar/pattern
- | abc( 
- |  ^ missing closing parenthesis 
- --> {test_dir}/bad-config/formats/invalid-regex/format.json:25
- |  "pattern": "abc(" 
- = help: Property Synopsis
- /bad_regex_log/highlights/foobar/pattern <regex>
- Description
- A regular expression to highlight in logs of this format.
-✘ error: “foo” is not a valid value for option “/bad_sample_log/value/pid/kind”
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:24
- |  "kind": "foo" 
- = help: Property Synopsis
- /bad_sample_log/value/pid/kind <data-type>
- Description
- The type of data in the field
- Allowed Values
- string, integer, float, boolean, json, struct, quoted, xml
-✘ error: 'bad' is not a supported log format $schema version
- --> {test_dir}/bad-config/formats/invalid-schema/format.json:2
- |  "$schema": "bad" 
- = note: expecting one of the following $schema values:
-  https://lnav.org/schemas/format-v1.schema.json
- = help: Property Synopsis
- /$schema The URI of the schema for this file
- Description
- Specifies the type of this file
-✘ error: invalid pattern: “incomplete-match”
- reason: pattern does not match entire message
- --> {test_dir}/bad-config/formats/invalid-regex/format.json:20
- | 1428634687123; foo 
- |  ^ matched up to here 
- = note: incomplete-match = ^(?<timestamp>\d+);
- = help: update the regular expression to fully capture the sample message
-✘ error: invalid sample log message: "abc: foo"
- reason: unrecognized timestamp -- abc
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:30
- = note: the following custom formats were tried:
- abc
- ^ “%i” matched up to here
- = help: If the timestamp format is not supported by default, you can add a custom format with the “timestamp-format” property
-✘ error: invalid sample log message: "1428634687123| debug hello"
- reason: “debug” does not match the expected level of “info”
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:33
- = note: matched regex = with-level
- captured level = “debug”
-✘ error: invalid pattern: “with-level”
- reason: pattern does not match entire multiline sample message
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:37
- = note: with-level = ^(?<timestamp>\d+)\| (?<level>\w+) (?<body>\w+)$
- = help: use “.*” to match new-lines
-✘ error: invalid sample log message: "1428634687123; foo bar"
- reason: sample does not match any patterns
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:41
- = note: the following shows how each pattern matched this sample:
- 1428634687123; foo bar
- ^ bad-time matched up to here
- ^ semi matched up to here
- ^ std matched up to here
- ^ with-level matched up to here
- = note: bad-time  = “^(?<timestamp>\w+): (?<body>\w+)$”
- semi  = “^(?<timestamp>\d+); (?<body>\w+)$”
- std  = “^(?<timestamp>\d+): (?<pid>\w+) (?<body>.*)$”
- with-level = “^(?<timestamp>\d+)\| (?<level>\w+) (?<body>\w+)$”
-
-⚠ warning: invalid pattern: “/bad_sample_log/regex/semi”
- reason: pattern does not match any samples
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:10
- = help: every pattern should have at least one sample that it matches
-⚠ warning: invalid pattern: “/bad_sample_log/regex/std”
- reason: pattern does not match any samples
- --> {test_dir}/bad-config/formats/invalid-sample/format.json:7
- = help: every pattern should have at least one sample that it matches
-⚠ warning: invalid value “/invalid_props_log/value/non-existent”
- reason: no patterns have a capture named “non-existent”
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
- = note: the following captures are available:
- body, pid, timestamp
- = help: values are populated from captures in patterns, so at least one pattern must have a capture with this value name
-✘ error: invalid tag definition “/invalid_props_log/tags/badtag”
- reason: tag definitions must have a non-empty pattern
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
-✘ error: invalid tag definition “/invalid_props_log/tags/badtag2”
- reason: tag definitions must have a non-empty pattern
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
-✘ error: invalid tag definition “/invalid_props_log/tags/badtag3”
- reason: tag definitions must have a non-empty pattern
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
-✘ error: invalid value for property “/invalid_props_log/timestamp-field”
- reason: “ts” was not found in the pattern at /invalid_props_log/regex/std
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
- = note: the following captures are available:
- body, pid, timestamp
-✘ error: “not a color” is not a valid color value for property “/invalid_props_log/highlights/hl1/color”
- reason: Unknown color: 'not a color'. See https://jonasjacek.github.io/colors/ for a list of supported color names
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:23
-✘ error: “also not a color” is not a valid color value for property “/invalid_props_log/highlights/hl1/background-color”
- reason: Unknown color: 'also not a color'. See https://jonasjacek.github.io/colors/ for a list of supported color names
- --> {test_dir}/bad-config/formats/invalid-properties/format.json:24
-✘ error: “no_regexes_log” is not a valid log format
- reason: no regexes specified
- --> {test_dir}/bad-config/formats/no-regexes/format.json:4
-✘ error: “no_regexes_log” is not a valid log format
- reason: log message samples must be included in a format definition
- --> {test_dir}/bad-config/formats/no-regexes/format.json:4
-✘ error: “no_sample_log” is not a valid log format
- reason: log message samples must be included in a format definition
- --> {test_dir}/bad-config/formats/no-samples/format.json:4
-✘ error: failed to compile SQL statement
- reason: near "TALE": syntax error
- --> {test_dir}/bad-config/formats/invalid-sql/init.sql:4
- | -- comment test 
- | CREATE TALE invalid (x y z); 
- |  ^ near "TALE": syntax error 
-✘ error: failed to execute SQL statement
- reason: ✘ error: “abc(” is not a valid regular expression
- |  reason: missing closing parenthesis
- |   --> arg
- |   | abc( 
- |   |  ^ missing closing parenthesis
- --> {test_dir}/bad-config/formats/invalid-sql/init2.sql
- | SELECT regexp_match('abc(', '123') 
- | FROM sqlite_master; 
diff --git a/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err b/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err
index c3d7699..578c06f 100644
--- a/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err
+++ b/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err
@@ -104,6 +104,13 @@
/$schema The URI of the schema for this file
Description
Specifies the type of this file
+✘ error: SQL expression is invalid
+ reason: unrecognized token: "'foobar"
+ --> /bad_file_format1/converter/header/expr/default
+ | :header REGEXP 'foobar 
+✘ error: A command is required when a converter is defined
+ --> {test_dir}/bad-config/formats/invalid-file-format/format.json:4
+ = help: The converter command transforms the file into a format that can be consumed by lnav
✘ error: invalid line format element “/bad_json_log/line-format/0/field”
reason: “” is not a defined value
 --> {test_dir}/bad-config/formats/invalid-json-format/format.json:7
@@ -160,6 +167,10 @@
reason: pattern does not match any samples
 --> {test_dir}/bad-config/formats/invalid-sample/format.json:7
 = help: every pattern should have at least one sample that it matches
+✘ error: invalid pattern: “/invalid_props_log/regex/std”
+ reason: no timestamp capture found in the pattern
+ --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
+ = help: all log messages need a timestamp
⚠ warning: invalid value “/invalid_props_log/value/non-existent”
reason: no patterns have a capture named “non-existent”
 --> {test_dir}/bad-config/formats/invalid-properties/format.json:4
@@ -198,6 +209,10 @@
✘ error: “no_sample_log” is not a valid log format
reason: log message samples must be included in a format definition
 --> {test_dir}/bad-config/formats/no-samples/format.json:4
+✘ error: invalid sample log message: "gitea | 2023/09/24 22:15:55 cmd/web.go:223:runWeb() [I] Starting Gitea on PID: 7"
+ reason: timestamp was not captured
+ --> {test_dir}/bad-config/formats/invalid-no-tscap/format.json:25
+ = help: A timestamp needs to be captured in order for a line to be recognized as a log message
✘ error: failed to compile SQL statement
reason: near "TALE": syntax error
 --> {test_dir}/bad-config/formats/invalid-sql/init.sql:4
diff --git a/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err b/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err
deleted file mode 100644
index f657d87..0000000
--- a/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err
+++ /dev/null
@@ -1,61 +0,0 @@
-✘ error: invalid JSON
- --> {test_dir}/bad-config-json/formats/invalid-json/format.json:4
- | parse error: object key and value must be separated by a colon (':')
- |  ar_log": { "abc" } }
- |  (right here) ------^
- | 
-✘ error: “abc(” is not a valid regular expression
- reason: missing closing parenthesis
- --> /invalid_key_log/level-pointer
- | abc( 
- |  ^ missing closing parenthesis 
- --> {test_dir}/bad-config-json/formats/invalid-key/format.json:4
- |  "level-pointer": "abc(", 
- = help: Property Synopsis
- /invalid_key_log/level-pointer
- Description
- A regular-expression that matches the JSON-pointer of the level property
-✘ error: “def[ghi” is not a valid regular expression
- reason: missing terminating ] for character class
- --> /invalid_key_log/file-pattern
- | def[ghi 
- |  ^ missing terminating ] for character class
- --> {test_dir}/bad-config-json/formats/invalid-key/format.json:5
- |  "file-pattern": "def[ghi", 
- = help: Property Synopsis
- /invalid_key_log/file-pattern
- Description
- A regular expression that restricts this format to log files with a matching name
-⚠ warning: unexpected value for property “/invalid_key_log/value/test/identifiers”
- --> {test_dir}/bad-config-json/formats/invalid-key/format.json:14
- |  "identifiers": true 
- = help: Available Properties
- kind <data-type>
- collate <function>
- unit/
- identifier <bool>
- foreign-key <bool>
- hidden <bool>
- action-list <string>
- rewriter <command>
- description <string>
-✘ error: “-1.2” is not a valid value for “/invalid_key_log/timestamp-divisor”
- reason: value cannot be less than or equal to zero
- --> {test_dir}/bad-config-json/formats/invalid-key/format.json:25
- |  "timestamp-divisor": -1.2 
- = help: Property Synopsis
- /invalid_key_log/timestamp-divisor <number>
- Description
- The value to divide a numeric timestamp by in a JSON log.
-✘ error: “foobar_log” is not a valid log format
- reason: no regexes specified
- --> {test_dir}/bad-config-json/formats/invalid-json/format.json:3
-✘ error: “foobar_log” is not a valid log format
- reason: log message samples must be included in a format definition
- --> {test_dir}/bad-config-json/formats/invalid-json/format.json:3
-✘ error: “invalid_key_log” is not a valid log format
- reason: structured logs cannot have regexes
- --> {test_dir}/bad-config-json/formats/invalid-key/format.json:4
-✘ error: invalid line format element “/invalid_key_log/line-format/0/field”
- reason: “non-existent” is not a defined value
- --> {test_dir}/bad-config-json/formats/invalid-key/format.json:22
diff --git a/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err b/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err
index 3272370..6ce508e 100644
--- a/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err
+++ b/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err
@@ -58,6 +58,10 @@
✘ error: “foobar_log” is not a valid log format
reason: log message samples must be included in a format definition
 --> {test_dir}/bad-config-json/formats/invalid-json/format.json:3
+✘ error: invalid pattern: “/invalid_key_log/regex/foo”
+ reason: no timestamp capture found in the pattern
+ --> {test_dir}/bad-config-json/formats/invalid-key/format.json:4
+ = help: all log messages need a timestamp
✘ error: “invalid_key_log” is not a valid log format
reason: structured logs cannot have regexes
 --> {test_dir}/bad-config-json/formats/invalid-key/format.json:4
diff --git a/test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.err b/test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.err
diff --git a/test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.out b/test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.out
new file mode 100644
index 0000000..c523914
--- /dev/null
+++ b/test/expected/test_gantt.sh_3af11588ee36bab7e2caea0f7a24d3c9cafd2310.out
@@ -0,0 +1,86 @@
+ 2011-11-03T00:17 5m 2011-11-03T00:22
+ 5m
+ Duration | ✘▲ | Operation
+ 844    CwFs1P2UcUdlSxD2La 192.168.2.76
+     CoX7zA3OJKGUOSCBY2 192.168.2.76
+     CdrfXZ1NOFPEawF218 192.168.2.76
+     CJwUi9bdB9c1lLW44  192.168.2.76
+     CJxSUgkInyKSHiju1  192.168.2.76
+     CT0JIh479jXIGt0Po1 192.168.2.76
+     C6Q4Vm14ZJIlZhsXqk 192.168.2.76
+ 1s070    CtgxRAqDLvrRUQdqe  192.168.2.76
+     CdysLK1XpcrXOpVDuh 192.168.2.76
+ 200    C6nSoj1Qco9PGyslz6 192.168.2.76
+ 23s044    CN5hnY3x51j6Hr1v4 192.168.2.76
+     CdZUPH2DKOE7zzCLE3 192.168.2.76
+ 32s388    CmWpC33jXuKpXNLcie 192.168.2.76
+     CsBgiE1WmGP4Yo749h 192.168.2.76
+ 657    CYfHyC28tAhkLYkXB7 192.168.2.76
+     CtANmVrHYMtkWqPE5  192.168.2.76
+ 647    CSTH8n1O1nv0ztxNQd 192.168.2.76
+     C4uDKU5tpeRU9Su19  192.168.2.76
+     CEh6Ka2HInkNSH01L2 192.168.2.76
+ 4s840    CjPGiy13ncXKxU765j 192.168.2.76
+ 6s895    CPoz7NUpXISemlNSd  192.168.2.76
+ 6s837    Ct6ixh35y9AEr7J7o9 192.168.2.76
+ 6s889    CaEFHq2HVQ5iGJQiD9 192.168.2.76
+ 6s875    CjinlH2fzDtvzI9637 192.168.2.76
+ 6s884    Cedw7H3ddE2yLiLoXc 192.168.2.76
+ 6s917    CAUlC249svUfE6q0g3 192.168.2.76
+     CIJIDL1ULo4HpT24Gl 192.168.2.76
+ 016    CLsqp41RLUd83arUQb 192.168.2.76
+ 166    CbCciH11995WKkobR1 192.168.2.76
+ 457    ClcvKE1dqsEFQu46m9 192.168.2.76
+     CaP2LpLGvsmX7yJO  192.168.2.76
+ 043    CNbPns4mOMGgjI8Ele 192.168.2.76
+ 557    C185u7u9Q4qhJPhzl  192.168.2.76
+ 129    CKzjfhsJ8vrn2rrfg  192.168.2.76
+ 562    CiIjAe1n5MnPOVpQ9f 192.168.2.76
+     CGv2Tp4Ngt8MmKmVRd 192.168.2.76
+ 7s071    C5DisEMFU77Wk9Kae  192.168.2.76
+     Cs5yEZ3ELZTeuTOsP4 192.168.2.76
+ 4s667    Cu4gIx1BDNtGOl7Ht2 192.168.2.76
+ 1s288    CRgW2I2zo3SInm6iT8 192.168.2.76
+     CWJhMU2cTLEnseTmCb 192.168.2.76
+ 042    CejI402rKGtdBXij4f 192.168.2.76
+     C2KnU34GcVV6amo8va 192.168.2.76
+     C5vx4911iSMAJuShFd 192.168.2.76
+     CbUCgw1DrIGcXzONB7 192.168.2.76
+ 502    C96j2X1DixgLTj2Oi8 192.168.2.76
+     CYYyja3FFNEnftw3K6 192.168.2.76
+  █  CBHHuR1xFnm5C5CQBc 192.168.2.76
+     CD1jfU3p9abEm77mzf 192.168.2.76
+     C0K9DaoPFkfnzwlZa 192.168.2.76
+ 616    CbQAWi3GX2bCmX5L56 192.168.2.76
+ 298    Cd8s2R3OGDgkhnvSu9 192.168.2.76
+ 205    CBeaXe4Iyj1gXd2Iq 192.168.2.76
+     CmWpSw3VtjiAceBCwf 192.168.2.76
+ 1m12s201    CbNCgO1MzloHRNeY4f 192.168.2.76
+ 315    CX1GjC4vn52UY1uDv6 192.168.2.76
+     CaPClb1Bf0RrRGtyWi 192.168.2.76
+ 35s642    CibfNy1QQW4ImDWRq5 192.168.2.76
+ 1m11s547    CTRXSR3blXJE5ZE7Ij 192.168.2.76
+ 1m11s536    CnGze54kQWWpKqrrZ4 192.168.2.76
+ 12s337    C3TZMB4CrUwYfkGJy1 192.168.2.76
+     CK957ERTz8lBycly4 192.168.2.76
+ 1s309    CO5QKYQkcSdxQFA35 192.168.2.76
+     CurHpb1TGZOktTRNP1 192.168.2.76
+     CuUKOQ1R3CqKBgeTdf 192.168.2.76
+     C3xkHgJnzZszVSTpi 192.168.2.76
+     CMrjgF2XLmRh9C9TR4 192.168.2.76
+     C2vQ8sVgyADHjtEda 192.168.2.76
+     CD69521bDXIAb4IkW 192.168.2.76
+ 6s648    CC3vUI3gFB04zLvWRa 192.168.2.76
+ 2s666    C7Krri4g9tZfHniGXh 192.168.2.76
+     CmxyBl2c8XAMTuHEk4 192.168.2.76
+ 499    CSvs6v26bQqFylkk6l 192.168.2.76
+     C4pHul1H3OeWYz7o7i 192.168.2.76
+     C7Lcvr4vsTf6eYpBva 192.168.2.76
+     CV8faD4L1sLL5kDwN9 192.168.2.76
+     CxyAKs10ppnHFP6O8i 192.168.2.76
+     C6MrHk2C7rLuJqhjsg 192.168.2.76
+     CvfUrT2DgYXXoZw9Ah 192.168.2.76
+     CBX0254QJoklXNbvv2 192.168.2.76
+     C6Ym6jvMgikT0xTTc 192.168.2.76
+     CRNn9f1zKNlzHSM5pa 192.168.2.76
+     CJLgi92kpp2gLgGTE5 192.168.2.76
diff --git a/test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.err b/test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.err
diff --git a/test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.out b/test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_63500be50fc6743d8312133e2030cbbc39ca15ff.out
diff --git a/test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.err b/test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.err
diff --git a/test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.out b/test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_74a94ee9103eac5e8e78ca57bccf49efa3827a9d.out
diff --git a/test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.err b/test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.err
diff --git a/test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.out b/test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_83db753dd2669f801810f311e2d7d74397e10f26.out
diff --git a/test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.err b/test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.err
diff --git a/test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.out b/test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.out
new file mode 100644
index 0000000..ffa9459
--- /dev/null
+++ b/test/expected/test_gantt.sh_8fed8a7400042814ba13e50be5e3bd1741d82119.out
@@ -0,0 +1,85 @@
+ 2011-11-03T00:17 5m 2011-11-03T00:22
+ 5m
+ Duration | ✘▲ | Operation
+ 844    CwFs1P2UcUdlSxD2La 192.168.2.76
+     CoX7zA3OJKGUOSCBY2 192.168.2.76
+     CdrfXZ1NOFPEawF218 192.168.2.76
+     CJwUi9bdB9c1lLW44  192.168.2.76
+     CJxSUgkInyKSHiju1  192.168.2.76
+     CT0JIh479jXIGt0Po1 192.168.2.76
+     C6Q4Vm14ZJIlZhsXqk 192.168.2.76
+ 1s070    CtgxRAqDLvrRUQdqe  192.168.2.76
+ 200    C6nSoj1Qco9PGyslz6 192.168.2.76
+ 23s044    CN5hnY3x51j6Hr1v4 192.168.2.76
+     CdZUPH2DKOE7zzCLE3 192.168.2.76
+ 32s388    CmWpC33jXuKpXNLcie 192.168.2.76
+     CsBgiE1WmGP4Yo749h 192.168.2.76
+ 657    CYfHyC28tAhkLYkXB7 192.168.2.76
+     CtANmVrHYMtkWqPE5  192.168.2.76
+ 647    CSTH8n1O1nv0ztxNQd 192.168.2.76
+     C4uDKU5tpeRU9Su19  192.168.2.76
+     CEh6Ka2HInkNSH01L2 192.168.2.76
+ 4s840    CjPGiy13ncXKxU765j 192.168.2.76
+ 6s895    CPoz7NUpXISemlNSd  192.168.2.76
+ 6s837    Ct6ixh35y9AEr7J7o9 192.168.2.76
+ 6s889    CaEFHq2HVQ5iGJQiD9 192.168.2.76
+ 6s875    CjinlH2fzDtvzI9637 192.168.2.76
+ 6s884    Cedw7H3ddE2yLiLoXc 192.168.2.76
+ 6s917    CAUlC249svUfE6q0g3 192.168.2.76
+     CIJIDL1ULo4HpT24Gl 192.168.2.76
+ 016    CLsqp41RLUd83arUQb 192.168.2.76
+ 166    CbCciH11995WKkobR1 192.168.2.76
+ 457    ClcvKE1dqsEFQu46m9 192.168.2.76
+     CaP2LpLGvsmX7yJO  192.168.2.76
+ 043    CNbPns4mOMGgjI8Ele 192.168.2.76
+ 557    C185u7u9Q4qhJPhzl  192.168.2.76
+ 129    CKzjfhsJ8vrn2rrfg  192.168.2.76
+ 562    CiIjAe1n5MnPOVpQ9f 192.168.2.76
+     CGv2Tp4Ngt8MmKmVRd 192.168.2.76
+ 7s071    C5DisEMFU77Wk9Kae  192.168.2.76
+     Cs5yEZ3ELZTeuTOsP4 192.168.2.76
+ 4s667    Cu4gIx1BDNtGOl7Ht2 192.168.2.76
+ 1s288    CRgW2I2zo3SInm6iT8 192.168.2.76
+     CWJhMU2cTLEnseTmCb 192.168.2.76
+ 042    CejI402rKGtdBXij4f 192.168.2.76
+     C2KnU34GcVV6amo8va 192.168.2.76
+     C5vx4911iSMAJuShFd 192.168.2.76
+     CbUCgw1DrIGcXzONB7 192.168.2.76
+ 502    C96j2X1DixgLTj2Oi8 192.168.2.76
+     CYYyja3FFNEnftw3K6 192.168.2.76
+  █  CBHHuR1xFnm5C5CQBc 192.168.2.76
+     CD1jfU3p9abEm77mzf 192.168.2.76
+     C0K9DaoPFkfnzwlZa 192.168.2.76
+ 616    CbQAWi3GX2bCmX5L56 192.168.2.76
+ 298    Cd8s2R3OGDgkhnvSu9 192.168.2.76
+ 205    CBeaXe4Iyj1gXd2Iq 192.168.2.76
+     CmWpSw3VtjiAceBCwf 192.168.2.76
+ 1m12s201    CbNCgO1MzloHRNeY4f 192.168.2.76
+ 315    CX1GjC4vn52UY1uDv6 192.168.2.76
+     CaPClb1Bf0RrRGtyWi 192.168.2.76
+ 35s642    CibfNy1QQW4ImDWRq5 192.168.2.76
+ 1m11s547    CTRXSR3blXJE5ZE7Ij 192.168.2.76
+ 1m11s536    CnGze54kQWWpKqrrZ4 192.168.2.76
+ 12s337    C3TZMB4CrUwYfkGJy1 192.168.2.76
+     CK957ERTz8lBycly4 192.168.2.76
+ 1s309    CO5QKYQkcSdxQFA35 192.168.2.76
+     CurHpb1TGZOktTRNP1 192.168.2.76
+     CuUKOQ1R3CqKBgeTdf 192.168.2.76
+     C3xkHgJnzZszVSTpi 192.168.2.76
+     CMrjgF2XLmRh9C9TR4 192.168.2.76
+     C2vQ8sVgyADHjtEda 192.168.2.76
+     CD69521bDXIAb4IkW 192.168.2.76
+ 6s648    CC3vUI3gFB04zLvWRa 192.168.2.76
+ 2s666    C7Krri4g9tZfHniGXh 192.168.2.76
+     CmxyBl2c8XAMTuHEk4 192.168.2.76
+ 499    CSvs6v26bQqFylkk6l 192.168.2.76
+     C4pHul1H3OeWYz7o7i 192.168.2.76
+     C7Lcvr4vsTf6eYpBva 192.168.2.76
+     CV8faD4L1sLL5kDwN9 192.168.2.76
+     CxyAKs10ppnHFP6O8i 192.168.2.76
+     C6MrHk2C7rLuJqhjsg 192.168.2.76
+     CvfUrT2DgYXXoZw9Ah 192.168.2.76
+     CBX0254QJoklXNbvv2 192.168.2.76
+     C6Ym6jvMgikT0xTTc 192.168.2.76
+     CRNn9f1zKNlzHSM5pa 192.168.2.76
+     CJLgi92kpp2gLgGTE5 192.168.2.76
diff --git a/test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.err b/test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.err
diff --git a/test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.out b/test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.out
new file mode 100644
index 0000000..67a56e3
--- /dev/null
+++ b/test/expected/test_gantt.sh_b013ab41c3cca76cf05a01ca1ba65888be247ada.out
@@ -0,0 +1,70 @@
+ 2011-11-03T00:17 5m 2011-11-03T00:22
+ 5m
+ Duration | ✘▲ | Operation
+ 23s044    CN5hnY3x51j6Hr1v4 192.168.2.76
+ 32s388    CmWpC33jXuKpXNLcie 192.168.2.76
+     CEh6Ka2HInkNSH01L2 192.168.2.76
+ 4s840    CjPGiy13ncXKxU765j 192.168.2.76
+ 6s895    CPoz7NUpXISemlNSd  192.168.2.76
+ 6s837    Ct6ixh35y9AEr7J7o9 192.168.2.76
+ 6s889    CaEFHq2HVQ5iGJQiD9 192.168.2.76
+ 6s875    CjinlH2fzDtvzI9637 192.168.2.76
+ 6s884    Cedw7H3ddE2yLiLoXc 192.168.2.76
+ 6s917    CAUlC249svUfE6q0g3 192.168.2.76
+     CIJIDL1ULo4HpT24Gl 192.168.2.76
+ 016    CLsqp41RLUd83arUQb 192.168.2.76
+ 166    CbCciH11995WKkobR1 192.168.2.76
+ 457    ClcvKE1dqsEFQu46m9 192.168.2.76
+     CaP2LpLGvsmX7yJO  192.168.2.76
+ 043    CNbPns4mOMGgjI8Ele 192.168.2.76
+ 557    C185u7u9Q4qhJPhzl  192.168.2.76
+ 129    CKzjfhsJ8vrn2rrfg  192.168.2.76
+ 562    CiIjAe1n5MnPOVpQ9f 192.168.2.76
+     CGv2Tp4Ngt8MmKmVRd 192.168.2.76
+ 7s071    C5DisEMFU77Wk9Kae  192.168.2.76
+     Cs5yEZ3ELZTeuTOsP4 192.168.2.76
+ 4s667    Cu4gIx1BDNtGOl7Ht2 192.168.2.76
+ 1s288    CRgW2I2zo3SInm6iT8 192.168.2.76
+     CWJhMU2cTLEnseTmCb 192.168.2.76
+ 042    CejI402rKGtdBXij4f 192.168.2.76
+     C2KnU34GcVV6amo8va 192.168.2.76
+     C5vx4911iSMAJuShFd 192.168.2.76
+     CbUCgw1DrIGcXzONB7 192.168.2.76
+ 502    C96j2X1DixgLTj2Oi8 192.168.2.76
+     CYYyja3FFNEnftw3K6 192.168.2.76
+  █  CBHHuR1xFnm5C5CQBc 192.168.2.76
+     CD1jfU3p9abEm77mzf 192.168.2.76
+     C0K9DaoPFkfnzwlZa 192.168.2.76
+ 616    CbQAWi3GX2bCmX5L56 192.168.2.76
+ 298    Cd8s2R3OGDgkhnvSu9 192.168.2.76
+ 205    CBeaXe4Iyj1gXd2Iq 192.168.2.76
+     CmWpSw3VtjiAceBCwf 192.168.2.76
+ 1m12s201    CbNCgO1MzloHRNeY4f 192.168.2.76
+ 315    CX1GjC4vn52UY1uDv6 192.168.2.76
+     CaPClb1Bf0RrRGtyWi 192.168.2.76
+ 35s642    CibfNy1QQW4ImDWRq5 192.168.2.76
+ 1m11s547    CTRXSR3blXJE5ZE7Ij 192.168.2.76
+ 1m11s536    CnGze54kQWWpKqrrZ4 192.168.2.76
+ 12s337    C3TZMB4CrUwYfkGJy1 192.168.2.76
+     CK957ERTz8lBycly4 192.168.2.76
+ 1s309    CO5QKYQkcSdxQFA35 192.168.2.76
+     CurHpb1TGZOktTRNP1 192.168.2.76
+     CuUKOQ1R3CqKBgeTdf 192.168.2.76
+     C3xkHgJnzZszVSTpi 192.168.2.76
+     CMrjgF2XLmRh9C9TR4 192.168.2.76
+     C2vQ8sVgyADHjtEda 192.168.2.76
+     CD69521bDXIAb4IkW 192.168.2.76
+ 6s648    CC3vUI3gFB04zLvWRa 192.168.2.76
+ 2s666    C7Krri4g9tZfHniGXh 192.168.2.76
+     CmxyBl2c8XAMTuHEk4 192.168.2.76
+ 499    CSvs6v26bQqFylkk6l 192.168.2.76
+     C4pHul1H3OeWYz7o7i 192.168.2.76
+     C7Lcvr4vsTf6eYpBva 192.168.2.76
+     CV8faD4L1sLL5kDwN9 192.168.2.76
+     CxyAKs10ppnHFP6O8i 192.168.2.76
+     C6MrHk2C7rLuJqhjsg 192.168.2.76
+     CvfUrT2DgYXXoZw9Ah 192.168.2.76
+     CBX0254QJoklXNbvv2 192.168.2.76
+     C6Ym6jvMgikT0xTTc 192.168.2.76
+     CRNn9f1zKNlzHSM5pa 192.168.2.76
+     CJLgi92kpp2gLgGTE5 192.168.2.76
diff --git a/test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.err b/test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.err
diff --git a/test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.out b/test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.out
new file mode 100644
index 0000000..75ceff3
--- /dev/null
+++ b/test/expected/test_gantt.sh_cde7947f361e5f3d4cd1bbc3f7458f426b6a8eb4.out
@@ -0,0 +1,4 @@
+ 2011-11-03T00:17 5m 2011-11-03T00:22
+ 5m
+ Duration | ✘▲ | Operation
+     CdysLK1XpcrXOpVDuh 192.168.2.76
diff --git a/test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.err b/test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.err
diff --git a/test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.out b/test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.out
new file mode 100644
index 0000000..8e609b1
--- /dev/null
+++ b/test/expected/test_gantt.sh_e6a4681a5a671c84c020dc91d7ce03c9d17fde07.out
@@ -0,0 +1,70 @@
+ 2011-11-03T00:17 5m 2011-11-03T00:22
+ 5m
+ Duration | ✘▲ | Operation
+ 844    CwFs1P2UcUdlSxD2La 192.168.2.76
+     CoX7zA3OJKGUOSCBY2 192.168.2.76
+     CdrfXZ1NOFPEawF218 192.168.2.76
+     CJwUi9bdB9c1lLW44  192.168.2.76
+     CJxSUgkInyKSHiju1  192.168.2.76
+     CT0JIh479jXIGt0Po1 192.168.2.76
+     C6Q4Vm14ZJIlZhsXqk 192.168.2.76
+ 1s070    CtgxRAqDLvrRUQdqe  192.168.2.76
+     CdysLK1XpcrXOpVDuh 192.168.2.76
+ 200    C6nSoj1Qco9PGyslz6 192.168.2.76
+ 23s044    CN5hnY3x51j6Hr1v4 192.168.2.76
+     CdZUPH2DKOE7zzCLE3 192.168.2.76
+ 32s388    CmWpC33jXuKpXNLcie 192.168.2.76
+     CsBgiE1WmGP4Yo749h 192.168.2.76
+ 657    CYfHyC28tAhkLYkXB7 192.168.2.76
+     CtANmVrHYMtkWqPE5  192.168.2.76
+ 647    CSTH8n1O1nv0ztxNQd 192.168.2.76
+     C4uDKU5tpeRU9Su19  192.168.2.76
+     CEh6Ka2HInkNSH01L2 192.168.2.76
+ 4s840    CjPGiy13ncXKxU765j 192.168.2.76
+ 6s895    CPoz7NUpXISemlNSd  192.168.2.76
+ 6s837    Ct6ixh35y9AEr7J7o9 192.168.2.76
+ 6s889    CaEFHq2HVQ5iGJQiD9 192.168.2.76
+ 6s875    CjinlH2fzDtvzI9637 192.168.2.76
+ 6s884    Cedw7H3ddE2yLiLoXc 192.168.2.76
+ 6s917    CAUlC249svUfE6q0g3 192.168.2.76
+     CIJIDL1ULo4HpT24Gl 192.168.2.76
+ 016    CLsqp41RLUd83arUQb 192.168.2.76
+ 166    CbCciH11995WKkobR1 192.168.2.76
+ 457    ClcvKE1dqsEFQu46m9 192.168.2.76
+     CaP2LpLGvsmX7yJO  192.168.2.76
+ 043    CNbPns4mOMGgjI8Ele 192.168.2.76
+ 557    C185u7u9Q4qhJPhzl  192.168.2.76
+ 129    CKzjfhsJ8vrn2rrfg  192.168.2.76
+ 562    CiIjAe1n5MnPOVpQ9f 192.168.2.76
+     CGv2Tp4Ngt8MmKmVRd 192.168.2.76
+ 7s071    C5DisEMFU77Wk9Kae  192.168.2.76
+     Cs5yEZ3ELZTeuTOsP4 192.168.2.76
+ 4s667    Cu4gIx1BDNtGOl7Ht2 192.168.2.76
+ 1s288    CRgW2I2zo3SInm6iT8 192.168.2.76
+     CWJhMU2cTLEnseTmCb 192.168.2.76
+ 042    CejI402rKGtdBXij4f 192.168.2.76
+     C2KnU34GcVV6amo8va 192.168.2.76
+     C5vx4911iSMAJuShFd 192.168.2.76
+     CbUCgw1DrIGcXzONB7 192.168.2.76
+ 502    C96j2X1DixgLTj2Oi8 192.168.2.76
+     CYYyja3FFNEnftw3K6 192.168.2.76
+  █  CBHHuR1xFnm5C5CQBc 192.168.2.76
+     CD1jfU3p9abEm77mzf 192.168.2.76
+     C0K9DaoPFkfnzwlZa 192.168.2.76
+ 616    CbQAWi3GX2bCmX5L56 192.168.2.76
+ 298    Cd8s2R3OGDgkhnvSu9 192.168.2.76
+ 205    CBeaXe4Iyj1gXd2Iq 192.168.2.76
+     CmWpSw3VtjiAceBCwf 192.168.2.76
+ 1m12s201    CbNCgO1MzloHRNeY4f 192.168.2.76
+ 315    CX1GjC4vn52UY1uDv6 192.168.2.76
+     CaPClb1Bf0RrRGtyWi 192.168.2.76
+ 35s642    CibfNy1QQW4ImDWRq5 192.168.2.76
+ 1m11s547    CTRXSR3blXJE5ZE7Ij 192.168.2.76
+ 1m11s536    CnGze54kQWWpKqrrZ4 192.168.2.76
+ 12s337    C3TZMB4CrUwYfkGJy1 192.168.2.76
+     CK957ERTz8lBycly4 192.168.2.76
+ 1s309    CO5QKYQkcSdxQFA35 192.168.2.76
+     CurHpb1TGZOktTRNP1 192.168.2.76
+     CuUKOQ1R3CqKBgeTdf 192.168.2.76
+     C3xkHgJnzZszVSTpi 192.168.2.76
+     CMrjgF2XLmRh9C9TR4 192.168.2.76
diff --git a/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out b/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out
index 55657f7..dd6c9d2 100644
--- a/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out
+++ b/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out
@@ -1,11 +1,11 @@
-{"ts": "2013-09-06T20:00:48.124817Z", "lvl": "TRACE", "msg": "trace test"}
-{"ts": "2013-09-06T20:00:49.124817Z", "lvl": "INFO", "msg": "Starting up \u001B[0;32mservice\u001B[0m"}
+{"ts": "2013-09-06T20:00:48.124817Z", "logger": "com.example.foo.bar.bazzer", "lvl": "TRACE", "msg": "trace test"}
+{"ts": "2013-09-06T20:00:49.124817Z", "logger": "com.example.demo", "lvl": "INFO", "msg": "Starting up \u001B[0;32mservice\u001B[0m"}
{"ts": "2013-09-06T22:00:49.124817Z", "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"}
-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG5", "msg": "Details...\n"}
-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG4", "msg": "Details...\n"}
+{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG5", "msg": "D\bDetails...\n"}
+{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG4", "msg": "D\bDe\betails...\n"}
{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG3", "msg": "Details...\n"}
{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG2", "msg": "Details...\n"}
-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG", "msg": "Details..."}
+{"ts": "2013-09-06 22:01:00Z", "lvl": "DEBUG", "msg": "Details..."}
{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "STATS", "msg": "1 beat per second"}
{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "WARNING", "msg": "not looking good"}
{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "ERROR", "msg": "looking bad"}
diff --git a/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out b/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out
index 59872f2..c85be78 100644
--- a/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out
+++ b/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out
@@ -1,14 +1,14 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,@fields/user,@fields/trace#
-0,<NULL>,2013-09-06 20:00:48.124,0,trace,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-2,<NULL>,2013-09-06 20:00:49.124,1000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-4,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,steve@example.com,<NULL>
-7,<NULL>,2013-09-06 22:00:59.124,10000,debug5,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-9,<NULL>,2013-09-06 22:00:59.124,0,debug4,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-11,<NULL>,2013-09-06 22:00:59.124,0,debug3,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-13,<NULL>,2013-09-06 22:00:59.124,0,debug2,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-15,<NULL>,2013-09-06 22:00:59.124,0,debug,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-17,<NULL>,2013-09-06 22:01:49.124,50000,stats,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-19,<NULL>,2013-09-06 22:01:49.124,0,warning,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-21,<NULL>,2013-09-06 22:01:49.124,0,error,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-23,<NULL>,2013-09-06 22:01:49.124,0,critical,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
-25,<NULL>,2013-09-06 22:01:49.124,0,fatal,0,<NULL>,<NULL>,<NULL>,<NULL>,line:1
+log_line,log_time,log_level,@fields/user,@fields/trace#,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2013-09-06 20:00:48.124,trace,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2013-09-06 20:00:49.124,info,<NULL>,<NULL>,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+4,2013-09-06 22:00:49.124,info,steve@example.com,<NULL>,<NULL>,7200000,0,<NULL>,<NULL>,<NULL>,<NULL>
+7,2013-09-06 22:00:59.124,debug5,<NULL>,<NULL>,<NULL>,10000,0,<NULL>,<NULL>,<NULL>,<NULL>
+9,2013-09-06 22:00:59.124,debug4,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+11,2013-09-06 22:00:59.124,debug3,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+13,2013-09-06 22:00:59.124,debug2,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+15,2013-09-06 22:00:59.124,debug,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+17,2013-09-06 22:01:49.124,stats,<NULL>,<NULL>,<NULL>,50000,0,<NULL>,<NULL>,<NULL>,<NULL>
+19,2013-09-06 22:01:49.124,warning,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+21,2013-09-06 22:01:49.124,error,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+23,2013-09-06 22:01:49.124,critical,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+25,2013-09-06 22:01:49.124,fatal,<NULL>,line:1,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out b/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out
index 0dc139f..53d473d 100644
--- a/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out
+++ b/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out
@@ -1,194 +1,212 @@
[
{
"log_line": 0,
- "log_part": null,
"log_time": "2013-09-06 20:00:48.124",
- "log_idle_msecs": 0,
"log_level": "trace",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": "com.example.foo.bar.bazzer",
"lvl": "TRACE",
- "user": null
+ "user": null,
+ "log_part": null,
+ "log_idle_msecs": 0,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 2,
- "log_part": null,
"log_time": "2013-09-06 20:00:49.124",
- "log_idle_msecs": 1000,
"log_level": "info",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": "com.example.demo",
"lvl": "INFO",
- "user": null
+ "user": null,
+ "log_part": null,
+ "log_idle_msecs": 1000,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 4,
- "log_part": null,
"log_time": "2013-09-06 22:00:49.124",
- "log_idle_msecs": 7200000,
"log_level": "info",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "INFO",
- "user": "steve@example.com"
+ "user": "steve@example.com",
+ "log_part": null,
+ "log_idle_msecs": 7200000,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 7,
- "log_part": null,
"log_time": "2013-09-06 22:00:59.124",
- "log_idle_msecs": 10000,
"log_level": "debug5",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "DEBUG5",
- "user": null
+ "user": null,
+ "log_part": null,
+ "log_idle_msecs": 10000,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 9,
- "log_part": null,
"log_time": "2013-09-06 22:00:59.124",
- "log_idle_msecs": 0,
"log_level": "debug4",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "DEBUG4",
- "user": null
- },
- {
- "log_line": 11,
+ "user": null,
"log_part": null,
- "log_time": "2013-09-06 22:00:59.124",
"log_idle_msecs": 0,
- "log_level": "debug3",
"log_mark": 0,
"log_comment": null,
"log_tags": null,
- "log_filters": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 11,
+ "log_time": "2013-09-06 22:00:59.124",
+ "log_level": "debug3",
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "DEBUG3",
- "user": null
- },
- {
- "log_line": 13,
+ "user": null,
"log_part": null,
- "log_time": "2013-09-06 22:00:59.124",
"log_idle_msecs": 0,
- "log_level": "debug2",
"log_mark": 0,
"log_comment": null,
"log_tags": null,
- "log_filters": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 13,
+ "log_time": "2013-09-06 22:00:59.124",
+ "log_level": "debug2",
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "DEBUG2",
- "user": null
- },
- {
- "log_line": 15,
+ "user": null,
"log_part": null,
- "log_time": "2013-09-06 22:00:59.124",
"log_idle_msecs": 0,
- "log_level": "debug",
"log_mark": 0,
"log_comment": null,
"log_tags": null,
- "log_filters": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 15,
+ "log_time": "2013-09-06 22:01:00.000",
+ "log_level": "debug",
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "DEBUG",
- "user": null
+ "user": null,
+ "log_part": null,
+ "log_idle_msecs": 876,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 17,
- "log_part": null,
"log_time": "2013-09-06 22:01:49.124",
- "log_idle_msecs": 50000,
"log_level": "stats",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "STATS",
- "user": null
+ "user": null,
+ "log_part": null,
+ "log_idle_msecs": 49124,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
},
{
"log_line": 19,
- "log_part": null,
"log_time": "2013-09-06 22:01:49.124",
- "log_idle_msecs": 0,
"log_level": "warning",
- "log_mark": 0,
- "log_comment": null,
- "log_tags": null,
- "log_filters": null,
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "WARNING",
- "user": null
- },
- {
- "log_line": 21,
+ "user": null,
"log_part": null,
- "log_time": "2013-09-06 22:01:49.124",
"log_idle_msecs": 0,
- "log_level": "error",
"log_mark": 0,
"log_comment": null,
"log_tags": null,
- "log_filters": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 21,
+ "log_time": "2013-09-06 22:01:49.124",
+ "log_level": "error",
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "ERROR",
- "user": null
- },
- {
- "log_line": 23,
+ "user": null,
"log_part": null,
- "log_time": "2013-09-06 22:01:49.124",
"log_idle_msecs": 0,
- "log_level": "critical",
"log_mark": 0,
"log_comment": null,
"log_tags": null,
- "log_filters": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 23,
+ "log_time": "2013-09-06 22:01:49.124",
+ "log_level": "critical",
"arr": null,
"obj": null,
+ "logger": null,
"lvl": "CRITICAL",
- "user": null
- },
- {
- "log_line": 25,
+ "user": null,
"log_part": null,
- "log_time": "2013-09-06 22:01:49.124",
"log_idle_msecs": 0,
- "log_level": "fatal",
"log_mark": 0,
"log_comment": null,
"log_tags": null,
- "log_filters": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 25,
+ "log_time": "2013-09-06 22:01:49.124",
+ "log_level": "fatal",
"arr": [
"hi",
{
@@ -199,7 +217,15 @@
"field1": "hi",
"field2": 2
},
+ "logger": null,
"lvl": "FATAL",
- "user": null
+ "user": null,
+ "log_part": null,
+ "log_idle_msecs": 0,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
}
]
diff --git a/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out b/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out
index 9b7fbf1..2063d71 100644
--- a/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out
+++ b/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out
@@ -1,3 +1,3 @@
-2017-03-24T20:06:26.240 1.1.1.1 GET 200 443 /example/uri/5
-2017-03-24T20:12:47.764 1.1.1.1 GET 500 4433 /example/uri/5
-2017-03-24T20:15:31.694 1.1.1.1 GET 400 44345 /example/uri/5
+2017-03-24T20:06:26.240Z 1.1.1.1 GET 200 443 /example/uri/5
+2017-03-24T20:12:47.764Z 1.1.1.1 GET 500 4433 /example/uri/5
+2017-03-24T20:15:31.694Z 1.1.1.1 GET 400 44345 /example/uri/5
diff --git a/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out b/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out
index ee41abb..8a1d53c 100644
--- a/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out
+++ b/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out
@@ -1,29 +1,29 @@
-[2013-09-06T20:00:48.124] TRACE trace test
+[2013-09-06T20:00:48.124817Z] ⋮ <c.e.foo.bar.bazzer > trace test
-[2013-09-06T20:00:49.124] INFO Starting up service
+[2013-09-06T20:00:49.124817Z] ⋮ <com.example.demo > Starting up service
-[2013-09-06T22:00:49.124] INFO Shutting down service
+[2013-09-06T22:00:49.124817Z] ⋮ Shutting down service
user: steve@example.com
-[2013-09-06T22:00:59.124] DEBUG5 Details...
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
-[2013-09-06T22:00:59.124] DEBUG4 Details...
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
-[2013-09-06T22:00:59.124] DEBUG3 Details...
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
-[2013-09-06T22:00:59.124] DEBUG2 Details...
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
-[2013-09-06T22:00:59.124] DEBUG Details...
+[2013-09-06 22:01:00Z] ⋮ Details...
-[2013-09-06T22:01:49.124] STATS 1 beat per second
+[2013-09-06T22:01:49.124817Z] ⋮ 1 beat per second
-[2013-09-06T22:01:49.124] WARNING not looking good
+[2013-09-06T22:01:49.124817Z] ⋮ not looking good
-[2013-09-06T22:01:49.124] ERROR looking bad
+[2013-09-06T22:01:49.124817Z] ⋮ looking bad
-[2013-09-06T22:01:49.124] CRITICAL sooo bad
+[2013-09-06T22:01:49.124817Z] ⋮ sooo bad
-[2013-09-06T22:01:49.124] FATAL shoot
+[2013-09-06T22:01:49.124817Z] ⋮ shoot
 obj: { "field1" : "hi", "field2": 2 }
 arr: ["hi", {"sub1": true}]
diff --git a/test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.err b/test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.err
diff --git a/test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.out b/test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.out
new file mode 100644
index 0000000..94d521d
--- /dev/null
+++ b/test/expected/test_json_format.sh_5795c5ffd98ae581b30c6f0983349bf7a6a84501.out
@@ -0,0 +1,52 @@
+2024-01-01T15:00:00Z MemberEvent mujianwu added Envoy-Z-Lab to Uotan-Dev/UotanWorkStation-ROM-Builder
+2024-01-01T15:00:00Z PushEvent mdmaid69 committed “float further safety possibly strike” to mdmaid69/reimagined-giggle
+2024-01-01T15:00:00Z ForkEvent SynthWave-Systems forked SynthWave-Systems/ampleforth-contracts from ampleforth/ampleforth-contracts
+2024-01-01T15:00:00Z PullRequestEvent tobexyz closed pull-request #90 “merge latest release to master” in tobexyz/yaacc-code
+2024-01-01T15:00:00Z PushEvent dim12512a committed “Empty Commit” to dim12512a/Repo5
+2024-01-01T15:00:00Z PushEvent github-shvabra committed “new change” to saby/ios-sabycom
+2024-01-01T15:00:00Z CreateEvent roman1923 repository off main in roman1923/no-woo-small-cta-fast-food-shop
+2024-01-01T15:00:00Z PushEvent appref5555ix63 committed “Empty Commit” to appref5555ix63/Repo4
+2024-01-01T15:00:00Z PullRequestReviewEvent megusasuke0 created review 1799820649 for pull-request #1 “Feature/lesson01” in megusasuke0/frontendhandson
+2024-01-01T15:00:00Z PushEvent dim12512a committed “Empty Commit” to dim12512a/Repo6
+2024-01-01T15:00:00Z ForkEvent Shadowxiaomo forked Shadowxiaomo/MemDumper from kp7742/MemDumper
+2024-01-01T15:00:00Z PushEvent Jinyeong1611 committed “방향값 추가” to Jinyeong1611/pacman
+2024-01-01T15:00:00Z PullRequestEvent dependabot closed pull-request #911 “Bump @storybook/addon-a11y from 7.5.3 to 7.6.3” in DNNCommunity/dnn-elements
+2024-01-01T15:00:01Z PushEvent ColeMalinchock1 committed “Update backup JSON file” to ColeMalinchock1/HGT-JSON-Server
+2024-01-01T15:00:01Z PushEvent uyenlexx committed “update navbar and search” to HoanqDucAnh/Keebie
+2024-01-01T15:00:01Z DeleteEvent direwolf-github branch direwolf-github/ephemeral-ci-f72a7b4a
+2024-01-01T15:00:01Z PushEvent Zarakkhan-dev committed “khtam” to Zarakkhan-dev/LegalaiAssistentBackend
+2024-01-01T15:00:01Z PushEvent appref5555ix63 committed “Empty Commit” to appref5555ix63/Repo2
+2024-01-01T15:00:01Z ForkEvent tarinisunil forked tarinisunil/Get_Better_at_CP_in_2_Months from sahilbansal17/Get_Better_at_CP_in_2_Months
+2024-01-01T15:00:01Z ForkEvent jackblack369 forked jackblack369/danswer from danswer-ai/danswer
+2024-01-01T15:00:01Z ForkEvent vineetp6 forked vineetp6/pydub from jiaaro/pydub
+2024-01-01T15:00:01Z PushEvent lhduc94 committed “push book” to lhduc94/kungfupandas
+2024-01-01T15:00:01Z PushEvent ranadebsaha committed “Add files via upload” to ranadebsaha/DSA
+2024-01-01T15:00:01Z PushEvent harmanpa committed “Add ability for STL and DXF parsers to read from InputStream rather than just files” to harmanpa/jgeom
+2024-01-01T15:00:01Z PushEvent dim12512a committed “Empty Commit” to dim12512a/Repo6
+2024-01-01T15:00:01Z PushEvent namson26 committed “ industry talk PPG and Habib” to namson26/Technology-Information-System
+2024-01-01T15:00:01Z PushEvent mdmaid69 committed “last recover hurt off claim” to mdmaid69/reimagined-giggle
+2024-01-01T15:00:01Z PushEvent dim12512a committed “Empty Commit” to dim12512a/Repo7
+2024-01-01T15:00:01Z PullRequestEvent tomgransden closed pull-request #26 “Dev/tg/add firestore” in tomgransden/MyTummyHurtsApp
+2024-01-01T15:00:01Z PushEvent dim12512a committed “Empty Commit” to dim12512a/Repo7
+2024-01-01T15:00:01Z PushEvent vedant-z committed “Update to 2 in STEP and README.md” to Exp-Intro-to-GitHub-Flow-Cohort-1/series-intro-to-github-flow-vedant-z
+ payload/commits#/message: Create PROFILE.md
+ payload/commits#/message: Update to 3 in STEP and README.md
+2024-01-01T15:00:01Z WatchEvent morteza-rp started MasoudKaviani/filoger_fanap_402
+2024-01-01T15:00:01Z PushEvent B74LABgit committed “committing files” to B74LABgit/CAM
+2024-01-01T15:00:01Z PushEvent sdhz151 sdhz153/Actions-OpenWrt
+2024-01-01T15:00:01Z CreateEvent UjjawalSah repository off main in UjjawalSah/ModernFarming
+2024-01-01T15:00:01Z PushEvent wodcoredev committed “Update index.html” to wod-core/website
+2024-01-01T15:00:01Z PushEvent Vsonneveld committed “The genre has been updated” to Vsonneveld/foroxity-genres
+2024-01-01T15:00:01Z PushEvent diphons committed “cpu_input_boost: use MI_DRM notifier” to diphons/sdm845-419
+2024-01-01T15:00:01Z PushEvent l1nky-1337 committed “README.md” to l1nky-1337/TimeFn-Updated
+2024-01-01T15:00:01Z CreateEvent luiz8910 repository off main in luiz8910/codeflix
+2024-01-01T15:00:01Z PushEvent Owl3CM committed “sync” to Owl3CM/Eze-Scripts
+2024-01-01T15:00:01Z PullRequestReviewEvent SamboyCoding created review 1799820647 for pull-request #255 “Support Type Parameters in Call Analysis” in SamboyCoding/Cpp2IL
+2024-01-01T15:00:01Z PushEvent lu146enza committed “Empty Commit” to lu146enza/Repo9
+2024-01-01T15:00:01Z PushEvent fdvorak committed “automated commit 2024-01-01 15:59:14” to fdvorak/sandWind
+2024-01-01T15:00:01Z PushEvent github-shvabra committed “new change” to saby/ios-sabycom
+2024-01-01T15:00:01Z DeleteEvent artamonovkirill branch tomtom-international/goji-http-client
+2024-01-01T15:00:01Z PullRequestEvent github-actions closed pull-request #45 “build(deps-dev): bump ts-node from 10.9.1 to 10.9.2” in jckimble/Github-Graph-Background
+2024-01-01T15:00:01Z PushEvent leegical committed “Upload by PicGo” to leegical/Blog_img
+2024-01-01T15:00:01Z CreateEvent mohil298 repository off main in mohil298/PCB-Designing
+2024-01-01T15:00:01Z PullRequestReviewEvent ehsandeep created review 1799820657 for pull-request #1102 “chore(deps): bump github.com/projectdiscovery/goflags from 0.1.32 to 0.1.33 in /v2” in projectdiscovery/subfinder
diff --git a/test/expected/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out b/test/expected/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out
index 19672db..9809b55 100644
--- a/test/expected/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out
+++ b/test/expected/test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out
@@ -1,41 +1,41 @@
-2023-03-24T14:26:16.243 renovate[7] DEBUG Found gitlabci-include package files
+2023-03-24T14:26:16.243Z renovate[7] DEBUG Found gitlabci-include package files
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
-2023-03-24T14:26:16.243 renovate[7] DEBUG Found npm package files
+2023-03-24T14:26:16.243Z renovate[7] DEBUG Found npm package files
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
-2023-03-24T14:26:16.243 renovate[7] DEBUG [/Users/trentm/tm/node-bunyan/examples/src.js:20:Wuzzle.woos] Found 3 package file(s)
+2023-03-24T14:26:16.243Z renovate[7] DEBUG [/Users/trentm/tm/node-bunyan/examples/src.js:20:Wuzzle.woos] Found 3 package file(s)
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
-2023-03-24T14:26:16.243 renovate[7] INFO Dependency extraction complete
+2023-03-24T14:26:16.243Z renovate[7] INFO Dependency extraction complete
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
baseBranch: main
stats: {"managers":{"gitlabci":{"fileCount":1,"depCount":1},"gitlabci-include":{"fileCount":1,"depCount":1},"npm":{"fileCount":1,"depCount":15}},"total":{"fileCount":3,"depCount":17}}
-2023-03-24T14:26:16.390 renovate[7] DEBUG Dependency node has unsupported/unversioned value lts-bullseye-slim (versioning=docker)
+2023-03-24T14:26:16.390Z renovate[7] DEBUG Dependency node has unsupported/unversioned value lts-bullseye-slim (versioning=docker)
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
-2023-03-24T14:26:17.493 renovate[7] DEBUG Release 2.8.7 is pending status checks
+2023-03-24T14:26:17.493Z renovate[7] DEBUG Release 2.8.7 is pending status checks
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
depName: prettier
check: stabilityDays
-2023-03-24T14:26:17.897 renovate[7] DEBUG Release 4.4.1 is pending status checks
+2023-03-24T14:26:17.897Z renovate[7] DEBUG Release 4.4.1 is pending status checks
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
depName: rimraf
check: stabilityDays
-2023-03-24T14:26:17.897 renovate[7] DEBUG All releases are pending - using latest
+2023-03-24T14:26:17.897Z renovate[7] DEBUG All releases are pending - using latest
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
depName: rimraf
bucket: non-major
-2023-03-24T14:26:18.330 renovate[7] DEBUG Release 2.10.0 is pending status checks
+2023-03-24T14:26:18.330Z renovate[7] DEBUG Release 2.10.0 is pending status checks
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
depName: prettier-plugin-svelte
check: stabilityDays
-2023-03-24T14:26:18.331 renovate[7] DEBUG All releases are pending - using latest
+2023-03-24T14:26:18.331Z renovate[7] DEBUG All releases are pending - using latest
logContext: qjifsaDDI
repository: webgui/custom-icons-transformer
depName: prettier-plugin-svelte
diff --git a/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out b/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out
index 128f5ab..3363f23 100644
--- a/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out
+++ b/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out
@@ -1,4 +1,4 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,user,cl
-0,<NULL>,2013-09-06 20:00:49.124,0,info,0,<NULL>,<NULL>,<NULL>,<NULL>,com.exmaple.foo
-1,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,steve@example.com,com.exmaple.foo
-3,<NULL>,2013-09-06 22:01:49.124,60000,error,0,<NULL>,<NULL>,<NULL>,<NULL>,com.exmaple.foo
+log_line,log_time,log_level,user,cl,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2013-09-06 20:00:49.124,info,<NULL>,com.exmaple.foo,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2013-09-06 22:00:49.124,info,steve@example.com,com.exmaple.foo,<NULL>,7200000,0,<NULL>,<NULL>,<NULL>,<NULL>
+3,2013-09-06 22:01:49.124,error,<NULL>,com.exmaple.foo,<NULL>,60000,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out b/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out
index c861d3a..16d7261 100644
--- a/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out
+++ b/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out
@@ -1,29 +1,29 @@
-2013-09-06T20:00:48.124 TRACE trace test
+2013-09-06T20:00:48.124817Z TRACE trace test
@fields: { "lvl": "TRACE", "msg": "trace test"}
-2013-09-06T20:00:49.124 INFO Starting up service
+2013-09-06T20:00:49.124817Z INFO Starting up service
@fields: { "lvl": "INFO", "msg": "Starting up service"}
-2013-09-06T22:00:49.124 INFO Shutting down service
+2013-09-06T22:00:49.124817Z INFO Shutting down service
@fields/user: steve@example.com
@fields: { "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"}
-2013-09-06T22:00:59.124 DEBUG5 Details...
+2013-09-06T22:00:59.124817Z DEBUG5 Details...
@fields: { "lvl": "DEBUG5", "msg": "Details..."}
-2013-09-06T22:00:59.124 DEBUG4 Details...
+2013-09-06T22:00:59.124817Z DEBUG4 Details...
@fields: { "lvl": "DEBUG4", "msg": "Details..."}
-2013-09-06T22:00:59.124 DEBUG3 Details...
+2013-09-06T22:00:59.124817Z DEBUG3 Details...
@fields: { "lvl": "DEBUG3", "msg": "Details..."}
-2013-09-06T22:00:59.124 DEBUG2 Details...
+2013-09-06T22:00:59.124817Z DEBUG2 Details...
@fields: { "lvl": "DEBUG2", "msg": "Details..."}
-2013-09-06T22:00:59.124 DEBUG Details...
+2013-09-06T22:00:59.124817Z DEBUG Details...
@fields: { "lvl": "DEBUG", "msg": "Details..."}
-2013-09-06T22:01:49.124 STATS 1 beat per second
+2013-09-06T22:01:49.124817Z STATS 1 beat per second
@fields: { "lvl": "STATS", "msg": "1 beat per second"}
-2013-09-06T22:01:49.124 WARNING not looking good
+2013-09-06T22:01:49.124817Z WARNING not looking good
 @fields: { "lvl": "WARNING", "msg": "not looking good"}
-2013-09-06T22:01:49.124 ERROR looking bad
+2013-09-06T22:01:49.124817Z ERROR looking bad
 @fields: { "lvl": "ERROR", "msg": "looking bad"}
-2013-09-06T22:01:49.124 CRITICAL sooo bad
+2013-09-06T22:01:49.124817Z CRITICAL sooo bad
 @fields: { "lvl": "CRITICAL", "msg": "sooo bad"}
-2013-09-06T22:01:49.124 FATAL shoot
+2013-09-06T22:01:49.124817Z FATAL shoot
 @fields/trace#: line:1
 @fields/trace#: line:2
 @fields: { "lvl": "FATAL", "msg": "shoot", "trace": ["line:1", "line:2"]}
diff --git a/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out b/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out
index ce295e2..72f625a 100644
--- a/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out
+++ b/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out
@@ -1,12 +1,12 @@
-2013-09-06T20:00:48.124 TRACE trace test
+2013-09-06T20:00:48.124817Z TRACE trace test
@fields: { "lvl": "TRACE", "msg": "trace test"}
-2013-09-06T20:00:49.124 INFO Starting up service
+2013-09-06T20:00:49.124817Z INFO Starting up service
@fields: { "lvl": "INFO", "msg": "Starting up service"}
[offset: 186] {"ts": "2013-09-06T22:00:49.124817Z", "@fields": { "lvl": "INFO", "msg": "Shutting down service\nline2\nline3\nline4\nline5\nline6\nline7\nline8\nline9\nline10
parse error: premature EOF
{"ts": "2013-09-06T22:00:49.124
(right here) ------^
-2013-09-06T22:00:59.124 DEBUG5 Details...
+2013-09-06T22:00:59.124817Z DEBUG5 Details...
@fields: { "lvl": "DEBUG5", "msg": "Details..."}
-2013-09-06T22:00:59.222 DEBUG4 Details...
+2013-09-06T22:00:59.222222Z DEBUG4 Details...
@fields: { "lvl": "DEBUG4", "msg": "Details..."}
diff --git a/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out b/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out
index 63376a4..4656a00 100644
--- a/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out
+++ b/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out
@@ -1,6 +1,6 @@
-2013-09-06T20:00:48.124 TRACE trace test
+2013-09-06T20:00:48.124817Z TRACE trace test
@fields: { "lvl": "TRACE", "msg": "trace test"}
-2013-09-06T20:00:49.124 INFO Starting up service
+2013-09-06T20:00:49.124817Z INFO Starting up service
@fields: { "lvl": "INFO", "msg": "Starting up service"}
[offset: 186] {"ts": "2013-09-06T22:00:49.124817Z", "@fields": { "lvl": "INFO", "msg":
parse error: premature EOF
diff --git a/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out b/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out
index 58b44ab..474ad83 100644
--- a/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out
+++ b/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out
@@ -1,2 +1,2 @@
-2018-08-21T14:04:21.221 38708007 medusa-GpsLocator.service python[184] FATAL GPS Reference longitude: 7.358143333
-2018-08-21T14:04:21.221 38708007 medusa-GpsLocator.service python[184] INFO GPS Reference latitude: 46.908706667
+2018-08-21T14:04:21.221373Z 38708007 medusa-GpsLocator.service python[184] FATAL GPS Reference longitude: 7.358143333
+2018-08-21T14:04:21.221373Z 38708007 medusa-GpsLocator.service python[184] INFO GPS Reference latitude: 46.908706667
diff --git a/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out b/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out
index 660e90e..48ec77c 100644
--- a/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out
+++ b/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out
@@ -1,14 +1,14 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,arr,obj,lvl,user
-0,<NULL>,2013-09-06 20:00:48.124,0,trace,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,TRACE,<NULL>
-2,<NULL>,2013-09-06 20:00:49.124,1000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,INFO,<NULL>
-4,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,INFO,steve@example.com
-7,<NULL>,2013-09-06 22:00:59.124,10000,debug5,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG5,<NULL>
-9,<NULL>,2013-09-06 22:00:59.124,0,debug4,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG4,<NULL>
-11,<NULL>,2013-09-06 22:00:59.124,0,debug3,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG3,<NULL>
-13,<NULL>,2013-09-06 22:00:59.124,0,debug2,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG2,<NULL>
-15,<NULL>,2013-09-06 22:00:59.124,0,debug,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG,<NULL>
-17,<NULL>,2013-09-06 22:01:49.124,50000,stats,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,STATS,<NULL>
-19,<NULL>,2013-09-06 22:01:49.124,0,warning,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,WARNING,<NULL>
-21,<NULL>,2013-09-06 22:01:49.124,0,error,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,ERROR,<NULL>
-23,<NULL>,2013-09-06 22:01:49.124,0,critical,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,CRITICAL,<NULL>
-25,<NULL>,2013-09-06 22:01:49.124,0,fatal,0,<NULL>,<NULL>,<NULL>,"[""hi"", {""sub1"": true}]","{ ""field1"" : ""hi"", ""field2"": 2 }",FATAL,<NULL>
+log_line,log_time,log_level,arr,obj,logger,lvl,user,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2013-09-06 20:00:48.124,trace,<NULL>,<NULL>,com.example.foo.bar.bazzer,TRACE,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2013-09-06 20:00:49.124,info,<NULL>,<NULL>,com.example.demo,INFO,<NULL>,<NULL>,1000,0,<NULL>,<NULL>,<NULL>,<NULL>
+4,2013-09-06 22:00:49.124,info,<NULL>,<NULL>,<NULL>,INFO,steve@example.com,<NULL>,7200000,0,<NULL>,<NULL>,<NULL>,<NULL>
+7,2013-09-06 22:00:59.124,debug5,<NULL>,<NULL>,<NULL>,DEBUG5,<NULL>,<NULL>,10000,0,<NULL>,<NULL>,<NULL>,<NULL>
+9,2013-09-06 22:00:59.124,debug4,<NULL>,<NULL>,<NULL>,DEBUG4,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+11,2013-09-06 22:00:59.124,debug3,<NULL>,<NULL>,<NULL>,DEBUG3,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+13,2013-09-06 22:00:59.124,debug2,<NULL>,<NULL>,<NULL>,DEBUG2,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+15,2013-09-06 22:01:00.000,debug,<NULL>,<NULL>,<NULL>,DEBUG,<NULL>,<NULL>,876,0,<NULL>,<NULL>,<NULL>,<NULL>
+17,2013-09-06 22:01:49.124,stats,<NULL>,<NULL>,<NULL>,STATS,<NULL>,<NULL>,49124,0,<NULL>,<NULL>,<NULL>,<NULL>
+19,2013-09-06 22:01:49.124,warning,<NULL>,<NULL>,<NULL>,WARNING,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+21,2013-09-06 22:01:49.124,error,<NULL>,<NULL>,<NULL>,ERROR,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+23,2013-09-06 22:01:49.124,critical,<NULL>,<NULL>,<NULL>,CRITICAL,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+25,2013-09-06 22:01:49.124,fatal,"[""hi"", {""sub1"": true}]","{ ""field1"" : ""hi"", ""field2"": 2 }",<NULL>,FATAL,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.err b/test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.err
diff --git a/test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.out b/test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.out
new file mode 100644
index 0000000..143d8af
--- /dev/null
+++ b/test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.out
@@ -0,0 +1,20 @@
+2023-10-01T02:39:09+00:00 twv 10.0.0.1 INFO files_antivirus Tried to scan non file
+ user: admin
+ method:
+ url: --
+2023-10-01T02:39:09+00:00 twv INFO files_antivirus Tried to scan non file
+ user: --
+ method:
+ url: --
+2023-10-01T02:50:03+00:00 pZp INFO fulltextsearch_elasticsearch Request: PUT http://elasticsearch:9200/nextcloud/_doc/files%3A1780281
+ user: --
+ method:
+ url: --
+2023-10-16T01:47:44+00:00 WO0 192.168.1.1 INFO memories Memories: Updated item successfully
+ user: jeff
+ method: PATCH
+ url: --
+2023-10-16T01:50:18+00:00 Sbl 192.168.1.1 INFO files_versions Mark to expire /Documents/phat.txt next version should be 1697407738 or smaller. (prevTimestamp: 1697411338; step: 3600
+ user: jeff
+ method:
+ url: --
diff --git a/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out b/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out
deleted file mode 100644
index 30ddacc..0000000
--- a/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out
+++ /dev/null
@@ -1,3 +0,0 @@
-2017-03-24T20:06:26.240 1.1.1.1 GET 200 /example/uri/5
-2017-03-24T20:12:47.764 1.1.1.1 GET 500 /example/uri/5
-2017-03-24T20:15:31.694 1.1.1.1 GET 400 /example/uri/5
diff --git a/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out b/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out
index 7cb7336..6de63a2 100644
--- a/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out
+++ b/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out
@@ -1,4 +1,4 @@
-[-09-06T22:00:49.124] INFO Shutting down service
+[-09-06T22:00:49.124817Z] INFO Shutting down service
user: steve@example.com
diff --git a/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out b/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out
index c3b21be..264a35e 100644
--- a/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out
+++ b/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out
@@ -1,29 +1,29 @@
-
-[2013-09-06T20:00:48.124] ⋮ trace testbork bork bork
-
-[2013-09-06T20:00:49.124] ⋮ Starting up servicebork bork bork
-
-[2013-09-06T22:00:49.124] ⋮ Shutting down servicebork bork bork
+
+[2013-09-06T20:00:48.124817Z] ⋮ <c.e.foo.bar.bazzer > trace testbork bork bork
+
+[2013-09-06T20:00:49.124817Z] ⋮ <com.example.demo > Starting up servicebork bork bork
+
+[2013-09-06T22:00:49.124817Z] ⋮ Shutting down servicebork bork bork
user: mailto:steve@example.com
-
-[2013-09-06T22:00:59.124] ⋮ Details...
+
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
bork bork bork
-
-[2013-09-06T22:00:59.124] ⋮ Details...
+
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
bork bork bork
-
-[2013-09-06T22:00:59.124] ⋮ Details...
+
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
bork bork bork
-
-[2013-09-06T22:00:59.124] ⋮ Details...
+
+[2013-09-06T22:00:59.124817Z] ⋮ Details...
bork bork bork
-
-[2013-09-06T22:00:59.124] ⋮ Details...bork bork bork
-
-[2013-09-06T22:01:49.124] ⋮ 1 beat per secondbork bork bork
-
-[2013-09-06T22:01:49.124] ⋮ not looking goodbork bork bork
-
-[2013-09-06T22:01:49.124] ⋮ looking badbork bork bork
-
-[2013-09-06T22:01:49.124] ⋮ sooo badbork bork bork
+
+[2013-09-06 22:01:00Z] ⋮ Details...bork bork bork
+
+[2013-09-06T22:01:49.124817Z] ⋮ 1 beat per secondbork bork bork
+
+[2013-09-06T22:01:49.124817Z] ⋮ not looking goodbork bork bork
+
+[2013-09-06T22:01:49.124817Z] ⋮ looking badbork bork bork
+
+[2013-09-06T22:01:49.124817Z] ⋮ sooo badbork bork bork
diff --git a/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out b/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out
deleted file mode 100644
index b356898..0000000
--- a/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out
+++ /dev/null
@@ -1,4 +0,0 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,client_ip,request/method,request/uri,request/size,response/status,details1,details2,details3
-0,<NULL>,2017-03-24 20:06:26.240,0,info,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,200,<NULL>,<NULL>,<NULL>
-1,<NULL>,2017-03-24 20:12:47.764,381524,critical,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,500,<NULL>,<NULL>,<NULL>
-2,<NULL>,2017-03-24 20:15:31.694,163930,warning,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,400,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}"
diff --git a/test/expected/test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out b/test/expected/test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out
index db5fbef..399bb82 100644
--- a/test/expected/test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out
+++ b/test/expected/test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out
@@ -1 +1 @@
-87.226.160.250 2022-10-30T00:00:02.000 "HEAD / HTTP/1.1" 301 570
+87.226.160.250 [2022-10-30T00:00:02Z] "HEAD / HTTP/1.1" 301 570
diff --git a/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out b/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out
index 889eb99..dc77753 100644
--- a/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out
+++ b/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out
@@ -1,2 +1,2 @@
-2022-09-24T00:00:09.484 Hello, World!
-2022-09-24T00:00:19.222 Goodbye, World!
+2022-09-24T00:00:09.484000000Z Hello, World!
+2022-09-24T00:00:19.222000123Z Goodbye, World!
diff --git a/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out b/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out
index abb3b80..2e9cd45 100644
--- a/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out
+++ b/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out
@@ -1,4 +1,4 @@
-2016-08-03T12:06:31.009 - ;Exception initializing page context; java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver
+2016-08-03T17:06:31.009+0000 - ;Exception initializing page context; java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver
 at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:172)
 at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:123)
 at org.apache.jsp.errors._404_002dnot_002dfound_jsp._jspService(_404_002dnot_002dfound_jsp.java:38)
@@ -41,7 +41,7 @@
 thread_name: http-bio-0.0.0.0-8081-exec-198
 level: ERROR
 customer: foobaz
-2016-08-03T12:06:31.009 - ;Exception initializing page context; 
+2016-08-03T17:06:31.009+0000 - ;Exception initializing page context; 
 @version: 1
 logger_name: org.apache.jasper.runtime.JspFactoryImpl
 thread_name: http-bio-0.0.0.0-8081-exec-198
diff --git a/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out b/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out
index aa47418..6495db7 100644
--- a/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out
+++ b/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out
@@ -1,4 +1,4 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,client_ip,request/method,request/uri,request/size,response/status,response/size,details1,details2,details3
-0,<NULL>,2017-03-24 20:06:26.240,0,info,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,200,443,<NULL>,<NULL>,<NULL>
-1,<NULL>,2017-03-24 20:12:47.764,381524,critical,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,500,4433,<NULL>,<NULL>,<NULL>
-2,<NULL>,2017-03-24 20:15:31.694,163930,warning,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,400,44345,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}"
+log_line,log_time,log_level,client_ip,request/method,request/uri,request/size,response/status,response/size,details1,details2,details3,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2017-03-24 20:06:26.240,info,1.1.1.1,GET,/example/uri/5,166,200,443,<NULL>,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2017-03-24 20:12:47.764,critical,1.1.1.1,GET,/example/uri/5,166,500,4433,<NULL>,<NULL>,<NULL>,<NULL>,381524,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2017-03-24 20:15:31.694,warning,1.1.1.1,GET,/example/uri/5,166,400,44345,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}",<NULL>,163930,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out b/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out
index 9a1c882..c65a346 100644
--- a/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out
+++ b/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out
@@ -1,3 +1,3 @@
-2017-03-24T16:06:26.240 1.1.1.1 GET 200 443 /example/uri/5
-2017-03-24T16:12:47.764 1.1.1.1 GET 500 4433 /example/uri/5
-2017-03-24T16:15:31.694 1.1.1.1 GET 400 44345 /example/uri/5
+2017-03-24T16:06:26.240-0400 1.1.1.1 GET 200 443 /example/uri/5
+2017-03-24T16:12:47.764-0400 1.1.1.1 GET 500 4433 /example/uri/5
+2017-03-24T16:15:31.694-0400 1.1.1.1 GET 400 44345 /example/uri/5
diff --git a/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out b/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out
index db24336..379fc40 100644
--- a/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out
+++ b/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out
@@ -1,4 +1,4 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,client_ip,request/method,request/uri,request/size,response/status,response/size,details1,details2,details3
-0,<NULL>,2017-03-24 16:06:26.240,0,info,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,200,443,<NULL>,<NULL>,<NULL>
-1,<NULL>,2017-03-24 16:12:47.764,381524,critical,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,500,4433,<NULL>,<NULL>,<NULL>
-2,<NULL>,2017-03-24 16:15:31.694,163930,warning,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,400,44345,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}"
+log_line,log_time,log_level,client_ip,request/method,request/uri,request/size,response/status,response/size,details1,details2,details3,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2017-03-24 16:06:26.240,info,1.1.1.1,GET,/example/uri/5,166,200,443,<NULL>,<NULL>,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2017-03-24 16:12:47.764,critical,1.1.1.1,GET,/example/uri/5,166,500,4433,<NULL>,<NULL>,<NULL>,<NULL>,381524,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2017-03-24 16:15:31.694,warning,1.1.1.1,GET,/example/uri/5,166,400,44345,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}",<NULL>,163930,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out b/test/expected/test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out
index 05d531a..f80f324 100644
--- a/test/expected/test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out
+++ b/test/expected/test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out
@@ -1,2 +1,2 @@
-87.226.160.250 2022-10-30T00:00:02.000 "HEAD / HTTP/1.1" 301 570
+87.226.160.250 [2022-10-30T00:00:02Z] "HEAD / HTTP/1.1" 301 570
RayID: 761fde4e984e5ab2
diff --git a/test/expected/test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out b/test/expected/test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out
index 52f2372..d1cb873 100644
--- a/test/expected/test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out
+++ b/test/expected/test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out
@@ -1,2 +1,2 @@
-[2013-09-06T20:00:49.124] INFO Starting up service
+[2013-09-06T20:00:49.124817Z] ⋮ <com.example.demo > Starting up service
diff --git a/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out b/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out
index 325af1f..87d2dd4 100644
--- a/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out
+++ b/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out
@@ -1,4 +1,4 @@
--09-06T22:00:49.124 INFO Shutting down service
+-09-06T22:00:49.124817Z INFO Shutting down service
@fields/user: steve@example.com
@fields: { "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"}
diff --git a/test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.err b/test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.err
diff --git a/test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.out b/test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.out
new file mode 100644
index 0000000..c271f3c
--- /dev/null
+++ b/test/expected/test_logfile.sh_00877d2e9dadab916a02005a068410dfbd85ec74.out
@@ -0,0 +1,4 @@
+Nov 03 16:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
+Nov 03 16:23:38 veridian automount[16442]: attempting to mount entry /auto/opt
+Nov 03 16:23:38 veridian automount[7999]: lookup(file): lookup for opt failed
+Nov 03 16:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages
diff --git a/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out b/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out
index 9b2a7cd..1d2ec4e 100644
--- a/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out
+++ b/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out
@@ -1,3 +1,3 @@
-2600-12-03 09:23:00.000000 0:
-2600-12-03 09:23:00.000000 0:
-2600-12-03 09:23:00.000000 0:
+2600-01-03 09:23:00 0:
+00:2 0 00:00:00 0:
+2600-01-03 09:23:00 0:
diff --git a/test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.err b/test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.err
diff --git a/test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.out b/test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.out
new file mode 100644
index 0000000..6e52658
--- /dev/null
+++ b/test/expected/test_logfile.sh_18d9a7beeb09041993d0d6da488fc8192d111bd9.out
@@ -0,0 +1,3 @@
+ File Offset 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ASCII
+ 0 23 44 61 74 65 3a 09 33 2f 39 2f 33 2f 30 85 20 #Date:_3 /9/3/0×_
+ 10 32 0a 30 0a 2_0_
diff --git a/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out b/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out
deleted file mode 100644
index ff67043..0000000
--- a/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out
+++ /dev/null
@@ -1,2 +0,0 @@
- filepath  descriptor  mimetype  content 
-{test_dir}/logfile_syslog.1.gz net.zlib.gzip.header application/json {"name":"logfile_syslog.1","mtime":"2007-11-03T16:23:00.000","comment":""} 
diff --git a/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out b/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out
index 4ed341d..683602c 100644
--- a/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out
+++ b/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out
@@ -1,2 +1,2 @@
-basename(filepath)  descriptor  mimetype  content 
-logfile_syslog.1.gz net.zlib.gzip.header application/json {"name":"logfile_syslog.1","mtime":"2007-11-03T09:23:00.000","comment":""} 
+basename(filepath)   descriptor   mimetype   content  
+logfile_syslog.1.gz net.zlib.gzip.header application/json {"name":"logfile_syslog.1","mtime":"2007-11-03T09:23:00.000","comment":""}
diff --git a/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out b/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out
index 7731fde..3052066 100644
--- a/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out
+++ b/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out
@@ -1,2 +1,2 @@
-#Fields: ? )
-0
+ File Offset 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ASCII
+ 0 23 46 69 65 6c 64 73 3a 20 f9 09 29 0a 30 0a #Fields: _×_)_0_
diff --git a/test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.err b/test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.err
diff --git a/test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.out b/test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.out
new file mode 100644
index 0000000..1925cdc
--- /dev/null
+++ b/test/expected/test_logfile.sh_2e72d848a51ac1eb476b973c61fe43a65d579ba5.out
@@ -0,0 +1,2 @@
+ options_path   options  
+{test_dir}/logfile_syslog.0 {"default-zone":"America/Los_Angeles"}
diff --git a/test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.err b/test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.err
diff --git a/test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.out b/test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.out
new file mode 100644
index 0000000..f625ce6
--- /dev/null
+++ b/test/expected/test_logfile.sh_341e491abcf8772422bafb8b0eaea6492da230f6.out
@@ -0,0 +1,3 @@
+Aug 27 14:22:01 2022 -- 613
+Aug 27 14:22:01 2022 -- 694
+Aug 27 14:22:01 2022 -- 888
diff --git a/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out b/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out
index 8d8b6ce..6a73ecb 100644
--- a/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out
+++ b/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out
@@ -1,2 +1,3 @@
-#Date: 20?0-2-02
-0
+ File Offset 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ASCII
+ 0 23 44 61 74 65 3a 09 32 30 80 30 2d 32 2d 30 32 #Date:_2 0×0-2-02
+ 10 0a 30 0a _0_
diff --git a/test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.err b/test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.err
diff --git a/test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.out b/test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.out
new file mode 100644
index 0000000..409849c
--- /dev/null
+++ b/test/expected/test_logfile.sh_82d65f4dac07b1623f8202444d5b9144096e8243.out
@@ -0,0 +1,3 @@
+192.168.202.254 - - [20/Jul/2009:15:59:26 -0700] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
+192.168.202.254 - - [20/Jul/2009:15:59:29 -0700] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
+192.168.202.254 - - [20/Jul/2009:15:59:29 -0700] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
diff --git a/test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.err b/test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.err
diff --git a/test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.out b/test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.out
new file mode 100644
index 0000000..dbd0803
--- /dev/null
+++ b/test/expected/test_logfile.sh_8a5e754cd471e5fdcdaede49c9290903acd7aad6.out
@@ -0,0 +1,3 @@
+Jul 20 15:59:26 2009 -- 000
+Jul 20 15:59:29 2009 -- 000
+Jul 20 15:59:29 2009 -- 000
diff --git a/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out b/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out
index 0733b93..0635648 100644
--- a/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out
+++ b/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out
@@ -1,3 +1,3 @@
-log_line log_part log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters col_0 col_1
- 0 <NULL> 2021-05-19 08:00:01.000 0 info 0 <NULL> <NULL> <NULL> 1 /abc/def
- 2 <NULL> 2021-05-19 08:00:03.000 2000 info 0 <NULL> <NULL> <NULL> 3 /ghi/jkl
+log_line log_time log_level col_0 col_1 log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters
+ 0 2021-05-19 08:00:01.000 info 1 /abc/def <NULL> 0 0 <NULL> <NULL> <NULL> <NULL>
+ 2 2021-05-19 08:00:03.000 info 3 /ghi/jkl <NULL> 2000 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.err b/test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.err
new file mode 100644
index 0000000..36412d9
--- /dev/null
+++ b/test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.err
@@ -0,0 +1,15 @@
+✘ error: “bad” is not a valid timezone
+ reason: bad not found in timezone database
+ --> command-option:1
+ | :set-file-timezone bad 
+ = note: did you mean one of the following?
+ America/Bahia_Banderas
+ Asia/Ashkhabad
+ Brazil/DeNoronha
+ America/Barbados
+ Asia/Baghdad
+ = help: :set-file-timezone zone [pattern]
+ ══════════════════════════════════════════════════════════════════════
+ Set the timezone to use for log messages that do not include a
+ timezone. The timezone is applied to the focused file or the given
+ glob pattern.
diff --git a/test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.out b/test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_cc368d4b4bb6a9b9c79bd5a70ffa1f2d9d01e286.out
diff --git a/test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.err b/test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.err
diff --git a/test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.out b/test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.out
new file mode 100644
index 0000000..1bf2d2a
--- /dev/null
+++ b/test/expected/test_logfile.sh_ccb0d31813367c8d9dc5b5df383fac5b780711c1.out
@@ -0,0 +1,3 @@
+Aug 27 10:22:01 2022 -- 613
+Aug 27 10:22:01 2022 -- 694
+Aug 27 10:22:01 2022 -- 888
diff --git a/test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.err b/test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.err
diff --git a/test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.out b/test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.out
new file mode 100644
index 0000000..c271f3c
--- /dev/null
+++ b/test/expected/test_logfile.sh_d14f6d8888652321206549df8a9535399f0fd372.out
@@ -0,0 +1,4 @@
+Nov 03 16:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
+Nov 03 16:23:38 veridian automount[16442]: attempting to mount entry /auto/opt
+Nov 03 16:23:38 veridian automount[7999]: lookup(file): lookup for opt failed
+Nov 03 16:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages
diff --git a/test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.err b/test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.err
diff --git a/test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.out b/test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.out
new file mode 100644
index 0000000..6feae9d
--- /dev/null
+++ b/test/expected/test_logfile.sh_de8d59879fe6aa5a012b0748ff77ae26c07aea89.out
@@ -0,0 +1,4 @@
+Nov 03 13:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
+Nov 03 13:23:38 veridian automount[16442]: attempting to mount entry /auto/opt
+Nov 03 13:23:38 veridian automount[7999]: lookup(file): lookup for opt failed
+Nov 03 13:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages
diff --git a/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out b/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out
index 9de987f..f551cf0 100644
--- a/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out
+++ b/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out
@@ -1,11 +1,11 @@
- log_time  log_body 
-2022-09-19 09:24:04.000 tid:1d1f - Mux ID not found in mapping dictionary 
+ log_time   log_body  
+2022-09-19 09:24:04.000 tid:1d1f - Mux ID not found in mapping dictionary
2022-09-19 09:24:04.000 tid:1d1f - Can't handle disconnect with invalid ecid
2022-09-19 09:24:20.000 Entered:_AMMuxedDeviceDisconnected, mux-device:1003 
-2022-09-19 09:24:20.000 Entered:_AMMuxedDeviceDisconnected, mux-device:1003
-2022-09-19 09:24:20.000 Entered:__thr_AMMuxedDeviceDisconnected, mux-device:1003 
+2022-09-19 09:24:20.000 Entered:_AMMuxedDeviceDisconnected, mux-device:1003 
+2022-09-19 09:24:20.000 Entered:__thr_AMMuxedDeviceDisconnected, mux-device:1003
2022-09-19 09:24:20.000 Entered:__thr_AMMuxedDeviceDisconnected, mux-device:1003
2022-09-19 09:24:20.000 tid:191f - Mux ID not found in mapping dictionary 
-2022-09-19 09:24:20.000 tid:1d1f - Mux ID not found in mapping dictionary
-2022-09-19 09:24:20.000 tid:191f - Can't handle disconnect with invalid ecid 
+2022-09-19 09:24:20.000 tid:1d1f - Mux ID not found in mapping dictionary 
+2022-09-19 09:24:20.000 tid:191f - Can't handle disconnect with invalid ecid
2022-09-19 09:24:20.000 tid:1d1f - Can't handle disconnect with invalid ecid
diff --git a/test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.err b/test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.err
diff --git a/test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.out b/test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.out
new file mode 100644
index 0000000..c210568
--- /dev/null
+++ b/test/expected/test_logfile.sh_f171f265d8d45a2707e8b9f53e938f574c614d25.out
@@ -0,0 +1,3 @@
+Aug 27 07:22:01 2022 -- 613
+Aug 27 07:22:01 2022 -- 694
+Aug 27 07:22:01 2022 -- 888
diff --git a/test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.err b/test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.err
new file mode 100644
index 0000000..8b8ac40
--- /dev/null
+++ b/test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.err
@@ -0,0 +1,7 @@
+✘ error: unexpected JSON value
+ --> command-option:1
+ | ;UPDATE access_log SET log_annotations = '1' WHERE log_line = 0
+ --> log_annotations:1
+ | 1 
+ = help: Available Properties
+ (.*)
diff --git a/test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.out b/test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_0ae5840c0758ec95a397493ac3c3d4fabd397a34.out
diff --git a/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out b/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out
index 171d0f7..d2ad552 100644
--- a/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out
+++ b/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out
@@ -1,2 +1,2 @@
-log_tags 
+log_tags 
["#foo"]
diff --git a/test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.err b/test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.err
diff --git a/test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.out b/test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.out
new file mode 100644
index 0000000..f1362fc
--- /dev/null
+++ b/test/expected/test_meta.sh_4283bf9128e0396c4ff141faf68279d5a3d8ac63.out
@@ -0,0 +1,41 @@
+#!lnav -Nf
+# This file is an export of an lnav session. You can type
+# '|/path/to/this/file' in lnav to execute this file and
+# restore the state of the session.
+
+;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.11.2' || ' or later')
+ WHERE lnav_version() < '0.11.2' COLLATE naturalcase
+
+# The files loaded into the session were:
+
+
+# Set this environment variable to override this value or edit this script.
+;INSERT OR IGNORE INTO environ (name, value) VALUES ('LOG_DIR_0', '{top_srcdir_parent}')
+:open $LOG_DIR_0/lnav/test/logfile_access_log.0
+
+:rebuild
+
+
+# The following SQL statements will restore the bookmarks,
+# comments, and tags that were added in the session.
+
+;SELECT total_changes() AS before_mark_changes
+;UPDATE all_logs SET log_mark = 0, log_comment = NULL, log_tags = NULL, log_annotations = '{"org.lnav.test":"Hello, <span style=\"color: #f00\">World</span>!\n"}' WHERE log_time_msecs = 1248130766000 AND log_format = 'access_log' AND log_line_hash = 'v1:3f7e0f10f2473f83b2b4eacccfc9b4e2'
+;UPDATE all_logs SET log_mark = 0, log_comment = NULL, log_tags = '["#foo"]', log_annotations = NULL WHERE log_time_msecs = 1248130769000 AND log_format = 'access_log' AND log_line_hash = 'v1:7ad4831dd06e0d6b0ffd965c7d65285f'
+
+;SELECT 2 - (total_changes() - $before_mark_changes) AS failed_mark_changes
+;SELECT echoln(printf('%sERROR%s: failed to restore %d bookmarks',
+ $ansi_red, $ansi_norm, $failed_mark_changes))
+ WHERE $failed_mark_changes != 0
+
+
+# The following SQL statements will restore the filters that
+# were added in the session.
+
+;REPLACE INTO lnav_view_filters (view_name, enabled, type, language, pattern) VALUES ('log', 0, 'in', 'regex', 'credential status')
+
+
+# The following commands will restore the state of the LOG view.
+
+:switch-to-view log
+:goto 0
diff --git a/test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.err b/test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.err
diff --git a/test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.out b/test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.out
new file mode 100644
index 0000000..25d62c1
--- /dev/null
+++ b/test/expected/test_meta.sh_65325d1bcb58e530a8d681685fea56803f67a2eb.out
@@ -0,0 +1,2 @@
+log_line  log_tags  
+ 46 ["#bro-test"]
diff --git a/test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.err b/test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.err
diff --git a/test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.out b/test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.out
new file mode 100644
index 0000000..fc8266d
--- /dev/null
+++ b/test/expected/test_meta.sh_aae427fe704f131f8466fbfc9e7967c2e874530a.out
@@ -0,0 +1,2 @@
+log_line log_annotations 
+ 0 {"abc":"def"}
diff --git a/test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.err b/test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.err
diff --git a/test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.out b/test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.out
new file mode 100644
index 0000000..9fe4123
--- /dev/null
+++ b/test/expected/test_meta.sh_ad2f396f332d14ed6e95936983bc7e4aeea0bfac.out
@@ -0,0 +1,7 @@
+192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
+ ├ org.lnav.test:
+ ╰ Hello, World!
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
+ 📝 Annotations available, focus on this line and use :annotate to apply them
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
+ 📝 Annotations available, focus on this line and use :annotate to apply them
diff --git a/test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.err b/test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.err
new file mode 100644
index 0000000..cf52340
--- /dev/null
+++ b/test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.err
@@ -0,0 +1,6 @@
+✘ error: invalid JSON
+ reason: parse error: premature EOF
+ --> command-option:1
+ | ;UPDATE access_log SET log_annotations = '{"abc": "def"' WHERE log_line = 0
+ --> log_annotations:1
+ | {"abc": "def" 
diff --git a/test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.out b/test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_b622c04c2bede5371bfa6f2627b0474049ecc5e9.out
diff --git a/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out b/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out
index 8462ae3..6f1aae9 100644
--- a/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out
+++ b/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out
@@ -1,4 +1,4 @@
-log_line  log_comment log_tags 
- 0 Hello, World! ["#foo"] 
+log_line  log_comment  log_tags 
+ 0 Hello, World! ["#foo"]
1 <NULL> <NULL>
 2 <NULL>  <NULL> 
diff --git a/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out b/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out
index a3e5357..6300f44 100644
--- a/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out
+++ b/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out
@@ -1,5 +1,5 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
-192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
├ Hello, World!
└ #foo
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
diff --git a/test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.err b/test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.err
diff --git a/test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.out b/test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.out
new file mode 100644
index 0000000..25d62c1
--- /dev/null
+++ b/test/expected/test_meta.sh_f7c55356df0d71c51eb7629c5a81f347083ce1ef.out
@@ -0,0 +1,2 @@
+log_line  log_tags  
+ 46 ["#bro-test"]
diff --git a/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out b/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out
index 35fadf8..974a0b4 100644
--- a/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out
+++ b/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out
@@ -1,8 +1,8 @@
{
- "wrapper": [
+ "wrapper": [
{"message":""
- select Id from Account where id = $sfid
- ^
- ERROR at Row:1:Column:34
- line 1:34 no viable alternative at character '$'
-""}]}
+   select Id from Account where id = $sfid
+     ^
+   ERROR at Row:1:Column:34
+   line 1:34 no viable alternative at character '$'
+""}]}
diff --git a/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out b/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out
index 613cc3a..18f1d8a 100644
--- a/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out
+++ b/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out
@@ -1,5 +1,5 @@
2015-04-18T13:16:30.003 {
"wrapper": {"msg": r""
Hello,
- World!
-""}}
+
+ ""}}
diff --git a/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out b/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out
index 0ac4c9a..f9264f7 100644
--- a/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out
+++ b/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out
@@ -1,3 +1,2 @@
Hello
World
-
diff --git a/test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.err b/test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.err
diff --git a/test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.out b/test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.out
new file mode 100644
index 0000000..8b17a01
--- /dev/null
+++ b/test/expected/test_prql.sh_06900fac5c2e854b1208320b753fcd43d4ba63a3.out
@@ -0,0 +1,2 @@
+log_line  log_time  log_level  c_ip  cs_method cs_referer cs_uri_query  cs_uri_stem  cs_user_agent cs_username cs_version  sc_bytes  sc_status cs_host log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2009-07-20 22:59:26.000 info 192.168.202.254 GET - <NULL> /vmw/cgi/tramp gPXE/0.9.7 - HTTP/1.0  134 200 <NULL> <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.err b/test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.err
new file mode 100644
index 0000000..2d3ebea
--- /dev/null
+++ b/test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.err
@@ -0,0 +1,10 @@
+✘ error: unable to compile PRQL: from access_log | take abc
+ reason: `take` expected int or range, but found this.access_log.abc
+ = note: Error:
+ ╭─[:1:24]
+ │
+ 1 │ from access_log | take abc
+ │ ─┬─
+ │ ╰─── `take` expected int or range, but found this.access_log.abc
+ ───╯
+
diff --git a/test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.out b/test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_prql.sh_15ebcd913f56cde35af26c6300533d6e76bf1b55.out
diff --git a/test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.err b/test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.err
new file mode 100644
index 0000000..1c7eb34
--- /dev/null
+++ b/test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.err
@@ -0,0 +1,10 @@
+✘ error: unable to compile PRQL: from db.access_log | take abc
+ reason: `take` expected int or range, but found this.access_log.abc
+ = note: Error:
+ ╭─[:1:27]
+ │
+ 1 │ from db.access_log | take abc
+ │ ─┬─
+ │ ╰─── `take` expected int or range, but found this.access_log.abc
+ ───╯
+
diff --git a/test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.out b/test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_prql.sh_451e242cdfa2db9005d4fe752a7b05d1ab5cba29.out
diff --git a/test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.err b/test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.err
diff --git a/test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.out b/test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.out
new file mode 100644
index 0000000..e73b017
--- /dev/null
+++ b/test/expected/test_prql.sh_45d57a042092ffdcd28ea35a892f02859e78f33d.out
@@ -0,0 +1,2 @@
+log_line  log_time log_level  c_ip cs_method cs_referer cs_uri_query  cs_uri_stem cs_user_agent cs_username cs_version sc_bytes sc_status cs_host log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2009-07-20 22:59:26.000 info 192.168.202.254 GET - <NULL> /vmw/cgi/tramp gPXE/0.9.7 - HTTP/1.0  134 200 <NULL> <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.err b/test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.err
diff --git a/test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.out b/test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.out
new file mode 100644
index 0000000..3c62603
--- /dev/null
+++ b/test/expected/test_prql.sh_5aea925b5ad95f55ce6b1b07b7046bc3d7310137.out
@@ -0,0 +1,4 @@
+ tslice   v  
+2011-11-03 00:19:00.000 {"a.fsdn.com":33,"Other":31,"ad.doubleclick.net":10,"www.goo⋯"\xaf"dia.com":6,"s0.2mdn.net":5,"googleads.g.doubleclick.net":3}
+2011-11-03 00:20:00.000 {"www.bro-ids.org":24,"www.google.com":15,"search.twitter.c⋯"\x8b""\xaf"ds.org":2,"ad.doubleclick.net":1,"cont-sjl-1.pandora.com":1}
+2011-11-03 00:21:00.000 {"www.google.com":2,"ajax.googleapis.com":1,"api.twitter.com":1,"search.twitter.com":1,"www.bro-ids.org":1} 
diff --git a/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err b/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err
index bbcd290..e69de29 100644
--- a/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err
+++ b/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err
@@ -1,3 +0,0 @@
-⚠ warning: not deleting regex101 entry “zpEnjV”
- reason: delete code is not known for this entry
- = note: formats created by importing a regex101.com entry will not have a delete code
diff --git a/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out b/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out
index 7f5397d..8035940 100644
--- a/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out
+++ b/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out
@@ -3,7 +3,7 @@
"unit_test_log": {
"regex": {
"std": {
- "pattern": "\\[(?<timestamp>\\d+\\/\\d+\\/\\d+ \\d+:\\d+:\\d+) (?<jobserver>[\\w.]+) (?<workqueue>[\\w.]+) (?<processid>\\d+)\\] (?<body>.*)$"
+ "pattern": "(?<timestamp>[A-Za-z]+ [A-Za-z]+ +[0-9]+ [0-9]+:[0-9]+:[0-9]+ [0-9]+) : (?<level>[A-Z][a-z]+): (?<seq>\\([0-9]+\\) )?(?<body>.*)$"
}
}
}
diff --git a/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err b/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err
index 32c87d4..7450da8 100644
--- a/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err
+++ b/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err
@@ -1,34 +1,13 @@
-✘ error: invalid value “/unit_test_log/value/jobserver”
- reason: no patterns have a capture named “jobserver”
- = note: the following captures are available:
-
- = help: values are populated from captures in patterns, so at least one pattern must have a capture with this value name
-✘ error: invalid value “/unit_test_log/value/processid”
- reason: no patterns have a capture named “processid”
- = note: the following captures are available:
-
- = help: values are populated from captures in patterns, so at least one pattern must have a capture with this value name
-✘ error: invalid value “/unit_test_log/value/timestamp”
- reason: no patterns have a capture named “timestamp”
- = note: the following captures are available:
-
- = help: values are populated from captures in patterns, so at least one pattern must have a capture with this value name
-✘ error: invalid value “/unit_test_log/value/workqueue”
- reason: no patterns have a capture named “workqueue”
- = note: the following captures are available:
-
- = help: values are populated from captures in patterns, so at least one pattern must have a capture with this value name
-✘ error: invalid sample log message: "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}"
- reason: sample does not match any patterns
- --> regex101-home/.lnav/formats/installed/unit_test_log.json:26
- = note: the following shows how each pattern matched this sample:
- [03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {"ELAPSED":"0.011","LEVEL":"info","MESSAGE":"finished in 0.011\n","PREFIX":"YFgyWQriCmsAAofJAAAAHg","ROUTINGKEY":"EXAMPLE1366.Example.Events._Publish"}
- = note: std = “”
-
-✘ error: invalid sample log message: "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}"
- reason: sample does not match any patterns
- --> regex101-home/.lnav/formats/installed/unit_test_log.json:30
- = note: the following shows how each pattern matched this sample:
- [03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {"ELAPSED":"0.011","LEVEL":"info","MESSAGE":"finished in 0.011\n","PREFIX":"YFgyWQriCmsAAofJAAAAHg","ROUTINGKEY":"EXAMPLE1366.Example.Events._Publish"}
- = note: std = “”
-
+✘ error: invalid pattern: “/unit_test_log/regex/std”
+ reason: no timestamp capture found in the pattern
+ = help: all log messages need a timestamp
+✘ error: invalid value for property “/unit_test_log/timestamp-field”
+ reason: “timestamp” was not found in the pattern at /unit_test_log/regex/std
+✘ error: invalid value for property “/unit_test_log/timestamp-field”
+ reason: “timestamp” was not found in the pattern at /unit_test_log/regex/std
+✘ error: invalid value for property “/unit_test_log/timestamp-field”
+ reason: “timestamp” was not found in the pattern at /unit_test_log/regex/std
+✘ error: invalid value for property “/unit_test_log/timestamp-field”
+ reason: “timestamp” was not found in the pattern at /unit_test_log/regex/std
+✘ error: invalid value for property “/unit_test_log/timestamp-field”
+ reason: “timestamp” was not found in the pattern at /unit_test_log/regex/std
diff --git a/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err b/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err
index 450b99b..ec9b9c5 100644
--- a/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err
+++ b/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err
@@ -1,5 +1,5 @@
✘ error: expecting an operation to perform on the std regex using regex101.com
 = help: the available subcommands are:
- • push: create/update an entry for this regex on regex101.com
- • pull: create a patch format file for this regular expression based on the entry in regex101.com
- • delete: delete the entry regex101.com that was created by a push operation
+ • push: create/update an entry for this regex on regex101.com
+ • pull: create a patch format file for this regular expression based on the entry in regex101.com
+ • delete: delete the entry regex101.com that was created by a push operation
diff --git a/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err b/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err
index db47111..e3e6069 100644
--- a/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err
+++ b/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err
@@ -1,3 +1,3 @@
✘ error: expecting an operation to perform on the std regular expression
 = help: the available subcommands are:
- • regex101: use regex101.com to edit this regular expression
+ • regex101: use regex101.com to edit this regular expression
diff --git a/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out b/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out
index c06f523..b4c5d30 100644
--- a/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out
+++ b/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out
@@ -4,30 +4,35 @@
"description": "Format file generated from regex101 entry -- https://regex101.com/r/zpEnjV/2",
"regex": {
"std": {
- "pattern": "\\[(?<timestamp>\\d+\\/\\d+\\/\\d+ \\d+:\\d+:\\d+) (?<jobserver>[\\w.]+) (?<workqueue>[\\w.]+) (?<processid>\\d+)\\] (?<body>.*)$"
+ "pattern": "(?<timestamp>[A-Za-z]+ [A-Za-z]+ +[0-9]+ [0-9]+:[0-9]+:[0-9]+ [0-9]+) : (?<level>[A-Z][a-z]+): (?<seq>\\([0-9]+\\) )?(?<body>.*)$"
}
},
"value": {
- "jobserver": {
+ "level": {
"kind": "string"
},
- "processid": {
+ "seq": {
"kind": "string"
},
"timestamp": {
"kind": "string"
- },
- "workqueue": {
- "kind": "string"
}
},
"sample": [
{
- "line": "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}"
+ "line": "Fri Jul 15 23:12:58 2016 : Info: Loaded virtual server <default>"
+ },
+ {
+ "line": "Fri Jul 15 23:12:58 2016 : Warning: Ignoring \"sql\" (see raddb/mods-available/README.rst)"
+ },
+ {
+ "line": "Wed Oct 18 22:17:43 2023 : Info: (102211) radutmp: NAS wifi-router rebooted (Accounting-Off packet seen)"
+ },
+ {
+ "line": "Fri Oct 20 18:50:05 2023 : Auth: (105290) Login OK: [iphonese3] (from client wifi-router port 0 via TLS tunnel)"
},
{
- "description": "sample 1",
- "line": "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}"
+ "line": "Fri Oct 20 18:50:05 2023 : Auth: (105291) Login OK: [iphonese3] (from client wifi-router port 197 cli 22-2E-28-D6-F5-CC)"
}
]
}
diff --git a/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err b/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err
index 85a97ba..ea8c31d 100644
--- a/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err
+++ b/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err
@@ -2,6 +2,6 @@
 = note: this regex is currently associated with the following regex101.com entry:
https://regex101.com/r/zpEnjV
 = help: the available subcommands are:
- • push: create/update an entry for this regex on regex101.com
- • pull: create a patch format file for this regular expression based on the entry in regex101.com
- • delete: delete the entry regex101.com that was created by a push operation
+ • push: create/update an entry for this regex on regex101.com
+ • pull: create a patch format file for this regular expression based on the entry in regex101.com
+ • delete: delete the entry regex101.com that was created by a push operation
diff --git a/test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.err b/test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.err
diff --git a/test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.out b/test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.out
new file mode 100644
index 0000000..2a19a15
--- /dev/null
+++ b/test/expected/test_sessions.sh_33ab03afda2c9331a289fcbd1abdbc1c37b2e87b.out
@@ -0,0 +1,11 @@
+2011-11-03 00:20:39.348046 ⋮ 192.168.2.76 52099 192.150.187.43 80 2 GET www.bro-ids.org /frames/header.html http://git.bro-ids.org/ 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 3516 200 OK - - (empty) - - - - - - Fzea5XNhn9eNRMvx7 - text/html
+2011-11-03 00:20:39.448670 ⋮ 192.168.2.76 52109 192.150.187.43 80 1 GET www.bro-ids.org /frames/footer.html http://git.bro-ids.org/ 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6695 200 OK - - (empty) - - - - - - FkCp6k4tqksK3tiSy7 - text/html
+2011-11-03 00:20:39.463465 ⋮ 192.168.2.76 52099 192.150.187.43 80 3 GET www.bro-ids.org /images/logo-bro-small.png http://www.bro-ids.org/frames/header.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6075 200 OK - - (empty) - - - - - - Fw6FlF4WtotJFNXmHb - image/png
+2011-11-03 00:20:39.786857 ⋮ 192.168.2.76 52110 199.59.148.201 80 1 GET search.twitter.com /search.json?&q=#BroIDS&rpp=2&callback=jsonp1320279639636 http://www.bro-ids.org/frames/footer.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 1543 200 OK - - (empty) - - - - - - Feut0t346XEHsQ0OC7 - text/plain
+2011-11-03 00:21:12.372857 ⋮ 192.168.2.76 52111 192.150.187.43 80 1 GET www.bro-ids.org /research/index.html http://www.bro-ids.org/frames/header.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 47728 200 OK - - (empty) - - - - - - FOze0l2aT79uPyMiv7 - text/html
+2011-11-03 00:21:13.121725 ⋮ 192.168.2.76 52087 209.85.145.95 80 7 GET ajax.googleapis.com /ajax/services/feed/load?v=1.0&callback=jsonp1320279672539&q=http://blog.bro-ids.org/feeds/posts/default&num=5 http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6584 200 OK - - (empty) - - - - - - FXEXQEMH8DrEuAdg8 - text/plain
+2011-11-03 00:21:13.123842 ⋮ 192.168.2.76 52089 74.125.225.83 80 4 GET www.google.com /uds/css/clear.gif http://www.google.com/uds/api/search/1.0/473bb688d0c0dd605119ad983f5a4386/default+en.css 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 0 304 Not Modified - - (empty) - - - - - - - - -
+2011-11-03 00:21:13.123121 ⋮ 192.168.2.76 52084 74.125.225.83 80 9 GET www.google.com /uds/css/small-logo.png http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 0 304 Not Modified - - (empty) - - - - - - - - -
+2011-11-03 00:21:13.198815 ⋮ 192.168.2.76 52112 199.59.148.201 80 1 GET search.twitter.com /search.json?&q=#BroIDS&rpp=2&callback=jsonp1320279672537 http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 1543 200 OK - - (empty) - - - - - - Fzjgwn8xXem3Esvk - text/plain
+#close 2017-04-16-21-36-10
+2011-11-03 00:21:13.204466 ⋮ 192.168.2.76 52113 199.59.148.20 80 1 GET api.twitter.com /1/statuses/user_timeline.json?screen_name=Bro_IDS&count=2&include_rts=1&callback=jsonp1320279672538 http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6095 200 OK - - (empty) - - - - - - FAVIuu2XZQyVznfnq8 - text/plain
diff --git a/test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.err b/test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.err
diff --git a/test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.out b/test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.out
new file mode 100644
index 0000000..4023598
--- /dev/null
+++ b/test/expected/test_sessions.sh_639b83ce8f67975dfdc7086946ec287b43b6fa8c.out
@@ -0,0 +1,89 @@
+[
+ {
+ "top_meta": {
+ "time": "2009-07-20 22:59:29.000",
+ "file": "{test_dir}/logfile_access_log.0",
+ "anchor": "#middle",
+ "breadcrumbs": [
+ {
+ "display_value": "⊑ middle",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "middle"
+ }
+ ]
+ },
+ {
+ "display_value": "2009-07-20T22:59:29.000",
+ "search_placeholder": "(Enter an absolute or relative time)",
+ "possibilities": [
+ {
+ "display_value": "-1 day"
+ },
+ {
+ "display_value": "-1h"
+ },
+ {
+ "display_value": "-30m"
+ },
+ {
+ "display_value": "-15m"
+ },
+ {
+ "display_value": "-5m"
+ },
+ {
+ "display_value": "-1m"
+ },
+ {
+ "display_value": "+1m"
+ },
+ {
+ "display_value": "+5m"
+ },
+ {
+ "display_value": "+15m"
+ },
+ {
+ "display_value": "+30m"
+ },
+ {
+ "display_value": "+1h"
+ },
+ {
+ "display_value": "+1 day"
+ }
+ ]
+ },
+ {
+ "display_value": "access_log",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "access_log"
+ }
+ ]
+ },
+ {
+ "display_value": "logfile_access_log.0[2]",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "logfile_access_log.0"
+ }
+ ]
+ },
+ {
+ "display_value": "192.168.202.254",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "192.168.202.254"
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out b/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out
index eb9e677..8b72915 100644
--- a/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out
+++ b/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out
@@ -3,8 +3,8 @@
# '|/path/to/this/file' in lnav to execute this file and
# restore the state of the session.
-;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.11.2' || ' or later')
- WHERE lnav_version() < '0.11.2' COLLATE naturalcase
+;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.12.2' || ' or later')
+ WHERE lnav_version() < '0.12.2' COLLATE naturalcase
# The files loaded into the session were:
@@ -21,7 +21,7 @@
# comments, and tags that were added in the session.
;SELECT total_changes() AS before_mark_changes
-;UPDATE all_logs SET log_mark = 1, log_comment = NULL, log_tags = NULL WHERE log_time_msecs = 1248130769000 AND log_format = 'access_log' AND log_line_hash = 'v1:b05c1bdfe75cde41e151c89087e31951'
+;UPDATE all_logs SET log_mark = 1, log_comment = NULL, log_tags = NULL, log_annotations = NULL WHERE log_time_msecs = 1248130769000 AND log_format = 'access_log' AND log_line_hash = 'v1:b05c1bdfe75cde41e151c89087e31951'
;SELECT 1 - (total_changes() - $before_mark_changes) AS failed_mark_changes
;SELECT echoln(printf('%sERROR%s: failed to restore %d bookmarks',
diff --git a/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out b/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out
deleted file mode 100644
index a1e2e6f..0000000
--- a/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out
+++ /dev/null
@@ -1,33 +0,0 @@
-#!lnav -Nf
-# This file is an export of an lnav session. You can type
-# '|/path/to/this/file' in lnav to execute this file and
-# restore the state of the session.
-
-;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.11.0' || ' or later')
- WHERE lnav_version() < '0.11.0' COLLATE naturalcase
-
-# The files loaded into the session were:
-
-
-;INSERT OR IGNORE INTO environ (name, value) VALUES ('LOG_DIR_0', '{top_srcdir_parent}')
-:open $LOG_DIR_0/lnav/test/logfile_access_log.0
-
-:rebuild
-
-
-# The following SQL statements will restore the bookmarks,
-# comments, and tags that were added in the session.
-
-;SELECT total_changes() AS before_mark_changes
-;UPDATE all_logs SET log_mark = 1, log_comment = NULL, log_tags = NULL WHERE log_time_msecs = 1248130769000 AND log_format = 'access_log' AND log_line_hash = 'v1:b05c1bdfe75cde41e151c89087e31951'
-
-;SELECT 1 - (total_changes() - $before_mark_changes) AS failed_mark_changes
-;SELECT echoln(printf('%sERROR%s: failed to restore %d bookmarks',
- $ansi_red, $ansi_norm, $failed_mark_changes))
- WHERE $failed_mark_changes != 0
-
-
-# The following commands will restore the state of the LOG view.
-
-:switch-to-view log
-:goto 1
diff --git a/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out b/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out
index 3c84ede..20f826b 100644
--- a/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out
+++ b/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out
@@ -9,3 +9,4 @@ db
schema
pretty
spectro
+gantt
diff --git a/test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.err b/test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.err
diff --git a/test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.out b/test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.out
new file mode 100644
index 0000000..0e301c3
--- /dev/null
+++ b/test/expected/test_sessions.sh_ba1ded92531350668301431db64df2d2f4a2e9ee.out
@@ -0,0 +1,5 @@
+192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
+ ├ org.lnav.test:
+ ╰ Hello, World!
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
+192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
diff --git a/test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.err b/test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.err
diff --git a/test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.out b/test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.out
new file mode 100644
index 0000000..2a19a15
--- /dev/null
+++ b/test/expected/test_sessions.sh_e57697be4d81ac8e5b2b2fa84f919b2d494978f3.out
@@ -0,0 +1,11 @@
+2011-11-03 00:20:39.348046 ⋮ 192.168.2.76 52099 192.150.187.43 80 2 GET www.bro-ids.org /frames/header.html http://git.bro-ids.org/ 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 3516 200 OK - - (empty) - - - - - - Fzea5XNhn9eNRMvx7 - text/html
+2011-11-03 00:20:39.448670 ⋮ 192.168.2.76 52109 192.150.187.43 80 1 GET www.bro-ids.org /frames/footer.html http://git.bro-ids.org/ 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6695 200 OK - - (empty) - - - - - - FkCp6k4tqksK3tiSy7 - text/html
+2011-11-03 00:20:39.463465 ⋮ 192.168.2.76 52099 192.150.187.43 80 3 GET www.bro-ids.org /images/logo-bro-small.png http://www.bro-ids.org/frames/header.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6075 200 OK - - (empty) - - - - - - Fw6FlF4WtotJFNXmHb - image/png
+2011-11-03 00:20:39.786857 ⋮ 192.168.2.76 52110 199.59.148.201 80 1 GET search.twitter.com /search.json?&q=#BroIDS&rpp=2&callback=jsonp1320279639636 http://www.bro-ids.org/frames/footer.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 1543 200 OK - - (empty) - - - - - - Feut0t346XEHsQ0OC7 - text/plain
+2011-11-03 00:21:12.372857 ⋮ 192.168.2.76 52111 192.150.187.43 80 1 GET www.bro-ids.org /research/index.html http://www.bro-ids.org/frames/header.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 47728 200 OK - - (empty) - - - - - - FOze0l2aT79uPyMiv7 - text/html
+2011-11-03 00:21:13.121725 ⋮ 192.168.2.76 52087 209.85.145.95 80 7 GET ajax.googleapis.com /ajax/services/feed/load?v=1.0&callback=jsonp1320279672539&q=http://blog.bro-ids.org/feeds/posts/default&num=5 http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6584 200 OK - - (empty) - - - - - - FXEXQEMH8DrEuAdg8 - text/plain
+2011-11-03 00:21:13.123842 ⋮ 192.168.2.76 52089 74.125.225.83 80 4 GET www.google.com /uds/css/clear.gif http://www.google.com/uds/api/search/1.0/473bb688d0c0dd605119ad983f5a4386/default+en.css 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 0 304 Not Modified - - (empty) - - - - - - - - -
+2011-11-03 00:21:13.123121 ⋮ 192.168.2.76 52084 74.125.225.83 80 9 GET www.google.com /uds/css/small-logo.png http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 0 304 Not Modified - - (empty) - - - - - - - - -
+2011-11-03 00:21:13.198815 ⋮ 192.168.2.76 52112 199.59.148.201 80 1 GET search.twitter.com /search.json?&q=#BroIDS&rpp=2&callback=jsonp1320279672537 http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 1543 200 OK - - (empty) - - - - - - Fzjgwn8xXem3Esvk - text/plain
+#close 2017-04-16-21-36-10
+2011-11-03 00:21:13.204466 ⋮ 192.168.2.76 52113 199.59.148.20 80 1 GET api.twitter.com /1/statuses/user_timeline.json?screen_name=Bro_IDS&count=2&include_rts=1&callback=jsonp1320279672538 http://www.bro-ids.org/research/index.html 1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 0 6095 200 OK - - (empty) - - - - - - FAVIuu2XZQyVznfnq8 - text/plain
diff --git a/test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.err b/test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.err
diff --git a/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out b/test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.out
index 0473e9d..05b7505 100644
--- a/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out
+++ b/test/expected/test_sessions.sh_e988439404f2e97604641c8d087855f3efe052e4.out
@@ -3,12 +3,13 @@
# '|/path/to/this/file' in lnav to execute this file and
# restore the state of the session.
-;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.11.0' || ' or later')
- WHERE lnav_version() < '0.11.0' COLLATE naturalcase
+;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.12.2' || ' or later')
+ WHERE lnav_version() < '0.12.2' COLLATE naturalcase
# The files loaded into the session were:
+# Set this environment variable to override this value or edit this script.
;INSERT OR IGNORE INTO environ (name, value) VALUES ('LOG_DIR_0', '{test_dir}')
:open $LOG_DIR_0/support-dump/logfile_access_log.0
@@ -19,7 +20,7 @@
# comments, and tags that were added in the session.
;SELECT total_changes() AS before_mark_changes
-;UPDATE all_logs SET log_mark = 1, log_comment = NULL, log_tags = NULL WHERE log_time_msecs = 1248130769000 AND log_format = 'access_log' AND log_line_hash = 'v1:b05c1bdfe75cde41e151c89087e31951'
+;UPDATE all_logs SET log_mark = 0, log_comment = NULL, log_tags = NULL, log_annotations = '{"org.lnav.test":"Hello, <span style=\"color: #f00\">World</span>!\n"}' WHERE log_time_msecs = 1248130766000 AND log_format = 'access_log' AND log_line_hash = 'v1:3f7e0f10f2473f83b2b4eacccfc9b4e2'
;SELECT 1 - (total_changes() - $before_mark_changes) AS failed_mark_changes
;SELECT echoln(printf('%sERROR%s: failed to restore %d bookmarks',
@@ -27,7 +28,13 @@
WHERE $failed_mark_changes != 0
+# The following SQL statements will restore the filters that
+# were added in the session.
+
+;REPLACE INTO lnav_view_filters (view_name, enabled, type, language, pattern) VALUES ('log', 0, 'in', 'regex', 'credential status')
+
+
# The following commands will restore the state of the LOG view.
:switch-to-view log
-:goto 1
+:goto 0
diff --git a/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out b/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out
index fd072bc..0dd4080 100644
--- a/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out
+++ b/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out
@@ -1,7 +1,8 @@
~ foo
til ^
wsp ^
+eof ^
eval -- ../test foo
split:
- 0 -- ../test
- 1 -- foo
+ 0 ^ -- ../test
+ 1 ^-^ -- foo
diff --git a/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out b/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out
index b7ba9e8..2081fa3 100644
--- a/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out
+++ b/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out
@@ -1,7 +1,8 @@
~nonexistent/bar baz
til ^----------^
wsp ^
+eof ^
eval -- ~nonexistent/bar baz
split:
- 0 -- ~nonexistent/bar
- 1 -- baz
+ 0 ^--------------^ -- ~nonexistent/bar
+ 1 ^-^ -- baz
diff --git a/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out b/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out
index 85cca78..8d6bcc0 100644
--- a/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out
+++ b/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out
@@ -1,2 +1,2 @@
\
-err ^
+err ^ -- invalid escape
diff --git a/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out b/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out
index f677b17..6869e6d 100644
--- a/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out
+++ b/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out
@@ -1,5 +1,6 @@
${FOO}
qrf ^----^
+eof ^
eval -- bar
split:
- 0 -- bar
+ 0 ^----^ -- bar
diff --git a/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out b/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out
index 630eb1c..46009ec 100644
--- a/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out
+++ b/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out
@@ -2,6 +2,7 @@
dst ^
qrf ^----^
den ^
+eof ^
eval -- "abc xyz 123"
split:
- 0 -- abc xyz 123
+ 0 ^--------------^ -- abc xyz 123
diff --git a/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out b/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out
index 759e75b..5eda1e5 100644
--- a/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out
+++ b/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out
@@ -1,6 +1,7 @@
'abc $DEF 123'
sst ^
sen ^
+eof ^
eval -- 'abc $DEF 123'
split:
- 0 -- abc $DEF 123
+ 0 ^------------^ -- abc $DEF 123
diff --git a/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out b/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out
index 2cbee1a..6ea7ec2 100644
--- a/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out
+++ b/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out
@@ -2,6 +2,7 @@
dst ^
ref ^--^
den ^
+eof ^
eval -- "abc xyz 123"
split:
- 0 -- abc xyz 123
+ 0 ^------------^ -- abc xyz 123
diff --git a/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out b/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out
index 9a2b2a7..1fc686b 100644
--- a/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out
+++ b/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out
@@ -1,6 +1,7 @@
"def"
dst ^
den ^
+eof ^
eval -- "def"
split:
- 0 -- def
+ 0 ^---^ -- def
diff --git a/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out b/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out
index 30a7791..465073b 100644
--- a/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out
+++ b/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out
@@ -1,5 +1,6 @@
$FOO
ref ^--^
+eof ^
eval -- bar
split:
- 0 -- bar
+ 0 ^--^ -- bar
diff --git a/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out b/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out
index a2ae7ff..8feba4e 100644
--- a/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out
+++ b/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out
@@ -1,6 +1,7 @@
'abc'
sst ^
sen ^
+eof ^
eval -- 'abc'
split:
- 0 -- abc
+ 0 ^---^ -- abc
diff --git a/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out b/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out
index def9d5c..5f35534 100644
--- a/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out
+++ b/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out
@@ -2,8 +2,9 @@
wsp ^
ref ^--^
wsp ^^
+eof ^
eval -- abc xyz 123
split:
- 0 -- abc
- 1 -- xyz
- 2 -- 123
+ 0 ^-^ -- abc
+ 1 ^--^ -- xyz
+ 2 ^-^ -- 123
diff --git a/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out b/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out
index 9b84999..eece1b6 100644
--- a/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out
+++ b/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out
@@ -1,6 +1,7 @@
'"'
sst ^
sen ^
+eof ^
eval -- '"'
split:
- 0 -- "
+ 0 ^-^ -- "
diff --git a/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out b/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out
index a668d4d..41a0f64 100644
--- a/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out
+++ b/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out
@@ -1,6 +1,7 @@
"'"
dst ^
den ^
+eof ^
eval -- "'"
split:
- 0 -- '
+ 0 ^-^ -- '
diff --git a/test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.err b/test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.err
diff --git a/test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.out b/test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.out
new file mode 100644
index 0000000..9a7083d
--- /dev/null
+++ b/test/expected/test_shlexer.sh_e99fe1cde36b85ebbab86ca820f55ec861cdc20b.out
@@ -0,0 +1,6 @@
+ abc
+wsp ^
+eof ^
+eval -- abc
+split:
+ 0 ^-^ -- abc
diff --git a/test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.err b/test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.err
diff --git a/test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.out b/test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.out
new file mode 100644
index 0000000..4b7bf9a
--- /dev/null
+++ b/test/expected/test_sql.sh_09416e332d9b2f76743836b72e71b6e4492e594e.out
@@ -0,0 +1,3 @@
+group_concat(cs_uri_stem),sc_status
+"/vmw/cgi/tramp,/vmw/vSphere/default/vmkernel.gz",200
+/vmw/vSphere/default/vmkboot.gz,404
diff --git a/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out b/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out
index 386f1e3..332a12e 100644
--- a/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out
+++ b/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out
@@ -1,2 +1,2 @@
- lnav_top_file() 
+ lnav_top_file()  
{test_dir}/logfile_access_log.0
diff --git a/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out b/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out
index 4acb940..a8b3bc8 100644
--- a/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out
+++ b/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out
@@ -1,2 +1,2 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters  c_ip cs_bytes cs_method cs_uri_query  cs_uri_stem cs_username cs_vars cs_version s_app s_core s_pid s_req s_runtime s_switches s_worker_reqs sc_bytes sc_header_bytes sc_headers sc_status 
- 0  <NULL> 2016-03-13 22:49:12.000  0 info   0  <NULL>  <NULL>  <NULL> 127.0.0.1  696 POST   <NULL> /update_metrics     38 HTTP/1.1  0   3  88185  1  0.129  1  1  47  378  9    200 
+log_line  log_time  log_level  c_ip   cs_bytes  cs_method cs_uri_query  cs_uri_stem  cs_username  cs_vars  cs_version s_app s_core s_pid s_req s_runtime  s_switches s_worker_reqs  sc_bytes  sc_header_bytes sc_headers sc_status log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2016-03-13 22:49:12.000 info 127.0.0.1  696 POST <NULL> /update_metrics  38 HTTP/1.1 0 3 88185 1  0.129  1 1  47  378  9 200 <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.err b/test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.err
diff --git a/test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.out b/test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.out
new file mode 100644
index 0000000..b3c6c23
--- /dev/null
+++ b/test/expected/test_sql.sh_19c92996bcc884bfdb70e3d24606cf5070556a74.out
@@ -0,0 +1,46 @@
+[
+ {
+ "log_line": 0,
+ "log_time": "2014-06-15 01:04:52.000",
+ "log_level": "info",
+ "contextid": "82e87195d704585501",
+ "data": "http://localhost:8086|/|<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" ID=\"s2daac0735bf476f4560aab81104b623bedfb0cbc0\" InResponseTo=\"84cbf2be33f6410bbe55877545a93f02\" Version=\"2.0\" IssueInstant=\"2014-06-15T01:04:52Z\" Destination=\"http://localhost:8086/api/1/rest/admin/org/530e42ccd6f45fd16d0d0717/saml/consume\"><saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://openam.vagrant.dev/openam</saml:Issuer><samlp:Status xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\">\\n<samlp:StatusCode xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\"\\nValue=\"urn:oasis:names:tc:SAML:2.0:status:Success\">\\n</samlp:StatusCode>\\n</samlp:Status><saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"s2a0bee0da937e236167e99b209802056033816ac2\" IssueInstant=\"2014-06-15T01:04:52Z\" Version=\"2.0\">\\n<saml:Issuer>http://openam.vagrant.dev/openam</saml:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\\n<ds:SignedInfo>\\n<ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\\n<ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\\n<ds:Reference URI=\"#s2a0bee0da937e236167e99b209802056033816ac2\">\\n<ds:Transforms>\\n<ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\\n<ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\\n</ds:Transforms>\\n<ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\\n<ds:DigestValue>4uSmVzjovUdQd3px/RcnoxQBsqE=</ds:DigestValue>\\n</ds:Reference>\\n</ds:SignedInfo>\\n<ds:SignatureValue>\\nhm/grge36uA6j1OWif2bTcvVTwESjmuJa27NxepW0AiV5YlcsHDl7RAIk6k/CjsSero3bxGbm56m\\nYncOEi9F1Tu7dS0bfx+vhm/kKTPgwZctf4GWn4qQwP+KeoZywbNj9ShsYJ+zPKzXwN4xBSuPjMxP\\nNf5szzjEWpOndQO/uDs=\\n</ds:SignatureValue>\\n<ds:KeyInfo>\\n<ds:X509Data>\\n<ds:X509Certificate>\\nMIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh\\nbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w\\nZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw\\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK\\nBgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B\\nAQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+\\nRkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY\\nJs0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U\\nQzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA\\ncGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC\\n/FfwWigmrW0Y0Q==\\n</ds:X509Certificate>\\n</ds:X509Data>\\n</ds:KeyInfo>\\n</ds:Signature><saml:Subject>\\n<saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\" NameQualifier=\"http://openam.vagrant.dev/openam\">user@example.com</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\">\\n<saml:SubjectConfirmationData InResponseTo=\"84cbf2be33f6410bbe55877545a93f02\" NotOnOrAfter=\"2014-06-15T01:14:52Z\" Recipient=\"http://localhost:8086/api/1/rest/admin/org/530e42ccd6f45fd16d0d0717/saml/consume\"/></saml:SubjectConfirmation>\\n</saml:Subject><saml:Conditions NotBefore=\"2014-06-15T00:54:52Z\" NotOnOrAfter=\"2014-06-15T01:14:52Z\">\\n<saml:AudienceRestriction>\\n<saml:Audience>http://localhost:8086</saml:Audience>\\n</saml:AudienceRestriction>\\n</saml:Conditions>\\n<saml:AuthnStatement AuthnInstant=\"2014-06-15T01:00:25Z\" SessionIndex=\"s2f9b4d4b453d12b40ef3905cc959cdb40579c2301\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion></samlp:Response>",
+ "domain": "dc=openam",
+ "hostname": "192.168.33.1\t",
+ "ipaddr": "Not Available",
+ "loggedby": "cn=dsameuser,ou=DSAME Users,dc=openam",
+ "loginid": "id=openamuser,ou=user,dc=openam",
+ "messageid": "SAML2-37",
+ "modulename": "SAML2.access",
+ "nameid": "user@example.com",
+ "log_part": null,
+ "log_idle_msecs": 0,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
+ },
+ {
+ "log_line": 1,
+ "log_time": "2014-06-15 01:04:52.000",
+ "log_level": "trace",
+ "contextid": "ec5708a7f199678a01",
+ "data": "vagrant|/",
+ "domain": "dc=openam",
+ "hostname": "127.0.1.1\t",
+ "ipaddr": "Not Available",
+ "loggedby": "cn=dsameuser,ou=DSAME Users,dc=openam",
+ "loginid": "cn=dsameuser,ou=DSAME Users,dc=openam",
+ "messageid": "COT-22",
+ "modulename": "COT.access",
+ "nameid": "Not Available",
+ "log_part": null,
+ "log_idle_msecs": 0,
+ "log_mark": 0,
+ "log_comment": null,
+ "log_tags": null,
+ "log_annotations": null,
+ "log_filters": null
+ }
+]
diff --git a/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out b/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out
index df0e6d7..391a786 100644
--- a/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out
+++ b/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out
@@ -1,3 +1,3 @@
-id first_name last_name age 
- 0 Phil  Myman   30 
- 1 Lem  Hewitt   35
+id first_name last_name  age  
+ 0 Phil Myman   30
+ 1 Lem Hewitt  35
diff --git a/test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.err b/test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.err
diff --git a/test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.out b/test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.out
new file mode 100644
index 0000000..2c56abe
--- /dev/null
+++ b/test/expected/test_sql.sh_1f892b85dc9008c7b3bab7fdf8aa372a6d5ae22c.out
@@ -0,0 +1,23 @@
+[
+ {
+ "cs_headers": {
+ "User-Agent": "Mozilla/5.0 (Linux; Android 4.4.4; SM-G900V Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36",
+ "Referer": "http://example.com/Search/SearchResults.pg?informationRecipient.languageCode.c=en",
+ "Host": "xzy.example.com"
+ }
+ },
+ {
+ "cs_headers": {
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36",
+ "Referer": null,
+ "Host": "example.hello.com"
+ }
+ },
+ {
+ "cs_headers": {
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36",
+ "Referer": null,
+ "Host": "hello.example.com"
+ }
+ }
+]
diff --git a/test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.err b/test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.err
diff --git a/test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.out b/test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.out
new file mode 100644
index 0000000..85a077d
--- /dev/null
+++ b/test/expected/test_sql.sh_26ace94793c68c44801e1ec496e7ab6a02304ce3.out
@@ -0,0 +1,2 @@
+name,content,length(content)
+logfile_empty.0,,0
diff --git a/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err b/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err
index bc74c2d..782fe5e 100644
--- a/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err
+++ b/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err
@@ -1,4 +1,3 @@
-✘ error: call to raise_error(msg) failed
- reason: oops!
+✘ error: oops!
 --> command-option:1
 | ;SELECT raise_error('oops!') 
diff --git a/test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.err b/test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.err
diff --git a/test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.out b/test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.out
new file mode 100644
index 0000000..29ea19f
--- /dev/null
+++ b/test/expected/test_sql.sh_2c60ed41369d667d1e2a563d54f8edf84682e526.out
@@ -0,0 +1,2 @@
+log_top_line() log_msg_line() 
+ 1 0
diff --git a/test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.err b/test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.err
diff --git a/test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.out b/test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.out
new file mode 100644
index 0000000..90d743c
--- /dev/null
+++ b/test/expected/test_sql.sh_2ed3f3b18ef4ecc68e4dd3cc8041b61fcf2a59af.out
@@ -0,0 +1,5 @@
+log_line,log_time,log_level,log_hostname,log_msgid,log_pid,log_pri,log_procname,log_struct,log_syslog_tag,syslog_version,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2007-11-03 09:23:38.000,error,veridian,<NULL>,7998,<NULL>,automount,<NULL>,automount[7998],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2007-11-03 09:23:38.000,info,veridian,<NULL>,16442,<NULL>,automount,<NULL>,automount[16442],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2007-11-03 09:23:38.000,error,veridian,<NULL>,7999,<NULL>,automount,<NULL>,automount[7999],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+3,2007-11-03 09:47:02.000,info,veridian,<NULL>,<NULL>,<NULL>,sudo,<NULL>,sudo,<NULL>,<NULL>,1404000,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out b/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out
index df0e6d7..391a786 100644
--- a/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out
+++ b/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out
@@ -1,3 +1,3 @@
-id first_name last_name age 
- 0 Phil  Myman   30 
- 1 Lem  Hewitt   35
+id first_name last_name  age  
+ 0 Phil Myman   30
+ 1 Lem Hewitt  35
diff --git a/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out b/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out
index 5118721..2f3d6d4 100644
--- a/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out
+++ b/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out
@@ -1,2 +1,2 @@
- replicate('foobar', 120) 
+ replicate('foobar', 120)  
foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar⋯oobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar
diff --git a/test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.err b/test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.err
diff --git a/test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.out b/test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.out
new file mode 100644
index 0000000..79125db
--- /dev/null
+++ b/test/expected/test_sql.sh_3445b783808f174b76f55dc6b998f721a1aae271.out
@@ -0,0 +1,83 @@
+log_line,log_part,log_body
+0,<NULL>,restart.
+1,<NULL>,Invalid query packet.
+2,<NULL>,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0x654a04aa)
+3,<NULL>,DHCPNAK from 10.1.10.1 (xid=0x654a04aa)
+4,<NULL>,/sbin/dhclient-script : updated /etc/resolv.conf
+5,<NULL>,Withdrawing address record for 10.1.10.49 on eth0.
+6,<NULL>,Leaving mDNS multicast group on interface eth0.IPv4 with address 10.1.10.49.
+7,<NULL>,iface.c: interface_mdns_mcast_join() called but no local address available.
+8,<NULL>,Interface eth0.IPv4 no longer relevant for mDNS.
+9,<NULL>,DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 (xid=0x4e17f141)
+10,<NULL>,DHCPOFFER from 10.1.10.1
+11,<NULL>,DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x4e17f141)
+12,<NULL>,DHCPACK from 10.1.10.1 (xid=0x4e17f141)
+13,<NULL>,New relevant interface eth0.IPv4 for mDNS.
+14,<NULL>,Joining mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103.
+15,<NULL>,Registering new address record for 10.1.10.103 on eth0.
+16,<NULL>,Withdrawing address record for 10.1.10.103 on eth0.
+17,<NULL>,Leaving mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103.
+18,<NULL>,iface.c: interface_mdns_mcast_join() called but no local address available.
+19,<NULL>,Interface eth0.IPv4 no longer relevant for mDNS.
+20,<NULL>,New relevant interface eth0.IPv4 for mDNS.
+21,<NULL>,Joining mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103.
+22,<NULL>,Registering new address record for 10.1.10.103 on eth0.
+23,<NULL>,/sbin/dhclient-script : updated /etc/resolv.conf
+24,10.1.10.103,bound to 10.1.10.103 -- renewal in 54694 seconds.
+25,10.1.10.103,Invalid query packet.
+26,10.1.10.103,Invalid query packet.
+27,10.1.10.103,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0x4e17f141)
+28,10.1.10.103,DHCPACK from 10.1.10.1 (xid=0x4e17f141)
+29,10.1.10.103,bound to 10.1.10.103 -- renewal in 8787 seconds.
+30,10.1.10.103,Invalid query packet.
+31,10.1.10.103,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0x4e17f141)
+32,10.1.10.103,DHCPACK from 10.1.10.1 (xid=0x4e17f141)
+33,10.1.10.103,bound to 10.1.10.103 -- renewal in 9938 seconds.
+34,10.1.10.103,Invalid query packet.
+35,10.1.10.103,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0x4e17f141)
+36,10.1.10.103,DHCPACK from 10.1.10.1 (xid=0x4e17f141)
+37,10.1.10.103,bound to 10.1.10.103 -- renewal in 2656 seconds.
+38,10.1.10.103,Invalid query packet.
+39,10.1.10.103,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0x4e17f141)
+40,10.1.10.103,DHCPACK from 10.1.10.1 (xid=0x4e17f141)
+41,10.1.10.103,bound to 10.1.10.103 -- renewal in 15112 seconds.
+42,10.1.10.103,Invalid query packet.
+43,10.1.10.103,Invalid query packet.
+44,10.1.10.103,Invalid query packet.
+45,10.1.10.103,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0x4e17f141)
+46,10.1.10.103,DHCPNAK from 10.1.10.1 (xid=0x4e17f141)
+47,10.1.10.103,/sbin/dhclient-script : updated /etc/resolv.conf
+48,10.1.10.103,Withdrawing address record for 10.1.10.103 on eth0.
+49,10.1.10.103,Leaving mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103.
+50,10.1.10.103,iface.c: interface_mdns_mcast_join() called but no local address available.
+51,10.1.10.103,Interface eth0.IPv4 no longer relevant for mDNS.
+52,10.1.10.103,DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 (xid=0xd16b79d)
+53,10.1.10.103,DHCPOFFER from 10.1.10.1
+54,10.1.10.103,DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0xd16b79d)
+55,10.1.10.103,DHCPACK from 10.1.10.1 (xid=0xd16b79d)
+56,10.1.10.103,New relevant interface eth0.IPv4 for mDNS.
+57,10.1.10.103,Joining mDNS multicast group on interface eth0.IPv4 with address 10.1.10.62.
+58,10.1.10.103,Registering new address record for 10.1.10.62 on eth0.
+59,10.1.10.103,Withdrawing address record for 10.1.10.62 on eth0.
+60,10.1.10.103,Leaving mDNS multicast group on interface eth0.IPv4 with address 10.1.10.62.
+61,10.1.10.103,iface.c: interface_mdns_mcast_join() called but no local address available.
+62,10.1.10.103,Interface eth0.IPv4 no longer relevant for mDNS.
+63,10.1.10.103,New relevant interface eth0.IPv4 for mDNS.
+64,10.1.10.103,Joining mDNS multicast group on interface eth0.IPv4 with address 10.1.10.62.
+65,10.1.10.103,Registering new address record for 10.1.10.62 on eth0.
+66,10.1.10.103,/sbin/dhclient-script : updated /etc/resolv.conf
+67,10.1.10.62,bound to 10.1.10.62 -- renewal in 31782 seconds.
+68,10.1.10.62,Invalid query packet.
+69,10.1.10.62,Invalid query packet.
+70,10.1.10.62,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0xd16b79d)
+71,10.1.10.62,DHCPACK from 10.1.10.1 (xid=0xd16b79d)
+72,10.1.10.62,bound to 10.1.10.62 -- renewal in 19742 seconds.
+73,10.1.10.62,Invalid query packet.
+74,10.1.10.62,Invalid query packet.
+75,10.1.10.62,DHCPREQUEST on eth0 to 10.1.10.1 port 67 (xid=0xd16b79d)
+76,10.1.10.62,DHCPACK from 10.1.10.1 (xid=0xd16b79d)
+77,10.1.10.62,bound to 10.1.10.62 -- renewal in 55327 seconds.
+78,10.1.10.62,Invalid query packet.
+79,10.1.10.62,Invalid response packet from host 10.1.10.10.
+80,10.1.10.62,Invalid response packet from host fe80::22c9:d0ff:fe15:1b7c.
+81,10.1.10.62,Invalid query packet.
diff --git a/test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.err b/test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.err
diff --git a/test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.out b/test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.out
new file mode 100644
index 0000000..61a6828
--- /dev/null
+++ b/test/expected/test_sql.sh_4563a807311d0ce3d1f912843e615a6ca579cffa.out
@@ -0,0 +1,40 @@
+[
+ {
+ "fields": {
+ "namespace": "inc-1-enh-domain-c14-ns-2",
+ "pod": "hello-inc-1-enh-domain-c14-ns-2-3-d8f465685-k75gp",
+ "reason": "",
+ "status": "Pending"
+ }
+ },
+ {
+ "fields": {
+ "error": "pod inc-1-domain-c14-ns-6/fe-inc-1-domain-c14-ns-6-5-656d9bb695-4584b is not found: PodNotFound",
+ "namespace": "inc-1-domain-c14-ns-6",
+ "pod": "fe-inc-1-domain-c14-ns-6-5-656d9bb695-4584b",
+ "uid": "be2def59-3a08-42fd-8f84-6f64cfcefa93"
+ }
+ },
+ {
+ "fields": {
+ "namespace": "inc-1-domain-c14-ns-6",
+ "pod": "fe-inc-1-domain-c14-ns-6-5-656d9bb695-4584b",
+ "uid": "be2def59-3a08-42fd-8f84-6f64cfcefa93"
+ }
+ },
+ {
+ "fields": {
+ "namespace": "inc-1-domain-c14-ns-6",
+ "pod": "fe-inc-1-domain-c14-ns-6-5-656d9bb695-4584b",
+ "uid": "be2def59-3a08-42fd-8f84-6f64cfcefa93"
+ }
+ },
+ {
+ "fields": {
+ "namespace": "inc-1-enh-domain-c14-ns-2",
+ "pod": "hello-inc-1-enh-domain-c14-ns-2-7-5ddd6bcd69-6rqct",
+ "reason": "",
+ "status": "Pending"
+ }
+ }
+]
diff --git a/test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.err b/test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.err
diff --git a/test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.out b/test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.out
new file mode 100644
index 0000000..85511da
--- /dev/null
+++ b/test/expected/test_sql.sh_4a13356ccbdeb5f73fa063e292b5a6cb25e6c23e.out
@@ -0,0 +1,2 @@
+log_line,log_time,log_level,bro_ts,bro_uid,bro_id_orig_h,bro_id_orig_p,bro_id_resp_h,bro_id_resp_p,bro_trans_depth,bro_method,bro_host,bro_uri,bro_referrer,bro_version,bro_user_agent,bro_request_body_len,bro_response_body_len,bro_status_code,bro_status_msg,bro_info_code,bro_info_msg,bro_tags,bro_username,bro_password,bro_proxied,bro_orig_fuids,bro_orig_filenames,bro_orig_mime_types,bro_resp_fuids,bro_resp_filenames,bro_resp_mime_types,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+118,2011-11-03 00:19:49.337,error,1320279589.337053,CBHHuR1xFnm5C5CQBc,192.168.2.76,52074,74.125.225.76,80,1,GET,i4.ytimg.com,/vi/gDbg_GeuiSY/hqdefault.jpg,<NULL>,1.1,Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,0,893,404,Not Found,<NULL>,<NULL>,,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,F2GiAw3j1m22R2yIg2,<NULL>,image/jpeg,<NULL>,18,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out b/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out
index dbb2a2f..53f730f 100644
--- a/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out
+++ b/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out
@@ -1,2 +1,2 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,log_hostname,log_msgid,log_pid,log_pri,log_procname,log_struct,log_syslog_tag,syslog_version,col_0,TTY,PWD,USER,COMMAND
-0,<NULL>,2007-11-03 09:47:02.000,0,info,0,<NULL>,<NULL>,[1],veridian,<NULL>,<NULL>,<NULL>,sudo,<NULL>,sudo,<NULL>,timstack,pts/6,/auto/wstimstack/rpms/lbuild/test,root,/usr/bin/tail /var/log/messages
+log_line,log_time,log_level,log_hostname,log_msgid,log_pid,log_pri,log_procname,log_struct,log_syslog_tag,syslog_version,col_0,TTY,PWD,USER,COMMAND,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2007-11-03 09:47:02.000,info,veridian,<NULL>,<NULL>,<NULL>,sudo,<NULL>,sudo,<NULL>,timstack,pts/6,/auto/wstimstack/rpms/lbuild/test,root,/usr/bin/tail /var/log/messages,<NULL>,0,0,<NULL>,<NULL>,<NULL>,[1]
diff --git a/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err b/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err
index 600e19d..979055d 100644
--- a/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err
+++ b/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err
@@ -1,5 +1,4 @@
-✘ error: call to raise_error(msg) failed
- reason: no data was redirected to lnav's standard-input
+✘ error: no data was redirected to lnav's standard-input
 --> command-option:1
 | |rename-stdin foo 
 --> ../test/.lnav/formats/default/rename-stdin.lnav:7
diff --git a/test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.err b/test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.err
diff --git a/test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.out b/test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.out
new file mode 100644
index 0000000..5fc70f1
--- /dev/null
+++ b/test/expected/test_sql.sh_61471583c5e2f8ede3a8adefce682c27bf3924c8.out
@@ -0,0 +1,11 @@
+[
+ {
+ "sc_substatus": 0
+ },
+ {
+ "sc_substatus": 0
+ },
+ {
+ "sc_substatus": null
+ }
+]
diff --git a/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out b/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out
index 898c9a8..0f485fb 100644
--- a/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out
+++ b/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out
@@ -1,2 +1,2 @@
-filepath 
+filepath 
foo
diff --git a/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out b/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out
index 801a9af..069e77a 100644
--- a/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out
+++ b/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out
@@ -1,2 +1,2 @@
-log_top_datetime() 
+log_top_datetime() 
<NULL>
diff --git a/test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.err b/test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.err
diff --git a/test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.out b/test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.out
new file mode 100644
index 0000000..e304578
--- /dev/null
+++ b/test/expected/test_sql.sh_7593b39f4be6fd2124ec7cf10835ee015d475b16.out
@@ -0,0 +1,2 @@
+log_top_line() log_msg_line() 
+ 2 2
diff --git a/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out b/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out
index fabc853..57b6d27 100644
--- a/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out
+++ b/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out
@@ -1,2 +1,2 @@
- col_0 
+ col_0  
eth0.IPv4
diff --git a/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err b/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err
index 1a0c2b0..d068056 100644
--- a/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err
+++ b/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err
@@ -1,5 +1,4 @@
-✘ error: call to raise_error(msg) failed
- reason: expecting the new name for stdin as the first argument
+✘ error: expecting the new name for stdin as the first argument
 --> command-option:1
 | |rename-stdin 
 --> ../test/.lnav/formats/default/rename-stdin.lnav:6
diff --git a/test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.err b/test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.err
diff --git a/test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.out b/test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.out
new file mode 100644
index 0000000..f648fc6
--- /dev/null
+++ b/test/expected/test_sql.sh_859af4cc5f57345be8dcece599419d58f332841a.out
@@ -0,0 +1,4 @@
+Min: 0   1-23   24-48   49+ Max: 291690
+ Thu Nov 03 00:15:00               
+▲ 70 values in the range 0.00-3788.18
+ Thu Nov 03 00:20:00
diff --git a/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out b/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out
index b21f574..c5c0c0e 100644
--- a/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out
+++ b/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out
@@ -1,4 +1,4 @@
- log_time 
+ log_time  
2009-07-20 22:59:26.000
2009-07-20 22:59:29.000
-2009-07-20 22:59:29.000
+2009-07-20 22:59:29.000 
diff --git a/test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.err b/test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.err
diff --git a/test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.out b/test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.out
new file mode 100644
index 0000000..a54d338
--- /dev/null
+++ b/test/expected/test_sql.sh_9aaaa810f883f5dcf8a4d5cda4051fdf4640a65c.out
@@ -0,0 +1,4 @@
+log_line,log_time,log_level,log_msg_format,log_msg_values,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters,log_msg_schema
+0,2015-11-03 09:23:38.000,info,# is up,"{""col_0"":""eth0""}",<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,ce6143108d22799c9c7a994e21e7302e
+1,2015-11-03 09:23:38.000,info,# is up,"{""col_0"":""eth1""}",<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,ce6143108d22799c9c7a994e21e7302e
+2,2015-11-03 09:23:38.000,info,# is down,"{""col_0"":""eth0""}",<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,83cd119b5b6f7e79abff4d28946b7a61
diff --git a/test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.err b/test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.err
diff --git a/test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.out b/test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.out
new file mode 100644
index 0000000..de137d9
--- /dev/null
+++ b/test/expected/test_sql.sh_a7955e89791db9a252d8323436fabc51e2960731.out
@@ -0,0 +1,3 @@
+log_line,log_time,log_level,c_ip,cs_method,cs_referer,cs_uri_query,cs_uri_stem,cs_user_agent,cs_username,cs_version,sc_bytes,sc_status,cs_host,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+1,2015-03-24 14:02:50.000,info,127.0.0.1,GET,<NULL>,<NULL>,/includes/js/combined-javascript.js,<NULL>,-,HTTP/1.1,65508,200,<NULL>,<NULL>,6927348000,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2015-03-24 14:02:50.000,error,127.0.0.1,GET,<NULL>,<NULL>,/bad.foo,<NULL>,-,HTTP/1.1,65508,404,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out b/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out
index c012bd8..176be31 100644
--- a/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out
+++ b/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out
@@ -1,2 +1,2 @@
- log_time 
+ log_time  
2009-07-20 22:59:26.000
diff --git a/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out b/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out
index 4382802..a44dcba 100644
--- a/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out
+++ b/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out
@@ -1,4 +1,4 @@
- log_body 
+ log_body  
lookup(file): lookup for foobar failed
attempting to mount entry /auto/opt
-lookup(file): lookup for opt failed
+lookup(file): lookup for opt failed 
diff --git a/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out b/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out
index b21f574..c5c0c0e 100644
--- a/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out
+++ b/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out
@@ -1,4 +1,4 @@
- log_time 
+ log_time  
2009-07-20 22:59:26.000
2009-07-20 22:59:29.000
-2009-07-20 22:59:29.000
+2009-07-20 22:59:29.000 
diff --git a/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out b/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out
index c2c44ad..c126651 100644
--- a/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out
+++ b/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out
@@ -1,2 +1,2 @@
- log_body 
+ log_body  
timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages
diff --git a/test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.err b/test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.err
diff --git a/test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.out b/test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.out
new file mode 100644
index 0000000..de2964d
--- /dev/null
+++ b/test/expected/test_sql.sh_b9330763dea550bbd006d7ae6ae7ea367f831fa3.out
@@ -0,0 +1,10 @@
+node_text
+"Gambardella, Matthew"
+"Ralls, Kim"
+"Corets, Eva"
+"Randall, Cynthia"
+"Thurman, Paula"
+"Knorr, Stefan"
+"Kress, Peter"
+"O'Brien, Tim"
+"Galos, Mike"
diff --git a/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out b/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out
index 85a1303..9892416 100644
--- a/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out
+++ b/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out
@@ -1,5 +1,5 @@
-match_index  content  case match_index when 2 then replicate('abc', 1000) else '' end 
-  0 {"col_0":10}  
- 1 {"col_0":50}  
- 2 {"col_0":50} abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc⋯bcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc 
- 3 {"col_0":50}  
+match_index  content   case match_index when 2 then replicate('abc', 1000) else '' end  
+ 0 {"col_0":10}
+ 1 {"col_0":50}
+ 2 {"col_0":50} abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc⋯bcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc 
+ 3 {"col_0":50}  
diff --git a/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out b/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out
index 7041f45..f32bdce 100644
--- a/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out
+++ b/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out
@@ -1,2 +1,2 @@
-lnav_top_file() 
+lnav_top_file() 
<NULL>
diff --git a/test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.err b/test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.err
diff --git a/test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.out b/test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.out
new file mode 100644
index 0000000..62d3056
--- /dev/null
+++ b/test/expected/test_sql.sh_c17933125df910588b806a9d07c2655bc71198ef.out
@@ -0,0 +1,6 @@
+log_line,log_time,log_level,bro_ts,bro_uid,bro_id_orig_h,bro_id_orig_p,bro_id_resp_h,bro_id_resp_p,bro_trans_depth,bro_method,bro_host,bro_uri,bro_referrer,bro_version,bro_user_agent,bro_request_body_len,bro_response_body_len,bro_status_code,bro_status_msg,bro_info_code,bro_info_msg,bro_tags,bro_username,bro_password,bro_proxied,bro_orig_fuids,bro_orig_filenames,bro_orig_mime_types,bro_resp_fuids,bro_resp_filenames,bro_resp_mime_types,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2011-11-03 00:19:26.452,info,1320279566.452687,CwFs1P2UcUdlSxD2La,192.168.2.76,52026,132.235.215.119,80,1,GET,www.reddit.com,/,<NULL>,1.1,Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,0,109978,200,OK,<NULL>,<NULL>,,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,Ftw3fJ2JJF3ntMTL2,<NULL>,text/html,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2011-11-03 00:19:26.831,info,1320279566.831619,CJxSUgkInyKSHiju1,192.168.2.76,52030,72.21.211.173,80,1,GET,e.thumbs.redditmedia.com,/E-pbDbmiBclPkDaX.jpg,http://www.reddit.com/,1.1,Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,0,2300,200,OK,<NULL>,<NULL>,,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,FFTf9Zdgk3YkfCKo3,<NULL>,image/jpeg,<NULL>,379,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2011-11-03 00:19:26.831,info,1320279566.831563,CJwUi9bdB9c1lLW44,192.168.2.76,52029,72.21.211.173,80,1,GET,f.thumbs.redditmedia.com,/BP5bQfy4o-C7cF6A.jpg,http://www.reddit.com/,1.1,Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,0,2272,200,OK,<NULL>,<NULL>,,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,FfXtOj3o7aub4vbs2j,<NULL>,image/jpeg,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+3,2011-11-03 00:19:26.831,info,1320279566.831473,CoX7zA3OJKGUOSCBY2,192.168.2.76,52027,72.21.211.173,80,1,GET,e.thumbs.redditmedia.com,/SVUtep3Rhg5FTRn4.jpg,http://www.reddit.com/,1.1,Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,0,2562,200,OK,<NULL>,<NULL>,,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,F21Ybs3PTqS6O4Q2Zh,<NULL>,image/jpeg,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+4,2011-11-03 00:19:26.831,info,1320279566.831643,CT0JIh479jXIGt0Po1,192.168.2.76,52031,72.21.211.173,80,1,GET,f.thumbs.redditmedia.com,/uuy31444rLSyKdHS.jpg,http://www.reddit.com/,1.1,Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,0,1595,200,OK,<NULL>,<NULL>,,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,Fdk0MZ1wQmKWAJ4WH4,<NULL>,image/jpeg,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out b/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out
index b21f574..c5c0c0e 100644
--- a/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out
+++ b/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out
@@ -1,4 +1,4 @@
- log_time 
+ log_time  
2009-07-20 22:59:26.000
2009-07-20 22:59:29.000
-2009-07-20 22:59:29.000
+2009-07-20 22:59:29.000 
diff --git a/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out b/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out
index 86a4d5a..54fad85 100644
--- a/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out
+++ b/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out
@@ -1,3 +1,3 @@
-log_line  col_0 
- 0 eth0.IPv4 
+log_line  col_0  
+ 0 eth0.IPv4
7 eth0.IPv4
diff --git a/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out b/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out
index 762b09c..f3306ab 100644
--- a/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out
+++ b/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out
@@ -1,2 +1,2 @@
- log_top_datetime() 
+ log_top_datetime()  
2016-03-13 22:49:15.000
diff --git a/test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.err b/test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.err
diff --git a/test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.out b/test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.out
new file mode 100644
index 0000000..6d2a99a
--- /dev/null
+++ b/test/expected/test_sql.sh_d4d540f0ef7e34b693fc72078d1cf2e069f86d81.out
@@ -0,0 +1,4 @@
+ total  log_line  log_time  duration log_formats  log_msg_format  
+ 2 0 2007-04-28 06:53:55.000 syslog_log New relevant interface # for #
+ 2 1 2007-04-28 06:53:55.000 syslog_log Joining # multicast group on interface # with address #
+ 2  2 2007-04-28 06:53:55.000   syslog_log  Registering new address record for # on # 
diff --git a/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err b/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err
index c7ee159..a179b11 100644
--- a/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err
+++ b/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err
@@ -1,5 +1,4 @@
-✘ error: call to raise_error(msg) failed
- reason: oops!
+✘ error: oops!
 --> command-option:2
 | ;SELECT $inum, $nul, $fnum, $str, raise_error('oops!')
 = note: the bound parameters are set as follows:
diff --git a/test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.err b/test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.err
diff --git a/test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.out b/test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.out
new file mode 100644
index 0000000..ab55ad7
--- /dev/null
+++ b/test/expected/test_sql.sh_e44c0e2834038ec8d9b0b10b993967edb711c03c.out
@@ -0,0 +1,11 @@
+duration,bro_uid,req
+116.438679,CwFs1P2UcUdlSxD2La,GET www.reddit.com
+115.202498,CdZUPH2DKOE7zzCLE3,GET feeds.bbci.co.uk
+115.121914,CdrfXZ1NOFPEawF218,GET c.thumbs.redditmedia.com
+115.121837,CoX7zA3OJKGUOSCBY2,GET e.thumbs.redditmedia.com
+115.12181,CJxSUgkInyKSHiju1,GET e.thumbs.redditmedia.com
+115.121506,CT0JIh479jXIGt0Po1,GET f.thumbs.redditmedia.com
+115.121339,CJwUi9bdB9c1lLW44,GET f.thumbs.redditmedia.com
+115.119217,C6Q4Vm14ZJIlZhsXqk,GET a.thumbs.redditmedia.com
+72.274459,CbNCgO1MzloHRNeY4f,GET www.google.com
+71.658218,CnGze54kQWWpKqrrZ4,GET ajax.googleapis.com
diff --git a/test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.err b/test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.err
diff --git a/test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.out b/test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.out
new file mode 100644
index 0000000..c0c942f
--- /dev/null
+++ b/test/expected/test_sql.sh_ef3cecab4ae0b90760f728add5652378e26b2fe6.out
@@ -0,0 +1,2 @@
+log_line,log_time,log_level,c_ip,cs_method,cs_referer,cs_uri_query,cs_uri_stem,cs_user_agent,cs_username,cs_version,sc_bytes,sc_status,cs_host,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+1,2009-07-20 22:59:29.000,error,192.168.202.254,GET,-,<NULL>,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404,<NULL>,<NULL>,3000,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.err b/test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.err
diff --git a/test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.out b/test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.out
new file mode 100644
index 0000000..8307aba
--- /dev/null
+++ b/test/expected/test_sql.sh_fea98f976873ee7b55e6f322dda42719a19fb3f0.out
@@ -0,0 +1,2 @@
+log_top_line() log_msg_line() 
+ <NULL> <NULL>
diff --git a/test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.err b/test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.err
diff --git a/test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.out b/test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.out
new file mode 100644
index 0000000..b67d10f
--- /dev/null
+++ b/test/expected/test_sql.sh_ffbc3dbf8464455358a77acffa10a8dd8a080374.out
@@ -0,0 +1,4 @@
+log_line,log_time,log_level,c_ip,cs_method,cs_referer,cs_uri_query,cs_uri_stem,cs_user_agent,cs_username,cs_version,sc_bytes,sc_status,cs_host,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters
+0,2009-07-20 22:59:26.000,info,192.168.202.254,GET,-,<NULL>,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
+1,2009-07-20 22:59:29.000,error,192.168.202.254,GET,-,<NULL>,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404,<NULL>,<NULL>,3000,0,<NULL>,<NULL>,<NULL>,<NULL>
+2,2009-07-20 22:59:29.000,info,192.168.202.254,GET,-,<NULL>,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200,<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>
diff --git a/test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.err b/test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.err
diff --git a/test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.out b/test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.out
new file mode 100644
index 0000000..7d0d083
--- /dev/null
+++ b/test/expected/test_sql_anno.sh_1398146cf8b4f074ec8b9752f021cf47d011bebc.out
@@ -0,0 +1,9 @@
+ SELECT json_object('abc', 'def') ->> '$.abc'
+ sql_keyword ------
+ sql_func ------------------------
+ sql_ident -----------
+ sql_string -----
+ sql_comma -
+ sql_string -----
+ sql_oper ---
+ sql_string -------
diff --git a/test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.err b/test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.err
diff --git a/test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.out b/test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.out
new file mode 100644
index 0000000..0dd8902
--- /dev/null
+++ b/test/expected/test_sql_anno.sh_de46094b6e005285dc0921ef9979e36240c5042d.out
@@ -0,0 +1,7 @@
+ SELECT 0x77, 123, 123e4
+ sql_keyword ------
+ sql_number ----
+ sql_comma -
+ sql_number ---
+ sql_comma -
+ sql_number -----
diff --git a/test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.err b/test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.err
diff --git a/test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.out b/test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.out
new file mode 100644
index 0000000..fa79088
--- /dev/null
+++ b/test/expected/test_sql_anno.sh_e7dae4ba18c42c416ed03afd8819200f63e89ac8.out
@@ -0,0 +1,17 @@
+ from access_log | filter cs_method == 'GET' || cs_method == 'PUT'
+ prql_stage ----------------
+ prql_transform ----
+ prql_ident ----------
+ prql_fqid ----------
+ prql_stage -------------------------------------------------
+ prql_pipe -
+ prql_transform ------
+ prql_ident ---------
+ prql_fqid ---------
+ prql_oper --
+ prql_string -----
+ prql_oper --
+ prql_ident ---------
+ prql_fqid ---------
+ prql_oper --
+ prql_string -----
diff --git a/test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.err b/test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.err
diff --git a/test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.out b/test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_fs_func.sh_2aa83fc90c850cdd11e3136a1a02b79c5879824b.out
diff --git a/test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.err b/test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.err
diff --git a/test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.out b/test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.out
new file mode 100644
index 0000000..f5e1ef9
--- /dev/null
+++ b/test/expected/test_sql_fs_func.sh_34baa8050f8278d7b68c29e53bdd9f37da0f34c8.out
@@ -0,0 +1,2 @@
+shell_exec('echo hi')
+ hi␊
diff --git a/test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.err b/test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.err
diff --git a/test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.out b/test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.out
new file mode 100644
index 0000000..2329234
--- /dev/null
+++ b/test/expected/test_sql_fs_func.sh_9234a453403934587bbbdde355281a956d1fbe5f.out
@@ -0,0 +1,2 @@
+st_parent st_name st_dev st_ino st_type st_mode st_nlink st_uid st_user st_gid st_group st_rdev st_size st_blksize st_blocks st_atime st_mtime st_ctime error
+/ non-existent <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> No such file or directory
diff --git a/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err b/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err
index c8a3fd0..cac88c8 100644
--- a/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err
+++ b/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to readlink(path) failed","attrs":[{"start":8,"end":16,"type":"role","value":47},{"start":17,"end":21,"type":"role","value":46},{"start":8,"end":22,"type":"role","value":60}]},"reason":{"str":"unable to stat path: non-existent-link -- No such file or directory","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to readlink(path) failed","attrs":[{"start":8,"end":16,"type":"role","value":49},{"start":17,"end":21,"type":"role","value":48},{"start":8,"end":22,"type":"role","value":65}]},"reason":{"str":"unable to stat path: non-existent-link -- No such file or directory","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err b/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err
index aa68134..fdc556a 100644
--- a/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err
+++ b/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to realpath(path) failed","attrs":[{"start":8,"end":16,"type":"role","value":47},{"start":17,"end":21,"type":"role","value":46},{"start":8,"end":22,"type":"role","value":60}]},"reason":{"str":"Could not get real path for non-existent-path -- No such file or directory","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to realpath(path) failed","attrs":[{"start":8,"end":16,"type":"role","value":49},{"start":17,"end":21,"type":"role","value":48},{"start":8,"end":22,"type":"role","value":65}]},"reason":{"str":"Could not get real path for non-existent-path -- No such file or directory","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out b/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out
index 7179021..f16755c 100644
--- a/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out
+++ b/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out
@@ -1,3 +1,3 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters log_msg_format 
-  1  <NULL> 2009-07-20 22:59:29.000  3000 error   0  <NULL>  <NULL>  <NULL>  
- 3  <NULL> 2013-02-15 06:00:31.000  112777262000 error   0  <NULL>  <NULL>  <NULL>  
+log_line  log_time  log_level log_msg_format log_msg_values log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 1 2009-07-20 22:59:29.000 error null <NULL>   3000 0 <NULL> <NULL> <NULL> <NULL>
+ 3 2013-02-15 06:00:31.000 error null <NULL>  112777262000 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.err b/test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.err
diff --git a/test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.out b/test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.out
new file mode 100644
index 0000000..240259b
--- /dev/null
+++ b/test/expected/test_sql_indexes.sh_2b4945247332d01b08e6f17340f7d17f3b3649b8.out
@@ -0,0 +1,5 @@
+log_line  log_time  log_level log_msg_format log_msg_values log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2009-07-20 22:59:26.000 info null <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 1 2009-07-20 22:59:29.000 error null <NULL>   3000 0 <NULL> <NULL> <NULL> <NULL>
+ 2 2009-07-20 22:59:29.000 info    null   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 3 2013-02-15 06:00:31.000 error    null   <NULL>  112777262000  0  <NULL>  <NULL>  <NULL>  <NULL> 
diff --git a/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out b/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out
index 5467779..a5e2a8e 100644
--- a/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out
+++ b/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out
@@ -1,5 +1,5 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters  c_ip cs_method cs_referer cs_uri_query  cs_uri_stem cs_user_agent cs_username cs_version sc_bytes sc_status cs_host  log_unique_path 
-  0  <NULL> 2009-07-20 22:59:26.000  0 info   0  <NULL>  <NULL>  <NULL> 192.168.202.254 GET  -   <NULL> /vmw/cgi/tramp  gPXE/0.9.7  -  HTTP/1.0   134  200  <NULL> logfile_access_log.0 
-   1 <NULL> 2009-07-20 22:59:29.000 3000 error 0 <NULL> <NULL> <NULL> 192.168.202.254 GET - <NULL> /vmw/vSphere/default/vmkboot.gz gPXE/0.9.7 - HTTP/1.0 46210 404 <NULL> logfile_access_log.0
-  2  <NULL> 2009-07-20 22:59:29.000  0 info   0  <NULL>  <NULL>  <NULL> 192.168.202.254 GET  -   <NULL> /vmw/vSphere/default/vmkernel.gz gPXE/0.9.7  -  HTTP/1.0   78929  200  <NULL> logfile_access_log.0 
- 3  <NULL> 2013-02-15 06:00:31.000  112777262000 error   0  <NULL>  <NULL>  <NULL> 10.112.81.15  <NULL>  -   <NULL> <NULL>  -  -  <NULL>   0  400  <NULL> logfile_access_log.1
+log_line  log_time  log_level  c_ip  cs_method cs_referer cs_uri_query  cs_uri_stem  cs_user_agent cs_username cs_version  sc_bytes  sc_status cs_host log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters  log_unique_path  
+ 0 2009-07-20 22:59:26.000 info 192.168.202.254 GET - <NULL> /vmw/cgi/tramp gPXE/0.9.7 - HTTP/1.0   134 200 <NULL> <NULL>  0 0 <NULL> <NULL> <NULL> <NULL> logfile_access_log.0
+ 1 2009-07-20 22:59:29.000 error 192.168.202.254 GET - <NULL> /vmw/vSphere/default/vmkboot.gz gPXE/0.9.7 - HTTP/1.0  46210 404 <NULL> <NULL>   3000 0 <NULL> <NULL> <NULL> <NULL> logfile_access_log.0
+ 2 2009-07-20 22:59:29.000 info  192.168.202.254 GET  -   <NULL> /vmw/vSphere/default/vmkernel.gz gPXE/0.9.7  -  HTTP/1.0   78929  200  <NULL>  <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> logfile_access_log.0 
+ 3 2013-02-15 06:00:31.000 error  10.112.81.15  <NULL>  -   <NULL> <NULL>  -  -  <NULL>   0  400  <NULL>  <NULL>  112777262000  0  <NULL>  <NULL>  <NULL>  <NULL> logfile_access_log.1 
diff --git a/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out b/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out
index 823c4d0..5c73e94 100644
--- a/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out
+++ b/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out
@@ -1,2 +1,2 @@
-$id $parent $notused  replace($detail, 'SCAN TABLE', 'SCAN') 
- 2  0  0 SCAN all_logs VIRTUAL TABLE INDEX 1:SEARCH all_logs USING log_level < ? 
+$id  $parent   $notused   replace($detail, 'SCAN TABLE', 'SCAN')  
+ 2  0  0 SCAN all_logs VIRTUAL TABLE INDEX 1:SEARCH all_logs USING log_level < ?
diff --git a/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out b/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out
index cb2aac6..c44444c 100644
--- a/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out
+++ b/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out
@@ -1,5 +1,5 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters log_msg_format log_format 
- 0  <NULL> 2009-07-20 22:59:26.000  0 info   0  <NULL>  <NULL>  <NULL>   access_log 
-  1 <NULL> 2009-07-20 22:59:29.000 3000 error 0 <NULL> <NULL> <NULL> access_log
- 2  <NULL> 2009-07-20 22:59:29.000  0 info   0  <NULL>  <NULL>  <NULL>   access_log 
- 3  <NULL> 2013-02-15 06:00:31.000  112777262000 error   0  <NULL>  <NULL>  <NULL>   access_log
+log_line  log_time  log_level log_msg_format log_msg_values log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters log_format 
+ 0 2009-07-20 22:59:26.000 info null <NULL>  0 0 <NULL> <NULL> <NULL> <NULL> access_log
+ 1 2009-07-20 22:59:29.000 error null <NULL>   3000 0 <NULL> <NULL> <NULL> <NULL> access_log
+ 2 2009-07-20 22:59:29.000 info    null   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> access_log 
+ 3 2013-02-15 06:00:31.000 error    null   <NULL>  112777262000  0  <NULL>  <NULL>  <NULL>  <NULL> access_log 
diff --git a/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out b/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out
index ee48805..8e21b1b 100644
--- a/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out
+++ b/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out
@@ -1,3 +1,3 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters log_msg_format 
- 0  <NULL> 2009-07-20 22:59:26.000  0 info   0  <NULL>  <NULL>  <NULL>  
- 2 <NULL> 2009-07-20 22:59:29.000 0 info 0 <NULL> <NULL> <NULL>
+log_line  log_time  log_level log_msg_format log_msg_values log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2009-07-20 22:59:26.000 info null <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 2 2009-07-20 22:59:29.000 info null <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out b/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out
index 2a91985..f56f904 100644
--- a/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out
+++ b/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out
@@ -1,2 +1,2 @@
-$id $parent $notused  replace($detail, 'SCAN TABLE', 'SCAN') 
- 2  0  0 SCAN all_logs VIRTUAL TABLE INDEX 1:SEARCH all_logs USING log_format = ? 
+$id  $parent   $notused   replace($detail, 'SCAN TABLE', 'SCAN')  
+ 2  0  0 SCAN all_logs VIRTUAL TABLE INDEX 1:SEARCH all_logs USING log_format = ?
diff --git a/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out b/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out
index 82958af..7d20aa3 100644
--- a/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out
+++ b/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out
@@ -1,2 +1,2 @@
-$id $parent $notused  replace($detail, 'SCAN TABLE', 'SCAN') 
- 2  0  0 SCAN access_log VIRTUAL TABLE INDEX 1:SEARCH access_log USING log_path GLOB ? 
+$id  $parent   $notused   replace($detail, 'SCAN TABLE', 'SCAN')  
+ 2  0  0 SCAN access_log VIRTUAL TABLE INDEX 1:SEARCH access_log USING log_path GLOB ?
diff --git a/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out b/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out
index 16c7c37..240259b 100644
--- a/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out
+++ b/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out
@@ -1,5 +1,5 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters log_msg_format 
- 0  <NULL> 2009-07-20 22:59:26.000  0 info   0  <NULL>  <NULL>  <NULL>  
-  1 <NULL> 2009-07-20 22:59:29.000 3000 error 0 <NULL> <NULL> <NULL>
- 2  <NULL> 2009-07-20 22:59:29.000  0 info   0  <NULL>  <NULL>  <NULL>  
- 3  <NULL> 2013-02-15 06:00:31.000  112777262000 error   0  <NULL>  <NULL>  <NULL>  
+log_line  log_time  log_level log_msg_format log_msg_values log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2009-07-20 22:59:26.000 info null <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 1 2009-07-20 22:59:29.000 error null <NULL>   3000 0 <NULL> <NULL> <NULL> <NULL>
+ 2 2009-07-20 22:59:29.000 info    null   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 3 2013-02-15 06:00:31.000 error    null   <NULL>  112777262000  0  <NULL>  <NULL>  <NULL>  <NULL> 
diff --git a/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err b/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err
index 9654daa..84205dc 100644
--- a/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err
+++ b/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err
@@ -1,4 +1 @@
-error: sqlite3_exec failed -- parse error: premature EOF
- [123, true
- (right here) ------^
-
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid JSON","attrs":[]},"reason":{"str":"parse error: premature EOF\n [123, true\n (right here) ------^","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err b/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err
index f784e9c..99b48bc 100644
--- a/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err
+++ b/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to json_contains(json, value) failed","attrs":[{"start":8,"end":21,"type":"role","value":47},{"start":22,"end":26,"type":"role","value":46},{"start":28,"end":33,"type":"role","value":46},{"start":8,"end":34,"type":"role","value":60}]},"reason":{"str":"parse error: premature EOF\n [\"hi\", \"bye\", \"solong]\n (right here) ------^","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to json_contains(json, value) failed","attrs":[{"start":8,"end":21,"type":"role","value":49},{"start":22,"end":26,"type":"role","value":48},{"start":28,"end":33,"type":"role","value":48},{"start":8,"end":34,"type":"role","value":65}]},"reason":{"str":"parse error: premature EOF\n [\"hi\", \"bye\", \"solong]\n (right here) ------^","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err b/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err
index 456ef7a..6033ba4 100644
--- a/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err
+++ b/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to json_concat(json, value, ...) failed","attrs":[{"start":8,"end":19,"type":"role","value":47},{"start":20,"end":24,"type":"role","value":46},{"start":26,"end":31,"type":"role","value":46},{"start":8,"end":37,"type":"role","value":60}]},"reason":{"str":"Invalid JSON: parse error: premature EOF\n [null,\n (right here) ------^","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to json_concat(json, value, ...) failed","attrs":[{"start":8,"end":19,"type":"role","value":49},{"start":20,"end":24,"type":"role","value":48},{"start":26,"end":31,"type":"role","value":48},{"start":8,"end":37,"type":"role","value":65}]},"reason":{"str":"Invalid JSON: parse error: premature EOF\n [null,\n (right here) ------^","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err b/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err
index e8eef68..cffd039 100644
--- a/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err
+++ b/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err
@@ -1,4 +1 @@
-error: sqlite3_exec failed -- parse error: premature EOF
- [null, true, 20, 30, 40
- (right here) ------^
-
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid JSON","attrs":[]},"reason":{"str":"parse error: premature EOF\n [null, true, 20, 30, 40\n (right here) ------^","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.err b/test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.err
diff --git a/test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.out b/test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.out
new file mode 100644
index 0000000..8948203
--- /dev/null
+++ b/test/expected/test_sql_regexp.sh_02ef03572fd2bcf39bab8e29cf1c735ff7c3f297.out
@@ -0,0 +1,3 @@
+regexp_replace(cs_uri_query, '.*rapidView=(\d+).*', '\1') 
+1295
+1839
diff --git a/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out b/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out
index 19aa1c4..5074519 100644
--- a/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out
+++ b/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out
@@ -1,4 +1,4 @@
-match_index capture_index capture_name capture_count range_start range_stop content 
- 0  0  <NULL>  3  1  9 abc=def; 
+match_index capture_index capture_name capture_count range_start range_stop content  
+ 0 0 <NULL> 3 1 9 abc=def;
0 1 <NULL> 3 1 4 abc
 0  2  <NULL>  3  5  8 def 
diff --git a/test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.err b/test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.err
new file mode 100644
index 0000000..824c120
--- /dev/null
+++ b/test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.err
@@ -0,0 +1,7 @@
+✘ error: “^(” is not a valid regular expression
+ reason: missing closing parenthesis
+ --> command-option:1
+ | ;SELECT * from regexp_capture_into_json('abc=def;ghi=jkl;', '^(')
+ --> pattern
+ | ^( 
+ |  ^ missing closing parenthesis 
diff --git a/test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.out b/test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_regexp.sh_219a579cf7744fa08ab79fadd08b521b2f18a661.out
diff --git a/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out b/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out
index 4917183..dfdbb10 100644
--- a/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out
+++ b/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out
@@ -1,2 +1,2 @@
-match_index  content 
- 0 {"key":"foo","value":4670} 
+match_index  content  
+ 0 {"key":"foo","value":4670}
diff --git a/test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.err b/test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.err
new file mode 100644
index 0000000..209f89e
--- /dev/null
+++ b/test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.err
@@ -0,0 +1,7 @@
+✘ error: “^(” is not a valid regular expression
+ reason: missing closing parenthesis
+ --> command-option:1
+ | ;SELECT * from regexp_capture('abc=def;ghi=jkl;', '^(')
+ --> pattern
+ | ^( 
+ |  ^ missing closing parenthesis 
diff --git a/test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.out b/test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_regexp.sh_a610798fefdacd8d0179a4b17cd757d00fb731be.out
diff --git a/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out b/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out
index 78f05ff..8ce275a 100644
--- a/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out
+++ b/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out
@@ -1,27 +1,27 @@
-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,log_hostname,log_msgid,log_pid,log_pri,log_procname,log_struct,log_syslog_tag,syslog_version,match_index,content
-2,<NULL>,2022-08-16 00:32:15.000,199000,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.cdscheduler""}"
-2,<NULL>,2022-08-16 00:32:15.000,199000,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}"
-5,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.install""}"
-5,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.authd""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" sharing output destination ""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,2,"{""value"":""/var/log/asl""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,3,"{""value"":"" with ASL Module ""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,4,"{""value"":""com.apple.asl""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,5,"{""value"":"".\n\tOutput parameters from ASL Module ""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,6,"{""value"":""com.apple.asl""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,7,"{""value"":"" override any specified in ASL Module ""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,8,"{""value"":""com.apple.authd""}"
-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,9,"{""value"":"".""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.authd""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" sharing output destination ""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,2,"{""value"":""/var/log/system.log""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,3,"{""value"":"" with ASL Module ""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,4,"{""value"":""com.apple.asl""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,5,"{""value"":"".\n\tOutput parameters from ASL Module ""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,6,"{""value"":""com.apple.asl""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,7,"{""value"":"" override any specified in ASL Module ""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,8,"{""value"":""com.apple.authd""}"
-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,9,"{""value"":"".""}"
-14,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.authd""}"
-14,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}"
+log_line,log_time,log_level,log_hostname,log_msgid,log_pid,log_pri,log_procname,log_struct,log_syslog_tag,syslog_version,log_part,log_idle_msecs,log_mark,log_comment,log_tags,log_annotations,log_filters,match_index,content
+2,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,199000,0,<NULL>,<NULL>,<NULL>,<NULL>,0,"{""value"":""com.apple.cdscheduler""}"
+2,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,199000,0,<NULL>,<NULL>,<NULL>,<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}"
+5,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,0,"{""value"":""com.apple.install""}"
+5,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,0,"{""value"":""com.apple.authd""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,1,"{""value"":"" sharing output destination ""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,2,"{""value"":""/var/log/asl""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,3,"{""value"":"" with ASL Module ""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,4,"{""value"":""com.apple.asl""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,5,"{""value"":"".\n\tOutput parameters from ASL Module ""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,6,"{""value"":""com.apple.asl""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,7,"{""value"":"" override any specified in ASL Module ""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,8,"{""value"":""com.apple.authd""}"
+8,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,9,"{""value"":"".""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,0,"{""value"":""com.apple.authd""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,1,"{""value"":"" sharing output destination ""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,2,"{""value"":""/var/log/system.log""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,3,"{""value"":"" with ASL Module ""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,4,"{""value"":""com.apple.asl""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,5,"{""value"":"".\n\tOutput parameters from ASL Module ""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,6,"{""value"":""com.apple.asl""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,7,"{""value"":"" override any specified in ASL Module ""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,8,"{""value"":""com.apple.authd""}"
+11,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,9,"{""value"":"".""}"
+14,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,0,"{""value"":""com.apple.authd""}"
+14,2022-08-16 00:32:15.000,info,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,<NULL>,0,0,<NULL>,<NULL>,<NULL>,<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}"
diff --git a/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out b/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out
index 655ce13..43adbdc 100644
--- a/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out
+++ b/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out
@@ -1,2 +1,2 @@
-match_index  content 
- 0 {"key":"foo","value":"123e"} 
+match_index  content  
+ 0 {"key":"foo","value":"123e"}
diff --git a/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out b/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out
index 6e952fb..2d39ef5 100644
--- a/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out
+++ b/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out
@@ -1,2 +1,2 @@
-match_index  content 
- 0 {"col_0":"abc","col_1":"def"} 
+match_index  content  
+ 0 {"col_0":"abc","col_1":"def"}
diff --git a/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out b/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out
index fef8e26..ae86ce4 100644
--- a/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out
+++ b/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out
@@ -1,2 +1,2 @@
-match_index  content 
- 0 {"key":"foo","value":"0x123e"} 
+match_index  content  
+ 0 {"key":"foo","value":"0x123e"}
diff --git a/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out b/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out
index d56bc20..9a85781 100644
--- a/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out
+++ b/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out
@@ -1,2 +1,2 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters  comp  opid  tid  user  item prc reason  req  sid  src  sub vpxa_update  line  file match_index  lro_id  entity  operation  SessionId  SessionSubId 
- 2  <NULL> 2022-06-02 11:58:12.376  182 info   0  <NULL>  <NULL>  <NULL> <NULL> e3979f6 45709 <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL> <NULL> <NULL>  0 lro-846064 SessionManager vim.SessionManager.sessionIsActive 52626140-422b-6287-b4e4-344192c6a01d 523e0a4b-6e83-6bcd-9342-22502dd89866 
+log_line  log_time  log_level  comp   opid   tid   user   file   item   line  prc  reason  req   sid   src   sub  vpxa_update match_index  lro_id   entity   operation   SessionId   SessionSubId  log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 2 2022-06-02 11:58:12.376 info <NULL> e3979f6 45709 <NULL> <NULL> <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro <NULL> 0 lro-846064 SessionManager vim.SessionManager.sessionIsActive 52626140-422b-6287-b4e4-344192c6a01d 523e0a4b-6e83-6bcd-9342-22502dd89866 <NULL>  182 0 <NULL> <NULL> <NULL> <NULL>
diff --git a/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out b/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out
index c92cf49..20f031d 100644
--- a/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out
+++ b/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out
@@ -1,12 +1,12 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters match_index  name 
- 2  <NULL> 2022-08-16 00:32:15.000  199000 info   0  <NULL>  <NULL>  <NULL>  0 com.apple.cdscheduler 
- 5 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 0 com.apple.install
- 8  <NULL> 2022-08-16 00:32:15.000  0 info   0  <NULL>  <NULL>  <NULL>  0 com.apple.authd 
- 8 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 1 com.apple.asl
- 8  <NULL> 2022-08-16 00:32:15.000  0 info   0  <NULL>  <NULL>  <NULL>  2 com.apple.asl 
- 8 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 3 com.apple.authd
- 11  <NULL> 2022-08-16 00:32:15.000  0 info   0  <NULL>  <NULL>  <NULL>  0 com.apple.authd 
- 11 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 1 com.apple.asl
- 11  <NULL> 2022-08-16 00:32:15.000  0 info   0  <NULL>  <NULL>  <NULL>  2 com.apple.asl 
- 11 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 3 com.apple.authd
- 14  <NULL> 2022-08-16 00:32:15.000  0 info   0  <NULL>  <NULL>  <NULL>  0 com.apple.authd 
+log_line  log_time  log_level match_index  name  log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 2 2022-08-16 00:32:15.000 info 0 com.apple.cdscheduler <NULL>  199000 0 <NULL> <NULL> <NULL> <NULL>
+ 5 2022-08-16 00:32:15.000 info 0 com.apple.install <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 8 2022-08-16 00:32:15.000 info   0 com.apple.authd   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 8 2022-08-16 00:32:15.000 info   1 com.apple.asl   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 8 2022-08-16 00:32:15.000 info 2 com.apple.asl <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 8 2022-08-16 00:32:15.000 info 3 com.apple.authd <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 11 2022-08-16 00:32:15.000 info   0 com.apple.authd   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 11 2022-08-16 00:32:15.000 info   1 com.apple.asl   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 11 2022-08-16 00:32:15.000 info 2 com.apple.asl <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 11 2022-08-16 00:32:15.000 info 3 com.apple.authd <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 14 2022-08-16 00:32:15.000 info   0 com.apple.authd   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
diff --git a/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out b/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out
index 738eab3..ed52844 100644
--- a/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out
+++ b/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out
@@ -1,4 +1,4 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters match_index user pid cpu_pct mem_pct vsz rss tty stat start_time cpu_time  cmd  cmd_name cmd_args 
- 0  <NULL> 2022-06-02 00:01:01.000  0 info   0  <NULL>  <NULL>  <NULL>  1 root  2  0  0  0  0 ?  S  Jun01  0:00  [kthreadd] [kthreadd]  <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  1 root  2  0  0  0  0 ?  S  Jun01  0:00  [kthreadd] [kthreadd]  <NULL>
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  1 root  2  0  0  0  0 ?  S  Jun01  0:00  [kthreadd] [kthreadd]  <NULL> 
+log_line  log_time  log_level match_index user  ppid  pid  cpu_pct   mem_pct   vsz   rss  tty stat start_time cpu_time maj_flt min_flt  cmd   cmd_name  cmd_args log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2022-06-02 00:01:01.000 info 1 root <NULL> 2  0  0  0  0 ? S Jun01 0:00 <NULL> <NULL> [kthreadd] [kthreadd] <NULL> <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info 1 root <NULL> 2  0  0  0  0 ? S Jun01 0:00 <NULL> <NULL> [kthreadd] [kthreadd] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 30 2022-06-02 00:03:01.000 info   1 root <NULL>  2  0  0  0  0 ?  S  Jun01  0:00   <NULL>  <NULL> [kthreadd] [kthreadd]  <NULL>  <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
diff --git a/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out b/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out
index 326fcbd..7fa2742 100644
--- a/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out
+++ b/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out
@@ -1,24 +1,24 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters match_index user pid cpu_pct mem_pct  vsz rss tty stat start_time cpu_time  cmd  cmd_name  cmd_args 
- 0  <NULL> 2022-06-02 00:01:01.000  0 info   0  <NULL>  <NULL>  <NULL>  0 root  1  0  0 158392 7792 ?  Ss  Jun01  0:14  /lib/systemd/systemd --switched-root --system --deserialize 16 /lib/systemd/systemd  --switched-root --system --deserialize 16 
- 0 <NULL> 2022-06-02 00:01:01.000 0 info 0 <NULL> <NULL> <NULL> 1 root 2 0 0 0 0 ? S Jun01 0:00 [kthreadd] [kthreadd] <NULL>
- 0  <NULL> 2022-06-02 00:01:01.000  0 info   0  <NULL>  <NULL>  <NULL>  2 root  3  0  0  0  0 ?  I<  Jun01  0:00  [rcu_gp]  [rcu_gp]  <NULL> 
- 0 <NULL> 2022-06-02 00:01:01.000 0 info 0 <NULL> <NULL> <NULL> 3 root 4 0 0 0 0 ? I< Jun01 0:00 [rcu_par_gp] [rcu_par_gp] <NULL>
- 0  <NULL> 2022-06-02 00:01:01.000  0 info   0  <NULL>  <NULL>  <NULL>  4 root  6  0  0  0  0 ?  I<  Jun01  0:00  [kworker/0:0H-kblockd]  [kworker/0:0H-kblockd] <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  0 root  1  0  0 158392 7792 ?  Ss  Jun01  0:14  /lib/systemd/systemd --switched-root --system --deserialize 16 /lib/systemd/systemd  --switched-root --system --deserialize 16
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  1 root  2  0  0  0  0 ?  S  Jun01  0:00  [kthreadd]  [kthreadd]  <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL> <NULL> <NULL> 2 root 3 0 0 0 0 ? I< Jun01 0:00 [rcu_gp] [rcu_gp] <NULL>
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  3 root  4  0  0  0  0 ?  I<  Jun01  0:00  [rcu_par_gp]  [rcu_par_gp]  <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL> <NULL> <NULL> 4 root 6 0 0 0 0 ? I< Jun01 0:00 [kworker/0:0H-kblockd] [kworker/0:0H-kblockd] <NULL>
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  5 root  8  0  0  0  0 ?  I<  Jun01  0:00  [mm_percpu_wq]  [mm_percpu_wq]  <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL> <NULL> <NULL> 6 root 9 0 0 0 0 ? S Jun01 0:00 [ksoftirqd/0] [ksoftirqd/0] <NULL>
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  7 root  10  0  0  0  0 ?  I  Jun01  0:23  [rcu_sched]  [rcu_sched]  <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL> <NULL> <NULL> 8 root 11 0 0 0 0 ? I Jun01 0:00 [rcu_bh] [rcu_bh] <NULL>
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  9 root  12  0  0  0  0 ?  S  Jun01  0:00  [migration/0]  [migration/0]  <NULL> 
- 12  <NULL> 2022-06-02 00:02:01.000  60000 info   0  <NULL> <NULL> <NULL> 10 root 14 0 0 0 0 ? S Jun01 0:00 [cpuhp/0] [cpuhp/0] <NULL>
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  0 root  1  0  0 158392 7792 ?  Ss  Jun01  0:14  /lib/systemd/systemd --switched-root --system --deserialize 16 /lib/systemd/systemd  --switched-root --system --deserialize 16 
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL> <NULL> <NULL> 1 root 2 0 0 0 0 ? S Jun01 0:00 [kthreadd] [kthreadd] <NULL>
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  2 root  3  0  0  0  0 ?  I<  Jun01  0:00  [rcu_gp]  [rcu_gp]  <NULL> 
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL> <NULL> <NULL> 3 root 4 0 0 0 0 ? I< Jun01 0:00 [rcu_par_gp] [rcu_par_gp] <NULL>
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  4 root  6  0  0  0  0 ?  I<  Jun01  0:00  [kworker/0:0H-kblockd]  [kworker/0:0H-kblockd] <NULL> 
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL> <NULL> <NULL> 5 root 8 0 0 0 0 ? I< Jun01 0:00 [mm_percpu_wq] [mm_percpu_wq] <NULL>
- 30  <NULL> 2022-06-02 00:03:01.000  60000 info   0  <NULL>  <NULL>  <NULL>  6 root  9  0  0  0  0 ?  S  Jun01  0:00  [ksoftirqd/0]  [ksoftirqd/0]  <NULL> 
+log_line  log_time  log_level match_index user  ppid  pid  cpu_pct   mem_pct   vsz   rss  tty stat start_time cpu_time maj_flt min_flt  cmd   cmd_name   cmd_args  log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters 
+ 0 2022-06-02 00:01:01.000 info 0 root <NULL> 1  0  0  158392  7792 ? Ss Jun01 0:14 <NULL> <NULL> /lib/systemd/systemd --switched-root --system --deserialize 16 /lib/systemd/systemd --switched-root --system --deserialize 16 <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 0 2022-06-02 00:01:01.000 info 1 root <NULL> 2  0  0  0  0 ? S Jun01 0:00 <NULL> <NULL> [kthreadd] [kthreadd] <NULL> <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 0 2022-06-02 00:01:01.000 info   2 root <NULL>  3  0  0  0  0 ?  I<  Jun01  0:00   <NULL>  <NULL> [rcu_gp]  [rcu_gp]  <NULL>   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 0 2022-06-02 00:01:01.000 info   3 root <NULL>  4  0  0  0  0 ?  I<  Jun01  0:00   <NULL>  <NULL> [rcu_par_gp]  [rcu_par_gp]  <NULL>   <NULL>  0  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 0 2022-06-02 00:01:01.000 info 4 root <NULL> 6  0  0  0  0 ? I< Jun01 0:00 <NULL> <NULL> [kworker/0:0H-kblockd] [kworker/0:0H-kblockd] <NULL> <NULL>  0 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info 0 root <NULL> 1  0  0  158392  7792 ? Ss Jun01 0:14 <NULL> <NULL> /lib/systemd/systemd --switched-root --system --deserialize 16 /lib/systemd/systemd --switched-root --system --deserialize 16 <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info   1 root <NULL>  2  0  0  0  0 ?  S  Jun01  0:00   <NULL>  <NULL> [kthreadd]  [kthreadd]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 12 2022-06-02 00:02:01.000 info   2 root <NULL>  3  0  0  0  0 ?  I<  Jun01  0:00   <NULL>  <NULL> [rcu_gp]  [rcu_gp]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 12 2022-06-02 00:02:01.000 info 3 root <NULL> 4  0  0  0  0 ? I< Jun01 0:00 <NULL> <NULL> [rcu_par_gp] [rcu_par_gp] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info 4 root <NULL> 6  0  0  0  0 ? I< Jun01 0:00 <NULL> <NULL> [kworker/0:0H-kblockd] [kworker/0:0H-kblockd] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info   5 root <NULL>  8  0  0  0  0 ?  I<  Jun01  0:00   <NULL>  <NULL> [mm_percpu_wq]  [mm_percpu_wq]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 12 2022-06-02 00:02:01.000 info   6 root <NULL>  9  0  0  0  0 ?  S  Jun01  0:00   <NULL>  <NULL> [ksoftirqd/0]  [ksoftirqd/0]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 12 2022-06-02 00:02:01.000 info 7 root <NULL> 10  0  0  0  0 ? I Jun01 0:23 <NULL> <NULL> [rcu_sched] [rcu_sched] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info 8 root <NULL> 11  0  0  0  0 ? I Jun01 0:00 <NULL> <NULL> [rcu_bh] [rcu_bh] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 12 2022-06-02 00:02:01.000 info   9 root <NULL>  12  0  0  0  0 ?  S  Jun01  0:00   <NULL>  <NULL> [migration/0]  [migration/0]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 12 2022-06-02 00:02:01.000 info   10 root <NULL>  14  0  0  0  0 ?  S  Jun01  0:00   <NULL>  <NULL> [cpuhp/0]  [cpuhp/0]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 30 2022-06-02 00:03:01.000 info 0 root <NULL> 1  0  0  158392  7792 ? Ss Jun01 0:14 <NULL> <NULL> /lib/systemd/systemd --switched-root --system --deserialize 16 /lib/systemd/systemd --switched-root --system --deserialize 16 <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 30 2022-06-02 00:03:01.000 info 1 root <NULL> 2  0  0  0  0 ? S Jun01 0:00 <NULL> <NULL> [kthreadd] [kthreadd] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 30 2022-06-02 00:03:01.000 info   2 root <NULL>  3  0  0  0  0 ?  I<  Jun01  0:00   <NULL>  <NULL> [rcu_gp]  [rcu_gp]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 30 2022-06-02 00:03:01.000 info   3 root <NULL>  4  0  0  0  0 ?  I<  Jun01  0:00   <NULL>  <NULL> [rcu_par_gp]  [rcu_par_gp]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
+ 30 2022-06-02 00:03:01.000 info 4 root <NULL> 6  0  0  0  0 ? I< Jun01 0:00 <NULL> <NULL> [kworker/0:0H-kblockd] [kworker/0:0H-kblockd] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 30 2022-06-02 00:03:01.000 info 5 root <NULL> 8  0  0  0  0 ? I< Jun01 0:00 <NULL> <NULL> [mm_percpu_wq] [mm_percpu_wq] <NULL> <NULL>  60000 0 <NULL> <NULL> <NULL> <NULL>
+ 30 2022-06-02 00:03:01.000 info   6 root <NULL>  9  0  0  0  0 ?  S  Jun01  0:00   <NULL>  <NULL> [ksoftirqd/0]  [ksoftirqd/0]  <NULL>   <NULL>  60000  0  <NULL>  <NULL>  <NULL>  <NULL> 
diff --git a/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out b/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out
index 767d785..263723f 100644
--- a/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out
+++ b/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out
@@ -1,6 +1,6 @@
-log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters  comp  opid  tid  user  item prc reason  req  sid  src  sub vpxa_update  line  file match_index  lro_id  entity  operation  SessionId  SessionSubId  log_body 
- 0  <NULL> 2022-06-02 11:58:12.193  0 info   0  <NULL>  <NULL>  <NULL> <NULL> 7e1280cf  45715 <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL> <NULL> <NULL>  0 lro-846063 SessionManager  vim.SessionManager.sessionIsActive  528e6e0c-246d-58b5-3234-278c6e0c5d0d 52c289ac-2563-48d5-8a8e-f178da022c0d [VpxLRO] -- BEGIN lro-846063 -- SessionManager -- vim.Sessio⋯8b5-3234-278c6e0c5d0d(52c289ac-2563-48d5-8a8e-f178da022c0d) 
- 2  <NULL> 2022-06-02 11:58:12.376  182 info   0  <NULL>  <NULL>  <NULL> <NULL> e3979f6  45709 <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL> <NULL> <NULL>  0 lro-846064 SessionManager  vim.SessionManager.sessionIsActive  52626140-422b-6287-b4e4-344192c6a01d 523e0a4b-6e83-6bcd-9342-22502dd89866 [VpxLRO] -- BEGIN lro-846064 -- SessionManager -- vim.Sessio⋯287-b4e4-344192c6a01d(523e0a4b-6e83-6bcd-9342-22502dd89866)
- 4  <NULL> 2022-06-02 11:58:12.623  246 info   0  <NULL>  <NULL>  <NULL> <NULL> l3wrhr4o-cbf-h5:70001034-60 47524 <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL> <NULL> <NULL>  0 lro-846066 ChangeLogCollector vim.cdc.ChangeLogCollector.waitForChanges 526861fc-0c28-1930-ae5e-d8c2772bf8c2 52a7a308-9646-c054-f1e7-16131c1a7db6 [VpxLRO] -- BEGIN lro-846066 -- ChangeLogCollector -- vim.c⋯1930-ae5e-d8c2772bf8c2(52a7a308-9646-c054-f1e7-16131c1a7db6) 
- 6  <NULL> 2022-06-02 11:58:12.736  113 info   0  <NULL>  <NULL>  <NULL> <NULL> 499b440  48432 <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL> <NULL> <NULL>  0 lro-846067 SessionManager vim.SessionManager.sessionIsActive 521fe9f6-d061-11a2-ac86-badb3c071373 524cba9b-2cc4-9b70-32e4-421452a404d7 [VpxLRO] -- BEGIN lro-846067 -- SessionManager -- vim.Sessio⋯1a2-ac86-badb3c071373(524cba9b-2cc4-9b70-32e4-421452a404d7)
- 8  <NULL> 2022-06-02 11:58:12.740  4 info   0  <NULL>  <NULL>  <NULL> <NULL> 55a419df  48035 <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL> <NULL> <NULL>  0 lro-846068 SessionManager  vim.SessionManager.sessionIsActive  52585600-b0bc-76b1-c4d5-4d7708671c5e 523b68ba-e312-9909-a3ca-39cc86aaf206 [VpxLRO] -- BEGIN lro-846068 -- SessionManager -- vim.Sessio⋯6b1-c4d5-4d7708671c5e(523b68ba-e312-9909-a3ca-39cc86aaf206) 
+log_line  log_time  log_level  comp   opid   tid   user   file   item   line  prc  reason  req   sid   src   sub  vpxa_update match_index  lro_id   entity   operation   SessionId   SessionSubId  log_part log_idle_msecs log_mark log_comment log_tags log_annotations log_filters  log_body  
+ 0 2022-06-02 11:58:12.193 info <NULL> 7e1280cf 45715 <NULL> <NULL> <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro <NULL> 0 lro-846063 SessionManager vim.SessionManager.sessionIsActive 528e6e0c-246d-58b5-3234-278c6e0c5d0d 52c289ac-2563-48d5-8a8e-f178da022c0d <NULL>  0 0 <NULL> <NULL> <NULL> <NULL> [VpxLRO] -- BEGIN lro-846063 -- SessionManager -- vim.Sessio⋯8b5-3234-278c6e0c5d0d(52c289ac-2563-48d5-8a8e-f178da022c0d)
+ 2 2022-06-02 11:58:12.376 info <NULL> e3979f6 45709 <NULL> <NULL> <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro <NULL> 0 lro-846064 SessionManager vim.SessionManager.sessionIsActive 52626140-422b-6287-b4e4-344192c6a01d 523e0a4b-6e83-6bcd-9342-22502dd89866 <NULL>   182 0 <NULL> <NULL> <NULL> <NULL> [VpxLRO] -- BEGIN lro-846064 -- SessionManager -- vim.Sessio⋯287-b4e4-344192c6a01d(523e0a4b-6e83-6bcd-9342-22502dd89866)
+ 4 2022-06-02 11:58:12.623 info  <NULL> l3wrhr4o-cbf-h5:70001034-60 47524 <NULL> <NULL> <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL>  0 lro-846066 ChangeLogCollector vim.cdc.ChangeLogCollector.waitForChanges 526861fc-0c28-1930-ae5e-d8c2772bf8c2 52a7a308-9646-c054-f1e7-16131c1a7db6  <NULL>  246  0  <NULL>  <NULL>  <NULL>  <NULL> [VpxLRO] -- BEGIN lro-846066 -- ChangeLogCollector -- vim.c⋯1930-ae5e-d8c2772bf8c2(52a7a308-9646-c054-f1e7-16131c1a7db6) 
+ 6 2022-06-02 11:58:12.736 info  <NULL> 499b440  48432 <NULL> <NULL> <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro  <NULL>  0 lro-846067 SessionManager  vim.SessionManager.sessionIsActive  521fe9f6-d061-11a2-ac86-badb3c071373 524cba9b-2cc4-9b70-32e4-421452a404d7  <NULL>   113  0  <NULL>  <NULL>  <NULL>  <NULL> [VpxLRO] -- BEGIN lro-846067 -- SessionManager -- vim.Sessio⋯1a2-ac86-badb3c071373(524cba9b-2cc4-9b70-32e4-421452a404d7) 
+ 8 2022-06-02 11:58:12.740 info <NULL> 55a419df 48035 <NULL> <NULL> <NULL> <NULL> vpxd <NULL> <NULL> <NULL> Originator@6876 vpxLro <NULL> 0 lro-846068 SessionManager vim.SessionManager.sessionIsActive 52585600-b0bc-76b1-c4d5-4d7708671c5e 523b68ba-e312-9909-a3ca-39cc86aaf206 <NULL>   4 0 <NULL> <NULL> <NULL> <NULL> [VpxLRO] -- BEGIN lro-846068 -- SessionManager -- vim.Sessio⋯6b1-c4d5-4d7708671c5e(523b68ba-e312-9909-a3ca-39cc86aaf206)
diff --git a/test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.err b/test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.err
diff --git a/test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.out b/test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.out
new file mode 100644
index 0000000..2bc4087
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_00363f89638cb968584afc1ca0a4f52b2cf7a2ae.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column parse_url('https://example.com/sea%26rch?flag&flag2&=def&flag3=abc+def#frag1%20space'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/sea&rch","query":"flag&flag2&=def&flag3=abc+def","parameters":{"flag":null,"flag2":null,"":"def","flag3":"abc def"},"fragment":"frag1 space"}
diff --git a/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out b/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out
index e144653..49ed7e2 100644
--- a/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out
+++ b/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out
@@ -1,2 +1,2 @@
Row 0:
- Column parse_url('https://example.com/'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/","query":null,"parameters":null,"fragment":null}
+ Column parse_url('https://example.com/'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/","query":null,"parameters":null,"fragment":null}
diff --git a/test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.err b/test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.err
diff --git a/test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.out b/test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.out
new file mode 100644
index 0000000..bda6691
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_0db1c1b406ba6ef2dadcbe90a3fdbe794a664eb5.out
@@ -0,0 +1,2 @@
+humanize_id('foo') humanize_id('bar') 
+foo bar
diff --git a/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out b/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out
index eea58f2..7d625dd 100644
--- a/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out
+++ b/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out
@@ -1,198 +1,198 @@
-anonymize(bro_id_resp_h)
+anonymize(bro_id_resp_h) 
10.0.0.1
10.0.0.2
+10.0.0.2 
+10.0.0.2 
10.0.0.2
10.0.0.2
-10.0.0.2
-10.0.0.2
-10.0.0.2
-10.0.0.3
+10.0.0.2 
+10.0.0.3 
10.0.0.4
10.0.0.1
-10.0.0.4
-10.0.0.4
+10.0.0.4 
+10.0.0.4 
10.0.0.5
10.0.0.4
-10.0.0.4
-10.0.0.1
+10.0.0.4 
+10.0.0.1 
10.0.0.6
10.0.0.4
-10.0.0.7
-10.0.0.8
-10.0.0.8
+10.0.0.7 
+10.0.0.8 
10.0.0.8
10.0.0.8
+10.0.0.8 
+10.0.0.8 
10.0.0.8
10.0.0.8
-10.0.0.8
-10.0.0.8
-10.0.0.9
+10.0.0.8 
+10.0.0.9 
10.0.0.10
10.0.0.5
+10.0.0.11 
+10.0.0.11 
10.0.0.11
10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.5
10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.11
10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.11
10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.5
+10.0.0.11 
+10.0.0.5 
10.0.0.10
10.0.0.6
-10.0.0.12
-10.0.0.1
+10.0.0.12 
+10.0.0.1 
10.0.0.1
10.0.0.6
-10.0.0.11
-10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.13
10.0.0.6
-10.0.0.11
-10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.11
10.0.0.13
+10.0.0.6 
+10.0.0.6 
10.0.0.6
10.0.0.6
+10.0.0.6 
+10.0.0.6 
10.0.0.6
10.0.0.6
-10.0.0.6
-10.0.0.6
-10.0.0.6
-10.0.0.6
-10.0.0.14
-10.0.0.6
+10.0.0.14 
+10.0.0.6 
10.0.0.14
10.0.0.15
-10.0.0.16
-10.0.0.6
+10.0.0.16 
+10.0.0.6 
10.0.0.16
10.0.0.17
-10.0.0.5
-10.0.0.1
+10.0.0.5 
+10.0.0.1 
10.0.0.17
10.0.0.15
-10.0.0.17
-10.0.0.18
+10.0.0.17 
+10.0.0.18 
10.0.0.18
10.0.0.10
-10.0.0.5
-10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
-10.0.0.11
+10.0.0.5 
+10.0.0.11 
10.0.0.11
10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.11
10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.18
10.0.0.11
-10.0.0.11
-10.0.0.11
+10.0.0.11 
+10.0.0.11 
10.0.0.18
10.0.0.18
+10.0.0.18 
+10.0.0.19 
10.0.0.18
10.0.0.19
-10.0.0.18
-10.0.0.19
-10.0.0.19
-10.0.0.19
-10.0.0.19
-10.0.0.19
+10.0.0.19 
+10.0.0.19 
10.0.0.19
10.0.0.19
+10.0.0.19 
+10.0.0.19 
10.0.0.19
10.0.0.20
-10.0.0.20
-10.0.0.21
+10.0.0.20 
+10.0.0.21 
10.0.0.18
10.0.0.18
-10.0.0.22
-10.0.0.6
-10.0.0.5
-10.0.0.5
+10.0.0.22 
+10.0.0.6 
10.0.0.5
10.0.0.5
+10.0.0.5 
+10.0.0.5 
10.0.0.6
10.0.0.23
-10.0.0.24
-10.0.0.23
-10.0.0.23
-10.0.0.23
-10.0.0.23
-10.0.0.23
-10.0.0.23
-10.0.0.23
+10.0.0.24 
+10.0.0.23 
10.0.0.23
10.0.0.23
+10.0.0.23 
+10.0.0.23 
10.0.0.23
10.0.0.23
+10.0.0.23 
+10.0.0.23 
10.0.0.23
10.0.0.23
+10.0.0.23 
+10.0.0.23 
10.0.0.23
10.0.0.24
-10.0.0.24
-10.0.0.24
+10.0.0.24 
+10.0.0.24 
10.0.0.24
10.0.0.25
-10.0.0.26
-10.0.0.27
-10.0.0.23
+10.0.0.26 
+10.0.0.27 
10.0.0.23
10.0.0.23
-10.0.0.25
+10.0.0.23 
+10.0.0.25 
10.0.0.26
10.0.0.24
-10.0.0.24
-10.0.0.27
+10.0.0.24 
+10.0.0.27 
10.0.0.23
10.0.0.25
-10.0.0.26
-10.0.0.24
+10.0.0.26 
+10.0.0.24 
10.0.0.24
10.0.0.27
-10.0.0.25
-10.0.0.26
+10.0.0.25 
+10.0.0.26 
10.0.0.24
10.0.0.24
-10.0.0.27
-10.0.0.28
+10.0.0.27 
+10.0.0.28 
10.0.0.23
10.0.0.25
-10.0.0.24
-10.0.0.24
+10.0.0.24 
+10.0.0.24 
10.0.0.27
10.0.0.26
-10.0.0.23
-10.0.0.25
+10.0.0.23 
+10.0.0.25 
10.0.0.26
10.0.0.24
-10.0.0.24
-10.0.0.27
-10.0.0.23
-10.0.0.23
-10.0.0.23
+10.0.0.24 
+10.0.0.27 
10.0.0.23
10.0.0.23
+10.0.0.23 
+10.0.0.23 
10.0.0.23
10.0.0.23
+10.0.0.23 
+10.0.0.23 
10.0.0.23
10.0.0.23
-10.0.0.23
-10.0.0.27
-10.0.0.23
+10.0.0.27 
+10.0.0.23 
10.0.0.25
10.0.0.24
-10.0.0.24
-10.0.0.27
+10.0.0.24 
+10.0.0.27 
10.0.0.26
diff --git a/test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.err b/test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.err
new file mode 100644
index 0000000..618c731
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.err
@@ -0,0 +1 @@
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"unexpected JSON value","attrs":[]},"reason":{"str":"","attrs":[]},"snippets":[{"source":"arg","line":1,"content":{"str":"123","attrs":[{"start":0,"end":-1,"type":"role","value":42}]}}],"notes":[],"help":{"str":"Available Properties\n scheme \n username \n password \n host \n port \n path \n query \n parameters/ \n fragment","attrs":[{"start":0,"end":20,"type":"role","value":64},{"start":23,"end":29,"type":"role","value":49},{"start":33,"end":41,"type":"role","value":49},{"start":45,"end":53,"type":"role","value":49},{"start":57,"end":61,"type":"role","value":49},{"start":65,"end":69,"type":"role","value":49},{"start":73,"end":77,"type":"role","value":49},{"start":81,"end":86,"type":"role","value":49},{"start":90,"end":100,"type":"role","value":49},{"start":100,"end":101,"type":"role","value":49},{"start":105,"end":113,"type":"role","value":49}]}}
diff --git a/test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.out b/test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_1a1e07b6f72bce5402037761fa8afd66c05b4c34.out
diff --git a/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err b/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err
deleted file mode 100644
index e3d40ab..0000000
--- a/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err
+++ /dev/null
@@ -1 +0,0 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid URL: “https://bad@[fe::”","attrs":[]},"reason":{"str":"Port number was not a decimal number between 0 and 65535","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out b/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out
index 061b9ed..5576c1f 100644
--- a/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out
+++ b/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out
@@ -1,2 +1,2 @@
Row 0:
- Column parse_url('https://example.com/search?flag&flag2&=def'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag&flag2&=def","parameters":{"flag":null,"flag2":null,"":"def"},"fragment":null}
+ Column parse_url('https://example.com/search?flag&flag2&=def'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag&flag2&=def","parameters":{"flag":null,"flag2":null,"":"def"},"fragment":null}
diff --git a/test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.err b/test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.err
new file mode 100644
index 0000000..306ed4b
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.err
@@ -0,0 +1 @@
+error: sqlite3_exec failed -- lnav-error:{"level":"warning","message":{"str":"unexpected value for property “/unknown”","attrs":[{"start":33,"end":41,"type":"role","value":49}]},"reason":{"str":"","attrs":[]},"snippets":[{"source":"arg","line":1,"content":{"str":"{\"unknown\":\"abc\"}","attrs":[{"start":0,"end":-1,"type":"role","value":42}]}}],"notes":[],"help":{"str":"Available Properties\n scheme \n username \n password \n host \n port \n path \n query \n parameters/ \n fragment","attrs":[{"start":0,"end":20,"type":"role","value":64},{"start":23,"end":29,"type":"role","value":49},{"start":33,"end":41,"type":"role","value":49},{"start":45,"end":53,"type":"role","value":49},{"start":57,"end":61,"type":"role","value":49},{"start":65,"end":69,"type":"role","value":49},{"start":73,"end":77,"type":"role","value":49},{"start":81,"end":86,"type":"role","value":49},{"start":90,"end":100,"type":"role","value":49},{"start":100,"end":101,"type":"role","value":49},{"start":105,"end":113,"type":"role","value":49}]}}
diff --git a/test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.out b/test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_57fc889eefb98571ecf3892ad670646613bf13a3.out
diff --git a/test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.err b/test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.err
new file mode 100644
index 0000000..66d898c
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.err
@@ -0,0 +1 @@
+error: sqlite3_exec failed -- lnav-error:{"level":"warning","message":{"str":"unexpected value for property “/#”","attrs":[{"start":33,"end":35,"type":"role","value":49}]},"reason":{"str":"","attrs":[]},"snippets":[{"source":"arg","line":1,"content":{"str":"[1, 2, 3]","attrs":[{"start":0,"end":-1,"type":"role","value":42}]}}],"notes":[],"help":{"str":"Available Properties\n scheme \n username \n password \n host \n port \n path \n query \n parameters/ \n fragment","attrs":[{"start":0,"end":20,"type":"role","value":64},{"start":23,"end":29,"type":"role","value":49},{"start":33,"end":41,"type":"role","value":49},{"start":45,"end":53,"type":"role","value":49},{"start":57,"end":61,"type":"role","value":49},{"start":65,"end":69,"type":"role","value":49},{"start":73,"end":77,"type":"role","value":49},{"start":81,"end":86,"type":"role","value":49},{"start":90,"end":100,"type":"role","value":49},{"start":100,"end":101,"type":"role","value":49},{"start":105,"end":113,"type":"role","value":49}]}}
diff --git a/test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.out b/test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_68860c50e91cd6c1f2004ee0414a6e930ed42c87.out
diff --git a/test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.err b/test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.err
diff --git a/test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.out b/test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.out
new file mode 100644
index 0000000..a873544
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_6ac7ab1f90c064944ff66bef5974f050c8227d4b.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column encode('hi' || char(10), 'hex'): 68690a
diff --git a/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out b/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out
index d1dcc93..0a56fcc 100644
--- a/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out
+++ b/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out
@@ -1,2 +1,2 @@
Row 0:
- Column parse_url('https://example.com/sea%26rch?flag&flag2&=def#frag1%20space'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/sea&rch","query":"flag&flag2&=def","parameters":{"flag":null,"flag2":null,"":"def"},"fragment":"frag1 space"}
+ Column parse_url('https://example.com/sea%26rch?flag&flag2&=def#frag1%20space'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/sea&rch","query":"flag&flag2&=def","parameters":{"flag":null,"flag2":null,"":"def"},"fragment":"frag1 space"}
diff --git a/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out b/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out
index 84c7397..01169ce 100644
--- a/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out
+++ b/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out
@@ -1,2 +1,2 @@
Row 0:
- Column parse_url('https://example.com/search?flag&flag2'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag&flag2","parameters":{"flag":null,"flag2":null},"fragment":null}
+ Column parse_url('https://example.com/search?flag&flag2'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag&flag2","parameters":{"flag":null,"flag2":null},"fragment":null}
diff --git a/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err b/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err
index a92048a..29338d9 100644
--- a/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err
+++ b/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to regexp_match(re, str) failed","attrs":[{"start":8,"end":20,"type":"role","value":47},{"start":21,"end":23,"type":"role","value":46},{"start":25,"end":28,"type":"role","value":46},{"start":8,"end":29,"type":"role","value":60}]},"reason":{"str":"regular expression does not have any captures","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to regexp_match(re, str) failed","attrs":[{"start":8,"end":20,"type":"role","value":49},{"start":21,"end":23,"type":"role","value":48},{"start":25,"end":28,"type":"role","value":48},{"start":8,"end":29,"type":"role","value":65}]},"reason":{"str":"regular expression does not have any captures","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out b/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out
index f93d348..90daa31 100644
--- a/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out
+++ b/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out
@@ -1,2 +1,2 @@
-regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;')
+regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;') 
{"col_0":"abc","col_1":"def"}
diff --git a/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err b/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err
index 475a9b2..7435892 100644
--- a/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err
+++ b/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid URL: “https://example.com:100000”","attrs":[]},"reason":{"str":"Port number was not a decimal number between 0 and 65535","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid URL: https://example.com:100000","attrs":[{"start":13,"end":39,"type":"role","value":56}]},"reason":{"str":"Port number was not a decimal number between 0 and 65535","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out b/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out
index e93f55d..7b9ef25 100644
--- a/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out
+++ b/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out
@@ -1,2 +1,2 @@
Row 0:
- Column parse_url('https://example.com'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/","query":null,"parameters":null,"fragment":null}
+ Column parse_url('https://example.com'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/","query":null,"parameters":null,"fragment":null}
diff --git a/test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.err b/test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.err
diff --git a/test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.out b/test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.out
new file mode 100644
index 0000000..18df174
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_b8ebe81c4881f704624a65ec91be0868c310f6ed.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column unparse_url(NULL): (null)
diff --git a/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out b/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out
index daf8e0a..ee5f9c7 100644
--- a/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out
+++ b/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out
@@ -1,2 +1,2 @@
Row 0:
- Column parse_url('https://example.com/search?flag'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag","parameters":{"flag":null},"fragment":null}
+ Column parse_url('https://example.com/search?flag'): {"scheme":"https","username":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag","parameters":{"flag":null},"fragment":null}
diff --git a/test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.err b/test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.err
diff --git a/test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.out b/test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.out
new file mode 100644
index 0000000..269441a
--- /dev/null
+++ b/test/expected/test_sql_str_func.sh_cdc7b869132c33cae3c2565806c2396e1b4d6253.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column unparse_url('{}'): (null)
diff --git a/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err b/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err
index f4c8399..c9bad60 100644
--- a/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err
+++ b/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- Invalid regular expression: missing closing parenthesis
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"“(” is not a valid regular expression","attrs":[]},"reason":{"str":"missing closing parenthesis","attrs":[]},"snippets":[{"source":"pattern","line":0,"content":{"str":"(\n ^ missing closing parenthesis","attrs":[{"start":0,"end":1,"type":"role","value":3},{"start":0,"end":1,"type":"style","value":2359296},{"start":0,"end":1,"type":"role","value":5},{"start":3,"end":5,"type":"role","value":5},{"start":5,"end":32,"type":"role","value":5},{"start":0,"end":-1,"type":"role","value":42}]}}],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out b/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out
index 659abf7..0f59225 100644
--- a/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out
+++ b/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out
@@ -5,16 +5,11 @@
"col_0": [
"VpxLRO"
],
- "col_1": "--",
- "col_2": "BEGIN",
- "col_3": "lro-846063",
- "col_4": "--",
- "col_5": "SessionManager",
- "col_6": "--",
- "col_7": "vim.SessionManager.sessionIsActive",
- "col_8": "--",
- "col_9": "528e6e0c-246d-58b5-3234-278c6e0c5d0d",
- "col_10": [
+ "BEGIN": "lro-846063",
+ "col_1": "SessionManager",
+ "col_2": "vim.SessionManager.sessionIsActive",
+ "col_3": "528e6e0c-246d-58b5-3234-278c6e0c5d0d",
+ "col_4": [
"52c289ac-2563-48d5-8a8e-f178da022c0d"
]
}
@@ -25,22 +20,22 @@
"col_0": [
"VpxLRO"
],
- "col_1": "--",
- "col_2": "FINISH",
- "col_3": "lro-846063"
+ "FINISH": "lro-846063"
}
},
{
"log_body": "Exception was thrown when call vsan-performance-manager for cluster [vim.ClusterComputeResource:domain-c109,Cluster-52] perf metrics: N3Vim5Fault8NotFound9ExceptionE(Fault cause: vim.fault.NotFound\n--> )",
"extract(log_body)": {
- "Exception was thrown when call vsan-performance-manager for cluster [vim.ClusterComputeResource:domain-c109,Cluster-52] perf metrics": {
- "N3Vim5Fault8NotFound9ExceptionE": [
- "Fault cause",
- "vim.fault.NotFound",
- "\n",
- "--",
- ">"
- ]
+ "call": "vsan-performance-manager",
+ "cluster": {
+ "vim.ClusterComputeResource": "domain-c109",
+ "col_0": "Cluster-52"
+ },
+ "col_0": "perf",
+ "metrics": "",
+ "N3Vim5Fault8NotFound9ExceptionE": {
+ "Fault cause": "vim.fault.NotFound",
+ "col_0": ">"
}
}
}
diff --git a/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err b/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err
index 537f7c4..90c4d88 100644
--- a/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err
+++ b/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to timeslice(time, slice) failed","attrs":[{"start":8,"end":17,"type":"role","value":47},{"start":18,"end":22,"type":"role","value":46},{"start":24,"end":29,"type":"role","value":46},{"start":8,"end":30,"type":"role","value":60}]},"reason":{"str":"unable to parse time slice value: blah -- Unrecognized input","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to timeslice(time, slice) failed","attrs":[{"start":8,"end":17,"type":"role","value":49},{"start":18,"end":22,"type":"role","value":48},{"start":24,"end":29,"type":"role","value":48},{"start":8,"end":30,"type":"role","value":65}]},"reason":{"str":"unable to parse time slice value: blah -- Unrecognized input","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.err b/test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.err
new file mode 100644
index 0000000..9d7688e
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.err
@@ -0,0 +1,4 @@
+✘ error: call to timezone(tz, ts) failed
+ reason: bad-zone not found in timezone database
+ --> command-option:1
+ | ;SELECT timezone('bad-zone', '2022-03-02T10:20:30.400-0700')
diff --git a/test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.out b/test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_4364c7f5354fe108874dd22571115e012303e001.out
diff --git a/test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.err b/test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.err
diff --git a/test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.out b/test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.out
new file mode 100644
index 0000000..16f0f98
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_63f22db8689c238d51c9b9efe9837147ea5318e6.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column timezone('America/Los_Angeles', '2022-04-02T10:20:30.400-0700'): 2022-04-02T10:20:30.400000-0700
diff --git a/test/expected/test_sql_time_func.sh_6fd8504e94688c4e7915f3a9eb5b030713141d03.out b/test/expected/test_sql_time_func.sh_6fd8504e94688c4e7915f3a9eb5b030713141d03.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_6fd8504e94688c4e7915f3a9eb5b030713141d03.out
diff --git a/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err b/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err
index 4180cf6..33e46bd 100644
--- a/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err
+++ b/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to timeslice(time, slice) failed","attrs":[{"start":8,"end":17,"type":"role","value":47},{"start":18,"end":22,"type":"role","value":46},{"start":24,"end":29,"type":"role","value":46},{"start":8,"end":30,"type":"role","value":60}]},"reason":{"str":"no time slice value given","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}}
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to timeslice(time, slice) failed","attrs":[{"start":8,"end":17,"type":"role","value":49},{"start":18,"end":22,"type":"role","value":48},{"start":24,"end":29,"type":"role","value":48},{"start":8,"end":30,"type":"role","value":65}]},"reason":{"str":"no time slice value given","attrs":[]},"snippets":[],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.err b/test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.err
diff --git a/test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.out b/test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.out
new file mode 100644
index 0000000..6401b23
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_7ae9dbbb69dbc50ee6a34afc03d2579f09363068.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column timezone('UTC', '2022-03-02T10:20:30.400-0700'): 2022-03-02T17:20:30.400000+0000
diff --git a/test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.err b/test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.err
diff --git a/test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.out b/test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.out
new file mode 100644
index 0000000..e02d1de
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_b3c00f049fdeb551a9165c281630e36359832d1f.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column timezone('America/New_York', '2022-03-02T10:20:30.400-0700'): 2022-03-02T12:20:30.400000-0500
diff --git a/test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.err b/test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.err
new file mode 100644
index 0000000..ad8b26b
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.err
@@ -0,0 +1,8 @@
+✘ error: invalid timestamp: 2022-03-02T10:20:30.400bad
+ reason: the leading part of the timestamp was matched, however, the trailing text “bad” was not
+ --> command-option:1
+ | ;SELECT timezone('UTC', '2022-03-02T10:20:30.400bad')
+ = note: input matched time format “%Y-%m-%dT%H:%M:%S”
+ = note: 2022-03-02T10:20:30.400bad
+ ^-^ unrecognized input
+ = help: fix the timestamp or remove the trailing text
diff --git a/test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.out b/test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_c1d7dc8a4bd3b8cb86a2f893f58a56f0f6ea1bc3.out
diff --git a/test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.err b/test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.err
diff --git a/test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.out b/test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.out
new file mode 100644
index 0000000..689ba47
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_c5a5fc2edb54d10f1475afa7fed0b62bc05e1dc6.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column timezone('America/Los_Angeles', '2022-03-02T10:20:30.400-0700'): 2022-03-02T09:20:30.400000-0800
diff --git a/test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.err b/test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.err
diff --git a/test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.out b/test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.out
new file mode 100644
index 0000000..07dccfa
--- /dev/null
+++ b/test/expected/test_sql_time_func.sh_c7fc60392a2e52b163da1e1dde6978c16f415a9e.out
@@ -0,0 +1,2 @@
+Row 0:
+ Column timezone('America/Los_Angeles', '2022-03-02T10:00'): 2022-03-02T02:00:00.000000-0800
diff --git a/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out b/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out
index 710f668..2b6d1d2 100644
--- a/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out
+++ b/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out
@@ -11,9 +11,8 @@ Run  ./autogen.sh  if compiling from a cloned repository.
See Also
-Angle-grinder[1] is a tool to slice and dice log files on the
+]8;;https://github.com/rcoh/angle-grinder\Angle-grinder]8;;\[1] is a tool to slice and dice log files on the
command-line. If you're familiar with the SumoLogic query language,
you might find this tool more comfortable to work with.
▌[1] - https://github.com/rcoh/angle-grinder
-
diff --git a/test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.err b/test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.err
diff --git a/test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.out b/test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.out
new file mode 100644
index 0000000..a4f45bc
--- /dev/null
+++ b/test/expected/test_sql_views_vtab.sh_4363d60040424a573ed79ee4260a32e3cd72f62c.out
@@ -0,0 +1,46 @@
+2023-03-24T14:26:16.243Z renovate[7] INFO Dependency extraction complete
+ Received Time: 2023-03-24T14:26:16.243 — in the future Format: %Y-%m-%dT%H:%M:%S.%L%z
+ Known message fields for table bunyan_log:
+ | ◆ 📊 name = renovate
+ | ◇ 📊 hostname = renovate-gitlab-67c4bcb5-9ggbv
+ | ◆ 📊 pid = 7
+ | ◇ 📊 level = 30
+ | ◇ 📊 v = 0
+ JSON fields:
+ jget(log_raw_text, '/baseBranch') = main
+ jget(log_raw_text, '/logContext') = qjifsaDDI
+ jget(log_raw_text, '/repository') = webgui/custom-icons-transformer
+ jget(log_raw_text, '/stats') = {"managers":{"gitlabci":{"fileCount":1,"depCount":1},"gitlabci-include":{"fileCount":1,"depCount":1},"npm":{"fileCount":1,"depCount":15}},"total":{"fileCount":3,"depCount":17}}
+ No discovered message fields
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+ baseBranch: main
+ stats: {"managers":{"gitlabci":{"fileCount":1,"depCount":1},"gitlabci-include":{"fileCount":1,"depCount":1},"npm":{"fileCount":1,"depCount":15}},"total":{"fileCount":3,"depCount":17}}
+2023-03-24T14:26:16.390Z renovate[7] DEBUG Dependency node has unsupported/unversioned value lts-bullseye-slim (versioning=docker)
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+2023-03-24T14:26:17.493Z renovate[7] DEBUG Release 2.8.7 is pending status checks
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+ depName: prettier
+ check: stabilityDays
+2023-03-24T14:26:17.897Z renovate[7] DEBUG Release 4.4.1 is pending status checks
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+ depName: rimraf
+ check: stabilityDays
+2023-03-24T14:26:17.897Z renovate[7] DEBUG All releases are pending - using latest
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+ depName: rimraf
+ bucket: non-major
+2023-03-24T14:26:18.330Z renovate[7] DEBUG Release 2.10.0 is pending status checks
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+ depName: prettier-plugin-svelte
+ check: stabilityDays
+2023-03-24T14:26:18.331Z renovate[7] DEBUG All releases are pending - using latest
+ logContext: qjifsaDDI
+ repository: webgui/custom-icons-transformer
+ depName: prettier-plugin-svelte
+ bucket: non-major
diff --git a/test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.err b/test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.err
diff --git a/test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.out b/test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.out
new file mode 100644
index 0000000..74dfce6
--- /dev/null
+++ b/test/expected/test_sql_views_vtab.sh_45dbef06572b43cb997682436e753a13e003f792.out
@@ -0,0 +1,47 @@
+[2020-12-10 06:56:41,092] DEBUG [connect.client:69] Full request text:
+ Received Time: 2020-12-10T06:56:41.092 — in the future Format: %Y-%m-%d %H:%M:%S,%L
+ Pattern: /xml_msg_log/regex/std = ^\[(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\]\s+(?<level>\w+)\s+\[(?<module>[^:]*):(?<line>\d+)\]\s*(?<body>[^\n]*)\n?(?<msg_data>.*)
+ Known message fields for table xml_msg_log:
+ | ◆ 📊 module = connect.client
+ | ◆ 📊 line = 69
+ | ◆ msg_data = <?xml version='1.0' encoding='iso-8859-2'?>␊<a-request>␊ <head>␊ x␊ </head>␊ <source>␊ x␊ </source>␊ <request id="1">␊ <name>␊ x␊ </name>␊ </request>␊</a-request>␊
+ XML fields:
+ xpath('/a-request/head/text()', xml_msg_log.msg_data) = x
+ xpath('/a-request/request/@id', xml_msg_log.msg_data) = 1
+ xpath('/a-request/request/name/text()', xml_msg_log.msg_data) = x
+ xpath('/a-request/source/text()', xml_msg_log.msg_data) = x
+ No discovered message fields
+ └ #xml-req
+<?xml version='1.0' encoding='iso-8859-2'?>
+<a-request>
+ <head>
+ x
+ </head>
+ <source>
+ x
+ </source>
+ <request id="1">
+ <name>
+ x
+ </name>
+ </request>
+</a-request>
+
+[2020-12-10 06:56:41,099] DEBUG [m:85] Full reply text:
+<?xml version='1.0' encoding='iso-8859-2'?>
+<a-reply>
+ <head>
+ x
+ </head>
+ <reply id="2">
+ <status>
+ <result>OK</result>
+ </status>
+ <name>
+ x
+ </name>
+ </reply>
+ <technical-track>
+ x
+ </technical-track>
+</a-reply>
diff --git a/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out b/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out
index bfe5f1e..2ada698 100644
--- a/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out
+++ b/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out
@@ -1 +1 @@
-2014-10-08 16:56:38,344:WARN:foo bar baz
+2014-10-08 16:56:38,344:WARN:foo bar baz
diff --git a/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out b/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out
index 48f52f3..a988f1b 100644
--- a/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out
+++ b/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out
@@ -1,3 +1,3 @@
-view_name filter_id enabled type language pattern 
-log   1  1 in  regex  vmk 
-log   2    1 in regex vmk1
+view_name filter_id enabled type language pattern 
+log 1 1 in regex vmk
+log 2 1 in regex vmk1
diff --git a/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out b/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out
index 1ad5fbf..ac0d98c 100644
--- a/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out
+++ b/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out
@@ -1,2 +1,2 @@
-search 
+search 
warn
diff --git a/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out b/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out
index c99c751..25e5645 100644
--- a/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out
+++ b/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out
@@ -1,2 +1,2 @@
-view_name filter_id enabled type language pattern 
-log   0  1 out  sql  1  
+view_name filter_id enabled type language pattern 
+log 0 1 out sql 1
diff --git a/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out b/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out
index 38afb7c..4041522 100644
--- a/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out
+++ b/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out
@@ -1,2 +1,2 @@
-view_name filter_id enabled type language pattern 
-log   1  1 in  regex  vmk 
+view_name filter_id enabled type language pattern 
+log 1 1 in regex vmk
diff --git a/test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.err b/test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.err
new file mode 100644
index 0000000..44ba5c2
--- /dev/null
+++ b/test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.err
@@ -0,0 +1,4 @@
+✘ error: Invalid “top_meta.file” value
+ reason: Unknown text file: bad
+ --> command-option:1
+ | ;UPDATE lnav_views SET top_meta = json_object('file', 'bad') WHERE name = 'text'
diff --git a/test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.out b/test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_views_vtab.sh_a7a7fd577f710aa8b0ad5a94fdfb35daea75e06c.out
diff --git a/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err b/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err
index 4276af6..d4eb104 100644
--- a/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err
+++ b/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err
@@ -1,4 +1,4 @@
-✘ error: SQL statement failed
- reason: Invalid time: bad-time
+✘ error: Invalid “top_time” value
+ reason: Unrecognized time value: bad-time
 --> command-option:1
 | ;UPDATE lnav_views SET top_time = 'bad-time' WHERE name = 'log'
diff --git a/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out b/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out
index bc35132..1dda4bf 100644
--- a/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out
+++ b/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out
@@ -1 +1 @@
-2014-10-08 16:56:38,344:WARN:foo bar baz
+2014-10-08 16:56:38,344:WARN:foo bar baz
diff --git a/test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.err b/test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.err
new file mode 100644
index 0000000..3c5a94b
--- /dev/null
+++ b/test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.err
@@ -0,0 +1,11 @@
+✘ error: Invalid XML document
+ reason: Error parsing element attribute
+ --> command-option:1
+ | ;SELECT * FROM xpath('/catalog', (SELECT content FROM lnav_file LIMIT 1))
+ --> xmldoc:35
+ |  </description> 
+ |  </book> 
+ |  <book id=" bk104"> 
+ |  ^ Error parsing element attribute
+ |  <author>Corets, Eva</author> 
+ |  <title>Oberon's Legacy</title> 
diff --git a/test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.out b/test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_xml_func.sh_81ad7678f080870956db37174bcf1054586cfbad.out
diff --git a/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err b/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err
index 6ac0f80..319fc61 100644
--- a/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err
+++ b/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- Invalid XPATH expression at offset 5: Unrecognized node test
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"Invalid XPath expression","attrs":[]},"reason":{"str":"Unrecognized node test","attrs":[]},"snippets":[{"source":"xpath","line":1,"content":{"str":"/abc[\n ^ Unrecognized node test","attrs":[{"start":0,"end":5,"type":"role","value":42},{"start":11,"end":13,"type":"role","value":79},{"start":13,"end":35,"type":"role","value":5},{"start":6,"end":35,"type":"role","value":42},{"start":35,"end":35,"type":"role","value":42}]}}],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.err b/test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.err
new file mode 100644
index 0000000..d1ff56a
--- /dev/null
+++ b/test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.err
@@ -0,0 +1,7 @@
+✘ error: Invalid XPath expression
+ reason: Expected ']' to match an opening '['
+ --> command-option:1
+ | ;SELECT * FROM xpath('/cat[alog', (SELECT content FROM lnav_file LIMIT 1))
+ --> xpath:1
+ | /cat[alog 
+ |  ^ Expected ']' to match an opening '['
diff --git a/test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.out b/test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_sql_xml_func.sh_bcbd691bb24c4f7bcb9fe0e035b290815f1c8874.out
diff --git a/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err b/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err
index a97d7cd..f495a72 100644
--- a/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err
+++ b/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err
@@ -1 +1 @@
-error: sqlite3_exec failed -- Invalid XML document at offset 3: Error parsing start element tag
+error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"Invalid XML document","attrs":[]},"reason":{"str":"Error parsing start element tag","attrs":[]},"snippets":[{"source":"xmldoc","line":1,"content":{"str":"<abc\n ^ Error parsing start element tag","attrs":[{"start":0,"end":4,"type":"role","value":42},{"start":8,"end":10,"type":"role","value":79},{"start":10,"end":41,"type":"role","value":5},{"start":5,"end":41,"type":"role","value":42},{"start":41,"end":41,"type":"role","value":42}]}}],"notes":[],"help":{"str":"","attrs":[]}}
diff --git a/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err b/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err
deleted file mode 100644
index b7f3a79..0000000
--- a/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err
+++ /dev/null
@@ -1,4 +0,0 @@
-✘ error: failed to parse YAML content
- reason: closing ] not found
- --> command-option:1
- | ;SELECT yaml_to_json('[abc') 
diff --git a/test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.err b/test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.err
diff --git a/test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.out b/test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.out
new file mode 100644
index 0000000..d244d10
--- /dev/null
+++ b/test/expected/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.out
@@ -0,0 +1,3 @@
+Hello, World!!
+Goodbye, World!!
+That is not⌫⌫⌫all
diff --git a/test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err b/test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err
diff --git a/test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out b/test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out
new file mode 100644
index 0000000..0c3f7da
--- /dev/null
+++ b/test/expected/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+
+if test x"${AUTORECONF}" = x""; then
+ autoreconf -V 1>/dev/null 2>/dev/null
+ if test $? -eq 0; then
+ AUTORECONF=autoreconf
+ fi
+fi
+
+if test x"${AUTORECONF}" != x""; then
+ ${AUTORECONF} -vfi -I m4
+else
+ AUTOCONF=${AUTOCONF:-autoconf}
+ AUTOMAKE=${AUTOMAKE:-automake}
+ AUTOHEADER=${AUTOHEADER:-autoheader}
+ ACLOCAL=${ACLOCAL:-aclocal}
+
+ ${AUTOCONF} --version
+ ${AUTOMAKE} --version
+
+ ${ACLOCAL} -I m4 -I .
+ ${AUTOHEADER} -I .
+ ${AUTOMAKE} --add-missing --copy --force-missing --foreign
+ ${AUTOCONF}
+fi
diff --git a/test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.err b/test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.err
diff --git a/test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.out b/test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.out
new file mode 100644
index 0000000..4ef8aa7
--- /dev/null
+++ b/test/expected/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.out
@@ -0,0 +1,2 @@
+content 
+ abc
diff --git a/test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.err b/test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.err
diff --git a/test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.out b/test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.out
new file mode 100644
index 0000000..84ebd40
--- /dev/null
+++ b/test/expected/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.out
@@ -0,0 +1,5 @@
+ "title": "Midnight Rain",
+ "description": "A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world."
+ }
+ ]
+}
diff --git a/test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.err b/test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.err
diff --git a/test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.out b/test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.out
new file mode 100644
index 0000000..b100f4c
--- /dev/null
+++ b/test/expected/test_text_file.sh_1ce4056d72b871f8bb844c86aade2a9b1da58030.out
@@ -0,0 +1,49 @@
+[
+ {
+ "top_meta": {
+ "file": "stdin",
+ "anchor": "#/test~1Makefile.am/distclean-local:",
+ "breadcrumbs": [
+ {
+ "display_value": "stdin",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "stdin"
+ }
+ ]
+ },
+ {
+ "display_value": "test/Makefile.am",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "test/Makefile.am"
+ },
+ {
+ "display_value": "test/expected/expected.am"
+ },
+ {
+ "display_value": "test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out"
+ },
+ {
+ "display_value": "test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out"
+ },
+ {
+ "display_value": "test/test_sessions.sh"
+ }
+ ]
+ },
+ {
+ "display_value": "distclean-local:",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "distclean-local:"
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.err b/test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.err
diff --git a/test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.out b/test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.out
new file mode 100644
index 0000000..80a24fb
--- /dev/null
+++ b/test/expected/test_text_file.sh_25cef06efcbe106c2e1cc4a166b673e7b244c6d7.out
@@ -0,0 +1,25 @@
+[
+ {
+ "top_meta": {
+ "file": "stdin",
+ "breadcrumbs": [
+ {
+ "display_value": "stdin",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "stdin"
+ }
+ ]
+ },
+ {
+ "display_value": "2013-06-06T12:13:20.123",
+ "search_placeholder": "",
+ "possibilities": [
+
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.err b/test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.err
diff --git a/test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.out b/test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.out
new file mode 100644
index 0000000..a330ad5
--- /dev/null
+++ b/test/expected/test_text_file.sh_265a8a5825e6c7dbc85cbe496dab6be7a349f3db.out
@@ -0,0 +1 @@
+2013-06-06T12:13:20.123 Hello, World!
diff --git a/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err b/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err
deleted file mode 100644
index 08a372f..0000000
--- a/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err
+++ /dev/null
@@ -1,2 +0,0 @@
-✘ error: unable to open file: non-existent:
- reason: failed to ssh to host: ssh: Could not resolve hostname non-existent: nodename nor servname provided, or not known
diff --git a/test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.err b/test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.err
diff --git a/test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out b/test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out
new file mode 100644
index 0000000..063e8c8
--- /dev/null
+++ b/test/expected/test_text_file.sh_4226123565a53b4e3f80e602c1f294721e8e07bf.out
@@ -0,0 +1,9 @@
+# Test file for syntax-highlighting
+
+def hello(abc):
+ """
+ This is a multi-line string
+
+ @param abc: blah blah
+ """
+ return abc + 1
diff --git a/test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.err b/test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.err
diff --git a/test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.out b/test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.out
new file mode 100644
index 0000000..e6de131
--- /dev/null
+++ b/test/expected/test_text_file.sh_4dd174410d702a7b4be794fb6fa2c8889bd768d6.out
@@ -0,0 +1,6 @@
+ "author": "Ralls, Kim",
+ "title": "Midnight Rain",
+ "description": "A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world."
+ }
+ ]
+}
diff --git a/test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.err b/test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.err
diff --git a/test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.out b/test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.out
new file mode 100644
index 0000000..84ebd40
--- /dev/null
+++ b/test/expected/test_text_file.sh_596b120fbea638472a27964444e262b4572afacc.out
@@ -0,0 +1,5 @@
+ "title": "Midnight Rain",
+ "description": "A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world."
+ }
+ ]
+}
diff --git a/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out b/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out
index a39be1e..1f28ffd 100644
--- a/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out
+++ b/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out
@@ -1,4 +1,4 @@
-Build[1][2] Docs[3][4] Coverage Status[5][6] lnav[7][8]
+]8;;https://github.com/tstack/lnav/actions?query=workflow%3Aci-build\🖼 Build[1]]8;;\[2] ]8;;https://docs.lnav.org\🖼 Docs[3]]8;;\[4] ]8;;https://coveralls.io/github/tstack/lnav?branch=master\🖼 Coverage Status[5]]8;;\[6] ]8;;https://snapcraft.io/lnav\🖼 lnav[7]]8;;\[8]
▌[1] - https://github.com/tstack/lnav/workflows/ci-build/badge.svg
▌[2] - https://github.com/tstack/lnav/actions?query=workflow%3Aci-build
@@ -9,61 +9,122 @@
▌[7] - https://snapcraft.io/lnav/badge.svg
▌[8] - https://snapcraft.io/lnav
-<img
-src="https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg"
-height="20"/>[1]
+]8;;https://discord.gg/erBPnKwz7R\🖼 ]8;;\]8;;https://discord.gg/erBPnKwz7R\Discord Logo]8;;\]8;;https://discord.gg/erBPnKwz7R\[1]]8;;\[2]
- ▌[1] - https://discord.gg/erBPnKwz7R
+ ▌[1] - https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg
+ ▌[2] - https://discord.gg/erBPnKwz7R
-This is the source repository for lnav, visit https://lnav.org[1] for
+This is the source repository for lnav, visit ]8;;https://lnav.org\https://lnav.org]8;;\[1] for
a high level overview.
▌[1] - https://lnav.org
LNAV – The Logfile Navigator
-The Log File Navigator, lnav for short, is an advanced log file viewer
-for the small-scale. It is a terminal application that can understand
-your log files and make it easy for you to find problems with little
-to no setup.
+The Logfile Navigator is a log file viewer for the terminal. Given a
+set of files/directories, lnav will:
+
+ • decompress as needed;
+ • detect their format;
+ • merge the files together by time into a single view;
+ • tail the files, follow renames, find new files in
+ directories;
+ • build an index of errors and warnings;
+ • ]8;;https://docs.lnav.org/en/latest/formats.html#json-lines\pretty-print JSON-lines]8;;\[1].
+
+ ▌[1] - https://docs.lnav.org/en/latest/formats.html#json-lines
+
+Then, in the lnav TUI, you can:
+
+ • jump quickly to the previous/next error (]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\press ]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\ e ]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\/]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\ E ]8;;\[1]);
+ • search using regular expressions (]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\press ]8;;\]8;;https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation\ / ]8;;\[2]);
+ • highlight text with a regular expression (]8;;https://docs.lnav.org/en/latest/commands.html#highlight-pattern\ :highlight ]8;;\[3]
+ command);
+ • filter messages using ]8;;https://docs.lnav.org/en/latest/usage.html#regular-expression-match\regular expressions]8;;\[4] or ]8;;https://docs.lnav.org/en/latest/usage.html#sqlite-expression\SQLite]8;;\
+ ]8;;https://docs.lnav.org/en/latest/usage.html#sqlite-expression\expressions]8;;\[5];
+ • pretty-print structured text (]8;;https://docs.lnav.org/en/latest/ui.html#pretty\press ]8;;\]8;;https://docs.lnav.org/en/latest/ui.html#pretty\ P ]8;;\[6]);
+ • view a histogram of messages over time (]8;;https://docs.lnav.org/en/latest/ui.html#hist\press ]8;;\]8;;https://docs.lnav.org/en/latest/ui.html#hist\ i ]8;;\[7]);
+ • query messages using SQLite (]8;;https://docs.lnav.org/en/latest/sqlext.html\press ]8;;\]8;;https://docs.lnav.org/en/latest/sqlext.html\ ; ]8;;\[8])
+
+ ▌[1] - https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation
+ ▌[2] - https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation
+ ▌[3] - https://docs.lnav.org/en/latest/commands.html#highlight-pattern
+ ▌[4] - https://docs.lnav.org/en/latest/usage.html#regular-expression-match
+ ▌[5] - https://docs.lnav.org/en/latest/usage.html#sqlite-expression
+ ▌[6] - https://docs.lnav.org/en/latest/ui.html#pretty
+ ▌[7] - https://docs.lnav.org/en/latest/ui.html#hist
+ ▌[8] - https://docs.lnav.org/en/latest/sqlext.html
Screenshot
-The following screenshot shows a syslog file. Log lines are displayed
-with highlights. Errors are red and warnings are yellow.
+The following screenshot shows a mix of syslog and web access log
+files. Failed requests are shown in red. Identifiers, like IP
+address and PIDs are semantically highlighted.
-Screenshot[1][2]
+]8;;docs/assets/images/lnav-front-page.png\🖼 Screenshot[1]]8;;\[2]
- ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png
- ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png
+ ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
+ ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
-Features
+Why not just use  tail / grep / less ?
- • Log messages from different files are collated together
- into a single view
- • Automatic detection of log format
- • Automatic decompression of GZip and BZip2 files
- • Filter log messages based on regular expressions
- • Use SQL to analyze your logs
- • And more...
+The standard Unix utilities are great for processing raw text lines,
+however, they do not understand log messages. Tail can watch multiple
+files at a time, but it won't display messages in order by time and
+you can't scroll backwards. Grep will only find matching lines, but
+won't return a full multi-line log message. Less can only display a
+single file at a time. Also, none of these basic tools handle
+compressed files.
+
+Try online before installing
+
+You can SSH into a demo node to play with lnav before installing.
+
+The "playground" account starts lnav with a couple of log files as an
+example:
+
+]8;;ssh://playground@demo.lnav.org\ $ ssh playground@demo.lnav.org ]8;;\[1]
+
+ ▌[1] - ssh://playground@demo.lnav.org
+
+The "tutorial 1" account is an interactive tutorial that can teach you
+the basics of operation:
+
+]8;;ssh://tutorial1@demo.lnav.org\ $ ssh tutorial1@demo.lnav.org ]8;;\[1]
+
+ ▌[1] - ssh://tutorial1@demo.lnav.org
Installation
-Download a statically-linked binary for Linux/MacOS from the release
-page[1]
+]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\Download a statically-linked binary for Linux/MacOS from the release]8;;\
+]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\page]8;;\[1]
▌[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
+Brew on MacOS
+
+ ▌$ brew install lnav 
+
Usage
-The only file installed is the executable,  lnav . You can execute it
-with no arguments to view the default set of files:
+Simply point lnav at the files or directories you want to monitor, it
+will figure out the rest:
- ▌$ lnav 
+ ▌$ lnav /path/to/file1 /path/to/dir ... 
-You can view all the syslog messages by running:
+The lnav TUI will pop up right away and begin indexing the files.
+Progress is displayed in the "Files" panel at the bottom. Once the
+indexing has finished, the LOG view will display the log messages that
+were recognized[^1]. You can then use the usual hotkeys to move around
+the view (arrow keys or  j / k / h / l  to move down/up/left/right).
- ▌$ lnav /var/log/messages* 
+See the ]8;;https://docs.lnav.org/en/latest/usage.html\Usage section]8;;\[1] of the online documentation for more
+information.
+
+ ▌[1] - https://docs.lnav.org/en/latest/usage.html
+
+[^1]: Files that do not contain log messages can be seen in the TEXT
+view (reachable by pressing  t ).
Usage with  systemd-journald 
@@ -82,8 +143,9 @@ output format to include the year, otherwise  lnav  gets confused:
▌$ journalctl -o short-iso | lnav 
-It is also possible to use  journalctl 's json output format and  lnav
-will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT:
+It is also possible to use  journalctl 's json output format and
+ lnav will make use of additional fields such as PRIORITY and
+_SYSTEMD_UNIT:
▌$ journalctl -o json | lnav 
@@ -100,8 +162,8 @@ the ones actually recognized by  lnav  for increased efficiency:
▌$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav 
If your system has been running for a long time, for increased
-efficiency you may want to limit the number of log lines fed into  lnav
-, e.g. via  journalctl 's  -n  or  --since=...  options.
+efficiency you may want to limit the number of log lines fed into
+ lnav , e.g. via  journalctl 's  -n  or  --since=...  options.
In case of a persistent journal, you may want to limit the number of
log lines fed into  lnav  via  journalctl 's  -b  option.
@@ -111,9 +173,9 @@ log lines fed into  lnav  via  journalctl 's [
Please file issues on this repository or use the discussions section.
The following alternatives are also available:
- • support@lnav.org[1]
- • Discord[2]
- • Google Groups[3]
+ • ]8;;mailto:support@lnav.org\support@lnav.org]8;;\[1]
+ • ]8;;https://discord.gg/erBPnKwz7R\Discord]8;;\[2]
+ • ]8;;https://groups.google.com/g/lnav\Google Groups]8;;\[3]
▌[1] - mailto:support@lnav.org
▌[2] - https://discord.gg/erBPnKwz7R
@@ -121,9 +183,9 @@ The following alternatives are also available:
Links
- • Main Site[1]
- • Documentation[2] on Read the Docs
- • Internal Architecture[3]
+ • ]8;;https://lnav.org\Main Site]8;;\[1]
+ • ]8;;https://docs.lnav.org\Documentation]8;;\[2] on Read the Docs
+ • ]8;;ARCHITECTURE.md\Internal Architecture]8;;\[3]
▌[1] - https://lnav.org
▌[2] - https://docs.lnav.org
@@ -131,7 +193,7 @@ The following alternatives are also available:
Contributing
- • Become a Sponsor on GitHub[1]
+ • ]8;;https://github.com/sponsors/tstack\Become a Sponsor on GitHub]8;;\[1]
▌[1] - https://github.com/sponsors/tstack
@@ -144,18 +206,20 @@ The following software packages are required to build lnav:
• gcc/clang - A C++14-compatible compiler.
• libpcre2 - The Perl Compatible Regular Expression v2
(PCRE2) library.
- • sqlite - The SQLite database engine. Version 3.9.0
- or higher is required.
+ • sqlite - The SQLite database engine. Version
+ 3.9.0 or higher is required.
• ncurses - The ncurses text UI library.
• readline - The readline line editing library.
• zlib - The zlib compression library.
• bz2 - The bzip2 compression library.
• libcurl - The cURL library for downloading files
from URLs. Version 7.23.0 or higher is required.
- • libarchive - The libarchive library for opening archive
- files, like zip/tgz.
+ • libarchive - The libarchive library for opening
+ archive files, like zip/tgz.
• wireshark - The 'tshark' program is used to interpret
pcap files.
+ • cargo/rust - The Rust language is used to build the
+ PRQL compiler.
Build
@@ -170,9 +234,8 @@ Run  ./autogen.sh  if compiling from a cloned repository.
See Also
-Angle-grinder[1] is a tool to slice and dice log files on the
+]8;;https://github.com/rcoh/angle-grinder\Angle-grinder]8;;\[1] is a tool to slice and dice log files on the
command-line. If you're familiar with the SumoLogic query language,
you might find this tool more comfortable to work with.
▌[1] - https://github.com/rcoh/angle-grinder
-
diff --git a/test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.err b/test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.err
diff --git a/test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.out b/test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.out
new file mode 100644
index 0000000..1a4081b
--- /dev/null
+++ b/test/expected/test_text_file.sh_5e9320f18d066e6fc930dbbffc357af64312bd4b.out
@@ -0,0 +1,42 @@
+[
+ {
+ "top_meta": {
+ "file": "ECHO(1)",
+ "breadcrumbs": [
+ {
+ "display_value": "ECHO(1)",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "ECHO(1)"
+ }
+ ]
+ },
+ {
+ "display_value": "⋯",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "DESCRIPTION"
+ },
+ {
+ "display_value": "EXIT STATUS"
+ },
+ {
+ "display_value": "NAME"
+ },
+ {
+ "display_value": "SEE ALSO"
+ },
+ {
+ "display_value": "STANDARDS"
+ },
+ {
+ "display_value": "SYNOPSIS"
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out b/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out
index accb1c3..3fe2949 100644
--- a/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out
+++ b/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out
@@ -1,40 +1,73 @@
Screenshot
-The following screenshot shows a syslog file. Log lines are displayed
-with highlights. Errors are red and warnings are yellow.
+The following screenshot shows a mix of syslog and web access log
+files. Failed requests are shown in red. Identifiers, like IP
+address and PIDs are semantically highlighted.
-Screenshot[1][2]
+]8;;docs/assets/images/lnav-front-page.png\🖼 Screenshot[1]]8;;\[2]
- ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png
- ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png
+ ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
+ ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
-Features
+Why not just use  tail / grep / less ?
- • Log messages from different files are collated together
- into a single view
- • Automatic detection of log format
- • Automatic decompression of GZip and BZip2 files
- • Filter log messages based on regular expressions
- • Use SQL to analyze your logs
- • And more...
+The standard Unix utilities are great for processing raw text lines,
+however, they do not understand log messages. Tail can watch multiple
+files at a time, but it won't display messages in order by time and
+you can't scroll backwards. Grep will only find matching lines, but
+won't return a full multi-line log message. Less can only display a
+single file at a time. Also, none of these basic tools handle
+compressed files.
+
+Try online before installing
+
+You can SSH into a demo node to play with lnav before installing.
+
+The "playground" account starts lnav with a couple of log files as an
+example:
+
+]8;;ssh://playground@demo.lnav.org\ $ ssh playground@demo.lnav.org ]8;;\[1]
+
+ ▌[1] - ssh://playground@demo.lnav.org
+
+The "tutorial 1" account is an interactive tutorial that can teach you
+the basics of operation:
+
+]8;;ssh://tutorial1@demo.lnav.org\ $ ssh tutorial1@demo.lnav.org ]8;;\[1]
+
+ ▌[1] - ssh://tutorial1@demo.lnav.org
Installation
-Download a statically-linked binary for Linux/MacOS from the release
-page[1]
+]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\Download a statically-linked binary for Linux/MacOS from the release]8;;\
+]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\page]8;;\[1]
▌[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
+Brew on MacOS
+
+ ▌$ brew install lnav 
+
Usage
-The only file installed is the executable,  lnav . You can execute it
-with no arguments to view the default set of files:
+Simply point lnav at the files or directories you want to monitor, it
+will figure out the rest:
- ▌$ lnav 
+ ▌$ lnav /path/to/file1 /path/to/dir ... 
-You can view all the syslog messages by running:
+The lnav TUI will pop up right away and begin indexing the files.
+Progress is displayed in the "Files" panel at the bottom. Once the
+indexing has finished, the LOG view will display the log messages that
+were recognized[^1]. You can then use the usual hotkeys to move around
+the view (arrow keys or  j / k / h / l  to move down/up/left/right).
- ▌$ lnav /var/log/messages* 
+See the ]8;;https://docs.lnav.org/en/latest/usage.html\Usage section]8;;\[1] of the online documentation for more
+information.
+
+ ▌[1] - https://docs.lnav.org/en/latest/usage.html
+
+[^1]: Files that do not contain log messages can be seen in the TEXT
+view (reachable by pressing  t ).
Usage with  systemd-journald 
@@ -53,8 +86,9 @@ output format to include the year, otherwise  lnav  gets confused:
▌$ journalctl -o short-iso | lnav 
-It is also possible to use  journalctl 's json output format and  lnav
-will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT:
+It is also possible to use  journalctl 's json output format and
+ lnav will make use of additional fields such as PRIORITY and
+_SYSTEMD_UNIT:
▌$ journalctl -o json | lnav 
@@ -71,8 +105,8 @@ the ones actually recognized by  lnav  for increased efficiency:
▌$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav 
If your system has been running for a long time, for increased
-efficiency you may want to limit the number of log lines fed into  lnav
-, e.g. via  journalctl 's  -n  or  --since=...  options.
+efficiency you may want to limit the number of log lines fed into
+ lnav , e.g. via  journalctl 's  -n  or  --since=...  options.
In case of a persistent journal, you may want to limit the number of
log lines fed into  lnav  via  journalctl 's  -b  option.
@@ -82,9 +116,9 @@ log lines fed into  lnav  via  journalctl 's [
Please file issues on this repository or use the discussions section.
The following alternatives are also available:
- • support@lnav.org[1]
- • Discord[2]
- • Google Groups[3]
+ • ]8;;mailto:support@lnav.org\support@lnav.org]8;;\[1]
+ • ]8;;https://discord.gg/erBPnKwz7R\Discord]8;;\[2]
+ • ]8;;https://groups.google.com/g/lnav\Google Groups]8;;\[3]
▌[1] - mailto:support@lnav.org
▌[2] - https://discord.gg/erBPnKwz7R
@@ -92,9 +126,9 @@ The following alternatives are also available:
Links
- • Main Site[1]
- • Documentation[2] on Read the Docs
- • Internal Architecture[3]
+ • ]8;;https://lnav.org\Main Site]8;;\[1]
+ • ]8;;https://docs.lnav.org\Documentation]8;;\[2] on Read the Docs
+ • ]8;;ARCHITECTURE.md\Internal Architecture]8;;\[3]
▌[1] - https://lnav.org
▌[2] - https://docs.lnav.org
@@ -102,7 +136,7 @@ The following alternatives are also available:
Contributing
- • Become a Sponsor on GitHub[1]
+ • ]8;;https://github.com/sponsors/tstack\Become a Sponsor on GitHub]8;;\[1]
▌[1] - https://github.com/sponsors/tstack
@@ -115,18 +149,20 @@ The following software packages are required to build lnav:
• gcc/clang - A C++14-compatible compiler.
• libpcre2 - The Perl Compatible Regular Expression v2
(PCRE2) library.
- • sqlite - The SQLite database engine. Version 3.9.0
- or higher is required.
+ • sqlite - The SQLite database engine. Version
+ 3.9.0 or higher is required.
• ncurses - The ncurses text UI library.
• readline - The readline line editing library.
• zlib - The zlib compression library.
• bz2 - The bzip2 compression library.
• libcurl - The cURL library for downloading files
from URLs. Version 7.23.0 or higher is required.
- • libarchive - The libarchive library for opening archive
- files, like zip/tgz.
+ • libarchive - The libarchive library for opening
+ archive files, like zip/tgz.
• wireshark - The 'tshark' program is used to interpret
pcap files.
+ • cargo/rust - The Rust language is used to build the
+ PRQL compiler.
Build
@@ -141,9 +177,8 @@ Run  ./autogen.sh  if compiling from a cloned repository.
See Also
-Angle-grinder[1] is a tool to slice and dice log files on the
+]8;;https://github.com/rcoh/angle-grinder\Angle-grinder]8;;\[1] is a tool to slice and dice log files on the
command-line. If you're familiar with the SumoLogic query language,
you might find this tool more comfortable to work with.
▌[1] - https://github.com/rcoh/angle-grinder
-
diff --git a/test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.err b/test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.err
diff --git a/test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.out b/test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.out
new file mode 100644
index 0000000..b3ee8cf
--- /dev/null
+++ b/test/expected/test_text_file.sh_73f69c883f60761bff9f8874f61d21a189e92912.out
@@ -0,0 +1,43 @@
+[
+ {
+ "top_meta": {
+ "file": "ECHO(1)",
+ "anchor": "#description",
+ "breadcrumbs": [
+ {
+ "display_value": "ECHO(1)",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "ECHO(1)"
+ }
+ ]
+ },
+ {
+ "display_value": "DESCRIPTION",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "DESCRIPTION"
+ },
+ {
+ "display_value": "EXIT STATUS"
+ },
+ {
+ "display_value": "NAME"
+ },
+ {
+ "display_value": "SEE ALSO"
+ },
+ {
+ "display_value": "STANDARDS"
+ },
+ {
+ "display_value": "SYNOPSIS"
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.err b/test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.err
diff --git a/test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.out b/test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.out
new file mode 100644
index 0000000..efb5ebd
--- /dev/null
+++ b/test/expected/test_text_file.sh_786c7262f977201af36b0e69ba1a2aba130bbb06.out
@@ -0,0 +1,4 @@
+Duis aute irure dolor in reprehenderit in voluptate velit
+esse cillum dolore eu fugiat nulla pariatur. Excepteur
+sint occaecat cupidatat non proident, sunt in culpa qui
+officia deserunt mollit anim id est laborum.
diff --git a/test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.err b/test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.err
diff --git a/test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.out b/test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.out
new file mode 100644
index 0000000..97ad4bc
--- /dev/null
+++ b/test/expected/test_text_file.sh_78f252288519c8f767bb2759ea32959dab2ebc46.out
@@ -0,0 +1,98 @@
+[
+ {
+ "top_meta": {
+ "file": "{test_dir}/formats/jsontest/format.json",
+ "anchor": "#/test_log/line-format/4/overflow",
+ "breadcrumbs": [
+ {
+ "display_value": "format.json",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "format.json"
+ }
+ ]
+ },
+ {
+ "display_value": "test_log",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "$schema"
+ },
+ {
+ "display_value": "test_log"
+ }
+ ]
+ },
+ {
+ "display_value": "line-format",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "body-field"
+ },
+ {
+ "display_value": "description"
+ },
+ {
+ "display_value": "file-pattern"
+ },
+ {
+ "display_value": "json"
+ },
+ {
+ "display_value": "level-field"
+ },
+ {
+ "display_value": "line-format"
+ },
+ {
+ "display_value": "timestamp-field"
+ },
+ {
+ "display_value": "title"
+ },
+ {
+ "display_value": "value"
+ }
+ ]
+ },
+ {
+ "display_value": "[4]",
+ "search_placeholder": "(Enter a number from 0 to 6)",
+ "possibilities": [
+
+ ]
+ },
+ {
+ "display_value": "overflow",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "default-value"
+ },
+ {
+ "display_value": "field"
+ },
+ {
+ "display_value": "max-width"
+ },
+ {
+ "display_value": "min-width"
+ },
+ {
+ "display_value": "overflow"
+ },
+ {
+ "display_value": "prefix"
+ },
+ {
+ "display_value": "suffix"
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out b/test/expected/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out
index 4855b3d..c9d7942 100644
--- a/test/expected/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out
+++ b/test/expected/test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out
@@ -5,6 +5,6 @@
 * FEATURES: network-sandbox preserve-libs sandbox test userpriv usersandbox
* Checking whether python3_11 is suitable ...
* >=dev-lang/python-3.11.1-r1:3.11 ...
- [ ok ]
+ [ ok ]
* Using python3.11 to build (via PYTHON_COMPAT iteration)
>>> Unpacking source...
diff --git a/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out b/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out
deleted file mode 100644
index a7ed740..0000000
--- a/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * Copyright (c) 2018, Timothy Stack
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of Timothy Stack nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "log_level.hh"
-
-#include <ctype.h>
-
-#include "config.h"
-
-const char* level_names[LEVEL__MAX + 1] = {
- "unknown",
- "trace",
- "debug5",
- "debug4",
- "debug3",
- "debug2",
- "debug",
- "info",
- "stats",
- "notice",
- "warning",
- "error",
- "critical",
- "fatal",
- "invalid",
-
- nullptr,
-};
-
-log_level_t
-abbrev2level(const char* levelstr, ssize_t len)
-{
- if (len == 0 || levelstr[0] == '\0') {
- return LEVEL_UNKNOWN;
- }
-
- switch (toupper(levelstr[0])) {
- case 'T':
- return LEVEL_TRACE;
- case 'D':
- case 'V':
- if (len > 1) {
- switch (levelstr[len - 1]) {
- case '2':
- return LEVEL_DEBUG2;
- case '3':
- return LEVEL_DEBUG3;
- case '4':
- return LEVEL_DEBUG4;
- case '5':
- return LEVEL_DEBUG5;
- }
- }
- return LEVEL_DEBUG;
- case 'I':
- if (len == 7 && toupper(levelstr[1]) == 'N'
- && toupper(levelstr[2]) == 'V' && toupper(levelstr[3]) == 'A'
- && toupper(levelstr[4]) == 'L' && toupper(levelstr[5]) == 'I'
- && toupper(levelstr[6]) == 'D')
- {
- return LEVEL_INVALID;
- }
- return LEVEL_INFO;
- case 'S':
- return LEVEL_STATS;
- case 'N':
- return LEVEL_NOTICE;
- case 'W':
- return LEVEL_WARNING;
- case 'E':
- return LEVEL_ERROR;
- case 'C':
- return LEVEL_CRITICAL;
- case 'F':
- return LEVEL_FATAL;
- default:
- return LEVEL_UNKNOWN;
- }
-}
-
-int
-levelcmp(const char* l1, ssize_t l1_len, const char* l2, ssize_t l2_len)
-{
- return abbrev2level(l1, l1_len) - abbrev2level(l2, l2_len);
-}
diff --git a/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out b/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out
index ae06214..5ab78b4 100644
--- a/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out
+++ b/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2018, Timothy Stack
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of Timothy Stack nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+/**
+ * Copyright (c) 2018, Timothy Stack
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of Timothy Stack nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
#include "log_level.hh"
diff --git a/test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.err b/test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.err
diff --git a/test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.out b/test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.out
new file mode 100644
index 0000000..e6de131
--- /dev/null
+++ b/test/expected/test_text_file.sh_8a4954af3e536b3789b1fd5b33519e9d444cc933.out
@@ -0,0 +1,6 @@
+ "author": "Ralls, Kim",
+ "title": "Midnight Rain",
+ "description": "A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world."
+ }
+ ]
+}
diff --git a/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out b/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out
index c8719bb..0290454 100644
--- a/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out
+++ b/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out
@@ -1,2 +1,2 @@
- filepath  descriptor  mimetype  content 
-{test_dir}/textfile_0.md net.daringfireball.markdown.frontmatter application/json {␊ "comment": "This is JSON front-matter"␊} 
+ filepath   descriptor   mimetype   content  
+{test_dir}/textfile_0.md net.daringfireball.markdown.frontmatter application/json {␊ "comment": "This is JSON front-matter"␊}
diff --git a/test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.err b/test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.err
diff --git a/test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.out b/test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.out
new file mode 100644
index 0000000..8fd43aa
--- /dev/null
+++ b/test/expected/test_text_file.sh_a87c18c643994c3dbbbbb619a06a601d3668ea71.out
@@ -0,0 +1,2 @@
+time for a reset ⎋ckapow
+ding dong! 🔔
diff --git a/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out b/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out
index 5a1b89a..243bfc7 100644
--- a/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out
+++ b/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out
@@ -1,4 +1,4 @@
+command-line. If you're familiar with the SumoLogic query language,
you might find this tool more comfortable to work with.
▌[1] - https://github.com/rcoh/angle-grinder
-
diff --git a/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out b/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out
deleted file mode 100644
index 59a0aa9..0000000
--- a/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out
+++ /dev/null
@@ -1,159 +0,0 @@
-Build[1][2] Docs[3][4] Coverage Status[5][6] lnav[7][8]
-
- ▌[1] - https://github.com/tstack/lnav/workflows/ci-build/badge.svg
- ▌[2] - https://github.com/tstack/lnav/actions?query=workflow%3Aci-build
- ▌[3] - https://readthedocs.org/projects/lnav/badge/?version=latest&style=plastic
- ▌[4] - https://docs.lnav.org
- ▌[5] - https://coveralls.io/repos/github/tstack/lnav/badge.svg?branch=master
- ▌[6] - https://coveralls.io/github/tstack/lnav?branch=master
- ▌[7] - https://snapcraft.io//lnav/badge.svg
- ▌[8] - https://snapcraft.io/lnav
-
-This is the source repository for lnav, visit https://lnav.org[1] for
-a high level overview.
-
- ▌[1] - https://lnav.org
-
-LNAV – The Logfile Navigator
-
-The Log File Navigator, lnav for short, is an advanced log file viewer
-for the small-scale. It is a terminal application that can understand
-your log files and make it easy for you to find problems with little
-to no setup.
-
-Screenshot
-
-The following screenshot shows a syslog file. Log lines are displayed
-with highlights. Errors are red and warnings are yellow.
-
-Screenshot[1][2]
-
- ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png
- ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png
-
-Features
-
- • Log messages from different files are collated together
- into a single view
- • Automatic detection of log format
- • Automatic decompression of GZip and BZip2 files
- • Filter log messages based on regular expressions
- • Use SQL to analyze your logs
- • And more...
-
-Installation
-
-Download a statically-linked binary for Linux/MacOS from the release
-page[1]
-
- ▌[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
-
-Usage
-
-The only file installed is the executable,  lnav . You can execute it
-with no arguments to view the default set of files:
-
- ▌$ lnav 
-
-You can view all the syslog messages by running:
-
- ▌$ lnav /var/log/messages* 
-
-Usage with  systemd-journald 
-
-On systems running  systemd-journald , you can use  lnav  as the
-pager:
-
- ▌$ journalctl | lnav 
-
-or in follow mode:
-
- ▌$ journalctl -f | lnav 
-
-Since  journalctl 's default output format omits the year, if you are
-viewing logs which span multiple years you will need to change the
-output format to include the year, otherwise  lnav  gets confused:
-
- ▌$ journalctl -o short-iso | lnav 
-
-It is also possible to use  journalctl 's json output format and  lnav
-will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT:
-
- ▌$ journalctl -o json | lnav 
-
-In case some MESSAGE fields contain special characters such as ANSI
-color codes which are considered as unprintable by journalctl,
-specifying  journalctl 's  -a  option might be preferable in order to
-output those messages still in a non binary representation:
-
- ▌$ journalctl -a -o json | lnav 
-
-If using systemd v236 or newer, the output fields can be limited to
-the ones actually recognized by  lnav  for increased efficiency:
-
- ▌$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav 
-
-If your system has been running for a long time, for increased
-efficiency you may want to limit the number of log lines fed into  lnav
-, e.g. via  journalctl 's  -n  or  --since=...  options.
-
-In case of a persistent journal, you may want to limit the number of
-log lines fed into  lnav  via  journalctl 's  -b  option.
-
-Links
-
- • Main Site[1]
- • Documentation[2] on Read the Docs
- • Internal Architecture[3]
-
- ▌[1] - https://lnav.org
- ▌[2] - https://docs.lnav.org
- ▌[3] - file://{top_srcdir}/ARCHITECTURE.md
-
-Contributing
-
- • Become a Sponsor on GitHub[1]
-
- ▌[1] - https://github.com/sponsors/tstack
-
-Building From Source
-
-Prerequisites
-
-The following software packages are required to build lnav:
-
- • gcc/clang - A C++14-compatible compiler.
- • libpcre - The Perl Compatible Regular Expression
- (PCRE) library.
- • sqlite - The SQLite database engine. Version 3.9.0
- or higher is required.
- • ncurses - The ncurses text UI library.
- • readline - The readline line editing library.
- • zlib - The zlib compression library.
- • bz2 - The bzip2 compression library.
- • libcurl - The cURL library for downloading files
- from URLs. Version 7.23.0 or higher is required.
- • libarchive - The libarchive library for opening archive
- files, like zip/tgz.
- • wireshark - The 'tshark' program is used to interpret
- pcap files.
-
-Build
-
-Lnav follows the usual GNU style for configuring and installing
-software:
-
-Run  ./autogen.sh  if compiling from a cloned repository.
-
- ▌$ ./configure 
- ▌$ make 
- ▌$ sudo make install 
-
-See Also
-
-Angle-grinder[1] is a tool to slice and dice log files on the
-command-line. If you're familiar with the SumoLogic query language,
-you might find this tool more comfortable to work with.
-
- ▌[1] - https://github.com/rcoh/angle-grinder
-
diff --git a/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out b/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out
index 1efd1ba..48d7862 100644
--- a/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out
+++ b/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out
@@ -2,7 +2,7 @@
{
"top_meta": {
"file": "{top_srcdir}/README.md",
- "anchor": "#support",
+ "anchor": "#usage",
"breadcrumbs": [
{
"display_value": "README.md",
@@ -23,16 +23,13 @@
]
},
{
- "display_value": "Support",
+ "display_value": "Usage",
"search_placeholder": "",
"possibilities": [
{
"display_value": "Contributing"
},
{
- "display_value": "Features"
- },
- {
"display_value": "Installation"
},
{
@@ -48,7 +45,22 @@
"display_value": "Support"
},
{
+ "display_value": "Try online before installing"
+ },
+ {
"display_value": "Usage"
+ },
+ {
+ "display_value": "Why not just use tail / grep / less ?"
+ }
+ ]
+ },
+ {
+ "display_value": "⋯",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "Usage with systemd-journald "
}
]
}
diff --git a/test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.err b/test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.err
diff --git a/test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out b/test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out
new file mode 100644
index 0000000..30b1d02
--- /dev/null
+++ b/test/expected/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out
@@ -0,0 +1,51 @@
+
+Test
+
+ • One
+ • Two
+ • Three
+
+🖼 ]8;;file://{top_srcdir}/docs/lnav-tui.png\lnav-tui.png]8;;\[1]
+
+🖼 ]8;;file://{top_srcdir}/docs/lnav-architecture.png\The internal architecture of lnav]8;;\[2]
+
+ ▌[1] - file://{top_srcdir}/docs/lnav-tui.png
+ ▌[2] - file://{top_srcdir}/docs/lnav-architecture.png
+
+Bold red
+
+Underline
+
+ Hello,
+ World!
+
+
+Goodbye, ▌World╏!
+
+ ▌foo bar bar 
+ ▌baz "xyz" 
+
+ ▌/* 
+ ▌ * This program prints "Hello, World!" 
+ ▌ */ 
+ ▌ 
+ ▌#include <stdio.h> 
+ ▌ 
+ ▌int main() { 
+ ▌ printf("Hello, World!\n"); 
+ ▌} 
+
+ ▌def hw(name): 
+ ▌ """ 
+ ▌ This function prints "Hello, <name>!" 
+ ▌ """ 
+ ▌ 
+ ▌ print(f"Hello, {name}!") # test comment 
+
+ ▌<?xml version="1.0" encoding="utf-8" ?> 
+ ▌<books> 
+ ▌ <!-- Line comment --> 
+ ▌ <book id="100"> 
+ ▌ <author>Finnegan</author> 
+ ▌ </book> 
+ ▌</books> 
diff --git a/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out b/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out
index accb1c3..3fe2949 100644
--- a/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out
+++ b/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out
@@ -1,40 +1,73 @@
Screenshot
-The following screenshot shows a syslog file. Log lines are displayed
-with highlights. Errors are red and warnings are yellow.
+The following screenshot shows a mix of syslog and web access log
+files. Failed requests are shown in red. Identifiers, like IP
+address and PIDs are semantically highlighted.
-Screenshot[1][2]
+]8;;docs/assets/images/lnav-front-page.png\🖼 Screenshot[1]]8;;\[2]
- ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png
- ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png
+ ▌[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
+ ▌[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
-Features
+Why not just use  tail / grep / less ?
- • Log messages from different files are collated together
- into a single view
- • Automatic detection of log format
- • Automatic decompression of GZip and BZip2 files
- • Filter log messages based on regular expressions
- • Use SQL to analyze your logs
- • And more...
+The standard Unix utilities are great for processing raw text lines,
+however, they do not understand log messages. Tail can watch multiple
+files at a time, but it won't display messages in order by time and
+you can't scroll backwards. Grep will only find matching lines, but
+won't return a full multi-line log message. Less can only display a
+single file at a time. Also, none of these basic tools handle
+compressed files.
+
+Try online before installing
+
+You can SSH into a demo node to play with lnav before installing.
+
+The "playground" account starts lnav with a couple of log files as an
+example:
+
+]8;;ssh://playground@demo.lnav.org\ $ ssh playground@demo.lnav.org ]8;;\[1]
+
+ ▌[1] - ssh://playground@demo.lnav.org
+
+The "tutorial 1" account is an interactive tutorial that can teach you
+the basics of operation:
+
+]8;;ssh://tutorial1@demo.lnav.org\ $ ssh tutorial1@demo.lnav.org ]8;;\[1]
+
+ ▌[1] - ssh://tutorial1@demo.lnav.org
Installation
-Download a statically-linked binary for Linux/MacOS from the release
-page[1]
+]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\Download a statically-linked binary for Linux/MacOS from the release]8;;\
+]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\page]8;;\[1]
▌[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
+Brew on MacOS
+
+ ▌$ brew install lnav 
+
Usage
-The only file installed is the executable,  lnav . You can execute it
-with no arguments to view the default set of files:
+Simply point lnav at the files or directories you want to monitor, it
+will figure out the rest:
- ▌$ lnav 
+ ▌$ lnav /path/to/file1 /path/to/dir ... 
-You can view all the syslog messages by running:
+The lnav TUI will pop up right away and begin indexing the files.
+Progress is displayed in the "Files" panel at the bottom. Once the
+indexing has finished, the LOG view will display the log messages that
+were recognized[^1]. You can then use the usual hotkeys to move around
+the view (arrow keys or  j / k / h / l  to move down/up/left/right).
- ▌$ lnav /var/log/messages* 
+See the ]8;;https://docs.lnav.org/en/latest/usage.html\Usage section]8;;\[1] of the online documentation for more
+information.
+
+ ▌[1] - https://docs.lnav.org/en/latest/usage.html
+
+[^1]: Files that do not contain log messages can be seen in the TEXT
+view (reachable by pressing  t ).
Usage with  systemd-journald 
@@ -53,8 +86,9 @@ output format to include the year, otherwise  lnav  gets confused:
▌$ journalctl -o short-iso | lnav 
-It is also possible to use  journalctl 's json output format and  lnav
-will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT:
+It is also possible to use  journalctl 's json output format and
+ lnav will make use of additional fields such as PRIORITY and
+_SYSTEMD_UNIT:
▌$ journalctl -o json | lnav 
@@ -71,8 +105,8 @@ the ones actually recognized by  lnav  for increased efficiency:
▌$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav 
If your system has been running for a long time, for increased
-efficiency you may want to limit the number of log lines fed into  lnav
-, e.g. via  journalctl 's  -n  or  --since=...  options.
+efficiency you may want to limit the number of log lines fed into
+ lnav , e.g. via  journalctl 's  -n  or  --since=...  options.
In case of a persistent journal, you may want to limit the number of
log lines fed into  lnav  via  journalctl 's  -b  option.
@@ -82,9 +116,9 @@ log lines fed into  lnav  via  journalctl 's [
Please file issues on this repository or use the discussions section.
The following alternatives are also available:
- • support@lnav.org[1]
- • Discord[2]
- • Google Groups[3]
+ • ]8;;mailto:support@lnav.org\support@lnav.org]8;;\[1]
+ • ]8;;https://discord.gg/erBPnKwz7R\Discord]8;;\[2]
+ • ]8;;https://groups.google.com/g/lnav\Google Groups]8;;\[3]
▌[1] - mailto:support@lnav.org
▌[2] - https://discord.gg/erBPnKwz7R
@@ -92,9 +126,9 @@ The following alternatives are also available:
Links
- • Main Site[1]
- • Documentation[2] on Read the Docs
- • Internal Architecture[3]
+ • ]8;;https://lnav.org\Main Site]8;;\[1]
+ • ]8;;https://docs.lnav.org\Documentation]8;;\[2] on Read the Docs
+ • ]8;;ARCHITECTURE.md\Internal Architecture]8;;\[3]
▌[1] - https://lnav.org
▌[2] - https://docs.lnav.org
@@ -102,7 +136,7 @@ The following alternatives are also available:
Contributing
- • Become a Sponsor on GitHub[1]
+ • ]8;;https://github.com/sponsors/tstack\Become a Sponsor on GitHub]8;;\[1]
▌[1] - https://github.com/sponsors/tstack
@@ -115,18 +149,20 @@ The following software packages are required to build lnav:
• gcc/clang - A C++14-compatible compiler.
• libpcre2 - The Perl Compatible Regular Expression v2
(PCRE2) library.
- • sqlite - The SQLite database engine. Version 3.9.0
- or higher is required.
+ • sqlite - The SQLite database engine. Version
+ 3.9.0 or higher is required.
• ncurses - The ncurses text UI library.
• readline - The readline line editing library.
• zlib - The zlib compression library.
• bz2 - The bzip2 compression library.
• libcurl - The cURL library for downloading files
from URLs. Version 7.23.0 or higher is required.
- • libarchive - The libarchive library for opening archive
- files, like zip/tgz.
+ • libarchive - The libarchive library for opening
+ archive files, like zip/tgz.
• wireshark - The 'tshark' program is used to interpret
pcap files.
+ • cargo/rust - The Rust language is used to build the
+ PRQL compiler.
Build
@@ -141,9 +177,8 @@ Run  ./autogen.sh  if compiling from a cloned repository.
See Also
-Angle-grinder[1] is a tool to slice and dice log files on the
+]8;;https://github.com/rcoh/angle-grinder\Angle-grinder]8;;\[1] is a tool to slice and dice log files on the
command-line. If you're familiar with the SumoLogic query language,
you might find this tool more comfortable to work with.
▌[1] - https://github.com/rcoh/angle-grinder
-
diff --git a/test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.err b/test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.err
diff --git a/test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.out b/test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.out
new file mode 100644
index 0000000..7d9e4f4
--- /dev/null
+++ b/test/expected/test_text_file.sh_e556fa91b91579df20d38540a5db9cedbaf68a62.out
@@ -0,0 +1,40 @@
+[
+ {
+ "top_meta": {
+ "file": "stdin",
+ "anchor": "#-owner-",
+ "breadcrumbs": [
+ {
+ "display_value": "stdin",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "stdin"
+ }
+ ]
+ },
+ {
+ "display_value": "[owner]",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "[database]"
+ },
+ {
+ "display_value": "[owner]"
+ },
+ {
+ "display_value": "[servers.alpha]"
+ },
+ {
+ "display_value": "[servers.beta]"
+ },
+ {
+ "display_value": "[servers]"
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
diff --git a/test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.err b/test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.err
diff --git a/test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.out b/test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.out
new file mode 100644
index 0000000..75a01e5
--- /dev/null
+++ b/test/expected/test_text_file.sh_f586ef080a86dfe1f981b345bcf8d7a279b2b247.out
@@ -0,0 +1,38 @@
+ECHO(1) General Commands Manual ECHO(1)
+
+NAME
+ echo – write arguments to the standard output
+
+SYNOPSIS
+ echo [-n] [string ...]
+
+DESCRIPTION
+ The echo utility writes any specified operands, separated by single blank
+ (‘ ’) characters and followed by a newline (‘\n’) character, to the
+ standard output.
+
+ The following option is available:
+
+ -n Do not print the trailing newline character. This may also be
+ achieved by appending ‘\c’ to the end of the string, as is done by
+ iBCS2 compatible systems. Note that this option as well as the
+ effect of ‘\c’ are implementation-defined in IEEE Std 1003.1-2001
+ (“POSIX.1”) as amended by Cor. 1-2002. Applications aiming for
+ maximum portability are strongly encouraged to use printf(1) to
+ suppress the newline character.
+
+ Some shells may provide a builtin echo command which is similar or
+ identical to this utility. Most notably, the builtin echo in sh(1) does
+ not accept the -n option. Consult the builtin(1) manual page.
+
+EXIT STATUS
+ The echo utility exits 0 on success, and >0 if an error occurs.
+
+SEE ALSO
+ builtin(1), csh(1), printf(1), sh(1)
+
+STANDARDS
+ The echo utility conforms to IEEE Std 1003.1-2001 (“POSIX.1”) as amended
+ by Cor. 1-2002.
+
+macOS 13.5 April 12, 2003 macOS 13.5
diff --git a/test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.err b/test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.err
diff --git a/test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.out b/test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.out
new file mode 100644
index 0000000..de58bb7
--- /dev/null
+++ b/test/expected/test_text_file.sh_f7522b0a99550a3ff91aae6582eb861547c535e1.out
@@ -0,0 +1,25 @@
+[
+ {
+ "top_meta": {
+ "file": "stdin",
+ "breadcrumbs": [
+ {
+ "display_value": "stdin",
+ "search_placeholder": "",
+ "possibilities": [
+ {
+ "display_value": "stdin"
+ }
+ ]
+ },
+ {
+ "display_value": "2013-06-06T19:13:20.123",
+ "search_placeholder": "",
+ "possibilities": [
+
+ ]
+ }
+ ]
+ }
+ }
+]