diff --git a/.tar.tstamp b/.tar.tstamp
index ff0d0aa39..362577ae7 100644
--- a/.tar.tstamp
+++ b/.tar.tstamp
@@ -1 +1 @@
-1711177866
+1711431306
diff --git a/1984/.tar.tstamp b/1984/.tar.tstamp
index b6c3a74b7..c83e8328f 100644
--- a/1984/.tar.tstamp
+++ b/1984/.tar.tstamp
@@ -1 +1 @@
-1711177832
+1711431273
diff --git a/1984/anonymous/.tar.tstamp b/1984/anonymous/.tar.tstamp
index aaab62391..4746fffe7 100644
--- a/1984/anonymous/.tar.tstamp
+++ b/1984/anonymous/.tar.tstamp
@@ -1 +1 @@
-1711177831
+1711431272
diff --git a/1984/anonymous/1984_anonymous.tar.bz2 b/1984/anonymous/1984_anonymous.tar.bz2
index 6e6d913a1..007124bd6 100644
Binary files a/1984/anonymous/1984_anonymous.tar.bz2 and b/1984/anonymous/1984_anonymous.tar.bz2 differ
diff --git a/1984/anonymous/index.html b/1984/anonymous/index.html
index 2198c95df..1a2dc7512 100644
--- a/1984/anonymous/index.html
+++ b/1984/anonymous/index.html
@@ -229,6 +229,7 @@ ends in a smily face: ;}.
and in the comment to &&.entry.json - description of entry in JSON
cc compiler.
cb can’t do that).
" #Q" string with " \261\2".
80*25 screen).
16 to translate, and output, otherwise pass it unchanged.
ed(1) does too.
4, and then the other constants are derived fro
main() in two “directions” simultaneously.
signed char and ANSI-style function declarat
sizeof(int)!=sizeof(void *)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1993/leo/.tar.tstamp b/1993/leo/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1993/leo/.tar.tstamp
+++ b/1993/leo/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1993/leo/1993_leo.tar.bz2 b/1993/leo/1993_leo.tar.bz2
index 907042df9..6c02b39ed 100644
Binary files a/1993/leo/1993_leo.tar.bz2 and b/1993/leo/1993_leo.tar.bz2 differ
diff --git a/1993/leo/index.html b/1993/leo/index.html
index e9662f250..86ccb02cc 100644
--- a/1993/leo/index.html
+++ b/1993/leo/index.html
@@ -239,6 +239,7 @@ backspaces. Do “disable scrolling” on cmdtool or similar emulators.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1993/lmfjyh/.tar.tstamp b/1993/lmfjyh/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1993/lmfjyh/.tar.tstamp
+++ b/1993/lmfjyh/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1993/lmfjyh/1993_lmfjyh.tar.bz2 b/1993/lmfjyh/1993_lmfjyh.tar.bz2
index 2b967c496..fc380ff9a 100644
Binary files a/1993/lmfjyh/1993_lmfjyh.tar.bz2 and b/1993/lmfjyh/1993_lmfjyh.tar.bz2 differ
diff --git a/1993/lmfjyh/index.html b/1993/lmfjyh/index.html
index 76cc57703..034c91931 100644
--- a/1993/lmfjyh/index.html
+++ b/1993/lmfjyh/index.html
@@ -311,6 +311,7 @@ be new standard.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1993/plummer/.tar.tstamp b/1993/plummer/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1993/plummer/.tar.tstamp
+++ b/1993/plummer/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1993/plummer/1993_plummer.tar.bz2 b/1993/plummer/1993_plummer.tar.bz2
index 2880e7340..fbb56b635 100644
Binary files a/1993/plummer/1993_plummer.tar.bz2 and b/1993/plummer/1993_plummer.tar.bz2 differ
diff --git a/1993/plummer/index.html b/1993/plummer/index.html
index e06c94690..97b0f66b5 100644
--- a/1993/plummer/index.html
+++ b/1993/plummer/index.html
@@ -289,6 +289,7 @@ successively larger number to the end of a string.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1993/rince/.tar.tstamp b/1993/rince/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1993/rince/.tar.tstamp
+++ b/1993/rince/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1993/rince/1993_rince.tar.bz2 b/1993/rince/1993_rince.tar.bz2
index a3bf7b76f..2c5a4b1b3 100644
Binary files a/1993/rince/1993_rince.tar.bz2 and b/1993/rince/1993_rince.tar.bz2 differ
diff --git a/1993/rince/index.html b/1993/rince/index.html
index f94af1436..68891b077 100644
--- a/1993/rince/index.html
+++ b/1993/rince/index.html
@@ -310,6 +310,7 @@ mechanism other than control-c.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1993/schnitzi/.tar.tstamp b/1993/schnitzi/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1993/schnitzi/.tar.tstamp
+++ b/1993/schnitzi/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1993/schnitzi/1993_schnitzi.tar.bz2 b/1993/schnitzi/1993_schnitzi.tar.bz2
index 969b9e33a..16b59b54c 100644
Binary files a/1993/schnitzi/1993_schnitzi.tar.bz2 and b/1993/schnitzi/1993_schnitzi.tar.bz2 differ
diff --git a/1993/schnitzi/index.html b/1993/schnitzi/index.html
index 753be3c06..60fa3ab5f 100644
--- a/1993/schnitzi/index.html
+++ b/1993/schnitzi/index.html
@@ -254,6 +254,7 @@ from the Weekly World News.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1993/vanb/.tar.tstamp b/1993/vanb/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1993/vanb/.tar.tstamp
+++ b/1993/vanb/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1993/vanb/1993_vanb.tar.bz2 b/1993/vanb/1993_vanb.tar.bz2
index 4025a1299..17a782d97 100644
Binary files a/1993/vanb/1993_vanb.tar.bz2 and b/1993/vanb/1993_vanb.tar.bz2 differ
diff --git a/1993/vanb/index.html b/1993/vanb/index.html
index 5be20bf0a..15cd68601 100644
--- a/1993/vanb/index.html
+++ b/1993/vanb/index.html
@@ -318,6 +318,7 @@ called with 0):
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/.tar.tstamp b/1994/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1994/.tar.tstamp
+++ b/1994/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1994/dodsond1/.tar.tstamp b/1994/dodsond1/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1994/dodsond1/.tar.tstamp
+++ b/1994/dodsond1/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1994/dodsond1/1994_dodsond1.tar.bz2 b/1994/dodsond1/1994_dodsond1.tar.bz2
index b3fccda76..31ccb9b9c 100644
Binary files a/1994/dodsond1/1994_dodsond1.tar.bz2 and b/1994/dodsond1/1994_dodsond1.tar.bz2 differ
diff --git a/1994/dodsond1/index.html b/1994/dodsond1/index.html
index a8962d1a6..7aececff7 100644
--- a/1994/dodsond1/index.html
+++ b/1994/dodsond1/index.html
@@ -190,6 +190,7 @@ make a move, and to determine the value of a move.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/dodsond2/.tar.tstamp b/1994/dodsond2/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1994/dodsond2/.tar.tstamp
+++ b/1994/dodsond2/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1994/dodsond2/1994_dodsond2.tar.bz2 b/1994/dodsond2/1994_dodsond2.tar.bz2
index f3be811ac..4cf04f215 100644
Binary files a/1994/dodsond2/1994_dodsond2.tar.bz2 and b/1994/dodsond2/1994_dodsond2.tar.bz2 differ
diff --git a/1994/dodsond2/index.html b/1994/dodsond2/index.html
index 75a72a740..b1a1cef62 100644
--- a/1994/dodsond2/index.html
+++ b/1994/dodsond2/index.html
@@ -243,6 +243,7 @@ of the current room again.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/horton/.tar.tstamp b/1994/horton/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1994/horton/.tar.tstamp
+++ b/1994/horton/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1994/horton/1994_horton.tar.bz2 b/1994/horton/1994_horton.tar.bz2
index 1f2f7ffaa..36f83f3da 100644
Binary files a/1994/horton/1994_horton.tar.bz2 and b/1994/horton/1994_horton.tar.bz2 differ
diff --git a/1994/horton/index.html b/1994/horton/index.html
index 4e6d2be1e..6754f7878 100644
--- a/1994/horton/index.html
+++ b/1994/horton/index.html
@@ -245,6 +245,7 @@ It’s easily modified to graph any 96x160 bitmap on a dumb terminal.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/imc/.tar.tstamp b/1994/imc/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1994/imc/.tar.tstamp
+++ b/1994/imc/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1994/imc/1994_imc.tar.bz2 b/1994/imc/1994_imc.tar.bz2
index f9f6c48cd..b7e5303bd 100644
Binary files a/1994/imc/1994_imc.tar.bz2 and b/1994/imc/1994_imc.tar.bz2 differ
diff --git a/1994/imc/index.html b/1994/imc/index.html
index 44cc293ef..1228a000f 100644
--- a/1994/imc/index.html
+++ b/1994/imc/index.html
@@ -222,6 +222,7 @@ add up to n*(n*n+1)/2.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/ldb/.tar.tstamp b/1994/ldb/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1994/ldb/.tar.tstamp
+++ b/1994/ldb/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1994/ldb/1994_ldb.tar.bz2 b/1994/ldb/1994_ldb.tar.bz2
index ed4607de4..005ca41c4 100644
Binary files a/1994/ldb/1994_ldb.tar.bz2 and b/1994/ldb/1994_ldb.tar.bz2 differ
diff --git a/1994/ldb/index.html b/1994/ldb/index.html
index f5bf1fb69..e1b74766e 100644
--- a/1994/ldb/index.html
+++ b/1994/ldb/index.html
@@ -195,6 +195,7 @@ platform should be ASCII based.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/schnitzi/.tar.tstamp b/1994/schnitzi/.tar.tstamp
index f55d48e31..16145db97 100644
--- a/1994/schnitzi/.tar.tstamp
+++ b/1994/schnitzi/.tar.tstamp
@@ -1 +1 @@
-1711177837
+1711431278
diff --git a/1994/schnitzi/1994_schnitzi.tar.bz2 b/1994/schnitzi/1994_schnitzi.tar.bz2
index 489e04bf0..e54a98949 100644
Binary files a/1994/schnitzi/1994_schnitzi.tar.bz2 and b/1994/schnitzi/1994_schnitzi.tar.bz2 differ
diff --git a/1994/schnitzi/index.html b/1994/schnitzi/index.html
index c78334732..74290482c 100644
--- a/1994/schnitzi/index.html
+++ b/1994/schnitzi/index.html
@@ -253,6 +253,7 @@ needed to pad it put it over the limit – it nearly filled a 79 by
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/shapiro/.tar.tstamp b/1994/shapiro/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1994/shapiro/.tar.tstamp
+++ b/1994/shapiro/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1994/shapiro/1994_shapiro.tar.bz2 b/1994/shapiro/1994_shapiro.tar.bz2
index 0ca16476b..a68905e99 100644
Binary files a/1994/shapiro/1994_shapiro.tar.bz2 and b/1994/shapiro/1994_shapiro.tar.bz2 differ
diff --git a/1994/shapiro/index.html b/1994/shapiro/index.html
index e4cb270c9..2d29cf2e5 100644
--- a/1994/shapiro/index.html
+++ b/1994/shapiro/index.html
@@ -233,6 +233,7 @@ test it on.)
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
shapiro.md - markdown source for shapiro.html
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/smr/.tar.tstamp b/1994/smr/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1994/smr/.tar.tstamp
+++ b/1994/smr/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1994/smr/1994_smr.tar.bz2 b/1994/smr/1994_smr.tar.bz2
index 3ba2c375c..24bfcb023 100644
Binary files a/1994/smr/1994_smr.tar.bz2 and b/1994/smr/1994_smr.tar.bz2 differ
diff --git a/1994/smr/index.html b/1994/smr/index.html
index 00beb8801..2838299d0 100644
--- a/1994/smr/index.html
+++ b/1994/smr/index.html
@@ -198,6 +198,7 @@ Produces a listing of itself on stdout.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/tvr/.tar.tstamp b/1994/tvr/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1994/tvr/.tar.tstamp
+++ b/1994/tvr/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1994/tvr/1994_tvr.tar.bz2 b/1994/tvr/1994_tvr.tar.bz2
index cc9e11041..515163917 100644
Binary files a/1994/tvr/1994_tvr.tar.bz2 and b/1994/tvr/1994_tvr.tar.bz2 differ
diff --git a/1994/tvr/index.html b/1994/tvr/index.html
index 4f59a8404..13d694b54 100644
--- a/1994/tvr/index.html
+++ b/1994/tvr/index.html
@@ -337,6 +337,7 @@ mono).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/weisberg/.tar.tstamp b/1994/weisberg/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1994/weisberg/.tar.tstamp
+++ b/1994/weisberg/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1994/weisberg/1994_weisberg.tar.bz2 b/1994/weisberg/1994_weisberg.tar.bz2
index 749d93222..43da44ee0 100644
Binary files a/1994/weisberg/1994_weisberg.tar.bz2 and b/1994/weisberg/1994_weisberg.tar.bz2 differ
diff --git a/1994/weisberg/index.html b/1994/weisberg/index.html
index a61d4dc25..7f8644710 100644
--- a/1994/weisberg/index.html
+++ b/1994/weisberg/index.html
@@ -226,6 +226,7 @@ a bonus, the understandability of the code was reduced to zero.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1994/westley/.tar.tstamp b/1994/westley/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1994/westley/.tar.tstamp
+++ b/1994/westley/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1994/westley/1994_westley.tar.bz2 b/1994/westley/1994_westley.tar.bz2
index fcbfcfaec..f24b46a34 100644
Binary files a/1994/westley/1994_westley.tar.bz2 and b/1994/westley/1994_westley.tar.bz2 differ
diff --git a/1994/westley/index.html b/1994/westley/index.html
index 26ee1a365..182fc3f94 100644
--- a/1994/westley/index.html
+++ b/1994/westley/index.html
@@ -299,6 +299,7 @@ unimportant.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/.tar.tstamp b/1995/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1995/.tar.tstamp
+++ b/1995/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1995/cdua/.tar.tstamp b/1995/cdua/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/cdua/.tar.tstamp
+++ b/1995/cdua/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/cdua/1995_cdua.tar.bz2 b/1995/cdua/1995_cdua.tar.bz2
index ea699976f..78e40b004 100644
Binary files a/1995/cdua/1995_cdua.tar.bz2 and b/1995/cdua/1995_cdua.tar.bz2 differ
diff --git a/1995/cdua/index.html b/1995/cdua/index.html
index 661476e5f..69b2a8dde 100644
--- a/1995/cdua/index.html
+++ b/1995/cdua/index.html
@@ -219,6 +219,7 @@ statement to solve the maze.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/dodsond1/.tar.tstamp b/1995/dodsond1/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/dodsond1/.tar.tstamp
+++ b/1995/dodsond1/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/dodsond1/1995_dodsond1.tar.bz2 b/1995/dodsond1/1995_dodsond1.tar.bz2
index 4d7413726..341ed487d 100644
Binary files a/1995/dodsond1/1995_dodsond1.tar.bz2 and b/1995/dodsond1/1995_dodsond1.tar.bz2 differ
diff --git a/1995/dodsond1/index.html b/1995/dodsond1/index.html
index 32cecfdc6..d2e6711b9 100644
--- a/1995/dodsond1/index.html
+++ b/1995/dodsond1/index.html
@@ -200,6 +200,7 @@ code being inside the ()’s of one of the 6 orfa loop
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/dodsond2/.tar.tstamp b/1995/dodsond2/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/dodsond2/.tar.tstamp
+++ b/1995/dodsond2/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/dodsond2/1995_dodsond2.tar.bz2 b/1995/dodsond2/1995_dodsond2.tar.bz2
index 373084bb1..96c9d8a88 100644
Binary files a/1995/dodsond2/1995_dodsond2.tar.bz2 and b/1995/dodsond2/1995_dodsond2.tar.bz2 differ
diff --git a/1995/dodsond2/index.html b/1995/dodsond2/index.html
index 721b05720..b36109ffc 100644
--- a/1995/dodsond2/index.html
+++ b/1995/dodsond2/index.html
@@ -189,6 +189,7 @@ in an unknown labyrinth, areas which you have not visited cannot be seen.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/esde/.tar.tstamp b/1995/esde/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/esde/.tar.tstamp
+++ b/1995/esde/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/esde/1995_esde.tar.bz2 b/1995/esde/1995_esde.tar.bz2
index 38367b544..6d603bf69 100644
Binary files a/1995/esde/1995_esde.tar.bz2 and b/1995/esde/1995_esde.tar.bz2 differ
diff --git a/1995/esde/index.html b/1995/esde/index.html
index 76ccb2d54..43982881c 100644
--- a/1995/esde/index.html
+++ b/1995/esde/index.html
@@ -214,6 +214,7 @@ in each line).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/garry/.tar.tstamp b/1995/garry/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/garry/.tar.tstamp
+++ b/1995/garry/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/garry/1995_garry.tar.bz2 b/1995/garry/1995_garry.tar.bz2
index 8f4f3b197..6d74f7d04 100644
Binary files a/1995/garry/1995_garry.tar.bz2 and b/1995/garry/1995_garry.tar.bz2 differ
diff --git a/1995/garry/index.html b/1995/garry/index.html
index 4d29bacf0..520fff8a9 100644
--- a/1995/garry/index.html
+++ b/1995/garry/index.html
@@ -220,6 +220,7 @@ variables by their binary representation, e.g.:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/heathbar/.tar.tstamp b/1995/heathbar/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/heathbar/.tar.tstamp
+++ b/1995/heathbar/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/heathbar/1995_heathbar.tar.bz2 b/1995/heathbar/1995_heathbar.tar.bz2
index b32d7281f..7824231f5 100644
Binary files a/1995/heathbar/1995_heathbar.tar.bz2 and b/1995/heathbar/1995_heathbar.tar.bz2 differ
diff --git a/1995/heathbar/index.html b/1995/heathbar/index.html
index c3f3ecfed..85b6d356a 100644
--- a/1995/heathbar/index.html
+++ b/1995/heathbar/index.html
@@ -217,6 +217,7 @@ diligent effort to write especially clear code gets me extra points!
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/leo/.tar.tstamp b/1995/leo/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/leo/.tar.tstamp
+++ b/1995/leo/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/leo/1995_leo.tar.bz2 b/1995/leo/1995_leo.tar.bz2
index c931acf40..bff11b057 100644
Binary files a/1995/leo/1995_leo.tar.bz2 and b/1995/leo/1995_leo.tar.bz2 differ
diff --git a/1995/leo/index.html b/1995/leo/index.html
index 567bfb8d1..37e089fa4 100644
--- a/1995/leo/index.html
+++ b/1995/leo/index.html
@@ -332,6 +332,7 @@ even want to explain what it does. You’ve been warned!
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
spoiler1.md - markdown source for spoiler1.html
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/makarios/.tar.tstamp b/1995/makarios/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/makarios/.tar.tstamp
+++ b/1995/makarios/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/makarios/1995_makarios.tar.bz2 b/1995/makarios/1995_makarios.tar.bz2
index ee80f1665..a4d324580 100644
Binary files a/1995/makarios/1995_makarios.tar.bz2 and b/1995/makarios/1995_makarios.tar.bz2 differ
diff --git a/1995/makarios/index.html b/1995/makarios/index.html
index 8e1110fe9..edd0c152c 100644
--- a/1995/makarios/index.html
+++ b/1995/makarios/index.html
@@ -188,6 +188,7 @@ of prime palindromes (palindromic in base 8, of course).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/savastio/.tar.tstamp b/1995/savastio/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/savastio/.tar.tstamp
+++ b/1995/savastio/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/savastio/1995_savastio.tar.bz2 b/1995/savastio/1995_savastio.tar.bz2
index ba2511962..4591299aa 100644
Binary files a/1995/savastio/1995_savastio.tar.bz2 and b/1995/savastio/1995_savastio.tar.bz2 differ
diff --git a/1995/savastio/index.html b/1995/savastio/index.html
index 3d8244b96..fd30d84f4 100644
--- a/1995/savastio/index.html
+++ b/1995/savastio/index.html
@@ -213,6 +213,7 @@ time management studies and the factorial arts.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/schnitzi/.tar.tstamp b/1995/schnitzi/.tar.tstamp
index 9e5ad6b15..5d392ae8f 100644
--- a/1995/schnitzi/.tar.tstamp
+++ b/1995/schnitzi/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431279
diff --git a/1995/schnitzi/1995_schnitzi.tar.bz2 b/1995/schnitzi/1995_schnitzi.tar.bz2
index a76c795b4..0d7b2ef25 100644
Binary files a/1995/schnitzi/1995_schnitzi.tar.bz2 and b/1995/schnitzi/1995_schnitzi.tar.bz2 differ
diff --git a/1995/schnitzi/index.html b/1995/schnitzi/index.html
index 36e74a125..e0dae9c58 100644
--- a/1995/schnitzi/index.html
+++ b/1995/schnitzi/index.html
@@ -190,6 +190,7 @@ amounts to doing a fork bomb on your machine!
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/spinellis/.tar.tstamp b/1995/spinellis/.tar.tstamp
index 9e5ad6b15..7492344b2 100644
--- a/1995/spinellis/.tar.tstamp
+++ b/1995/spinellis/.tar.tstamp
@@ -1 +1 @@
-1711177838
+1711431280
diff --git a/1995/spinellis/1995_spinellis.tar.bz2 b/1995/spinellis/1995_spinellis.tar.bz2
index abddf0e3e..59709d754 100644
Binary files a/1995/spinellis/1995_spinellis.tar.bz2 and b/1995/spinellis/1995_spinellis.tar.bz2 differ
diff --git a/1995/spinellis/index.html b/1995/spinellis/index.html
index d6175d908..ceee2b4e0 100644
--- a/1995/spinellis/index.html
+++ b/1995/spinellis/index.html
@@ -190,6 +190,7 @@ the rules?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1995/vanschnitz/.tar.tstamp b/1995/vanschnitz/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1995/vanschnitz/.tar.tstamp
+++ b/1995/vanschnitz/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1995/vanschnitz/1995_vanschnitz.tar.bz2 b/1995/vanschnitz/1995_vanschnitz.tar.bz2
index e2d0cd647..a145af808 100644
Binary files a/1995/vanschnitz/1995_vanschnitz.tar.bz2 and b/1995/vanschnitz/1995_vanschnitz.tar.bz2 differ
diff --git a/1995/vanschnitz/index.html b/1995/vanschnitz/index.html
index 5b3537c10..3e24ad474 100644
--- a/1995/vanschnitz/index.html
+++ b/1995/vanschnitz/index.html
@@ -330,6 +330,7 @@ end
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/.tar.tstamp b/1996/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/.tar.tstamp
+++ b/1996/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/august/.tar.tstamp b/1996/august/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/august/.tar.tstamp
+++ b/1996/august/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/august/1996_august.tar.bz2 b/1996/august/1996_august.tar.bz2
index 85ad363a0..87d02aa41 100644
Binary files a/1996/august/1996_august.tar.bz2 and b/1996/august/1996_august.tar.bz2 differ
diff --git a/1996/august/index.html b/1996/august/index.html
index 2e1fd95cd..170c20f69 100644
--- a/1996/august/index.html
+++ b/1996/august/index.html
@@ -346,6 +346,7 @@ stars: "*"*
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/dalbec/.tar.tstamp b/1996/dalbec/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/dalbec/.tar.tstamp
+++ b/1996/dalbec/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/dalbec/1996_dalbec.tar.bz2 b/1996/dalbec/1996_dalbec.tar.bz2
index 350806c01..b55b1aaff 100644
Binary files a/1996/dalbec/1996_dalbec.tar.bz2 and b/1996/dalbec/1996_dalbec.tar.bz2 differ
diff --git a/1996/dalbec/index.html b/1996/dalbec/index.html
index 72d054835..4bb403580 100644
--- a/1996/dalbec/index.html
+++ b/1996/dalbec/index.html
@@ -216,6 +216,7 @@ where a==0.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/eldby/.tar.tstamp b/1996/eldby/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/eldby/.tar.tstamp
+++ b/1996/eldby/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/eldby/1996_eldby.tar.bz2 b/1996/eldby/1996_eldby.tar.bz2
index 1ce715c45..0ad039e79 100644
Binary files a/1996/eldby/1996_eldby.tar.bz2 and b/1996/eldby/1996_eldby.tar.bz2 differ
diff --git a/1996/eldby/index.html b/1996/eldby/index.html
index 313355a24..2d0cc8bf0 100644
--- a/1996/eldby/index.html
+++ b/1996/eldby/index.html
@@ -205,6 +205,7 @@ must be VT100 or better with 80 columns and 24 rows or more.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/gandalf/.tar.tstamp b/1996/gandalf/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/gandalf/.tar.tstamp
+++ b/1996/gandalf/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/gandalf/1996_gandalf.tar.bz2 b/1996/gandalf/1996_gandalf.tar.bz2
index 78cdc214e..c094c853d 100644
Binary files a/1996/gandalf/1996_gandalf.tar.bz2 and b/1996/gandalf/1996_gandalf.tar.bz2 differ
diff --git a/1996/gandalf/index.html b/1996/gandalf/index.html
index 8cb80b1d5..8fbc14eea 100644
--- a/1996/gandalf/index.html
+++ b/1996/gandalf/index.html
@@ -195,6 +195,7 @@ you too?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/huffman/.tar.tstamp b/1996/huffman/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/huffman/.tar.tstamp
+++ b/1996/huffman/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/huffman/1996_huffman.tar.bz2 b/1996/huffman/1996_huffman.tar.bz2
index 6303d37c7..2cf2ff18e 100644
Binary files a/1996/huffman/1996_huffman.tar.bz2 and b/1996/huffman/1996_huffman.tar.bz2 differ
diff --git a/1996/huffman/index.html b/1996/huffman/index.html
index 0747e5a53..4c99e18fb 100644
--- a/1996/huffman/index.html
+++ b/1996/huffman/index.html
@@ -203,6 +203,7 @@ to the executable.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/jonth/.tar.tstamp b/1996/jonth/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/jonth/.tar.tstamp
+++ b/1996/jonth/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/jonth/1996_jonth.tar.bz2 b/1996/jonth/1996_jonth.tar.bz2
index da7eb4d73..4e9ed84a5 100644
Binary files a/1996/jonth/1996_jonth.tar.bz2 and b/1996/jonth/1996_jonth.tar.bz2 differ
diff --git a/1996/jonth/index.html b/1996/jonth/index.html
index 55e337168..42ac97c70 100644
--- a/1996/jonth/index.html
+++ b/1996/jonth/index.html
@@ -209,6 +209,7 @@ give two display arguments (./jonth host:0 host:0).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/rcm/.tar.tstamp b/1996/rcm/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/rcm/.tar.tstamp
+++ b/1996/rcm/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/rcm/1996_rcm.tar.bz2 b/1996/rcm/1996_rcm.tar.bz2
index 1430b7ea3..d7f99122d 100644
Binary files a/1996/rcm/1996_rcm.tar.bz2 and b/1996/rcm/1996_rcm.tar.bz2 differ
diff --git a/1996/rcm/index.html b/1996/rcm/index.html
index 06cbd8345..8361b6083 100644
--- a/1996/rcm/index.html
+++ b/1996/rcm/index.html
@@ -220,6 +220,7 @@ bytes.”
.path - directory path from top directory
rfc1951.gz - input data
rfc1952.gz - input data
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/schweikh1/.tar.tstamp b/1996/schweikh1/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/schweikh1/.tar.tstamp
+++ b/1996/schweikh1/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/schweikh1/1996_schweikh1.tar.bz2 b/1996/schweikh1/1996_schweikh1.tar.bz2
index 36a462336..3a7b9e8ac 100644
Binary files a/1996/schweikh1/1996_schweikh1.tar.bz2 and b/1996/schweikh1/1996_schweikh1.tar.bz2 differ
diff --git a/1996/schweikh1/index.html b/1996/schweikh1/index.html
index 3b2cecbdd..d7d686d33 100644
--- a/1996/schweikh1/index.html
+++ b/1996/schweikh1/index.html
@@ -260,6 +260,7 @@ problems on other systems.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/schweikh2/.tar.tstamp b/1996/schweikh2/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/schweikh2/.tar.tstamp
+++ b/1996/schweikh2/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/schweikh2/1996_schweikh2.tar.bz2 b/1996/schweikh2/1996_schweikh2.tar.bz2
index 0bb6fe86d..1703f59d4 100644
Binary files a/1996/schweikh2/1996_schweikh2.tar.bz2 and b/1996/schweikh2/1996_schweikh2.tar.bz2 differ
diff --git a/1996/schweikh2/index.html b/1996/schweikh2/index.html
index b7c506a5c..df6faae2d 100644
--- a/1996/schweikh2/index.html
+++ b/1996/schweikh2/index.html
@@ -277,6 +277,7 @@ For a nice printout try this on your Bourne compatible shell:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/schweikh3/.tar.tstamp b/1996/schweikh3/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/schweikh3/.tar.tstamp
+++ b/1996/schweikh3/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/schweikh3/1996_schweikh3.tar.bz2 b/1996/schweikh3/1996_schweikh3.tar.bz2
index c16d71d3f..1c6c339c3 100644
Binary files a/1996/schweikh3/1996_schweikh3.tar.bz2 and b/1996/schweikh3/1996_schweikh3.tar.bz2 differ
diff --git a/1996/schweikh3/index.html b/1996/schweikh3/index.html
index 849ae615c..2acaa5232 100644
--- a/1996/schweikh3/index.html
+++ b/1996/schweikh3/index.html
@@ -283,6 +283,7 @@ minute or so.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1996/westley/.tar.tstamp b/1996/westley/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1996/westley/.tar.tstamp
+++ b/1996/westley/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1996/westley/1996_westley.tar.bz2 b/1996/westley/1996_westley.tar.bz2
index 1fec405af..247b76bf8 100644
Binary files a/1996/westley/1996_westley.tar.bz2 and b/1996/westley/1996_westley.tar.bz2 differ
diff --git a/1996/westley/index.html b/1996/westley/index.html
index 0efb7ad5c..137e6983d 100644
--- a/1996/westley/index.html
+++ b/1996/westley/index.html
@@ -244,6 +244,7 @@ position. It won’t move until both hands click over at 4:00.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/.tar.tstamp b/1998/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/.tar.tstamp
+++ b/1998/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/banks/.tar.tstamp b/1998/banks/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1998/banks/.tar.tstamp
+++ b/1998/banks/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1998/banks/1998_banks.tar.bz2 b/1998/banks/1998_banks.tar.bz2
index 92bc3a88a..5a4315c2d 100644
Binary files a/1998/banks/1998_banks.tar.bz2 and b/1998/banks/1998_banks.tar.bz2 differ
diff --git a/1998/banks/index.html b/1998/banks/index.html
index 23637557f..b5d4ab043 100644
--- a/1998/banks/index.html
+++ b/1998/banks/index.html
@@ -379,6 +379,7 @@ flicker.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/bas1/.tar.tstamp b/1998/bas1/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1998/bas1/.tar.tstamp
+++ b/1998/bas1/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1998/bas1/1998_bas1.tar.bz2 b/1998/bas1/1998_bas1.tar.bz2
index b34dc42e4..f94d9c9b8 100644
Binary files a/1998/bas1/1998_bas1.tar.bz2 and b/1998/bas1/1998_bas1.tar.bz2 differ
diff --git a/1998/bas1/index.html b/1998/bas1/index.html
index 6c6c2163f..9dd91f451 100644
--- a/1998/bas1/index.html
+++ b/1998/bas1/index.html
@@ -218,6 +218,7 @@ command line arguments.)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/bas2/.tar.tstamp b/1998/bas2/.tar.tstamp
index 8250210c0..7492344b2 100644
--- a/1998/bas2/.tar.tstamp
+++ b/1998/bas2/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431280
diff --git a/1998/bas2/1998_bas2.tar.bz2 b/1998/bas2/1998_bas2.tar.bz2
index 509b001ef..a12031119 100644
Binary files a/1998/bas2/1998_bas2.tar.bz2 and b/1998/bas2/1998_bas2.tar.bz2 differ
diff --git a/1998/bas2/index.html b/1998/bas2/index.html
index 2b3ee7d15..a42bd403a 100644
--- a/1998/bas2/index.html
+++ b/1998/bas2/index.html
@@ -208,6 +208,7 @@ the character).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/chaos/.tar.tstamp b/1998/chaos/.tar.tstamp
index 8250210c0..2717b9010 100644
--- a/1998/chaos/.tar.tstamp
+++ b/1998/chaos/.tar.tstamp
@@ -1 +1 @@
-1711177839
+1711431281
diff --git a/1998/chaos/1998_chaos.tar.bz2 b/1998/chaos/1998_chaos.tar.bz2
index 12df71c7f..5c8ba277b 100644
Binary files a/1998/chaos/1998_chaos.tar.bz2 and b/1998/chaos/1998_chaos.tar.bz2 differ
diff --git a/1998/chaos/index.html b/1998/chaos/index.html
index 444898475..4b379f6c7 100644
--- a/1998/chaos/index.html
+++ b/1998/chaos/index.html
@@ -230,6 +230,7 @@ happier.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/df/.tar.tstamp b/1998/df/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/df/.tar.tstamp
+++ b/1998/df/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/df/1998_df.tar.bz2 b/1998/df/1998_df.tar.bz2
index e91284b7a..436209b8a 100644
Binary files a/1998/df/1998_df.tar.bz2 and b/1998/df/1998_df.tar.bz2 differ
diff --git a/1998/df/index.html b/1998/df/index.html
index 2431de01f..ebd935663 100644
--- a/1998/df/index.html
+++ b/1998/df/index.html
@@ -292,6 +292,7 @@ different.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/dlowe/.tar.tstamp b/1998/dlowe/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/dlowe/.tar.tstamp
+++ b/1998/dlowe/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/dlowe/1998_dlowe.tar.bz2 b/1998/dlowe/1998_dlowe.tar.bz2
index bac47b238..cc0db803b 100644
Binary files a/1998/dlowe/1998_dlowe.tar.bz2 and b/1998/dlowe/1998_dlowe.tar.bz2 differ
diff --git a/1998/dlowe/index.html b/1998/dlowe/index.html
index 527489b64..3545c24be 100644
--- a/1998/dlowe/index.html
+++ b/1998/dlowe/index.html
@@ -270,6 +270,7 @@ run perl4 programs after they’ve been run through it; “encrypt
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/dloweneil/.tar.tstamp b/1998/dloweneil/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/dloweneil/.tar.tstamp
+++ b/1998/dloweneil/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/dloweneil/1998_dloweneil.tar.bz2 b/1998/dloweneil/1998_dloweneil.tar.bz2
index 5baaa00d1..7561754fc 100644
Binary files a/1998/dloweneil/1998_dloweneil.tar.bz2 and b/1998/dloweneil/1998_dloweneil.tar.bz2 differ
diff --git a/1998/dloweneil/index.html b/1998/dloweneil/index.html
index 25d5d643b..1558fcf6f 100644
--- a/1998/dloweneil/index.html
+++ b/1998/dloweneil/index.html
@@ -285,6 +285,7 @@ places.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/dorssel/.tar.tstamp b/1998/dorssel/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/dorssel/.tar.tstamp
+++ b/1998/dorssel/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/dorssel/1998_dorssel.tar.bz2 b/1998/dorssel/1998_dorssel.tar.bz2
index 18f2053c6..21adaf097 100644
Binary files a/1998/dorssel/1998_dorssel.tar.bz2 and b/1998/dorssel/1998_dorssel.tar.bz2 differ
diff --git a/1998/dorssel/index.html b/1998/dorssel/index.html
index 0bcb04a0a..298102e5b 100644
--- a/1998/dorssel/index.html
+++ b/1998/dorssel/index.html
@@ -247,6 +247,7 @@ understand this program. For an obfuscated spoiler, try
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/fanf/.tar.tstamp b/1998/fanf/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/fanf/.tar.tstamp
+++ b/1998/fanf/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/fanf/1998_fanf.tar.bz2 b/1998/fanf/1998_fanf.tar.bz2
index df20eab58..d19c9cf5c 100644
Binary files a/1998/fanf/1998_fanf.tar.bz2 and b/1998/fanf/1998_fanf.tar.bz2 differ
diff --git a/1998/fanf/index.html b/1998/fanf/index.html
index 55d387000..fe559fac2 100644
--- a/1998/fanf/index.html
+++ b/1998/fanf/index.html
@@ -459,6 +459,7 @@ International Logic Programming Symposium, 1995.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/schnitzi/.tar.tstamp b/1998/schnitzi/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/schnitzi/.tar.tstamp
+++ b/1998/schnitzi/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/schnitzi/1998_schnitzi.tar.bz2 b/1998/schnitzi/1998_schnitzi.tar.bz2
index 31fd16de6..bf1dea224 100644
Binary files a/1998/schnitzi/1998_schnitzi.tar.bz2 and b/1998/schnitzi/1998_schnitzi.tar.bz2 differ
diff --git a/1998/schnitzi/index.html b/1998/schnitzi/index.html
index 02a8b77cf..6597765df 100644
--- a/1998/schnitzi/index.html
+++ b/1998/schnitzi/index.html
@@ -251,6 +251,7 @@ other functions all the time. Or, almost all the time.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/schweikh1/.tar.tstamp b/1998/schweikh1/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/schweikh1/.tar.tstamp
+++ b/1998/schweikh1/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/schweikh1/1998_schweikh1.tar.bz2 b/1998/schweikh1/1998_schweikh1.tar.bz2
index e23daab00..ee56ebc6b 100644
Binary files a/1998/schweikh1/1998_schweikh1.tar.bz2 and b/1998/schweikh1/1998_schweikh1.tar.bz2 differ
diff --git a/1998/schweikh1/index.html b/1998/schweikh1/index.html
index 5513f6ea5..686830852 100644
--- a/1998/schweikh1/index.html
+++ b/1998/schweikh1/index.html
@@ -373,6 +373,7 @@ That describes exactly my modest attempts…
.gitignore - list of files that should not be committed under git
macos.md - markdown source for marcos.html
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/schweikh2/.tar.tstamp b/1998/schweikh2/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/schweikh2/.tar.tstamp
+++ b/1998/schweikh2/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/schweikh2/1998_schweikh2.tar.bz2 b/1998/schweikh2/1998_schweikh2.tar.bz2
index d07aeddcd..93725a92c 100644
Binary files a/1998/schweikh2/1998_schweikh2.tar.bz2 and b/1998/schweikh2/1998_schweikh2.tar.bz2 differ
diff --git a/1998/schweikh2/index.html b/1998/schweikh2/index.html
index 8f910531c..85333fe02 100644
--- a/1998/schweikh2/index.html
+++ b/1998/schweikh2/index.html
@@ -324,6 +324,7 @@ Type yarng and watch Him roll.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/schweikh3/.tar.tstamp b/1998/schweikh3/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/schweikh3/.tar.tstamp
+++ b/1998/schweikh3/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/schweikh3/1998_schweikh3.tar.bz2 b/1998/schweikh3/1998_schweikh3.tar.bz2
index 79d99a358..737564772 100644
Binary files a/1998/schweikh3/1998_schweikh3.tar.bz2 and b/1998/schweikh3/1998_schweikh3.tar.bz2 differ
diff --git a/1998/schweikh3/index.html b/1998/schweikh3/index.html
index feb6f7660..bd0d29d1c 100644
--- a/1998/schweikh3/index.html
+++ b/1998/schweikh3/index.html
@@ -331,6 +331,7 @@ the same size (on systems where sizeof (char *) == 4, or 4096
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/1998/tomtorfs/.tar.tstamp b/1998/tomtorfs/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/1998/tomtorfs/.tar.tstamp
+++ b/1998/tomtorfs/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/1998/tomtorfs/1998_tomtorfs.tar.bz2 b/1998/tomtorfs/1998_tomtorfs.tar.bz2
index 6d9027390..c1ed3240a 100644
Binary files a/1998/tomtorfs/1998_tomtorfs.tar.bz2 and b/1998/tomtorfs/1998_tomtorfs.tar.bz2 differ
diff --git a/1998/tomtorfs/index.html b/1998/tomtorfs/index.html
index 3f9acaf81..103bdb299 100644
--- a/1998/tomtorfs/index.html
+++ b/1998/tomtorfs/index.html
@@ -253,6 +253,7 @@ for writing this. You can find it in crc.txt.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/.tar.tstamp b/2000/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/.tar.tstamp
+++ b/2000/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/anderson/.tar.tstamp b/2000/anderson/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/2000/anderson/.tar.tstamp
+++ b/2000/anderson/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/2000/anderson/2000_anderson.tar.bz2 b/2000/anderson/2000_anderson.tar.bz2
index f298c9b0d..cace81ab0 100644
Binary files a/2000/anderson/2000_anderson.tar.bz2 and b/2000/anderson/2000_anderson.tar.bz2 differ
diff --git a/2000/anderson/index.html b/2000/anderson/index.html
index c08b2b65b..f6c383ba0 100644
--- a/2000/anderson/index.html
+++ b/2000/anderson/index.html
@@ -238,6 +238,7 @@ source file.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/bellard/.tar.tstamp b/2000/bellard/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/2000/bellard/.tar.tstamp
+++ b/2000/bellard/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/2000/bellard/2000_bellard.tar.bz2 b/2000/bellard/2000_bellard.tar.bz2
index 1e0e061f5..9e52c3d21 100644
Binary files a/2000/bellard/2000_bellard.tar.bz2 and b/2000/bellard/2000_bellard.tar.bz2 differ
diff --git a/2000/bellard/index.html b/2000/bellard/index.html
index b565e35b7..338689c0f 100644
--- a/2000/bellard/index.html
+++ b/2000/bellard/index.html
@@ -192,6 +192,7 @@ system with a gcc compiler.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/bmeyer/.tar.tstamp b/2000/bmeyer/.tar.tstamp
index 6d3824d8b..2717b9010 100644
--- a/2000/bmeyer/.tar.tstamp
+++ b/2000/bmeyer/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431281
diff --git a/2000/bmeyer/2000_bmeyer.tar.bz2 b/2000/bmeyer/2000_bmeyer.tar.bz2
index 6dbd6fc33..36824c112 100644
Binary files a/2000/bmeyer/2000_bmeyer.tar.bz2 and b/2000/bmeyer/2000_bmeyer.tar.bz2 differ
diff --git a/2000/bmeyer/index.html b/2000/bmeyer/index.html
index dddcb4d14..26aae5c28 100644
--- a/2000/bmeyer/index.html
+++ b/2000/bmeyer/index.html
@@ -429,6 +429,7 @@ guarantee decoding within the requested maximum error..entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/briddlebane/.tar.tstamp b/2000/briddlebane/.tar.tstamp
index 6d3824d8b..db22917af 100644
--- a/2000/briddlebane/.tar.tstamp
+++ b/2000/briddlebane/.tar.tstamp
@@ -1 +1 @@
-1711177840
+1711431282
diff --git a/2000/briddlebane/2000_briddlebane.tar.bz2 b/2000/briddlebane/2000_briddlebane.tar.bz2
index e3d609620..1f16e1e20 100644
Binary files a/2000/briddlebane/2000_briddlebane.tar.bz2 and b/2000/briddlebane/2000_briddlebane.tar.bz2 differ
diff --git a/2000/briddlebane/index.html b/2000/briddlebane/index.html
index 0f0640b1a..7309709a7 100644
--- a/2000/briddlebane/index.html
+++ b/2000/briddlebane/index.html
@@ -213,6 +213,7 @@ it. One of the real mysteries involves the numbers 114 and
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/dhyang/.tar.tstamp b/2000/dhyang/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/dhyang/.tar.tstamp
+++ b/2000/dhyang/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/dhyang/2000_dhyang.tar.bz2 b/2000/dhyang/2000_dhyang.tar.bz2
index ec8856984..3bc65c355 100644
Binary files a/2000/dhyang/2000_dhyang.tar.bz2 and b/2000/dhyang/2000_dhyang.tar.bz2 differ
diff --git a/2000/dhyang/index.html b/2000/dhyang/index.html
index c3e8fe36b..d0192216d 100644
--- a/2000/dhyang/index.html
+++ b/2000/dhyang/index.html
@@ -208,6 +208,7 @@ type (a source of compile warnings).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/dlowe/.tar.tstamp b/2000/dlowe/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/dlowe/.tar.tstamp
+++ b/2000/dlowe/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/dlowe/2000_dlowe.tar.bz2 b/2000/dlowe/2000_dlowe.tar.bz2
index ca8d8da26..4bc9a3aa6 100644
Binary files a/2000/dlowe/2000_dlowe.tar.bz2 and b/2000/dlowe/2000_dlowe.tar.bz2 differ
diff --git a/2000/dlowe/index.html b/2000/dlowe/index.html
index 1428b8815..a6cb21747 100644
--- a/2000/dlowe/index.html
+++ b/2000/dlowe/index.html
@@ -373,6 +373,7 @@ DEC Tru64 5.0+, again according to the Perl people.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/jarijyrki/.tar.tstamp b/2000/jarijyrki/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/jarijyrki/.tar.tstamp
+++ b/2000/jarijyrki/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/jarijyrki/2000_jarijyrki.tar.bz2 b/2000/jarijyrki/2000_jarijyrki.tar.bz2
index 72b304c80..a7667635a 100644
Binary files a/2000/jarijyrki/2000_jarijyrki.tar.bz2 and b/2000/jarijyrki/2000_jarijyrki.tar.bz2 differ
diff --git a/2000/jarijyrki/index.html b/2000/jarijyrki/index.html
index da4e30d98..000931966 100644
--- a/2000/jarijyrki/index.html
+++ b/2000/jarijyrki/index.html
@@ -427,6 +427,7 @@ currently.
finance.sheet - spreadsheet
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/natori/.tar.tstamp b/2000/natori/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/natori/.tar.tstamp
+++ b/2000/natori/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/natori/2000_natori.tar.bz2 b/2000/natori/2000_natori.tar.bz2
index de7671b66..e92e660ef 100644
Binary files a/2000/natori/2000_natori.tar.bz2 and b/2000/natori/2000_natori.tar.bz2 differ
diff --git a/2000/natori/index.html b/2000/natori/index.html
index ff575d71c..f75e5dc3a 100644
--- a/2000/natori/index.html
+++ b/2000/natori/index.html
@@ -226,6 +226,7 @@ into acos(-l/2).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/primenum/.tar.tstamp b/2000/primenum/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/primenum/.tar.tstamp
+++ b/2000/primenum/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/primenum/2000_primenum.tar.bz2 b/2000/primenum/2000_primenum.tar.bz2
index 47c88a5cc..a88831337 100644
Binary files a/2000/primenum/2000_primenum.tar.bz2 and b/2000/primenum/2000_primenum.tar.bz2 differ
diff --git a/2000/primenum/index.html b/2000/primenum/index.html
index 042c0e29e..475ac0698 100644
--- a/2000/primenum/index.html
+++ b/2000/primenum/index.html
@@ -239,6 +239,7 @@ number front. But ye be warned: “not a11 variab1es1es are identica1” :-)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/rince/.tar.tstamp b/2000/rince/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/rince/.tar.tstamp
+++ b/2000/rince/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/rince/2000_rince.tar.bz2 b/2000/rince/2000_rince.tar.bz2
index edaf4ee3c..5c3abe76a 100644
Binary files a/2000/rince/2000_rince.tar.bz2 and b/2000/rince/2000_rince.tar.bz2 differ
diff --git a/2000/rince/index.html b/2000/rince/index.html
index b0eeecc0c..b979e448b 100644
--- a/2000/rince/index.html
+++ b/2000/rince/index.html
@@ -423,6 +423,7 @@ Jean Meeus. Published by Willmann-Bell Inc..entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/robison/.tar.tstamp b/2000/robison/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/robison/.tar.tstamp
+++ b/2000/robison/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/robison/2000_robison.tar.bz2 b/2000/robison/2000_robison.tar.bz2
index b2b02fa36..31dd8f36e 100644
Binary files a/2000/robison/2000_robison.tar.bz2 and b/2000/robison/2000_robison.tar.bz2 differ
diff --git a/2000/robison/index.html b/2000/robison/index.html
index 41ffea2d7..2a3bbac34 100644
--- a/2000/robison/index.html
+++ b/2000/robison/index.html
@@ -298,6 +298,7 @@ them, in lg(N) time, depending upon a parameter.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/schneiderwent/.tar.tstamp b/2000/schneiderwent/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/schneiderwent/.tar.tstamp
+++ b/2000/schneiderwent/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/schneiderwent/2000_schneiderwent.tar.bz2 b/2000/schneiderwent/2000_schneiderwent.tar.bz2
index 70e79637d..e8b748745 100644
Binary files a/2000/schneiderwent/2000_schneiderwent.tar.bz2 and b/2000/schneiderwent/2000_schneiderwent.tar.bz2 differ
diff --git a/2000/schneiderwent/index.html b/2000/schneiderwent/index.html
index e94a376eb..d86664996 100644
--- a/2000/schneiderwent/index.html
+++ b/2000/schneiderwent/index.html
@@ -237,6 +237,7 @@ in a normal 3270 environment.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/thadgavin/.tar.tstamp b/2000/thadgavin/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/thadgavin/.tar.tstamp
+++ b/2000/thadgavin/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/thadgavin/2000_thadgavin.tar.bz2 b/2000/thadgavin/2000_thadgavin.tar.bz2
index 4a6f092b1..442c1518c 100644
Binary files a/2000/thadgavin/2000_thadgavin.tar.bz2 and b/2000/thadgavin/2000_thadgavin.tar.bz2 differ
diff --git a/2000/thadgavin/index.html b/2000/thadgavin/index.html
index 54d04135b..be221f057 100644
--- a/2000/thadgavin/index.html
+++ b/2000/thadgavin/index.html
@@ -252,6 +252,7 @@ char ', possible loss of data
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2000/tomx/.tar.tstamp b/2000/tomx/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2000/tomx/.tar.tstamp
+++ b/2000/tomx/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2000/tomx/2000_tomx.tar.bz2 b/2000/tomx/2000_tomx.tar.bz2
index de114b6f3..c84932f85 100644
Binary files a/2000/tomx/2000_tomx.tar.bz2 and b/2000/tomx/2000_tomx.tar.bz2 differ
diff --git a/2000/tomx/index.html b/2000/tomx/index.html
index 872bf8d9b..688244182 100644
--- a/2000/tomx/index.html
+++ b/2000/tomx/index.html
@@ -257,6 +257,7 @@ or converting tabs to spaces can be disastrous.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/.tar.tstamp b/2001/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/.tar.tstamp
+++ b/2001/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/anonymous/.tar.tstamp b/2001/anonymous/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2001/anonymous/.tar.tstamp
+++ b/2001/anonymous/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2001/anonymous/2001_anonymous.tar.bz2 b/2001/anonymous/2001_anonymous.tar.bz2
index 2e59de74a..39278dad1 100644
Binary files a/2001/anonymous/2001_anonymous.tar.bz2 and b/2001/anonymous/2001_anonymous.tar.bz2 differ
diff --git a/2001/anonymous/index.html b/2001/anonymous/index.html
index f6b3c699f..6cf2a185c 100644
--- a/2001/anonymous/index.html
+++ b/2001/anonymous/index.html
@@ -335,6 +335,7 @@ just C programs that generate C code as their output.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/bellard/.tar.tstamp b/2001/bellard/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2001/bellard/.tar.tstamp
+++ b/2001/bellard/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2001/bellard/2001_bellard.tar.bz2 b/2001/bellard/2001_bellard.tar.bz2
index e6ad3e7cc..3a59f4ef8 100644
Binary files a/2001/bellard/2001_bellard.tar.bz2 and b/2001/bellard/2001_bellard.tar.bz2 differ
diff --git a/2001/bellard/index.html b/2001/bellard/index.html
index e7387bd17..bcdab9cd2 100644
--- a/2001/bellard/index.html
+++ b/2001/bellard/index.html
@@ -279,6 +279,7 @@ be used when you compile and link it.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/cheong/.tar.tstamp b/2001/cheong/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2001/cheong/.tar.tstamp
+++ b/2001/cheong/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2001/cheong/2001_cheong.tar.bz2 b/2001/cheong/2001_cheong.tar.bz2
index 2f54a843a..49e23369b 100644
Binary files a/2001/cheong/2001_cheong.tar.bz2 and b/2001/cheong/2001_cheong.tar.bz2 differ
diff --git a/2001/cheong/index.html b/2001/cheong/index.html
index 8396b4d03..e16aa56e4 100644
--- a/2001/cheong/index.html
+++ b/2001/cheong/index.html
@@ -233,6 +233,7 @@ the program.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/coupard/.tar.tstamp b/2001/coupard/.tar.tstamp
index b898e14a1..db22917af 100644
--- a/2001/coupard/.tar.tstamp
+++ b/2001/coupard/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431282
diff --git a/2001/coupard/2001_coupard.tar.bz2 b/2001/coupard/2001_coupard.tar.bz2
index cef2c556f..3e099366f 100644
Binary files a/2001/coupard/2001_coupard.tar.bz2 and b/2001/coupard/2001_coupard.tar.bz2 differ
diff --git a/2001/coupard/index.html b/2001/coupard/index.html
index e2e4c74f7..75ab4ba96 100644
--- a/2001/coupard/index.html
+++ b/2001/coupard/index.html
@@ -273,6 +273,7 @@ the size of the source code.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/ctk/.tar.tstamp b/2001/ctk/.tar.tstamp
index b898e14a1..5a0443608 100644
--- a/2001/ctk/.tar.tstamp
+++ b/2001/ctk/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431283
diff --git a/2001/ctk/2001_ctk.tar.bz2 b/2001/ctk/2001_ctk.tar.bz2
index ca2f05763..b0423b82c 100644
Binary files a/2001/ctk/2001_ctk.tar.bz2 and b/2001/ctk/2001_ctk.tar.bz2 differ
diff --git a/2001/ctk/index.html b/2001/ctk/index.html
index fac14a5e4..91732ed56 100644
--- a/2001/ctk/index.html
+++ b/2001/ctk/index.html
@@ -206,6 +206,7 @@ font and the window maximized vertically!).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/dgbeards/.tar.tstamp b/2001/dgbeards/.tar.tstamp
index b898e14a1..5a0443608 100644
--- a/2001/dgbeards/.tar.tstamp
+++ b/2001/dgbeards/.tar.tstamp
@@ -1 +1 @@
-1711177841
+1711431283
diff --git a/2001/dgbeards/2001_dgbeards.tar.bz2 b/2001/dgbeards/2001_dgbeards.tar.bz2
index 71c91a7eb..c9ad68e5a 100644
Binary files a/2001/dgbeards/2001_dgbeards.tar.bz2 and b/2001/dgbeards/2001_dgbeards.tar.bz2 differ
diff --git a/2001/dgbeards/index.html b/2001/dgbeards/index.html
index d179ded44..ace03d2b2 100644
--- a/2001/dgbeards/index.html
+++ b/2001/dgbeards/index.html
@@ -354,6 +354,7 @@ the > to a >= and the bug will be gone.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/herrmann1/.tar.tstamp b/2001/herrmann1/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/herrmann1/.tar.tstamp
+++ b/2001/herrmann1/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/herrmann1/2001_herrmann1.tar.bz2 b/2001/herrmann1/2001_herrmann1.tar.bz2
index a1fc4d195..6adab79c1 100644
Binary files a/2001/herrmann1/2001_herrmann1.tar.bz2 and b/2001/herrmann1/2001_herrmann1.tar.bz2 differ
diff --git a/2001/herrmann1/index.html b/2001/herrmann1/index.html
index 7ceefd48b..72b9f7b1b 100644
--- a/2001/herrmann1/index.html
+++ b/2001/herrmann1/index.html
@@ -440,6 +440,7 @@ script.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/herrmann2/.tar.tstamp b/2001/herrmann2/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/herrmann2/.tar.tstamp
+++ b/2001/herrmann2/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/herrmann2/2001_herrmann2.tar.bz2 b/2001/herrmann2/2001_herrmann2.tar.bz2
index 6df416487..07c67b60b 100644
Binary files a/2001/herrmann2/2001_herrmann2.tar.bz2 and b/2001/herrmann2/2001_herrmann2.tar.bz2 differ
diff --git a/2001/herrmann2/index.html b/2001/herrmann2/index.html
index c6e5ed095..494ed8e92 100644
--- a/2001/herrmann2/index.html
+++ b/2001/herrmann2/index.html
@@ -332,6 +332,7 @@ adapted.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/jason/.tar.tstamp b/2001/jason/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/jason/.tar.tstamp
+++ b/2001/jason/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/jason/2001_jason.tar.bz2 b/2001/jason/2001_jason.tar.bz2
index 506a3bebf..cfb1ed844 100644
Binary files a/2001/jason/2001_jason.tar.bz2 and b/2001/jason/2001_jason.tar.bz2 differ
diff --git a/2001/jason/index.html b/2001/jason/index.html
index 2a09b02bc..8e9920173 100644
--- a/2001/jason/index.html
+++ b/2001/jason/index.html
@@ -258,6 +258,7 @@ mapping.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/kev/.tar.tstamp b/2001/kev/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/kev/.tar.tstamp
+++ b/2001/kev/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/kev/2001_kev.tar.bz2 b/2001/kev/2001_kev.tar.bz2
index 62350cd58..739d088da 100644
Binary files a/2001/kev/2001_kev.tar.bz2 and b/2001/kev/2001_kev.tar.bz2 differ
diff --git a/2001/kev/index.html b/2001/kev/index.html
index 1447867d2..91b60fdf2 100644
--- a/2001/kev/index.html
+++ b/2001/kev/index.html
@@ -334,6 +334,7 @@ though.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/ollinger/.tar.tstamp b/2001/ollinger/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/ollinger/.tar.tstamp
+++ b/2001/ollinger/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/ollinger/2001_ollinger.tar.bz2 b/2001/ollinger/2001_ollinger.tar.bz2
index 7fbb02285..6a3b69234 100644
Binary files a/2001/ollinger/2001_ollinger.tar.bz2 and b/2001/ollinger/2001_ollinger.tar.bz2 differ
diff --git a/2001/ollinger/index.html b/2001/ollinger/index.html
index 3283a3425..cf828211c 100644
--- a/2001/ollinger/index.html
+++ b/2001/ollinger/index.html
@@ -246,6 +246,7 @@ guarantee a constant time.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/rosten/.tar.tstamp b/2001/rosten/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/rosten/.tar.tstamp
+++ b/2001/rosten/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/rosten/2001_rosten.tar.bz2 b/2001/rosten/2001_rosten.tar.bz2
index ebef9af28..ae71970e7 100644
Binary files a/2001/rosten/2001_rosten.tar.bz2 and b/2001/rosten/2001_rosten.tar.bz2 differ
diff --git a/2001/rosten/index.html b/2001/rosten/index.html
index 373abda0d..4766cd069 100644
--- a/2001/rosten/index.html
+++ b/2001/rosten/index.html
@@ -259,6 +259,7 @@ beginning of the line wrecks the layout but makes it compile.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/schweikh/.tar.tstamp b/2001/schweikh/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/schweikh/.tar.tstamp
+++ b/2001/schweikh/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/schweikh/2001_schweikh.tar.bz2 b/2001/schweikh/2001_schweikh.tar.bz2
index a3f977a0f..807c37199 100644
Binary files a/2001/schweikh/2001_schweikh.tar.bz2 and b/2001/schweikh/2001_schweikh.tar.bz2 differ
diff --git a/2001/schweikh/index.html b/2001/schweikh/index.html
index f36faef56..591d4f1f6 100644
--- a/2001/schweikh/index.html
+++ b/2001/schweikh/index.html
@@ -237,6 +237,7 @@ try again. For extra credit implement character classes like [a-z].
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/westley/.tar.tstamp b/2001/westley/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/westley/.tar.tstamp
+++ b/2001/westley/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/westley/2001_westley.tar.bz2 b/2001/westley/2001_westley.tar.bz2
index 75cfb689f..d5d77f303 100644
Binary files a/2001/westley/2001_westley.tar.bz2 and b/2001/westley/2001_westley.tar.bz2 differ
diff --git a/2001/westley/index.html b/2001/westley/index.html
index cce33b9ff..c8b826030 100644
--- a/2001/westley/index.html
+++ b/2001/westley/index.html
@@ -322,6 +322,7 @@ all legal C.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2001/williams/.tar.tstamp b/2001/williams/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2001/williams/.tar.tstamp
+++ b/2001/williams/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2001/williams/2001_williams.tar.bz2 b/2001/williams/2001_williams.tar.bz2
index 014bc8667..102074826 100644
Binary files a/2001/williams/2001_williams.tar.bz2 and b/2001/williams/2001_williams.tar.bz2 differ
diff --git a/2001/williams/index.html b/2001/williams/index.html
index 80311ddd9..0cc18be64 100644
--- a/2001/williams/index.html
+++ b/2001/williams/index.html
@@ -210,6 +210,7 @@ The purpose of A/(x|1) is probably obvious, but what does (x|
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/.tar.tstamp b/2004/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/.tar.tstamp
+++ b/2004/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/anonymous/.tar.tstamp b/2004/anonymous/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2004/anonymous/.tar.tstamp
+++ b/2004/anonymous/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2004/anonymous/2004_anonymous.tar.bz2 b/2004/anonymous/2004_anonymous.tar.bz2
index cad1ef5e0..1487ca504 100644
Binary files a/2004/anonymous/2004_anonymous.tar.bz2 and b/2004/anonymous/2004_anonymous.tar.bz2 differ
diff --git a/2004/anonymous/index.html b/2004/anonymous/index.html
index 867dba1fa..5734334af 100644
--- a/2004/anonymous/index.html
+++ b/2004/anonymous/index.html
@@ -266,6 +266,7 @@ included in the font.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/arachnid/.tar.tstamp b/2004/arachnid/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2004/arachnid/.tar.tstamp
+++ b/2004/arachnid/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2004/arachnid/2004_arachnid.tar.bz2 b/2004/arachnid/2004_arachnid.tar.bz2
index c4313e41d..ec74b71ae 100644
Binary files a/2004/arachnid/2004_arachnid.tar.bz2 and b/2004/arachnid/2004_arachnid.tar.bz2 differ
diff --git a/2004/arachnid/index.html b/2004/arachnid/index.html
index ad57b921c..62669c0e3 100644
--- a/2004/arachnid/index.html
+++ b/2004/arachnid/index.html
@@ -219,6 +219,7 @@ explorers out there.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/burley/.tar.tstamp b/2004/burley/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2004/burley/.tar.tstamp
+++ b/2004/burley/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2004/burley/2004_burley.tar.bz2 b/2004/burley/2004_burley.tar.bz2
index 758064993..875bb0c5c 100644
Binary files a/2004/burley/2004_burley.tar.bz2 and b/2004/burley/2004_burley.tar.bz2 differ
diff --git a/2004/burley/index.html b/2004/burley/index.html
index 87acae494..d3139be88 100644
--- a/2004/burley/index.html
+++ b/2004/burley/index.html
@@ -221,6 +221,7 @@ statements such as if, for, do, whi
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/gavare/.tar.tstamp b/2004/gavare/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2004/gavare/.tar.tstamp
+++ b/2004/gavare/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2004/gavare/2004_gavare.tar.bz2 b/2004/gavare/2004_gavare.tar.bz2
index c4463bb8c..87ba36157 100644
Binary files a/2004/gavare/2004_gavare.tar.bz2 and b/2004/gavare/2004_gavare.tar.bz2 differ
diff --git a/2004/gavare/index.html b/2004/gavare/index.html
index 9fdd2cb3c..29ff7cda0 100644
--- a/2004/gavare/index.html
+++ b/2004/gavare/index.html
@@ -255,6 +255,7 @@ with no reserved words, and our world will be a better place.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/gavin/.tar.tstamp b/2004/gavin/.tar.tstamp
index b31fe5102..5a0443608 100644
--- a/2004/gavin/.tar.tstamp
+++ b/2004/gavin/.tar.tstamp
@@ -1 +1 @@
-1711177842
+1711431283
diff --git a/2004/gavin/2004_gavin.tar.bz2 b/2004/gavin/2004_gavin.tar.bz2
index 26960ada6..e237a8e4a 100644
Binary files a/2004/gavin/2004_gavin.tar.bz2 and b/2004/gavin/2004_gavin.tar.bz2 differ
diff --git a/2004/gavin/index.html b/2004/gavin/index.html
index 513692f28..5d9d7d068 100644
--- a/2004/gavin/index.html
+++ b/2004/gavin/index.html
@@ -299,6 +299,7 @@ at which a Linux bootloader loads an x86 kernel image).
gavin.md - markdown source for gavin.html
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/hibachi/.tar.tstamp b/2004/hibachi/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/hibachi/.tar.tstamp
+++ b/2004/hibachi/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/hibachi/2004_hibachi.tar.bz2 b/2004/hibachi/2004_hibachi.tar.bz2
index 09ac5883c..c567c2c9c 100644
Binary files a/2004/hibachi/2004_hibachi.tar.bz2 and b/2004/hibachi/2004_hibachi.tar.bz2 differ
diff --git a/2004/hibachi/index.html b/2004/hibachi/index.html
index bd3a9e76e..50b4360ba 100644
--- a/2004/hibachi/index.html
+++ b/2004/hibachi/index.html
@@ -315,6 +315,7 @@ paragraph 3 sentence 2, and so fails to display responses from
src/localhost/test/shell/test1.sh - POSIX shell page support file
src/localhost/test/shell/test2.sh - POSIX shell page support file
src/makefile.in - configure.in experiment that is not used
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/hoyle/.tar.tstamp b/2004/hoyle/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/hoyle/.tar.tstamp
+++ b/2004/hoyle/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/hoyle/2004_hoyle.tar.bz2 b/2004/hoyle/2004_hoyle.tar.bz2
index 18ca7cc45..f4b553b43 100644
Binary files a/2004/hoyle/2004_hoyle.tar.bz2 and b/2004/hoyle/2004_hoyle.tar.bz2 differ
diff --git a/2004/hoyle/index.html b/2004/hoyle/index.html
index 2c3a1ba66..18aaed5e2 100644
--- a/2004/hoyle/index.html
+++ b/2004/hoyle/index.html
@@ -206,6 +206,7 @@ dashes rather than a simple block of Xs.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/jdalbec/.tar.tstamp b/2004/jdalbec/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/jdalbec/.tar.tstamp
+++ b/2004/jdalbec/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/jdalbec/2004_jdalbec.tar.bz2 b/2004/jdalbec/2004_jdalbec.tar.bz2
index d32f66d59..dcec0a643 100644
Binary files a/2004/jdalbec/2004_jdalbec.tar.bz2 and b/2004/jdalbec/2004_jdalbec.tar.bz2 differ
diff --git a/2004/jdalbec/index.html b/2004/jdalbec/index.html
index de8374359..e65f03f0c 100644
--- a/2004/jdalbec/index.html
+++ b/2004/jdalbec/index.html
@@ -333,6 +333,7 @@ type, a structure, a structure member, a macro parameter, and a variable.).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/kopczynski/.tar.tstamp b/2004/kopczynski/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/kopczynski/.tar.tstamp
+++ b/2004/kopczynski/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/kopczynski/2004_kopczynski.tar.bz2 b/2004/kopczynski/2004_kopczynski.tar.bz2
index d25485077..774534312 100644
Binary files a/2004/kopczynski/2004_kopczynski.tar.bz2 and b/2004/kopczynski/2004_kopczynski.tar.bz2 differ
diff --git a/2004/kopczynski/index.html b/2004/kopczynski/index.html
index b5146b2c6..3edc31d45 100644
--- a/2004/kopczynski/index.html
+++ b/2004/kopczynski/index.html
@@ -319,6 +319,7 @@ comes from this. For additional obfuscation and conciseness, if mea
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/newbern/.tar.tstamp b/2004/newbern/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/newbern/.tar.tstamp
+++ b/2004/newbern/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/newbern/2004_newbern.tar.bz2 b/2004/newbern/2004_newbern.tar.bz2
index 886139720..34dfde89d 100644
Binary files a/2004/newbern/2004_newbern.tar.bz2 and b/2004/newbern/2004_newbern.tar.bz2 differ
diff --git a/2004/newbern/index.html b/2004/newbern/index.html
index 2e256e193..ecda63952 100644
--- a/2004/newbern/index.html
+++ b/2004/newbern/index.html
@@ -203,6 +203,7 @@ Decryption is left as an exercise for the reader.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/omoikane/.tar.tstamp b/2004/omoikane/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/omoikane/.tar.tstamp
+++ b/2004/omoikane/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/omoikane/2004_omoikane.tar.bz2 b/2004/omoikane/2004_omoikane.tar.bz2
index d0121583a..61df91065 100644
Binary files a/2004/omoikane/2004_omoikane.tar.bz2 and b/2004/omoikane/2004_omoikane.tar.bz2 differ
diff --git a/2004/omoikane/index.html b/2004/omoikane/index.html
index 13f2cdc2a..77373c4c9 100644
--- a/2004/omoikane/index.html
+++ b/2004/omoikane/index.html
@@ -283,6 +283,7 @@ still fail…
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/schnitzi/.tar.tstamp b/2004/schnitzi/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/schnitzi/.tar.tstamp
+++ b/2004/schnitzi/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/schnitzi/2004_schnitzi.tar.bz2 b/2004/schnitzi/2004_schnitzi.tar.bz2
index e2d6db95f..e322a8874 100644
Binary files a/2004/schnitzi/2004_schnitzi.tar.bz2 and b/2004/schnitzi/2004_schnitzi.tar.bz2 differ
diff --git a/2004/schnitzi/index.html b/2004/schnitzi/index.html
index e9e578f96..dad2bdaf3 100644
--- a/2004/schnitzi/index.html
+++ b/2004/schnitzi/index.html
@@ -275,6 +275,7 @@ royalties on this technique.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/sds/.entry.json b/2004/sds/.entry.json
index e52885e0d..cdf798100 100644
--- a/2004/sds/.entry.json
+++ b/2004/sds/.entry.json
@@ -41,6 +41,14 @@
"display_via_github" : true,
"entry_text" : "how to run"
},
+ {
+ "file_path" : "README_sds.txt",
+ "inventory_order" : 200,
+ "OK_to_edit" : true,
+ "display_as" : "test",
+ "display_via_github" : true,
+ "entry_text" : "sample data used by try.sh"
+ },
{
"file_path" : "2004_sds.tar.bz2",
"inventory_order" : 100000,
diff --git a/2004/sds/.tar.tstamp b/2004/sds/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/sds/.tar.tstamp
+++ b/2004/sds/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/sds/2004_sds.tar.bz2 b/2004/sds/2004_sds.tar.bz2
index 481d9e631..0b3edc3c9 100644
Binary files a/2004/sds/2004_sds.tar.bz2 and b/2004/sds/2004_sds.tar.bz2 differ
diff --git a/2004/sds/README_sds.txt b/2004/sds/README_sds.txt
index 8eaf1fc7c..4019a8274 100644
--- a/2004/sds/README_sds.txt
+++ b/2004/sds/README_sds.txt
@@ -1,3 +1,11 @@
+# NOT AN OFFICIAL README
+
+NOTE: This is a copy of README.md as it was in 2024 Jan 15.
+
+For the official README see [README.md](README.md) or
+view [index.html](index.html).
+
+
## To build:
```sh
diff --git a/2004/sds/index.html b/2004/sds/index.html
index 0bae12ed8..0241dfa95 100644
--- a/2004/sds/index.html
+++ b/2004/sds/index.html
@@ -231,6 +231,7 @@ GNU C.
Makefile - entry Makefile
sds.orig.c - original source
try.sh - how to run
+README_sds.txt - sample data used by try.sh
2004_sds.tar.bz2 - download entry source
Secondary files
@@ -240,6 +241,7 @@ GNU C.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/vik1/.tar.tstamp b/2004/vik1/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/vik1/.tar.tstamp
+++ b/2004/vik1/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/vik1/2004_vik1.tar.bz2 b/2004/vik1/2004_vik1.tar.bz2
index 1d6d587b0..1bf5e6e05 100644
Binary files a/2004/vik1/2004_vik1.tar.bz2 and b/2004/vik1/2004_vik1.tar.bz2 differ
diff --git a/2004/vik1/index.html b/2004/vik1/index.html
index b98365224..90633d746 100644
--- a/2004/vik1/index.html
+++ b/2004/vik1/index.html
@@ -264,6 +264,7 @@ low) are { 0, RED, GREEN, BLUE }.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2004/vik2/.tar.tstamp b/2004/vik2/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2004/vik2/.tar.tstamp
+++ b/2004/vik2/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2004/vik2/2004_vik2.tar.bz2 b/2004/vik2/2004_vik2.tar.bz2
index f375a6c44..5ab010cc3 100644
Binary files a/2004/vik2/2004_vik2.tar.bz2 and b/2004/vik2/2004_vik2.tar.bz2 differ
diff --git a/2004/vik2/index.html b/2004/vik2/index.html
index 938d9a017..6a0dbb737 100644
--- a/2004/vik2/index.html
+++ b/2004/vik2/index.html
@@ -331,6 +331,7 @@ with 512Mb ram and a lot of disk.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/.tar.tstamp b/2005/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/.tar.tstamp
+++ b/2005/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/aidan/.tar.tstamp b/2005/aidan/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2005/aidan/.tar.tstamp
+++ b/2005/aidan/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2005/aidan/2005_aidan.tar.bz2 b/2005/aidan/2005_aidan.tar.bz2
index 44b8423eb..64d1397f2 100644
Binary files a/2005/aidan/2005_aidan.tar.bz2 and b/2005/aidan/2005_aidan.tar.bz2 differ
diff --git a/2005/aidan/index.html b/2005/aidan/index.html
index e22f093ef..3f303b911 100644
--- a/2005/aidan/index.html
+++ b/2005/aidan/index.html
@@ -405,6 +405,7 @@ that way somehow…
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/anon/.tar.tstamp b/2005/anon/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2005/anon/.tar.tstamp
+++ b/2005/anon/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2005/anon/2005_anon.tar.bz2 b/2005/anon/2005_anon.tar.bz2
index 2a7ca71ab..c76fba2a8 100644
Binary files a/2005/anon/2005_anon.tar.bz2 and b/2005/anon/2005_anon.tar.bz2 differ
diff --git a/2005/anon/index.html b/2005/anon/index.html
index 2aae5770e..a9652ac3f 100644
--- a/2005/anon/index.html
+++ b/2005/anon/index.html
@@ -531,6 +531,7 @@ smiley. :-)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/boutines/.tar.tstamp b/2005/boutines/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2005/boutines/.tar.tstamp
+++ b/2005/boutines/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2005/boutines/2005_boutines.tar.bz2 b/2005/boutines/2005_boutines.tar.bz2
index 30872f93d..21df49fee 100644
Binary files a/2005/boutines/2005_boutines.tar.bz2 and b/2005/boutines/2005_boutines.tar.bz2 differ
diff --git a/2005/boutines/index.html b/2005/boutines/index.html
index 626ddb6f9..fb9df1c50 100644
--- a/2005/boutines/index.html
+++ b/2005/boutines/index.html
@@ -300,6 +300,7 @@ viewport and potentially every
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/chia/.tar.tstamp b/2005/chia/.tar.tstamp
index 40aa33af9..9a503fe38 100644
--- a/2005/chia/.tar.tstamp
+++ b/2005/chia/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431284
diff --git a/2005/chia/2005_chia.tar.bz2 b/2005/chia/2005_chia.tar.bz2
index 56dc65540..923ed4175 100644
Binary files a/2005/chia/2005_chia.tar.bz2 and b/2005/chia/2005_chia.tar.bz2 differ
diff --git a/2005/chia/index.html b/2005/chia/index.html
index 12322ae20..7c0eb51aa 100644
--- a/2005/chia/index.html
+++ b/2005/chia/index.html
@@ -209,6 +209,7 @@ when they see macro parameters that don’t look like C tokens.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/giljade/.tar.tstamp b/2005/giljade/.tar.tstamp
index 40aa33af9..045523110 100644
--- a/2005/giljade/.tar.tstamp
+++ b/2005/giljade/.tar.tstamp
@@ -1 +1 @@
-1711177843
+1711431285
diff --git a/2005/giljade/2005_giljade.tar.bz2 b/2005/giljade/2005_giljade.tar.bz2
index d6e81bf8a..00c0a35ba 100644
Binary files a/2005/giljade/2005_giljade.tar.bz2 and b/2005/giljade/2005_giljade.tar.bz2 differ
diff --git a/2005/giljade/index.html b/2005/giljade/index.html
index f9e0fa7e3..5c0742bc2 100644
--- a/2005/giljade/index.html
+++ b/2005/giljade/index.html
@@ -295,6 +295,7 @@ tricky.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/jetro/.tar.tstamp b/2005/jetro/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/jetro/.tar.tstamp
+++ b/2005/jetro/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/jetro/2005_jetro.tar.bz2 b/2005/jetro/2005_jetro.tar.bz2
index f98805c4d..c54882114 100644
Binary files a/2005/jetro/2005_jetro.tar.bz2 and b/2005/jetro/2005_jetro.tar.bz2 differ
diff --git a/2005/jetro/index.html b/2005/jetro/index.html
index d3bd50cb8..9c4964f7c 100644
--- a/2005/jetro/index.html
+++ b/2005/jetro/index.html
@@ -194,6 +194,7 @@ with one call to getchar() before it quits.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/klausler/.tar.tstamp b/2005/klausler/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/klausler/.tar.tstamp
+++ b/2005/klausler/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/klausler/2005_klausler.tar.bz2 b/2005/klausler/2005_klausler.tar.bz2
index 26f7d62c6..2e43345a4 100644
Binary files a/2005/klausler/2005_klausler.tar.bz2 and b/2005/klausler/2005_klausler.tar.bz2 differ
diff --git a/2005/klausler/index.html b/2005/klausler/index.html
index db58e58c6..fdb24df10 100644
--- a/2005/klausler/index.html
+++ b/2005/klausler/index.html
@@ -213,6 +213,7 @@ recursion, or other tricks. Enjoy!
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/mikeash/.tar.tstamp b/2005/mikeash/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/mikeash/.tar.tstamp
+++ b/2005/mikeash/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/mikeash/2005_mikeash.tar.bz2 b/2005/mikeash/2005_mikeash.tar.bz2
index 3cbb59126..7f5252f20 100644
Binary files a/2005/mikeash/2005_mikeash.tar.bz2 and b/2005/mikeash/2005_mikeash.tar.bz2 differ
diff --git a/2005/mikeash/index.html b/2005/mikeash/index.html
index 45cc1f367..ecb0a48a9 100644
--- a/2005/mikeash/index.html
+++ b/2005/mikeash/index.html
@@ -277,6 +277,7 @@ C library.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/mynx/.tar.tstamp b/2005/mynx/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/mynx/.tar.tstamp
+++ b/2005/mynx/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/mynx/2005_mynx.tar.bz2 b/2005/mynx/2005_mynx.tar.bz2
index 2d8f4fc82..34889e6d4 100644
Binary files a/2005/mynx/2005_mynx.tar.bz2 and b/2005/mynx/2005_mynx.tar.bz2 differ
diff --git a/2005/mynx/index.html b/2005/mynx/index.html
index ba965adfc..b3f21147a 100644
--- a/2005/mynx/index.html
+++ b/2005/mynx/index.html
@@ -239,6 +239,7 @@ command sequence would be:
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
source/mynx.c - copy of the entry source
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/persano/.tar.tstamp b/2005/persano/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/persano/.tar.tstamp
+++ b/2005/persano/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/persano/2005_persano.tar.bz2 b/2005/persano/2005_persano.tar.bz2
index 79a73b81d..b377ed629 100644
Binary files a/2005/persano/2005_persano.tar.bz2 and b/2005/persano/2005_persano.tar.bz2 differ
diff --git a/2005/persano/index.html b/2005/persano/index.html
index 40c245c45..8a9acfb75 100644
--- a/2005/persano/index.html
+++ b/2005/persano/index.html
@@ -273,6 +273,7 @@ was not implemented in order to avoid the Unisys patent can no longer be used..entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/sykes/.tar.tstamp b/2005/sykes/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/sykes/.tar.tstamp
+++ b/2005/sykes/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/sykes/2005_sykes.tar.bz2 b/2005/sykes/2005_sykes.tar.bz2
index b331b64c3..e46cf9d7d 100644
Binary files a/2005/sykes/2005_sykes.tar.bz2 and b/2005/sykes/2005_sykes.tar.bz2 differ
diff --git a/2005/sykes/index.html b/2005/sykes/index.html
index f34892e69..563f1c33b 100644
--- a/2005/sykes/index.html
+++ b/2005/sykes/index.html
@@ -374,6 +374,7 @@ from the Internet. This is to avoid directly infringing any copyright.
kernel-2.901465-03.bin - Commodore PET kernel
nullfill.bin - block of binary zeros
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/timwi/.tar.tstamp b/2005/timwi/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/timwi/.tar.tstamp
+++ b/2005/timwi/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/timwi/2005_timwi.tar.bz2 b/2005/timwi/2005_timwi.tar.bz2
index 75e839ce8..121a49bf4 100644
Binary files a/2005/timwi/2005_timwi.tar.bz2 and b/2005/timwi/2005_timwi.tar.bz2 differ
diff --git a/2005/timwi/index.html b/2005/timwi/index.html
index 8560caf6d..b1d7e77dd 100644
--- a/2005/timwi/index.html
+++ b/2005/timwi/index.html
@@ -226,6 +226,7 @@ hardest thing to figure out is how it finds the matching square brackets.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/toledo/.tar.tstamp b/2005/toledo/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/toledo/.tar.tstamp
+++ b/2005/toledo/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/toledo/2005_toledo.tar.bz2 b/2005/toledo/2005_toledo.tar.bz2
index 98d76faac..34a11cdb1 100644
Binary files a/2005/toledo/2005_toledo.tar.bz2 and b/2005/toledo/2005_toledo.tar.bz2 differ
diff --git a/2005/toledo/index.html b/2005/toledo/index.html
index 0e68dabcc..3e74b1ecf 100644
--- a/2005/toledo/index.html
+++ b/2005/toledo/index.html
@@ -274,6 +274,7 @@ and compiles faster… but I’m still not seeing the difference.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/vik/.tar.tstamp b/2005/vik/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/vik/.tar.tstamp
+++ b/2005/vik/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/vik/2005_vik.tar.bz2 b/2005/vik/2005_vik.tar.bz2
index c8bf8c618..2bf3c7f66 100644
Binary files a/2005/vik/2005_vik.tar.bz2 and b/2005/vik/2005_vik.tar.bz2 differ
diff --git a/2005/vik/index.html b/2005/vik/index.html
index 43bddecd9..b9d03a1e8 100644
--- a/2005/vik/index.html
+++ b/2005/vik/index.html
@@ -270,6 +270,7 @@ application a little bit.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2005/vince/.tar.tstamp b/2005/vince/.tar.tstamp
index 895dae571..045523110 100644
--- a/2005/vince/.tar.tstamp
+++ b/2005/vince/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2005/vince/2005_vince.tar.bz2 b/2005/vince/2005_vince.tar.bz2
index 5ea2cae25..a0ce2daa7 100644
Binary files a/2005/vince/2005_vince.tar.bz2 and b/2005/vince/2005_vince.tar.bz2 differ
diff --git a/2005/vince/index.html b/2005/vince/index.html
index b41bf3715..7b27e106d 100644
--- a/2005/vince/index.html
+++ b/2005/vince/index.html
@@ -248,6 +248,7 @@ problem.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/.tar.tstamp b/2006/.tar.tstamp
index 9592797db..3b9194653 100644
--- a/2006/.tar.tstamp
+++ b/2006/.tar.tstamp
@@ -1 +1 @@
-1711177846
+1711431287
diff --git a/2006/birken/.tar.tstamp b/2006/birken/.tar.tstamp
index 895dae571..045523110 100644
--- a/2006/birken/.tar.tstamp
+++ b/2006/birken/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2006/birken/2006_birken.tar.bz2 b/2006/birken/2006_birken.tar.bz2
index dbb1089c9..998d07eac 100644
Binary files a/2006/birken/2006_birken.tar.bz2 and b/2006/birken/2006_birken.tar.bz2 differ
diff --git a/2006/birken/index.html b/2006/birken/index.html
index 86b9c52a3..c437d406a 100644
--- a/2006/birken/index.html
+++ b/2006/birken/index.html
@@ -231,6 +231,7 @@ out to the one who discovers the hidden program within the source.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/borsanyi/.tar.tstamp b/2006/borsanyi/.tar.tstamp
index 895dae571..045523110 100644
--- a/2006/borsanyi/.tar.tstamp
+++ b/2006/borsanyi/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431285
diff --git a/2006/borsanyi/2006_borsanyi.tar.bz2 b/2006/borsanyi/2006_borsanyi.tar.bz2
index 828ddc019..21bfd0065 100644
Binary files a/2006/borsanyi/2006_borsanyi.tar.bz2 and b/2006/borsanyi/2006_borsanyi.tar.bz2 differ
diff --git a/2006/borsanyi/index.html b/2006/borsanyi/index.html
index 4b2b2c09b..362cf3479 100644
--- a/2006/borsanyi/index.html
+++ b/2006/borsanyi/index.html
@@ -240,6 +240,7 @@ To avoid most caveats, the program does not output the octet
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/grothe/.tar.tstamp b/2006/grothe/.tar.tstamp
index 895dae571..449190b90 100644
--- a/2006/grothe/.tar.tstamp
+++ b/2006/grothe/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431286
diff --git a/2006/grothe/2006_grothe.tar.bz2 b/2006/grothe/2006_grothe.tar.bz2
index 1ab5fa48e..79fca1a89 100644
Binary files a/2006/grothe/2006_grothe.tar.bz2 and b/2006/grothe/2006_grothe.tar.bz2 differ
diff --git a/2006/grothe/index.html b/2006/grothe/index.html
index c0c0e2cd2..2440ade03 100644
--- a/2006/grothe/index.html
+++ b/2006/grothe/index.html
@@ -258,6 +258,7 @@ Kuhn’s and Ross J. Anderson’s.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/hamre/.tar.tstamp b/2006/hamre/.tar.tstamp
index 895dae571..449190b90 100644
--- a/2006/hamre/.tar.tstamp
+++ b/2006/hamre/.tar.tstamp
@@ -1 +1 @@
-1711177844
+1711431286
diff --git a/2006/hamre/2006_hamre.tar.bz2 b/2006/hamre/2006_hamre.tar.bz2
index bd1887447..3e6de598d 100644
Binary files a/2006/hamre/2006_hamre.tar.bz2 and b/2006/hamre/2006_hamre.tar.bz2 differ
diff --git a/2006/hamre/index.html b/2006/hamre/index.html
index f4561173b..bbc1372db 100644
--- a/2006/hamre/index.html
+++ b/2006/hamre/index.html
@@ -216,6 +216,7 @@ some language, meaningful to the purpose(s) of the macro, I hope.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/meyer/.tar.tstamp b/2006/meyer/.tar.tstamp
index 4c9b28488..449190b90 100644
--- a/2006/meyer/.tar.tstamp
+++ b/2006/meyer/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431286
diff --git a/2006/meyer/2006_meyer.tar.bz2 b/2006/meyer/2006_meyer.tar.bz2
index 7987af932..f544adf15 100644
Binary files a/2006/meyer/2006_meyer.tar.bz2 and b/2006/meyer/2006_meyer.tar.bz2 differ
diff --git a/2006/meyer/index.html b/2006/meyer/index.html
index 15de79cb7..da320e53c 100644
--- a/2006/meyer/index.html
+++ b/2006/meyer/index.html
@@ -254,6 +254,7 @@ number: [1-9].
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/monge/.tar.tstamp b/2006/monge/.tar.tstamp
index 4c9b28488..449190b90 100644
--- a/2006/monge/.tar.tstamp
+++ b/2006/monge/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431286
diff --git a/2006/monge/2006_monge.tar.bz2 b/2006/monge/2006_monge.tar.bz2
index 4eec73e88..5df7e54ea 100644
Binary files a/2006/monge/2006_monge.tar.bz2 and b/2006/monge/2006_monge.tar.bz2 differ
diff --git a/2006/monge/index.html b/2006/monge/index.html
index 45998ac79..46ccb150e 100644
--- a/2006/monge/index.html
+++ b/2006/monge/index.html
@@ -360,6 +360,7 @@ too big (>1) the pixel is recalculated.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/night/.tar.tstamp b/2006/night/.tar.tstamp
index 4c9b28488..449190b90 100644
--- a/2006/night/.tar.tstamp
+++ b/2006/night/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431286
diff --git a/2006/night/2006_night.tar.bz2 b/2006/night/2006_night.tar.bz2
index b7205e7ab..35806c4d7 100644
Binary files a/2006/night/2006_night.tar.bz2 and b/2006/night/2006_night.tar.bz2 differ
diff --git a/2006/night/index.html b/2006/night/index.html
index e754ad4d9..4e01959e3 100644
--- a/2006/night/index.html
+++ b/2006/night/index.html
@@ -255,6 +255,7 @@ following two macros to:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/sloane/.tar.tstamp b/2006/sloane/.tar.tstamp
index 4c9b28488..449190b90 100644
--- a/2006/sloane/.tar.tstamp
+++ b/2006/sloane/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431286
diff --git a/2006/sloane/2006_sloane.tar.bz2 b/2006/sloane/2006_sloane.tar.bz2
index 600983f69..b0c845d87 100644
Binary files a/2006/sloane/2006_sloane.tar.bz2 and b/2006/sloane/2006_sloane.tar.bz2 differ
diff --git a/2006/sloane/index.html b/2006/sloane/index.html
index ead0c7568..00985c25e 100644
--- a/2006/sloane/index.html
+++ b/2006/sloane/index.html
@@ -250,6 +250,7 @@ place? Can you find a smaller encoding?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/stewart/.tar.tstamp b/2006/stewart/.tar.tstamp
index 4c9b28488..449190b90 100644
--- a/2006/stewart/.tar.tstamp
+++ b/2006/stewart/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431286
diff --git a/2006/stewart/2006_stewart.tar.bz2 b/2006/stewart/2006_stewart.tar.bz2
index 63e24c140..4c7f24c0c 100644
Binary files a/2006/stewart/2006_stewart.tar.bz2 and b/2006/stewart/2006_stewart.tar.bz2 differ
diff --git a/2006/stewart/index.html b/2006/stewart/index.html
index 1122435f8..aaec37d92 100644
--- a/2006/stewart/index.html
+++ b/2006/stewart/index.html
@@ -338,6 +338,7 @@ choice from a file size standpoint. 1024x1024 image is 641k in size.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/sykes1/.tar.tstamp b/2006/sykes1/.tar.tstamp
index 4c9b28488..449190b90 100644
--- a/2006/sykes1/.tar.tstamp
+++ b/2006/sykes1/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431286
diff --git a/2006/sykes1/2006_sykes1.tar.bz2 b/2006/sykes1/2006_sykes1.tar.bz2
index a597e7fe8..7c4ee3827 100644
Binary files a/2006/sykes1/2006_sykes1.tar.bz2 and b/2006/sykes1/2006_sykes1.tar.bz2 differ
diff --git a/2006/sykes1/index.html b/2006/sykes1/index.html
index 660e10e8d..c6014d7cb 100644
--- a/2006/sykes1/index.html
+++ b/2006/sykes1/index.html
@@ -342,6 +342,7 @@ advantage - at least I don’t violate any of those old Unisys patents!
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/sykes2/.tar.tstamp b/2006/sykes2/.tar.tstamp
index 4c9b28488..3b9194653 100644
--- a/2006/sykes2/.tar.tstamp
+++ b/2006/sykes2/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431287
diff --git a/2006/sykes2/2006_sykes2.tar.bz2 b/2006/sykes2/2006_sykes2.tar.bz2
index 821c82b19..d91ba929a 100644
Binary files a/2006/sykes2/2006_sykes2.tar.bz2 and b/2006/sykes2/2006_sykes2.tar.bz2 differ
diff --git a/2006/sykes2/index.html b/2006/sykes2/index.html
index 5e0fa38d2..a33b3e51c 100644
--- a/2006/sykes2/index.html
+++ b/2006/sykes2/index.html
@@ -202,6 +202,7 @@ multiple times per second for a long time. Run at your own risk!
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/toledo1/.tar.tstamp b/2006/toledo1/.tar.tstamp
index 4c9b28488..3b9194653 100644
--- a/2006/toledo1/.tar.tstamp
+++ b/2006/toledo1/.tar.tstamp
@@ -1 +1 @@
-1711177845
+1711431287
diff --git a/2006/toledo1/2006_toledo1.tar.bz2 b/2006/toledo1/2006_toledo1.tar.bz2
index bf554b9a8..18e08ef58 100644
Binary files a/2006/toledo1/2006_toledo1.tar.bz2 and b/2006/toledo1/2006_toledo1.tar.bz2 differ
diff --git a/2006/toledo1/index.html b/2006/toledo1/index.html
index 51c938ff3..2a05623e6 100644
--- a/2006/toledo1/index.html
+++ b/2006/toledo1/index.html
@@ -200,6 +200,7 @@ Nevertheless, don’t be dismayed, jar, jar. :-)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/toledo2/.tar.tstamp b/2006/toledo2/.tar.tstamp
index 9592797db..3b9194653 100644
--- a/2006/toledo2/.tar.tstamp
+++ b/2006/toledo2/.tar.tstamp
@@ -1 +1 @@
-1711177846
+1711431287
diff --git a/2006/toledo2/2006_toledo2.tar.bz2 b/2006/toledo2/2006_toledo2.tar.bz2
index 5bbdf7f3d..ae72b14fb 100644
Binary files a/2006/toledo2/2006_toledo2.tar.bz2 and b/2006/toledo2/2006_toledo2.tar.bz2 differ
diff --git a/2006/toledo2/index.html b/2006/toledo2/index.html
index 3d12bf07f..3f6719421 100644
--- a/2006/toledo2/index.html
+++ b/2006/toledo2/index.html
@@ -359,6 +359,7 @@ only one function.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2006/toledo3/.tar.tstamp b/2006/toledo3/.tar.tstamp
index 9592797db..3b9194653 100644
--- a/2006/toledo3/.tar.tstamp
+++ b/2006/toledo3/.tar.tstamp
@@ -1 +1 @@
-1711177846
+1711431287
diff --git a/2006/toledo3/2006_toledo3.tar.bz2 b/2006/toledo3/2006_toledo3.tar.bz2
index 6a8a869e6..bf98101a3 100644
Binary files a/2006/toledo3/2006_toledo3.tar.bz2 and b/2006/toledo3/2006_toledo3.tar.bz2 differ
diff --git a/2006/toledo3/index.html b/2006/toledo3/index.html
index ab6107df9..4533c1324 100644
--- a/2006/toledo3/index.html
+++ b/2006/toledo3/index.html
@@ -262,6 +262,7 @@ rules) creates a status display about gameplay on the window title bar.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/.tar.tstamp b/2011/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2011/.tar.tstamp
+++ b/2011/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2011/akari/.tar.tstamp b/2011/akari/.tar.tstamp
index 9592797db..3b9194653 100644
--- a/2011/akari/.tar.tstamp
+++ b/2011/akari/.tar.tstamp
@@ -1 +1 @@
-1711177846
+1711431287
diff --git a/2011/akari/2011_akari.tar.bz2 b/2011/akari/2011_akari.tar.bz2
index e6e43fa7d..bc783e2ec 100644
Binary files a/2011/akari/2011_akari.tar.bz2 and b/2011/akari/2011_akari.tar.bz2 differ
diff --git a/2011/akari/index.html b/2011/akari/index.html
index 4fc27be41..775be7721 100644
--- a/2011/akari/index.html
+++ b/2011/akari/index.html
@@ -251,6 +251,7 @@ a brainf#$% program in a C program, for example. For comparison, a
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/blakely/.tar.tstamp b/2011/blakely/.tar.tstamp
index 9592797db..3b9194653 100644
--- a/2011/blakely/.tar.tstamp
+++ b/2011/blakely/.tar.tstamp
@@ -1 +1 @@
-1711177846
+1711431287
diff --git a/2011/blakely/2011_blakely.tar.bz2 b/2011/blakely/2011_blakely.tar.bz2
index 1d7ad1f2e..e3a333fd0 100644
Binary files a/2011/blakely/2011_blakely.tar.bz2 and b/2011/blakely/2011_blakely.tar.bz2 differ
diff --git a/2011/blakely/index.html b/2011/blakely/index.html
index 5634a23fe..6c8df6a26 100644
--- a/2011/blakely/index.html
+++ b/2011/blakely/index.html
@@ -337,6 +337,7 @@ universe.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/borsanyi/.tar.tstamp b/2011/borsanyi/.tar.tstamp
index 9592797db..3b9194653 100644
--- a/2011/borsanyi/.tar.tstamp
+++ b/2011/borsanyi/.tar.tstamp
@@ -1 +1 @@
-1711177846
+1711431287
diff --git a/2011/borsanyi/2011_borsanyi.tar.bz2 b/2011/borsanyi/2011_borsanyi.tar.bz2
index e7099362e..1c3f3a87b 100644
Binary files a/2011/borsanyi/2011_borsanyi.tar.bz2 and b/2011/borsanyi/2011_borsanyi.tar.bz2 differ
diff --git a/2011/borsanyi/index.html b/2011/borsanyi/index.html
index f0dcc2f02..cefbea970 100644
--- a/2011/borsanyi/index.html
+++ b/2011/borsanyi/index.html
@@ -231,6 +231,7 @@ and each of them is put into its own bin afterwards. But where are the bins?.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/dlowe/.tar.tstamp b/2011/dlowe/.tar.tstamp
index 58d732c43..8d402510e 100644
--- a/2011/dlowe/.tar.tstamp
+++ b/2011/dlowe/.tar.tstamp
@@ -1 +1 @@
-1711177847
+1711431288
diff --git a/2011/dlowe/2011_dlowe.tar.bz2 b/2011/dlowe/2011_dlowe.tar.bz2
index 87bc042ca..4780ad4c1 100644
Binary files a/2011/dlowe/2011_dlowe.tar.bz2 and b/2011/dlowe/2011_dlowe.tar.bz2 differ
diff --git a/2011/dlowe/index.html b/2011/dlowe/index.html
index 5fa6568fc..526c5a400 100644
--- a/2011/dlowe/index.html
+++ b/2011/dlowe/index.html
@@ -428,6 +428,7 @@ by a network trained to recognize IOCCC entries
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/eastman/.tar.tstamp b/2011/eastman/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/eastman/.tar.tstamp
+++ b/2011/eastman/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/eastman/2011_eastman.tar.bz2 b/2011/eastman/2011_eastman.tar.bz2
index 58320eb30..122d487c0 100644
Binary files a/2011/eastman/2011_eastman.tar.bz2 and b/2011/eastman/2011_eastman.tar.bz2 differ
diff --git a/2011/eastman/index.html b/2011/eastman/index.html
index 3b80bb396..8f98282f7 100644
--- a/2011/eastman/index.html
+++ b/2011/eastman/index.html
@@ -232,6 +232,7 @@ better. And so on.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/fredriksson/.tar.tstamp b/2011/fredriksson/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/fredriksson/.tar.tstamp
+++ b/2011/fredriksson/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/fredriksson/2011_fredriksson.tar.bz2 b/2011/fredriksson/2011_fredriksson.tar.bz2
index 836836ecc..3a9fa9130 100644
Binary files a/2011/fredriksson/2011_fredriksson.tar.bz2 and b/2011/fredriksson/2011_fredriksson.tar.bz2 differ
diff --git a/2011/fredriksson/index.html b/2011/fredriksson/index.html
index 29f020c5c..00bbd8013 100644
--- a/2011/fredriksson/index.html
+++ b/2011/fredriksson/index.html
@@ -395,6 +395,7 @@ apply to the generated source ag.c.)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/goren/.tar.tstamp b/2011/goren/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/goren/.tar.tstamp
+++ b/2011/goren/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/goren/2011_goren.tar.bz2 b/2011/goren/2011_goren.tar.bz2
index 293f72978..667cfccd5 100644
Binary files a/2011/goren/2011_goren.tar.bz2 and b/2011/goren/2011_goren.tar.bz2 differ
diff --git a/2011/goren/index.html b/2011/goren/index.html
index 6eb060cfe..0796ee924 100644
--- a/2011/goren/index.html
+++ b/2011/goren/index.html
@@ -228,6 +228,7 @@ It does work on 64-bit Linux, because all functions are below 4GB.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/hamaji/.tar.tstamp b/2011/hamaji/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/hamaji/.tar.tstamp
+++ b/2011/hamaji/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/hamaji/2011_hamaji.tar.bz2 b/2011/hamaji/2011_hamaji.tar.bz2
index 61b964820..d01ba4cfc 100644
Binary files a/2011/hamaji/2011_hamaji.tar.bz2 and b/2011/hamaji/2011_hamaji.tar.bz2 differ
diff --git a/2011/hamaji/index.html b/2011/hamaji/index.html
index 3dddea4c4..f8cf23571 100644
--- a/2011/hamaji/index.html
+++ b/2011/hamaji/index.html
@@ -337,6 +337,7 @@ was randomly generated. The codegolf.nono and
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/hou/.tar.tstamp b/2011/hou/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/hou/.tar.tstamp
+++ b/2011/hou/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/hou/2011_hou.tar.bz2 b/2011/hou/2011_hou.tar.bz2
index 288977844..d0fba5125 100644
Binary files a/2011/hou/2011_hou.tar.bz2 and b/2011/hou/2011_hou.tar.bz2 differ
diff --git a/2011/hou/index.html b/2011/hou/index.html
index 625ef681d..e002edc44 100644
--- a/2011/hou/index.html
+++ b/2011/hou/index.html
@@ -244,6 +244,7 @@ it produces something resembling the bitmask hash table as part of its output.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/konno/.tar.tstamp b/2011/konno/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/konno/.tar.tstamp
+++ b/2011/konno/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/konno/2011_konno.tar.bz2 b/2011/konno/2011_konno.tar.bz2
index 34372b54a..1df4d0052 100644
Binary files a/2011/konno/2011_konno.tar.bz2 and b/2011/konno/2011_konno.tar.bz2 differ
diff --git a/2011/konno/index.html b/2011/konno/index.html
index 79107325f..288e32bc3 100644
--- a/2011/konno/index.html
+++ b/2011/konno/index.html
@@ -200,6 +200,7 @@ Can you then minimize the size of that code?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/richards/.tar.tstamp b/2011/richards/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/richards/.tar.tstamp
+++ b/2011/richards/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/richards/2011_richards.tar.bz2 b/2011/richards/2011_richards.tar.bz2
index 0c34e64b9..ce588ee10 100644
Binary files a/2011/richards/2011_richards.tar.bz2 and b/2011/richards/2011_richards.tar.bz2 differ
diff --git a/2011/richards/index.html b/2011/richards/index.html
index e127b53aa..be25297d3 100644
--- a/2011/richards/index.html
+++ b/2011/richards/index.html
@@ -239,6 +239,7 @@ flags:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/toledo/.tar.tstamp b/2011/toledo/.tar.tstamp
index 12f891104..bf16da62d 100644
--- a/2011/toledo/.tar.tstamp
+++ b/2011/toledo/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431290
diff --git a/2011/toledo/2011_toledo.tar.bz2 b/2011/toledo/2011_toledo.tar.bz2
index 0a41a1860..e7a7f6dd6 100644
Binary files a/2011/toledo/2011_toledo.tar.bz2 and b/2011/toledo/2011_toledo.tar.bz2 differ
diff --git a/2011/toledo/index.html b/2011/toledo/index.html
index b1e3b7782..6e029a008 100644
--- a/2011/toledo/index.html
+++ b/2011/toledo/index.html
@@ -387,6 +387,7 @@ another program.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/vik/.tar.tstamp b/2011/vik/.tar.tstamp
index 12f891104..e24f88127 100644
--- a/2011/vik/.tar.tstamp
+++ b/2011/vik/.tar.tstamp
@@ -1 +1 @@
-1711177849
+1711431291
diff --git a/2011/vik/2011_vik.tar.bz2 b/2011/vik/2011_vik.tar.bz2
index d38f7cf32..6ab145ec3 100644
Binary files a/2011/vik/2011_vik.tar.bz2 and b/2011/vik/2011_vik.tar.bz2 differ
diff --git a/2011/vik/index.html b/2011/vik/index.html
index 31cac4b0d..a8d9c79ed 100644
--- a/2011/vik/index.html
+++ b/2011/vik/index.html
@@ -300,6 +300,7 @@ no argument is passed, the program crashes.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2011/zucker/.tar.tstamp b/2011/zucker/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2011/zucker/.tar.tstamp
+++ b/2011/zucker/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2011/zucker/2011_zucker.tar.bz2 b/2011/zucker/2011_zucker.tar.bz2
index aa7879f79..0d139c18e 100644
Binary files a/2011/zucker/2011_zucker.tar.bz2 and b/2011/zucker/2011_zucker.tar.bz2 differ
diff --git a/2011/zucker/index.html b/2011/zucker/index.html
index 6580fba60..6c4cf14c4 100644
--- a/2011/zucker/index.html
+++ b/2011/zucker/index.html
@@ -314,6 +314,7 @@ Python, respectively).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/.tar.tstamp b/2012/.tar.tstamp
index 9a8e75b98..1f0cb6929 100644
--- a/2012/.tar.tstamp
+++ b/2012/.tar.tstamp
@@ -1 +1 @@
-1711177851
+1711431292
diff --git a/2012/blakely/.tar.tstamp b/2012/blakely/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/blakely/.tar.tstamp
+++ b/2012/blakely/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/blakely/2012_blakely.tar.bz2 b/2012/blakely/2012_blakely.tar.bz2
index 701924e02..8b13f5099 100644
Binary files a/2012/blakely/2012_blakely.tar.bz2 and b/2012/blakely/2012_blakely.tar.bz2 differ
diff --git a/2012/blakely/index.html b/2012/blakely/index.html
index f0509c19e..6106f0ae9 100644
--- a/2012/blakely/index.html
+++ b/2012/blakely/index.html
@@ -271,6 +271,7 @@ questions.)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/deckmyn/.tar.tstamp b/2012/deckmyn/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/deckmyn/.tar.tstamp
+++ b/2012/deckmyn/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/deckmyn/2012_deckmyn.tar.bz2 b/2012/deckmyn/2012_deckmyn.tar.bz2
index 2a9587b62..72f750fab 100644
Binary files a/2012/deckmyn/2012_deckmyn.tar.bz2 and b/2012/deckmyn/2012_deckmyn.tar.bz2 differ
diff --git a/2012/deckmyn/index.html b/2012/deckmyn/index.html
index ca87114c2..78997bd83 100644
--- a/2012/deckmyn/index.html
+++ b/2012/deckmyn/index.html
@@ -285,6 +285,7 @@ character nested conditional expression.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/dlowe/.tar.tstamp b/2012/dlowe/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/dlowe/.tar.tstamp
+++ b/2012/dlowe/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/dlowe/2012_dlowe.tar.bz2 b/2012/dlowe/2012_dlowe.tar.bz2
index 83c654ca6..3b2134f70 100644
Binary files a/2012/dlowe/2012_dlowe.tar.bz2 and b/2012/dlowe/2012_dlowe.tar.bz2 differ
diff --git a/2012/dlowe/index.html b/2012/dlowe/index.html
index f2511938c..a31d00314 100644
--- a/2012/dlowe/index.html
+++ b/2012/dlowe/index.html
@@ -245,6 +245,7 @@ abuse of the arithmetic properties of magic numbers.
.path - directory path from top directory
splash.d - data file
sprites.d - data file
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/endoh1/.tar.tstamp b/2012/endoh1/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/endoh1/.tar.tstamp
+++ b/2012/endoh1/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/endoh1/2012_endoh1.tar.bz2 b/2012/endoh1/2012_endoh1.tar.bz2
index c27107ab7..4fa968ca5 100644
Binary files a/2012/endoh1/2012_endoh1.tar.bz2 and b/2012/endoh1/2012_endoh1.tar.bz2 differ
diff --git a/2012/endoh1/index.html b/2012/endoh1/index.html
index 3bd44c3e6..5eba7960f 100644
--- a/2012/endoh1/index.html
+++ b/2012/endoh1/index.html
@@ -384,6 +384,7 @@ provided many configuration files.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/endoh2/.tar.tstamp b/2012/endoh2/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/endoh2/.tar.tstamp
+++ b/2012/endoh2/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/endoh2/2012_endoh2.tar.bz2 b/2012/endoh2/2012_endoh2.tar.bz2
index 6372b9a82..b68da701f 100644
Binary files a/2012/endoh2/2012_endoh2.tar.bz2 and b/2012/endoh2/2012_endoh2.tar.bz2 differ
diff --git a/2012/endoh2/index.html b/2012/endoh2/index.html
index 519272884..11ccffa0b 100644
--- a/2012/endoh2/index.html
+++ b/2012/endoh2/index.html
@@ -278,6 +278,7 @@ unless -std=c99 option is given.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/grothe/.tar.tstamp b/2012/grothe/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/grothe/.tar.tstamp
+++ b/2012/grothe/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/grothe/2012_grothe.tar.bz2 b/2012/grothe/2012_grothe.tar.bz2
index 0fac12180..c0559420a 100644
Binary files a/2012/grothe/2012_grothe.tar.bz2 and b/2012/grothe/2012_grothe.tar.bz2 differ
diff --git a/2012/grothe/index.html b/2012/grothe/index.html
index ae35dd0e3..b561635ea 100644
--- a/2012/grothe/index.html
+++ b/2012/grothe/index.html
@@ -266,6 +266,7 @@ need to be so trying to figure it out can be a bit tough.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/hamano/.tar.tstamp b/2012/hamano/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/hamano/.tar.tstamp
+++ b/2012/hamano/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/hamano/2012_hamano.tar.bz2 b/2012/hamano/2012_hamano.tar.bz2
index 84b2d76a6..41b99ae0d 100644
Binary files a/2012/hamano/2012_hamano.tar.bz2 and b/2012/hamano/2012_hamano.tar.bz2 differ
diff --git a/2012/hamano/index.html b/2012/hamano/index.html
index 131b6f8fd..b2189e86e 100644
--- a/2012/hamano/index.html
+++ b/2012/hamano/index.html
@@ -240,6 +240,7 @@ embedded font in the fragmented glyph?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/hou/.tar.tstamp b/2012/hou/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/hou/.tar.tstamp
+++ b/2012/hou/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/hou/2012_hou.tar.bz2 b/2012/hou/2012_hou.tar.bz2
index 9c3bba844..404da85b8 100644
Binary files a/2012/hou/2012_hou.tar.bz2 and b/2012/hou/2012_hou.tar.bz2 differ
diff --git a/2012/hou/index.html b/2012/hou/index.html
index 41d411e05..ec718914b 100644
--- a/2012/hou/index.html
+++ b/2012/hou/index.html
@@ -269,6 +269,7 @@ amount of spaghetti branches and virtual thread creations. Finally, the VM in
.gitignore - list of files that should not be committed under git
hint.md - markdown source for hint.html
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/kang/.tar.tstamp b/2012/kang/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/kang/.tar.tstamp
+++ b/2012/kang/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/kang/2012_kang.tar.bz2 b/2012/kang/2012_kang.tar.bz2
index 38b0ade7b..c30fd049b 100644
Binary files a/2012/kang/2012_kang.tar.bz2 and b/2012/kang/2012_kang.tar.bz2 differ
diff --git a/2012/kang/index.html b/2012/kang/index.html
index 89c25b07e..3fd18b643 100644
--- a/2012/kang/index.html
+++ b/2012/kang/index.html
@@ -333,6 +333,7 @@ proof-reading remarks.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/konno/.tar.tstamp b/2012/konno/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/konno/.tar.tstamp
+++ b/2012/konno/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/konno/2012_konno.tar.bz2 b/2012/konno/2012_konno.tar.bz2
index b8fa88faf..2aa18dfbd 100644
Binary files a/2012/konno/2012_konno.tar.bz2 and b/2012/konno/2012_konno.tar.bz2 differ
diff --git a/2012/konno/index.html b/2012/konno/index.html
index e9946b33d..fbf682197 100644
--- a/2012/konno/index.html
+++ b/2012/konno/index.html
@@ -220,6 +220,7 @@ patterns.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/omoikane/.tar.tstamp b/2012/omoikane/.tar.tstamp
index f648c3a1f..e24f88127 100644
--- a/2012/omoikane/.tar.tstamp
+++ b/2012/omoikane/.tar.tstamp
@@ -1 +1 @@
-1711177850
+1711431291
diff --git a/2012/omoikane/2012_omoikane.tar.bz2 b/2012/omoikane/2012_omoikane.tar.bz2
index 3463acfdb..2ebbce007 100644
Binary files a/2012/omoikane/2012_omoikane.tar.bz2 and b/2012/omoikane/2012_omoikane.tar.bz2 differ
diff --git a/2012/omoikane/index.html b/2012/omoikane/index.html
index 7d1162d33..ca71ec03d 100644
--- a/2012/omoikane/index.html
+++ b/2012/omoikane/index.html
@@ -305,6 +305,7 @@ JavaScript.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/tromp/.tar.tstamp b/2012/tromp/.tar.tstamp
index 9a8e75b98..1f0cb6929 100644
--- a/2012/tromp/.tar.tstamp
+++ b/2012/tromp/.tar.tstamp
@@ -1 +1 @@
-1711177851
+1711431292
diff --git a/2012/tromp/2012_tromp.tar.bz2 b/2012/tromp/2012_tromp.tar.bz2
index 3751381ef..0a5af6045 100644
Binary files a/2012/tromp/2012_tromp.tar.bz2 and b/2012/tromp/2012_tromp.tar.bz2 differ
diff --git a/2012/tromp/index.html b/2012/tromp/index.html
index ea0a669b3..8b54f5c58 100644
--- a/2012/tromp/index.html
+++ b/2012/tromp/index.html
@@ -544,6 +544,7 @@ Higher Order Symbol. Comput. 20, 3 (September 2007), 199-207.
.path - directory path from top directory
primes.blc - sample input
symbolic.Blc - sample input
+.tar.tstamp - timestamp of compressed tarball formation
uni8.Blc - sample input
uni.blc - sample input
diff --git a/2012/vik/.tar.tstamp b/2012/vik/.tar.tstamp
index 9a8e75b98..1f0cb6929 100644
--- a/2012/vik/.tar.tstamp
+++ b/2012/vik/.tar.tstamp
@@ -1 +1 @@
-1711177851
+1711431292
diff --git a/2012/vik/2012_vik.tar.bz2 b/2012/vik/2012_vik.tar.bz2
index 0ebac6ec6..fc4107589 100644
Binary files a/2012/vik/2012_vik.tar.bz2 and b/2012/vik/2012_vik.tar.bz2 differ
diff --git a/2012/vik/index.html b/2012/vik/index.html
index 87bd71ea3..c720e805e 100644
--- a/2012/vik/index.html
+++ b/2012/vik/index.html
@@ -283,6 +283,7 @@ pretty good) design of the code.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2012/zeitak/.tar.tstamp b/2012/zeitak/.tar.tstamp
index 9a8e75b98..1f0cb6929 100644
--- a/2012/zeitak/.tar.tstamp
+++ b/2012/zeitak/.tar.tstamp
@@ -1 +1 @@
-1711177851
+1711431292
diff --git a/2012/zeitak/2012_zeitak.tar.bz2 b/2012/zeitak/2012_zeitak.tar.bz2
index 4d2f9b933..6f145b9b3 100644
Binary files a/2012/zeitak/2012_zeitak.tar.bz2 and b/2012/zeitak/2012_zeitak.tar.bz2 differ
diff --git a/2012/zeitak/index.html b/2012/zeitak/index.html
index 80518ab04..99f0a111d 100644
--- a/2012/zeitak/index.html
+++ b/2012/zeitak/index.html
@@ -281,6 +281,7 @@ at least two bytes long.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/.tar.tstamp b/2013/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/.tar.tstamp
+++ b/2013/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/birken/.tar.tstamp b/2013/birken/.tar.tstamp
index 9a8e75b98..1f0cb6929 100644
--- a/2013/birken/.tar.tstamp
+++ b/2013/birken/.tar.tstamp
@@ -1 +1 @@
-1711177851
+1711431292
diff --git a/2013/birken/2013_birken.tar.bz2 b/2013/birken/2013_birken.tar.bz2
index e6063b871..5665533b4 100644
Binary files a/2013/birken/2013_birken.tar.bz2 and b/2013/birken/2013_birken.tar.bz2 differ
diff --git a/2013/birken/index.html b/2013/birken/index.html
index d846f4dc2..c39572b1e 100644
--- a/2013/birken/index.html
+++ b/2013/birken/index.html
@@ -601,6 +601,7 @@ Brothers 2, Nintendo, 1987.
platform0.gif - stages of 5 red squares above a row of 3 red squares
platform1.gif - stages of 5 red squares above a row of 3 red squares
platform2.gif - stages of 5 red squares above a row of 3 red squares
+.tar.tstamp - timestamp of compressed tarball formation
triple0.gif - stages of constructed of rectangular regions
triple1.gif - stages of constructed of rectangular regions
diff --git a/2013/cable1/.tar.tstamp b/2013/cable1/.tar.tstamp
index 9a8e75b98..1f0cb6929 100644
--- a/2013/cable1/.tar.tstamp
+++ b/2013/cable1/.tar.tstamp
@@ -1 +1 @@
-1711177851
+1711431292
diff --git a/2013/cable1/2013_cable1.tar.bz2 b/2013/cable1/2013_cable1.tar.bz2
index 43f2b5563..cc5077a34 100644
Binary files a/2013/cable1/2013_cable1.tar.bz2 and b/2013/cable1/2013_cable1.tar.bz2 differ
diff --git a/2013/cable1/index.html b/2013/cable1/index.html
index 78d401c2b..c6bbdc32d 100644
--- a/2013/cable1/index.html
+++ b/2013/cable1/index.html
@@ -239,6 +239,7 @@ function declarations are invalid in C99 (but still accepts them).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/cable2/.tar.tstamp b/2013/cable2/.tar.tstamp
index d59c0c585..1f0cb6929 100644
--- a/2013/cable2/.tar.tstamp
+++ b/2013/cable2/.tar.tstamp
@@ -1 +1 @@
-1711177852
+1711431292
diff --git a/2013/cable2/2013_cable2.tar.bz2 b/2013/cable2/2013_cable2.tar.bz2
index 82269bc55..80375061a 100644
Binary files a/2013/cable2/2013_cable2.tar.bz2 and b/2013/cable2/2013_cable2.tar.bz2 differ
diff --git a/2013/cable2/index.html b/2013/cable2/index.html
index 7848731e0..a1b65b762 100644
--- a/2013/cable2/index.html
+++ b/2013/cable2/index.html
@@ -285,6 +285,7 @@ obfuscations.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/cable3/.tar.tstamp b/2013/cable3/.tar.tstamp
index 55aa32b6a..ca068370c 100644
--- a/2013/cable3/.tar.tstamp
+++ b/2013/cable3/.tar.tstamp
@@ -1 +1 @@
-1711177854
+1711431294
diff --git a/2013/cable3/2013_cable3.tar.bz2 b/2013/cable3/2013_cable3.tar.bz2
index 50ebe6459..bba5786cd 100644
Binary files a/2013/cable3/2013_cable3.tar.bz2 and b/2013/cable3/2013_cable3.tar.bz2 differ
diff --git a/2013/cable3/index.html b/2013/cable3/index.html
index 6f3a2d6d9..442b1f48a 100644
--- a/2013/cable3/index.html
+++ b/2013/cable3/index.html
@@ -536,6 +536,7 @@ the source size down. Other compilers are likely to produce similar warnings..gitignore - list of files that should not be committed under git
hd.img - disk image
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/dlowe/.tar.tstamp b/2013/dlowe/.tar.tstamp
index 55ceecd30..d9e3b9f6b 100644
--- a/2013/dlowe/.tar.tstamp
+++ b/2013/dlowe/.tar.tstamp
@@ -1 +1 @@
-1711177856
+1711431297
diff --git a/2013/dlowe/2013_dlowe.tar.bz2 b/2013/dlowe/2013_dlowe.tar.bz2
index 51fe13a6d..2b10db9e9 100644
Binary files a/2013/dlowe/2013_dlowe.tar.bz2 and b/2013/dlowe/2013_dlowe.tar.bz2 differ
diff --git a/2013/dlowe/index.html b/2013/dlowe/index.html
index d698d0d96..b52c509dd 100644
--- a/2013/dlowe/index.html
+++ b/2013/dlowe/index.html
@@ -257,6 +257,7 @@ implementation is completely independent.)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/endoh1/.tar.tstamp b/2013/endoh1/.tar.tstamp
index 55ceecd30..d9e3b9f6b 100644
--- a/2013/endoh1/.tar.tstamp
+++ b/2013/endoh1/.tar.tstamp
@@ -1 +1 @@
-1711177856
+1711431297
diff --git a/2013/endoh1/2013_endoh1.tar.bz2 b/2013/endoh1/2013_endoh1.tar.bz2
index 38b5374a8..89f48b13f 100644
Binary files a/2013/endoh1/2013_endoh1.tar.bz2 and b/2013/endoh1/2013_endoh1.tar.bz2 differ
diff --git a/2013/endoh1/index.html b/2013/endoh1/index.html
index f5e794703..9f5636e4b 100644
--- a/2013/endoh1/index.html
+++ b/2013/endoh1/index.html
@@ -309,6 +309,7 @@ solver.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/endoh2/.tar.tstamp b/2013/endoh2/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/endoh2/.tar.tstamp
+++ b/2013/endoh2/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/endoh2/2013_endoh2.tar.bz2 b/2013/endoh2/2013_endoh2.tar.bz2
index efe703b45..960a882ae 100644
Binary files a/2013/endoh2/2013_endoh2.tar.bz2 and b/2013/endoh2/2013_endoh2.tar.bz2 differ
diff --git a/2013/endoh2/index.html b/2013/endoh2/index.html
index d5d72e26c..c85a99ad2 100644
--- a/2013/endoh2/index.html
+++ b/2013/endoh2/index.html
@@ -240,6 +240,7 @@ DEALINGS IN THE SOFTWARE.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/endoh3/.tar.tstamp b/2013/endoh3/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/endoh3/.tar.tstamp
+++ b/2013/endoh3/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/endoh3/2013_endoh3.tar.bz2 b/2013/endoh3/2013_endoh3.tar.bz2
index 9f6c4ebde..91afd8376 100644
Binary files a/2013/endoh3/2013_endoh3.tar.bz2 and b/2013/endoh3/2013_endoh3.tar.bz2 differ
diff --git a/2013/endoh3/index.html b/2013/endoh3/index.html
index e9201e61b..af149b65e 100644
--- a/2013/endoh3/index.html
+++ b/2013/endoh3/index.html
@@ -336,6 +336,7 @@ squashing them into just one for-loop.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/endoh4/.tar.tstamp b/2013/endoh4/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/endoh4/.tar.tstamp
+++ b/2013/endoh4/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/endoh4/2013_endoh4.tar.bz2 b/2013/endoh4/2013_endoh4.tar.bz2
index f975ad7d2..990c562d0 100644
Binary files a/2013/endoh4/2013_endoh4.tar.bz2 and b/2013/endoh4/2013_endoh4.tar.bz2 differ
diff --git a/2013/endoh4/index.html b/2013/endoh4/index.html
index 5b401161c..c3d110c23 100644
--- a/2013/endoh4/index.html
+++ b/2013/endoh4/index.html
@@ -411,6 +411,7 @@ They are copyrighted in CC BY-SA 3.0 by “User:Cyp” and “User:AndrewKepert
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/hou/.tar.tstamp b/2013/hou/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/hou/.tar.tstamp
+++ b/2013/hou/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/hou/2013_hou.tar.bz2 b/2013/hou/2013_hou.tar.bz2
index ce919996e..f72bf6021 100644
Binary files a/2013/hou/2013_hou.tar.bz2 and b/2013/hou/2013_hou.tar.bz2 differ
diff --git a/2013/hou/index.html b/2013/hou/index.html
index 90f21d2ae..d8ab58405 100644
--- a/2013/hou/index.html
+++ b/2013/hou/index.html
@@ -375,6 +375,7 @@ frequently found in other PPM implementations.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/mills/.tar.tstamp b/2013/mills/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/mills/.tar.tstamp
+++ b/2013/mills/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/mills/2013_mills.tar.bz2 b/2013/mills/2013_mills.tar.bz2
index b46cb6549..156b74eec 100644
Binary files a/2013/mills/2013_mills.tar.bz2 and b/2013/mills/2013_mills.tar.bz2 differ
diff --git a/2013/mills/index.html b/2013/mills/index.html
index 7f0984c1d..9eca635d6 100644
--- a/2013/mills/index.html
+++ b/2013/mills/index.html
@@ -260,6 +260,7 @@ curious impressionable youth trying to learn about sockets on the Internet.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/misaka/.tar.tstamp b/2013/misaka/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/misaka/.tar.tstamp
+++ b/2013/misaka/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/misaka/2013_misaka.tar.bz2 b/2013/misaka/2013_misaka.tar.bz2
index 2200dad96..dbf818064 100644
Binary files a/2013/misaka/2013_misaka.tar.bz2 and b/2013/misaka/2013_misaka.tar.bz2 differ
diff --git a/2013/misaka/index.html b/2013/misaka/index.html
index c3a433e17..47d843c8e 100644
--- a/2013/misaka/index.html
+++ b/2013/misaka/index.html
@@ -347,6 +347,7 @@ stackable figure:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/morgan1/.tar.tstamp b/2013/morgan1/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/morgan1/.tar.tstamp
+++ b/2013/morgan1/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/morgan1/2013_morgan1.tar.bz2 b/2013/morgan1/2013_morgan1.tar.bz2
index b5013d590..94f08c312 100644
Binary files a/2013/morgan1/2013_morgan1.tar.bz2 and b/2013/morgan1/2013_morgan1.tar.bz2 differ
diff --git a/2013/morgan1/index.html b/2013/morgan1/index.html
index 76703ea14..47b5743d0 100644
--- a/2013/morgan1/index.html
+++ b/2013/morgan1/index.html
@@ -268,6 +268,7 @@ unnecessary.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/morgan2/.tar.tstamp b/2013/morgan2/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/morgan2/.tar.tstamp
+++ b/2013/morgan2/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/morgan2/2013_morgan2.tar.bz2 b/2013/morgan2/2013_morgan2.tar.bz2
index 625567388..eb6f52d58 100644
Binary files a/2013/morgan2/2013_morgan2.tar.bz2 and b/2013/morgan2/2013_morgan2.tar.bz2 differ
diff --git a/2013/morgan2/index.html b/2013/morgan2/index.html
index b03aa6ca0..cf686f748 100644
--- a/2013/morgan2/index.html
+++ b/2013/morgan2/index.html
@@ -265,6 +265,7 @@ use.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2013/robison/.tar.tstamp b/2013/robison/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2013/robison/.tar.tstamp
+++ b/2013/robison/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2013/robison/2013_robison.tar.bz2 b/2013/robison/2013_robison.tar.bz2
index e0ffc7501..283c5fdf1 100644
Binary files a/2013/robison/2013_robison.tar.bz2 and b/2013/robison/2013_robison.tar.bz2 differ
diff --git a/2013/robison/index.html b/2013/robison/index.html
index dce4d209b..986e611ec 100644
--- a/2013/robison/index.html
+++ b/2013/robison/index.html
@@ -247,6 +247,7 @@ With the C lib for strings, you can hack with a flair.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/.tar.tstamp b/2014/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/.tar.tstamp
+++ b/2014/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/birken/.tar.tstamp b/2014/birken/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2014/birken/.tar.tstamp
+++ b/2014/birken/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2014/birken/2014_birken.tar.bz2 b/2014/birken/2014_birken.tar.bz2
index e117397b1..b1014231b 100644
Binary files a/2014/birken/2014_birken.tar.bz2 and b/2014/birken/2014_birken.tar.bz2 differ
diff --git a/2014/birken/index.html b/2014/birken/index.html
index 917833cb9..a2ec36796 100644
--- a/2014/birken/index.html
+++ b/2014/birken/index.html
@@ -341,6 +341,7 @@ resulting in compiler warnings:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/deak/.tar.tstamp b/2014/deak/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2014/deak/.tar.tstamp
+++ b/2014/deak/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2014/deak/2014_deak.tar.bz2 b/2014/deak/2014_deak.tar.bz2
index 7cff9483f..72066fcca 100644
Binary files a/2014/deak/2014_deak.tar.bz2 and b/2014/deak/2014_deak.tar.bz2 differ
diff --git a/2014/deak/index.html b/2014/deak/index.html
index 6535204d2..bb6a5f659 100644
--- a/2014/deak/index.html
+++ b/2014/deak/index.html
@@ -250,6 +250,7 @@ disables them.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/endoh1/.tar.tstamp b/2014/endoh1/.tar.tstamp
index 50fc5584f..d9e3b9f6b 100644
--- a/2014/endoh1/.tar.tstamp
+++ b/2014/endoh1/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431297
diff --git a/2014/endoh1/2014_endoh1.tar.bz2 b/2014/endoh1/2014_endoh1.tar.bz2
index 9b99d5dd0..d9b970b61 100644
Binary files a/2014/endoh1/2014_endoh1.tar.bz2 and b/2014/endoh1/2014_endoh1.tar.bz2 differ
diff --git a/2014/endoh1/index.html b/2014/endoh1/index.html
index 47c3c1a18..c40233599 100644
--- a/2014/endoh1/index.html
+++ b/2014/endoh1/index.html
@@ -226,6 +226,7 @@ more than 1000 words.
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
spoilers.md - markdown source for spoilers.html
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/endoh2/.tar.tstamp b/2014/endoh2/.tar.tstamp
index 50fc5584f..29cf18cb7 100644
--- a/2014/endoh2/.tar.tstamp
+++ b/2014/endoh2/.tar.tstamp
@@ -1 +1 @@
-1711177857
+1711431298
diff --git a/2014/endoh2/2014_endoh2.tar.bz2 b/2014/endoh2/2014_endoh2.tar.bz2
index 980fb93ce..4156a6f29 100644
Binary files a/2014/endoh2/2014_endoh2.tar.bz2 and b/2014/endoh2/2014_endoh2.tar.bz2 differ
diff --git a/2014/endoh2/index.html b/2014/endoh2/index.html
index 06946f021..8a27ac59b 100644
--- a/2014/endoh2/index.html
+++ b/2014/endoh2/index.html
@@ -201,6 +201,7 @@ A is bonding only to T, and C is bonding only to G.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/maffiodo1/.tar.tstamp b/2014/maffiodo1/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/maffiodo1/.tar.tstamp
+++ b/2014/maffiodo1/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/maffiodo1/2014_maffiodo1.tar.bz2 b/2014/maffiodo1/2014_maffiodo1.tar.bz2
index 2003ab590..c22a152b2 100644
Binary files a/2014/maffiodo1/2014_maffiodo1.tar.bz2 and b/2014/maffiodo1/2014_maffiodo1.tar.bz2 differ
diff --git a/2014/maffiodo1/index.html b/2014/maffiodo1/index.html
index 5c069bc65..d35cc2d24 100644
--- a/2014/maffiodo1/index.html
+++ b/2014/maffiodo1/index.html
@@ -413,6 +413,7 @@ Sisters !! :)
.gitignore - list of files that should not be committed under git
mario.rgba - raw RGBA image
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/maffiodo2/.tar.tstamp b/2014/maffiodo2/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/maffiodo2/.tar.tstamp
+++ b/2014/maffiodo2/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/maffiodo2/2014_maffiodo2.tar.bz2 b/2014/maffiodo2/2014_maffiodo2.tar.bz2
index e51fa8d97..dd668e01e 100644
Binary files a/2014/maffiodo2/2014_maffiodo2.tar.bz2 and b/2014/maffiodo2/2014_maffiodo2.tar.bz2 differ
diff --git a/2014/maffiodo2/index.html b/2014/maffiodo2/index.html
index fe4b850e2..7f51dc8d3 100644
--- a/2014/maffiodo2/index.html
+++ b/2014/maffiodo2/index.html
@@ -241,6 +241,7 @@ program is the conversion ramp. You can use different ramps or create y
.gitignore - list of files that should not be committed under git
image.rgb - sample input in the form of a raw RGB image
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/morgan/.tar.tstamp b/2014/morgan/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/morgan/.tar.tstamp
+++ b/2014/morgan/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/morgan/2014_morgan.tar.bz2 b/2014/morgan/2014_morgan.tar.bz2
index a569fbf3c..83a183a55 100644
Binary files a/2014/morgan/2014_morgan.tar.bz2 and b/2014/morgan/2014_morgan.tar.bz2 differ
diff --git a/2014/morgan/index.html b/2014/morgan/index.html
index ffc10b28c..8e9f75d06 100644
--- a/2014/morgan/index.html
+++ b/2014/morgan/index.html
@@ -228,6 +228,7 @@ prog.c:12:11: warning: suggest parentheses around ‘&&’ within ‘||
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/sinon/.tar.tstamp b/2014/sinon/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/sinon/.tar.tstamp
+++ b/2014/sinon/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/sinon/2014_sinon.tar.bz2 b/2014/sinon/2014_sinon.tar.bz2
index 99c5870c4..aabe5b970 100644
Binary files a/2014/sinon/2014_sinon.tar.bz2 and b/2014/sinon/2014_sinon.tar.bz2 differ
diff --git a/2014/sinon/index.html b/2014/sinon/index.html
index 0e7a7fd54..46e0f7bd8 100644
--- a/2014/sinon/index.html
+++ b/2014/sinon/index.html
@@ -254,6 +254,7 @@ from Sword Art Online.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/skeggs/.tar.tstamp b/2014/skeggs/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/skeggs/.tar.tstamp
+++ b/2014/skeggs/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/skeggs/2014_skeggs.tar.bz2 b/2014/skeggs/2014_skeggs.tar.bz2
index 804431289..16983d400 100644
Binary files a/2014/skeggs/2014_skeggs.tar.bz2 and b/2014/skeggs/2014_skeggs.tar.bz2 differ
diff --git a/2014/skeggs/index.html b/2014/skeggs/index.html
index a4252674b..4597e99fa 100644
--- a/2014/skeggs/index.html
+++ b/2014/skeggs/index.html
@@ -331,6 +331,7 @@ development of this entry.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/vik/.tar.tstamp b/2014/vik/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/vik/.tar.tstamp
+++ b/2014/vik/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/vik/2014_vik.tar.bz2 b/2014/vik/2014_vik.tar.bz2
index 8db1093da..d98a9f170 100644
Binary files a/2014/vik/2014_vik.tar.bz2 and b/2014/vik/2014_vik.tar.bz2 differ
diff --git a/2014/vik/index.html b/2014/vik/index.html
index e440f7a43..164a9d9c9 100644
--- a/2014/vik/index.html
+++ b/2014/vik/index.html
@@ -236,6 +236,7 @@ narrow bandpass filter on the frequency of the transmission.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2014/wiedijk/.tar.tstamp b/2014/wiedijk/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2014/wiedijk/.tar.tstamp
+++ b/2014/wiedijk/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2014/wiedijk/2014_wiedijk.tar.bz2 b/2014/wiedijk/2014_wiedijk.tar.bz2
index 7c02c86f6..76d7d1863 100644
Binary files a/2014/wiedijk/2014_wiedijk.tar.bz2 and b/2014/wiedijk/2014_wiedijk.tar.bz2 differ
diff --git a/2014/wiedijk/index.html b/2014/wiedijk/index.html
index 527ed9ef7..9b2ba6720 100644
--- a/2014/wiedijk/index.html
+++ b/2014/wiedijk/index.html
@@ -219,6 +219,7 @@ everything.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/.tar.tstamp b/2015/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2015/.tar.tstamp
+++ b/2015/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2015/burton/.tar.tstamp b/2015/burton/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2015/burton/.tar.tstamp
+++ b/2015/burton/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2015/burton/2015_burton.tar.bz2 b/2015/burton/2015_burton.tar.bz2
index 1e161b765..a3e4d67d3 100644
Binary files a/2015/burton/2015_burton.tar.bz2 and b/2015/burton/2015_burton.tar.bz2 differ
diff --git a/2015/burton/index.html b/2015/burton/index.html
index 70286c62e..21177b4b3 100644
--- a/2015/burton/index.html
+++ b/2015/burton/index.html
@@ -316,6 +316,7 @@ This allows for a convenient test suite:
.path - directory path from top directory
road.to.obscurity.md - markdown source for road.to.obscurity.html
spoilers.md - markdown source for spoilers.html
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/dogon/.tar.tstamp b/2015/dogon/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2015/dogon/.tar.tstamp
+++ b/2015/dogon/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2015/dogon/2015_dogon.tar.bz2 b/2015/dogon/2015_dogon.tar.bz2
index bdc1a45fb..3f2bd3afb 100644
Binary files a/2015/dogon/2015_dogon.tar.bz2 and b/2015/dogon/2015_dogon.tar.bz2 differ
diff --git a/2015/dogon/index.html b/2015/dogon/index.html
index 008db24aa..69915374d 100644
--- a/2015/dogon/index.html
+++ b/2015/dogon/index.html
@@ -330,6 +330,7 @@ reordered as RBG.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/duble/.tar.tstamp b/2015/duble/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2015/duble/.tar.tstamp
+++ b/2015/duble/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2015/duble/2015_duble.tar.bz2 b/2015/duble/2015_duble.tar.bz2
index c98351e37..013da3fec 100644
Binary files a/2015/duble/2015_duble.tar.bz2 and b/2015/duble/2015_duble.tar.bz2 differ
diff --git a/2015/duble/index.html b/2015/duble/index.html
index 96b23f168..ae94067a9 100644
--- a/2015/duble/index.html
+++ b/2015/duble/index.html
@@ -306,6 +306,7 @@ detection, but still behaves (or seems to behave) appropriately?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/endoh1/.tar.tstamp b/2015/endoh1/.tar.tstamp
index 7227956cd..29cf18cb7 100644
--- a/2015/endoh1/.tar.tstamp
+++ b/2015/endoh1/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431298
diff --git a/2015/endoh1/2015_endoh1.tar.bz2 b/2015/endoh1/2015_endoh1.tar.bz2
index be32fa60b..b699958af 100644
Binary files a/2015/endoh1/2015_endoh1.tar.bz2 and b/2015/endoh1/2015_endoh1.tar.bz2 differ
diff --git a/2015/endoh1/index.html b/2015/endoh1/index.html
index ee7495d46..404f85d64 100644
--- a/2015/endoh1/index.html
+++ b/2015/endoh1/index.html
@@ -331,6 +331,7 @@ field data to the browser on each frame.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/endoh2/.tar.tstamp b/2015/endoh2/.tar.tstamp
index 7227956cd..b761eda4d 100644
--- a/2015/endoh2/.tar.tstamp
+++ b/2015/endoh2/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431299
diff --git a/2015/endoh2/2015_endoh2.tar.bz2 b/2015/endoh2/2015_endoh2.tar.bz2
index 5f2b896ac..f62223c87 100644
Binary files a/2015/endoh2/2015_endoh2.tar.bz2 and b/2015/endoh2/2015_endoh2.tar.bz2 differ
diff --git a/2015/endoh2/index.html b/2015/endoh2/index.html
index b725af54e..98bd66f59 100644
--- a/2015/endoh2/index.html
+++ b/2015/endoh2/index.html
@@ -206,6 +206,7 @@ terminal supports bold.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/endoh3/.tar.tstamp b/2015/endoh3/.tar.tstamp
index 7227956cd..b761eda4d 100644
--- a/2015/endoh3/.tar.tstamp
+++ b/2015/endoh3/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431299
diff --git a/2015/endoh3/2015_endoh3.tar.bz2 b/2015/endoh3/2015_endoh3.tar.bz2
index 8a7e6ea60..7730ebae8 100644
Binary files a/2015/endoh3/2015_endoh3.tar.bz2 and b/2015/endoh3/2015_endoh3.tar.bz2 differ
diff --git a/2015/endoh3/index.html b/2015/endoh3/index.html
index f3c5f002e..e0b3e8d89 100644
--- a/2015/endoh3/index.html
+++ b/2015/endoh3/index.html
@@ -367,6 +367,7 @@ register).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/endoh4/.tar.tstamp b/2015/endoh4/.tar.tstamp
index 7227956cd..b761eda4d 100644
--- a/2015/endoh4/.tar.tstamp
+++ b/2015/endoh4/.tar.tstamp
@@ -1 +1 @@
-1711177858
+1711431299
diff --git a/2015/endoh4/2015_endoh4.tar.bz2 b/2015/endoh4/2015_endoh4.tar.bz2
index 072369885..89123e8f3 100644
Binary files a/2015/endoh4/2015_endoh4.tar.bz2 and b/2015/endoh4/2015_endoh4.tar.bz2 differ
diff --git a/2015/endoh4/index.html b/2015/endoh4/index.html
index 18b131645..bd5b23b72 100644
--- a/2015/endoh4/index.html
+++ b/2015/endoh4/index.html
@@ -212,6 +212,7 @@ you!
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/hou/.tar.tstamp b/2015/hou/.tar.tstamp
index 7c70660a5..b761eda4d 100644
--- a/2015/hou/.tar.tstamp
+++ b/2015/hou/.tar.tstamp
@@ -1 +1 @@
-1711177859
+1711431299
diff --git a/2015/hou/2015_hou.tar.bz2 b/2015/hou/2015_hou.tar.bz2
index 78e447ce5..51898b2db 100644
Binary files a/2015/hou/2015_hou.tar.bz2 and b/2015/hou/2015_hou.tar.bz2 differ
diff --git a/2015/hou/index.html b/2015/hou/index.html
index f5633a94b..89b9501d2 100644
--- a/2015/hou/index.html
+++ b/2015/hou/index.html
@@ -249,6 +249,7 @@ result. Error messages become garbled, though.
.gitignore - list of files that should not be committed under git
large - large input data
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/howe/.tar.tstamp b/2015/howe/.tar.tstamp
index 7c70660a5..b761eda4d 100644
--- a/2015/howe/.tar.tstamp
+++ b/2015/howe/.tar.tstamp
@@ -1 +1 @@
-1711177859
+1711431299
diff --git a/2015/howe/2015_howe.tar.bz2 b/2015/howe/2015_howe.tar.bz2
index c27440835..985ebbf55 100644
Binary files a/2015/howe/2015_howe.tar.bz2 and b/2015/howe/2015_howe.tar.bz2 differ
diff --git a/2015/howe/index.html b/2015/howe/index.html
index 058fa1d1d..b0785dfc1 100644
--- a/2015/howe/index.html
+++ b/2015/howe/index.html
@@ -273,6 +273,7 @@ Comm. of ACM, Vol. 18, June 1975, pages 341-343
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/mills1/.tar.tstamp b/2015/mills1/.tar.tstamp
index 7c70660a5..b761eda4d 100644
--- a/2015/mills1/.tar.tstamp
+++ b/2015/mills1/.tar.tstamp
@@ -1 +1 @@
-1711177859
+1711431299
diff --git a/2015/mills1/2015_mills1.tar.bz2 b/2015/mills1/2015_mills1.tar.bz2
index 963f5412d..667acbebb 100644
Binary files a/2015/mills1/2015_mills1.tar.bz2 and b/2015/mills1/2015_mills1.tar.bz2 differ
diff --git a/2015/mills1/index.html b/2015/mills1/index.html
index 1666636cb..dacdb8991 100644
--- a/2015/mills1/index.html
+++ b/2015/mills1/index.html
@@ -290,6 +290,7 @@ live-streamed targeted video advertising.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/mills2/.tar.tstamp b/2015/mills2/.tar.tstamp
index 7c70660a5..b761eda4d 100644
--- a/2015/mills2/.tar.tstamp
+++ b/2015/mills2/.tar.tstamp
@@ -1 +1 @@
-1711177859
+1711431299
diff --git a/2015/mills2/2015_mills2.tar.bz2 b/2015/mills2/2015_mills2.tar.bz2
index 62edff15b..b7cf5da7a 100644
Binary files a/2015/mills2/2015_mills2.tar.bz2 and b/2015/mills2/2015_mills2.tar.bz2 differ
diff --git a/2015/mills2/index.html b/2015/mills2/index.html
index 0c4c42255..5b7cd0b01 100644
--- a/2015/mills2/index.html
+++ b/2015/mills2/index.html
@@ -268,6 +268,7 @@ you might want to compile this for.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/muth/.tar.tstamp b/2015/muth/.tar.tstamp
index 7c70660a5..b761eda4d 100644
--- a/2015/muth/.tar.tstamp
+++ b/2015/muth/.tar.tstamp
@@ -1 +1 @@
-1711177859
+1711431299
diff --git a/2015/muth/2015_muth.tar.bz2 b/2015/muth/2015_muth.tar.bz2
index b4c7d67e6..0bd2abf5c 100644
Binary files a/2015/muth/2015_muth.tar.bz2 and b/2015/muth/2015_muth.tar.bz2 differ
diff --git a/2015/muth/index.html b/2015/muth/index.html
index ac7547f86..55790ec81 100644
--- a/2015/muth/index.html
+++ b/2015/muth/index.html
@@ -260,6 +260,7 @@ machine.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/schweikhardt/.tar.tstamp b/2015/schweikhardt/.tar.tstamp
index 7c70660a5..b761eda4d 100644
--- a/2015/schweikhardt/.tar.tstamp
+++ b/2015/schweikhardt/.tar.tstamp
@@ -1 +1 @@
-1711177859
+1711431299
diff --git a/2015/schweikhardt/2015_schweikhardt.tar.bz2 b/2015/schweikhardt/2015_schweikhardt.tar.bz2
index d55618d2c..8b9b33755 100644
Binary files a/2015/schweikhardt/2015_schweikhardt.tar.bz2 and b/2015/schweikhardt/2015_schweikhardt.tar.bz2 differ
diff --git a/2015/schweikhardt/index.html b/2015/schweikhardt/index.html
index d6506bf1a..de3eef3ff 100644
--- a/2015/schweikhardt/index.html
+++ b/2015/schweikhardt/index.html
@@ -793,6 +793,7 @@ memory resources with the ulimit(1) built-in of your shell.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2015/yang/.tar.tstamp b/2015/yang/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2015/yang/.tar.tstamp
+++ b/2015/yang/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2015/yang/2015_yang.tar.bz2 b/2015/yang/2015_yang.tar.bz2
index 508eafe8f..4710d1c8c 100644
Binary files a/2015/yang/2015_yang.tar.bz2 and b/2015/yang/2015_yang.tar.bz2 differ
diff --git a/2015/yang/index.html b/2015/yang/index.html
index 7b2efbf7f..603c13c20 100644
--- a/2015/yang/index.html
+++ b/2015/yang/index.html
@@ -253,6 +253,7 @@ Fuuko, for her love of sea stars.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/.tar.tstamp b/2018/.tar.tstamp
index 54bda6eff..c12c363fe 100644
--- a/2018/.tar.tstamp
+++ b/2018/.tar.tstamp
@@ -1 +1 @@
-1711177861
+1711431301
diff --git a/2018/algmyr/.tar.tstamp b/2018/algmyr/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/algmyr/.tar.tstamp
+++ b/2018/algmyr/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/algmyr/2018_algmyr.tar.bz2 b/2018/algmyr/2018_algmyr.tar.bz2
index 1b3a4f727..1a9253fda 100644
Binary files a/2018/algmyr/2018_algmyr.tar.bz2 and b/2018/algmyr/2018_algmyr.tar.bz2 differ
diff --git a/2018/algmyr/index.html b/2018/algmyr/index.html
index 6dcf29c93..6c9e5e519 100644
--- a/2018/algmyr/index.html
+++ b/2018/algmyr/index.html
@@ -291,6 +291,7 @@ myself. :(
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/anderson/.tar.tstamp b/2018/anderson/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/anderson/.tar.tstamp
+++ b/2018/anderson/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/anderson/2018_anderson.tar.bz2 b/2018/anderson/2018_anderson.tar.bz2
index aab6f2181..40004822b 100644
Binary files a/2018/anderson/2018_anderson.tar.bz2 and b/2018/anderson/2018_anderson.tar.bz2 differ
diff --git a/2018/anderson/index.html b/2018/anderson/index.html
index f3121cc80..009417989 100644
--- a/2018/anderson/index.html
+++ b/2018/anderson/index.html
@@ -230,6 +230,7 @@ secondarily to obfuscate.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/bellard/.tar.tstamp b/2018/bellard/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/bellard/.tar.tstamp
+++ b/2018/bellard/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/bellard/2018_bellard.tar.bz2 b/2018/bellard/2018_bellard.tar.bz2
index 67d19edd4..6bbd83d27 100644
Binary files a/2018/bellard/2018_bellard.tar.bz2 and b/2018/bellard/2018_bellard.tar.bz2 differ
diff --git a/2018/bellard/index.html b/2018/bellard/index.html
index 015058524..df63924e9 100644
--- a/2018/bellard/index.html
+++ b/2018/bellard/index.html
@@ -248,6 +248,7 @@ the output.
.gitignore - list of files that should not be committed under git
lena512.bin - binary support file
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
vintage_cars.bin - binary support file
diff --git a/2018/burton1/.tar.tstamp b/2018/burton1/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/burton1/.tar.tstamp
+++ b/2018/burton1/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/burton1/2018_burton1.tar.bz2 b/2018/burton1/2018_burton1.tar.bz2
index 90c9960ed..1c236af15 100644
Binary files a/2018/burton1/2018_burton1.tar.bz2 and b/2018/burton1/2018_burton1.tar.bz2 differ
diff --git a/2018/burton1/index.html b/2018/burton1/index.html
index 8cf277781..8d0b2bfc7 100644
--- a/2018/burton1/index.html
+++ b/2018/burton1/index.html
@@ -362,6 +362,7 @@ the expression within the ternary remains too complex.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/burton2/.tar.tstamp b/2018/burton2/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/burton2/.tar.tstamp
+++ b/2018/burton2/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/burton2/2018_burton2.tar.bz2 b/2018/burton2/2018_burton2.tar.bz2
index 59931f052..5b3203388 100644
Binary files a/2018/burton2/2018_burton2.tar.bz2 and b/2018/burton2/2018_burton2.tar.bz2 differ
diff --git a/2018/burton2/index.html b/2018/burton2/index.html
index b19ede29b..2377c7889 100644
--- a/2018/burton2/index.html
+++ b/2018/burton2/index.html
@@ -535,6 +535,7 @@ are not recognised when written as -rs in prose).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/ciura/.tar.tstamp b/2018/ciura/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/ciura/.tar.tstamp
+++ b/2018/ciura/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/ciura/2018_ciura.tar.bz2 b/2018/ciura/2018_ciura.tar.bz2
index 378e6713b..db3b6cf89 100644
Binary files a/2018/ciura/2018_ciura.tar.bz2 and b/2018/ciura/2018_ciura.tar.bz2 differ
diff --git a/2018/ciura/index.html b/2018/ciura/index.html
index 5d77fb722..61a9fc7a9 100644
--- a/2018/ciura/index.html
+++ b/2018/ciura/index.html
@@ -394,6 +394,7 @@ to CSILENCE.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/endoh1/.tar.tstamp b/2018/endoh1/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/endoh1/.tar.tstamp
+++ b/2018/endoh1/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/endoh1/2018_endoh1.tar.bz2 b/2018/endoh1/2018_endoh1.tar.bz2
index ec180b4b4..0203fc652 100644
Binary files a/2018/endoh1/2018_endoh1.tar.bz2 and b/2018/endoh1/2018_endoh1.tar.bz2 differ
diff --git a/2018/endoh1/index.html b/2018/endoh1/index.html
index 464f4ce10..586cfb89a 100644
--- a/2018/endoh1/index.html
+++ b/2018/endoh1/index.html
@@ -206,6 +206,7 @@ letters that leave the mark and ones that do not?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/endoh2/.tar.tstamp b/2018/endoh2/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/endoh2/.tar.tstamp
+++ b/2018/endoh2/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/endoh2/2018_endoh2.tar.bz2 b/2018/endoh2/2018_endoh2.tar.bz2
index dc34bb942..2795d1ec7 100644
Binary files a/2018/endoh2/2018_endoh2.tar.bz2 and b/2018/endoh2/2018_endoh2.tar.bz2 differ
diff --git a/2018/endoh2/index.html b/2018/endoh2/index.html
index f502d519a..4ff2741bc 100644
--- a/2018/endoh2/index.html
+++ b/2018/endoh2/index.html
@@ -231,6 +231,7 @@ is also used in the opening.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/ferguson/.tar.tstamp b/2018/ferguson/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/ferguson/.tar.tstamp
+++ b/2018/ferguson/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/ferguson/2018_ferguson.tar.bz2 b/2018/ferguson/2018_ferguson.tar.bz2
index bfabf87c4..a315a9351 100644
Binary files a/2018/ferguson/2018_ferguson.tar.bz2 and b/2018/ferguson/2018_ferguson.tar.bz2 differ
diff --git a/2018/ferguson/index.html b/2018/ferguson/index.html
index cbccd41e8..596d41bdf 100644
--- a/2018/ferguson/index.html
+++ b/2018/ferguson/index.html
@@ -1165,6 +1165,7 @@ email but I’m more likely to respond to mastodon messages.
hint.css - CSS for hint page
.path - directory path from top directory
rpm.md - markdown source for rpm.html
+.tar.tstamp - timestamp of compressed tarball formation
test-strings.txt - test.sh support file
diff --git a/2018/giles/.tar.tstamp b/2018/giles/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/giles/.tar.tstamp
+++ b/2018/giles/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/giles/2018_giles.tar.bz2 b/2018/giles/2018_giles.tar.bz2
index e0bb38966..e6a360afe 100644
Binary files a/2018/giles/2018_giles.tar.bz2 and b/2018/giles/2018_giles.tar.bz2 differ
diff --git a/2018/giles/index.html b/2018/giles/index.html
index 06710c87a..047214482 100644
--- a/2018/giles/index.html
+++ b/2018/giles/index.html
@@ -220,6 +220,7 @@ so that they are short and easily confused with each other.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/hou/.tar.tstamp b/2018/hou/.tar.tstamp
index 50bf39ced..5c6fb176d 100644
--- a/2018/hou/.tar.tstamp
+++ b/2018/hou/.tar.tstamp
@@ -1 +1 @@
-1711177860
+1711431300
diff --git a/2018/hou/2018_hou.tar.bz2 b/2018/hou/2018_hou.tar.bz2
index 65293bf28..f32248431 100644
Binary files a/2018/hou/2018_hou.tar.bz2 and b/2018/hou/2018_hou.tar.bz2 differ
diff --git a/2018/hou/index.html b/2018/hou/index.html
index e94b31646..5680a6c84 100644
--- a/2018/hou/index.html
+++ b/2018/hou/index.html
@@ -210,6 +210,7 @@ page is already generated?
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/mills/.tar.tstamp b/2018/mills/.tar.tstamp
index 54bda6eff..c12c363fe 100644
--- a/2018/mills/.tar.tstamp
+++ b/2018/mills/.tar.tstamp
@@ -1 +1 @@
-1711177861
+1711431301
diff --git a/2018/mills/2018_mills.tar.bz2 b/2018/mills/2018_mills.tar.bz2
index 192c11abe..d9cd16ef0 100644
Binary files a/2018/mills/2018_mills.tar.bz2 and b/2018/mills/2018_mills.tar.bz2 differ
diff --git a/2018/mills/index.html b/2018/mills/index.html
index 87c8d0820..57a7c4150 100644
--- a/2018/mills/index.html
+++ b/2018/mills/index.html
@@ -788,6 +788,7 @@ time…
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
v0.image.fs - filesystem image
v6.tape.gz - compressed filesystem image
diff --git a/2018/poikola/.tar.tstamp b/2018/poikola/.tar.tstamp
index 54bda6eff..c12c363fe 100644
--- a/2018/poikola/.tar.tstamp
+++ b/2018/poikola/.tar.tstamp
@@ -1 +1 @@
-1711177861
+1711431301
diff --git a/2018/poikola/2018_poikola.tar.bz2 b/2018/poikola/2018_poikola.tar.bz2
index 737bf61bc..b72fe2790 100644
Binary files a/2018/poikola/2018_poikola.tar.bz2 and b/2018/poikola/2018_poikola.tar.bz2 differ
diff --git a/2018/poikola/index.html b/2018/poikola/index.html
index fe6c5d2bc..0aa7cdc8a 100644
--- a/2018/poikola/index.html
+++ b/2018/poikola/index.html
@@ -286,6 +286,7 @@ Shift/Key (number)
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/vokes/.tar.tstamp b/2018/vokes/.tar.tstamp
index 54bda6eff..c12c363fe 100644
--- a/2018/vokes/.tar.tstamp
+++ b/2018/vokes/.tar.tstamp
@@ -1 +1 @@
-1711177861
+1711431301
diff --git a/2018/vokes/2018_vokes.tar.bz2 b/2018/vokes/2018_vokes.tar.bz2
index 9774c5d27..208a2c8d9 100644
Binary files a/2018/vokes/2018_vokes.tar.bz2 and b/2018/vokes/2018_vokes.tar.bz2 differ
diff --git a/2018/vokes/index.html b/2018/vokes/index.html
index cbe208c1a..9a0ee65c3 100644
--- a/2018/vokes/index.html
+++ b/2018/vokes/index.html
@@ -344,6 +344,7 @@ this program has nothing to do with a hand.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2018/yang/.tar.tstamp b/2018/yang/.tar.tstamp
index 54bda6eff..c12c363fe 100644
--- a/2018/yang/.tar.tstamp
+++ b/2018/yang/.tar.tstamp
@@ -1 +1 @@
-1711177861
+1711431301
diff --git a/2018/yang/2018_yang.tar.bz2 b/2018/yang/2018_yang.tar.bz2
index 78bddb6f3..5d78c8b36 100644
Binary files a/2018/yang/2018_yang.tar.bz2 and b/2018/yang/2018_yang.tar.bz2 differ
diff --git a/2018/yang/index.html b/2018/yang/index.html
index 4a5085cfb..698eaaf1e 100644
--- a/2018/yang/index.html
+++ b/2018/yang/index.html
@@ -284,6 +284,7 @@ will look weird after rotation, for example.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/.tar.tstamp b/2019/.tar.tstamp
index 2d4cd5acc..65adb5277 100644
--- a/2019/.tar.tstamp
+++ b/2019/.tar.tstamp
@@ -1 +1 @@
-1711177864
+1711431304
diff --git a/2019/adamovsky/.tar.tstamp b/2019/adamovsky/.tar.tstamp
index e21ddc060..c12c363fe 100644
--- a/2019/adamovsky/.tar.tstamp
+++ b/2019/adamovsky/.tar.tstamp
@@ -1 +1 @@
-1711177862
+1711431301
diff --git a/2019/adamovsky/2019_adamovsky.tar.bz2 b/2019/adamovsky/2019_adamovsky.tar.bz2
index 44bccaf2b..f9a2c8653 100644
Binary files a/2019/adamovsky/2019_adamovsky.tar.bz2 and b/2019/adamovsky/2019_adamovsky.tar.bz2 differ
diff --git a/2019/adamovsky/index.html b/2019/adamovsky/index.html
index d0d7e4def..e64bf6999 100644
--- a/2019/adamovsky/index.html
+++ b/2019/adamovsky/index.html
@@ -374,6 +374,7 @@ be applied.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/burton/.tar.tstamp b/2019/burton/.tar.tstamp
index e21ddc060..64abe8224 100644
--- a/2019/burton/.tar.tstamp
+++ b/2019/burton/.tar.tstamp
@@ -1 +1 @@
-1711177862
+1711431302
diff --git a/2019/burton/2019_burton.tar.bz2 b/2019/burton/2019_burton.tar.bz2
index e8af2982b..9e0d02c95 100644
Binary files a/2019/burton/2019_burton.tar.bz2 and b/2019/burton/2019_burton.tar.bz2 differ
diff --git a/2019/burton/index.html b/2019/burton/index.html
index 14d32acf8..abe27a28c 100644
--- a/2019/burton/index.html
+++ b/2019/burton/index.html
@@ -234,6 +234,7 @@ This exercise left to the reader.
.gitignore - list of files that should not be committed under git
newlines - more useful interface.
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/ciura/.tar.tstamp b/2019/ciura/.tar.tstamp
index e21ddc060..64abe8224 100644
--- a/2019/ciura/.tar.tstamp
+++ b/2019/ciura/.tar.tstamp
@@ -1 +1 @@
-1711177862
+1711431302
diff --git a/2019/ciura/2019_ciura.tar.bz2 b/2019/ciura/2019_ciura.tar.bz2
index 77c1c1c6d..4fd297641 100644
Binary files a/2019/ciura/2019_ciura.tar.bz2 and b/2019/ciura/2019_ciura.tar.bz2 differ
diff --git a/2019/ciura/index.html b/2019/ciura/index.html
index aaf0ec41f..f1e53dff7 100644
--- a/2019/ciura/index.html
+++ b/2019/ciura/index.html
@@ -321,6 +321,7 @@ compilation with gcc -std=c90, add -Wno-format to
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/diels-grabsch1/.tar.tstamp b/2019/diels-grabsch1/.tar.tstamp
index e21ddc060..64abe8224 100644
--- a/2019/diels-grabsch1/.tar.tstamp
+++ b/2019/diels-grabsch1/.tar.tstamp
@@ -1 +1 @@
-1711177862
+1711431302
diff --git a/2019/diels-grabsch1/2019_diels-grabsch1.tar.bz2 b/2019/diels-grabsch1/2019_diels-grabsch1.tar.bz2
index 3a8136c8e..118dd0d5f 100644
Binary files a/2019/diels-grabsch1/2019_diels-grabsch1.tar.bz2 and b/2019/diels-grabsch1/2019_diels-grabsch1.tar.bz2 differ
diff --git a/2019/diels-grabsch1/index.html b/2019/diels-grabsch1/index.html
index 3f3237959..841dc7fd8 100644
--- a/2019/diels-grabsch1/index.html
+++ b/2019/diels-grabsch1/index.html
@@ -211,6 +211,7 @@ goes.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/diels-grabsch2/.tar.tstamp b/2019/diels-grabsch2/.tar.tstamp
index dc8a5ffb4..64abe8224 100644
--- a/2019/diels-grabsch2/.tar.tstamp
+++ b/2019/diels-grabsch2/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431302
diff --git a/2019/diels-grabsch2/2019_diels-grabsch2.tar.bz2 b/2019/diels-grabsch2/2019_diels-grabsch2.tar.bz2
index 36a59bcea..82d75396f 100644
Binary files a/2019/diels-grabsch2/2019_diels-grabsch2.tar.bz2 and b/2019/diels-grabsch2/2019_diels-grabsch2.tar.bz2 differ
diff --git a/2019/diels-grabsch2/index.html b/2019/diels-grabsch2/index.html
index 166e24093..acc857bf8 100644
--- a/2019/diels-grabsch2/index.html
+++ b/2019/diels-grabsch2/index.html
@@ -312,6 +312,7 @@ doesn’t have to mean anything.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/dogon/.tar.tstamp b/2019/dogon/.tar.tstamp
index dc8a5ffb4..011336b7b 100644
--- a/2019/dogon/.tar.tstamp
+++ b/2019/dogon/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431303
diff --git a/2019/dogon/2019_dogon.tar.bz2 b/2019/dogon/2019_dogon.tar.bz2
index 35600a251..5267cbfa2 100644
Binary files a/2019/dogon/2019_dogon.tar.bz2 and b/2019/dogon/2019_dogon.tar.bz2 differ
diff --git a/2019/dogon/index.html b/2019/dogon/index.html
index 4fc43b21b..cc9de7835 100644
--- a/2019/dogon/index.html
+++ b/2019/dogon/index.html
@@ -376,6 +376,7 @@ next generation bits of the input 8x8 !
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/duble/.tar.tstamp b/2019/duble/.tar.tstamp
index dc8a5ffb4..011336b7b 100644
--- a/2019/duble/.tar.tstamp
+++ b/2019/duble/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431303
diff --git a/2019/duble/2019_duble.tar.bz2 b/2019/duble/2019_duble.tar.bz2
index f3188fd58..4c3f557e0 100644
Binary files a/2019/duble/2019_duble.tar.bz2 and b/2019/duble/2019_duble.tar.bz2 differ
diff --git a/2019/duble/index.html b/2019/duble/index.html
index 5d736c78d..0c02054c8 100644
--- a/2019/duble/index.html
+++ b/2019/duble/index.html
@@ -327,6 +327,7 @@ size limit with this little change.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/endoh/.tar.tstamp b/2019/endoh/.tar.tstamp
index dc8a5ffb4..011336b7b 100644
--- a/2019/endoh/.tar.tstamp
+++ b/2019/endoh/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431303
diff --git a/2019/endoh/2019_endoh.tar.bz2 b/2019/endoh/2019_endoh.tar.bz2
index a0530b4e6..c4c2399c3 100644
Binary files a/2019/endoh/2019_endoh.tar.bz2 and b/2019/endoh/2019_endoh.tar.bz2 differ
diff --git a/2019/endoh/index.html b/2019/endoh/index.html
index f830c0237..2d424f3b3 100644
--- a/2019/endoh/index.html
+++ b/2019/endoh/index.html
@@ -250,6 +250,7 @@ Program received signal SIGSEGV, Segmentation fault.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/giles/.tar.tstamp b/2019/giles/.tar.tstamp
index dc8a5ffb4..011336b7b 100644
--- a/2019/giles/.tar.tstamp
+++ b/2019/giles/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431303
diff --git a/2019/giles/2019_giles.tar.bz2 b/2019/giles/2019_giles.tar.bz2
index 41d032a3f..1ba3ae7cc 100644
Binary files a/2019/giles/2019_giles.tar.bz2 and b/2019/giles/2019_giles.tar.bz2 differ
diff --git a/2019/giles/index.html b/2019/giles/index.html
index 5646a5f1a..fa7af3807 100644
--- a/2019/giles/index.html
+++ b/2019/giles/index.html
@@ -364,6 +364,7 @@ where the data ends up. For example:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/karns/.tar.tstamp b/2019/karns/.tar.tstamp
index dc8a5ffb4..011336b7b 100644
--- a/2019/karns/.tar.tstamp
+++ b/2019/karns/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431303
diff --git a/2019/karns/2019_karns.tar.bz2 b/2019/karns/2019_karns.tar.bz2
index 660aed054..28d7ba2ce 100644
Binary files a/2019/karns/2019_karns.tar.bz2 and b/2019/karns/2019_karns.tar.bz2 differ
diff --git a/2019/karns/index.html b/2019/karns/index.html
index ba8717716..1caa110b7 100644
--- a/2019/karns/index.html
+++ b/2019/karns/index.html
@@ -239,6 +239,7 @@ not encountered this myself).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/lynn/.tar.tstamp b/2019/lynn/.tar.tstamp
index dc8a5ffb4..011336b7b 100644
--- a/2019/lynn/.tar.tstamp
+++ b/2019/lynn/.tar.tstamp
@@ -1 +1 @@
-1711177863
+1711431303
diff --git a/2019/lynn/2019_lynn.tar.bz2 b/2019/lynn/2019_lynn.tar.bz2
index 575e4f7a0..b0e9446ac 100644
Binary files a/2019/lynn/2019_lynn.tar.bz2 and b/2019/lynn/2019_lynn.tar.bz2 differ
diff --git a/2019/lynn/index.html b/2019/lynn/index.html
index ae9da88ba..2c788aeee 100644
--- a/2019/lynn/index.html
+++ b/2019/lynn/index.html
@@ -380,6 +380,7 @@ works.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/mills/.tar.tstamp b/2019/mills/.tar.tstamp
index 2d4cd5acc..011336b7b 100644
--- a/2019/mills/.tar.tstamp
+++ b/2019/mills/.tar.tstamp
@@ -1 +1 @@
-1711177864
+1711431303
diff --git a/2019/mills/2019_mills.tar.bz2 b/2019/mills/2019_mills.tar.bz2
index 862afd9ec..f6e1cee18 100644
Binary files a/2019/mills/2019_mills.tar.bz2 and b/2019/mills/2019_mills.tar.bz2 differ
diff --git a/2019/mills/index.html b/2019/mills/index.html
index d41110a96..eb73f59a1 100644
--- a/2019/mills/index.html
+++ b/2019/mills/index.html
@@ -665,6 +665,7 @@ the current directory.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/poikola/.tar.tstamp b/2019/poikola/.tar.tstamp
index 2d4cd5acc..65adb5277 100644
--- a/2019/poikola/.tar.tstamp
+++ b/2019/poikola/.tar.tstamp
@@ -1 +1 @@
-1711177864
+1711431304
diff --git a/2019/poikola/2019_poikola.tar.bz2 b/2019/poikola/2019_poikola.tar.bz2
index 6770e4248..5a97f1097 100644
Binary files a/2019/poikola/2019_poikola.tar.bz2 and b/2019/poikola/2019_poikola.tar.bz2 differ
diff --git a/2019/poikola/index.html b/2019/poikola/index.html
index 007bef721..a1f285933 100644
--- a/2019/poikola/index.html
+++ b/2019/poikola/index.html
@@ -353,6 +353,7 @@ interruptions during the coding phase.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2019/yang/.tar.tstamp b/2019/yang/.tar.tstamp
index 2d4cd5acc..65adb5277 100644
--- a/2019/yang/.tar.tstamp
+++ b/2019/yang/.tar.tstamp
@@ -1 +1 @@
-1711177864
+1711431304
diff --git a/2019/yang/2019_yang.tar.bz2 b/2019/yang/2019_yang.tar.bz2
index 2a0065634..aa7b194ef 100644
Binary files a/2019/yang/2019_yang.tar.bz2 and b/2019/yang/2019_yang.tar.bz2 differ
diff --git a/2019/yang/index.html b/2019/yang/index.html
index 81dec13a2..88a6b165a 100644
--- a/2019/yang/index.html
+++ b/2019/yang/index.html
@@ -303,6 +303,7 @@ the same name, the character who is highly skilled in writing letters.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/.tar.tstamp b/2020/.tar.tstamp
index ff0d0aa39..362577ae7 100644
--- a/2020/.tar.tstamp
+++ b/2020/.tar.tstamp
@@ -1 +1 @@
-1711177866
+1711431306
diff --git a/2020/burton/.tar.tstamp b/2020/burton/.tar.tstamp
index 2d4cd5acc..65adb5277 100644
--- a/2020/burton/.tar.tstamp
+++ b/2020/burton/.tar.tstamp
@@ -1 +1 @@
-1711177864
+1711431304
diff --git a/2020/burton/2020_burton.tar.bz2 b/2020/burton/2020_burton.tar.bz2
index 9395b0a85..c088fd45a 100644
Binary files a/2020/burton/2020_burton.tar.bz2 and b/2020/burton/2020_burton.tar.bz2 differ
diff --git a/2020/burton/index.html b/2020/burton/index.html
index 352186206..f87545235 100644
--- a/2020/burton/index.html
+++ b/2020/burton/index.html
@@ -232,6 +232,7 @@ display strange results with more than one argument.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/carlini/.tar.tstamp b/2020/carlini/.tar.tstamp
index 2d4cd5acc..65adb5277 100644
--- a/2020/carlini/.tar.tstamp
+++ b/2020/carlini/.tar.tstamp
@@ -1 +1 @@
-1711177864
+1711431304
diff --git a/2020/carlini/2020_carlini.tar.bz2 b/2020/carlini/2020_carlini.tar.bz2
index 7d57dfdc2..7fb6d0758 100644
Binary files a/2020/carlini/2020_carlini.tar.bz2 and b/2020/carlini/2020_carlini.tar.bz2 differ
diff --git a/2020/carlini/index.html b/2020/carlini/index.html
index d2def4050..e6902cea9 100644
--- a/2020/carlini/index.html
+++ b/2020/carlini/index.html
@@ -357,6 +357,7 @@ string so that it returns right away without blocking. The first time the
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/endoh1/.tar.tstamp b/2020/endoh1/.tar.tstamp
index 12c99d807..65adb5277 100644
--- a/2020/endoh1/.tar.tstamp
+++ b/2020/endoh1/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431304
diff --git a/2020/endoh1/2020_endoh1.tar.bz2 b/2020/endoh1/2020_endoh1.tar.bz2
index 0313b7019..1938ea4a8 100644
Binary files a/2020/endoh1/2020_endoh1.tar.bz2 and b/2020/endoh1/2020_endoh1.tar.bz2 differ
diff --git a/2020/endoh1/index.html b/2020/endoh1/index.html
index ae0d7c4ac..a26a0e788 100644
--- a/2020/endoh1/index.html
+++ b/2020/endoh1/index.html
@@ -315,6 +315,7 @@ code a little to pretend to use the return value of fscanf(3).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/endoh2/.tar.tstamp b/2020/endoh2/.tar.tstamp
index 12c99d807..65adb5277 100644
--- a/2020/endoh2/.tar.tstamp
+++ b/2020/endoh2/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431304
diff --git a/2020/endoh2/2020_endoh2.tar.bz2 b/2020/endoh2/2020_endoh2.tar.bz2
index 110971f23..ae884da32 100644
Binary files a/2020/endoh2/2020_endoh2.tar.bz2 and b/2020/endoh2/2020_endoh2.tar.bz2 differ
diff --git a/2020/endoh2/index.html b/2020/endoh2/index.html
index 43003970c..884045dbd 100644
--- a/2020/endoh2/index.html
+++ b/2020/endoh2/index.html
@@ -209,6 +209,7 @@ render for a larger terminal window? How about adding more glyphs?
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
spoiler/spoiler.md - markdown source for spoiler/spoiler.html
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/endoh3/.tar.tstamp b/2020/endoh3/.tar.tstamp
index 12c99d807..65adb5277 100644
--- a/2020/endoh3/.tar.tstamp
+++ b/2020/endoh3/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431304
diff --git a/2020/endoh3/2020_endoh3.tar.bz2 b/2020/endoh3/2020_endoh3.tar.bz2
index db4b8ef67..09e2a55e5 100644
Binary files a/2020/endoh3/2020_endoh3.tar.bz2 and b/2020/endoh3/2020_endoh3.tar.bz2 differ
diff --git a/2020/endoh3/index.html b/2020/endoh3/index.html
index 813eb2fca..fd7be419d 100644
--- a/2020/endoh3/index.html
+++ b/2020/endoh3/index.html
@@ -206,6 +206,7 @@ time might depend on what time it is.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/ferguson1/.tar.tstamp b/2020/ferguson1/.tar.tstamp
index 6c404165c..117e7b088 100644
--- a/2020/ferguson1/.tar.tstamp
+++ b/2020/ferguson1/.tar.tstamp
@@ -1 +1 @@
-1711177616
+1711431305
diff --git a/2020/ferguson1/2020_ferguson1.tar.bz2 b/2020/ferguson1/2020_ferguson1.tar.bz2
index 851c290d9..1d8a996d4 100644
Binary files a/2020/ferguson1/2020_ferguson1.tar.bz2 and b/2020/ferguson1/2020_ferguson1.tar.bz2 differ
diff --git a/2020/ferguson1/index.html b/2020/ferguson1/index.html
index 1293cf42a..155076e2a 100644
--- a/2020/ferguson1/index.html
+++ b/2020/ferguson1/index.html
@@ -659,6 +659,7 @@ email but I’m more likely to respond to mastodon messages.
ioccc-cake.jpg - image for chocolate cake
.path - directory path from top directory
spoilers.md - markdown source for spoilers.html
+.tar.tstamp - timestamp of compressed tarball formation
terminals.md - markdown source for terminals.html
troubleshooting.md - markdown source for troubleshooting.html
diff --git a/2020/ferguson2/.tar.tstamp b/2020/ferguson2/.tar.tstamp
index 12c99d807..117e7b088 100644
--- a/2020/ferguson2/.tar.tstamp
+++ b/2020/ferguson2/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431305
diff --git a/2020/ferguson2/2020_ferguson2.tar.bz2 b/2020/ferguson2/2020_ferguson2.tar.bz2
index 3a69b1efc..365ba9bc9 100644
Binary files a/2020/ferguson2/2020_ferguson2.tar.bz2 and b/2020/ferguson2/2020_ferguson2.tar.bz2 differ
diff --git a/2020/ferguson2/index.html b/2020/ferguson2/index.html
index 72c6fb804..7f53a07f5 100644
--- a/2020/ferguson2/index.html
+++ b/2020/ferguson2/index.html
@@ -845,6 +845,7 @@ email but I’m more likely to respond to mastodon messages.
obfuscation.md - markdown source for obfuscation.html
.path - directory path from top directory
recode.md - markdown source for recode.html
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/giles/.tar.tstamp b/2020/giles/.tar.tstamp
index 12c99d807..117e7b088 100644
--- a/2020/giles/.tar.tstamp
+++ b/2020/giles/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431305
diff --git a/2020/giles/2020_giles.tar.bz2 b/2020/giles/2020_giles.tar.bz2
index bc56d3899..ec8f6ccd5 100644
Binary files a/2020/giles/2020_giles.tar.bz2 and b/2020/giles/2020_giles.tar.bz2 differ
diff --git a/2020/giles/index.html b/2020/giles/index.html
index 429590268..33c239ab9 100644
--- a/2020/giles/index.html
+++ b/2020/giles/index.html
@@ -296,6 +296,7 @@ single pure sine wave.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/kurdyukov1/.tar.tstamp b/2020/kurdyukov1/.tar.tstamp
index 12c99d807..117e7b088 100644
--- a/2020/kurdyukov1/.tar.tstamp
+++ b/2020/kurdyukov1/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431305
diff --git a/2020/kurdyukov1/2020_kurdyukov1.tar.bz2 b/2020/kurdyukov1/2020_kurdyukov1.tar.bz2
index 8d17b569b..080e87c6f 100644
Binary files a/2020/kurdyukov1/2020_kurdyukov1.tar.bz2 and b/2020/kurdyukov1/2020_kurdyukov1.tar.bz2 differ
diff --git a/2020/kurdyukov1/index.html b/2020/kurdyukov1/index.html
index eb0c5fd89..80b2c8d68 100644
--- a/2020/kurdyukov1/index.html
+++ b/2020/kurdyukov1/index.html
@@ -252,6 +252,7 @@ the binary code is larger due to fewer registers and lack of 64-bit multiply..entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/kurdyukov2/.tar.tstamp b/2020/kurdyukov2/.tar.tstamp
index 12c99d807..117e7b088 100644
--- a/2020/kurdyukov2/.tar.tstamp
+++ b/2020/kurdyukov2/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431305
diff --git a/2020/kurdyukov2/2020_kurdyukov2.tar.bz2 b/2020/kurdyukov2/2020_kurdyukov2.tar.bz2
index 657ad2647..f0718249a 100644
Binary files a/2020/kurdyukov2/2020_kurdyukov2.tar.bz2 and b/2020/kurdyukov2/2020_kurdyukov2.tar.bz2 differ
diff --git a/2020/kurdyukov2/index.html b/2020/kurdyukov2/index.html
index 57e36aa77..8052c2317 100644
--- a/2020/kurdyukov2/index.html
+++ b/2020/kurdyukov2/index.html
@@ -248,6 +248,7 @@ For instance after running the command suggested by the judges:
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/kurdyukov3/.tar.tstamp b/2020/kurdyukov3/.tar.tstamp
index 12c99d807..117e7b088 100644
--- a/2020/kurdyukov3/.tar.tstamp
+++ b/2020/kurdyukov3/.tar.tstamp
@@ -1 +1 @@
-1711177865
+1711431305
diff --git a/2020/kurdyukov3/2020_kurdyukov3.tar.bz2 b/2020/kurdyukov3/2020_kurdyukov3.tar.bz2
index bea34379c..86a1b2ab8 100644
Binary files a/2020/kurdyukov3/2020_kurdyukov3.tar.bz2 and b/2020/kurdyukov3/2020_kurdyukov3.tar.bz2 differ
diff --git a/2020/kurdyukov3/index.html b/2020/kurdyukov3/index.html
index 822dd1c6f..27dca7963 100644
--- a/2020/kurdyukov3/index.html
+++ b/2020/kurdyukov3/index.html
@@ -211,6 +211,7 @@ as these letters are encoded in the higher part of the single-byte character set
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/kurdyukov4/.tar.tstamp b/2020/kurdyukov4/.tar.tstamp
index ff0d0aa39..117e7b088 100644
--- a/2020/kurdyukov4/.tar.tstamp
+++ b/2020/kurdyukov4/.tar.tstamp
@@ -1 +1 @@
-1711177866
+1711431305
diff --git a/2020/kurdyukov4/2020_kurdyukov4.tar.bz2 b/2020/kurdyukov4/2020_kurdyukov4.tar.bz2
index ba5c7017b..69185c9ad 100644
Binary files a/2020/kurdyukov4/2020_kurdyukov4.tar.bz2 and b/2020/kurdyukov4/2020_kurdyukov4.tar.bz2 differ
diff --git a/2020/kurdyukov4/index.html b/2020/kurdyukov4/index.html
index 696b36814..457d2c4b0 100644
--- a/2020/kurdyukov4/index.html
+++ b/2020/kurdyukov4/index.html
@@ -274,6 +274,7 @@ ster lieutenant comes. Master lieutenant, pray you,-- CORIOLANUS: What's tha
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/otterness/.tar.tstamp b/2020/otterness/.tar.tstamp
index ff0d0aa39..362577ae7 100644
--- a/2020/otterness/.tar.tstamp
+++ b/2020/otterness/.tar.tstamp
@@ -1 +1 @@
-1711177866
+1711431306
diff --git a/2020/otterness/2020_otterness.tar.bz2 b/2020/otterness/2020_otterness.tar.bz2
index a05ccb85a..6412e4cbc 100644
Binary files a/2020/otterness/2020_otterness.tar.bz2 and b/2020/otterness/2020_otterness.tar.bz2 differ
diff --git a/2020/otterness/index.html b/2020/otterness/index.html
index 770fc5f86..2fd0f7b9d 100644
--- a/2020/otterness/index.html
+++ b/2020/otterness/index.html
@@ -279,6 +279,7 @@ very thoroughly).
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/tsoj/.tar.tstamp b/2020/tsoj/.tar.tstamp
index ff0d0aa39..362577ae7 100644
--- a/2020/tsoj/.tar.tstamp
+++ b/2020/tsoj/.tar.tstamp
@@ -1 +1 @@
-1711177866
+1711431306
diff --git a/2020/tsoj/2020_tsoj.tar.bz2 b/2020/tsoj/2020_tsoj.tar.bz2
index 159937c4e..eb6a01ec1 100644
Binary files a/2020/tsoj/2020_tsoj.tar.bz2 and b/2020/tsoj/2020_tsoj.tar.bz2 differ
diff --git a/2020/tsoj/index.html b/2020/tsoj/index.html
index 347a695f6..9d859f0c2 100644
--- a/2020/tsoj/index.html
+++ b/2020/tsoj/index.html
@@ -265,6 +265,7 @@ it.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/2020/yang/.tar.tstamp b/2020/yang/.tar.tstamp
index ff0d0aa39..362577ae7 100644
--- a/2020/yang/.tar.tstamp
+++ b/2020/yang/.tar.tstamp
@@ -1 +1 @@
-1711177866
+1711431306
diff --git a/2020/yang/2020_yang.tar.bz2 b/2020/yang/2020_yang.tar.bz2
index a91af7cf5..3e3535e65 100644
Binary files a/2020/yang/2020_yang.tar.bz2 and b/2020/yang/2020_yang.tar.bz2 differ
diff --git a/2020/yang/index.html b/2020/yang/index.html
index a7fd998e2..936439e44 100644
--- a/2020/yang/index.html
+++ b/2020/yang/index.html
@@ -268,6 +268,7 @@ then compile it with a c++ compiler of your choice.
.entry.json - description of entry in JSON
.gitignore - list of files that should not be committed under git
.path - directory path from top directory
+.tar.tstamp - timestamp of compressed tarball formation
diff --git a/Makefile b/Makefile
index dcd3e7e1d..d0b18b949 100644
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,9 @@ GEN_TOP_HTML= bin/gen-top-html.sh
GEN_OTHER_HTML= bin/gen-other-html.sh
README2INDEX= bin/readme2index.sh
QUICK_README2INDEX= bin/quick-readme2index.sh
+UNTAR_ENTRY= bin/untar-entry.sh
+UNTAR_YEAR= bin/untar-year.sh
+UNTAR_ALL= bin/untar-all.sh
TAR_ENTRY= bin/tar-entry.sh
TAR_YEAR= bin/tar-year.sh
TAR_ALL= bin/tar-all.sh
@@ -241,6 +244,7 @@ indent.c:
.PHONY: help genpath genfilelist verify_entry_files gen_authors gen_location gen_years \
entry_index gen_top_html thanks gen_other_html quick_entry_index \
gen_year_index quick_www www \
+ untar_entry_tarball untar_year_tarball untar_all_tarball \
form_entry_tarball form_year_tarball form_all_tarball tar \
gen_status gen_sitemap sitemap timestamp update
@@ -265,6 +269,10 @@ help:
@echo make quick_www
@echo make www
@echo
+ @echo make untar_entry_tarball
+ @echo make untar_year_tarball
+ @echo make untar_all_tarball
+ @echo
@echo make form_entry_tarball
@echo make form_year_tarball
@echo make form_all_tarball
@@ -441,6 +449,30 @@ www:
${MAKE} entry_index
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+# untar all entry tarballs
+#
+untar_entry_tarball: ${ALL_RUN}
+ @echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
+ ${ALL_RUN} -v 3 ${UNTAR_ENTRY} -v 1
+ ${MAKE} verify_entry_files
+ @echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+
+# untar all entry tarballs
+#
+untar_year_tarball: ${ALL_RUN}
+ @echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
+ ${ALL_YEARS} -v 3 ${UNTAR_YEAR} -v 1
+ ${MAKE} verify_entry_files
+ @echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+
+# untar all entry tarballs
+#
+untar_all_tarball: ${ALL_RUN}
+ @echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
+ ${UNTAR_ALL} -v 1
+ ${MAKE} verify_entry_files
+ @echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+
# form all entry compressed tarballs
#
form_entry_tarball: ${ALL_RUN} ${TAR_ENTRY}
diff --git a/bin/README.md b/bin/README.md
index 97b8070c4..2d78fa3c6 100644
--- a/bin/README.md
+++ b/bin/README.md
@@ -367,6 +367,23 @@ bin/all-years.sh -v 3 bin/tar-year.sh -v 1 -W
```
+## [untar-entry.sh](untar-entry.sh)
+
+Untar an entry's a compressed tarball.
+
+Usage:
+
+```sh
+bin/untar-entry.sh -v 1 YYYY/dir
+```
+
+Suggested usage:
+
+```sh
+bin/all-run.sh -v 3 bin/untar-entry.sh -v 1
+```
+
+
# How IOCCC HTML content is built
The [md2html.sh](md2html.sh) tool is the primary tool that
diff --git a/bin/index.html b/bin/index.html
index 3cab1e0e4..439def031 100644
--- a/bin/index.html
+++ b/bin/index.html
@@ -276,6 +276,12 @@ We sort with lines starting with ! fourth.
bin/tar-year.sh -v 1 YYYY
Suggested usage:
bin/all-years.sh -v 3 bin/tar-year.sh -v 1 -W
+untar-entry.sh
+Untar an entry’s a compressed tarball.
+Usage:
+bin/untar-entry.sh -v 1 YYYY/dir
+Suggested usage:
+bin/all-run.sh -v 3 bin/untar-entry.sh -v 1
How IOCCC HTML content is built
The md2html.sh tool is the primary tool that
is used to form all IOCCC related HTML pages for the official IOCCC web
@@ -292,16 +298,16 @@ built uses, by default, files from the inc directory
the file name form:
*.default.html
By using command line options of the form:
--H phase=name
+-H phase=name
where phase is the name of an HTML phase,
a non-default file may be used. For example:
--H topnav=up2index
+-H topnav=up2index
will cause inc/topnav.up2index.html
instead of inc/topnav.default.html to be
used during the topnav HTML phase.
If name is dot (i.e., .), then the given HTML phase is skipped.
For example:
--H footer=.
+-H footer=.
will cause no HTML content to be produced during the footer HTML phase.
HTML phases
The following HTML phase files are used to build HTML content:
diff --git a/bin/tar-entry.sh b/bin/tar-entry.sh
index aa2a67fdc..f4df0fd68 100755
--- a/bin/tar-entry.sh
+++ b/bin/tar-entry.sh
@@ -83,7 +83,7 @@ shopt -s globstar # enable ** to match all files and zero or more directories an
# set variables referenced in the usage message
#
-export VERSION="1.2 2024-03-22"
+export VERSION="1.3 2024-03-25"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
@@ -338,10 +338,6 @@ if [[ ! -r $ENTRY_JSON ]]; then
exit 5
fi
-# determine the name of our tarball
-#
-export TARBALL="$YYYY_DIR/$ENTRY_ID.tar.bz2"
-
# verify we have our awk tool
#
export FILELIST_ENTRY_JSON_AWK="$BIN_DIR/filelist.entry.json.awk"
@@ -462,33 +458,13 @@ if [[ ! -s $DOT_TAR_TSTAMP ]]; then
exit 6
fi
-# verify that the last tar timestamp in the .tar.tstamp file is an integer > 0
+# determine the name of our tarball
#
-export LAST_TAR_TSTAMP
-LAST_TAR_TSTAMP=$(< "$DOT_TAR_TSTAMP")
-if [[ $LAST_TAR_TSTAMP =~ ^-?[0-9]+$ ]]; then
- if [[ $LAST_TAR_TSTAMP -le 0 ]]; then
- echo "$0: ERROR: entry .tar.tstamp: $DOT_TAR_TSTAMP contents must be an integer > 0: $LAST_TAR_TSTAMP" 1>&2
- exit 6
- fi
-else
- echo "$0: ERROR: entry .tar.tstamp: $DOT_TAR_TSTAMP contents is not an integer: $LAST_TAR_TSTAMP" 1>&2
- exit 6
-fi
-
-# convert the last tar timestamp into a date string
+# TARBALL - the same of the compressed tarball to verify and if needed re-build
+# REBUILD_TARBALL - if non-empty, we need to re-build TARBALL and update tar timestamps
#
-export LAST_TAR_DATE
-LAST_TAR_DATE=$(TZ=UTC date -r "$LAST_TAR_TSTAMP")
-status="$?"
-if [[ $status -ne 0 ]]; then
- echo "$0: ERROR: TZ=UTC date -r $LAST_TAR_TSTAMP failed, error: $status" 1>&2
- exit 6
-fi
-if [[ -z $LAST_TAR_DATE ]]; then
- echo "$0: ERROR: TZ=UTC date -r $LAST_TAR_TSTAMP produced an empty string" 1>&2
- exit 6
-fi
+export TARBALL="$YYYY_DIR/$ENTRY_ID.tar.bz2"
+export REBUILD_TARBALL=
# parameter debugging
#
@@ -513,15 +489,14 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
- echo "$0: debug[3]: TARBALL=$TARBALL" 1>&2
echo "$0: debug[3]: FILELIST_ENTRY_JSON_AWK=$FILELIST_ENTRY_JSON_AWK" 1>&2
echo "$0: debug[3]: IOCCC_CSS=$IOCCC_CSS" 1>&2
echo "$0: debug[3]: VAR_MK=$VAR_MK" 1>&2
echo "$0: debug[3]: TOP_TAR_TSTAMP=$TOP_TAR_TSTAMP" 1>&2
echo "$0: debug[3]: YEAR_TAR_TSTAMP=$YEAR_TAR_TSTAMP" 1>&2
echo "$0: debug[3]: DOT_TAR_TSTAMP=$DOT_TAR_TSTAMP" 1>&2
- echo "$0: debug[3]: LAST_TAR_TSTAMP=$LAST_TAR_TSTAMP" 1>&2
- echo "$0: debug[3]: LAST_TAR_DATE=$LAST_TAR_DATE" 1>&2
+ echo "$0: debug[3]: TARBALL=$TARBALL" 1>&2
+ echo "$0: debug[3]: REBUILD_TARBALL=$REBUILD_TARBALL" 1>&2
fi
# If -N, time to exit
@@ -533,9 +508,40 @@ if [[ -n $DO_NOT_PROCESS ]]; then
exit 0
fi
+# test - if needed - if the tarball is a non-empty writable file
+#
+if [[ -z $REBUILD_TARBALL && ! -e $TARBALL ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "tarball does not exist: $TARBALL" 1>&2
+ fi
+fi
+if [[ -z $REBUILD_TARBALL && ! -f $TARBALL ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "tarball is not a file: $TARBALL" 1>&2
+ fi
+fi
+if [[ -z $REBUILD_TARBALL && ! -w $TARBALL ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "tarball is not a writable file: $TARBALL" 1>&2
+ fi
+fi
+if [[ -z $REBUILD_TARBALL && ! -s $TARBALL ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "tarball is not a non-empty writable file: $TARBALL" 1>&2
+ fi
+fi
+
# create a temporary file manifest list
#
-TMP_MANIFEST_LIST=".$NAME.$$.manifest.list"
+export TMP_MANIFEST_LIST=".$NAME.$$.manifest.list"
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: temporary file manifest list: $TMP_MANIFEST_LIST" 1>&2
fi
@@ -557,24 +563,24 @@ fi
# create a temporary sort list of files to tar
#
-TMP_TAR_LIST=".$NAME.$$.tar.list"
+export TMP_FILES_TO_TAR=".$NAME.$$.tar.list"
if [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: temporary file tar list: $TMP_TAR_LIST" 1>&2
+ echo "$0: debug[3]: temporary of files to tar: $TMP_FILES_TO_TAR" 1>&2
fi
if [[ -z $NOOP ]]; then
- trap 'rm -f $TMP_MANIFEST_LIST $TMP_TAR_LIST; exit' 0 1 2 3 15
- rm -f "$TMP_TAR_LIST"
- if [[ -e $TMP_TAR_LIST ]]; then
- echo "$0: ERROR: cannot remove temporary file tar list: $TMP_TAR_LIST" 1>&2
+ trap 'rm -f $TMP_MANIFEST_LIST $TMP_FILES_TO_TAR; exit' 0 1 2 3 15
+ rm -f "$TMP_FILES_TO_TAR"
+ if [[ -e $TMP_FILES_TO_TAR ]]; then
+ echo "$0: ERROR: cannot remove temporary of files to tar: $TMP_FILES_TO_TAR" 1>&2
exit 12
fi
- :> "$TMP_TAR_LIST"
- if [[ ! -e $TMP_TAR_LIST ]]; then
- echo "$0: ERROR: cannot create temporary file tar list: $TMP_TAR_LIST" 1>&2
+ :> "$TMP_FILES_TO_TAR"
+ if [[ ! -e $TMP_FILES_TO_TAR ]]; then
+ echo "$0: ERROR: cannot create temporary of files to tar: $TMP_FILES_TO_TAR" 1>&2
exit 13
fi
elif [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: because of -n, temporary file tar list is not used: $TMP_TAR_LIST" 1>&2
+ echo "$0: debug[3]: because of -n, temporary of files to tar is not used: $TMP_FILES_TO_TAR" 1>&2
fi
# create a temporary exit code
@@ -582,12 +588,12 @@ fi
# It is a pain to set the EXIT_CODE deep inside a loop, so we write the EXIT_CODE into a file
# and read the file (setting EXIT_CODE again) after the loop. A hack, but good enough for our needs.
#
-TMP_EXIT_CODE=".$NAME.$$.exit.code"
+export TMP_EXIT_CODE=".$NAME.$$.exit.code"
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: temporary exit code: $TMP_EXIT_CODE" 1>&2
fi
if [[ -z $NOOP ]]; then
- trap 'rm -f $TMP_MANIFEST_LIST $TMP_TAR_LIST $TMP_EXIT_CODE; exit' 0 1 2 3 15
+ trap 'rm -f $TMP_MANIFEST_LIST $TMP_FILES_TO_TAR $TMP_EXIT_CODE; exit' 0 1 2 3 15
rm -f "$TMP_EXIT_CODE"
if [[ -e $TMP_EXIT_CODE ]]; then
echo "$0: ERROR: cannot remove temporary exit code: $TMP_EXIT_CODE" 1>&2
@@ -602,28 +608,6 @@ elif [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: because of -n, temporary exit code is not used: $TMP_EXIT_CODE" 1>&2
fi
-# create a temporary tarball
-#
-TMP_TARBALL=".$NAME.$$.tar.bz2"
-if [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: temporary tarball: $TMP_TARBALL" 1>&2
-fi
-if [[ -z $NOOP ]]; then
- trap 'rm -f $TMP_MANIFEST_LIST $TMP_TAR_LIST $TMP_EXIT_CODE $TMP_TARBALL; exit' 0 1 2 3 15
- rm -f "$TMP_TARBALL"
- if [[ -e $TMP_TARBALL ]]; then
- echo "$0: ERROR: cannot remove temporary tarball: $TMP_TARBALL" 1>&2
- exit 16
- fi
- :> "$TMP_TARBALL"
- if [[ ! -e $TMP_TARBALL ]]; then
- echo "$0: ERROR: cannot create temporary tarball: $TMP_TARBALL" 1>&2
- exit 17
- fi
-elif [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: because of -n, temporary tarball is not used: $TMP_TARBALL" 1>&2
-fi
-
# generate sorted list of entry files from the entry's manifest
#
# We also add ioccc.css and var.mk from the top level.
@@ -668,16 +652,16 @@ if [[ -z $NOOP ]]; then
else
echo "$file"
fi
- done > "$TMP_TAR_LIST"
+ done > "$TMP_FILES_TO_TAR"
if [[ $V_FLAG -ge 7 ]]; then
- echo "$0: debug[7]: list of files to tar start below" 1>&2
- cat "$TMP_TAR_LIST" 1>&2
+ echo "$0: debug[7]: list of files to tar starts below" 1>&2
+ cat "$TMP_FILES_TO_TAR" 1>&2
echo "$0: debug[7]: list of files to tar ends above" 1>&2
fi
elif [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: because of -n, temporary file tar list was not formed: $TMP_MANIFEST_LIST" 1>&2
+ echo "$0: debug[3]: because of -n, temporary of files to tar was not formed: $TMP_MANIFEST_LIST" 1>&2
fi
-if [[ ! -s "$TMP_TAR_LIST" ]]; then
+if [[ ! -s "$TMP_FILES_TO_TAR" ]]; then
echo "$0: ERROR: no files found to tar for: $ENTRY_JSON" 1>&2
exit 1
fi
@@ -687,167 +671,179 @@ if [[ -z $EXIT_CODE ]]; then
exit 18
fi
-# form the tarball
-#
-# We use gnu tar to form the bzip2 compressed tarball with careful arguments
-# so that the resulting tarball is the same, byte for byte.
+# create a temporary list of files found in the tarball
#
+export TMP_TARBALL_LIST=".$NAME.$$.tarball.list"
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: temporary of files in the tarball: $TARBALL: $TMP_TARBALL_LIST" 1>&2
+fi
if [[ -z $NOOP ]]; then
-
- # case: form the tarball verbosely if -v 5 or more
- #
- if [[ $V_FLAG -ge 5 ]]; then
- echo "$0: debug[5]: about to execute:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner --totals" \
- "--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcvf $TMP_TARBALL < $TMP_TAR_LIST" 1>&2
- "$GTAR_TOOL" --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name \
- --owner=501 --group=20 --numeric-owner --totals \
- --pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime' \
- --mtime="$LAST_TAR_DATE" -jcvf "$TMP_TARBALL" < "$TMP_TAR_LIST"
- status="$?"
- if [[ $status -ne 0 ]]; then
- echo "$0: ERROR:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner --totals" \
- "--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcvf $TMP_TARBALL < $TMP_TAR_LIST failed, error: $status" 1>&2
- exit 8
- fi
-
- # case: form the tarball silently
- #
- else
- "$GTAR_TOOL" --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name \
- --owner=501 --group=20 --numeric-owner \
- --pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime' \
- --mtime="$LAST_TAR_DATE" -jcf "$TMP_TARBALL" < "$TMP_TAR_LIST"
- status="$?"
- if [[ $status -ne 0 ]]; then
- echo "$0: ERROR:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner" \
- "--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcf $TMP_TARBALL < $TMP_TAR_LIST failed, error: $status" 1>&2
- exit 8
- fi
+ trap 'rm -f $TMP_MANIFEST_LIST $TMP_FILES_TO_TAR $TMP_EXIT_CODE $TMP_TARBALL_LIST; exit' 0 1 2 3 15
+ rm -f "$TMP_TARBALL_LIST"
+ if [[ -e $TMP_TARBALL_LIST ]]; then
+ echo "$0: ERROR: cannot remove temporary of files in the tarball: $TARBALL: $TMP_TARBALL_LIST" 1>&2
+ exit 16
fi
-
- # verify the tarball is not empty
- #
- if [[ ! -s $TMP_TARBALL ]]; then
- echo "$0: ERROR: tarball is missing is empty: $TMP_TARBALL" 1>&2
- exit 8
+ :> "$TMP_TARBALL_LIST"
+ if [[ ! -e $TMP_TARBALL_LIST ]]; then
+ echo "$0: ERROR: cannot create temporary of files in the tarball: $TARBALL: $TMP_TARBALL_LIST" 1>&2
+ exit 17
fi
-
-# case: -n
-#
-elif [[ $V_FLAG -ge 5 ]]; then
- echo "$0: debug[6]: because of -n, did not execute:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner --totals" \
- "--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcvf $TMP_TARBALL < $TMP_TAR_LIST" 1>&2
+elif [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: because of -n, temporary of files in the tarball: $TARBALL is not used: $TMP_TARBALL_LIST" 1>&2
fi
-# update the tarball only if the tarball contents is different
+# create a temporary tarball
#
+TMP_TARBALL=".$NAME.$$.tar.bz2"
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: temporary tarball: $TMP_TARBALL" 1>&2
+fi
if [[ -z $NOOP ]]; then
- if cmp -s "$TMP_TARBALL" "$TARBALL"; then
+ trap 'rm -f $TMP_MANIFEST_LIST $TMP_FILES_TO_TAR $TMP_EXIT_CODE $TMP_TARBALL_LIST $TMP_TARBALL; exit' 0 1 2 3 15
+ rm -f "$TMP_TARBALL"
+ if [[ -e $TMP_TARBALL ]]; then
+ echo "$0: ERROR: cannot remove temporary tarball: $TMP_TARBALL" 1>&2
+ exit 16
+ fi
+ :> "$TMP_TARBALL"
+ if [[ ! -e $TMP_TARBALL ]]; then
+ echo "$0: ERROR: cannot create temporary tarball: $TMP_TARBALL" 1>&2
+ exit 17
+ fi
+elif [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: because of -n, temporary tarball is not used: $TMP_TARBALL" 1>&2
+fi
- # case: tarball did not change
- #
- if [[ $V_FLAG -ge 5 ]]; then
- echo "$0: debug[5]: file did not change: $TARBALL" 1>&2
+# test - if needed - if the sorted list of files from the tarball matches the sorted list of found entry files
+#
+if [[ -z $REBUILD_TARBALL ]]; then
+
+ # form he sorted list of files in the tarball
+ #
+ if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: $GTAR_TOOL -jtf $TARBALL > $TMP_TARBALL_LIST" 1>&2
+ fi
+ "$GTAR_TOOL" -jtf "$TARBALL" > "$TMP_TARBALL_LIST"
+ status="$?"
+ if [[ $status -ne 0 ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "failed to list files in tarball: $TARBALL, error: $status" 1>&2
fi
+ fi
+ if [[ -z $REBUILD_TARBALL ]]; then
+ LC_ALL=C sort -d -u "$TMP_TARBALL_LIST" -o "$TMP_TARBALL_LIST"
+ status="$?"
+ if [[ $status -ne 0 ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "failed to sort list of files in tarball: $TARBALL, error: $status" 1>&2
+ fi
+ else
+ if ! cmp -s "$TMP_TARBALL_LIST" "$TMP_FILES_TO_TAR"; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "sorted list of files in tarball: $TMP_TARBALL_LIST" \
+ "does not match sorted list of found entry files: $TMP_FILES_TO_TAR" 1>&2
+ fi
+ fi
+ fi
+ fi
+fi
- else
+# test - if needed - if the files in the tarball match the contents of the entry's files
+#
+if [[ -z $REBUILD_TARBALL ]]; then
+ if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: TZ=UTC LC_ALL=C $GTAR_TOOL --compare --file=$TARBALL -C . 2>&1 |" \
+ "grep -E -v ': (Uid|Gid|Mod time) differs$'" 1>&2
+ fi
+ TAR_CONTENTS_DIFFERS=$(TZ=UTC LC_ALL=C "$GTAR_TOOL" --compare --file="$TARBALL" -C . 2>&1 | \
+ grep -E -v ': (Uid|Gid|Mod time) differs$')
+ if [[ -n $TAR_CONTENTS_DIFFERS ]]; then
+ REBUILD_TARBALL="true"
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: REBUILD_TARBALL set to: $REBUILD_TARBALL," \
+ "contents of tarball: $TARBALL differs from contents of entry: $YYYY_DIR" 1>&2
+ fi
+ if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: tar differences starts below" 1>&2
+ echo "$TAR_CONTENTS_DIFFERS" 1>&2
+ echo "$0: debug[3]: tar differences ends above" 1>&2
+ fi
+ fi
+fi
+
+# test - if needed - update the tarball
+#
+# We use gnu tar to form the bzip2 compressed tarball with careful arguments
+# so that the resulting tarball is consistent. There are systems for which the
+# tarball won't be the same. However we do not need that. All of the tests
+# above are such that if $REBUILD_TARBALL is not empty, then the tarball needs
+# to updated regardless.
+#
+if [[ -n $REBUILD_TARBALL ]]; then
+
+ if [[ -z $NOOP ]]; then
# update .tar.tstamp with the timestamp of now
#
- LAST_TAR_TSTAMP=$(TZ=UTZ date '+%s')
+ TAR_TIMESTAMP=$(TZ=UTZ date '+%s')
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: new TZ=UTC date +%s failed, error: $status" 1>&2
exit 8
fi
- if [[ $LAST_TAR_TSTAMP =~ ^-?[0-9]+$ ]]; then
- if [[ $LAST_TAR_TSTAMP -le 0 ]]; then
- echo "$0: ERROR: new LAST_TAR_TSTAMP is not an integer > 0: $LAST_TAR_TSTAMP" 1>&2
+ if [[ $TAR_TIMESTAMP =~ ^-?[0-9]+$ ]]; then
+ if [[ $TAR_TIMESTAMP -le 0 ]]; then
+ echo "$0: ERROR: new TAR_TIMESTAMP is not an integer > 0: $TAR_TIMESTAMP" 1>&2
exit 8
fi
else
- echo "$0: ERROR: new LAST_TAR_TSTAMP is not an integer: $LAST_TAR_TSTAMP" 1>&2
+ echo "$0: ERROR: new TAR_TIMESTAMP is not an integer: $TAR_TIMESTAMP" 1>&2
exit 8
fi
- # report new timestamp
+ # case: form the tarball verbosely if -v 5 or more
#
- if [[ $V_FLAG -ge 1 ]]; then
- echo "$0: debug[1]: new LAST_TAR_TSTAMP=$LAST_TAR_TSTAMP" 1>&2
- echo "$0: debug[1]: new LAST_TAR_DATE=$LAST_TAR_DATE" 1>&2
- echo "$0: debug[1]: updating: $DOT_TAR_TSTAMP" 1>&2
- fi
- echo "$LAST_TAR_TSTAMP" > "$DOT_TAR_TSTAMP"
- if [[ $V_FLAG -ge 1 ]]; then
- echo "$0: debug[1]: updating: $YEAR_TAR_TSTAMP" 1>&2
- fi
- echo "$LAST_TAR_TSTAMP" > "$YEAR_TAR_TSTAMP"
- if [[ $V_FLAG -ge 1 ]]; then
- echo "$0: debug[1]: updating: $TOP_TAR_TSTAMP" 1>&2
- fi
- echo "$LAST_TAR_TSTAMP" > "$TOP_TAR_TSTAMP"
-
- # convert the new LAST_TAR_TSTAMP into a date string
- #
- LAST_TAR_DATE=$(TZ=UTC date -r "$LAST_TAR_TSTAMP")
- status="$?"
- if [[ $status -ne 0 ]]; then
- echo "$0: ERROR: new date -r $LAST_TAR_TSTAMP failed, error: $status" 1>&2
- exit 8
- fi
- if [[ -z $LAST_TAR_DATE ]]; then
- echo "$0: ERROR: new date -r $LAST_TAR_TSTAMP produced an empty string" 1>&2
- exit 8
- fi
-
- # case: re-form the tarball verbosely if -v 3 or more
- #
- if [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: about to re-execute:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner --totals" \
+ if [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: about to execute:" \
+ "TZ=UTC LC_ALL=C $GTAR_TOOL --files-from=- --no-acls --no-xattrs --no-selinux --sort=name" \
+ "--owner=501 --group=20 --numeric-owner --mtime=@${TAR_TIMESTAMP}" \
"--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcvf $TMP_TARBALL < $TMP_TAR_LIST" 1>&2
- "$GTAR_TOOL" --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name \
- --owner=501 --group=20 --numeric-owner --totals \
+ "--totals -jcvf $TMP_TARBALL < $TMP_FILES_TO_TAR" 1>&2
+ TZ=UTC LC_ALL=C "$GTAR_TOOL" --files-from=- --no-acls --no-xattrs --no-selinux --sort=name \
+ --owner=501 --group=20 --numeric-owner --mtime="@${TAR_TIMESTAMP}" \
--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime' \
- --mtime="$LAST_TAR_DATE" -jcvf "$TMP_TARBALL" < "$TMP_TAR_LIST"
+ --totals -jcvf "$TMP_TARBALL" < "$TMP_FILES_TO_TAR"
status="$?"
if [[ $status -ne 0 ]]; then
- echo "$0: ERROR: 2nd:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner --totals" \
+ echo "$0: ERROR:" \
+ "TZ=UTC LC_ALL=C $GTAR_TOOL --files-from=- --no-acls --no-xattrs --no-selinux --sort=name" \
+ "--owner=501 --group=20 --numeric-owner --mtime=@${TAR_TIMESTAMP}" \
"--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcvf $TMP_TARBALL < $TMP_TAR_LIST failed, error: $status" 1>&2
+ "--totals -jcvf $TMP_TARBALL < $TMP_FILES_TO_TAR failed, error: $status" 1>&2
exit 8
fi
- # case: re-form the tarball silently
+ # case: form the tarball silently
#
else
- "$GTAR_TOOL" --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name \
+ TZ=UTC LC_ALL=C "$GTAR_TOOL" --files-from=- --no-acls --no-xattrs --no-selinux --sort=name \
--owner=501 --group=20 --numeric-owner \
--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime' \
- --mtime="$LAST_TAR_DATE" -jcf "$TMP_TARBALL" < "$TMP_TAR_LIST"
+ --totals -jcf "$TMP_TARBALL" < "$TMP_FILES_TO_TAR"
status="$?"
if [[ $status -ne 0 ]]; then
- echo "$0: ERROR: 2nd:" \
- "$GTAR_TOOL --files-from=- --sparse --no-acls --no-xattrs --no-selinux --sort=name" \
- "--owner=501 --group=20 --numeric-owner" \
+ echo "$0: ERROR:" \
+ "TZ=UTC LC_ALL=C $GTAR_TOOL --files-from=- --no-acls --no-xattrs --no-selinux --sort=name" \
+ "--owner=501 --group=20 --numeric-owner --mtime=@${TAR_TIMESTAMP}" \
"--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
- "--mtime=$LAST_TAR_DATE -jcf $TMP_TARBALL < $TMP_TAR_LIST failed, error: $status" 1>&2
+ "--totals -jcf $TMP_TARBALL < $TMP_FILES_TO_TAR failed, error: $status" 1>&2
exit 8
fi
fi
@@ -855,11 +851,11 @@ if [[ -z $NOOP ]]; then
# verify the tarball is not empty
#
if [[ ! -s $TMP_TARBALL ]]; then
- echo "$0: ERROR: updated tarball is missing is empty: $TMP_TARBALL" 1>&2
+ echo "$0: ERROR: tarball is missing is empty: $TMP_TARBALL" 1>&2
exit 8
fi
- # case: tarball changed, update the file
+ # move temporary tarball into the permanent tarball
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: mv -f -- $TMP_TARBALL $TARBALL" 1>&2
@@ -881,16 +877,47 @@ if [[ -z $NOOP ]]; then
echo "$0: ERROR: not a non-empty index HTML file: $TARBALL" 1>&2
exit 8
fi
+
+ # update tar timestamp
+ #
+ if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: new TAR_TIMESTAMP=$TAR_TIMESTAMP" 1>&2
+ fi
+ echo "$TAR_TIMESTAMP" > "$DOT_TAR_TSTAMP"
+ if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: updating: $YEAR_TAR_TSTAMP" 1>&2
+ fi
+ echo "$TAR_TIMESTAMP" > "$YEAR_TAR_TSTAMP"
+ if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: updating: $TOP_TAR_TSTAMP" 1>&2
+ fi
+ echo "$TAR_TIMESTAMP" > "$TOP_TAR_TSTAMP"
+
+ # case: -n
+ #
+ elif [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: because of -n, did not execute:" \
+ "TZ=UTC LC_ALL=C $GTAR_TOOL --files-from=- --no-acls --no-xattrs --no-selinux --sort=name" \
+ "--owner=501 --group=20 --numeric-owner" \
+ "--pax-option='exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime'" \
+ "--mtime=@${TAR_TIMESTAMP} --totals -jcvf $TMP_TARBALL < $TMP_FILES_TO_TAR" 1>&2
+ echo "$0: debug[5]: because of -n, did not move temporary tarball: $TMP_TARBALL" \
+ "into the permanent tarball: $TARBALL" 1>&2
+ echo "$0: debug[5]: because of -n, did not update $DOT_TAR_TSTAMP nor $YEAR_TAR_TSTAMP nor $TOP_TAR_TSTAMP" 1>&2
fi
+
+# case: tarball update not needed
+#
elif [[ $V_FLAG -ge 3 ]]; then
- echo "$0: debug[3]: because of -n, tarball was not touched: $TARBALL" 1>&2
+ echo "$0: debug[1]: no need to update $TARBALL" 1>&2
fi
# All Done!!! -- Jessica Noll, Age 2
#
if [[ -z $NOOP ]]; then
- rm -f "$TMP_MANIFEST_LIST" "$TMP_TAR_LIST" "$TMP_EXIT_CODE" "$TMP_TARBALL"
+ rm -f "$TMP_MANIFEST_LIST" "$TMP_FILES_TO_TAR" "$TMP_EXIT_CODE" "$TMP_TARBALL_LIST" "$TMP_TARBALL"
elif [[ $V_FLAG -ge 1 ]]; then
- echo "$0: debug[1]: -n disabled execution of: rm -f $TMP_MANIFEST_LIST $TMP_TAR_LIST $TMP_EXIT_CODE $TMP_TARBALL" 1>&2
+ echo "$0: debug[1]: -n disabled execution of: rm -f $TMP_MANIFEST_LIST $TMP_FILES_TO_TAR" \
+ "$TMP_EXIT_CODE $TMP_TARBALL_LIST $TMP_TARBALL" 1>&2
fi
exit "$EXIT_CODE"
diff --git a/bin/untar-entry.sh b/bin/untar-entry.sh
new file mode 100755
index 000000000..5381c319f
--- /dev/null
+++ b/bin/untar-entry.sh
@@ -0,0 +1,402 @@
+#!/usr/bin/env bash
+#
+# untar-entry.sh - untar files belonging to an entry
+#
+# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
+#
+# Permission to use, copy, modify, and distribute this software and
+# its documentation for any purpose and without fee is hereby granted,
+# provided that the above copyright, this permission notice and text
+# this comment, and the disclaimer below appear in all of the following:
+#
+# supporting documentation
+# source copies
+# source works derived from this source
+# binaries derived from this source or from derived source
+#
+# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+#
+# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
+#
+# Share and enjoy! :-)
+
+# firewall - run only with a bash that is version 5.1.8 or later
+#
+# The "/usr/bin/env bash" command must result in using a bash that
+# is version 5.1.8 or later.
+#
+# We could relax this version and insist on version 4.2 or later. Versions
+# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
+# bash version 5.1.8 or later.
+#
+# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
+# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
+# use often use is "version 5.1.8(1)-release" or later. These versions are what
+# we initially tested. We recommend you either upgrade bash or install a newer
+# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
+# that is version 5.1.8 or later.
+#
+# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
+# bash "version 3.2.57(1)-release". That macOS shipped version of bash
+# will NOT work. For users of macOS we recommend you install Homebrew,
+# (see https://brew.sh), and then run "brew install bash" which will
+# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
+# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
+# Homebrew bash is).
+#
+# NOTE: And while MacPorts might work, we noticed a number of subtle differences
+# with some of their ported tools to suggest you might be better off
+# with installing Homebrew (see https://brew.sh). No disrespect is intended
+# to the MacPorts team as they do a commendable job. Nevertheless we ran
+# into enough differences with MacPorts environments to suggest you
+# might find a better experience with this tool under Homebrew instead.
+#
+if [[ -z ${BASH_VERSINFO[0]} ||
+ ${BASH_VERSINFO[0]} -lt 5 ||
+ ${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
+ ${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
+ echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
+ echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
+ echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
+ ""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
+ "finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
+ exit 4
+fi
+
+# setup bash file matching
+#
+# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
+# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
+#
+shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
+shopt -u failglob # disable error message if no matches are found
+shopt -u dotglob # disable matching files starting with .
+shopt -u nocaseglob # disable strict case matching
+shopt -u extglob # enable extended globbing patterns
+shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
+
+# set variables referenced in the usage message
+#
+export VERSION="1.0 2024-03-25"
+NAME=$(basename "$0")
+export NAME
+export V_FLAG=0
+GIT_TOOL=$(type -P git)
+export GIT_TOOL
+if [[ -z "$GIT_TOOL" ]]; then
+ echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
+ exit 5
+fi
+"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
+status="$?"
+if [[ $status -eq 0 ]]; then
+ TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
+fi
+export TOPDIR
+export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
+export CAP_W_FLAG_FOUND=
+GTAR_TOOL=$(type -P gtar)
+export GTAR_TOOL
+if [[ -z "$GIT_TOOL" ]]; then
+ echo "$0: FATAL: gtar (gnu tar) tool is not installed or not in \$PATH" 1>&2
+ exit 8
+fi
+
+# set usage message
+#
+export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
+ [-p tool] [-u repo_url] [-w site_url] [-W]
+ YYYY/dir
+
+ -h print help message and exit
+ -v level set verbosity level (def level: 0)
+ -V print version string and exit
+
+ -d topdir set topdir (def: $TOPDIR)
+ -D docroot/ This option is ignored
+
+ -n go thru the actions, but do not update any files (def: do the action)
+ -N do not process file, just parse arguments and ignore the file (def: process the file)
+
+ -p tool This option is ignored
+
+ -u repo_url This option is ignored
+ -w site_url This option is ignored
+
+ -W Warn if a file in the manifest is missing: (def: error if a file is missing)
+
+ YYYY/dir path from topdir to entry directory: must contain the files: README.md, .path and .entry.json
+
+Exit codes:
+ 0 all OK
+ 1 some internal tool exited non-zero
+ 2 -h and help string printed or -V and version string printed
+ 3 command line error
+ 4 bash version is too old
+ 5 some internal tool is not found or not an executable file
+ 6 problems found with or in the topdir or topdir/YYYY directory
+ 7 problems found with or in the entry topdir/YYYY/dir directory
+ 8 gnu tar is missing or execution failed or error in forming compressed tarball
+ >= 10 internal error
+
+$NAME version: $VERSION"
+
+# setup
+#
+export NOOP=
+export DO_NOT_PROCESS=
+
+# parse command line
+#
+while getopts :hv:Vd:D:nNp:u:U:w:W flag; do
+ case "$flag" in
+ h) echo "$USAGE" 1>&2
+ exit 2
+ ;;
+ v) V_FLAG="$OPTARG"
+ ;;
+ V) echo "$VERSION"
+ exit 2
+ ;;
+ d) TOPDIR="$OPTARG"
+ ;;
+ D) ;;
+ n) NOOP="-n"
+ ;;
+ N) DO_NOT_PROCESS="-N"
+ ;;
+ p) ;;
+ u) ;;
+ U) ;;
+ w) ;;
+ W) CAP_W_FLAG_FOUND="true"
+ ;;
+ \?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
+ echo 1>&2
+ print_usage 1>&2
+ exit 3
+ ;;
+ :) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
+ echo 1>&2
+ echo "$USAGE" 1>&2
+ exit 3
+ ;;
+ *) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
+ echo 1>&2
+ echo "$USAGE" 1>&2
+ exit 3
+ ;;
+ esac
+done
+
+# parse the command line arguments
+#
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: debug level: $V_FLAG" 1>&2
+fi
+#
+shift $(( OPTIND - 1 ));
+#
+if [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: file argument count: $#" 1>&2
+fi
+if [[ $# -ne 1 ]]; then
+ echo "$0: ERROR: expected 1 arg, found: $#" 1>&2
+ exit 3
+fi
+#
+export ENTRY_PATH="$1"
+
+# verify that we have a topdir directory
+#
+REPO_NAME=$(basename "$REPO_URL")
+export REPO_NAME
+if [[ -z $TOPDIR ]]; then
+ echo "$0: ERROR: cannot find top of git repo directory" 1>&2
+ echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
+ exit 6
+fi
+if [[ ! -e $TOPDIR ]]; then
+ echo "$0: ERROR: TOPDIR does not exist: $TOPDIR" 1>&2
+ echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
+ exit 6
+fi
+if [[ ! -d $TOPDIR ]]; then
+ echo "$0: ERROR: TOPDIR is not a directory: $TOPDIR" 1>&2
+ echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
+ exit 6
+fi
+
+# cd to topdir
+#
+if [[ ! -e $TOPDIR ]]; then
+ echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
+ exit 6
+fi
+if [[ ! -d $TOPDIR ]]; then
+ echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
+ exit 6
+fi
+export CD_FAILED
+if [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
+fi
+cd "$TOPDIR" || CD_FAILED="true"
+if [[ -n $CD_FAILED ]]; then
+ echo "$0: ERROR: cd $TOPDIR failed" 1>&2
+ exit 6
+fi
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
+fi
+
+# verify that ENTRY_PATH is a entry directory
+#
+if [[ ! -d $ENTRY_PATH ]]; then
+ echo "$0: ERROR: arg is not a directory: $ENTRY_PATH" 1>&2
+ exit 3
+fi
+if [[ ! -w $ENTRY_PATH ]]; then
+ echo "$0: ERROR: arg is not a writable directory: $ENTRY_PATH" 1>&2
+ exit 3
+fi
+export YEAR_DIR=${ENTRY_PATH%%/*}
+if [[ -z $YEAR_DIR ]]; then
+ echo "$0: ERROR: arg not in YYYY/dir form: $ENTRY_PATH" 1>&2
+ exit 3
+fi
+export ENTRY_DIR=${ENTRY_PATH#*/}
+if [[ -z $ENTRY_DIR ]]; then
+ echo "$0: ERROR: arg: $ENTRY_PATH not in $YEAR_DIR/dir form: $ENTRY_PATH" 1>&2
+ exit 3
+fi
+if [[ $ENTRY_DIR = */* ]]; then
+ echo "$0: ERROR: dir from arg: $ENTRY_PATH contains a /: $ENTRY_DIR" 1>&2
+ exit 3
+fi
+if [[ ! -d $YEAR_DIR ]]; then
+ echo "$0: ERROR: YYYY from arg: $ENTRY_PATH is not a directory: $YEAR_DIR" 1>&2
+ exit 3
+fi
+export ENTRY_ID="${YEAR_DIR}_${ENTRY_DIR}"
+export DOT_YEAR="$YEAR_DIR/.year"
+if [[ ! -s $DOT_YEAR ]]; then
+ echo "$0: ERROR: not a non-empty file: $DOT_YEAR" 1>&2
+ exit 6
+fi
+# Now that we have moved to topdir, form and verify YYYY_DIR is a writable directory
+export YYYY_DIR="$YEAR_DIR/$ENTRY_DIR"
+if [[ ! -e $YYYY_DIR ]]; then
+ echo "$0: ERROR: YYYY/dir from arg: $ENTRY_PATH does not exist: $YYYY_DIR" 1>&2
+ exit 7
+fi
+if [[ ! -d $YYYY_DIR ]]; then
+ echo "$0: ERROR: YYYY/dir from arg: $ENTRY_PATH is not a directory: $YYYY_DIR" 1>&2
+ exit 7
+fi
+if [[ ! -w $YYYY_DIR ]]; then
+ echo "$0: ERROR: YYYY/dir from arg: $ENTRY_PATH is not a writable directory: $YYYY_DIR" 1>&2
+ exit 7
+fi
+
+# determine the name of our tarball
+#
+# TARBALL - the same of the compressed tarball to verify and if needed re-build
+# REBUILD_TARBALL - if non-empty, we need to re-build TARBALL and update tar timestamps
+#
+export TARBALL="$YYYY_DIR/$ENTRY_ID.tar.bz2"
+
+# test - if needed - if the tarball is a non-empty writable file
+#
+if [[ ! -e $TARBALL ]]; then
+ echo "$0: ERROR: tarball does not exist: $TARBALL" 1>&2
+ exit 1
+fi
+if [[ ! -f $TARBALL ]]; then
+ echo "$0: ERROR: tarball is not a file: $TARBALL" 1>&2
+ exit 1
+fi
+if [[ ! -w $TARBALL ]]; then
+ echo "$0: ERROR: tarball is not a writable file: $TARBALL" 1>&2
+ exit 1
+fi
+if [[ ! -s $TARBALL ]]; then
+ echo "$0: ERROR: tarball is not a non-empty writable file: $TARBALL" 1>&2
+ exit 1
+fi
+
+# parameter debugging
+#
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: VERSION=$VERSION" 1>&2
+ echo "$0: debug[3]: NAME=$NAME" 1>&2
+ echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
+ echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
+ echo "$0: debug[3]: GTAR_TOOL=$GTAR_TOOL" 1>&2
+ echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
+ echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
+ echo "$0: debug[3]: NOOP=$NOOP" 1>&2
+ echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
+ echo "$0: debug[3]: CAP_W_FLAG_FOUND=$CAP_W_FLAG_FOUND" 1>&2
+ echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
+ echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
+ echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
+ echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
+ echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
+ echo "$0: debug[3]: TARBALL=$TARBALL" 1>&2
+fi
+
+# If -N, time to exit
+#
+if [[ -n $DO_NOT_PROCESS ]]; then
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: arguments parsed, -N given, exit 0" 1>&2
+ fi
+ exit 0
+fi
+
+# untar entry compressed tarball
+#
+if [[ -z $NOOP ]]; then
+
+ # case: form the tarball verbosely if -v 5 or more
+ #
+ if [[ $V_FLAG -ge 1 ]]; then
+ echo "$0: debug[1]: about to execute:" \
+ "$GTAR_TOOL --totals -jxvf $TARBALL" 1>&2
+ "$GTAR_TOOL" --totals -jxvf "$TARBALL"
+ status="$?"
+ if [[ $status -ne 0 ]]; then
+ echo "$0: ERROR:" \
+ "$GTAR_TOOL --totals -jxvf $TARBALL failed, error: $status" 1>&2
+ exit 8
+ fi
+
+ # case: form the tarball silently
+ #
+ else
+ "$GTAR_TOOL" -jxf "$TARBALL"
+ status="$?"
+ if [[ $status -ne 0 ]]; then
+ echo "$0: ERROR:" \
+ "$GTAR_TOOL -jxf $TARBALL failed, error: $status" 1>&2
+ exit 8
+ fi
+ fi
+
+# case: -n
+#
+elif [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: because of -n, did not execute:" \
+ "$GTAR_TOOL --totals -jxvf $TARBALL" 1>&2
+fi
+
+# All Done!!! -- Jessica Noll, Age 2
+#
+exit 0
diff --git a/tmp/manifest.csv b/tmp/manifest.csv
index 42cdcaab1..babfd77f7 100644
--- a/tmp/manifest.csv
+++ b/tmp/manifest.csv
@@ -2182,6 +2182,7 @@
2004,sds,Makefile,30,true,makefile,true,entry Makefile
2004,sds,sds.orig.c,50,true,c,true,original source
2004,sds,try.sh,100,true,shellscript,true,how to run
+2004,sds,README_sds.txt,200,true,test,true,sample data used by try.sh
2004,sds,2004_sds.tar.bz2,100000,false,tbz2,false,download entry source
2004,sds,index.html,2000000000,false,html,false,entry home page
2004,sds,README.md,4294967295,true,markdown,true,markdown source for index.html
diff --git a/tmp/manifest.numbers b/tmp/manifest.numbers
index be5a51b3b..548e9adfb 100644
Binary files a/tmp/manifest.numbers and b/tmp/manifest.numbers differ
diff --git a/tmp/path_list.found.txt b/tmp/path_list.found.txt
index 9e2a5c2f0..9ac7cfa26 100644
--- a/tmp/path_list.found.txt
+++ b/tmp/path_list.found.txt
@@ -2184,6 +2184,7 @@
2004/sds/2004_sds.tar.bz2
2004/sds/Makefile
2004/sds/README.md
+2004/sds/README_sds.txt
2004/sds/index.html
2004/sds/sds.c
2004/sds/sds.orig.c
diff --git a/tmp/path_list.manifest.txt b/tmp/path_list.manifest.txt
index 9e2a5c2f0..9ac7cfa26 100644
--- a/tmp/path_list.manifest.txt
+++ b/tmp/path_list.manifest.txt
@@ -2184,6 +2184,7 @@
2004/sds/2004_sds.tar.bz2
2004/sds/Makefile
2004/sds/README.md
+2004/sds/README_sds.txt
2004/sds/index.html
2004/sds/sds.c
2004/sds/sds.orig.c
diff --git a/tmp/path_list.required.txt b/tmp/path_list.required.txt
index 0204f1ff5..c70401952 100644
--- a/tmp/path_list.required.txt
+++ b/tmp/path_list.required.txt
@@ -1462,6 +1462,7 @@
2004/sds/.gitignore
2004/sds/Makefile
2004/sds/README.md
+2004/sds/README_sds.txt
2004/sds/sds.c
2004/sds/sds.orig.c
2004/sds/try.sh