| ofs | hex dump | ascii | 
|---|
| 0000 | 74 73 2d 32 30 32 32 30 38 32 32 2e 32 33 31 33    2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ts-20220822.2313/............... | 
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000755.0000000.0000000.0000 | 
| 0080 | 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 31 34 33 31 00 20 35 00 00 00 | 0000000.00000000000.011431..5... | 
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... | 
| 0120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... | 
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0200 | 74 73 2d 32 30 32 32 30 38 32 32 2e 32 33 31 33    2f 74 73 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 | ts-20220822.2313/ts-pkg.el...... | 
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 | 
| 0280 | 30 30 30 30 37 33 36 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 31 36 36 00 20 30 00 00 00 | 0000736.00000000000.013166..0... | 
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0300 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... | 
| 0320 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... | 
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0400 | 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20    22 74 73 22 20 22 32 30 32 32 30 38 32 32 2e 32 | (define-package."ts"."20220822.2 | 
| 0420 | 33 31 33 22 20 22 54 69 6d 65 73 74 61 6d 70 20    61 6e 64 20 64 61 74 65 2f 74 69 6d 65 20 6c 69 | 313"."Timestamp.and.date/time.li | 
| 0440 | 62 72 61 72 79 22 0a 20 20 27 28 28 65 6d 61 63    73 20 22 32 36 2e 31 22 29 0a 20 20 20 20 28 64 | brary"...'((emacs."26.1").....(d | 
| 0460 | 61 73 68 20 22 32 2e 31 34 2e 31 22 29 0a 20 20    20 20 28 73 20 22 31 2e 31 32 2e 30 22 29 29 0a | ash."2.14.1").....(s."1.12.0")). | 
| 0480 | 20 20 3a 63 6f 6d 6d 69 74 20 22 35 35 32 39 33    36 30 31 37 63 66 64 65 63 38 39 66 37 66 63 32 | ..:commit."552936017cfdec89f7fc2 | 
| 04a0 | 30 63 32 35 34 61 65 36 62 33 37 63 33 66 32 32    63 35 62 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 | 0c254ae6b37c3f22c5b".:authors... | 
| 04c0 | 27 28 28 22 41 64 61 6d 20 50 6f 72 74 65 72 22    20 2e 20 22 61 64 61 6d 40 61 6c 70 68 61 70 61 | '(("Adam.Porter"..."adam@alphapa | 
| 04e0 | 70 61 2e 6e 65 74 22 29 29 0a 20 20 3a 6d 61 69    6e 74 61 69 6e 65 72 73 0a 20 20 27 28 28 22 41 | pa.net"))...:maintainers...'(("A | 
| 0500 | 64 61 6d 20 50 6f 72 74 65 72 22 20 2e 20 22 61    64 61 6d 40 61 6c 70 68 61 70 61 70 61 2e 6e 65 | dam.Porter"..."adam@alphapapa.ne | 
| 0520 | 74 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e    65 72 0a 20 20 27 28 22 41 64 61 6d 20 50 6f 72 | t"))...:maintainer...'("Adam.Por | 
| 0540 | 74 65 72 22 20 2e 20 22 61 64 61 6d 40 61 6c 70    68 61 70 61 70 61 2e 6e 65 74 22 29 0a 20 20 3a | ter"..."adam@alphapapa.net")...: | 
| 0560 | 6b 65 79 77 6f 72 64 73 0a 20 20 27 28 22 63 61    6c 65 6e 64 61 72 22 20 22 6c 69 73 70 22 29 0a | keywords...'("calendar"."lisp"). | 
| 0580 | 20 20 3a 75 72 6c 20 22 68 74 74 70 3a 2f 2f 67    69 74 68 75 62 2e 63 6f 6d 2f 61 6c 70 68 61 70 | ..:url."http://github.com/alphap | 
| 05a0 | 61 70 61 2f 74 73 2e 65 6c 22 29 0a 3b 3b 20 4c    6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a | apa/ts.el").;;.Local.Variables:. | 
| 05c0 | 3b 3b 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69    6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 00 | ;;.no-byte-compile:.t.;;.End:... | 
| 05e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0600 | 74 73 2d 32 30 32 32 30 38 32 32 2e 32 33 31 33    2f 74 73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 | ts-20220822.2313/ts.el.......... | 
| 0620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0660 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 | 
| 0680 | 30 30 36 34 32 31 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 34 30 34 00 20 30 00 00 00 | 0064210.00000000000.012404..0... | 
| 06a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 06c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 06e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0700 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... | 
| 0720 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... | 
| 0740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 07a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 07c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 07e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0800 | 3b 3b 3b 20 74 73 2e 65 6c 20 2d 2d 2d 20 54 69    6d 65 73 74 61 6d 70 20 61 6e 64 20 64 61 74 65 | ;;;.ts.el.---.Timestamp.and.date | 
| 0820 | 2f 74 69 6d 65 20 6c 69 62 72 61 72 79 20 20 2d    2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 | /time.library..-*-.lexical-bindi | 
| 0840 | 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43    6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 31 | ng:.t;.-*-..;;.Copyright.(C).201 | 
| 0860 | 38 2d 32 30 31 39 20 41 64 61 6d 20 50 6f 72 74    65 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 41 | 8-2019.Adam.Porter..;;.Author:.A | 
| 0880 | 64 61 6d 20 50 6f 72 74 65 72 20 3c 61 64 61 6d    40 61 6c 70 68 61 70 61 70 61 2e 6e 65 74 3e 0a | dam.Porter.<adam@alphapapa.net>. | 
| 08a0 | 3b 3b 20 55 52 4c 3a 20 68 74 74 70 3a 2f 2f 67    69 74 68 75 62 2e 63 6f 6d 2f 61 6c 70 68 61 70 | ;;.URL:.http://github.com/alphap | 
| 08c0 | 61 70 61 2f 74 73 2e 65 6c 0a 3b 3b 20 56 65 72    73 69 6f 6e 3a 20 30 2e 33 0a 3b 3b 20 50 61 63 | apa/ts.el.;;.Version:.0.3.;;.Pac | 
| 08e0 | 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28    28 65 6d 61 63 73 20 22 32 36 2e 31 22 29 20 28 | kage-Requires:.((emacs."26.1").( | 
| 0900 | 64 61 73 68 20 22 32 2e 31 34 2e 31 22 29 20 28    73 20 22 31 2e 31 32 2e 30 22 29 29 0a 3b 3b 20 | dash."2.14.1").(s."1.12.0")).;;. | 
| 0920 | 4b 65 79 77 6f 72 64 73 3a 20 63 61 6c 65 6e 64    61 72 2c 20 6c 69 73 70 0a 0a 3b 3b 20 54 68 69 | Keywords:.calendar,.lisp..;;.Thi | 
| 0940 | 73 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 70 61    72 74 20 6f 66 20 47 4e 55 20 45 6d 61 63 73 2e | s.file.is.not.part.of.GNU.Emacs. | 
| 0960 | 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79    3a 0a 0a 3b 3b 20 54 68 69 73 20 70 61 63 6b 61 | ..;;;.Commentary:..;;.This.packa | 
| 0980 | 67 65 20 69 73 20 64 65 73 69 67 6e 65 64 20 74    6f 20 65 61 73 65 20 6d 61 6e 69 70 75 6c 61 74 | ge.is.designed.to.ease.manipulat | 
| 09a0 | 69 6f 6e 20 6f 66 20 64 61 74 65 73 2c 20 74 69    6d 65 73 2c 20 61 6e 64 0a 3b 3b 20 74 69 6d 65 | ion.of.dates,.times,.and.;;.time | 
| 09c0 | 73 74 61 6d 70 73 20 69 6e 20 45 6d 61 63 73 2e    0a 0a 3b 3b 20 41 20 73 74 72 75 63 74 20 60 74 | stamps.in.Emacs...;;.A.struct.`t | 
| 09e0 | 73 27 20 69 73 20 64 65 66 69 6e 65 64 2c 20 77    68 69 63 68 20 72 65 70 72 65 73 65 6e 74 73 20 | s'.is.defined,.which.represents. | 
| 0a00 | 61 20 74 69 6d 65 73 74 61 6d 70 2e 20 20 41 6c    6c 0a 3b 3b 20 6d 61 6e 69 70 75 6c 61 74 69 6f | a.timestamp...All.;;.manipulatio | 
| 0a20 | 6e 20 69 73 20 64 6f 6e 65 20 69 6e 74 65 72 6e    61 6c 6c 79 20 75 73 69 6e 67 20 55 6e 69 78 20 | n.is.done.internally.using.Unix. | 
| 0a40 | 74 69 6d 65 73 74 61 6d 70 73 2e 20 20 41 63 63    65 73 73 6f 72 73 0a 3b 3b 20 61 72 65 20 75 73 | timestamps...Accessors.;;.are.us | 
| 0a60 | 65 64 20 74 6f 20 72 65 74 72 69 65 76 65 20 63    61 6c 65 6e 64 61 72 20 76 61 6c 75 65 73 20 73 | ed.to.retrieve.calendar.values.s | 
| 0a80 | 75 63 68 20 61 73 20 6d 6f 6e 74 68 2c 20 64 61    79 2c 20 79 65 61 72 20 66 72 6f 6d 0a 3b 3b 20 | uch.as.month,.day,.year.from.;;. | 
| 0aa0 | 61 20 74 69 6d 65 73 74 61 6d 70 2c 20 61 6e 64    20 74 68 65 73 65 20 76 61 6c 75 65 73 20 61 72 | a.timestamp,.and.these.values.ar | 
| 0ac0 | 65 20 63 61 63 68 65 64 20 69 6e 20 74 68 65 20    73 74 72 75 63 74 20 6f 6e 63 65 0a 3b 3b 20 61 | e.cached.in.the.struct.once.;;.a | 
| 0ae0 | 63 63 65 73 73 65 64 2c 20 74 6f 20 61 76 6f 69    64 20 72 65 70 65 61 74 65 64 6c 79 20 63 61 6c | ccessed,.to.avoid.repeatedly.cal | 
| 0b00 | 6c 69 6e 67 20 60 66 6f 72 6d 61 74 2d 74 69 6d    65 2d 73 74 72 69 6e 67 27 2c 20 77 68 69 63 68 | ling.`format-time-string',.which | 
| 0b20 | 0a 3b 3b 20 69 73 20 65 78 70 65 6e 73 69 76 65    2e 20 20 46 75 6e 63 74 69 6f 6e 20 61 72 67 75 | .;;.is.expensive...Function.argu | 
| 0b40 | 6d 65 6e 74 73 20 61 72 65 20 64 65 73 69 67 6e    65 64 20 74 6f 20 77 6f 72 6b 20 77 65 6c 6c 20 | ments.are.designed.to.work.well. | 
| 0b60 | 77 69 74 68 0a 3b 3b 20 74 68 65 20 60 74 68 72    65 61 64 2d 6c 61 73 74 27 20 6d 61 63 72 6f 2c | with.;;.the.`thread-last'.macro, | 
| 0b80 | 20 74 6f 20 6d 61 6b 65 20 73 65 71 75 65 6e 74    69 61 6c 20 6f 70 65 72 61 74 69 6f 6e 73 20 65 | .to.make.sequential.operations.e | 
| 0ba0 | 61 73 79 20 74 6f 0a 3b 3b 20 66 6f 6c 6c 6f 77    2e 0a 0a 3b 3b 20 54 68 65 20 63 75 72 72 65 6e | asy.to.;;.follow...;;.The.curren | 
| 0bc0 | 74 20 74 69 6d 65 73 74 61 6d 70 20 69 73 20 72    65 74 72 69 65 76 65 64 20 77 69 74 68 20 60 74 | t.timestamp.is.retrieved.with.`t | 
| 0be0 | 73 2d 6e 6f 77 27 2e 0a 0a 3b 3b 20 54 69 6d 65    73 74 61 6d 70 73 20 61 72 65 20 65 61 73 69 6c | s-now'...;;.Timestamps.are.easil | 
| 0c00 | 79 20 6d 6f 64 69 66 69 65 64 20 75 73 69 6e 67    20 60 74 73 2d 61 64 6a 75 73 74 27 2c 20 60 74 | y.modified.using.`ts-adjust',.`t | 
| 0c20 | 73 2d 61 70 70 6c 79 27 2c 0a 3b 3b 20 60 74 73    2d 69 6e 63 66 27 2c 20 60 74 73 2d 64 65 63 27 | s-apply',.;;.`ts-incf',.`ts-dec' | 
| 0c40 | 2c 20 65 74 63 2e 0a 0a 3b 3b 20 54 69 6d 65 73    74 61 6d 70 73 20 61 72 65 20 70 61 72 73 65 64 | ,.etc...;;.Timestamps.are.parsed | 
| 0c60 | 20 61 6e 64 20 66 6f 72 6d 61 74 74 65 64 20 75    73 69 6e 67 20 60 74 73 2d 70 61 72 73 65 27 2c | .and.formatted.using.`ts-parse', | 
| 0c80 | 0a 3b 3b 20 60 74 73 2d 70 61 72 73 65 2d 6f 72    67 27 2c 20 61 6e 64 20 60 74 73 2d 66 6f 72 6d | .;;.`ts-parse-org',.and.`ts-form | 
| 0ca0 | 61 74 27 2e 0a 0a 3b 3b 20 44 69 66 66 65 72 65    6e 63 65 73 20 61 6e 64 20 64 75 72 61 74 69 6f | at'...;;.Differences.and.duratio | 
| 0cc0 | 6e 73 20 61 72 65 20 63 61 6c 63 75 6c 61 74 65    64 20 77 69 74 68 20 60 74 73 2d 64 69 66 66 27 | ns.are.calculated.with.`ts-diff' | 
| 0ce0 | 2c 0a 3b 3b 20 60 74 73 2d 68 75 6d 61 6e 2d 64    75 72 61 74 69 6f 6e 27 2c 20 61 6e 64 20 60 74 | ,.;;.`ts-human-duration',.and.`t | 
| 0d00 | 73 2d 68 75 6d 61 6e 2d 66 6f 72 6d 61 74 2d 64    75 72 61 74 69 6f 6e 27 2e 20 20 43 6f 6d 70 61 | s-human-format-duration'...Compa | 
| 0d20 | 72 69 73 6f 6e 73 0a 3b 3b 20 61 72 65 20 64 6f    6e 65 20 77 69 74 68 20 60 74 73 3c 27 2c 20 60 | risons.;;.are.done.with.`ts<',.` | 
| 0d40 | 74 73 3c 3d 27 2c 20 60 74 73 3d 27 2c 20 60 74    73 3e 27 2c 20 61 6e 64 20 60 74 73 3e 3d 27 2e | ts<=',.`ts=',.`ts>',.and.`ts>='. | 
| 0d60 | 0a 0a 3b 3b 3b 20 4c 69 63 65 6e 73 65 3a 0a 0a    3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 | ..;;;.License:..;;.This.program. | 
| 0d80 | 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65    3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 | is.free.software;.you.can.redist | 
| 0da0 | 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72    20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e | ribute.it.and/or.modify.;;.it.un | 
| 0dc0 | 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66    20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c | der.the.terms.of.the.GNU.General | 
| 0de0 | 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20    61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a | .Public.License.as.published.by. | 
| 0e00 | 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74    77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c | ;;.the.Free.Software.Foundation, | 
| 0e20 | 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20    33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 | .either.version.3.of.the.License | 
| 0e40 | 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72    20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 | ,.or.;;.(at.your.option).any.lat | 
| 0e60 | 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20    54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 | er.version...;;.This.program.is. | 
| 0e80 | 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74    68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 | distributed.in.the.hope.that.it. | 
| 0ea0 | 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a    3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 | will.be.useful,.;;.but.WITHOUT.A | 
| 0ec0 | 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74    68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d | NY.WARRANTY;.without.even.the.im | 
| 0ee0 | 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f    66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 | plied.warranty.of.;;.MERCHANTABI | 
| 0f00 | 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20    46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 | LITY.or.FITNESS.FOR.A.PARTICULAR | 
| 0f20 | 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74    68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 | .PURPOSE...See.the.;;.GNU.Genera | 
| 0f40 | 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65    20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c | l.Public.License.for.more.detail | 
| 0f60 | 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c    64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 | s...;;.You.should.have.received. | 
| 0f80 | 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e    55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 | a.copy.of.the.GNU.General.Public | 
| 0fa0 | 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e    67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 | .License.;;.along.with.this.prog | 
| 0fc0 | 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65    65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e | ram...If.not,.see.<http://www.gn | 
| 0fe0 | 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e    2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 3b 3b | u.org/licenses/>...;;;.Code:..;; | 
| 1000 | 3b 3b 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a    0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 | ;;.Requirements..(require.'cl-li | 
| 1020 | 62 29 0a 0a 28 72 65 71 75 69 72 65 20 27 64 61    73 68 29 0a 28 72 65 71 75 69 72 65 20 27 73 29 | b)..(require.'dash).(require.'s) | 
| 1040 | 0a 0a 3b 3b 3b 3b 20 56 61 72 69 61 62 6c 65 73    0a 0a 28 64 65 66 76 61 72 20 74 73 2d 64 65 66 | ..;;;;.Variables..(defvar.ts-def | 
| 1060 | 61 75 6c 74 2d 66 6f 72 6d 61 74 20 22 25 59 2d    25 6d 2d 25 64 20 25 48 3a 25 4d 3a 25 53 20 25 | ault-format."%Y-%m-%d.%H:%M:%S.% | 
| 1080 | 7a 22 0a 20 20 22 44 65 66 61 75 6c 74 20 66 6f    72 6d 61 74 20 66 6f 72 20 60 74 73 2d 66 6f 72 | z"..."Default.format.for.`ts-for | 
| 10a0 | 6d 61 74 27 2e 22 29 0a 0a 3b 3b 3b 3b 20 53 74    72 75 63 74 73 0a 0a 28 63 6c 2d 64 65 66 6d 61 | mat'.")..;;;;.Structs..(cl-defma | 
| 10c0 | 63 72 6f 20 74 73 2d 64 65 66 73 74 72 75 63 74    20 28 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 | cro.ts-defstruct.(&rest.args)... | 
| 10e0 | 22 4c 69 6b 65 20 60 63 6c 2d 64 65 66 73 74 72    75 63 74 27 2c 20 62 75 74 20 77 69 74 68 20 61 | "Like.`cl-defstruct',.but.with.a | 
| 1100 | 64 64 69 74 69 6f 6e 61 6c 20 73 6c 6f 74 20 6f    70 74 69 6f 6e 73 20 66 72 6f 6d 20 41 52 47 53 | dditional.slot.options.from.ARGS | 
| 1120 | 2e 0a 0a 41 64 64 69 74 69 6f 6e 61 6c 20 73 6c    6f 74 20 6f 70 74 69 6f 6e 73 20 61 6e 64 20 76 | ...Additional.slot.options.and.v | 
| 1140 | 61 6c 75 65 73 3a 0a 0a 60 3a 61 63 63 65 73 73    6f 72 2d 69 6e 69 74 27 3a 20 61 20 73 65 78 70 | alues:..`:accessor-init':.a.sexp | 
| 1160 | 20 74 68 61 74 20 69 6e 69 74 69 61 6c 69 7a 65    73 20 74 68 65 20 73 6c 6f 74 20 69 6e 20 74 68 | .that.initializes.the.slot.in.th | 
| 1180 | 65 0a 61 63 63 65 73 73 6f 72 20 69 66 20 74 68    65 20 73 6c 6f 74 20 69 73 20 6e 69 6c 2e 20 20 | e.accessor.if.the.slot.is.nil... | 
| 11a0 | 54 68 65 20 73 79 6d 62 6f 6c 20 60 73 74 72 75    63 74 27 20 77 69 6c 6c 20 62 65 20 62 6f 75 6e | The.symbol.`struct'.will.be.boun | 
| 11c0 | 64 0a 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74    20 73 74 72 75 63 74 2e 20 20 54 68 65 20 61 63 | d.to.the.current.struct...The.ac | 
| 11e0 | 63 65 73 73 6f 72 20 69 73 20 64 65 66 69 6e 65    64 20 61 66 74 65 72 20 74 68 65 20 73 74 72 75 | cessor.is.defined.after.the.stru | 
| 1200 | 63 74 0a 69 73 20 66 75 6c 6c 79 20 64 65 66 69    6e 65 64 2c 20 73 6f 20 69 74 20 6d 61 79 20 72 | ct.is.fully.defined,.so.it.may.r | 
| 1220 | 65 66 65 72 20 74 6f 20 74 68 65 20 73 74 72 75    63 74 0a 64 65 66 69 6e 69 74 69 6f 6e 20 28 65 | efer.to.the.struct.definition.(e | 
| 1240 | 2e 67 2e 20 62 79 20 75 73 69 6e 67 20 74 68 65    20 60 63 6c 2d 73 74 72 75 63 74 27 20 60 70 63 | .g..by.using.the.`cl-struct'.`pc | 
| 1260 | 61 73 65 27 20 6d 61 63 72 6f 29 2e 0a 0a 60 3a    61 6c 69 61 73 65 73 27 3a 20 41 20 6c 69 73 74 | ase'.macro)...`:aliases':.A.list | 
| 1280 | 20 6f 66 20 73 79 6d 62 6f 6c 73 20 77 68 69 63    68 20 77 69 6c 6c 20 62 65 20 61 6c 69 61 73 65 | .of.symbols.which.will.be.aliase | 
| 12a0 | 64 20 74 6f 20 74 68 65 20 73 6c 6f 74 0a 61 63    63 65 73 73 6f 72 2c 20 70 72 65 70 65 6e 64 65 | d.to.the.slot.accessor,.prepende | 
| 12c0 | 64 20 77 69 74 68 20 74 68 65 20 73 74 72 75 63    74 20 6e 61 6d 65 20 28 65 2e 67 2e 20 61 20 73 | d.with.the.struct.name.(e.g..a.s | 
| 12e0 | 74 72 75 63 74 20 60 74 73 27 20 77 69 74 68 0a    73 6c 6f 74 20 60 79 65 61 72 27 20 61 6e 64 20 | truct.`ts'.with.slot.`year'.and. | 
| 1300 | 61 6c 69 61 73 20 60 79 27 20 77 6f 75 6c 64 20    63 72 65 61 74 65 20 61 6e 20 61 6c 69 61 73 20 | alias.`y'.would.create.an.alias. | 
| 1320 | 60 74 73 2d 79 27 29 2e 22 0a 20 20 28 64 65 63    6c 61 72 65 20 28 69 6e 64 65 6e 74 20 64 65 66 | `ts-y')."...(declare.(indent.def | 
| 1340 | 75 6e 29 29 0a 20 20 3b 3b 20 46 49 58 4d 45 3a    20 43 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e | un))...;;.FIXME:.Compiler.warnin | 
| 1360 | 67 73 20 61 62 6f 75 74 20 61 63 63 65 73 73 6f    72 73 20 64 65 66 69 6e 65 64 20 6d 75 6c 74 69 | gs.about.accessors.defined.multi | 
| 1380 | 70 6c 65 20 74 69 6d 65 73 2e 20 20 4e 6f 74 20    73 75 72 65 20 69 66 20 77 65 20 63 61 6e 20 66 | ple.times...Not.sure.if.we.can.f | 
| 13a0 | 69 78 20 74 68 69 73 0a 20 20 3b 3b 20 65 78 63    65 70 74 20 62 79 20 69 67 6e 6f 72 69 6e 67 20 | ix.this...;;.except.by.ignoring. | 
| 13c0 | 77 61 72 6e 69 6e 67 73 2e 0a 20 20 28 6c 65 74    2a 20 28 28 73 74 72 75 63 74 2d 6e 61 6d 65 20 | warnings....(let*.((struct-name. | 
| 13e0 | 28 63 61 72 20 61 72 67 73 29 29 0a 20 20 20 20    20 20 20 20 20 28 73 74 72 75 63 74 2d 73 6c 6f | (car.args))..........(struct-slo | 
| 1400 | 74 73 20 28 63 64 72 20 61 72 67 73 29 29 0a 20    20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 66 73 | ts.(cdr.args))..........(cl-defs | 
| 1420 | 74 72 75 63 74 2d 65 78 70 61 6e 73 69 6f 6e 20    28 6d 61 63 72 6f 65 78 70 61 6e 64 20 60 28 63 | truct-expansion.(macroexpand.`(c | 
| 1440 | 6c 2d 64 65 66 73 74 72 75 63 74 20 2c 73 74 72    75 63 74 2d 6e 61 6d 65 20 2c 40 73 74 72 75 63 | l-defstruct.,struct-name.,@struc | 
| 1460 | 74 2d 73 6c 6f 74 73 29 29 29 0a 20 20 20 20 20    20 20 20 20 61 63 63 65 73 73 6f 72 2d 66 6f 72 | t-slots)))..........accessor-for | 
| 1480 | 6d 73 20 61 6c 69 61 73 2d 66 6f 72 6d 73 29 0a    20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 | ms.alias-forms).....(cl-loop.for | 
| 14a0 | 20 73 6c 6f 74 20 69 6e 20 73 74 72 75 63 74 2d    73 6c 6f 74 73 0a 20 20 20 20 20 20 20 20 20 20 | .slot.in.struct-slots........... | 
| 14c0 | 20 20 20 66 6f 72 20 70 6f 73 20 66 72 6f 6d 20    31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 77 | ...for.pos.from.1..............w | 
| 14e0 | 68 65 6e 20 28 6c 69 73 74 70 20 73 6c 6f 74 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f | hen.(listp.slot)..............do | 
| 1500 | 20 28 2d 6c 65 74 2a 20 28 28 28 73 6c 6f 74 2d    6e 61 6d 65 20 5f 73 6c 6f 74 2d 64 65 66 61 75 | .(-let*.(((slot-name._slot-defau | 
| 1520 | 6c 74 20 2e 20 73 6c 6f 74 2d 6f 70 74 69 6f 6e    73 29 20 73 6c 6f 74 29 0a 20 20 20 20 20 20 20 | lt...slot-options).slot)........ | 
| 1540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 28 26 6b 65 79 73 20 3a 61 63 63 65 73 73 | .................((&keys.:access | 
| 1560 | 6f 72 2d 69 6e 69 74 20 3a 61 6c 69 61 73 65 73    29 20 73 6c 6f 74 2d 6f 70 74 69 6f 6e 73 29 0a | or-init.:aliases).slot-options). | 
| 1580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 61 63 63 65 73 73 6f | ........................(accesso | 
| 15a0 | 72 2d 6e 61 6d 65 20 28 69 6e 74 65 72 6e 20 28    63 6f 6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e | r-name.(intern.(concat.(symbol-n | 
| 15c0 | 61 6d 65 20 73 74 72 75 63 74 2d 6e 61 6d 65 29    20 22 2d 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d | ame.struct-name)."-".(symbol-nam | 
| 15e0 | 65 20 73 6c 6f 74 2d 6e 61 6d 65 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e.slot-name))))................. | 
| 1600 | 20 20 20 20 20 20 20 20 28 61 63 63 65 73 73 6f    72 2d 64 6f 63 73 74 72 69 6e 67 20 28 66 6f 72 | ........(accessor-docstring.(for | 
| 1620 | 6d 61 74 20 22 41 63 63 65 73 73 20 73 6c 6f 74    20 5c 22 25 73 5c 22 20 6f 66 20 60 25 73 27 20 | mat."Access.slot.\"%s\".of.`%s'. | 
| 1640 | 73 74 72 75 63 74 20 53 54 52 55 43 54 2e 22 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | struct.STRUCT."................. | 
| 1660 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 1680 | 20 20 20 20 73 6c 6f 74 2d 6e 61 6d 65 20 73 74    72 75 63 74 2d 6e 61 6d 65 29 29 0a 20 20 20 20 | ....slot-name.struct-name))..... | 
| 16a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 74 72 75 63 74 2d 70 72 65 64 | ....................(struct-pred | 
| 16c0 | 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74    20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 73 74 | .(intern.(concat.(symbol-name.st | 
| 16e0 | 72 75 63 74 2d 6e 61 6d 65 29 20 22 2d 70 22 29    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ruct-name)."-p"))).............. | 
| 1700 | 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 63    63 65 73 73 6f 72 20 66 6f 72 6d 20 63 6f 70 69 | ...........;;.Accessor.form.copi | 
| 1720 | 65 64 20 66 72 6f 6d 20 6d 61 63 72 6f 20 65 78    70 61 6e 73 69 6f 6e 20 6f 66 20 60 63 6c 2d 64 | ed.from.macro.expansion.of.`cl-d | 
| 1740 | 65 66 73 74 72 75 63 74 27 2e 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | efstruct'....................... | 
| 1760 | 20 20 20 28 61 63 63 65 73 73 6f 72 2d 66 6f 72    6d 20 60 28 63 6c 2d 64 65 66 73 75 62 73 74 20 | ...(accessor-form.`(cl-defsubst. | 
| 1780 | 2c 61 63 63 65 73 73 6f 72 2d 6e 61 6d 65 20 28    73 74 72 75 63 74 29 0a 20 20 20 20 20 20 20 20 | ,accessor-name.(struct)......... | 
| 17a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 17c0 | 20 20 2c 61 63 63 65 73 73 6f 72 2d 64 6f 63 73    74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 | ..,accessor-docstring........... | 
| 17e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 1800 | 3b 3b 20 46 49 58 4d 45 3a 20 73 69 64 65 2d 65    66 66 65 63 74 2d 66 72 65 65 20 69 73 20 70 72 | ;;.FIXME:.side-effect-free.is.pr | 
| 1820 | 6f 62 61 62 6c 79 20 6e 6f 74 20 74 72 75 65 20    68 65 72 65 2c 20 62 75 74 20 77 68 61 74 20 61 | obably.not.true.here,.but.what.a | 
| 1840 | 62 6f 75 74 20 65 72 72 6f 72 2d 66 72 65 65 3f    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | bout.error-free?................ | 
| 1860 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 20 28 | ...........................;;..( | 
| 1880 | 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66    66 65 63 74 2d 66 72 65 65 20 65 72 72 6f 72 2d | declare.(side-effect-free.error- | 
| 18a0 | 66 72 65 65 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | free)).......................... | 
| 18c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6f 72 20 28 2c 73 74 72 75 63 74 2d 70 72 | .................(or.(,struct-pr | 
| 18e0 | 65 64 20 73 74 72 75 63 74 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ed.struct)...................... | 
| 1900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 69 67 6e 61 6c | .........................(signal | 
| 1920 | 20 27 77 72 6f 6e 67 2d 74 79 70 65 2d 61 72 67    75 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 | .'wrong-type-argument........... | 
| 1940 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 1960 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73    74 20 27 2c 73 74 72 75 63 74 2d 6e 61 6d 65 20 | ............(list.',struct-name. | 
| 1980 | 73 74 72 75 63 74 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | struct)))....................... | 
| 19a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 2c 28 77 68 65 6e 20 61 63 63 65 73 | ....................,(when.acces | 
| 19c0 | 73 6f 72 2d 69 6e 69 74 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | sor-init........................ | 
| 19e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 60 28 75 6e 6c 65 73 73 20 28 | ......................`(unless.( | 
| 1a00 | 61 72 65 66 20 73 74 72 75 63 74 20 2c 70 6f 73    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | aref.struct.,pos)............... | 
| 1a20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 1a40 | 20 20 28 61 73 65 74 20 73 74 72 75 63 74 20 2c    70 6f 73 20 2c 61 63 63 65 73 73 6f 72 2d 69 6e | ..(aset.struct.,pos.,accessor-in | 
| 1a60 | 69 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | it)))........................... | 
| 1a80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 4e 4f 54 45 3a 20 49 74 27 73 20 65 73 | ................;;.NOTE:.It's.es | 
| 1aa0 | 73 65 6e 74 69 61 6c 20 74 68 61 74 20 74 68 69    73 20 60 61 72 65 66 27 20 66 6f 72 6d 20 62 65 | sential.that.this.`aref'.form.be | 
| 1ac0 | 20 6c 61 73 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .last........................... | 
| 1ae0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 73 6f 20 74 68 65 20 67 76 2d 73 65 74 | ................;;.so.the.gv-set | 
| 1b00 | 74 65 72 20 77 6f 72 6b 73 20 69 6e 20 74 68 65    20 63 6f 6d 70 69 6c 65 72 20 6d 61 63 72 6f 2e | ter.works.in.the.compiler.macro. | 
| 1b20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 1b40 | 20 20 20 20 20 20 20 20 20 20 20 28 61 72 65 66    20 73 74 72 75 63 74 20 2c 70 6f 73 29 29 29 29 | ...........(aref.struct.,pos)))) | 
| 1b60 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 70 75 73 68 20 61 63 63 65 73 73 6f | ...................(push.accesso | 
| 1b80 | 72 2d 66 6f 72 6d 20 61 63 63 65 73 73 6f 72 2d    66 6f 72 6d 73 29 0a 20 20 20 20 20 20 20 20 20 | r-form.accessor-forms).......... | 
| 1ba0 | 20 20 20 20 20 20 20 20 20 3b 3b 20 52 65 6d 6f    76 65 20 61 63 63 65 73 73 6f 72 20 66 6f 72 6d | .........;;.Remove.accessor.form | 
| 1bc0 | 73 20 66 72 6f 6d 20 60 63 6c 2d 64 65 66 73 74    72 75 63 74 27 20 65 78 70 61 6e 73 69 6f 6e 2e | s.from.`cl-defstruct'.expansion. | 
| 1be0 | 20 20 54 68 69 73 20 6d 61 79 20 62 65 20 64 69    73 74 61 73 74 65 66 75 6c 2c 0a 20 20 20 20 20 | ..This.may.be.distasteful,...... | 
| 1c00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    62 75 74 20 69 74 20 77 6f 75 6c 64 20 73 65 65 | .............;;.but.it.would.see | 
| 1c20 | 6d 20 6d 6f 72 65 20 64 69 73 74 61 73 74 65 66    75 6c 20 74 6f 20 63 6f 70 79 20 61 6c 6c 20 6f | m.more.distasteful.to.copy.all.o | 
| 1c40 | 66 20 60 63 6c 2d 64 65 66 73 74 72 75 63 74 27    20 61 6e 64 20 70 6f 74 65 6e 74 69 61 6c 6c 79 | f.`cl-defstruct'.and.potentially | 
| 1c60 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 3b 3b 20 68 61 76 65 20 74 68 65 20 69 | ...................;;.have.the.i | 
| 1c80 | 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 64    69 76 65 72 67 65 20 69 6e 20 74 68 65 20 66 75 | mplementations.diverge.in.the.fu | 
| 1ca0 | 74 75 72 65 20 77 68 65 6e 20 45 6d 61 63 73 20    63 68 61 6e 67 65 73 20 28 65 2e 67 2e 20 74 68 | ture.when.Emacs.changes.(e.g..th | 
| 1cc0 | 65 20 6e 65 77 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 3b 3b 20 72 65 63 6f 72 | e.new...................;;.recor | 
| 1ce0 | 64 20 74 79 70 65 29 2e 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c | d.type)....................(cl-l | 
| 1d00 | 6f 6f 70 20 66 6f 72 20 66 6f 72 6d 20 69 6e 2d    72 65 66 20 63 6c 2d 64 65 66 73 74 72 75 63 74 | oop.for.form.in-ref.cl-defstruct | 
| 1d20 | 2d 65 78 70 61 6e 73 69 6f 6e 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -expansion...................... | 
| 1d40 | 20 20 20 20 20 20 64 6f 20 28 70 63 61 73 65 20    66 6f 72 6d 0a 20 20 20 20 20 20 20 20 20 20 20 | ......do.(pcase.form............ | 
| 1d60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 60 28 63 6c 2d 64 65 66 73 75 | .....................(`(cl-defsu | 
| 1d80 | 62 73 74 20 2c 28 61 6e 64 20 61 63 63 65 73 73    6f 72 20 28 67 75 61 72 64 20 28 65 71 20 61 63 | bst.,(and.accessor.(guard.(eq.ac | 
| 1da0 | 63 65 73 73 6f 72 20 61 63 63 65 73 73 6f 72 2d    6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 | cessor.accessor-name)))......... | 
| 1dc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 | ................................ | 
| 1de0 | 2c 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ,_)............................. | 
| 1e00 | 20 20 20 20 20 61 63 63 65 73 73 6f 72 20 20 3b    20 53 69 6c 65 6e 63 65 20 22 75 6e 75 73 65 64 | .....accessor..;.Silence."unused | 
| 1e20 | 20 6c 65 78 69 63 61 6c 20 76 61 72 69 61 62 6c    65 22 20 77 61 72 6e 69 6e 67 2e 0a 20 20 20 20 | .lexical.variable".warning...... | 
| 1e40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 | .............................(se | 
| 1e60 | 74 66 20 66 6f 72 6d 20 6e 69 6c 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tf.form.nil))))................. | 
| 1e80 | 20 20 3b 3b 20 41 6c 69 61 73 20 64 65 66 69 6e    69 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 20 20 | ..;;.Alias.definitions.......... | 
| 1ea0 | 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f    6f 70 20 66 6f 72 20 61 6c 69 61 73 20 69 6e 20 | ..........(cl-loop.for.alias.in. | 
| 1ec0 | 61 6c 69 61 73 65 73 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | aliases......................... | 
| 1ee0 | 20 20 20 66 6f 72 20 61 6c 69 61 73 2d 6e 61 6d    65 20 3d 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e | ...for.alias-name.=.(intern.(con | 
| 1f00 | 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65    20 73 74 72 75 63 74 2d 6e 61 6d 65 29 20 22 2d | cat.(symbol-name.struct-name)."- | 
| 1f20 | 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 61    6c 69 61 73 29 29 29 0a 20 20 20 20 20 20 20 20 | ".(symbol-name.alias)))......... | 
| 1f40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 64 6f 20 28 70 75 73 68 20 60 28 64 65 | ...................do.(push.`(de | 
| 1f60 | 66 61 6c 69 61 73 20 27 2c 61 6c 69 61 73 2d 6e    61 6d 65 20 27 2c 61 63 63 65 73 73 6f 72 2d 6e | falias.',alias-name.',accessor-n | 
| 1f80 | 61 6d 65 29 20 61 6c 69 61 73 2d 66 6f 72 6d 73    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ame).alias-forms)).............. | 
| 1fa0 | 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 53 65    74 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 | .....;;.TODO:.Setter............ | 
| 1fc0 | 20 20 20 20 20 20 20 3b 3b 20 2c 28 77 68 65 6e    20 28 70 6c 69 73 74 2d 67 65 74 20 73 6c 6f 74 | .......;;.,(when.(plist-get.slot | 
| 1fe0 | 2d 6f 70 74 69 6f 6e 73 20 3a 72 65 73 65 74 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -options.:reset)................ | 
| 2000 | 20 20 20 3b 3b 20 20 20 20 60 28 67 76 2d 64 65    66 69 6e 65 2d 73 65 74 74 65 72 20 2c 61 63 63 | ...;;....`(gv-define-setter.,acc | 
| 2020 | 65 73 73 6f 72 2d 6e 61 6d 65 20 28 74 73 20 76    61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 | essor-name.(ts.value)........... | 
| 2040 | 20 20 20 20 20 20 20 20 3b 3b 20 20 20 20 20 20    20 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 | ........;;.......`(progn........ | 
| 2060 | 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 20 20    20 20 20 20 20 20 20 28 61 73 65 74 20 2c 74 73 | ...........;;..........(aset.,ts | 
| 2080 | 20 2c 2c 70 6f 73 20 2c 76 61 6c 75 65 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .,,pos.,value).................. | 
| 20a0 | 20 3b 3b 20 20 20 20 20 20 20 20 20 20 28 73 65    74 66 20 28 74 73 2d 75 6e 69 78 20 74 73 29 20 | .;;..........(setf.(ts-unix.ts). | 
| 20c0 | 6e 69 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 29 29 0a 20 20 20 20 | ni))))...................))..... | 
| 20e0 | 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 2c    63 6c 2d 64 65 66 73 74 72 75 63 74 2d 65 78 70 | `(progn........,cl-defstruct-exp | 
| 2100 | 61 6e 73 69 6f 6e 0a 20 20 20 20 20 20 20 2c 40    61 63 63 65 73 73 6f 72 2d 66 6f 72 6d 73 0a 20 | ansion........,@accessor-forms.. | 
| 2120 | 20 20 20 20 20 20 2c 40 61 6c 69 61 73 2d 66 6f    72 6d 73 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a | ......,@alias-forms)))..;;.TODO: | 
| 2140 | 20 57 68 65 6e 20 61 20 66 69 65 6c 64 20 69 73    20 63 68 61 6e 67 65 64 2c 20 74 68 65 20 75 6e | .When.a.field.is.changed,.the.un | 
| 2160 | 69 78 2f 69 6e 74 65 72 6e 61 6c 20 73 6c 6f 74    20 6e 65 65 64 73 20 74 6f 20 62 65 20 75 70 64 | ix/internal.slot.needs.to.be.upd | 
| 2180 | 61 74 65 64 2e 20 20 4f 6e 20 74 68 65 20 6f 74    68 65 72 20 68 61 6e 64 2c 0a 3b 3b 20 6d 61 79 | ated...On.the.other.hand,.;;.may | 
| 21a0 | 62 65 20 6e 6f 74 2e 20 20 4d 61 79 62 65 20 60    74 73 2d 61 64 6a 75 73 74 27 20 73 68 6f 75 6c | be.not...Maybe.`ts-adjust'.shoul | 
| 21c0 | 64 20 62 65 20 74 68 65 20 6f 6e 6c 79 20 77 61    79 20 74 6f 20 61 64 6a 75 73 74 20 74 68 65 6d | d.be.the.only.way.to.adjust.them | 
| 21e0 | 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20 75 70    64 61 74 69 6e 67 20 74 68 65 0a 3b 3b 20 75 6e | ...Otherwise,.updating.the.;;.un | 
| 2200 | 69 78 2f 69 6e 74 65 72 6e 61 6c 20 74 69 6d 65    20 76 61 6c 75 65 20 77 68 65 6e 20 61 20 73 6c | ix/internal.time.value.when.a.sl | 
| 2220 | 6f 74 20 69 73 20 63 68 61 6e 67 65 64 20 67 65    74 73 20 72 65 61 6c 6c 79 20 63 6f 6d 70 6c 69 | ot.is.changed.gets.really.compli | 
| 2240 | 63 61 74 65 64 2c 20 61 6e 64 20 69 74 20 6d 69    67 68 74 20 6e 6f 74 20 62 65 0a 3b 3b 20 77 6f | cated,.and.it.might.not.be.;;.wo | 
| 2260 | 72 74 68 20 69 74 2e 20 20 4f 72 2c 20 61 74 20    6c 65 61 73 74 2c 20 6e 6f 74 20 69 6e 20 74 68 | rth.it...Or,.at.least,.not.in.th | 
| 2280 | 65 20 69 6e 69 74 69 61 6c 20 76 65 72 73 69 6f    6e 2e 0a 0a 28 74 73 2d 64 65 66 73 74 72 75 63 | e.initial.version...(ts-defstruc | 
| 22a0 | 74 20 74 73 0a 20 20 28 68 6f 75 72 0a 20 20 20    6e 69 6c 20 3a 61 63 63 65 73 73 6f 72 2d 69 6e | t.ts...(hour....nil.:accessor-in | 
| 22c0 | 69 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75    6d 62 65 72 20 28 66 6f 72 6d 61 74 2d 74 69 6d | it.(string-to-number.(format-tim | 
| 22e0 | 65 2d 73 74 72 69 6e 67 20 22 25 48 22 20 28 74    73 2d 75 6e 69 78 20 73 74 72 75 63 74 29 29 29 | e-string."%H".(ts-unix.struct))) | 
| 2300 | 0a 20 20 20 3a 61 6c 69 61 73 65 73 20 28 48 29    0a 20 20 20 3a 63 6f 6e 73 74 72 75 63 74 6f 72 | ....:aliases.(H)....:constructor | 
| 2320 | 20 22 25 48 22 0a 20 20 20 3a 74 79 70 65 20 69    6e 74 65 67 65 72 29 0a 20 20 28 6d 69 6e 75 74 | ."%H"....:type.integer)...(minut | 
| 2340 | 65 0a 20 20 20 6e 69 6c 20 3a 61 63 63 65 73 73    6f 72 2d 69 6e 69 74 20 28 73 74 72 69 6e 67 2d | e....nil.:accessor-init.(string- | 
| 2360 | 74 6f 2d 6e 75 6d 62 65 72 20 28 66 6f 72 6d 61    74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 | to-number.(format-time-string."% | 
| 2380 | 4d 22 20 28 74 73 2d 75 6e 69 78 20 73 74 72 75    63 74 29 29 29 0a 20 20 20 3a 61 6c 69 61 73 65 | M".(ts-unix.struct)))....:aliase | 
| 23a0 | 73 20 28 6d 69 6e 20 4d 29 0a 20 20 20 3a 63 6f    6e 73 74 72 75 63 74 6f 72 20 22 25 4d 22 0a 20 | s.(min.M)....:constructor."%M".. | 
| 23c0 | 20 20 3a 74 79 70 65 20 69 6e 74 65 67 65 72 29    0a 20 20 28 73 65 63 6f 6e 64 0a 20 20 20 6e 69 | ..:type.integer)...(second....ni | 
| 23e0 | 6c 20 3a 61 63 63 65 73 73 6f 72 2d 69 6e 69 74    20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 | l.:accessor-init.(string-to-numb | 
| 2400 | 65 72 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d    73 74 72 69 6e 67 20 22 25 53 22 20 28 74 73 2d | er.(format-time-string."%S".(ts- | 
| 2420 | 75 6e 69 78 20 73 74 72 75 63 74 29 29 29 0a 20    20 20 3a 61 6c 69 61 73 65 73 20 28 73 65 63 20 | unix.struct)))....:aliases.(sec. | 
| 2440 | 53 29 0a 20 20 20 3a 63 6f 6e 73 74 72 75 63 74    6f 72 20 22 25 53 22 0a 20 20 20 3a 74 79 70 65 | S)....:constructor."%S"....:type | 
| 2460 | 20 69 6e 74 65 67 65 72 29 0a 20 20 28 64 61 79    0a 20 20 20 6e 69 6c 20 3a 61 63 63 65 73 73 6f | .integer)...(day....nil.:accesso | 
| 2480 | 72 2d 69 6e 69 74 20 28 73 74 72 69 6e 67 2d 74    6f 2d 6e 75 6d 62 65 72 20 28 66 6f 72 6d 61 74 | r-init.(string-to-number.(format | 
| 24a0 | 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 64    22 20 28 74 73 2d 75 6e 69 78 20 73 74 72 75 63 | -time-string."%d".(ts-unix.struc | 
| 24c0 | 74 29 29 29 0a 20 20 20 3a 61 6c 69 61 73 65 73    20 28 64 61 79 2d 6f 66 2d 6d 6f 6e 74 68 2d 6e | t)))....:aliases.(day-of-month-n | 
| 24e0 | 75 6d 20 64 6f 6d 20 64 29 0a 20 20 20 3a 63 6f    6e 73 74 72 75 63 74 6f 72 20 22 25 64 22 0a 20 | um.dom.d)....:constructor."%d".. | 
| 2500 | 20 20 3a 74 79 70 65 20 69 6e 74 65 67 65 72 29    0a 20 20 28 6d 6f 6e 74 68 0a 20 20 20 6e 69 6c | ..:type.integer)...(month....nil | 
| 2520 | 20 3a 61 63 63 65 73 73 6f 72 2d 69 6e 69 74 20    28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 | .:accessor-init.(string-to-numbe | 
| 2540 | 72 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73    74 72 69 6e 67 20 22 25 6d 22 20 28 74 73 2d 75 | r.(format-time-string."%m".(ts-u | 
| 2560 | 6e 69 78 20 73 74 72 75 63 74 29 29 29 0a 20 20    20 3a 61 6c 69 61 73 65 73 20 28 6d 6f 6e 74 68 | nix.struct)))....:aliases.(month | 
| 2580 | 2d 6e 75 6d 20 6d 6f 79 20 6d 29 0a 20 20 20 3a    63 6f 6e 73 74 72 75 63 74 6f 72 20 22 25 6d 22 | -num.moy.m)....:constructor."%m" | 
| 25a0 | 0a 20 20 20 3a 74 79 70 65 20 69 6e 74 65 67 65    72 29 0a 20 20 28 79 65 61 72 0a 20 20 20 6e 69 | ....:type.integer)...(year....ni | 
| 25c0 | 6c 20 3a 61 63 63 65 73 73 6f 72 2d 69 6e 69 74    20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 | l.:accessor-init.(string-to-numb | 
| 25e0 | 65 72 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d    73 74 72 69 6e 67 20 22 25 59 22 20 28 74 73 2d | er.(format-time-string."%Y".(ts- | 
| 2600 | 75 6e 69 78 20 73 74 72 75 63 74 29 29 29 0a 20    20 20 3a 61 6c 69 61 73 65 73 20 28 59 29 0a 20 | unix.struct)))....:aliases.(Y).. | 
| 2620 | 20 20 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 22    25 59 22 0a 20 20 20 3a 74 79 70 65 20 69 6e 74 | ..:constructor."%Y"....:type.int | 
| 2640 | 65 67 65 72 29 0a 0a 20 20 28 64 6f 77 0a 20 20    20 6e 69 6c 20 3a 61 63 63 65 73 73 6f 72 2d 69 | eger)....(dow....nil.:accessor-i | 
| 2660 | 6e 69 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e    75 6d 62 65 72 20 28 66 6f 72 6d 61 74 2d 74 69 | nit.(string-to-number.(format-ti | 
| 2680 | 6d 65 2d 73 74 72 69 6e 67 20 22 25 77 22 20 28    74 73 2d 75 6e 69 78 20 73 74 72 75 63 74 29 29 | me-string."%w".(ts-unix.struct)) | 
| 26a0 | 29 0a 20 20 20 3a 61 6c 69 61 73 65 73 20 28 64    61 79 2d 6f 66 2d 77 65 65 6b 2d 6e 75 6d 29 0a | )....:aliases.(day-of-week-num). | 
| 26c0 | 20 20 20 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20    22 25 77 22 0a 20 20 20 3a 74 79 70 65 20 69 6e | ...:constructor."%w"....:type.in | 
| 26e0 | 74 65 67 65 72 29 0a 20 20 28 64 61 79 2d 61 62    62 72 0a 20 20 20 6e 69 6c 20 3a 61 63 63 65 73 | teger)...(day-abbr....nil.:acces | 
| 2700 | 73 6f 72 2d 69 6e 69 74 20 28 66 6f 72 6d 61 74    2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 61 | sor-init.(format-time-string."%a | 
| 2720 | 22 20 28 74 73 2d 75 6e 69 78 20 73 74 72 75 63    74 29 29 0a 20 20 20 3a 61 6c 69 61 73 65 73 20 | ".(ts-unix.struct))....:aliases. | 
| 2740 | 28 64 61 79 2d 6f 66 2d 77 65 65 6b 2d 61 62 62    72 29 0a 20 20 20 3a 63 6f 6e 73 74 72 75 63 74 | (day-of-week-abbr)....:construct | 
| 2760 | 6f 72 20 22 25 61 22 29 0a 20 20 28 64 61 79 2d    6e 61 6d 65 0a 20 20 20 6e 69 6c 20 3a 61 63 63 | or."%a")...(day-name....nil.:acc | 
| 2780 | 65 73 73 6f 72 2d 69 6e 69 74 20 28 66 6f 72 6d    61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 | essor-init.(format-time-string." | 
| 27a0 | 25 41 22 20 28 74 73 2d 75 6e 69 78 20 73 74 72    75 63 74 29 29 0a 20 20 20 3a 61 6c 69 61 73 65 | %A".(ts-unix.struct))....:aliase | 
| 27c0 | 73 20 28 64 61 79 2d 6f 66 2d 77 65 65 6b 2d 6e    61 6d 65 29 0a 20 20 20 3a 63 6f 6e 73 74 72 75 | s.(day-of-week-name)....:constru | 
| 27e0 | 63 74 6f 72 20 22 25 41 22 29 0a 20 20 3b 3b 20    28 64 6f 65 20 6e 69 6c 0a 20 20 3b 3b 20 20 20 | ctor."%A")...;;.(doe.nil...;;... | 
| 2800 | 20 20 20 3a 61 63 63 65 73 73 6f 72 2d 69 6e 69    74 20 28 64 61 79 73 2d 62 65 74 77 65 65 6e 20 | ...:accessor-init.(days-between. | 
| 2820 | 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72    69 6e 67 20 22 25 59 2d 25 6d 2d 25 64 20 30 30 | (format-time-string."%Y-%m-%d.00 | 
| 2840 | 3a 30 30 3a 30 30 22 20 28 74 73 2d 75 6e 69 78    20 73 74 72 75 63 74 29 29 0a 20 20 3b 3b 20 20 | :00:00".(ts-unix.struct))...;;.. | 
| 2860 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 2880 | 20 22 31 39 37 30 2d 30 31 2d 30 31 20 30 30 3a    30 30 3a 30 30 22 29 0a 20 20 3b 3b 20 20 20 20 | ."1970-01-01.00:00:00")...;;.... | 
| 28a0 | 20 20 3a 61 6c 69 61 73 65 73 20 28 64 61 79 2d    6f 66 2d 65 70 6f 63 68 29 29 0a 20 20 28 64 6f | ..:aliases.(day-of-epoch))...(do | 
| 28c0 | 79 0a 20 20 20 6e 69 6c 20 3a 61 63 63 65 73 73    6f 72 2d 69 6e 69 74 20 28 73 74 72 69 6e 67 2d | y....nil.:accessor-init.(string- | 
| 28e0 | 74 6f 2d 6e 75 6d 62 65 72 20 28 66 6f 72 6d 61    74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 | to-number.(format-time-string."% | 
| 2900 | 6a 22 20 28 74 73 2d 75 6e 69 78 20 73 74 72 75    63 74 29 29 29 0a 20 20 20 3a 61 6c 69 61 73 65 | j".(ts-unix.struct)))....:aliase | 
| 2920 | 73 20 28 64 61 79 2d 6f 66 2d 79 65 61 72 29 0a    20 20 20 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 | s.(day-of-year)....:constructor. | 
| 2940 | 22 25 6a 22 0a 20 20 20 3a 74 79 70 65 20 69 6e    74 65 67 65 72 29 0a 0a 20 20 28 77 6f 79 0a 20 | "%j"....:type.integer)....(woy.. | 
| 2960 | 20 20 6e 69 6c 20 3a 61 63 63 65 73 73 6f 72 2d    69 6e 69 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d | ..nil.:accessor-init.(string-to- | 
| 2980 | 6e 75 6d 62 65 72 20 28 66 6f 72 6d 61 74 2d 74    69 6d 65 2d 73 74 72 69 6e 67 20 22 25 56 22 20 | number.(format-time-string."%V". | 
| 29a0 | 28 74 73 2d 75 6e 69 78 20 73 74 72 75 63 74 29    29 29 0a 20 20 20 3a 61 6c 69 61 73 65 73 20 28 | (ts-unix.struct)))....:aliases.( | 
| 29c0 | 77 65 65 6b 20 77 65 65 6b 2d 6f 66 2d 79 65 61    72 29 0a 20 20 20 3a 63 6f 6e 73 74 72 75 63 74 | week.week-of-year)....:construct | 
| 29e0 | 6f 72 20 22 25 56 22 0a 20 20 20 3a 74 79 70 65    20 69 6e 74 65 67 65 72 29 0a 0a 20 20 28 6d 6f | or."%V"....:type.integer)....(mo | 
| 2a00 | 6e 74 68 2d 61 62 62 72 0a 20 20 20 6e 69 6c 20    3a 61 63 63 65 73 73 6f 72 2d 69 6e 69 74 20 28 | nth-abbr....nil.:accessor-init.( | 
| 2a20 | 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69    6e 67 20 22 25 62 22 20 28 74 73 2d 75 6e 69 78 | format-time-string."%b".(ts-unix | 
| 2a40 | 20 73 74 72 75 63 74 29 29 0a 20 20 20 3a 61 6c    69 61 73 65 73 20 28 62 29 0a 20 20 20 3a 63 6f | .struct))....:aliases.(b)....:co | 
| 2a60 | 6e 73 74 72 75 63 74 6f 72 20 22 25 62 22 29 0a    20 20 28 6d 6f 6e 74 68 2d 6e 61 6d 65 0a 20 20 | nstructor."%b")...(month-name... | 
| 2a80 | 20 6e 69 6c 20 3a 61 63 63 65 73 73 6f 72 2d 69    6e 69 74 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 | .nil.:accessor-init.(format-time | 
| 2aa0 | 2d 73 74 72 69 6e 67 20 22 25 42 22 20 28 74 73    2d 75 6e 69 78 20 73 74 72 75 63 74 29 29 0a 20 | -string."%B".(ts-unix.struct)).. | 
| 2ac0 | 20 20 3a 61 6c 69 61 73 65 73 20 28 42 29 0a 20    20 20 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 22 | ..:aliases.(B)....:constructor." | 
| 2ae0 | 25 42 22 29 0a 0a 20 20 28 74 7a 2d 61 62 62 72    0a 20 20 20 6e 69 6c 20 3a 61 63 63 65 73 73 6f | %B")....(tz-abbr....nil.:accesso | 
| 2b00 | 72 2d 69 6e 69 74 20 28 66 6f 72 6d 61 74 2d 74    69 6d 65 2d 73 74 72 69 6e 67 20 22 25 5a 22 20 | r-init.(format-time-string."%Z". | 
| 2b20 | 28 74 73 2d 75 6e 69 78 20 73 74 72 75 63 74 29    29 0a 20 20 20 3a 63 6f 6e 73 74 72 75 63 74 6f | (ts-unix.struct))....:constructo | 
| 2b40 | 72 20 22 25 5a 22 29 0a 20 20 28 74 7a 2d 6f 66    66 73 65 74 0a 20 20 20 6e 69 6c 20 3a 61 63 63 | r."%Z")...(tz-offset....nil.:acc | 
| 2b60 | 65 73 73 6f 72 2d 69 6e 69 74 20 28 66 6f 72 6d    61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 | essor-init.(format-time-string." | 
| 2b80 | 25 7a 22 20 28 74 73 2d 75 6e 69 78 20 73 74 72    75 63 74 29 29 0a 20 20 20 3a 63 6f 6e 73 74 72 | %z".(ts-unix.struct))....:constr | 
| 2ba0 | 75 63 74 6f 72 20 22 25 7a 22 29 0a 20 20 3b 3b    20 4d 41 59 42 45 3a 20 41 64 64 20 74 7a 2d 6f | uctor."%z")...;;.MAYBE:.Add.tz-o | 
| 2bc0 | 66 66 73 65 74 2d 6d 69 6e 75 74 65 73 0a 0a 20    20 28 69 6e 74 65 72 6e 61 6c 0a 20 20 20 6e 69 | ffset-minutes....(internal....ni | 
| 2be0 | 6c 20 3a 61 63 63 65 73 73 6f 72 2d 69 6e 69 74    20 28 61 70 70 6c 79 20 23 27 65 6e 63 6f 64 65 | l.:accessor-init.(apply.#'encode | 
| 2c00 | 2d 74 69 6d 65 20 28 64 65 63 6f 64 65 2d 74 69    6d 65 20 28 74 73 2d 75 6e 69 78 20 73 74 72 75 | -time.(decode-time.(ts-unix.stru | 
| 2c20 | 63 74 29 29 29 29 0a 20 20 28 75 6e 69 78 0a 20    20 20 6e 69 6c 20 3a 61 63 63 65 73 73 6f 72 2d | ct))))...(unix....nil.:accessor- | 
| 2c40 | 69 6e 69 74 20 28 70 63 61 73 65 2d 6c 65 74 2a    20 28 28 28 63 6c 2d 73 74 72 75 63 74 20 74 73 | init.(pcase-let*.(((cl-struct.ts | 
| 2c60 | 20 73 65 63 6f 6e 64 20 6d 69 6e 75 74 65 20 68    6f 75 72 20 64 61 79 20 6d 6f 6e 74 68 20 79 65 | .second.minute.hour.day.month.ye | 
| 2c80 | 61 72 29 20 73 74 72 75 63 74 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ar).struct)).................... | 
| 2ca0 | 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 73 65    63 6f 6e 64 20 6d 69 6e 75 74 65 20 68 6f 75 72 | .....(if.(and.second.minute.hour | 
| 2cc0 | 20 64 61 79 20 6d 6f 6e 74 68 20 79 65 61 72 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .day.month.year)................ | 
| 2ce0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6c    6f 61 74 2d 74 69 6d 65 20 28 65 6e 63 6f 64 65 | .............(float-time.(encode | 
| 2d00 | 2d 74 69 6d 65 20 73 65 63 6f 6e 64 20 6d 69 6e    75 74 65 20 68 6f 75 72 20 64 61 79 20 6d 6f 6e | -time.second.minute.hour.day.mon | 
| 2d20 | 74 68 20 79 65 61 72 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | th.year))....................... | 
| 2d40 | 20 20 20 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29    29 29 29 29 0a 0a 3b 3b 3b 3b 20 53 75 62 73 74 | ....(float-time)))))..;;;;.Subst | 
| 2d60 | 73 0a 0a 28 64 65 66 75 6e 20 74 73 2d 6e 6f 77    20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 60 74 | s..(defun.ts-now.()..."Return.`t | 
| 2d80 | 73 27 20 73 74 72 75 63 74 20 73 65 74 20 74 6f    20 6e 6f 77 2e 0a 54 68 69 73 20 69 73 20 61 20 | s'.struct.set.to.now..This.is.a. | 
| 2da0 | 6e 6f 6e 2d 69 6e 6c 69 6e 65 64 20 66 75 6e 63    74 69 6f 6e 2c 20 73 6f 20 69 74 20 6d 61 79 20 | non-inlined.function,.so.it.may. | 
| 2dc0 | 62 65 20 72 65 62 6f 75 6e 64 2c 20 65 2e 67 2e    20 77 69 74 68 0a 60 63 6c 2d 6c 65 74 66 27 20 | be.rebound,.e.g..with.`cl-letf'. | 
| 2de0 | 66 6f 72 20 74 65 73 74 69 6e 67 2e 22 0a 20 20    28 6d 61 6b 65 2d 74 73 20 3a 75 6e 69 78 20 28 | for.testing."...(make-ts.:unix.( | 
| 2e00 | 66 6c 6f 61 74 2d 74 69 6d 65 29 29 29 0a 0a 28    64 65 66 73 75 62 73 74 20 74 73 2d 66 6f 72 6d | float-time)))..(defsubst.ts-form | 
| 2e20 | 61 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 74 73    2d 6f 72 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e | at.(&optional.ts-or-format-strin | 
| 2e40 | 67 20 74 73 29 0a 20 20 22 46 6f 72 6d 61 74 20    74 69 6d 65 73 74 61 6d 70 20 77 69 74 68 20 60 | g.ts)..."Format.timestamp.with.` | 
| 2e60 | 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69    6e 67 27 2e 0a 49 66 20 54 53 2d 4f 52 2d 46 4f | format-time-string'..If.TS-OR-FO | 
| 2e80 | 52 4d 41 54 2d 53 54 52 49 4e 47 20 69 73 20 61    20 74 69 6d 65 73 74 61 6d 70 20 6f 72 20 6e 69 | RMAT-STRING.is.a.timestamp.or.ni | 
| 2ea0 | 6c 2c 20 75 73 65 20 74 68 65 20 76 61 6c 75 65    20 6f 66 0a 60 74 73 2d 64 65 66 61 75 6c 74 2d | l,.use.the.value.of.`ts-default- | 
| 2ec0 | 66 6f 72 6d 61 74 27 2e 20 20 49 66 20 62 6f 74    68 20 54 53 2d 4f 52 2d 46 4f 52 4d 41 54 2d 53 | format'...If.both.TS-OR-FORMAT-S | 
| 2ee0 | 54 52 49 4e 47 20 61 6e 64 20 54 53 20 61 72 65    20 6e 69 6c 2c 0a 75 73 65 20 74 68 65 20 63 75 | TRING.and.TS.are.nil,.use.the.cu | 
| 2f00 | 72 72 65 6e 74 20 74 69 6d 65 2e 22 0a 20 20 28    63 6c 2d 65 74 79 70 65 63 61 73 65 20 74 73 2d | rrent.time."...(cl-etypecase.ts- | 
| 2f20 | 6f 72 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67    0a 20 20 20 20 28 74 73 20 28 66 6f 72 6d 61 74 | or-format-string.....(ts.(format | 
| 2f40 | 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 74 73 2d    64 65 66 61 75 6c 74 2d 66 6f 72 6d 61 74 20 28 | -time-string.ts-default-format.( | 
| 2f60 | 74 73 2d 75 6e 69 78 20 74 73 2d 6f 72 2d 66 6f    72 6d 61 74 2d 73 74 72 69 6e 67 29 29 29 0a 20 | ts-unix.ts-or-format-string))).. | 
| 2f80 | 20 20 20 28 73 74 72 69 6e 67 20 28 63 6c 2d 65    74 79 70 65 63 61 73 65 20 74 73 0a 20 20 20 20 | ...(string.(cl-etypecase.ts..... | 
| 2fa0 | 20 20 20 20 20 20 20 20 20 20 28 74 73 20 28 66    6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e | ..........(ts.(format-time-strin | 
| 2fc0 | 67 20 74 73 2d 6f 72 2d 66 6f 72 6d 61 74 2d 73    74 72 69 6e 67 20 28 74 73 2d 75 6e 69 78 20 74 | g.ts-or-format-string.(ts-unix.t | 
| 2fe0 | 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6e 75 6c 6c 20 28 66 6f 72 6d 61 74 | s)))...............(null.(format | 
| 3000 | 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 74 73 2d    6f 72 2d 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 | -time-string.ts-or-format-string | 
| 3020 | 29 29 29 29 0a 20 20 20 20 28 6e 75 6c 6c 20 28    63 6c 2d 65 74 79 70 65 63 61 73 65 20 74 73 0a | )))).....(null.(cl-etypecase.ts. | 
| 3040 | 20 20 20 20 20 20 20 20 20 20 20 20 28 74 73 20    28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 | ............(ts.(format-time-str | 
| 3060 | 69 6e 67 20 74 73 2d 64 65 66 61 75 6c 74 2d 66    6f 72 6d 61 74 20 28 74 73 2d 75 6e 69 78 20 74 | ing.ts-default-format.(ts-unix.t | 
| 3080 | 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 6e 75 6c 6c 20 28 66 6f 72 6d 61 74 2d 74 | s))).............(null.(format-t | 
| 30a0 | 69 6d 65 2d 73 74 72 69 6e 67 20 74 73 2d 64 65    66 61 75 6c 74 2d 66 6f 72 6d 61 74 29 29 29 29 | ime-string.ts-default-format)))) | 
| 30c0 | 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 74 73    2d 70 61 72 73 65 20 28 73 74 72 69 6e 67 29 0a | ))..(defsubst.ts-parse.(string). | 
| 30e0 | 20 20 22 52 65 74 75 72 6e 20 6e 65 77 20 60 74    73 27 20 73 74 72 75 63 74 2c 20 70 61 72 73 69 | .."Return.new.`ts'.struct,.parsi | 
| 3100 | 6e 67 20 53 54 52 49 4e 47 20 77 69 74 68 20 60    70 61 72 73 65 2d 74 69 6d 65 2d 73 74 72 69 6e | ng.STRING.with.`parse-time-strin | 
| 3120 | 67 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 61    72 73 65 64 20 28 70 61 72 73 65 2d 74 69 6d 65 | g'."...(let.((parsed.(parse-time | 
| 3140 | 2d 73 74 72 69 6e 67 20 73 74 72 69 6e 67 29 29    29 0a 20 20 20 20 3b 3b 20 46 69 6c 6c 20 6e 69 | -string.string))).....;;.Fill.ni | 
| 3160 | 6c 20 76 61 6c 75 65 73 0a 20 20 20 20 28 63 6c    2d 6c 6f 6f 70 20 66 6f 72 20 69 20 66 72 6f 6d | l.values.....(cl-loop.for.i.from | 
| 3180 | 20 30 20 74 6f 20 35 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 77 68 65 6e 20 28 6e 75 6c 6c 20 | .0.to.5..............when.(null. | 
| 31a0 | 28 6e 74 68 20 69 20 70 61 72 73 65 64 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 | (nth.i.parsed))..............do. | 
| 31c0 | 28 73 65 74 66 20 28 6e 74 68 20 69 20 70 61 72    73 65 64 29 20 30 29 29 0a 20 20 20 20 28 2d 3e | (setf.(nth.i.parsed).0)).....(-> | 
| 31e0 | 3e 20 70 61 72 73 65 64 0a 20 20 20 20 20 20 20    20 20 28 61 70 70 6c 79 20 23 27 65 6e 63 6f 64 | >.parsed..........(apply.#'encod | 
| 3200 | 65 2d 74 69 6d 65 29 0a 20 20 20 20 20 20 20 20    20 66 6c 6f 61 74 2d 74 69 6d 65 0a 20 20 20 20 | e-time)..........float-time..... | 
| 3220 | 20 20 20 20 20 28 6d 61 6b 65 2d 74 73 20 3a 75    6e 69 78 29 29 29 29 0a 0a 28 64 65 66 73 75 62 | .....(make-ts.:unix))))..(defsub | 
| 3240 | 73 74 20 74 73 2d 70 61 72 73 65 2d 66 69 6c 6c    20 28 66 69 6c 6c 20 73 74 72 69 6e 67 29 0a 20 | st.ts-parse-fill.(fill.string).. | 
| 3260 | 20 22 52 65 74 75 72 6e 20 6e 65 77 20 60 74 73    27 20 73 74 72 75 63 74 2c 20 70 61 72 73 69 6e | ."Return.new.`ts'.struct,.parsin | 
| 3280 | 67 20 53 54 52 49 4e 47 20 77 69 74 68 20 60 70    61 72 73 65 2d 74 69 6d 65 2d 73 74 72 69 6e 67 | g.STRING.with.`parse-time-string | 
| 32a0 | 27 2e 0a 45 6d 70 74 79 20 68 6f 75 72 2f 6d 69    6e 75 74 65 2f 73 65 63 6f 6e 64 20 76 61 6c 75 | '..Empty.hour/minute/second.valu | 
| 32c0 | 65 73 20 61 72 65 20 66 69 6c 6c 65 64 20 61 63    63 6f 72 64 69 6e 67 20 74 6f 20 46 49 4c 4c 3a | es.are.filled.according.to.FILL: | 
| 32e0 | 20 69 66 0a 60 62 65 67 69 6e 27 2c 20 77 69 74    68 20 30 3b 20 69 66 20 60 65 6e 64 27 2c 20 68 | .if.`begin',.with.0;.if.`end',.h | 
| 3300 | 6f 75 72 20 69 73 20 66 69 6c 6c 65 64 20 77 69    74 68 20 32 33 20 61 6e 64 0a 6d 69 6e 75 74 65 | our.is.filled.with.23.and.minute | 
| 3320 | 2f 73 65 63 6f 6e 64 20 77 69 74 68 20 35 39 3b    20 69 66 20 6e 69 6c 2c 20 61 6e 20 65 72 72 6f | /second.with.59;.if.nil,.an.erro | 
| 3340 | 72 20 6d 61 79 20 62 65 20 73 69 67 6e 61 6c 65    64 20 77 68 65 6e 20 74 69 6d 65 0a 76 61 6c 75 | r.may.be.signaled.when.time.valu | 
| 3360 | 65 73 20 61 72 65 20 65 6d 70 74 79 2e 0a 0a 4e    6f 74 65 20 74 68 61 74 20 77 68 65 6e 20 46 49 | es.are.empty...Note.that.when.FI | 
| 3380 | 4c 4c 20 69 73 20 60 65 6e 64 27 2c 20 61 20 74    69 6d 65 20 76 61 6c 75 65 20 6c 69 6b 65 20 5c | LL.is.`end',.a.time.value.like.\ | 
| 33a0 | 22 31 32 3a 31 32 5c 22 20 69 73 0a 66 69 6c 6c    65 64 20 74 6f 20 5c 22 31 32 3a 31 32 3a 30 30 | "12:12\".is.filled.to.\"12:12:00 | 
| 33c0 | 5c 22 2c 20 6e 6f 74 20 5c 22 31 32 3a 31 32 3a    35 39 5c 22 2e 22 0a 20 20 28 6c 65 74 20 28 28 | \",.not.\"12:12:59\"."...(let.(( | 
| 33e0 | 70 61 72 73 65 64 20 28 70 61 72 73 65 2d 74 69    6d 65 2d 73 74 72 69 6e 67 20 73 74 72 69 6e 67 | parsed.(parse-time-string.string | 
| 3400 | 29 29 29 0a 20 20 20 20 3b 3b 20 46 69 6c 6c 20    6e 69 6c 20 76 61 6c 75 65 73 0a 20 20 20 20 28 | ))).....;;.Fill.nil.values.....( | 
| 3420 | 70 63 61 73 65 2d 65 78 68 61 75 73 74 69 76 65    20 66 69 6c 6c 0a 20 20 20 20 20 20 28 27 62 65 | pcase-exhaustive.fill.......('be | 
| 3440 | 67 69 6e 20 28 75 6e 6c 65 73 73 20 28 6e 74 68    20 30 20 70 61 72 73 65 64 29 0a 20 20 20 20 20 | gin.(unless.(nth.0.parsed)...... | 
| 3460 | 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66    20 28 6e 74 68 20 30 20 70 61 72 73 65 64 29 20 | ...........(setf.(nth.0.parsed). | 
| 3480 | 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 75 6e 6c 65 73 73 20 28 6e 74 68 20 31 | 0))...............(unless.(nth.1 | 
| 34a0 | 20 70 61 72 73 65 64 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 | .parsed).................(setf.( | 
| 34c0 | 6e 74 68 20 31 20 70 61 72 73 65 64 29 20 30 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | nth.1.parsed).0))............... | 
| 34e0 | 28 75 6e 6c 65 73 73 20 28 6e 74 68 20 32 20 70    61 72 73 65 64 29 0a 20 20 20 20 20 20 20 20 20 | (unless.(nth.2.parsed).......... | 
| 3500 | 20 20 20 20 20 20 20 28 73 65 74 66 20 28 6e 74    68 20 32 20 70 61 72 73 65 64 29 20 30 29 29 29 | .......(setf.(nth.2.parsed).0))) | 
| 3520 | 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20    57 68 65 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 | .......;;.NOTE:.When.the.second. | 
| 3540 | 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 70 72 65    73 65 6e 74 20 69 6e 20 74 68 65 20 73 74 72 69 | value.is.not.present.in.the.stri | 
| 3560 | 6e 67 2c 20 69 74 27 73 0a 20 20 20 20 20 20 3b    3b 20 73 65 74 20 74 6f 20 30 2c 20 65 76 65 6e | ng,.it's.......;;.set.to.0,.even | 
| 3580 | 20 77 68 65 6e 20 46 49 4c 4c 20 69 73 20 60 65    6e 64 27 2e 20 20 49 6e 20 61 20 77 61 79 20 74 | .when.FILL.is.`end'...In.a.way.t | 
| 35a0 | 68 69 73 20 73 65 65 6d 73 20 77 72 6f 6e 67 2c    0a 20 20 20 20 20 20 3b 3b 20 62 75 74 20 6f 6e | his.seems.wrong,.......;;.but.on | 
| 35c0 | 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c    20 22 31 32 3a 31 32 22 20 61 73 20 61 20 70 6c | .the.other.hand,."12:12".as.a.pl | 
| 35e0 | 61 69 6e 20 74 69 6d 65 20 76 61 6c 75 65 20 69    73 20 61 73 73 75 6d 65 64 0a 20 20 20 20 20 20 | ain.time.value.is.assumed....... | 
| 3600 | 3b 3b 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74    68 65 20 6d 6f 6d 65 6e 74 20 69 74 20 62 65 63 | ;;.to.refer.to.the.moment.it.bec | 
| 3620 | 6f 6d 65 73 20 31 32 3a 31 32 2c 20 77 68 69 63    68 20 6d 65 61 6e 73 20 30 20 73 65 63 6f 6e 64 | omes.12:12,.which.means.0.second | 
| 3640 | 73 2e 0a 20 20 20 20 20 20 28 27 65 6e 64 20 28    75 6e 6c 65 73 73 20 28 6e 74 68 20 30 20 70 61 | s........('end.(unless.(nth.0.pa | 
| 3660 | 72 73 65 64 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 65 74 66 20 28 6e 74 68 20 30 | rsed)...............(setf.(nth.0 | 
| 3680 | 20 70 61 72 73 65 64 29 20 35 39 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 | .parsed).59)).............(unles | 
| 36a0 | 73 20 28 6e 74 68 20 31 20 70 61 72 73 65 64 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | s.(nth.1.parsed)...............( | 
| 36c0 | 73 65 74 66 20 28 6e 74 68 20 31 20 70 61 72 73    65 64 29 20 35 39 29 29 0a 20 20 20 20 20 20 20 | setf.(nth.1.parsed).59))........ | 
| 36e0 | 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6e 74    68 20 32 20 70 61 72 73 65 64 29 0a 20 20 20 20 | .....(unless.(nth.2.parsed)..... | 
| 3700 | 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20    28 6e 74 68 20 32 20 70 61 72 73 65 64 29 20 32 | ..........(setf.(nth.2.parsed).2 | 
| 3720 | 33 29 29 29 0a 20 20 20 20 20 20 28 60 6e 69 6c    20 6e 69 6c 29 29 0a 20 20 20 20 28 2d 3e 3e 20 | 3))).......(`nil.nil)).....(->>. | 
| 3740 | 70 61 72 73 65 64 0a 20 20 20 20 20 20 20 20 20    28 61 70 70 6c 79 20 23 27 65 6e 63 6f 64 65 2d | parsed..........(apply.#'encode- | 
| 3760 | 74 69 6d 65 29 0a 20 20 20 20 20 20 20 20 20 66    6c 6f 61 74 2d 74 69 6d 65 0a 20 20 20 20 20 20 | time)..........float-time....... | 
| 3780 | 20 20 20 28 6d 61 6b 65 2d 74 73 20 3a 75 6e 69    78 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 | ...(make-ts.:unix))))..(defsubst | 
| 37a0 | 20 74 73 2d 72 65 73 65 74 20 28 74 73 29 0a 20    20 22 52 65 74 75 72 6e 20 54 53 20 77 69 74 68 | .ts-reset.(ts)..."Return.TS.with | 
| 37c0 | 20 61 6c 6c 20 73 6c 6f 74 73 20 63 6c 65 61 72    65 64 20 65 78 63 65 70 74 20 60 75 6e 69 78 27 | .all.slots.cleared.except.`unix' | 
| 37e0 | 2e 0a 4e 6f 6e 2d 64 65 73 74 72 75 63 74 69 76    65 2e 20 20 54 68 65 20 73 61 6d 65 20 61 73 3a | ..Non-destructive...The.same.as: | 
| 3800 | 0a 0a 20 20 20 20 28 6d 61 6b 65 2d 74 73 20 3a    75 6e 69 78 20 28 74 73 2d 75 6e 69 78 20 74 73 | ......(make-ts.:unix.(ts-unix.ts | 
| 3820 | 29 29 22 0a 20 20 28 6d 61 6b 65 2d 74 73 20 3a    75 6e 69 78 20 28 74 73 2d 75 6e 69 78 20 74 73 | ))"...(make-ts.:unix.(ts-unix.ts | 
| 3840 | 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 74    73 2d 75 70 64 61 74 65 20 28 74 73 29 0a 20 20 | )))..(defsubst.ts-update.(ts)... | 
| 3860 | 22 52 65 74 75 72 6e 20 74 69 6d 65 73 74 61 6d    70 20 54 53 20 61 66 74 65 72 20 75 70 64 61 74 | "Return.timestamp.TS.after.updat | 
| 3880 | 69 6e 67 20 69 74 73 20 55 6e 69 78 20 74 69 6d    65 73 74 61 6d 70 20 66 72 6f 6d 20 69 74 73 20 | ing.its.Unix.timestamp.from.its. | 
| 38a0 | 6f 74 68 65 72 20 73 6c 6f 74 73 2e 0a 4e 6f 6e    2d 64 65 73 74 72 75 63 74 69 76 65 2e 20 20 54 | other.slots..Non-destructive...T | 
| 38c0 | 6f 20 62 65 20 75 73 65 64 20 61 66 74 65 72 20    73 65 74 74 69 6e 67 20 73 6c 6f 74 73 20 77 69 | o.be.used.after.setting.slots.wi | 
| 38e0 | 74 68 2c 0a 65 2e 67 2e 20 60 74 73 2d 66 69 6c    6c 27 2e 22 0a 20 20 28 70 63 61 73 65 2d 6c 65 | th,.e.g..`ts-fill'."...(pcase-le | 
| 3900 | 74 2a 20 28 28 28 63 6c 2d 73 74 72 75 63 74 20    74 73 20 73 65 63 6f 6e 64 20 6d 69 6e 75 74 65 | t*.(((cl-struct.ts.second.minute | 
| 3920 | 20 68 6f 75 72 20 64 61 79 20 6d 6f 6e 74 68 20    79 65 61 72 29 20 74 73 29 29 0a 20 20 20 20 28 | .hour.day.month.year).ts)).....( | 
| 3940 | 6d 61 6b 65 2d 74 73 20 3a 75 6e 69 78 20 28 66    6c 6f 61 74 2d 74 69 6d 65 20 28 65 6e 63 6f 64 | make-ts.:unix.(float-time.(encod | 
| 3960 | 65 2d 74 69 6d 65 20 73 65 63 6f 6e 64 20 6d 69    6e 75 74 65 20 68 6f 75 72 20 64 61 79 20 6d 6f | e-time.second.minute.hour.day.mo | 
| 3980 | 6e 74 68 20 79 65 61 72 29 29 29 29 29 0a 0a 28    64 65 66 73 75 62 73 74 20 74 73 2d 70 61 72 73 | nth.year)))))..(defsubst.ts-pars | 
| 39a0 | 65 2d 6f 72 67 2d 65 6c 65 6d 65 6e 74 20 28 65    6c 65 6d 65 6e 74 29 0a 20 20 22 52 65 74 75 72 | e-org-element.(element)..."Retur | 
| 39c0 | 6e 20 74 69 6d 65 73 74 61 6d 70 20 6f 62 6a 65    63 74 20 66 6f 72 20 4f 72 67 20 74 69 6d 65 73 | n.timestamp.object.for.Org.times | 
| 39e0 | 74 61 6d 70 20 65 6c 65 6d 65 6e 74 20 45 4c 45    4d 45 4e 54 2e 0a 45 6c 65 6d 65 6e 74 20 73 68 | tamp.element.ELEMENT..Element.sh | 
| 3a00 | 6f 75 6c 64 20 62 65 20 6c 69 6b 65 20 6f 6e 65    20 70 61 72 73 65 64 20 62 79 20 60 6f 72 67 2d | ould.be.like.one.parsed.by.`org- | 
| 3a20 | 65 6c 65 6d 65 6e 74 27 2c 20 74 68 65 20 66 69    72 73 74 0a 65 6c 65 6d 65 6e 74 20 6f 66 20 77 | element',.the.first.element.of.w | 
| 3a40 | 68 69 63 68 20 69 73 20 60 74 69 6d 65 73 74 61    6d 70 27 2e 20 20 41 73 73 75 6d 65 73 20 74 69 | hich.is.`timestamp'...Assumes.ti | 
| 3a60 | 6d 65 73 74 61 6d 70 20 69 73 20 6e 6f 74 20 61    0a 72 61 6e 67 65 2e 22 0a 20 20 28 2d 6c 65 74 | mestamp.is.not.a.range."...(-let | 
| 3a80 | 20 28 28 28 5f 20 28 26 6b 65 79 73 20 3a 79 65    61 72 2d 73 74 61 72 74 20 3a 6d 6f 6e 74 68 2d | .(((_.(&keys.:year-start.:month- | 
| 3aa0 | 73 74 61 72 74 20 3a 64 61 79 2d 73 74 61 72 74    20 3a 68 6f 75 72 2d 73 74 61 72 74 20 3a 6d 69 | start.:day-start.:hour-start.:mi | 
| 3ac0 | 6e 75 74 65 2d 73 74 61 72 74 29 29 20 65 6c 65    6d 65 6e 74 29 29 0a 20 20 20 20 28 6d 61 6b 65 | nute-start)).element)).....(make | 
| 3ae0 | 2d 74 73 20 3a 79 65 61 72 20 79 65 61 72 2d 73    74 61 72 74 20 3a 6d 6f 6e 74 68 20 6d 6f 6e 74 | -ts.:year.year-start.:month.mont | 
| 3b00 | 68 2d 73 74 61 72 74 20 3a 64 61 79 20 64 61 79    2d 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20 | h-start.:day.day-start.......... | 
| 3b20 | 20 20 20 20 3a 68 6f 75 72 20 28 6f 72 20 68 6f    75 72 2d 73 74 61 72 74 20 30 29 20 3a 6d 69 6e | ....:hour.(or.hour-start.0).:min | 
| 3b40 | 75 74 65 20 28 6f 72 20 6d 69 6e 75 74 65 2d 73    74 61 72 74 20 30 29 20 3a 73 65 63 6f 6e 64 20 | ute.(or.minute-start.0).:second. | 
| 3b60 | 30 29 29 29 0a 0a 3b 3b 20 57 65 20 64 6f 6e 27    74 20 77 61 6e 74 20 74 6f 20 66 6f 72 63 65 20 | 0)))..;;.We.don't.want.to.force. | 
| 3b80 | 60 6f 72 67 27 20 74 6f 20 6c 6f 61 64 20 77 68    65 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 | `org'.to.load.when.this.library. | 
| 3ba0 | 64 6f 65 73 2c 20 73 6f 20 77 65 20 64 65 63 6c    61 72 65 0a 3b 3b 20 74 68 65 20 66 75 6e 63 74 | does,.so.we.declare.;;.the.funct | 
| 3bc0 | 69 6f 6e 2e 20 20 55 73 65 72 73 20 73 68 6f 75    6c 64 20 6c 6f 61 64 20 60 6f 72 67 27 20 62 65 | ion...Users.should.load.`org'.be | 
| 3be0 | 66 6f 72 65 20 63 61 6c 6c 69 6e 67 20 60 74 73    2d 70 61 72 73 65 2d 6f 72 67 27 2e 0a 28 64 65 | fore.calling.`ts-parse-org'..(de | 
| 3c00 | 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f    72 67 2d 70 61 72 73 65 2d 74 69 6d 65 2d 73 74 | clare-function.org-parse-time-st | 
| 3c20 | 72 69 6e 67 20 22 6f 72 67 2d 6d 61 63 73 2e 65    6c 22 29 0a 0a 28 64 65 66 73 75 62 73 74 20 74 | ring."org-macs.el")..(defsubst.t | 
| 3c40 | 73 2d 70 61 72 73 65 2d 6f 72 67 20 28 6f 72 67    2d 74 73 2d 73 74 72 69 6e 67 29 0a 20 20 22 52 | s-parse-org.(org-ts-string)..."R | 
| 3c60 | 65 74 75 72 6e 20 74 69 6d 65 73 74 61 6d 70 20    6f 62 6a 65 63 74 20 66 6f 72 20 4f 72 67 20 74 | eturn.timestamp.object.for.Org.t | 
| 3c80 | 69 6d 65 73 74 61 6d 70 20 73 74 72 69 6e 67 20    4f 52 47 2d 54 53 2d 53 54 52 49 4e 47 2e 0a 4e | imestamp.string.ORG-TS-STRING..N | 
| 3ca0 | 6f 74 65 20 74 68 61 74 20 66 75 6e 63 74 69 6f    6e 20 60 6f 72 67 2d 70 61 72 73 65 2d 74 69 6d | ote.that.function.`org-parse-tim | 
| 3cc0 | 65 2d 73 74 72 69 6e 67 27 20 69 73 20 63 61 6c    6c 65 64 2c 20 77 68 69 63 68 0a 73 68 6f 75 6c | e-string'.is.called,.which.shoul | 
| 3ce0 | 64 20 62 65 20 6c 6f 61 64 65 64 20 62 65 66 6f    72 65 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20 | d.be.loaded.before.calling.this. | 
| 3d00 | 66 75 6e 63 74 69 6f 6e 2e 22 0a 20 20 28 70 63    61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 73 65 | function."...(pcase-let*.((`(,se | 
| 3d20 | 63 6f 6e 64 20 2c 6d 69 6e 75 74 65 20 2c 68 6f    75 72 20 2c 64 61 79 20 2c 6d 6f 6e 74 68 20 2c | cond.,minute.,hour.,day.,month., | 
| 3d40 | 79 65 61 72 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 | year).................(save-matc | 
| 3d60 | 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 70 61 | h-data...................(org-pa | 
| 3d80 | 72 73 65 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20    6f 72 67 2d 74 73 2d 73 74 72 69 6e 67 29 29 29 | rse-time-string.org-ts-string))) | 
| 3da0 | 29 0a 20 20 20 20 28 6d 61 6b 65 2d 74 73 20 3a    73 65 63 6f 6e 64 20 73 65 63 6f 6e 64 20 3a 6d | ).....(make-ts.:second.second.:m | 
| 3dc0 | 69 6e 75 74 65 20 6d 69 6e 75 74 65 20 3a 68 6f    75 72 20 68 6f 75 72 20 3a 64 61 79 20 64 61 79 | inute.minute.:hour.hour.:day.day | 
| 3de0 | 20 3a 6d 6f 6e 74 68 20 6d 6f 6e 74 68 20 3a 79    65 61 72 20 79 65 61 72 29 29 29 0a 0a 28 64 65 | .:month.month.:year.year)))..(de | 
| 3e00 | 66 73 75 62 73 74 20 74 73 2d 70 61 72 73 65 2d    6f 72 67 2d 66 69 6c 6c 20 28 66 69 6c 6c 20 6f | fsubst.ts-parse-org-fill.(fill.o | 
| 3e20 | 72 67 2d 74 73 2d 73 74 72 69 6e 67 29 0a 20 20    22 52 65 74 75 72 6e 20 74 69 6d 65 73 74 61 6d | rg-ts-string)..."Return.timestam | 
| 3e40 | 70 20 6f 62 6a 65 63 74 20 66 6f 72 20 4f 72 67    20 74 69 6d 65 73 74 61 6d 70 20 73 74 72 69 6e | p.object.for.Org.timestamp.strin | 
| 3e60 | 67 20 4f 52 47 2d 54 53 2d 53 54 52 49 4e 47 2e    0a 4e 6f 74 65 20 74 68 61 74 20 66 75 6e 63 74 | g.ORG-TS-STRING..Note.that.funct | 
| 3e80 | 69 6f 6e 20 60 6f 72 67 2d 70 61 72 73 65 2d 74    69 6d 65 2d 73 74 72 69 6e 67 27 20 69 73 20 63 | ion.`org-parse-time-string'.is.c | 
| 3ea0 | 61 6c 6c 65 64 2c 20 77 68 69 63 68 0a 73 68 6f    75 6c 64 20 62 65 20 6c 6f 61 64 65 64 20 62 65 | alled,.which.should.be.loaded.be | 
| 3ec0 | 66 6f 72 65 20 63 61 6c 6c 69 6e 67 20 74 68 69    73 20 66 75 6e 63 74 69 6f 6e 2e 0a 48 6f 75 72 | fore.calling.this.function..Hour | 
| 3ee0 | 2f 6d 69 6e 75 74 65 2f 73 65 63 6f 6e 64 20 76    61 6c 75 65 73 20 61 72 65 20 66 69 6c 6c 65 64 | /minute/second.values.are.filled | 
| 3f00 | 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 46 49    4c 4c 3a 20 69 66 0a 60 62 65 67 69 6e 27 2c 20 | .according.to.FILL:.if.`begin',. | 
| 3f20 | 77 69 74 68 20 30 3b 20 69 66 20 60 65 6e 64 27    2c 20 68 6f 75 72 20 69 73 20 66 69 6c 6c 65 64 | with.0;.if.`end',.hour.is.filled | 
| 3f40 | 20 77 69 74 68 20 32 33 20 61 6e 64 0a 6d 69 6e    75 74 65 2f 73 65 63 6f 6e 64 20 77 69 74 68 20 | .with.23.and.minute/second.with. | 
| 3f60 | 35 39 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 60    6f 72 67 2d 70 61 72 73 65 2d 74 69 6d 65 2d 73 | 59...Note.that.`org-parse-time-s | 
| 3f80 | 74 72 69 6e 67 27 20 64 6f 65 73 0a 6e 6f 74 20    73 75 70 70 6f 72 74 20 74 69 6d 65 73 74 61 6d | tring'.does.not.support.timestam | 
| 3fa0 | 70 73 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 20    73 65 63 6f 6e 64 73 2e 22 0a 20 20 28 70 63 61 | ps.that.contain.seconds."...(pca | 
| 3fc0 | 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 73 65 63    6f 6e 64 20 2c 6d 69 6e 75 74 65 20 2c 68 6f 75 | se-let*.((`(,second.,minute.,hou | 
| 3fe0 | 72 20 2c 64 61 79 20 2c 6d 6f 6e 74 68 20 2c 79    65 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 | r.,day.,month.,year)............ | 
| 4000 | 20 20 20 20 20 28 6f 72 67 2d 70 61 72 73 65 2d    74 69 6d 65 2d 73 74 72 69 6e 67 20 6f 72 67 2d | .....(org-parse-time-string.org- | 
| 4020 | 74 73 2d 73 74 72 69 6e 67 20 27 6e 6f 64 65 66    61 75 6c 74 29 29 29 0a 20 20 20 20 28 70 63 61 | ts-string.'nodefault))).....(pca | 
| 4040 | 73 65 2d 65 78 68 61 75 73 74 69 76 65 20 66 69    6c 6c 0a 20 20 20 20 20 20 28 27 62 65 67 69 6e | se-exhaustive.fill.......('begin | 
| 4060 | 20 28 75 6e 6c 65 73 73 20 73 65 63 6f 6e 64 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(unless.second................. | 
| 4080 | 28 73 65 74 66 20 73 65 63 6f 6e 64 20 30 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | (setf.second.0))...............( | 
| 40a0 | 75 6e 6c 65 73 73 20 6d 69 6e 75 74 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 | unless.minute.................(s | 
| 40c0 | 65 74 66 20 6d 69 6e 75 74 65 20 30 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e | etf.minute.0))...............(un | 
| 40e0 | 6c 65 73 73 20 68 6f 75 72 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 | less.hour.................(setf. | 
| 4100 | 68 6f 75 72 20 30 29 29 29 0a 20 20 20 20 20 20    28 27 65 6e 64 20 28 69 66 20 28 6e 6f 74 20 28 | hour.0))).......('end.(if.(not.( | 
| 4120 | 6f 72 20 68 6f 75 72 20 6d 69 6e 75 74 65 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | or.hour.minute))................ | 
| 4140 | 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 3b 3b 20 60 68 6f | .(progn...................;;.`ho | 
| 4160 | 75 72 27 20 61 6e 64 20 60 6d 69 6e 75 74 65 27    20 61 72 65 20 6e 69 6c 2c 20 73 6f 20 73 65 74 | ur'.and.`minute'.are.nil,.so.set | 
| 4180 | 20 74 68 65 6d 20 61 6e 64 20 60 73 65 63 6f 6e    64 27 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .them.and.`second'.............. | 
| 41a0 | 20 20 20 20 20 20 3b 3b 20 60 6f 72 67 2d 70 61    72 73 65 2d 74 69 6d 65 2d 73 74 72 69 6e 67 27 | ......;;.`org-parse-time-string' | 
| 41c0 | 20 73 65 74 73 20 74 68 65 20 73 65 63 6f 6e 64    20 74 6f 20 30 20 65 76 65 6e 20 69 66 0a 20 20 | .sets.the.second.to.0.even.if... | 
| 41e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3b 3b 20 4e 4f 44 45 46 41 55 4c 54 20 69 73 20 | ................;;.NODEFAULT.is. | 
| 4200 | 6e 6f 6e 2d 6e 69 6c 2e 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 | non-nil....................(setf | 
| 4220 | 20 73 65 63 6f 6e 64 20 35 39 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .second.59...................... | 
| 4240 | 20 20 20 6d 69 6e 75 74 65 20 35 39 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...minute.59.................... | 
| 4260 | 20 20 20 20 20 68 6f 75 72 20 32 33 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 | .....hour.23))...............;;. | 
| 4280 | 46 49 58 4d 45 3a 20 53 6f 6d 65 20 6f 66 20 74    68 65 73 65 20 63 6f 75 6c 64 20 62 65 20 6f 6d | FIXME:.Some.of.these.could.be.om | 
| 42a0 | 69 74 74 65 64 2e 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 75 6e 6c 65 73 73 20 73 65 63 | itted................(unless.sec | 
| 42c0 | 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 65 74 66 20 73 65 63 6f 6e 64 | ond.................(setf.second | 
| 42e0 | 20 35 39 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 75 6e 6c 65 73 73 20 6d 69 6e 75 | .59))...............(unless.minu | 
| 4300 | 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 66 20 6d 69 6e 75 74 65 20 | te.................(setf.minute. | 
| 4320 | 35 39 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 75 6e 6c 65 73 73 20 68 6f 75 72 0a | 59))...............(unless.hour. | 
| 4340 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 73 65 74 66 20 68 6f 75 72 20 32 33 29 29 29 | ................(setf.hour.23))) | 
| 4360 | 29 0a 20 20 20 20 20 20 28 5f 20 28 65 72 72 6f    72 20 22 46 49 4c 4c 20 6d 75 73 74 20 62 65 20 | ).......(_.(error."FILL.must.be. | 
| 4380 | 60 62 65 67 69 6e 27 20 6f 72 20 60 65 6e 64 27    22 29 29 29 0a 20 20 20 20 28 6d 61 6b 65 2d 74 | `begin'.or.`end'"))).....(make-t | 
| 43a0 | 73 20 3a 73 65 63 6f 6e 64 20 73 65 63 6f 6e 64    20 3a 6d 69 6e 75 74 65 20 6d 69 6e 75 74 65 20 | s.:second.second.:minute.minute. | 
| 43c0 | 3a 68 6f 75 72 20 68 6f 75 72 20 3a 64 61 79 20    64 61 79 20 3a 6d 6f 6e 74 68 20 6d 6f 6e 74 68 | :hour.hour.:day.day.:month.month | 
| 43e0 | 20 3a 79 65 61 72 20 79 65 61 72 29 29 29 0a 0a    3b 3b 3b 3b 20 46 75 6e 63 74 69 6f 6e 73 0a 0a | .:year.year)))..;;;;.Functions.. | 
| 4400 | 28 63 6c 2d 64 65 66 75 6e 20 74 73 2d 61 70 70    6c 79 20 28 26 72 65 73 74 20 61 72 67 73 29 0a | (cl-defun.ts-apply.(&rest.args). | 
| 4420 | 20 20 22 52 65 74 75 72 6e 20 6e 65 77 20 74 69    6d 65 73 74 61 6d 70 20 62 61 73 65 64 20 6f 6e | .."Return.new.timestamp.based.on | 
| 4440 | 20 54 53 20 77 69 74 68 20 6e 65 77 20 73 6c 6f    74 20 76 61 6c 75 65 73 20 66 72 6f 6d 20 41 52 | .TS.with.new.slot.values.from.AR | 
| 4460 | 47 53 2e 0a 46 69 6c 6c 20 74 69 6d 65 73 74 61    6d 70 20 73 6c 6f 74 73 2c 20 6f 76 65 72 77 72 | GS..Fill.timestamp.slots,.overwr | 
| 4480 | 69 74 65 20 67 69 76 65 6e 20 73 6c 6f 74 20 76    61 6c 75 65 73 2c 20 61 6e 64 20 72 65 74 75 72 | ite.given.slot.values,.and.retur | 
| 44a0 | 6e 20 6e 65 77 0a 74 69 6d 65 73 74 61 6d 70 20    77 69 74 68 20 55 6e 69 78 20 74 69 6d 65 73 74 | n.new.timestamp.with.Unix.timest | 
| 44c0 | 61 6d 70 20 76 61 6c 75 65 20 64 65 72 69 76 65    64 20 66 72 6f 6d 20 6e 65 77 20 73 6c 6f 74 20 | amp.value.derived.from.new.slot. | 
| 44e0 | 76 61 6c 75 65 73 2e 0a 53 4c 4f 54 53 20 69 73    20 61 20 6c 69 73 74 20 6f 66 20 61 6c 74 65 72 | values..SLOTS.is.a.list.of.alter | 
| 4500 | 6e 61 74 69 6e 67 20 6b 65 79 2d 76 61 6c 75 65    20 70 61 69 72 73 20 6c 69 6b 65 20 74 68 61 74 | nating.key-value.pairs.like.that | 
| 4520 | 20 70 61 73 73 65 64 0a 74 6f 20 60 6d 61 6b 65    2d 74 73 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 | .passed.to.`make-ts'."...(declar | 
| 4540 | 65 20 28 61 64 76 65 72 74 69 73 65 64 2d 63 61    6c 6c 69 6e 67 2d 63 6f 6e 76 65 6e 74 69 6f 6e | e.(advertised-calling-convention | 
| 4560 | 20 28 26 72 65 73 74 20 73 6c 6f 74 73 20 74 73    29 20 6e 69 6c 29 29 0a 20 20 28 2d 6c 65 74 2a | .(&rest.slots.ts).nil))...(-let* | 
| 4580 | 20 28 28 28 26 6b 65 79 73 20 3a 73 65 63 6f 6e    64 20 3a 6d 69 6e 75 74 65 20 3a 68 6f 75 72 20 | .(((&keys.:second.:minute.:hour. | 
| 45a0 | 3a 64 61 79 20 3a 6d 6f 6e 74 68 20 3a 79 65 61    72 29 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 | :day.:month.:year).args)........ | 
| 45c0 | 20 20 20 28 74 73 20 28 2d 6c 61 73 74 2d 69 74    65 6d 20 61 72 67 73 29 29 29 0a 20 20 20 20 3b | ...(ts.(-last-item.args))).....; | 
| 45e0 | 3b 20 4d 41 59 42 45 3a 20 41 64 64 20 74 69 6d    65 7a 6f 6e 65 20 6f 66 66 73 65 74 3f 0a 20 20 | ;.MAYBE:.Add.timezone.offset?... | 
| 4600 | 20 20 28 73 65 74 66 20 74 73 20 28 74 73 2d 66    69 6c 6c 20 74 73 29 29 0a 20 20 20 20 28 77 68 | ..(setf.ts.(ts-fill.ts)).....(wh | 
| 4620 | 65 6e 20 73 65 63 6f 6e 64 0a 20 20 20 20 20 20    28 73 65 74 66 20 28 74 73 2d 73 65 63 6f 6e 64 | en.second.......(setf.(ts-second | 
| 4640 | 20 74 73 29 20 73 65 63 6f 6e 64 29 29 0a 20 20    20 20 28 77 68 65 6e 20 6d 69 6e 75 74 65 0a 20 | .ts).second)).....(when.minute.. | 
| 4660 | 20 20 20 20 20 28 73 65 74 66 20 28 74 73 2d 6d    69 6e 75 74 65 20 74 73 29 20 6d 69 6e 75 74 65 | .....(setf.(ts-minute.ts).minute | 
| 4680 | 29 29 0a 20 20 20 20 28 77 68 65 6e 20 68 6f 75    72 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 74 | )).....(when.hour.......(setf.(t | 
| 46a0 | 73 2d 68 6f 75 72 20 74 73 29 20 68 6f 75 72 29    29 0a 20 20 20 20 28 77 68 65 6e 20 64 61 79 0a | s-hour.ts).hour)).....(when.day. | 
| 46c0 | 20 20 20 20 20 20 28 73 65 74 66 20 28 74 73 2d    64 61 79 20 74 73 29 20 64 61 79 29 29 0a 20 20 | ......(setf.(ts-day.ts).day))... | 
| 46e0 | 20 20 28 77 68 65 6e 20 6d 6f 6e 74 68 0a 20 20    20 20 20 20 28 73 65 74 66 20 28 74 73 2d 6d 6f | ..(when.month.......(setf.(ts-mo | 
| 4700 | 6e 74 68 20 74 73 29 20 6d 6f 6e 74 68 29 29 0a    20 20 20 20 28 77 68 65 6e 20 79 65 61 72 0a 20 | nth.ts).month)).....(when.year.. | 
| 4720 | 20 20 20 20 20 28 73 65 74 66 20 28 74 73 2d 79    65 61 72 20 74 73 29 20 79 65 61 72 29 29 0a 20 | .....(setf.(ts-year.ts).year)).. | 
| 4740 | 20 20 20 28 74 73 2d 75 70 64 61 74 65 20 74 73    29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 74 | ...(ts-update.ts)))..(defmacro.t | 
| 4760 | 73 2d 64 65 66 69 6e 65 2d 66 69 6c 6c 20 28 29    0a 20 20 22 44 65 66 69 6e 65 20 66 75 6e 63 74 | s-define-fill.()..."Define.funct | 
| 4780 | 69 6f 6e 20 74 68 61 74 20 66 69 6c 6c 73 20 61    6c 6c 20 61 70 70 6c 69 63 61 62 6c 65 20 73 6c | ion.that.fills.all.applicable.sl | 
| 47a0 | 6f 74 73 20 6f 66 20 61 20 60 74 73 27 20 66 72    6f 6d 20 69 74 73 20 60 75 6e 69 78 27 20 73 6c | ots.of.a.`ts'.from.its.`unix'.sl | 
| 47c0 | 6f 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73    6c 6f 74 73 20 28 2d 3e 3e 20 28 63 6c 2d 73 74 | ot."...(let*.((slots.(->>.(cl-st | 
| 47e0 | 72 75 63 74 2d 73 6c 6f 74 2d 69 6e 66 6f 20 27    74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ruct-slot-info.'ts)............. | 
| 4800 | 20 20 20 20 20 20 20 20 20 28 2d 2d 73 65 6c 65    63 74 20 28 61 6e 64 20 28 6e 6f 74 20 28 6d 65 | .........(--select.(and.(not.(me | 
| 4820 | 6d 62 65 72 20 28 63 61 72 20 69 74 29 20 27 28    75 6e 69 78 20 69 6e 74 65 72 6e 61 6c 20 63 6c | mber.(car.it).'(unix.internal.cl | 
| 4840 | 2d 74 61 67 2d 73 6c 6f 74 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -tag-slot))).................... | 
| 4860 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 64 64 | .................(plist-get.(cdd | 
| 4880 | 72 20 69 74 29 20 3a 63 6f 6e 73 74 72 75 63 74    6f 72 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 | r.it).:constructor)))........... | 
| 48a0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 2d 2d 6d    61 70 20 28 6c 69 73 74 20 28 69 6e 74 65 72 6e | ............(--map.(list.(intern | 
| 48c0 | 20 28 63 6f 6e 63 61 74 20 22 3a 22 20 28 73 79    6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 69 | .(concat.":".(symbol-name.(car.i | 
| 48e0 | 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t))))........................... | 
| 4900 | 20 20 20 20 20 20 20 20 28 63 64 64 72 20 69 74    29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 | ........(cddr.it)))))..........( | 
| 4920 | 6b 65 79 77 6f 72 64 73 20 28 2d 6d 61 70 20 23    27 63 61 72 20 73 6c 6f 74 73 29 29 0a 20 20 20 | keywords.(-map.#'car.slots)).... | 
| 4940 | 20 20 20 20 20 20 28 63 6f 6e 73 74 72 75 63 74    6f 72 73 20 28 2d 3e 3e 20 73 6c 6f 74 73 0a 20 | ......(constructors.(->>.slots.. | 
| 4960 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 2d 2d 6d 61 | ...........................(--ma | 
| 4980 | 70 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 61    64 72 20 69 74 29 20 3a 63 6f 6e 73 74 72 75 63 | p.(plist-get.(cadr.it).:construc | 
| 49a0 | 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tor))........................... | 
| 49c0 | 20 20 2d 6e 6f 6e 2d 6e 69 6c 29 29 0a 20 20 20    20 20 20 20 20 20 28 74 79 70 65 73 20 28 2d 2d | ..-non-nil))..........(types.(-- | 
| 49e0 | 6d 61 70 20 28 70 6c 69 73 74 2d 67 65 74 20 28    63 61 64 72 20 69 74 29 20 3a 74 79 70 65 29 20 | map.(plist-get.(cadr.it).:type). | 
| 4a00 | 73 6c 6f 74 73 29 29 0a 20 20 20 20 20 20 20 20    20 28 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 20 | slots))..........(format-string. | 
| 4a20 | 28 73 2d 6a 6f 69 6e 20 22 5c 66 22 20 63 6f 6e    73 74 72 75 63 74 6f 72 73 29 29 0a 20 20 20 20 | (s-join."\f".constructors))..... | 
| 4a40 | 20 20 20 20 20 28 76 61 6c 75 65 2d 63 6f 6e 76    65 72 73 69 6f 6e 73 20 28 63 6c 2d 6c 6f 6f 70 | .....(value-conversions.(cl-loop | 
| 4a60 | 20 66 6f 72 20 74 79 70 65 20 69 6e 20 74 79 70    65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | .for.type.in.types.............. | 
| 4a80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 77 | ........................for.keyw | 
| 4aa0 | 6f 72 64 20 69 6e 20 6b 65 79 77 6f 72 64 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ord.in.keywords................. | 
| 4ac0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 66 6f 72 20 69 20 66 72 6f 6d 20 | .....................for.i.from. | 
| 4ae0 | 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 0............................... | 
| 4b00 | 20 20 20 20 20 20 20 66 6f 72 20 76 61 6c 20 3d    20 60 28 6e 74 68 20 2c 69 20 74 69 6d 65 2d 76 | .......for.val.=.`(nth.,i.time-v | 
| 4b20 | 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | alues).......................... | 
| 4b40 | 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 65    6e 64 20 28 6c 69 73 74 20 6b 65 79 77 6f 72 64 | ............append.(list.keyword | 
| 4b60 | 20 28 70 63 61 73 65 20 74 79 70 65 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(pcase.type.................... | 
| 4b80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 4ba0 | 20 20 20 20 20 20 20 20 20 28 27 69 6e 74 65 67    65 72 20 60 28 73 74 72 69 6e 67 2d 74 6f 2d 6e | .........('integer.`(string-to-n | 
| 4bc0 | 75 6d 62 65 72 20 2c 76 61 6c 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | umber.,val)).................... | 
| 4be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 4c00 | 20 20 20 20 20 20 20 20 20 28 5f 20 76 61 6c 29    29 29 29 29 29 0a 20 20 20 20 3b 3b 20 4d 41 59 | .........(_.val)))))).....;;.MAY | 
| 4c20 | 42 45 3a 20 43 6f 6e 73 74 72 75 63 74 20 74 68    65 20 72 65 63 6f 72 64 20 6d 61 6e 75 61 6c 6c | BE:.Construct.the.record.manuall | 
| 4c40 | 79 3f 20 20 50 72 6f 62 61 62 6c 79 20 6e 6f 74    20 77 6f 72 74 68 20 69 74 2c 20 62 75 74 20 6d | y?..Probably.not.worth.it,.but.m | 
| 4c60 | 69 67 68 74 20 65 6b 65 20 6f 75 74 20 61 20 62    69 74 20 6d 6f 72 65 20 73 70 65 65 64 2e 0a 20 | ight.eke.out.a.bit.more.speed... | 
| 4c80 | 20 20 20 60 28 64 65 66 75 6e 20 74 73 2d 66 69    6c 6c 20 28 74 73 20 26 6f 70 74 69 6f 6e 61 6c | ...`(defun.ts-fill.(ts.&optional | 
| 4ca0 | 20 7a 6f 6e 65 29 0a 20 20 20 20 20 20 20 22 52    65 74 75 72 6e 20 54 53 20 68 61 76 69 6e 67 20 | .zone)........"Return.TS.having. | 
| 4cc0 | 66 69 6c 6c 65 64 20 61 6c 6c 20 73 6c 6f 74 73    20 66 72 6f 6d 20 69 74 73 20 55 6e 69 78 20 74 | filled.all.slots.from.its.Unix.t | 
| 4ce0 | 69 6d 65 73 74 61 6d 70 2e 0a 54 68 69 73 20 69    73 20 6e 6f 6e 2d 64 65 73 74 72 75 63 74 69 76 | imestamp..This.is.non-destructiv | 
| 4d00 | 65 2e 20 20 5a 4f 4e 45 20 69 73 20 70 61 73 73    65 64 20 74 6f 20 60 66 6f 72 6d 61 74 2d 74 69 | e...ZONE.is.passed.to.`format-ti | 
| 4d20 | 6d 65 2d 73 74 72 69 6e 67 27 2c 0a 77 68 69 63    68 20 73 65 65 2e 22 0a 20 20 20 20 20 20 20 3b | me-string',.which.see."........; | 
| 4d40 | 3b 20 4d 41 59 42 45 3a 20 55 73 65 20 60 64 65    63 6f 64 65 2d 74 69 6d 65 27 20 69 6e 73 74 65 | ;.MAYBE:.Use.`decode-time'.inste | 
| 4d60 | 61 64 20 6f 66 20 60 66 6f 72 6d 61 74 2d 74 69    6d 65 2d 73 74 72 69 6e 67 27 3f 20 20 49 74 20 | ad.of.`format-time-string'?..It. | 
| 4d80 | 70 72 6f 76 69 64 65 73 20 6d 6f 73 74 20 6f 66    20 74 68 65 20 76 61 6c 75 65 73 20 77 65 20 6e | provides.most.of.the.values.we.n | 
| 4da0 | 65 65 64 2e 20 20 53 68 6f 75 6c 64 20 62 65 6e    63 68 6d 61 72 6b 2e 0a 20 20 20 20 20 20 20 28 | eed...Should.benchmark.........( | 
| 4dc0 | 6c 65 74 20 28 28 74 69 6d 65 2d 76 61 6c 75 65    73 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 | let.((time-values.(save-match-da | 
| 4de0 | 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | ta.............................( | 
| 4e00 | 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 28 66 6f    72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 | split-string.(format-time-string | 
| 4e20 | 20 2c 66 6f 72 6d 61 74 2d 73 74 72 69 6e 67 20    28 74 73 2d 75 6e 69 78 20 74 73 29 20 7a 6f 6e | .,format-string.(ts-unix.ts).zon | 
| 4e40 | 65 29 20 22 5c 66 22 29 29 29 29 0a 20 20 20 20    20 20 20 20 20 28 6d 61 6b 65 2d 74 73 20 3a 75 | e)."\f"))))..........(make-ts.:u | 
| 4e60 | 6e 69 78 20 28 74 73 2d 75 6e 69 78 20 74 73 29    20 2c 40 76 61 6c 75 65 2d 63 6f 6e 76 65 72 73 | nix.(ts-unix.ts).,@value-convers | 
| 4e80 | 69 6f 6e 73 29 29 29 29 29 0a 28 74 73 2d 64 65    66 69 6e 65 2d 66 69 6c 6c 29 0a 0a 3b 3b 20 46 | ions))))).(ts-define-fill)..;;.F | 
| 4ea0 | 49 58 4d 45 3a 20 54 68 69 73 20 66 61 69 6c 73    2c 20 61 6e 64 20 49 27 6d 20 6e 6f 74 20 73 75 | IXME:.This.fails,.and.I'm.not.su | 
| 4ec0 | 72 65 20 69 66 20 69 74 27 73 20 61 20 6c 69 6d    69 74 61 74 69 6f 6e 20 6f 66 20 67 76 73 20 6f | re.if.it's.a.limitation.of.gvs.o | 
| 4ee0 | 72 20 69 66 20 49 20 64 69 64 20 73 6f 6d 65 74    68 69 6e 67 20 77 72 6f 6e 67 3a 0a 3b 3b 20 20 | r.if.I.did.something.wrong:.;;.. | 
| 4f00 | 20 28 74 73 2d 69 6e 63 66 20 28 74 73 2d 6d 6f    79 20 28 74 73 2d 6e 6f 77 29 29 29 0a 0a 28 64 | .(ts-incf.(ts-moy.(ts-now)))..(d | 
| 4f20 | 65 66 75 6e 20 74 73 2d 64 69 66 66 65 72 65 6e    63 65 20 28 61 20 62 29 0a 20 20 22 52 65 74 75 | efun.ts-difference.(a.b)..."Retu | 
| 4f40 | 72 6e 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e    20 73 65 63 6f 6e 64 73 20 62 65 74 77 65 65 6e | rn.difference.in.seconds.between | 
| 4f60 | 20 74 69 6d 65 73 74 61 6d 70 73 20 41 20 61 6e    64 20 42 2e 22 0a 20 20 3b 3b 20 4d 41 59 42 45 | .timestamps.A.and.B."...;;.MAYBE | 
| 4f80 | 3a 20 55 73 65 20 61 62 73 6f 6c 75 74 65 20 76    61 6c 75 65 73 20 73 6f 20 61 72 67 20 6f 72 64 | :.Use.absolute.values.so.arg.ord | 
| 4fa0 | 65 72 20 64 6f 65 73 6e 27 74 20 6d 61 74 74 65    72 2e 0a 20 20 28 2d 20 28 74 73 2d 75 6e 69 78 | er.doesn't.matter....(-.(ts-unix | 
| 4fc0 | 20 61 29 20 28 74 73 2d 75 6e 69 78 20 62 29 29    29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 74 73 | .a).(ts-unix.b)))..(defalias.'ts | 
| 4fe0 | 2d 64 69 66 66 20 27 74 73 2d 64 69 66 66 65 72    65 6e 63 65 29 0a 0a 28 64 65 66 75 6e 20 74 73 | -diff.'ts-difference)..(defun.ts | 
| 5000 | 2d 68 75 6d 61 6e 2d 64 75 72 61 74 69 6f 6e 20    28 73 65 63 6f 6e 64 73 29 0a 20 20 22 52 65 74 | -human-duration.(seconds)..."Ret | 
| 5020 | 75 72 6e 20 70 6c 69 73 74 20 64 65 73 63 72 69    62 69 6e 67 20 64 75 72 61 74 69 6f 6e 20 53 45 | urn.plist.describing.duration.SE | 
| 5040 | 43 4f 4e 44 53 2e 0a 4c 69 73 74 20 69 6e 63 6c    75 64 65 73 20 79 65 61 72 73 2c 20 64 61 79 73 | CONDS..List.includes.years,.days | 
| 5060 | 2c 20 68 6f 75 72 73 2c 20 6d 69 6e 75 74 65 73    2c 20 61 6e 64 20 73 65 63 6f 6e 64 73 2e 20 20 | ,.hours,.minutes,.and.seconds... | 
| 5080 | 54 68 69 73 20 69 73 0a 61 20 73 69 6d 70 6c 65    20 63 61 6c 63 75 6c 61 74 69 6f 6e 20 74 68 61 | This.is.a.simple.calculation.tha | 
| 50a0 | 74 20 64 6f 65 73 20 6e 6f 74 20 61 63 63 6f 75    6e 74 20 66 6f 72 20 6c 65 61 70 20 79 65 61 72 | t.does.not.account.for.leap.year | 
| 50c0 | 73 2c 20 6c 65 61 70 0a 73 65 63 6f 6e 64 73 2c    20 65 74 63 2e 22 0a 20 20 3b 3b 20 54 4f 44 4f | s,.leap.seconds,.etc."...;;.TODO | 
| 50e0 | 3a 20 41 64 64 20 77 65 65 6b 73 2e 0a 20 20 28    63 6c 2d 6d 61 63 72 6f 6c 65 74 20 28 28 64 69 | :.Add.weeks....(cl-macrolet.((di | 
| 5100 | 76 69 64 65 66 20 28 70 6c 61 63 65 20 64 69 76    69 73 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 | videf.(place.divisor)........... | 
| 5120 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 44 69 76 69 64 65 20 50 4c 41 43 45 20 62 | ...............;;.Divide.PLACE.b | 
| 5140 | 79 20 44 49 56 49 53 4f 52 2c 20 73 65 74 20 50    4c 41 43 45 20 74 6f 20 74 68 65 20 72 65 6d 61 | y.DIVISOR,.set.PLACE.to.the.rema | 
| 5160 | 69 6e 64 65 72 2c 20 61 6e 64 20 72 65 74 75 72    6e 20 74 68 65 20 71 75 6f 74 69 65 6e 74 2e 0a | inder,.and.return.the.quotient.. | 
| 5180 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 60 28 70 72 6f 67 31 | .........................`(prog1 | 
| 51a0 | 20 28 2f 20 2c 70 6c 61 63 65 20 2c 64 69 76 69    73 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 | .(/.,place.,divisor)............ | 
| 51c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 65 74 66 20 2c 70 6c 61 63 65 20 28 25 | .................(setf.,place.(% | 
| 51e0 | 20 2c 70 6c 61 63 65 20 2c 64 69 76 69 73 6f 72    29 29 29 29 29 0a 20 20 20 20 28 6c 65 74 2a 20 | .,place.,divisor))))).....(let*. | 
| 5200 | 28 28 73 65 63 6f 6e 64 73 20 28 66 6c 6f 6f 72    20 73 65 63 6f 6e 64 73 29 29 0a 20 20 20 20 20 | ((seconds.(floor.seconds))...... | 
| 5220 | 20 20 20 20 20 20 28 79 65 61 72 73 20 28 64 69    76 69 64 65 66 20 73 65 63 6f 6e 64 73 20 33 31 | ......(years.(dividef.seconds.31 | 
| 5240 | 35 33 36 30 30 30 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 28 64 61 79 73 20 28 64 69 76 69 64 | 536000))............(days.(divid | 
| 5260 | 65 66 20 73 65 63 6f 6e 64 73 20 38 36 34 30 30    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 | ef.seconds.86400))............(h | 
| 5280 | 6f 75 72 73 20 28 64 69 76 69 64 65 66 20 73 65    63 6f 6e 64 73 20 33 36 30 30 29 29 0a 20 20 20 | ours.(dividef.seconds.3600)).... | 
| 52a0 | 20 20 20 20 20 20 20 20 28 6d 69 6e 75 74 65 73    20 28 64 69 76 69 64 65 66 20 73 65 63 6f 6e 64 | ........(minutes.(dividef.second | 
| 52c0 | 73 20 36 30 29 29 29 0a 20 20 20 20 20 20 28 6c    69 73 74 20 3a 79 65 61 72 73 20 79 65 61 72 73 | s.60))).......(list.:years.years | 
| 52e0 | 20 3a 64 61 79 73 20 64 61 79 73 20 3a 68 6f 75    72 73 20 68 6f 75 72 73 20 3a 6d 69 6e 75 74 65 | .:days.days.:hours.hours.:minute | 
| 5300 | 73 20 6d 69 6e 75 74 65 73 20 3a 73 65 63 6f 6e    64 73 20 73 65 63 6f 6e 64 73 29 29 29 29 0a 0a | s.minutes.:seconds.seconds)))).. | 
| 5320 | 3b 3b 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20    62 75 69 6c 74 2d 69 6e 20 66 75 6e 63 74 69 6f | ;;.See.also.the.built-in.functio | 
| 5340 | 6e 20 60 66 6f 72 6d 61 74 2d 73 65 63 6f 6e 64    73 27 2c 20 77 68 69 63 68 20 49 20 73 65 65 6d | n.`format-seconds',.which.I.seem | 
| 5360 | 20 74 6f 20 68 61 76 65 0a 3b 3b 20 6f 76 65 72    6c 6f 6f 6b 65 64 20 62 65 66 6f 72 65 20 77 72 | .to.have.;;.overlooked.before.wr | 
| 5380 | 69 74 69 6e 67 20 74 68 69 73 2e 20 20 48 6f 77    65 76 65 72 2c 20 61 20 71 75 69 63 6b 20 62 65 | iting.this...However,.a.quick.be | 
| 53a0 | 6e 63 68 6d 61 72 6b 2c 20 72 75 6e 0a 3b 3b 20    31 30 30 2c 30 30 30 20 74 69 6d 65 73 2c 20 73 | nchmark,.run.;;.100,000.times,.s | 
| 53c0 | 68 6f 77 73 20 74 68 61 74 2c 20 77 68 65 6e 20    63 6f 6e 74 72 6f 6c 6c 61 62 6c 65 20 66 6f 72 | hows.that,.when.controllable.for | 
| 53e0 | 6d 61 74 74 69 6e 67 20 69 73 20 6e 6f 74 20 6e    65 65 64 65 64 2c 0a 3b 3b 20 60 74 73 2d 68 75 | matting.is.not.needed,.;;.`ts-hu | 
| 5400 | 6d 61 6e 2d 66 6f 72 6d 61 74 2d 64 75 72 61 74    69 6f 6e 27 20 69 73 20 6d 75 63 68 20 66 61 73 | man-format-duration'.is.much.fas | 
| 5420 | 74 65 72 20 61 6e 64 20 67 65 6e 65 72 61 74 65    73 20 6c 65 73 73 20 67 61 72 62 61 67 65 3a 0a | ter.and.generates.less.garbage:. | 
| 5440 | 0a 3b 3b 20 7c 20 46 6f 72 6d 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | .;;.|.Form.....................| | 
| 5460 | 20 78 20 66 61 73 74 65 72 20 74 68 61 6e 20 6e    65 78 74 20 7c 20 54 6f 74 61 6c 20 72 75 6e 74 | .x.faster.than.next.|.Total.runt | 
| 5480 | 69 6d 65 20 7c 20 23 20 6f 66 20 47 43 73 20 7c    20 54 6f 74 61 6c 20 47 43 20 72 75 6e 74 69 6d | ime.|.#.of.GCs.|.Total.GC.runtim | 
| 54a0 | 65 20 7c 0a 3b 3b 20 7c 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | e.|.;;.|------------------------ | 
| 54c0 | 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d | --+--------------------+-------- | 
| 54e0 | 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d    2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------+----------+------------- | 
| 5500 | 2d 2d 2d 2d 2d 7c 0a 3b 3b 20 7c 20 74 73 2d 68    75 6d 61 6e 2d 66 6f 72 6d 61 74 2d 64 75 72 61 | -----|.;;.|.ts-human-format-dura | 
| 5520 | 74 69 6f 6e 20 7c 20 35 2e 38 32 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 | tion.|.5.82...............|..... | 
| 5540 | 20 30 2e 38 33 32 39 34 35 20 7c 20 20 20 20 20    20 20 20 33 20 7c 20 20 20 20 20 20 20 20 20 30 | .0.832945.|........3.|.........0 | 
| 5560 | 2e 35 37 34 39 32 39 20 7c 0a 3b 3b 20 7c 20 66    6f 72 6d 61 74 2d 73 65 63 6f 6e 64 73 20 20 20 | .574929.|.;;.|.format-seconds... | 
| 5580 | 20 20 20 20 20 20 20 20 7c 20 73 6c 6f 77 65 73    74 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 | ........|.slowest............|.. | 
| 55a0 | 20 20 20 20 34 2e 38 34 38 32 35 33 20 7c 20 20    20 20 20 20 20 31 37 20 7c 20 20 20 20 20 20 20 | ....4.848253.|.......17.|....... | 
| 55c0 | 20 20 33 2e 32 38 38 37 39 39 20 7c 0a 0a 28 63    6c 2d 64 65 66 75 6e 20 74 73 2d 68 75 6d 61 6e | ..3.288799.|..(cl-defun.ts-human | 
| 55e0 | 2d 66 6f 72 6d 61 74 2d 64 75 72 61 74 69 6f 6e    20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f | -format-duration.(seconds.&optio | 
| 5600 | 6e 61 6c 20 61 62 62 72 65 76 69 61 74 65 29 0a    20 20 22 52 65 74 75 72 6e 20 68 75 6d 61 6e 2d | nal.abbreviate)..."Return.human- | 
| 5620 | 66 6f 72 6d 61 74 74 65 64 20 73 74 72 69 6e 67    20 64 65 73 63 72 69 62 69 6e 67 20 64 75 72 61 | formatted.string.describing.dura | 
| 5640 | 74 69 6f 6e 20 53 45 43 4f 4e 44 53 2e 0a 49 66    20 53 45 43 4f 4e 44 53 20 69 73 20 6c 65 73 73 | tion.SECONDS..If.SECONDS.is.less | 
| 5660 | 20 74 68 61 6e 20 31 2c 20 72 65 74 75 72 6e 73    20 5c 22 30 20 73 65 63 6f 6e 64 73 5c 22 2e 20 | .than.1,.returns.\"0.seconds\".. | 
| 5680 | 20 49 66 20 41 42 42 52 45 56 49 41 54 45 0a 69    73 20 6e 6f 6e 2d 6e 69 6c 2c 20 72 65 74 75 72 | .If.ABBREVIATE.is.non-nil,.retur | 
| 56a0 | 6e 20 61 20 73 68 6f 72 74 65 72 20 76 65 72 73    69 6f 6e 2c 20 77 69 74 68 6f 75 74 20 73 70 61 | n.a.shorter.version,.without.spa | 
| 56c0 | 63 65 73 2e 20 20 54 68 69 73 20 69 73 20 61 0a    73 69 6d 70 6c 65 20 63 61 6c 63 75 6c 61 74 69 | ces...This.is.a.simple.calculati | 
| 56e0 | 6f 6e 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74    20 61 63 63 6f 75 6e 74 20 66 6f 72 20 6c 65 61 | on.that.does.not.account.for.lea | 
| 5700 | 70 20 79 65 61 72 73 2c 20 6c 65 61 70 0a 73 65    63 6f 6e 64 73 2c 20 65 74 63 2e 22 0a 20 20 3b | p.years,.leap.seconds,.etc."...; | 
| 5720 | 3b 20 46 49 58 4d 45 3a 20 44 6f 65 73 6e 27 74    20 77 6f 72 6b 20 77 69 74 68 20 6e 65 67 61 74 | ;.FIXME:.Doesn't.work.with.negat | 
| 5740 | 69 76 65 20 76 61 6c 75 65 73 2c 20 65 76 65 6e    20 74 68 6f 75 67 68 20 60 74 73 2d 68 75 6d 61 | ive.values,.even.though.`ts-huma | 
| 5760 | 6e 2d 64 75 72 61 74 69 6f 6e 27 20 64 6f 65 73    2e 0a 20 20 28 69 66 20 28 3c 20 73 65 63 6f 6e | n-duration'.does....(if.(<.secon | 
| 5780 | 64 73 20 31 29 0a 20 20 20 20 20 20 28 69 66 20    61 62 62 72 65 76 69 61 74 65 20 22 30 73 22 20 | ds.1).......(if.abbreviate."0s". | 
| 57a0 | 22 30 20 73 65 63 6f 6e 64 73 22 29 0a 20 20 20    20 28 63 6c 2d 6d 61 63 72 6f 6c 65 74 20 28 28 | "0.seconds").....(cl-macrolet.(( | 
| 57c0 | 66 6f 72 6d 61 74 3e 20 28 70 6c 61 63 65 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | format>.(place)................. | 
| 57e0 | 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 68    65 6e 20 50 4c 41 43 45 20 69 73 20 67 72 65 61 | ...........;;.When.PLACE.is.grea | 
| 5800 | 74 65 72 20 74 68 61 6e 20 30 2c 20 72 65 74 75    72 6e 20 66 6f 72 6d 61 74 74 65 64 20 73 74 72 | ter.than.0,.return.formatted.str | 
| 5820 | 69 6e 67 20 75 73 69 6e 67 20 69 74 73 20 73 79    6d 62 6f 6c 20 6e 61 6d 65 2e 0a 20 20 20 20 20 | ing.using.its.symbol.name....... | 
| 5840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 60 28 77 68 65 6e 20 28 3e 20 | ......................`(when.(>. | 
| 5860 | 2c 70 6c 61 63 65 20 30 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ,place.0)....................... | 
| 5880 | 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20    22 25 64 25 73 25 73 22 20 2c 70 6c 61 63 65 0a | ........(format."%d%s%s".,place. | 
| 58a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 58c0 | 20 20 20 20 20 20 28 69 66 20 61 62 62 72 65 76    69 61 74 65 20 22 22 20 22 20 22 29 0a 20 20 20 | ......(if.abbreviate."".".").... | 
| 58e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 5900 | 20 20 20 28 69 66 20 61 62 62 72 65 76 69 61 74    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...(if.abbreviate............... | 
| 5920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 2c 28 73 75 | ............................,(su | 
| 5940 | 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d    6e 61 6d 65 20 70 6c 61 63 65 29 20 30 20 31 29 | bstring.(symbol-name.place).0.1) | 
| 5960 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 5980 | 20 20 20 20 20 20 20 20 20 2c 28 73 79 6d 62 6f    6c 2d 6e 61 6d 65 20 70 6c 61 63 65 29 29 29 29 | .........,(symbol-name.place)))) | 
| 59a0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6a 6f 69 6e 2d 70 6c 61 63 65 73 | )...................(join-places | 
| 59c0 | 20 28 26 72 65 73 74 20 70 6c 61 63 65 73 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(&rest.places)................. | 
| 59e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b    3b 20 52 65 74 75 72 6e 20 73 74 72 69 6e 67 20 | ...............;;.Return.string. | 
| 5a00 | 6a 6f 69 6e 69 6e 67 20 74 68 65 20 6e 61 6d 65    73 20 61 6e 64 20 76 61 6c 75 65 73 20 6f 66 20 | joining.the.names.and.values.of. | 
| 5a20 | 50 4c 41 43 45 53 2e 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | PLACES.......................... | 
| 5a40 | 20 20 20 20 20 20 20 60 28 2d 3e 3e 20 28 6c 69    73 74 20 2c 40 28 63 6c 2d 6c 6f 6f 70 20 66 6f | .......`(->>.(list.,@(cl-loop.fo | 
| 5a60 | 72 20 70 6c 61 63 65 20 69 6e 20 70 6c 61 63 65    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r.place.in.places............... | 
| 5a80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ | 
| 5aa0 | 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20    60 28 66 6f 72 6d 61 74 3e 20 2c 70 6c 61 63 65 | ........collect.`(format>.,place | 
| 5ac0 | 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | )))............................. | 
| 5ae0 | 20 20 20 20 20 20 20 20 20 2d 6e 6f 6e 2d 6e 69    6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........-non-nil............... | 
| 5b00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 73 2d 6a 6f 69 6e 20 28 | .......................(s-join.( | 
| 5b20 | 69 66 20 61 62 62 72 65 76 69 61 74 65 20 22 22    20 22 2c 20 22 29 29 29 29 29 0a 20 20 20 20 20 | if.abbreviate."".",.")))))...... | 
| 5b40 | 20 28 2d 6c 65 74 2a 20 28 28 28 26 70 6c 69 73    74 20 3a 79 65 61 72 73 20 3a 64 61 79 73 20 3a | .(-let*.(((&plist.:years.:days.: | 
| 5b60 | 68 6f 75 72 73 20 3a 6d 69 6e 75 74 65 73 20 3a    73 65 63 6f 6e 64 73 29 20 28 74 73 2d 68 75 6d | hours.:minutes.:seconds).(ts-hum | 
| 5b80 | 61 6e 2d 64 75 72 61 74 69 6f 6e 20 73 65 63 6f    6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 | an-duration.seconds))).........( | 
| 5ba0 | 6a 6f 69 6e 2d 70 6c 61 63 65 73 20 79 65 61 72    73 20 64 61 79 73 20 68 6f 75 72 73 20 6d 69 6e | join-places.years.days.hours.min | 
| 5bc0 | 75 74 65 73 20 73 65 63 6f 6e 64 73 29 29 29 29    29 0a 0a 3b 3b 3b 3b 3b 20 41 64 6a 75 73 74 6f | utes.seconds)))))..;;;;;.Adjusto | 
| 5be0 | 72 73 0a 0a 3b 3b 20 54 68 65 73 65 20 66 75 6e    63 74 69 6f 6e 73 20 61 72 65 20 76 65 72 79 20 | rs..;;.These.functions.are.very. | 
| 5c00 | 63 6f 6f 6c 2c 20 61 6e 64 20 74 68 65 79 20 6d    61 79 20 6d 61 6b 65 20 74 68 65 20 61 64 6a 75 | cool,.and.they.may.make.the.adju | 
| 5c20 | 73 74 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6e 65    63 65 73 73 61 72 79 2c 20 62 65 63 61 75 73 65 | st.function.unnecessary,.because | 
| 5c40 | 20 79 6f 75 20 63 61 6e 0a 3b 3b 20 64 6f 20 73    6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 28 74 | .you.can.;;.do.something.like.(t | 
| 5c60 | 73 2d 61 64 6a 75 73 74 20 27 6d 6f 79 20 31 32    30 20 28 74 73 2d 6e 6f 77 29 29 20 61 6e 64 20 | s-adjust.'moy.120.(ts-now)).and. | 
| 5c80 | 67 65 74 20 61 20 74 69 6d 65 73 74 61 6d 70 20    31 30 20 79 65 61 72 73 20 69 6e 20 74 68 65 20 | get.a.timestamp.10.years.in.the. | 
| 5ca0 | 66 75 74 75 72 65 2e 0a 0a 3b 3b 20 46 49 58 4d    45 3a 20 4e 6f 74 65 20 74 68 61 74 20 6e 6f 74 | future...;;.FIXME:.Note.that.not | 
| 5cc0 | 20 61 6c 6c 20 73 6c 6f 74 73 20 63 61 6e 20 62    65 20 75 73 65 64 20 74 6f 20 61 64 6a 75 73 74 | .all.slots.can.be.used.to.adjust | 
| 5ce0 | 20 74 68 65 20 74 69 6d 65 73 74 61 6d 70 2e 0a    3b 3b 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 | .the.timestamp..;;.For.example,. | 
| 5d00 | 74 68 65 20 64 61 79 2d 6f 66 2d 77 65 65 6b 2d    6e 75 6d 20 73 6c 6f 74 20 64 6f 65 73 6e 27 74 | the.day-of-week-num.slot.doesn't | 
| 5d20 | 20 68 61 76 65 20 61 6e 79 20 65 66 66 65 63 74    2e 0a 0a 3b 3b 3b 3b 3b 3b 20 4e 6f 6e 2d 64 65 | .have.any.effect...;;;;;;.Non-de | 
| 5d40 | 73 74 72 75 63 74 69 76 65 0a 0a 3b 3b 20 54 68    65 73 65 20 6e 6f 6e 2d 64 65 73 74 72 75 63 74 | structive..;;.These.non-destruct | 
| 5d60 | 69 76 65 20 76 65 72 73 69 6f 6e 73 20 74 61 6b    65 20 74 68 65 20 73 6c 6f 74 20 73 79 6d 62 6f | ive.versions.take.the.slot.symbo | 
| 5d80 | 6c 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74    20 61 6e 64 20 74 68 65 20 6f 62 6a 65 63 74 20 | l.as.an.argument.and.the.object. | 
| 5da0 | 6c 61 73 74 2c 20 61 6e 64 20 74 68 65 79 0a 3b    3b 20 72 65 74 75 72 6e 20 74 68 65 20 74 69 6d | last,.and.they.;;.return.the.tim | 
| 5dc0 | 65 73 74 61 6d 70 20 6f 62 6a 65 63 74 20 72 61    74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6e 65 | estamp.object.rather.than.the.ne | 
| 5de0 | 77 20 73 6c 6f 74 20 76 61 6c 75 65 2c 20 6d 61    6b 69 6e 67 20 74 68 65 6d 20 73 75 69 74 61 62 | w.slot.value,.making.them.suitab | 
| 5e00 | 6c 65 20 66 6f 72 20 75 73 65 20 69 6e 0a 3b 3b    20 74 68 72 65 61 64 69 6e 67 20 6d 61 63 72 6f | le.for.use.in.;;.threading.macro | 
| 5e20 | 73 20 77 68 65 6e 20 74 68 65 20 69 6e 69 74 69    61 6c 20 66 6f 72 6d 20 69 73 20 61 20 73 65 78 | s.when.the.initial.form.is.a.sex | 
| 5e40 | 70 20 72 61 74 68 65 72 20 74 68 61 6e 20 61 20    76 61 6c 75 65 20 6f 72 20 76 61 72 69 61 62 6c | p.rather.than.a.value.or.variabl | 
| 5e60 | 65 2e 0a 0a 28 64 65 66 75 6e 20 74 73 2d 61 64    6a 75 73 74 20 28 26 72 65 73 74 20 61 64 6a 75 | e...(defun.ts-adjust.(&rest.adju | 
| 5e80 | 73 74 6d 65 6e 74 73 29 0a 20 20 22 52 65 74 75    72 6e 20 6e 65 77 20 74 69 6d 65 73 74 61 6d 70 | stments)..."Return.new.timestamp | 
| 5ea0 | 20 68 61 76 69 6e 67 20 61 70 70 6c 69 65 64 20    41 44 4a 55 53 54 4d 45 4e 54 53 20 74 6f 20 54 | .having.applied.ADJUSTMENTS.to.T | 
| 5ec0 | 53 2e 0a 41 44 4a 55 53 54 4d 45 4e 54 53 20 73    68 6f 75 6c 64 20 62 65 20 61 20 73 65 72 69 65 | S..ADJUSTMENTS.should.be.a.serie | 
| 5ee0 | 73 20 6f 66 20 61 6c 74 65 72 6e 61 74 69 6e 67    20 53 4c 4f 54 53 20 61 6e 64 20 56 41 4c 55 45 | s.of.alternating.SLOTS.and.VALUE | 
| 5f00 | 53 20 62 79 0a 77 68 69 63 68 20 74 6f 20 61 64    6a 75 73 74 20 74 68 65 6d 2e 20 20 46 6f 72 20 | S.by.which.to.adjust.them...For. | 
| 5f20 | 65 78 61 6d 70 6c 65 2c 20 74 68 69 73 20 66 6f    72 6d 20 72 65 74 75 72 6e 73 20 61 20 6e 65 77 | example,.this.form.returns.a.new | 
| 5f40 | 0a 74 69 6d 65 73 74 61 6d 70 20 74 68 61 74 20    69 73 20 34 37 20 68 6f 75 72 73 20 69 6e 74 6f | .timestamp.that.is.47.hours.into | 
| 5f60 | 20 74 68 65 20 66 75 74 75 72 65 3a 0a 0a 20 20    28 74 73 2d 61 64 6a 75 73 74 20 27 68 6f 75 72 | .the.future:....(ts-adjust.'hour | 
| 5f80 | 20 2d 31 20 27 64 61 79 20 2b 32 20 28 74 73 2d    6e 6f 77 29 29 0a 0a 53 69 6e 63 65 20 74 68 65 | .-1.'day.+2.(ts-now))..Since.the | 
| 5fa0 | 20 74 69 6d 65 73 74 61 6d 70 20 61 72 67 75 6d    65 6e 74 20 69 73 20 6c 61 73 74 2c 20 69 74 27 | .timestamp.argument.is.last,.it' | 
| 5fc0 | 73 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75    73 65 20 69 6e 20 61 0a 74 68 72 65 61 64 69 6e | s.suitable.for.use.in.a.threadin | 
| 5fe0 | 67 20 6d 61 63 72 6f 2e 22 0a 20 20 28 64 65 63    6c 61 72 65 20 28 61 64 76 65 72 74 69 73 65 64 | g.macro."...(declare.(advertised | 
| 6000 | 2d 63 61 6c 6c 69 6e 67 2d 63 6f 6e 76 65 6e 74    69 6f 6e 20 28 26 72 65 73 74 20 61 64 6a 75 73 | -calling-convention.(&rest.adjus | 
| 6020 | 74 6d 65 6e 74 73 20 74 73 29 20 6e 69 6c 29 29    0a 20 20 28 6c 65 74 2a 20 28 28 74 73 20 28 2d | tments.ts).nil))...(let*.((ts.(- | 
| 6040 | 6c 61 73 74 2d 69 74 65 6d 20 61 64 6a 75 73 74    6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 | last-item.adjustments))......... | 
| 6060 | 20 28 61 64 6a 75 73 74 6d 65 6e 74 73 20 28 6e    62 75 74 6c 61 73 74 20 61 64 6a 75 73 74 6d 65 | .(adjustments.(nbutlast.adjustme | 
| 6080 | 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 28    74 73 20 28 74 73 2d 66 69 6c 6c 20 74 73 29 29 | nts))..........(ts.(ts-fill.ts)) | 
| 60a0 | 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66    6f 72 20 28 73 6c 6f 74 20 63 68 61 6e 67 65 29 | ).....(cl-loop.for.(slot.change) | 
| 60c0 | 20 6f 6e 20 61 64 6a 75 73 74 6d 65 6e 74 73 20    62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 | .on.adjustments.by.#'cddr....... | 
| 60e0 | 20 20 20 20 20 20 20 64 6f 20 28 63 6c 2d 69 6e    63 66 20 28 63 6c 2d 73 74 72 75 63 74 2d 73 6c | .......do.(cl-incf.(cl-struct-sl | 
| 6100 | 6f 74 2d 76 61 6c 75 65 20 27 74 73 20 73 6c 6f    74 20 74 73 29 20 63 68 61 6e 67 65 29 29 0a 20 | ot-value.'ts.slot.ts).change)).. | 
| 6120 | 20 20 20 28 74 73 2d 75 70 64 61 74 65 20 74 73    29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 74 | ...(ts-update.ts)))..(defsubst.t | 
| 6140 | 73 2d 69 6e 63 20 28 73 6c 6f 74 20 76 61 6c 75    65 20 74 73 29 0a 20 20 22 52 65 74 75 72 6e 20 | s-inc.(slot.value.ts)..."Return. | 
| 6160 | 61 20 6e 65 77 20 74 69 6d 65 73 74 61 6d 70 20    62 61 73 65 64 20 6f 6e 20 54 53 20 77 69 74 68 | a.new.timestamp.based.on.TS.with | 
| 6180 | 20 69 74 73 20 53 4c 4f 54 20 69 6e 63 72 65 6d    65 6e 74 65 64 20 62 79 20 56 41 4c 55 45 2e 0a | .its.SLOT.incremented.by.VALUE.. | 
| 61a0 | 53 4c 4f 54 20 73 68 6f 75 6c 64 20 62 65 20 73    70 65 63 69 66 69 65 64 20 61 73 20 61 20 70 6c | SLOT.should.be.specified.as.a.pl | 
| 61c0 | 61 69 6e 20 73 79 6d 62 6f 6c 2c 20 6e 6f 74 20    61 20 6b 65 79 77 6f 72 64 2e 22 0a 20 20 28 73 | ain.symbol,.not.a.keyword."...(s | 
| 61e0 | 65 74 71 20 74 73 20 28 74 73 2d 66 69 6c 6c 20    74 73 29 29 0a 20 20 28 63 6c 2d 69 6e 63 66 20 | etq.ts.(ts-fill.ts))...(cl-incf. | 
| 6200 | 28 63 6c 2d 73 74 72 75 63 74 2d 73 6c 6f 74 2d    76 61 6c 75 65 20 27 74 73 20 73 6c 6f 74 20 74 | (cl-struct-slot-value.'ts.slot.t | 
| 6220 | 73 29 20 76 61 6c 75 65 29 0a 20 20 28 74 73 2d    75 70 64 61 74 65 20 74 73 29 29 0a 0a 28 64 65 | s).value)...(ts-update.ts))..(de | 
| 6240 | 66 73 75 62 73 74 20 74 73 2d 64 65 63 20 28 73    6c 6f 74 20 76 61 6c 75 65 20 74 73 29 0a 20 20 | fsubst.ts-dec.(slot.value.ts)... | 
| 6260 | 22 52 65 74 75 72 6e 20 61 20 6e 65 77 20 74 69    6d 65 73 74 61 6d 70 20 62 61 73 65 64 20 6f 6e | "Return.a.new.timestamp.based.on | 
| 6280 | 20 54 53 20 77 69 74 68 20 69 74 73 20 53 4c 4f    54 20 64 65 63 72 65 6d 65 6e 74 65 64 20 62 79 | .TS.with.its.SLOT.decremented.by | 
| 62a0 | 20 56 41 4c 55 45 2e 0a 53 4c 4f 54 20 73 68 6f    75 6c 64 20 62 65 20 73 70 65 63 69 66 69 65 64 | .VALUE..SLOT.should.be.specified | 
| 62c0 | 20 61 73 20 61 20 70 6c 61 69 6e 20 73 79 6d 62    6f 6c 2c 20 6e 6f 74 20 61 20 6b 65 79 77 6f 72 | .as.a.plain.symbol,.not.a.keywor | 
| 62e0 | 64 2e 22 0a 20 20 28 73 65 74 71 20 74 73 20 28    74 73 2d 66 69 6c 6c 20 74 73 29 29 0a 20 20 28 | d."...(setq.ts.(ts-fill.ts))...( | 
| 6300 | 63 6c 2d 64 65 63 66 20 28 63 6c 2d 73 74 72 75    63 74 2d 73 6c 6f 74 2d 76 61 6c 75 65 20 27 74 | cl-decf.(cl-struct-slot-value.'t | 
| 6320 | 73 20 73 6c 6f 74 20 74 73 29 20 76 61 6c 75 65    29 0a 20 20 28 74 73 2d 75 70 64 61 74 65 20 74 | s.slot.ts).value)...(ts-update.t | 
| 6340 | 73 29 29 0a 0a 3b 3b 3b 3b 3b 3b 20 47 65 6e 65    72 61 6c 69 7a 65 64 20 76 61 72 69 61 62 6c 65 | s))..;;;;;;.Generalized.variable | 
| 6360 | 73 0a 0a 3b 3b 20 54 68 65 73 65 20 64 65 73 74    72 75 63 74 69 76 65 20 76 65 72 73 69 6f 6e 73 | s..;;.These.destructive.versions | 
| 6380 | 20 61 63 74 20 6c 69 6b 65 20 60 63 6c 2d 69 6e    63 66 27 2e 20 20 54 68 65 79 20 61 72 65 20 73 | .act.like.`cl-incf'...They.are.s | 
| 63a0 | 6c 69 67 68 74 6c 79 20 6c 65 73 73 20 73 75 69    74 61 62 6c 65 20 66 6f 72 20 75 73 65 20 69 6e | lightly.less.suitable.for.use.in | 
| 63c0 | 0a 3b 3b 20 74 68 72 65 61 64 69 6e 67 20 6d 61    63 72 6f 73 2c 20 62 65 63 61 75 73 65 20 69 74 | .;;.threading.macros,.because.it | 
| 63e0 | 27 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20    74 6f 20 64 6f 2c 20 65 2e 67 2e 20 74 68 69 73 | 's.not.possible.to.do,.e.g..this | 
| 6400 | 3a 0a 0a 3b 3b 20 20 20 28 2d 3e 20 28 74 73 2d    6e 6f 77 29 0a 3b 3b 20 20 20 20 20 20 20 28 74 | :..;;...(->.(ts-now).;;.......(t | 
| 6420 | 73 2d 61 64 6a 75 73 74 66 20 27 64 61 79 20 31    29 29 0a 0a 3b 3b 20 2e 2e 2e 62 65 63 61 75 73 | s-adjustf.'day.1))..;;....becaus | 
| 6440 | 65 20 60 74 73 2d 6e 6f 77 27 20 64 6f 65 73 6e    27 74 20 72 65 74 75 72 6e 20 61 20 67 65 6e 65 | e.`ts-now'.doesn't.return.a.gene | 
| 6460 | 72 61 6c 69 7a 65 64 20 76 61 72 69 61 62 6c 65    2e 20 20 42 75 74 20 74 68 69 73 20 73 74 69 6c | ralized.variable...But.this.stil | 
| 6480 | 6c 20 77 6f 72 6b 73 3a 0a 0a 3b 3b 20 20 20 28    6c 65 74 20 28 28 74 73 20 28 74 73 2d 6e 6f 77 | l.works:..;;...(let.((ts.(ts-now | 
| 64a0 | 29 29 29 0a 3b 3b 20 20 20 20 20 28 2d 3e 20 74    73 20 28 74 73 2d 61 64 6a 75 73 74 66 20 27 64 | ))).;;.....(->.ts.(ts-adjustf.'d | 
| 64c0 | 6f 6d 20 31 29 29 29 0a 0a 3b 3b 20 20 54 4f 44    4f 3a 20 4c 6f 6f 6b 20 61 74 20 60 63 6c 2d 69 | om.1)))..;;..TODO:.Look.at.`cl-i | 
| 64e0 | 6e 63 66 27 20 69 6d 70 6c 65 6d 65 6e 74 61 74    69 6f 6e 2c 20 63 6f 6e 73 69 64 65 72 20 77 68 | ncf'.implementation,.consider.wh | 
| 6500 | 65 74 68 65 72 20 77 65 20 73 68 6f 75 6c 64 20    69 6d 69 74 61 74 65 20 69 74 2e 0a 0a 28 64 65 | ether.we.should.imitate.it...(de | 
| 6520 | 66 6d 61 63 72 6f 20 74 73 2d 61 64 6a 75 73 74    66 20 28 74 73 20 26 72 65 73 74 20 61 64 6a 75 | fmacro.ts-adjustf.(ts.&rest.adju | 
| 6540 | 73 74 6d 65 6e 74 73 29 0a 20 20 22 52 65 74 75    72 6e 20 74 69 6d 65 73 74 61 6d 70 20 54 53 20 | stments)..."Return.timestamp.TS. | 
| 6560 | 68 61 76 69 6e 67 20 61 70 70 6c 69 65 64 20 41    44 4a 55 53 54 4d 45 4e 54 53 2e 0a 54 68 69 73 | having.applied.ADJUSTMENTS..This | 
| 6580 | 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 73    74 72 75 63 74 69 76 65 2c 20 61 73 20 69 74 20 | .function.is.destructive,.as.it. | 
| 65a0 | 63 61 6c 6c 73 20 60 73 65 74 66 27 20 6f 6e 20    54 53 2e 0a 0a 41 44 4a 55 53 54 4d 45 4e 54 53 | calls.`setf'.on.TS...ADJUSTMENTS | 
| 65c0 | 20 73 68 6f 75 6c 64 20 62 65 20 61 20 73 65 72    69 65 73 20 6f 66 20 61 6c 74 65 72 6e 61 74 69 | .should.be.a.series.of.alternati | 
| 65e0 | 6e 67 20 53 4c 4f 54 53 20 61 6e 64 20 56 41 4c    55 45 53 20 62 79 0a 77 68 69 63 68 20 74 6f 20 | ng.SLOTS.and.VALUES.by.which.to. | 
| 6600 | 61 64 6a 75 73 74 20 74 68 65 6d 2e 20 20 46 6f    72 20 65 78 61 6d 70 6c 65 2c 20 74 68 69 73 20 | adjust.them...For.example,.this. | 
| 6620 | 66 6f 72 6d 20 61 64 6a 75 73 74 73 20 61 20 74    69 6d 65 73 74 61 6d 70 0a 74 6f 20 34 37 20 68 | form.adjusts.a.timestamp.to.47.h | 
| 6640 | 6f 75 72 73 20 69 6e 74 6f 20 74 68 65 20 66 75    74 75 72 65 3a 0a 0a 20 20 28 6c 65 74 20 28 28 | ours.into.the.future:....(let.(( | 
| 6660 | 74 73 20 28 74 73 2d 6e 6f 77 29 29 29 0a 20 20    20 20 28 74 73 2d 61 64 6a 75 73 74 66 20 74 73 | ts.(ts-now))).....(ts-adjustf.ts | 
| 6680 | 20 27 68 6f 75 72 20 2d 31 20 27 64 61 79 20 2b    32 29 29 22 0a 20 20 3b 3b 20 4d 41 59 42 45 3a | .'hour.-1.'day.+2))"...;;.MAYBE: | 
| 66a0 | 20 49 73 20 69 74 20 70 6f 73 73 69 62 6c 65 20    74 6f 20 6d 61 6b 65 20 74 68 69 73 20 6b 69 6e | .Is.it.possible.to.make.this.kin | 
| 66c0 | 64 20 6f 66 20 6d 61 63 72 6f 20 77 6f 72 6b 20    69 6e 20 61 20 74 68 72 65 61 64 69 6e 67 20 6d | d.of.macro.work.in.a.threading.m | 
| 66e0 | 61 63 72 6f 20 62 79 20 74 61 6b 69 6e 67 20 69    74 73 20 54 53 0a 20 20 3b 3b 20 61 72 67 75 6d | acro.by.taking.its.TS...;;.argum | 
| 6700 | 65 6e 74 20 6c 61 73 74 3f 20 20 49 74 20 6f 6e    6c 79 20 73 65 65 6d 73 20 74 6f 20 77 6f 72 6b | ent.last?..It.only.seems.to.work | 
| 6720 | 20 69 66 20 74 68 65 20 54 53 20 69 73 20 61 20    73 79 6d 62 6f 6c 20 72 61 74 68 65 72 20 74 68 | .if.the.TS.is.a.symbol.rather.th | 
| 6740 | 61 6e 20 61 20 66 6f 72 6d 2c 20 62 65 63 61 75    73 65 20 6f 66 20 68 6f 77 0a 20 20 3b 3b 20 67 | an.a.form,.because.of.how...;;.g | 
| 6760 | 65 6e 65 72 61 6c 69 7a 65 64 20 76 61 72 69 61    62 6c 65 73 20 77 6f 72 6b 2c 20 62 75 74 20 74 | eneralized.variables.work,.but.t | 
| 6780 | 68 61 74 20 6d 61 6b 65 73 20 69 74 20 6c 65 73    73 20 75 73 65 66 75 6c 20 61 6e 64 20 6d 6f 72 | hat.makes.it.less.useful.and.mor | 
| 67a0 | 65 20 65 72 72 6f 72 2d 70 72 6f 6e 65 2e 0a 20    20 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 3b 3b | e.error-prone....`(progn......;; | 
| 67c0 | 20 57 65 20 75 73 65 20 74 68 65 20 61 63 63 65    73 73 6f 72 20 66 75 6e 63 74 69 6f 6e 73 20 72 | .We.use.the.accessor.functions.r | 
| 67e0 | 61 74 68 65 72 20 74 68 61 6e 20 60 63 6c 2d 73    74 72 75 63 74 2d 73 6c 6f 74 2d 76 61 6c 75 65 | ather.than.`cl-struct-slot-value | 
| 6800 | 27 2c 20 62 65 63 61 75 73 65 20 69 74 27 73 20    73 6c 69 67 68 74 6c 79 0a 20 20 20 20 20 3b 3b | ',.because.it's.slightly......;; | 
| 6820 | 20 66 61 73 74 65 72 20 74 6f 20 75 73 65 20 74    68 65 20 61 63 63 65 73 73 6f 72 73 2c 20 65 76 | .faster.to.use.the.accessors,.ev | 
| 6840 | 65 6e 20 74 68 6f 75 67 68 20 60 63 6c 2d 73 74    72 75 63 74 2d 73 6c 6f 74 2d 76 61 6c 75 65 27 | en.though.`cl-struct-slot-value' | 
| 6860 | 20 69 73 20 73 75 70 70 6f 73 65 64 20 74 6f 20    62 65 0a 20 20 20 20 20 3b 3b 20 62 79 74 65 2d | .is.supposed.to.be......;;.byte- | 
| 6880 | 63 6f 6d 70 69 6c 65 64 20 74 6f 20 65 73 73 65    6e 74 69 61 6c 6c 79 20 74 68 65 20 73 61 6d 65 | compiled.to.essentially.the.same | 
| 68a0 | 20 74 68 69 6e 67 20 28 61 6c 74 68 6f 75 67 68    20 69 74 27 73 20 70 6f 73 73 69 62 6c 65 20 49 | .thing.(although.it's.possible.I | 
| 68c0 | 27 6d 20 64 6f 69 6e 67 20 73 6f 6d 65 74 68 69    6e 67 0a 20 20 20 20 20 3b 3b 20 77 72 6f 6e 67 | 'm.doing.something......;;.wrong | 
| 68e0 | 29 2e 0a 20 20 20 20 20 28 73 65 74 66 20 2c 74    73 20 28 74 73 2d 66 69 6c 6c 20 2c 74 73 29 29 | ).......(setf.,ts.(ts-fill.,ts)) | 
| 6900 | 0a 20 20 20 20 20 2c 40 28 63 6c 2d 6c 6f 6f 70    20 66 6f 72 20 28 73 6c 6f 74 20 63 68 61 6e 67 | ......,@(cl-loop.for.(slot.chang | 
| 6920 | 65 29 20 6f 6e 20 61 64 6a 75 73 74 6d 65 6e 74    73 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 | e).on.adjustments.by.#'cddr..... | 
| 6940 | 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20    61 63 63 65 73 73 6f 72 20 3d 20 28 69 6e 74 65 | ............for.accessor.=.(inte | 
| 6960 | 72 6e 20 28 63 6f 6e 63 61 74 20 22 74 73 2d 22    20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 | rn.(concat."ts-".(symbol-name.(c | 
| 6980 | 61 64 72 20 73 6c 6f 74 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c | adr.slot)))).................col | 
| 69a0 | 6c 65 63 74 20 60 28 63 6c 2d 69 6e 63 66 20 28    2c 61 63 63 65 73 73 6f 72 20 2c 74 73 29 20 2c | lect.`(cl-incf.(,accessor.,ts)., | 
| 69c0 | 63 68 61 6e 67 65 29 29 0a 20 20 20 20 20 28 73    65 74 66 20 2c 74 73 20 28 74 73 2d 75 70 64 61 | change))......(setf.,ts.(ts-upda | 
| 69e0 | 74 65 20 2c 74 73 29 29 29 29 0a 0a 28 63 6c 2d    64 65 66 6d 61 63 72 6f 20 74 73 2d 69 6e 63 66 | te.,ts))))..(cl-defmacro.ts-incf | 
| 6a00 | 20 28 70 6c 61 63 65 20 26 6f 70 74 69 6f 6e 61    6c 20 28 76 61 6c 75 65 20 31 29 29 0a 20 20 22 | .(place.&optional.(value.1))..." | 
| 6a20 | 49 6e 63 72 65 6d 65 6e 74 20 60 74 73 27 20 50    4c 41 43 45 20 62 79 20 56 41 4c 55 45 20 28 64 | Increment.`ts'.PLACE.by.VALUE.(d | 
| 6a40 | 65 66 61 75 6c 74 20 31 29 20 61 6e 64 20 72 65    74 75 72 6e 20 74 68 65 20 6e 65 77 20 76 61 6c | efault.1).and.return.the.new.val | 
| 6a60 | 75 65 20 6f 66 20 50 4c 41 43 45 2e 0a 55 70 64    61 74 65 73 20 69 74 73 20 60 75 6e 69 78 27 20 | ue.of.PLACE..Updates.its.`unix'. | 
| 6a80 | 73 6c 6f 74 20 61 63 63 6f 72 64 69 6e 67 6c 79    2e 22 0a 20 20 60 28 70 72 6f 67 6e 0a 20 20 20 | slot.accordingly."...`(progn.... | 
| 6aa0 | 20 20 28 73 65 74 66 20 2c 28 63 61 64 72 20 70    6c 61 63 65 29 20 28 74 73 2d 66 69 6c 6c 20 2c | ..(setf.,(cadr.place).(ts-fill., | 
| 6ac0 | 28 63 61 64 72 20 70 6c 61 63 65 29 29 29 0a 20    20 20 20 20 28 70 72 6f 67 31 0a 20 20 20 20 20 | (cadr.place)))......(prog1...... | 
| 6ae0 | 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 2c 70 6c    61 63 65 20 2c 76 61 6c 75 65 29 0a 20 20 20 20 | ....(cl-incf.,place.,value)..... | 
| 6b00 | 20 20 20 28 73 65 74 66 20 2c 28 63 61 64 72 20    70 6c 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 | ...(setf.,(cadr.place).......... | 
| 6b20 | 20 20 20 20 28 74 73 2d 75 70 64 61 74 65 20 2c    28 63 61 64 72 20 70 6c 61 63 65 29 29 29 29 29 | ....(ts-update.,(cadr.place))))) | 
| 6b40 | 29 0a 0a 28 63 6c 2d 64 65 66 6d 61 63 72 6f 20    74 73 2d 64 65 63 66 20 28 70 6c 61 63 65 20 26 | )..(cl-defmacro.ts-decf.(place.& | 
| 6b60 | 6f 70 74 69 6f 6e 61 6c 20 28 76 61 6c 75 65 20    31 29 29 0a 20 20 22 44 65 63 72 65 6d 65 6e 74 | optional.(value.1))..."Decrement | 
| 6b80 | 20 60 74 73 27 20 50 4c 41 43 45 20 62 79 20 56    41 4c 55 45 20 28 64 65 66 61 75 6c 74 20 31 29 | .`ts'.PLACE.by.VALUE.(default.1) | 
| 6ba0 | 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20    6e 65 77 20 76 61 6c 75 65 20 6f 66 20 50 4c 41 | .and.return.the.new.value.of.PLA | 
| 6bc0 | 43 45 2e 0a 55 70 64 61 74 65 73 20 69 74 73 20    60 75 6e 69 78 27 20 73 6c 6f 74 20 61 63 63 6f | CE..Updates.its.`unix'.slot.acco | 
| 6be0 | 72 64 69 6e 67 6c 79 2e 22 0a 20 20 60 28 70 72    6f 67 6e 0a 20 20 20 20 20 28 73 65 74 66 20 2c | rdingly."...`(progn......(setf., | 
| 6c00 | 28 63 61 64 72 20 70 6c 61 63 65 29 20 28 74 73    2d 66 69 6c 6c 20 2c 28 63 61 64 72 20 70 6c 61 | (cadr.place).(ts-fill.,(cadr.pla | 
| 6c20 | 63 65 29 29 29 0a 20 20 20 20 20 28 70 72 6f 67    31 0a 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 | ce)))......(prog1..........(cl-d | 
| 6c40 | 65 63 66 20 2c 70 6c 61 63 65 20 2c 76 61 6c 75    65 29 0a 20 20 20 20 20 20 20 28 73 65 74 66 20 | ecf.,place.,value)........(setf. | 
| 6c60 | 2c 28 63 61 64 72 20 70 6c 61 63 65 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 28 74 73 2d 75 | ,(cadr.place)..............(ts-u | 
| 6c80 | 70 64 61 74 65 20 2c 28 63 61 64 72 20 70 6c 61    63 65 29 29 29 29 29 29 0a 0a 3b 3b 3b 3b 3b 20 | pdate.,(cadr.place))))))..;;;;;. | 
| 6ca0 | 43 6f 6d 70 61 72 61 74 6f 72 73 0a 0a 28 64 65    66 73 75 62 73 74 20 74 73 2d 69 6e 20 28 62 65 | Comparators..(defsubst.ts-in.(be | 
| 6cc0 | 67 20 65 6e 64 20 74 73 29 0a 20 20 22 52 65 74    75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 54 | g.end.ts)..."Return.non-nil.if.T | 
| 6ce0 | 53 20 69 73 20 77 69 74 68 69 6e 20 72 61 6e 67    65 20 42 45 47 20 74 6f 20 45 4e 44 2c 20 69 6e | S.is.within.range.BEG.to.END,.in | 
| 6d00 | 63 6c 75 73 69 76 65 2e 0a 41 6c 6c 20 61 72 67    75 6d 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 | clusive..All.arguments.should.be | 
| 6d20 | 20 60 74 73 27 20 73 74 72 75 63 74 73 2e 22 0a    20 20 28 61 6e 64 20 28 74 73 3c 3d 20 62 65 67 | .`ts'.structs."...(and.(ts<=.beg | 
| 6d40 | 20 74 73 29 0a 20 20 20 20 20 20 20 28 74 73 3c    3d 20 74 73 20 65 6e 64 29 29 29 0a 0a 28 64 65 | .ts)........(ts<=.ts.end)))..(de | 
| 6d60 | 66 75 6e 20 74 73 3d 20 28 61 20 62 29 0a 20 20    22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 | fun.ts=.(a.b)..."Return.non-nil. | 
| 6d80 | 69 66 20 74 69 6d 65 73 74 61 6d 70 20 41 20 69    73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 69 | if.timestamp.A.is.the.same.as.ti | 
| 6da0 | 6d 65 73 74 61 6d 70 20 42 2e 0a 43 6f 6d 70 61    72 65 73 20 6f 6e 6c 79 20 74 68 65 20 74 69 6d | mestamp.B..Compares.only.the.tim | 
| 6dc0 | 65 73 74 61 6d 70 73 27 20 60 75 6e 69 78 27 20    73 6c 6f 74 73 2e 20 20 4e 6f 74 65 20 74 68 61 | estamps'.`unix'.slots...Note.tha | 
| 6de0 | 74 20 61 0a 74 69 6d 65 73 74 61 6d 70 27 73 20    55 6e 69 78 20 73 6c 6f 74 20 69 73 20 61 20 66 | t.a.timestamp's.Unix.slot.is.a.f | 
| 6e00 | 6c 6f 61 74 20 61 6e 64 20 6d 61 79 20 64 69 66    66 65 72 20 62 79 20 6c 65 73 73 20 74 68 61 6e | loat.and.may.differ.by.less.than | 
| 6e20 | 20 6f 6e 65 0a 73 65 63 6f 6e 64 2c 20 63 61 75    73 69 6e 67 20 74 68 65 6d 20 74 6f 20 62 65 20 | .one.second,.causing.them.to.be. | 
| 6e40 | 75 6e 65 71 75 61 6c 20 65 76 65 6e 20 69 66 20    61 6c 6c 20 6f 66 20 74 68 65 20 66 6f 72 6d 61 | unequal.even.if.all.of.the.forma | 
| 6e60 | 74 74 65 64 0a 70 61 72 74 73 20 6f 66 20 74 68    65 20 74 69 6d 65 73 74 61 6d 70 20 61 72 65 20 | tted.parts.of.the.timestamp.are. | 
| 6e80 | 74 68 65 20 73 61 6d 65 2e 22 0a 20 20 28 3d 20    28 74 73 2d 75 6e 69 78 20 61 29 20 28 74 73 2d | the.same."...(=.(ts-unix.a).(ts- | 
| 6ea0 | 75 6e 69 78 20 62 29 29 29 0a 0a 28 64 65 66 75    6e 20 74 73 3c 20 28 61 20 62 29 0a 20 20 22 52 | unix.b)))..(defun.ts<.(a.b)..."R | 
| 6ec0 | 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66    20 74 69 6d 65 73 74 61 6d 70 20 41 20 69 73 20 | eturn.non-nil.if.timestamp.A.is. | 
| 6ee0 | 6c 65 73 73 20 74 68 61 6e 20 74 69 6d 65 73 74    61 6d 70 20 42 2e 22 0a 20 20 28 3c 20 28 74 73 | less.than.timestamp.B."...(<.(ts | 
| 6f00 | 2d 75 6e 69 78 20 61 29 20 28 74 73 2d 75 6e 69    78 20 62 29 29 29 0a 0a 28 64 65 66 75 6e 20 74 | -unix.a).(ts-unix.b)))..(defun.t | 
| 6f20 | 73 3c 3d 20 28 61 20 62 29 0a 20 20 22 52 65 74    75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 74 | s<=.(a.b)..."Return.non-nil.if.t | 
| 6f40 | 69 6d 65 73 74 61 6d 70 20 41 20 69 73 20 3c 3d    20 74 69 6d 65 73 74 61 6d 70 20 42 2e 22 0a 20 | imestamp.A.is.<=.timestamp.B.".. | 
| 6f60 | 20 28 3c 3d 20 28 74 73 2d 75 6e 69 78 20 61 29    20 28 74 73 2d 75 6e 69 78 20 62 29 29 29 0a 0a | .(<=.(ts-unix.a).(ts-unix.b))).. | 
| 6f80 | 28 64 65 66 75 6e 20 74 73 3e 20 28 61 20 62 29    0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e | (defun.ts>.(a.b)..."Return.non-n | 
| 6fa0 | 69 6c 20 69 66 20 74 69 6d 65 73 74 61 6d 70 20    41 20 69 73 20 67 72 65 61 74 65 72 20 74 68 61 | il.if.timestamp.A.is.greater.tha | 
| 6fc0 | 6e 20 74 69 6d 65 73 74 61 6d 70 20 42 2e 22 0a    20 20 28 3e 20 28 74 73 2d 75 6e 69 78 20 61 29 | n.timestamp.B."...(>.(ts-unix.a) | 
| 6fe0 | 20 28 74 73 2d 75 6e 69 78 20 62 29 29 29 0a 0a    28 64 65 66 75 6e 20 74 73 3e 3d 20 28 61 20 62 | .(ts-unix.b)))..(defun.ts>=.(a.b | 
| 7000 | 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d    6e 69 6c 20 69 66 20 74 69 6d 65 73 74 61 6d 70 | )..."Return.non-nil.if.timestamp | 
| 7020 | 20 41 20 69 73 20 3e 3d 20 74 69 6d 65 73 74 61    6d 70 20 42 2e 22 0a 20 20 28 3e 3d 20 28 74 73 | .A.is.>=.timestamp.B."...(>=.(ts | 
| 7040 | 2d 75 6e 69 78 20 61 29 20 28 74 73 2d 75 6e 69    78 20 62 29 29 29 0a 0a 3b 3b 3b 3b 20 46 6f 6f | -unix.a).(ts-unix.b)))..;;;;.Foo | 
| 7060 | 74 65 72 0a 0a 28 70 72 6f 76 69 64 65 20 27 74    73 29 0a 0a 3b 3b 3b 20 74 73 2e 65 6c 20 65 6e | ter..(provide.'ts)..;;;.ts.el.en | 
| 7080 | 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ds.here......................... | 
| 70a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 70c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 70e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 71a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 71c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 71e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 72a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 72c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 72e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 73a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 73c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 73e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 74a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 74c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 74e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 75a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 75c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 75e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 76a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 76c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 76e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 77a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 77c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 77e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |