LCOV - code coverage report
Current view: top level Hit Total Coverage
Test: PostgreSQL 15devel Lines: 355888 468066 76.0 %
Date: 2021-12-03 03:09:03 Functions: 21136 24330 86.9 %
Legend: Rating: low: < 75 % medium: >= 75 % high: >= 90 %

Directory Sort by name Line Coverage Sort by line coverage Functions Sort by function coverage
contrib/adminpack
46.3%46.3%
46.3 % 81 / 175 70.8 % 17 / 24
contrib/amcheck
64.3%64.3%
64.3 % 795 / 1236 92.0 % 46 / 50
contrib/auth_delay
0.0%
0.0 % 0 / 12 0.0 % 0 / 3
contrib/auto_explain
84.1%84.1%
84.1 % 90 / 107 85.7 % 6 / 7
contrib/bloom
90.3%90.3%
90.3 % 467 / 517 96.7 % 29 / 30
contrib/bool_plperl
100.0%
100.0 % 11 / 11 100.0 % 5 / 5
contrib/btree_gin
93.2%93.2%
93.2 % 179 / 192 100.0 % 202 / 202
contrib/btree_gist
94.7%94.7%
94.7 % 2067 / 2182 97.3 % 513 / 527
contrib/citext
100.0%
100.0 % 156 / 156 100.0 % 35 / 35
contrib/cube
85.1%85.1%
85.1 % 909 / 1068 94.2 % 97 / 103
contrib/dblink
86.5%86.5%
86.5 % 945 / 1093 97.4 % 74 / 76
contrib/dict_int
97.4%97.4%
97.4 % 38 / 39 100.0 % 5 / 5
contrib/dict_xsyn
96.2%96.2%
96.2 % 100 / 104 100.0 % 8 / 8
contrib/earthdistance
90.9%90.9%
90.9 % 20 / 22 100.0 % 5 / 5
contrib/file_fdw
75.9%75.9%
75.9 % 239 / 315 90.9 % 20 / 22
contrib/fuzzystrmatch
25.5%25.5%
25.5 % 235 / 921 82.9 % 29 / 35
contrib/hstore
83.8%83.8%
83.8 % 1470 / 1754 76.8 % 129 / 168
contrib/hstore_plperl
100.0%
100.0 % 58 / 58 100.0 % 6 / 6
contrib/hstore_plpython
95.3%95.3%
95.3 % 61 / 64 100.0 % 6 / 6
contrib/intarray
88.8%88.8%
88.8 % 1286 / 1448 92.6 % 138 / 149
contrib/isn
75.8%75.8%
75.8 % 382 / 504 88.9 % 40 / 45
contrib/jsonb_plperl
94.3%94.3%
94.3 % 115 / 122 100.0 % 10 / 10
contrib/jsonb_plpython
82.4%82.4%
82.4 % 159 / 193 100.0 % 14 / 14
contrib/lo
89.2%89.2%
89.2 % 33 / 37 100.0 % 3 / 3
contrib/ltree
87.7%87.7%
87.7 % 1680 / 1915 89.5 % 170 / 190
contrib/ltree_plpython
94.1%94.1%
94.1 % 16 / 17 100.0 % 4 / 4
contrib/oid2name
14.9%14.9%
14.9 % 38 / 255 27.3 % 3 / 11
contrib/old_snapshot
0.0%
0.0 % 0 / 44 0.0 % 0 / 6
contrib/pageinspect
83.5%83.5%
83.5 % 1037 / 1242 100.0 % 78 / 78
contrib/passwordcheck
86.2%86.2%
86.2 % 25 / 29 75.0 % 3 / 4
contrib/pg_buffercache
0.0%
0.0 % 0 / 83 0.0 % 0 / 3
contrib/pg_freespacemap
0.0%
0.0 % 0 / 11 0.0 % 0 / 3
contrib/pg_prewarm
0.0%
0.0 % 0 / 357 0.0 % 0 / 17
contrib/pg_stat_statements
66.0%66.0%
66.0 % 580 / 879 79.1 % 34 / 43
contrib/pg_surgery
92.7%92.7%
92.7 % 114 / 123 100.0 % 9 / 9
contrib/pg_trgm
89.3%89.3%
89.3 % 1406 / 1574 93.2 % 109 / 117
contrib/pg_visibility
76.8%76.8%
76.8 % 219 / 285 82.6 % 19 / 23
contrib/pgcrypto
85.2%85.2%
85.2 % 3874 / 4545 95.9 % 304 / 317
contrib/pgrowlocks
0.0%
0.0 % 0 / 120 0.0 % 0 / 3
contrib/pgstattuple
50.5%50.5%
50.5 % 259 / 513 73.5 % 36 / 49
contrib/postgres_fdw
92.0%92.0%
92.0 % 3733 / 4058 98.9 % 184 / 186
contrib/seg
73.9%73.9%
73.9 % 481 / 651 88.9 % 64 / 72
contrib/spi
60.9%60.9%
60.9 % 204 / 335 60.0 % 9 / 15
contrib/sslinfo
52.2%52.2%
52.2 % 72 / 138 91.3 % 21 / 23
contrib/tablefunc
90.4%90.4%
90.4 % 385 / 426 100.0 % 19 / 19
contrib/tcn
0.0%
0.0 % 0 / 67 0.0 % 0 / 4
contrib/test_decoding
84.8%84.8%
84.8 % 339 / 400 96.4 % 27 / 28
contrib/tsm_system_rows
96.7%96.7%
96.7 % 89 / 92 100.0 % 10 / 10
contrib/tsm_system_time
95.8%95.8%
95.8 % 91 / 95 100.0 % 10 / 10
contrib/unaccent
85.0%85.0%
85.0 % 130 / 153 100.0 % 10 / 10
contrib/vacuumlo
15.3%15.3%
15.3 % 43 / 281 66.7 % 2 / 3
contrib/xml2
48.5%48.5%
48.5 % 150 / 309 64.0 % 16 / 25
src/backend/access/brin
75.9%75.9%
75.9 % 2067 / 2724 81.4 % 118 / 145
src/backend/access/common
88.0%88.0%
88.0 % 2251 / 2559 91.3 % 147 / 161
src/backend/access/gin
77.4%77.4%
77.4 % 3048 / 3939 84.9 % 146 / 172
src/backend/access/gist
62.6%62.6%
62.6 % 2033 / 3247 67.7 % 113 / 167
src/backend/access/hash
65.3%65.3%
65.3 % 1559 / 2387 80.4 % 90 / 112
src/backend/access/heap
85.8%85.8%
85.8 % 5805 / 6763 97.7 % 210 / 215
src/backend/access/index
89.1%89.1%
89.1 % 472 / 530 97.8 % 45 / 46
src/backend/access/nbtree
86.0%86.0%
86.0 % 4560 / 5303 94.3 % 198 / 210
src/backend/access/rmgrdesc
15.8%15.8%
15.8 % 209 / 1319 22.2 % 14 / 63
src/backend/access/spgist
80.0%80.0%
80.0 % 2680 / 3352 89.3 % 108 / 121
src/backend/access/table
90.5%90.5%
90.5 % 323 / 357 100.0 % 32 / 32
src/backend/access/tablesample
99.2%99.2%
99.2 % 127 / 128 100.0 % 12 / 12
src/backend/access/transam
79.7%79.7%
79.7 % 8448 / 10604 90.7 % 544 / 600
src/backend/bootstrap
75.3%75.3%
75.3 % 522 / 693 95.2 % 20 / 21
src/backend/catalog
88.5%88.5%
88.5 % 11964 / 13521 96.4 % 532 / 552
src/backend/commands
85.9%85.9%
85.9 % 24756 / 28804 96.2 % 950 / 988
src/backend/executor
90.9%90.9%
90.9 % 19159 / 21069 93.3 % 950 / 1018
src/backend/foreign
90.8%90.8%
90.8 % 226 / 249 100.0 % 22 / 22
src/backend/jit
78.6%78.6%
78.6 % 44 / 56 85.7 % 6 / 7
src/backend/jit/llvm
80.8%80.8%
80.8 % 1331 / 1648 93.8 % 45 / 48
src/backend/lib
86.2%86.2%
86.2 % 962 / 1116 86.7 % 85 / 98
src/backend/libpq
57.2%57.2%
57.2 % 2453 / 4291 84.8 % 195 / 230
src/backend/main
43.0%43.0%
43.0 % 43 / 100 80.0 % 4 / 5
src/backend/nodes
80.6%80.6%
80.6 % 11857 / 14719 84.4 % 961 / 1139
src/backend/optimizer/geqo
80.1%80.1%
80.1 % 269 / 336 96.7 % 29 / 30
src/backend/optimizer/path
95.5%95.5%
95.5 % 6192 / 6485 99.6 % 280 / 281
src/backend/optimizer/plan
95.3%95.3%
95.3 % 7092 / 7438 99.3 % 285 / 287
src/backend/optimizer/prep
88.0%88.0%
88.0 % 1652 / 1877 97.1 % 68 / 70
src/backend/optimizer/util
92.8%92.8%
92.8 % 6404 / 6903 100.0 % 320 / 320
src/backend/parser
88.0%88.0%
88.0 % 19336 / 21961 98.6 % 422 / 428
src/backend/partitioning
94.8%94.8%
94.8 % 2387 / 2519 98.8 % 80 / 81
src/backend/port
71.5%71.5%
71.5 % 176 / 246 95.0 % 19 / 20
src/backend/postmaster
75.7%75.7%
75.7 % 4515 / 5968 90.8 % 287 / 316
src/backend/regex
88.4%88.4%
88.4 % 4264 / 4825 99.0 % 200 / 202
src/backend/replication
80.6%80.6%
80.6 % 3757 / 4659 92.2 % 200 / 217
src/backend/replication/libpqwalreceiver
81.2%81.2%
81.2 % 319 / 393 95.2 % 20 / 21
src/backend/replication/logical
89.8%89.8%
89.8 % 5589 / 6226 98.4 % 364 / 370
src/backend/replication/pgoutput
88.1%88.1%
88.1 % 422 / 479 100.0 % 32 / 32
src/backend/rewrite
90.3%90.3%
90.3 % 2200 / 2435 98.8 % 84 / 85
src/backend/snowball
71.2%71.2%
71.2 % 47 / 66 100.0 % 6 / 6
src/backend/snowball/libstemmer
3.0%3.0%
3.0 % 533 / 18020 5.4 % 36 / 666
src/backend/statistics
90.6%90.6%
90.6 % 1867 / 2061 87.9 % 80 / 91
src/backend/storage/buffer
83.0%83.0%
83.0 % 1329 / 1601 93.1 % 94 / 101
src/backend/storage/file
77.4%77.4%
77.4 % 1129 / 1458 95.4 % 124 / 130
src/backend/storage/freespace
89.5%89.5%
89.5 % 297 / 332 93.8 % 30 / 32
src/backend/storage/ipc
74.6%74.6%
74.6 % 2956 / 3964 83.6 % 239 / 286
src/backend/storage/large_object
94.6%94.6%
94.6 % 283 / 299 100.0 % 14 / 14
src/backend/storage/lmgr
82.3%82.3%
82.3 % 3580 / 4350 91.4 % 234 / 256
src/backend/storage/page
91.9%91.9%
91.9 % 443 / 482 100.0 % 24 / 24
src/backend/storage/smgr
83.8%83.8%
83.8 % 403 / 481 100.0 % 52 / 52
src/backend/storage/sync
84.6%84.6%
84.6 % 104 / 123 100.0 % 6 / 6
src/backend/tcop
74.2%74.2%
74.2 % 3114 / 4196 88.3 % 98 / 111
src/backend/tsearch
89.3%89.3%
89.3 % 3199 / 3583 89.6 % 198 / 221
src/backend/utils/activity
46.0%46.0%
46.0 % 407 / 884 90.6 % 29 / 32
src/backend/utils/adt
82.8%82.8%
82.8 % 50630 / 61167 85.3 % 3534 / 4141
src/backend/utils/cache
90.2%90.2%
90.2 % 5865 / 6499 98.1 % 424 / 432
src/backend/utils/error
67.1%67.1%
67.1 % 840 / 1251 89.6 % 60 / 67
src/backend/utils/fmgr
75.2%75.2%
75.2 % 1361 / 1809 87.0 % 94 / 108
src/backend/utils/hash
79.9%79.9%
79.9 % 402 / 503 91.4 % 32 / 35
src/backend/utils/init
80.7%80.7%
80.7 % 617 / 765 89.7 % 52 / 58
src/backend/utils/mb
70.4%70.4%
70.4 % 625 / 888 80.0 % 56 / 70
src/backend/utils/mb/conversion_procs/cyrillic_and_mic
100.0%
100.0 % 181 / 181 100.0 % 41 / 41
src/backend/utils/mb/conversion_procs/euc2004_sjis2004
40.4%40.4%
40.4 % 74 / 183 100.0 % 8 / 8
src/backend/utils/mb/conversion_procs/euc_cn_and_mic
60.3%60.3%
60.3 % 41 / 68 100.0 % 7 / 7
src/backend/utils/mb/conversion_procs/euc_jp_and_sjis
46.5%46.5%
46.5 % 167 / 359 100.0 % 19 / 19
src/backend/utils/mb/conversion_procs/euc_kr_and_mic
59.2%59.2%
59.2 % 42 / 71 100.0 % 7 / 7
src/backend/utils/mb/conversion_procs/euc_tw_and_big5
58.3%58.3%
58.3 % 204 / 350 100.0 % 22 / 22
src/backend/utils/mb/conversion_procs/latin2_and_win1250
100.0%
100.0 % 55 / 55 100.0 % 13 / 13
src/backend/utils/mb/conversion_procs/latin_and_mic
100.0%
100.0 % 55 / 55 100.0 % 13 / 13
src/backend/utils/mb/conversion_procs/utf8_and_big5
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_cyrillic
100.0%
100.0 % 37 / 37 100.0 % 9 / 9
src/backend/utils/mb/conversion_procs/utf8_and_euc2004
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_euc_cn
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_euc_jp
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_euc_kr
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_euc_tw
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_gb18030
81.5%81.5%
81.5 % 75 / 92 100.0 % 11 / 11
src/backend/utils/mb/conversion_procs/utf8_and_gbk
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_iso8859
92.6%92.6%
92.6 % 25 / 27 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1
91.8%91.8%
91.8 % 56 / 61 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_johab
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_sjis
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_sjis2004
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_uhc
100.0%
100.0 % 19 / 19 100.0 % 5 / 5
src/backend/utils/mb/conversion_procs/utf8_and_win
92.6%92.6%
92.6 % 25 / 27 100.0 % 5 / 5
src/backend/utils/misc
70.9%70.9%
70.9 % 3124 / 4406 91.2 % 219 / 240
src/backend/utils/mmgr
70.1%70.1%
70.1 % 1689 / 2410 82.1 % 128 / 156
src/backend/utils/resowner
84.3%84.3%
84.3 % 350 / 415 85.9 % 55 / 64
src/backend/utils/sort
89.2%89.2%
89.2 % 2058 / 2307 98.0 % 149 / 152
src/backend/utils/time
79.8%79.8%
79.8 % 617 / 773 98.5 % 64 / 65
src/bin/initdb
55.5%55.5%
55.5 % 1151 / 2075 80.0 % 80 / 100
src/bin/pg_amcheck
77.0%77.0%
77.0 % 606 / 787 100.0 % 22 / 22
src/bin/pg_archivecleanup
93.8%93.8%
93.8 % 122 / 130 100.0 % 6 / 6
src/bin/pg_basebackup
64.4%64.4%
64.4 % 2149 / 3338 81.7 % 116 / 142
src/bin/pg_checksums
75.1%75.1%
75.1 % 202 / 269 83.3 % 5 / 6
src/bin/pg_config
97.0%97.0%
97.0 % 65 / 67 100.0 % 4 / 4
src/bin/pg_controldata
87.3%87.3%
87.3 % 124 / 142 100.0 % 4 / 4
src/bin/pg_ctl
66.2%66.2%
66.2 % 466 / 704 92.9 % 26 / 28
src/bin/pg_dump
80.9%80.9%
80.9 % 10869 / 13429 93.1 % 488 / 524
src/bin/pg_resetwal
70.6%70.6%
70.6 % 377 / 534 100.0 % 12 / 12
src/bin/pg_rewind
71.9%71.9%
71.9 % 1330 / 1850 90.2 % 83 / 92
src/bin/pg_test_fsync
13.7%13.7%
13.7 % 31 / 227 15.4 % 2 / 13
src/bin/pg_test_timing
35.7%35.7%
35.7 % 30 / 84 50.0 % 2 / 4
src/bin/pg_upgrade
56.2%56.2%
56.2 % 1353 / 2408 79.3 % 88 / 111
src/bin/pg_verifybackup
92.1%92.1%
92.1 % 560 / 608 100.0 % 30 / 30
src/bin/pg_waldump
16.7%16.7%
16.7 % 392 / 2348 23.8 % 24 / 101
src/bin/pgbench
88.1%88.1%
88.1 % 2628 / 2984 97.7 % 128 / 131
src/bin/psql
56.3%56.3%
56.3 % 5952 / 10567 52.2 % 260 / 498
src/bin/scripts
71.2%71.2%
71.2 % 1250 / 1756 96.6 % 28 / 29
src/common
74.6%74.6%
74.6 % 3207 / 4300 85.6 % 255 / 298
src/fe_utils
87.5%87.5%
87.5 % 2462 / 2815 95.7 % 134 / 140
src/include
100.0%
100.0 % 14 / 14 100.0 % 5 / 5
src/include/access
92.4%92.4%
92.4 % 268 / 290 97.4 % 75 / 77
src/include/catalog
100.0%
100.0 % 10 / 10 100.0 % 2 / 2
src/include/common
100.0%
100.0 % 99 / 99 100.0 % 27 / 27
src/include/executor
100.0%
100.0 % 70 / 70 100.0 % 18 / 18
src/include/fe_utils
100.0%
100.0 % 8 / 8 100.0 % 2 / 2
src/include/jit
96.8%96.8%
96.8 % 61 / 63 94.7 % 18 / 19
src/include/lib
89.5%89.5%
89.5 % 402 / 449 93.3 % 154 / 165
src/include/libpq
87.7%87.7%
87.7 % 57 / 65 100.0 % 12 / 12
src/include/mb
100.0%
100.0 % 8 / 8 100.0 % 4 / 4
src/include/nodes
96.9%96.9%
96.9 % 63 / 65 100.0 % 21 / 21
src/include/port
96.6%96.6%
96.6 % 86 / 89 97.3 % 36 / 37
src/include/port/atomics
100.0%
100.0 % 74 / 74 100.0 % 27 / 27
src/include/replication
97.6%97.6%
97.6 % 40 / 41 100.0 % 11 / 11
src/include/storage
100.0%
100.0 % 95 / 95 100.0 % 15 / 15
src/include/tcop
100.0%
100.0 % 10 / 10 100.0 % 3 / 3
src/include/utils
91.5%91.5%
91.5 % 195 / 213 100.0 % 52 / 52
src/interfaces/ecpg/compatlib
66.0%66.0%
66.0 % 324 / 491 58.7 % 27 / 46
src/interfaces/ecpg/ecpglib
64.7%64.7%
64.7 % 2323 / 3590 93.8 % 121 / 129
src/interfaces/ecpg/pgtypeslib
58.9%58.9%
58.9 % 1994 / 3383 87.1 % 88 / 101
src/interfaces/ecpg/preproc
28.8%28.8%
28.8 % 3925 / 13607 87.8 % 79 / 90
src/interfaces/ecpg/test
87.2%87.2%
87.2 % 82 / 94 100.0 % 7 / 7
src/interfaces/ecpg/test/compat_informix
89.6%89.6%
89.6 % 649 / 724 95.2 % 20 / 21
src/interfaces/ecpg/test/compat_oracle
100.0%
100.0 % 35 / 35 100.0 % 2 / 2
src/interfaces/ecpg/test/connect
100.0%
100.0 % 100 / 100 100.0 % 5 / 5
src/interfaces/ecpg/test/pgtypeslib
97.1%97.1%
97.1 % 601 / 619 100.0 % 6 / 6
src/interfaces/ecpg/test/preproc
98.5%98.5%
98.5 % 595 / 604 100.0 % 27 / 27
src/interfaces/ecpg/test/sql
95.7%95.7%
95.7 % 1357 / 1418 97.0 % 32 / 33
src/interfaces/ecpg/test/thread
91.2%91.2%
91.2 % 125 / 137 100.0 % 10 / 10
src/interfaces/libpq
54.9%54.9%
54.9 % 4494 / 8189 76.6 % 314 / 410
src/pl/plperl
89.2%89.2%
89.2 % 1572 / 1763 100.0 % 101 / 101
src/pl/plpgsql/src
80.6%80.6%
80.6 % 5370 / 6665 85.6 % 225 / 263
src/pl/plpython
89.6%89.6%
89.6 % 2177 / 2429 99.3 % 151 / 152
src/pl/tcl
90.3%90.3%
90.3 % 961 / 1064 87.2 % 41 / 47
src/port
66.1%66.1%
66.1 % 996 / 1506 87.3 % 89 / 102
src/test/isolation
77.2%77.2%
77.2 % 590 / 764 95.7 % 22 / 23
src/test/modules/delay_execution
77.8%77.8%
77.8 % 14 / 18 75.0 % 3 / 4
src/test/modules/dummy_index_am
78.0%78.0%
78.0 % 85 / 109 47.1 % 8 / 17
src/test/modules/dummy_seclabel
88.9%88.9%
88.9 % 16 / 18 80.0 % 4 / 5
src/test/modules/libpq_pipeline
72.8%72.8%
72.8 % 621 / 853 81.2 % 13 / 16
src/test/modules/plsample
90.0%90.0%
90.0 % 45 / 50 100.0 % 4 / 4
src/test/modules/spgist_name_ops
84.5%84.5%
84.5 % 197 / 233 100.0 % 14 / 14
src/test/modules/ssl_passphrase_callback
90.9%90.9%
90.9 % 20 / 22 80.0 % 4 / 5
src/test/modules/test_bloomfilter
92.7%92.7%
92.7 % 38 / 41 100.0 % 6 / 6
src/test/modules/test_ddl_deparse
27.0%27.0%
27.0 % 63 / 233 100.0 % 7 / 7
src/test/modules/test_ginpostinglist
84.0%84.0%
84.0 % 21 / 25 100.0 % 4 / 4
src/test/modules/test_integerset
84.0%84.0%
84.0 % 199 / 237 100.0 % 9 / 9
src/test/modules/test_parser
100.0%
100.0 % 45 / 45 100.0 % 9 / 9
src/test/modules/test_predtest
87.2%87.2%
87.2 % 75 / 86 100.0 % 3 / 3
src/test/modules/test_rbtree
85.6%85.6%
85.6 % 131 / 153 100.0 % 15 / 15
src/test/modules/test_regex
86.2%86.2%
86.2 % 268 / 311 100.0 % 9 / 9
src/test/modules/test_rls_hooks
93.2%93.2%
93.2 % 55 / 59 80.0 % 4 / 5
src/test/modules/test_shm_mq
86.0%86.0%
86.0 % 184 / 214 93.3 % 14 / 15
src/test/modules/worker_spi
92.2%92.2%
92.2 % 106 / 115 100.0 % 6 / 6
src/test/regress
77.1%77.1%
77.1 % 1167 / 1514 93.5 % 86 / 92
src/timezone
63.6%63.6%
63.6 % 1933 / 3040 86.4 % 102 / 118

Generated by: LCOV version 1.14