summaryrefslogtreecommitdiff
path: root/.localrepo/nov-20250615.1051.tar
blob: 5d0931102f5c025a13b194a15f765090c7b6e118 (plain)
ofshex dumpascii
0000 6e 6f 76 2d 32 30 32 35 30 36 31 35 2e 31 30 35 31 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 nov-20250615.1051/..............
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 36 30 36 00 20 35 00 00 00 0000000.00000000000.011606..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 6e 6f 76 2d 32 30 32 35 30 36 31 35 2e 31 30 35 31 2f 6e 6f 76 2d 70 6b 67 2e 65 6c 00 00 00 00 nov-20250615.1051/nov-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 30 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 31 34 00 20 30 00 00 00 0000706.00000000000.013514..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 3b 3b 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63 ;;.-*-.no-byte-compile:.t;.lexic
0420 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b al-binding:.nil.-*-.(define-pack
0440 61 67 65 20 22 6e 6f 76 22 20 22 32 30 32 35 30 36 31 35 2e 31 30 35 31 22 0a 20 20 22 46 65 61 age."nov"."20250615.1051"..."Fea
0460 74 75 72 65 66 75 6c 20 45 50 55 42 20 72 65 61 64 65 72 20 6d 6f 64 65 2e 22 0a 20 20 27 28 28 tureful.EPUB.reader.mode."...'((
0480 65 73 78 6d 6c 20 22 30 2e 33 2e 36 22 29 0a 20 20 20 20 28 65 6d 61 63 73 20 22 32 35 2e 31 22 esxml."0.3.6").....(emacs."25.1"
04a0 29 29 0a 20 20 3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 64 65 70 70 2e 62 72 61 75 73 65 2e 63 ))...:url."https://depp.brause.c
04c0 63 2f 6e 6f 76 2e 65 6c 22 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 39 33 33 38 31 36 63 31 39 30 36 c/nov.el"...:commit."933816c1906
04e0 33 33 66 61 31 66 32 66 30 36 36 37 62 61 31 30 35 64 31 33 31 31 35 37 32 62 33 63 36 22 0a 20 33fa1f2f0667ba105d1311572b3c6"..
0500 20 3a 72 65 76 64 65 73 63 20 22 39 33 33 38 31 36 63 31 39 30 36 33 22 0a 20 20 3a 6b 65 79 77 .:revdesc."933816c19063"...:keyw
0520 6f 72 64 73 20 27 28 22 68 79 70 65 72 6d 65 64 69 61 22 20 22 6d 75 6c 74 69 6d 65 64 69 61 22 ords.'("hypermedia"."multimedia"
0540 20 22 65 70 75 62 22 29 0a 20 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22 56 61 73 69 6c 69 6a 20 ."epub")...:authors.'(("Vasilij.
0560 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 22 20 2e 20 22 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64 Schneidermann"..."mail@vasilij.d
0580 65 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 20 27 28 28 22 56 61 73 69 6c 69 6a 20 e"))...:maintainers.'(("Vasilij.
05a0 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 22 20 2e 20 22 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64 Schneidermann"..."mail@vasilij.d
05c0 65 22 29 29 29 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 00 00 e")))...........................
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 6e 6f 76 2d 32 30 32 35 30 36 31 35 2e 31 30 35 31 2f 6e 6f 76 2e 65 6c 00 00 00 00 00 00 00 00 nov-20250615.1051/nov.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 31 32 32 31 30 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 37 33 35 00 20 30 00 00 00 0122107.00000000000.012735..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 6e 6f 76 2e 65 6c 20 2d 2d 2d 20 46 65 61 74 75 72 65 66 75 6c 20 45 50 55 42 20 72 ;;;.nov.el.---.Featureful.EPUB.r
0820 65 61 64 65 72 20 6d 6f 64 65 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 74 eader.mode.-*-.lexical-binding:t
0840 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 37 20 56 61 73 69 .-*-..;;.Copyright.(C).2017.Vasi
0860 6c 69 6a 20 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 20 3c 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e lij.Schneidermann.<mail@vasilij.
0880 64 65 3e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 56 61 73 69 6c 69 6a 20 53 63 68 6e 65 69 64 65 de>..;;.Author:.Vasilij.Schneide
08a0 72 6d 61 6e 6e 20 3c 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64 65 3e 0a 3b 3b 20 55 52 4c 3a 20 rmann.<mail@vasilij.de>.;;.URL:.
08c0 68 74 74 70 73 3a 2f 2f 64 65 70 70 2e 62 72 61 75 73 65 2e 63 63 2f 6e 6f 76 2e 65 6c 0a 3b 3b https://depp.brause.cc/nov.el.;;
08e0 20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 32 35 30 36 31 35 2e 31 30 35 31 0a .Package-Version:.20250615.1051.
0900 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 39 33 33 38 31 36 63 31 39 30 36 ;;.Package-Revision:.933816c1906
0920 33 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 65 73 78 6d 6c 20 22 3.;;.Package-Requires:.((esxml."
0940 30 2e 33 2e 36 22 29 20 28 65 6d 61 63 73 20 22 32 35 2e 31 22 29 29 0a 3b 3b 20 4b 65 79 77 6f 0.3.6").(emacs."25.1")).;;.Keywo
0960 72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 2c 20 6d 75 6c 74 69 6d 65 64 69 61 2c 20 65 70 75 rds:.hypermedia,.multimedia,.epu
0980 62 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47 b..;;.This.file.is.NOT.part.of.G
09a0 4e 55 20 45 6d 61 63 73 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 NU.Emacs...;;.This.program.is.fr
09c0 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 72 69 62 75 74 ee.software;.you.can.redistribut
09e0 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 64 65 72 20 74 e.it.and/or.modify.;;.it.under.t
0a00 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 20 50 75 62 6c he.terms.of.the.GNU.General.Publ
0a20 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 3b 3b 20 74 68 ic.License.as.published.by.;;.th
0a40 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 20 65 69 74 68 e.Free.Software.Foundation,.eith
0a60 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 2c 20 6f 72 0a er.version.3.of.the.License,.or.
0a80 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 65 72 20 76 65 ;;.(at.your.option).any.later.ve
0aa0 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 64 69 73 74 72 rsion...;;.This.program.is.distr
0ac0 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 77 69 6c 6c 20 ibuted.in.the.hope.that.it.will.
0ae0 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 4e 59 20 57 41 be.useful,.;;.but.WITHOUT.ANY.WA
0b00 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 70 6c 69 65 64 RRANTY;.without.even.the.implied
0b20 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 4c 49 54 59 20 .warranty.of.;;.MERCHANTABILITY.
0b40 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 20 50 55 52 50 or.FITNESS.FOR.A.PARTICULAR.PURP
0b60 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 6c 20 50 75 62 OSE...See.the.;;.GNU.General.Pub
0b80 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 73 2e 0a 0a 3b lic.License.for.more.details...;
0ba0 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 61 20 63 6f 70 ;.You.should.have.received.a.cop
0bc0 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 20 4c 69 63 65 y.of.the.GNU.General.Public.Lice
0be0 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 72 61 6d 2e 20 nse.;;.along.with.this.program..
0c00 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 75 2e 6f 72 67 .If.not,.see.<http://www.gnu.org
0c20 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b /licenses/>...;;;.Commentary:..;
0c40 3b 20 6e 6f 76 2e 65 6c 20 70 72 6f 76 69 64 65 73 20 61 20 6d 61 6a 6f 72 20 6d 6f 64 65 20 66 ;.nov.el.provides.a.major.mode.f
0c60 6f 72 20 72 65 61 64 69 6e 67 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 73 2e 0a 3b 3b 0a 3b 3b or.reading.EPUB.documents..;;.;;
0c80 20 46 65 61 74 75 72 65 73 3a 0a 3b 3b 0a 3b 3b 20 2d 20 42 61 73 69 63 20 6e 61 76 69 67 61 74 .Features:.;;.;;.-.Basic.navigat
0ca0 69 6f 6e 20 28 6a 75 6d 70 20 74 6f 20 54 4f 43 2c 20 70 72 65 76 69 6f 75 73 2f 6e 65 78 74 20 ion.(jump.to.TOC,.previous/next.
0cc0 63 68 61 70 74 65 72 29 0a 3b 3b 20 2d 20 52 65 6d 65 6d 62 65 72 69 6e 67 20 61 6e 64 20 72 65 chapter).;;.-.Remembering.and.re
0ce0 73 74 6f 72 69 6e 67 20 74 68 65 20 6c 61 73 74 20 72 65 61 64 20 70 6f 73 69 74 69 6f 6e 0a 3b storing.the.last.read.position.;
0d00 3b 20 2d 20 4a 75 6d 70 20 74 6f 20 6e 65 78 74 20 63 68 61 70 74 65 72 20 77 68 65 6e 20 73 63 ;.-.Jump.to.next.chapter.when.sc
0d20 72 6f 6c 6c 69 6e 67 20 62 65 79 6f 6e 64 20 65 6e 64 0a 3b 3b 20 2d 20 53 74 6f 72 69 6e 67 20 rolling.beyond.end.;;.-.Storing.
0d40 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 4f 72 67 20 6c 69 6e 6b 73 20 74 6f 20 45 50 55 42 20 and.following.Org.links.to.EPUB.
0d60 66 69 6c 65 73 0a 3b 3b 20 2d 20 52 65 6e 64 65 72 73 20 45 50 55 42 32 20 28 2e 6e 63 78 29 20 files.;;.-.Renders.EPUB2.(.ncx).
0d80 61 6e 64 20 45 50 55 42 33 20 28 3c 6e 61 76 3e 29 20 54 4f 43 73 0a 3b 3b 20 2d 20 48 79 70 65 and.EPUB3.(<nav>).TOCs.;;.-.Hype
0da0 72 6c 69 6e 6b 73 20 74 6f 20 69 6e 74 65 72 6e 61 6c 20 61 6e 64 20 65 78 74 65 72 6e 61 6c 20 rlinks.to.internal.and.external.
0dc0 74 61 72 67 65 74 73 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 74 65 78 74 75 61 6c 20 61 6e targets.;;.-.Supports.textual.an
0de0 64 20 69 6d 61 67 65 20 64 6f 63 75 6d 65 6e 74 73 0a 3b 3b 20 2d 20 49 6e 66 6f 2d 73 74 79 6c d.image.documents.;;.-.Info-styl
0e00 65 20 68 69 73 74 6f 72 79 20 6e 61 76 69 67 61 74 69 6f 6e 0a 3b 3b 20 2d 20 56 69 65 77 20 73 e.history.navigation.;;.-.View.s
0e20 6f 75 72 63 65 20 6f 66 20 64 6f 63 75 6d 65 6e 74 20 66 69 6c 65 73 0a 3b 3b 20 2d 20 4d 65 74 ource.of.document.files.;;.-.Met
0e40 61 64 61 74 61 20 64 69 73 70 6c 61 79 0a 3b 3b 20 2d 20 49 6d 61 67 65 20 72 65 73 63 61 6c 69 adata.display.;;.-.Image.rescali
0e60 6e 67 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 ng..;;;.Code:..(require.'cl-lib)
0e80 0a 28 72 65 71 75 69 72 65 20 27 64 6f 6d 29 0a 28 72 65 71 75 69 72 65 20 27 65 73 78 6d 6c 2d .(require.'dom).(require.'esxml-
0ea0 71 75 65 72 79 29 0a 28 72 65 71 75 69 72 65 20 27 69 6d 61 67 65 29 0a 28 72 65 71 75 69 72 65 query).(require.'image).(require
0ec0 20 27 73 65 71 29 0a 28 72 65 71 75 69 72 65 20 27 73 68 72 29 0a 28 72 65 71 75 69 72 65 20 27 .'seq).(require.'shr).(require.'
0ee0 75 72 6c 2d 70 61 72 73 65 29 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 2d 75 74 69 6c 29 0a 0a url-parse).(require.'url-util)..
0f00 28 72 65 71 75 69 72 65 20 27 62 6f 6f 6b 6d 61 72 6b 29 0a 28 72 65 71 75 69 72 65 20 27 65 61 (require.'bookmark).(require.'ea
0f20 73 79 6d 65 6e 75 29 0a 28 72 65 71 75 69 72 65 20 27 69 6d 65 6e 75 29 0a 28 72 65 71 75 69 72 symenu).(require.'imenu).(requir
0f40 65 20 27 6f 72 67 29 0a 28 72 65 71 75 69 72 65 20 27 72 65 63 65 6e 74 66 29 0a 0a 28 77 68 65 e.'org).(require.'recentf)..(whe
0f60 6e 20 28 6e 6f 74 20 28 66 62 6f 75 6e 64 70 20 27 6c 69 62 78 6d 6c 2d 70 61 72 73 65 2d 78 6d n.(not.(fboundp.'libxml-parse-xm
0f80 6c 2d 72 65 67 69 6f 6e 29 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 59 6f 75 72 20 45 6d 61 63 l-region))...(message."Your.Emac
0fa0 73 20 77 61 73 6e 27 74 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 6c 69 62 78 6d 6c 20 73 75 s.wasn't.compiled.with.libxml.su
0fc0 70 70 6f 72 74 22 29 29 0a 0a 0c 0a 3b 3b 3b 20 45 50 55 42 20 70 72 65 70 61 72 61 74 69 6f 6e pport"))....;;;.EPUB.preparation
0fe0 0a 0a 28 64 65 66 67 72 6f 75 70 20 6e 6f 76 20 6e 69 6c 0a 20 20 22 45 50 55 42 20 72 65 61 64 ..(defgroup.nov.nil..."EPUB.read
1000 65 72 20 6d 6f 64 65 22 0a 20 20 3a 67 72 6f 75 70 20 27 6d 75 6c 74 69 6d 65 64 69 61 29 0a 0a er.mode"...:group.'multimedia)..
1020 28 64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 75 6e 7a 69 70 2d 70 72 6f 67 72 61 6d 20 28 65 78 (defcustom.nov-unzip-program.(ex
1040 65 63 75 74 61 62 6c 65 2d 66 69 6e 64 20 22 75 6e 7a 69 70 22 29 0a 20 20 22 50 61 74 68 20 74 ecutable-find."unzip")..."Path.t
1060 6f 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 65 78 65 63 75 74 61 62 6c 65 2e 22 0a 20 20 3a o.decompression.executable."...:
1080 74 79 70 65 20 27 28 66 69 6c 65 20 3a 6d 75 73 74 2d 6d 61 74 63 68 20 74 29 0a 20 20 3a 67 72 type.'(file.:must-match.t)...:gr
10a0 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 75 6e 7a 69 70 2d oup.'nov)..(defcustom.nov-unzip-
10c0 61 72 67 73 20 27 28 22 2d 6f 64 22 20 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 6e 61 6d 65 29 args.'("-od".directory.filename)
10e0 0a 20 20 22 41 72 67 75 6d 65 6e 74 73 20 74 6f 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 65 ..."Arguments.to.decompression.e
1100 78 65 63 75 74 61 62 6c 65 2e 0a 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 65 78 70 65 63 74 73 xecutable..This.variable.expects
1120 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 65 78 63 65 70 74 20 66 6f 72 20 60 .a.list.of.strings,.except.for.`
1140 64 69 72 65 63 74 6f 72 79 27 0a 61 6e 64 20 60 66 69 6c 65 6e 61 6d 65 27 20 73 79 6d 62 6f 6c directory'.and.`filename'.symbol
1160 73 2c 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 61 63 63 6f 72 64 s,.which.will.be.replaced.accord
1180 69 6e 67 6c 79 20 77 68 65 6e 0a 6f 70 65 6e 69 6e 67 20 61 6e 20 45 50 55 42 20 66 69 6c 65 2e ingly.when.opening.an.EPUB.file.
11a0 22 0a 20 20 3a 74 79 70 65 20 27 28 72 65 70 65 61 74 20 28 63 68 6f 69 63 65 20 28 73 74 72 69 "...:type.'(repeat.(choice.(stri
11c0 6e 67 20 3a 74 61 67 20 22 41 72 67 75 6d 65 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ng.:tag."Argument").............
11e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 69 72 65 63 74 .............(const.:tag."Direct
1200 6f 72 79 22 20 64 69 72 65 63 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ory".directory).................
1220 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 46 69 6c 65 6e 61 6d 65 22 20 .........(const.:tag."Filename".
1240 66 69 6c 65 6e 61 6d 65 29 29 29 0a 20 20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 filename)))...:group.'nov)..(def
1260 63 75 73 74 6f 6d 20 6e 6f 76 2d 76 61 72 69 61 62 6c 65 2d 70 69 74 63 68 20 74 0a 20 20 22 4e custom.nov-variable-pitch.t..."N
1280 6f 6e 2d 6e 69 6c 20 69 66 20 61 20 76 61 72 69 61 62 6c 65 20 70 69 74 63 68 20 66 61 63 65 20 on-nil.if.a.variable.pitch.face.
12a0 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0a 4f 74 68 65 72 77 69 73 65 20 74 68 65 20 64 65 should.be.used..Otherwise.the.de
12c0 66 61 75 6c 74 20 66 61 63 65 20 69 73 20 75 73 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f fault.face.is.used."...:type.'bo
12e0 6f 6c 65 61 6e 0a 20 20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d olean...:group.'nov)..(defcustom
1300 20 6e 6f 76 2d 74 65 78 74 2d 77 69 64 74 68 20 6e 69 6c 0a 20 20 22 57 69 64 74 68 20 66 69 6c .nov-text-width.nil..."Width.fil
1320 6c 65 64 20 74 65 78 74 20 73 68 61 6c 6c 20 6f 63 63 75 70 79 2e 0a 41 6e 20 69 6e 74 65 67 65 led.text.shall.occupy..An.intege
1340 72 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f r.is.interpreted.as.the.number.o
1360 66 20 63 6f 6c 75 6d 6e 73 2e 20 20 49 66 20 6e 69 6c 2c 20 75 73 65 0a 74 68 65 20 66 75 6c 6c f.columns...If.nil,.use.the.full
1380 20 77 69 6e 64 6f 77 27 73 20 77 69 64 74 68 2e 20 20 49 66 20 74 2c 20 64 69 73 61 62 6c 65 20 .window's.width...If.t,.disable.
13a0 66 69 6c 6c 69 6e 67 20 63 6f 6d 70 6c 65 74 65 6c 79 2e 20 20 4e 6f 74 65 0a 74 68 61 74 20 74 filling.completely...Note.that.t
13c0 68 69 73 20 76 61 72 69 61 62 6c 65 20 6f 6e 6c 79 20 68 61 73 20 61 6e 20 65 66 66 65 63 74 20 his.variable.only.has.an.effect.
13e0 69 6e 20 45 6d 61 63 73 20 32 35 2e 31 20 6f 72 20 67 72 65 61 74 65 72 2e 22 0a 20 20 3a 74 79 in.Emacs.25.1.or.greater."...:ty
1400 70 65 20 27 28 63 68 6f 69 63 65 20 28 69 6e 74 65 67 65 72 20 3a 74 61 67 20 22 46 69 78 65 64 pe.'(choice.(integer.:tag."Fixed
1420 20 77 69 64 74 68 20 69 6e 20 63 68 61 72 61 63 74 65 72 73 22 29 0a 20 20 20 20 20 20 20 20 20 .width.in.characters")..........
1440 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 20 20 3a 74 61 67 20 22 55 73 65 20 74 68 65 20 77 ........(const...:tag."Use.the.w
1460 69 64 74 68 20 6f 66 20 74 68 65 20 77 69 6e 64 6f 77 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 idth.of.the.window".nil)........
1480 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 20 20 3a 74 61 67 20 22 44 69 73 61 62 6c 65 ..........(const...:tag."Disable
14a0 20 66 69 6c 6c 69 6e 67 22 20 74 29 29 0a 20 20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 .filling".t))...:group.'nov)..(d
14c0 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74 6d 6c 2d 66 75 6e 63 74 69 6f efcustom.nov-render-html-functio
14e0 6e 20 27 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74 6d 6c 0a 20 20 22 46 75 6e 63 74 69 6f 6e 20 75 n.'nov-render-html..."Function.u
1500 73 65 64 20 74 6f 20 72 65 6e 64 65 72 20 48 54 4d 4c 2e 0a 49 74 27 73 20 63 61 6c 6c 65 64 20 sed.to.render.HTML..It's.called.
1520 77 69 74 68 6f 75 74 20 61 72 67 75 6d 65 6e 74 73 20 77 69 74 68 20 61 20 62 75 66 66 65 72 20 without.arguments.with.a.buffer.
1540 63 6f 6e 74 61 69 6e 69 6e 67 20 48 54 4d 4c 20 61 6e 64 0a 73 68 6f 75 6c 64 20 63 68 61 6e 67 containing.HTML.and.should.chang
1560 65 20 69 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 72 65 6e 64 65 72 65 64 20 76 65 72 e.it.to.contain.the.rendered.ver
1580 73 69 6f 6e 20 6f 66 20 69 74 2e 22 0a 20 20 3a 74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e 0a 20 sion.of.it."...:type.'function..
15a0 20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 70 72 .:group.'nov)..(defcustom.nov-pr
15c0 65 2d 68 74 6d 6c 2d 72 65 6e 64 65 72 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 e-html-render-hook.nil..."Hook.r
15e0 75 6e 20 62 65 66 6f 72 65 20 60 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74 6d 6c 27 2e 22 0a 20 20 un.before.`nov-render-html'."...
1600 3a 74 79 70 65 20 27 68 6f 6f 6b 0a 20 20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 :type.'hook...:group.'nov)..(def
1620 63 75 73 74 6f 6d 20 6e 6f 76 2d 70 6f 73 74 2d 68 74 6d 6c 2d 72 65 6e 64 65 72 2d 68 6f 6f 6b custom.nov-post-html-render-hook
1640 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20 60 6e 6f 76 2d 72 65 6e 64 .nil..."Hook.run.after.`nov-rend
1660 65 72 2d 68 74 6d 6c 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 0a 20 20 3a 67 72 6f 75 er-html'."...:type.'hook...:grou
1680 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 p.'nov)..(defcustom.nov-save-pla
16a0 63 65 2d 66 69 6c 65 20 28 6c 6f 63 61 74 65 2d 75 73 65 72 2d 65 6d 61 63 73 2d 66 69 6c 65 20 ce-file.(locate-user-emacs-file.
16c0 22 6e 6f 76 2d 70 6c 61 63 65 73 22 29 0a 20 20 22 46 69 6c 65 20 6e 61 6d 65 20 77 68 65 72 65 "nov-places")..."File.name.where
16e0 20 6c 61 73 74 20 72 65 61 64 69 6e 67 20 70 6c 61 63 65 73 20 61 72 65 20 73 61 76 65 64 20 74 .last.reading.places.are.saved.t
1700 6f 20 61 6e 64 20 72 65 73 74 6f 72 65 64 20 66 72 6f 6d 2e 0a 49 66 20 73 65 74 20 74 6f 20 60 o.and.restored.from..If.set.to.`
1720 6e 69 6c 27 2c 20 6e 6f 20 73 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 69 73 nil',.no.saving.and.restoring.is
1740 20 70 65 72 66 6f 72 6d 65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 20 28 66 .performed."...:type.'(choice.(f
1760 69 6c 65 20 20 3a 74 61 67 20 22 46 69 6c 65 20 6e 61 6d 65 22 29 0a 20 20 20 20 20 20 20 20 20 ile..:tag."File.name")..........
1780 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 6f 6e 27 74 20 73 61 76 65 20 ........(const.:tag."Don't.save.
17a0 6c 61 73 74 20 72 65 61 64 69 6e 67 20 70 6c 61 63 65 73 22 20 6e 69 6c 29 29 0a 20 20 3a 67 72 last.reading.places".nil))...:gr
17c0 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 68 65 61 64 65 72 oup.'nov)..(defcustom.nov-header
17e0 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 20 22 25 74 3a 20 25 63 22 0a 20 20 22 48 65 61 64 65 72 20 -line-format."%t:.%c"..."Header.
1800 6c 69 6e 65 20 66 6f 72 6d 61 74 2e 0a 2d 20 25 74 20 69 73 20 72 65 70 6c 61 63 65 64 20 62 79 line.format..-.%t.is.replaced.by
1820 20 74 68 65 20 74 69 74 6c 65 2e 0a 2d 20 25 63 20 69 73 20 72 65 70 6c 61 63 65 64 20 62 79 20 .the.title..-.%c.is.replaced.by.
1840 74 68 65 20 63 68 61 70 74 65 72 20 74 69 74 6c 65 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72 the.chapter.title."...:type.'str
1860 69 6e 67 0a 20 20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 ing...:group.'nov)..(defvar-loca
1880 6c 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 20 6e 69 6c 0a 20 20 22 50 61 74 68 20 74 6f 20 74 l.nov-file-name.nil..."Path.to.t
18a0 68 65 20 45 50 55 42 20 66 69 6c 65 20 62 61 63 6b 69 6e 67 20 74 68 69 73 20 62 75 66 66 65 72 he.EPUB.file.backing.this.buffer
18c0 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 69 6e 69 74 69 61 6c 69 7a .")..(defvar-local.nov-initializ
18e0 65 2d 77 6f 72 6b 2d 64 69 72 2d 70 20 74 0a 20 20 22 53 65 74 20 74 6f 20 6e 69 6c 20 69 66 20 e-work-dir-p.t..."Set.to.nil.if.
1900 6e 6f 20 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 62 65 20 69 no.working.directory.should.be.i
1920 6e 69 74 69 61 6c 69 7a 65 64 2e 22 29 0a 28 70 75 74 20 27 6e 6f 76 2d 69 6e 69 74 69 61 6c 69 nitialized.").(put.'nov-initiali
1940 7a 65 2d 77 6f 72 6b 2d 64 69 72 2d 70 20 27 70 65 72 6d 61 6e 65 6e 74 2d 6c 6f 63 61 6c 20 74 ze-work-dir-p.'permanent-local.t
1960 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 72 65 6d 6f 76 65 2d 77 6f 72 6b )..(defvar-local.nov-remove-work
1980 2d 64 69 72 2d 6f 6e 2d 65 78 69 74 2d 70 20 74 0a 20 20 22 53 65 74 20 74 6f 20 6e 69 6c 20 69 -dir-on-exit-p.t..."Set.to.nil.i
19a0 66 20 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 62 65 20 70 72 f.working.directory.should.be.pr
19c0 65 73 65 72 76 65 64 20 61 66 74 65 72 20 65 78 69 74 2e 22 29 0a 28 70 75 74 20 27 6e 6f 76 2d eserved.after.exit.").(put.'nov-
19e0 72 65 6d 6f 76 65 2d 77 6f 72 6b 2d 64 69 72 2d 6f 6e 2d 65 78 69 74 2d 70 20 27 70 65 72 6d 61 remove-work-dir-on-exit-p.'perma
1a00 6e 65 6e 74 2d 6c 6f 63 61 6c 20 74 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 nent-local.t)..(defvar-local.nov
1a20 2d 77 6f 72 6b 2d 64 69 72 20 6e 69 6c 0a 20 20 22 44 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 -work-dir.nil..."Directory.conta
1a40 69 6e 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 27 73 20 45 50 55 42 20 66 69 6c 65 73 2e 22 29 ining.the.buffer's.EPUB.files.")
1a60 0a 28 70 75 74 20 27 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 27 70 65 72 6d 61 6e 65 6e 74 2d 6c .(put.'nov-work-dir.'permanent-l
1a80 6f 63 61 6c 20 74 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 63 6f 6e 74 65 ocal.t)..(defvar-local.nov-conte
1aa0 6e 74 2d 66 69 6c 65 20 6e 69 6c 0a 20 20 22 50 61 74 68 20 74 6f 20 74 68 65 20 45 50 55 42 20 nt-file.nil..."Path.to.the.EPUB.
1ac0 62 75 66 66 65 72 27 73 20 2e 6f 70 66 20 66 69 6c 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c buffer's..opf.file.")..(defvar-l
1ae0 6f 63 61 6c 20 6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e 20 6e 69 6c 0a 20 20 22 56 65 72 ocal.nov-epub-version.nil..."Ver
1b00 73 69 6f 6e 20 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 45 50 55 42 20 62 75 66 66 65 72 2e 22 sion.string.of.the.EPUB.buffer."
1b20 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 20 6e 69 )..(defvar-local.nov-metadata.ni
1b40 6c 0a 20 20 22 4d 65 74 61 64 61 74 61 20 6f 66 20 74 68 65 20 45 50 55 42 20 62 75 66 66 65 72 l..."Metadata.of.the.EPUB.buffer
1b60 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 .")..(defvar-local.nov-documents
1b80 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 66 6f 72 20 74 68 65 20 45 50 55 42 20 62 75 66 66 65 .nil..."Alist.for.the.EPUB.buffe
1ba0 72 27 73 20 64 6f 63 75 6d 65 6e 74 73 2e 0a 45 61 63 68 20 61 6c 69 73 74 20 69 74 65 6d 20 63 r's.documents..Each.alist.item.c
1bc0 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 66 75 onsists.of.the.identifier.and.fu
1be0 6c 6c 20 70 61 74 68 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 64 6f ll.path.")..(defvar-local.nov-do
1c00 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 30 0a 20 20 22 49 6e 64 65 78 20 6f 66 20 74 68 65 20 cuments-index.0..."Index.of.the.
1c20 63 75 72 72 65 6e 74 6c 79 20 72 65 6e 64 65 72 65 64 20 64 6f 63 75 6d 65 6e 74 20 69 6e 20 74 currently.rendered.document.in.t
1c40 68 65 20 45 50 55 42 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c he.EPUB.buffer.")..(defvar-local
1c60 20 6e 6f 76 2d 74 6f 63 2d 69 64 20 6e 69 6c 0a 20 20 22 54 4f 43 20 69 64 65 6e 74 69 66 69 65 .nov-toc-id.nil..."TOC.identifie
1c80 72 20 6f 66 20 74 68 65 20 45 50 55 42 20 62 75 66 66 65 72 2e 22 29 0a 0a 28 64 65 66 76 61 72 r.of.the.EPUB.buffer.")..(defvar
1ca0 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 68 69 73 74 6f 72 79 20 6e 69 6c 0a 20 20 22 53 74 61 63 6b 20 -local.nov-history.nil..."Stack.
1cc0 6f 66 20 64 6f 63 75 6d 65 6e 74 73 20 75 73 65 72 20 68 61 73 20 76 69 73 69 74 65 64 2e 0a 45 of.documents.user.has.visited..E
1ce0 61 63 68 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 73 74 61 63 6b 20 69 73 20 61 20 6c 69 ach.element.of.the.stack.is.a.li
1d00 73 74 20 28 4e 4f 44 45 49 4e 44 45 58 20 42 55 46 46 45 52 50 4f 53 29 2e 22 29 0a 0a 28 64 65 st.(NODEINDEX.BUFFERPOS).")..(de
1d20 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 6e fvar-local.nov-history-forward.n
1d40 69 6c 0a 20 20 22 53 74 61 63 6b 20 6f 66 20 64 6f 63 75 6d 65 6e 74 73 20 75 73 65 72 20 68 61 il..."Stack.of.documents.user.ha
1d60 73 20 76 69 73 69 74 65 64 20 77 69 74 68 20 60 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 62 61 63 6b s.visited.with.`nov-history-back
1d80 27 20 63 6f 6d 6d 61 6e 64 2e 0a 45 61 63 68 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 73 '.command..Each.element.of.the.s
1da0 74 61 63 6b 20 69 73 20 61 20 6c 69 73 74 20 28 4e 4f 44 45 49 4e 44 45 58 20 42 55 46 46 45 52 tack.is.a.list.(NODEINDEX.BUFFER
1dc0 50 4f 53 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 28 64 POS).")..(defun.nov-make-path.(d
1de0 69 72 65 63 74 6f 72 79 20 66 69 6c 65 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 61 74 68 20 irectory.file)..."Create.a.path.
1e00 66 72 6f 6d 20 44 49 52 45 43 54 4f 52 59 20 61 6e 64 20 46 49 4c 45 2e 22 0a 20 20 28 63 6f 6e from.DIRECTORY.and.FILE."...(con
1e20 63 61 74 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 61 73 2d 64 69 72 65 63 74 6f 72 79 20 64 69 72 65 cat.(file-name-as-directory.dire
1e40 63 74 6f 72 79 29 20 66 69 6c 65 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 64 69 72 65 63 74 ctory).file))..(defun.nov-direct
1e60 6f 72 79 2d 66 69 6c 65 73 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 52 65 74 75 72 6e 73 ory-files.(directory)..."Returns
1e80 20 61 20 6c 69 73 74 20 6f 66 20 66 69 6c 65 73 20 69 6e 20 44 49 52 45 43 54 4f 52 59 20 65 78 .a.list.of.files.in.DIRECTORY.ex
1ea0 63 65 70 74 20 66 6f 72 20 2e 20 61 6e 64 20 2e 2e 22 0a 20 20 28 73 65 71 2d 72 65 6d 6f 76 65 cept.for...and..."...(seq-remove
1ec0 20 28 6c 61 6d 62 64 61 20 28 66 69 6c 65 29 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 .(lambda.(file).(string-match-p.
1ee0 22 2f 5c 5c 2e 5c 5c 28 3f 3a 5c 5c 2e 5c 5c 29 3f 5c 5c 27 22 20 66 69 6c 65 29 29 0a 20 20 20 "/\\.\\(?:\\.\\)?\\'".file))....
1f00 20 20 20 20 20 20 20 20 20 20 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 20 64 69 72 65 ...........(directory-files.dire
1f20 63 74 6f 72 79 20 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 61 69 6e 73 2d ctory.t)))..(defun.nov-contains-
1f40 6e 65 73 74 65 64 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20 nested-directory-p.(directory)..
1f60 20 22 4e 6f 6e 2d 6e 69 6c 20 69 66 20 44 49 52 45 43 54 4f 52 59 20 63 6f 6e 74 61 69 6e 73 20 ."Non-nil.if.DIRECTORY.contains.
1f80 65 78 61 63 74 6c 79 20 6f 6e 65 20 64 69 72 65 63 74 6f 72 79 2e 22 0a 20 20 28 6c 65 74 2a 20 exactly.one.directory."...(let*.
1fa0 28 28 66 69 6c 65 73 20 28 6e 6f 76 2d 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 20 64 69 72 ((files.(nov-directory-files.dir
1fc0 65 63 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 20 28 63 61 72 20 66 69 6c ectory))..........(file.(car.fil
1fe0 65 73 29 29 29 0a 20 20 20 20 28 61 6e 64 20 28 3d 20 28 6c 65 6e 67 74 68 20 66 69 6c 65 73 29 es))).....(and.(=.(length.files)
2000 20 31 29 0a 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66 .1)..........(file-directory-p.f
2020 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 66 69 6c 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f ile)..........file)))..(defun.no
2040 76 2d 75 6e 6e 65 73 74 2d 64 69 72 65 63 74 6f 72 79 20 28 64 69 72 65 63 74 6f 72 79 20 63 68 v-unnest-directory.(directory.ch
2060 69 6c 64 29 0a 20 20 22 4d 6f 76 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 43 48 49 4c 44 20 69 ild)..."Move.contents.of.CHILD.i
2080 6e 74 6f 20 44 49 52 45 43 54 4f 52 59 2c 20 74 68 65 6e 20 64 65 6c 65 74 65 20 43 48 49 4c 44 nto.DIRECTORY,.then.delete.CHILD
20a0 2e 22 0a 20 20 3b 3b 20 46 49 58 4d 45 3a 20 74 68 69 73 20 77 69 6c 6c 20 6d 6f 73 74 20 63 65 ."...;;.FIXME:.this.will.most.ce
20c0 72 74 61 69 6e 6c 79 20 66 61 69 6c 20 66 6f 72 20 63 6f 6e 2f 63 6f 6e 0a 20 20 28 64 6f 6c 69 rtainly.fail.for.con/con...(doli
20e0 73 74 20 28 69 74 65 6d 20 28 6e 6f 76 2d 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 20 63 68 st.(item.(nov-directory-files.ch
2100 69 6c 64 29 29 0a 20 20 20 20 28 72 65 6e 61 6d 65 2d 66 69 6c 65 20 69 74 65 6d 20 64 69 72 65 ild)).....(rename-file.item.dire
2120 63 74 6f 72 79 29 29 0a 20 20 28 64 65 6c 65 74 65 2d 64 69 72 65 63 74 6f 72 79 20 63 68 69 6c ctory))...(delete-directory.chil
2140 64 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73 d))..(defun.nov--fix-permissions
2160 20 28 66 69 6c 65 2d 6f 72 2d 64 69 72 65 63 74 6f 72 79 20 6d 6f 64 65 29 0a 20 20 28 6c 65 74 .(file-or-directory.mode)...(let
2180 2a 20 28 28 6d 6f 64 65 73 20 28 66 69 6c 65 2d 6d 6f 64 65 73 20 66 69 6c 65 2d 6f 72 2d 64 69 *.((modes.(file-modes.file-or-di
21a0 72 65 63 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 69 78 65 64 2d 6d 6f 64 65 20 28 rectory))..........(fixed-mode.(
21c0 66 69 6c 65 2d 6d 6f 64 65 73 2d 73 79 6d 62 6f 6c 69 63 2d 74 6f 2d 6e 75 6d 62 65 72 20 6d 6f file-modes-symbolic-to-number.mo
21e0 64 65 20 6d 6f 64 65 73 29 29 29 0a 20 20 20 20 28 73 65 74 2d 66 69 6c 65 2d 6d 6f 64 65 73 20 de.modes))).....(set-file-modes.
2200 66 69 6c 65 2d 6f 72 2d 64 69 72 65 63 74 6f 72 79 20 66 69 78 65 64 2d 6d 6f 64 65 29 29 29 0a file-or-directory.fixed-mode))).
2220 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73 20 28 64 69 72 .(defun.nov-fix-permissions.(dir
2240 65 63 74 6f 72 79 29 0a 20 20 22 49 74 65 72 61 74 65 20 72 65 63 75 72 73 69 76 65 6c 79 20 74 ectory)..."Iterate.recursively.t
2260 68 72 6f 75 67 68 20 44 49 52 45 43 54 4f 52 59 20 74 6f 20 66 69 78 20 69 74 73 20 66 69 6c 65 hrough.DIRECTORY.to.fix.its.file
2280 73 2e 22 0a 20 20 28 6e 6f 76 2d 2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73 20 64 69 72 65 s."...(nov--fix-permissions.dire
22a0 63 74 6f 72 79 20 22 2b 72 78 22 29 0a 20 20 28 64 6f 6c 69 73 74 20 28 66 69 6c 65 20 28 6e 6f ctory."+rx")...(dolist.(file.(no
22c0 76 2d 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 20 64 69 72 65 63 74 6f 72 79 29 29 0a 20 20 v-directory-files.directory))...
22e0 20 20 28 69 66 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66 69 6c 65 29 0a 20 20 ..(if.(file-directory-p.file)...
2300 20 20 20 20 20 20 28 6e 6f 76 2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 69 6c 65 29 ......(nov-fix-permissions.file)
2320 0a 20 20 20 20 20 20 28 6e 6f 76 2d 2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 69 6c .......(nov--fix-permissions.fil
2340 65 20 22 2b 72 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 75 6e 7a 69 70 2d 65 70 75 e."+r"))))..(defun.nov-unzip-epu
2360 62 20 28 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 6e 61 6d 65 29 0a 20 20 22 45 78 74 72 61 63 b.(directory.filename)..."Extrac
2380 74 20 46 49 4c 45 4e 41 4d 45 20 69 6e 74 6f 20 44 49 52 45 43 54 4f 52 59 2e 0a 55 6e 6e 65 63 t.FILENAME.into.DIRECTORY..Unnec
23a0 65 73 73 61 72 79 20 6e 65 73 74 69 6e 67 20 69 73 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20 60 essary.nesting.is.removed.with.`
23c0 6e 6f 76 2d 75 6e 6e 65 73 74 2d 64 69 72 65 63 74 6f 72 79 27 2e 22 0a 20 20 28 6c 65 74 2a 20 nov-unnest-directory'."...(let*.
23e0 28 28 73 74 61 74 75 73 20 28 61 70 70 6c 79 20 23 27 63 61 6c 6c 2d 70 72 6f 63 65 73 73 20 6e ((status.(apply.#'call-process.n
2400 6f 76 2d 75 6e 7a 69 70 2d 70 72 6f 67 72 61 6d 20 6e 69 6c 20 22 2a 6e 6f 76 20 75 6e 7a 69 70 ov-unzip-program.nil."*nov.unzip
2420 2a 22 20 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 28 6d 61 *".t.........................(ma
2440 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 pcar.(lambda.(arg)..............
2460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 .....................(cond......
2480 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 28 28 ..............................((
24a0 65 71 20 61 72 67 20 27 64 69 72 65 63 74 6f 72 79 29 20 64 69 72 65 63 74 6f 72 79 29 0a 20 20 eq.arg.'directory).directory)...
24c0 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 ................................
24e0 20 28 28 65 71 20 61 72 67 20 27 66 69 6c 65 6e 61 6d 65 29 20 66 69 6c 65 6e 61 6d 65 29 0a 20 .((eq.arg.'filename).filename)..
2500 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 ................................
2520 20 20 28 74 20 61 72 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(t.arg))).....................
2540 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d 75 6e 7a 69 70 2d 61 72 67 73 29 29 29 0a 20 20 ............nov-unzip-args)))...
2560 20 20 20 20 20 20 20 63 68 69 6c 64 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 73 65 74 71 20 63 .......child).....(while.(setq.c
2580 68 69 6c 64 20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 73 2d 6e 65 73 74 65 64 2d 64 69 72 65 63 74 hild.(nov-contains-nested-direct
25a0 6f 72 79 2d 70 20 64 69 72 65 63 74 6f 72 79 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 75 6e 6e ory-p.directory)).......(nov-unn
25c0 65 73 74 2d 64 69 72 65 63 74 6f 72 79 20 64 69 72 65 63 74 6f 72 79 20 63 68 69 6c 64 29 29 0a est-directory.directory.child)).
25e0 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 75 6e 7a 69 70 20 70 72 65 73 65 72 76 65 73 20 66 69 6c ....;;.HACK:.unzip.preserves.fil
2600 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 2c 20 6e 6f 20 6d 61 74 74 65 72 20 68 6f 77 20 73 69 6c e.permissions,.no.matter.how.sil
2620 6c 79 20 74 68 65 79 0a 20 20 20 20 3b 3b 20 61 72 65 2c 20 73 6f 20 65 6e 73 75 72 65 20 66 69 ly.they.....;;.are,.so.ensure.fi
2640 6c 65 73 20 61 6e 64 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 72 65 20 72 65 61 64 61 62 6c 65 les.and.directories.are.readable
2660 0a 20 20 20 20 28 6e 6f 76 2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73 20 64 69 72 65 63 74 .....(nov-fix-permissions.direct
2680 6f 72 79 29 0a 20 20 20 20 73 74 61 74 75 73 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 77 61 ory).....status))..(defun.nov-wa
26a0 72 6e 20 28 6d 65 73 73 61 67 65 20 26 6f 70 74 69 6f 6e 61 6c 20 6c 65 76 65 6c 29 0a 20 20 22 rn.(message.&optional.level)..."
26c0 4c 69 6b 65 20 60 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 27 2c 20 62 75 74 20 66 6f 72 20 Like.`display-warning',.but.for.
26e0 6e 6f 76 2d 73 70 65 63 69 66 69 63 20 77 61 72 6e 69 6e 67 73 2e 0a 44 69 73 70 6c 61 79 73 20 nov-specific.warnings..Displays.
2700 4d 45 53 53 41 47 45 20 69 6e 20 61 20 77 61 72 6e 69 6e 67 73 20 62 75 66 66 65 72 2c 20 77 69 MESSAGE.in.a.warnings.buffer,.wi
2720 74 68 20 4c 45 56 45 4c 20 61 73 20 73 65 76 65 72 69 74 79 2e 22 0a 20 20 28 64 69 73 70 6c 61 th.LEVEL.as.severity."...(displa
2740 79 2d 77 61 72 6e 69 6e 67 20 27 6e 6f 76 20 6d 65 73 73 61 67 65 20 6c 65 76 65 6c 29 29 0a 0a y-warning.'nov.message.level))..
2760 28 64 65 66 6d 61 63 72 6f 20 6e 6f 76 2d 69 67 6e 6f 72 65 2d 66 69 6c 65 2d 65 72 72 6f 72 73 (defmacro.nov-ignore-file-errors
2780 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69 6b 65 20 60 69 67 6e 6f 72 65 2d 65 72 .(&rest.body)..."Like.`ignore-er
27a0 72 6f 72 73 27 2c 20 62 75 74 20 66 6f 72 20 66 69 6c 65 20 65 72 72 6f 72 73 2e 22 0a 20 20 60 rors',.but.for.file.errors."...`
27c0 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 (condition-case.nil.(progn.,@bod
27e0 79 29 20 28 66 69 6c 65 2d 65 72 72 6f 72 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f y).(file-error.nil)))..(defun.no
2800 76 2d 73 6c 75 72 70 20 28 66 69 6c 65 6e 61 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 70 61 72 73 v-slurp.(filename.&optional.pars
2820 65 2d 78 6d 6c 2d 70 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 e-xml-p)..."Return.the.contents.
2840 6f 66 20 46 49 4c 45 4e 41 4d 45 2e 0a 49 66 20 50 41 52 53 45 2d 58 4d 4c 2d 50 20 69 73 20 74 of.FILENAME..If.PARSE-XML-P.is.t
2860 2c 20 72 65 74 75 72 6e 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 61 73 20 70 61 72 73 65 64 20 ,.return.the.contents.as.parsed.
2880 62 79 20 6c 69 62 78 6d 6c 2e 22 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a by.libxml."...(with-temp-buffer.
28a0 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 66 69 6c 65 6e 61 ....(insert-file-contents.filena
28c0 6d 65 29 0a 20 20 20 20 28 69 66 20 70 61 72 73 65 2d 78 6d 6c 2d 70 0a 20 20 20 20 20 20 20 20 me).....(if.parse-xml-p.........
28e0 28 6c 69 62 78 6d 6c 2d 70 61 72 73 65 2d 78 6d 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d (libxml-parse-xml-region.(point-
2900 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 28 62 75 66 66 65 72 2d min).(point-max)).......(buffer-
2920 73 74 72 69 6e 67 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6d 69 6d 65 74 79 70 65 2d string))))..(defun.nov-mimetype-
2940 76 61 6c 69 64 2d 70 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 valid-p.(directory)..."Return.t.
2960 69 66 20 44 49 52 45 43 54 4f 52 59 20 63 6f 6e 74 61 69 6e 73 20 61 20 76 61 6c 69 64 20 45 50 if.DIRECTORY.contains.a.valid.EP
2980 55 42 20 6d 69 6d 65 74 79 70 65 20 66 69 6c 65 2e 22 0a 20 20 28 6e 6f 76 2d 69 67 6e 6f 72 65 UB.mimetype.file."...(nov-ignore
29a0 2d 66 69 6c 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 28 6c 65 74 20 28 28 66 69 6c 65 6e 61 6d 65 -file-errors.....(let.((filename
29c0 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 64 69 72 65 63 74 6f 72 79 20 22 6d 69 6d 65 74 .(nov-make-path.directory."mimet
29e0 79 70 65 22 29 29 29 0a 20 20 20 20 20 20 28 65 71 75 61 6c 20 28 6e 6f 76 2d 73 6c 75 72 70 20 ype"))).......(equal.(nov-slurp.
2a00 66 69 6c 65 6e 61 6d 65 29 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 65 70 75 62 2b 7a 69 70 22 filename)."application/epub+zip"
2a20 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 66 69 6c 65 6e ))))..(defun.nov-container-filen
2a40 61 6d 65 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f ame.(directory)..."Return.the.co
2a60 6e 74 61 69 6e 65 72 20 66 69 6c 65 6e 61 6d 65 20 66 6f 72 20 44 49 52 45 43 54 4f 52 59 2e 22 ntainer.filename.for.DIRECTORY."
2a80 0a 20 20 28 6c 65 74 20 28 28 66 69 6c 65 6e 61 6d 65 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 ...(let.((filename.(nov-make-pat
2aa0 68 20 64 69 72 65 63 74 6f 72 79 20 22 4d 45 54 41 2d 49 4e 46 22 29 29 29 0a 20 20 20 20 28 6e h.directory."META-INF"))).....(n
2ac0 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 66 69 6c 65 6e 61 6d 65 20 22 63 6f 6e 74 61 69 6e 65 72 ov-make-path.filename."container
2ae0 2e 78 6d 6c 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 63 .xml")))..(defun.nov-container-c
2b00 6f 6e 74 65 6e 74 2d 66 69 6c 65 6e 61 6d 65 20 28 63 6f 6e 74 65 6e 74 29 0a 20 20 22 52 65 74 ontent-filename.(content)..."Ret
2b20 75 72 6e 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 6e 61 6d 65 20 66 6f 72 20 43 4f 4e urn.the.content.filename.for.CON
2b40 54 45 4e 54 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 71 75 65 72 79 20 22 63 6f 6e 74 61 69 6e 65 TENT."...(let*.((query."containe
2b60 72 3e 72 6f 6f 74 66 69 6c 65 73 3e 72 6f 6f 74 66 69 6c 65 5b 6d 65 64 69 61 2d 74 79 70 65 3d r>rootfiles>rootfile[media-type=
2b80 27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 65 62 70 73 2d 70 61 63 6b 61 67 65 2b 78 6d 6c 27 5d 'application/oebps-package+xml']
2ba0 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 20 71 ")..........(node.(esxml-query.q
2bc0 75 65 72 79 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f uery.content))).....(dom-attr.no
2be0 64 65 20 27 66 75 6c 6c 2d 70 61 74 68 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e de.'full-path)))..(defun.nov-con
2c00 74 61 69 6e 65 72 2d 76 61 6c 69 64 2d 70 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 52 65 tainer-valid-p.(directory)..."Re
2c20 74 75 72 6e 20 74 20 69 66 20 44 49 52 45 43 54 4f 52 59 20 68 6f 6c 64 73 20 61 20 76 61 6c 69 turn.t.if.DIRECTORY.holds.a.vali
2c40 64 20 45 50 55 42 20 63 6f 6e 74 61 69 6e 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 69 6c 65 d.EPUB.container."...(let.((file
2c60 6e 61 6d 65 20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 66 69 6c 65 6e 61 6d 65 20 64 69 72 name.(nov-container-filename.dir
2c80 65 63 74 6f 72 79 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 66 69 6c 65 6e 61 6d ectory))).....(when.(and.filenam
2ca0 65 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 66 69 6c 65 6e 61 6d 65 29 29 0a 20 20 20 20 e.(file-exists-p.filename)).....
2cc0 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 6e 6f 76 2d 73 6c 75 72 70 20 66 69 6c ..(let*.((content.(nov-slurp.fil
2ce0 65 6e 61 6d 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 2d ename.t))..............(content-
2d00 66 69 6c 65 20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 file.(nov-container-content-file
2d20 6e 61 6d 65 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 name.content))).........(when.(a
2d40 6e 64 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 nd.content.content-file)........
2d60 20 20 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 ...(file-exists-p.(nov-make-path
2d80 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 29 29 29 29 29 29 29 0a 0a .directory.content-file)))))))..
2da0 28 64 65 66 75 6e 20 6e 6f 76 2d 65 70 75 62 2d 76 61 6c 69 64 2d 70 20 28 64 69 72 65 63 74 6f (defun.nov-epub-valid-p.(directo
2dc0 72 79 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 69 66 20 44 49 52 45 43 54 4f 52 59 20 6d 61 6b ry)..."Return.t.if.DIRECTORY.mak
2de0 65 73 20 75 70 20 61 20 76 61 6c 69 64 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 2e 22 0a 20 20 es.up.a.valid.EPUB.document."...
2e00 28 77 68 65 6e 20 28 6e 6f 74 20 28 6e 6f 76 2d 6d 69 6d 65 74 79 70 65 2d 76 61 6c 69 64 2d 70 (when.(not.(nov-mimetype-valid-p
2e20 20 64 69 72 65 63 74 6f 72 79 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 49 6e 76 61 6c .directory)).....(message."Inval
2e40 69 64 20 6d 69 6d 65 74 79 70 65 22 29 29 0a 20 20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d id.mimetype"))...(nov-container-
2e60 76 61 6c 69 64 2d 70 20 64 69 72 65 63 74 6f 72 79 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d valid-p.directory))..(defun.nov-
2e80 75 72 6c 64 65 63 6f 64 65 20 28 73 74 72 69 6e 67 29 0a 20 20 22 52 65 74 75 72 6e 20 75 72 6c urldecode.(string)..."Return.url
2ea0 64 65 63 6f 64 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 54 52 49 4e 47 20 6f 72 20 6e 69 6c decoded.version.of.STRING.or.nil
2ec0 2e 22 0a 20 20 28 77 68 65 6e 20 73 74 72 69 6e 67 0a 20 20 20 20 28 75 72 6c 2d 75 6e 68 65 78 ."...(when.string.....(url-unhex
2ee0 2d 73 74 72 69 6e 67 20 73 74 72 69 6e 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f -string.string)))..(defun.nov-co
2f00 6e 74 65 6e 74 2d 76 65 72 73 69 6f 6e 20 28 63 6f 6e 74 65 6e 74 29 0a 20 20 22 52 65 74 75 72 ntent-version.(content)..."Retur
2f20 6e 20 74 68 65 20 45 50 55 42 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 43 4f 4e 54 45 4e 54 2e 22 n.the.EPUB.version.for.CONTENT."
2f40 0a 20 20 28 6c 65 74 2a 20 28 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 20 22 70 61 ...(let*.((node.(esxml-query."pa
2f60 63 6b 61 67 65 22 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 76 65 72 73 69 ckage".content))..........(versi
2f80 6f 6e 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64 65 20 27 76 65 72 73 69 6f 6e 29 29 29 0a 20 20 on.(dom-attr.node.'version)))...
2fa0 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 76 65 72 73 69 6f 6e 29 0a 20 20 20 20 20 20 28 65 72 72 ..(when.(not.version).......(err
2fc0 6f 72 20 22 56 65 72 73 69 6f 6e 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 22 29 29 0a 20 20 20 or."Version.not.specified"))....
2fe0 20 76 65 72 73 69 6f 6e 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 75 .version))..(defun.nov-content-u
3000 6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65 72 2d 6e 61 6d 65 20 28 63 6f 6e 74 65 6e 74 29 0a nique-identifier-name.(content).
3020 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 20 .."Return.the.unique.identifier.
3040 6e 61 6d 65 20 72 65 66 65 72 65 6e 63 65 64 20 69 6e 20 43 4f 4e 54 45 4e 54 2e 0a 54 68 69 73 name.referenced.in.CONTENT..This
3060 20 69 73 20 75 73 65 64 20 69 6e 20 60 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d .is.used.in.`nov-content-unique-
3080 69 64 65 6e 74 69 66 69 65 72 27 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 68 65 0a 74 68 65 20 identifier'.to.retrieve.the.the.
30a0 73 70 65 63 69 66 69 63 20 74 79 70 65 20 6f 66 20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 specific.type.of.unique.identifi
30c0 65 72 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 er."...(let*.((node.(esxml-query
30e0 20 22 70 61 63 6b 61 67 65 5b 75 6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65 72 5d 22 20 63 6f ."package[unique-identifier]".co
3100 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 64 6f 6d 2d 61 74 74 72 ntent))..........(name.(dom-attr
3120 20 6e 6f 64 65 20 27 75 6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65 72 29 29 29 0a 20 20 20 20 .node.'unique-identifier))).....
3140 28 77 68 65 6e 20 28 6e 6f 74 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 (when.(not.name).......(error."U
3160 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 6e 6f 74 20 73 70 65 63 69 66 nique.identifier.name.not.specif
3180 69 65 64 22 29 29 0a 20 20 20 20 6e 61 6d 65 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f ied")).....name))..(defun.nov-co
31a0 6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 6f 6e 74 65 6e 74 ntent-unique-identifier.(content
31c0 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 74 68 65 20 75 6e 69 71 75 65 20 69 64 65 6e 74 )..."Return.the.the.unique.ident
31e0 69 66 69 65 72 20 66 6f 72 20 43 4f 4e 54 45 4e 54 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6e 61 ifier.for.CONTENT."...(let*.((na
3200 6d 65 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65 me.(nov-content-unique-identifie
3220 72 2d 6e 61 6d 65 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 6c 65 63 r-name.content))..........(selec
3240 74 6f 72 20 28 66 6f 72 6d 61 74 20 22 70 61 63 6b 61 67 65 3e 6d 65 74 61 64 61 74 61 3e 69 64 tor.(format."package>metadata>id
3260 65 6e 74 69 66 69 65 72 5b 69 64 3d 27 25 73 27 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 entifier[id='%s']"..............
3280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 63 73 73 2d 65 ..............(esxml-query-css-e
32a0 73 63 61 70 65 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 64 20 28 63 61 72 20 scape.name)))..........(id.(car.
32c0 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 20 73 65 6c 65 63 (dom-children.(esxml-query.selec
32e0 74 6f 72 20 63 6f 6e 74 65 6e 74 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 tor.content))))).....(when.(not.
3300 69 64 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e 69 71 75 65 20 69 64 65 6e 74 69 66 id).......(error."Unique.identif
3320 69 65 72 20 6e 6f 74 20 66 6f 75 6e 64 20 62 79 20 69 74 73 20 6e 61 6d 65 3a 20 25 73 22 20 6e ier.not.found.by.its.name:.%s".n
3340 61 6d 65 29 29 0a 20 20 20 20 28 69 6e 74 65 72 6e 20 69 64 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 ame)).....(intern.id)))..;;.NOTE
3360 3a 20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 71 75 65 72 69 65 64 20 73 :.unique.identifier.is.queried.s
3380 65 70 61 72 61 74 65 6c 79 20 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20 63 61 6e 0a 3b 3b 20 eparately.as.identifiers.can.;;.
33a0 61 70 70 65 61 72 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 20 61 6e 64 20 6f 6e 6c 79 20 6f appear.more.than.once.and.only.o
33c0 6e 65 20 6f 66 20 74 68 65 6d 20 63 61 6e 20 62 65 20 74 68 65 20 75 6e 69 71 75 65 20 6f 6e 65 ne.of.them.can.be.the.unique.one
33e0 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 72 65 71 75 69 72 65 64 2d 6d 65 74 61 64 61 74 61 2d 74 .(defvar.nov-required-metadata-t
3400 61 67 73 20 27 28 74 69 74 6c 65 20 6c 61 6e 67 75 61 67 65 29 0a 20 20 22 52 65 71 75 69 72 65 ags.'(title.language)..."Require
3420 64 20 6d 65 74 61 64 61 74 61 20 74 61 67 73 20 75 73 65 64 20 66 6f 72 20 60 6e 6f 76 2d 63 6f d.metadata.tags.used.for.`nov-co
3440 6e 74 65 6e 74 2d 6d 65 74 61 64 61 74 61 27 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d ntent-metadata'.")..(defvar.nov-
3460 6f 70 74 69 6f 6e 61 6c 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73 0a 20 20 27 28 63 6f 6e 74 72 optional-metadata-tags...'(contr
3480 69 62 75 74 6f 72 20 63 6f 76 65 72 61 67 65 20 63 72 65 61 74 6f 72 20 64 61 74 65 20 64 65 73 ibutor.coverage.creator.date.des
34a0 63 72 69 70 74 69 6f 6e 20 66 6f 72 6d 61 74 0a 20 20 20 20 70 75 62 6c 69 73 68 65 72 20 72 65 cription.format.....publisher.re
34c0 6c 61 74 69 6f 6e 20 72 69 67 68 74 73 20 73 6f 75 72 63 65 20 73 75 62 6a 65 63 74 20 74 79 70 lation.rights.source.subject.typ
34e0 65 29 0a 20 20 22 4f 70 74 69 6f 6e 61 6c 20 6d 65 74 61 64 61 74 61 20 74 61 67 73 20 75 73 65 e)..."Optional.metadata.tags.use
3500 64 20 66 6f 72 20 60 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 6d 65 74 61 64 61 74 61 27 2e 22 29 0a d.for.`nov-content-metadata'.").
3520 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 6d 65 74 61 64 61 74 61 20 28 63 6f .(defun.nov-content-metadata.(co
3540 6e 74 65 6e 74 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6d 65 74 61 64 61 74 61 20 61 6c 69 73 ntent)..."Return.a.metadata.alis
3560 74 20 66 6f 72 20 43 4f 4e 54 45 4e 54 2e 0a 52 65 71 75 69 72 65 64 20 6b 65 79 73 20 61 72 65 t.for.CONTENT..Required.keys.are
3580 20 5c 5c 3d 27 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 65 76 65 72 79 74 68 69 6e 67 20 69 .\\='identifier.and.everything.i
35a0 6e 0a 60 6e 6f 76 2d 72 65 71 75 69 72 65 64 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73 27 2c 20 n.`nov-required-metadata-tags',.
35c0 6f 70 74 69 6f 6e 61 6c 20 6b 65 79 73 20 61 72 65 20 69 6e 0a 60 6e 6f 76 2d 6f 70 74 69 6f 6e optional.keys.are.in.`nov-option
35e0 61 6c 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 69 64 al-metadata-tags'."...(let*.((id
3600 65 6e 74 69 66 69 65 72 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d 69 64 65 entifier.(nov-content-unique-ide
3620 6e 74 69 66 69 65 72 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61 6e 64 ntifier.content))..........(cand
3640 69 64 61 74 65 73 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 idates.(mapcar.(lambda.(node)...
3660 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 63 6f .............................(co
3680 6e 73 20 28 64 6f 6d 2d 74 61 67 20 6e 6f 64 65 29 20 28 63 61 72 20 28 64 6f 6d 2d 63 68 69 6c ns.(dom-tag.node).(car.(dom-chil
36a0 64 72 65 6e 20 6e 6f 64 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dren.node))))...................
36c0 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 22 70 61 63 ...........(esxml-query-all."pac
36e0 6b 61 67 65 3e 6d 65 74 61 64 61 74 61 3e 2a 22 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 kage>metadata>*".content))).....
3700 20 20 20 20 20 28 72 65 71 75 69 72 65 64 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 .....(required.(mapcar.(lambda.(
3720 74 61 67 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 tag)............................
3740 20 20 28 6c 65 74 20 28 28 63 61 6e 64 69 64 61 74 65 20 28 63 64 72 20 28 61 73 73 71 20 74 61 ..(let.((candidate.(cdr.(assq.ta
3760 67 20 63 61 6e 64 69 64 61 74 65 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g.candidates))))................
3780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 63 61 6e 64 69 ................(when.(not.candi
37a0 64 61 74 65 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 date)...........................
37c0 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 74 68 69 73 20 73 68 6f 75 6c 64 20 69 64 65 61 .......;;.NOTE:.this.should.idea
37e0 6c 6c 79 20 62 65 20 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 lly.be.a........................
3800 20 20 20 20 20 20 20 20 20 20 3b 3b 20 77 61 72 6e 69 6e 67 2c 20 62 75 74 20 60 77 61 72 6e 27 ..........;;.warning,.but.`warn'
3820 20 69 73 20 74 6f 6f 20 6f 62 74 72 75 73 69 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .is.too.obtrusive...............
3840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 52 65 71 ...................(message."Req
3860 75 69 72 65 64 20 6d 65 74 61 64 61 74 75 6d 20 25 73 20 6e 6f 74 20 66 6f 75 6e 64 22 20 74 61 uired.metadatum.%s.not.found".ta
3880 67 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 g)).............................
38a0 20 20 20 28 63 6f 6e 73 20 74 61 67 20 63 61 6e 64 69 64 61 74 65 29 29 29 0a 20 20 20 20 20 20 ...(cons.tag.candidate))).......
38c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d 72 65 71 75 69 72 65 .....................nov-require
38e0 64 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 6f 70 74 69 d-metadata-tags))..........(opti
3900 6f 6e 61 6c 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 74 61 67 29 20 28 63 6f 6e 73 onal.(mapcar.(lambda.(tag).(cons
3920 20 74 61 67 20 28 63 64 72 20 28 61 73 73 71 20 74 61 67 20 63 61 6e 64 69 64 61 74 65 73 29 29 .tag.(cdr.(assq.tag.candidates))
3940 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 6e 6f ))............................no
3960 76 2d 6f 70 74 69 6f 6e 61 6c 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73 29 29 29 0a 20 20 20 20 v-optional-metadata-tags))).....
3980 28 61 70 70 65 6e 64 20 60 28 28 69 64 65 6e 74 69 66 69 65 72 20 2e 20 2c 69 64 65 6e 74 69 66 (append.`((identifier...,identif
39a0 69 65 72 29 29 20 72 65 71 75 69 72 65 64 20 6f 70 74 69 6f 6e 61 6c 29 29 29 0a 0a 28 64 65 66 ier)).required.optional)))..(def
39c0 75 6e 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 6d 61 6e 69 66 65 73 74 20 28 64 69 72 65 63 74 6f un.nov-content-manifest.(directo
39e0 72 79 20 63 6f 6e 74 65 6e 74 29 0a 20 20 22 45 78 74 72 61 63 74 20 61 6e 20 61 6c 69 73 74 20 ry.content)..."Extract.an.alist.
3a00 6f 66 20 6d 61 6e 69 66 65 73 74 20 66 69 6c 65 73 20 66 6f 72 20 43 4f 4e 54 45 4e 54 20 69 6e of.manifest.files.for.CONTENT.in
3a20 20 44 49 52 45 43 54 4f 52 59 2e 0a 45 61 63 68 20 61 6c 69 73 74 20 69 74 65 6d 20 63 6f 6e 73 .DIRECTORY..Each.alist.item.cons
3a40 69 73 74 73 20 6f 66 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 66 75 6c 6c 20 ists.of.the.identifier.and.full.
3a60 70 61 74 68 2e 22 0a 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a path."...(mapcar.(lambda.(node).
3a80 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 64 20 28 64 6f 6d 2d 61 74 74 72 20 ............(let.((id.(dom-attr.
3aa0 6e 6f 64 65 20 27 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 72 node.'id))...................(hr
3ac0 65 66 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64 65 20 27 68 72 65 66 29 29 29 0a 20 20 20 20 20 ef.(dom-attr.node.'href)))......
3ae0 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 69 6e 74 65 72 6e 20 69 64 29 0a 20 20 20 20 20 .........(cons.(intern.id)......
3b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 64 69 ...............(nov-make-path.di
3b20 72 65 63 74 6f 72 79 20 28 6e 6f 76 2d 75 72 6c 64 65 63 6f 64 65 20 68 72 65 66 29 29 29 29 29 rectory.(nov-urldecode.href)))))
3b40 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 22 70 61 63 ...........(esxml-query-all."pac
3b60 6b 61 67 65 3e 6d 61 6e 69 66 65 73 74 3e 69 74 65 6d 22 20 63 6f 6e 74 65 6e 74 29 29 29 0a 0a kage>manifest>item".content)))..
3b80 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 73 70 69 6e 65 20 28 63 6f 6e 74 65 6e (defun.nov-content-spine.(conten
3ba0 74 29 0a 20 20 22 45 78 74 72 61 63 74 20 61 20 6c 69 73 74 20 6f 66 20 73 70 69 6e 65 20 69 64 t)..."Extract.a.list.of.spine.id
3bc0 65 6e 74 69 66 69 65 72 73 20 66 6f 72 20 43 4f 4e 54 45 4e 54 2e 22 0a 20 20 28 6d 61 70 63 61 entifiers.for.CONTENT."...(mapca
3be0 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 69 6e 74 65 72 6e 20 28 64 6f 6d 2d 61 74 r.(lambda.(node).(intern.(dom-at
3c00 74 72 20 6e 6f 64 65 20 27 69 64 72 65 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 tr.node.'idref)))...........(esx
3c20 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 22 70 61 63 6b 61 67 65 3e 73 70 69 6e 65 3e 69 74 65 6d ml-query-all."package>spine>item
3c40 72 65 66 22 20 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 63 6f 6e ref".content)))..(defun.nov--con
3c60 74 65 6e 74 2d 65 70 75 62 32 2d 66 69 6c 65 73 20 28 63 6f 6e 74 65 6e 74 20 6d 61 6e 69 66 65 tent-epub2-files.(content.manife
3c80 73 74 20 66 69 6c 65 73 29 0a 20 20 28 6c 65 74 2a 20 28 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d st.files)...(let*.((node.(esxml-
3ca0 71 75 65 72 79 20 22 70 61 63 6b 61 67 65 3e 73 70 69 6e 65 5b 74 6f 63 5d 22 20 63 6f 6e 74 65 query."package>spine[toc]".conte
3cc0 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 64 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64 65 nt))..........(id.(dom-attr.node
3ce0 20 27 74 6f 63 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 69 64 29 0a 20 20 20 20 .'toc))).....(when.(not.id).....
3d00 20 20 28 65 72 72 6f 72 20 22 45 50 55 42 20 32 20 4e 43 58 20 49 44 20 6e 6f 74 20 66 6f 75 6e ..(error."EPUB.2.NCX.ID.not.foun
3d20 64 22 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 74 6f 63 2d 69 64 20 28 69 6e 74 65 72 d")).....(setq.nov-toc-id.(inter
3d40 6e 20 69 64 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 74 6f 63 2d 66 69 6c 65 20 28 61 73 73 71 n.id)).....(let.((toc-file.(assq
3d60 20 6e 6f 76 2d 74 6f 63 2d 69 64 20 6d 61 6e 69 66 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 77 .nov-toc-id.manifest))).......(w
3d80 68 65 6e 20 28 6e 6f 74 20 74 6f 63 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f hen.(not.toc-file).........(erro
3da0 72 20 22 45 50 55 42 20 32 20 4e 43 58 20 66 69 6c 65 20 6e 6f 74 20 66 6f 75 6e 64 22 29 29 0a r."EPUB.2.NCX.file.not.found")).
3dc0 20 20 20 20 20 20 28 63 6f 6e 73 20 74 6f 63 2d 66 69 6c 65 20 66 69 6c 65 73 29 29 29 29 0a 0a ......(cons.toc-file.files))))..
3de0 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 63 6f 6e 74 65 6e 74 2d 65 70 75 62 33 2d 66 69 6c 65 73 20 (defun.nov--content-epub3-files.
3e00 28 63 6f 6e 74 65 6e 74 20 6d 61 6e 69 66 65 73 74 20 66 69 6c 65 73 29 0a 20 20 28 6c 65 74 2a (content.manifest.files)...(let*
3e20 20 28 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 20 22 70 61 63 6b 61 67 65 3e 6d 61 .((node.(esxml-query."package>ma
3e40 6e 69 66 65 73 74 3e 69 74 65 6d 5b 70 72 6f 70 65 72 74 69 65 73 7e 3d 6e 61 76 5d 22 20 63 6f nifest>item[properties~=nav]".co
3e60 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 64 20 28 64 6f 6d 2d 61 74 74 72 20 6e ntent))..........(id.(dom-attr.n
3e80 6f 64 65 20 27 69 64 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 69 64 29 0a 20 20 ode.'id))).....(when.(not.id)...
3ea0 20 20 20 20 28 65 72 72 6f 72 20 22 45 50 55 42 20 33 20 3c 6e 61 76 3e 20 49 44 20 6e 6f 74 20 ....(error."EPUB.3.<nav>.ID.not.
3ec0 66 6f 75 6e 64 22 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 74 6f 63 2d 69 64 20 28 69 found")).....(setq.nov-toc-id.(i
3ee0 6e 74 65 72 6e 20 69 64 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 74 6f 63 2d 66 69 6c 65 20 28 ntern.id)).....(let.((toc-file.(
3f00 61 73 73 71 20 6e 6f 76 2d 74 6f 63 2d 69 64 20 6d 61 6e 69 66 65 73 74 29 29 29 0a 20 20 20 20 assq.nov-toc-id.manifest))).....
3f20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 74 6f 63 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 28 ..(when.(not.toc-file).........(
3f40 65 72 72 6f 72 20 22 45 50 55 42 20 33 20 3c 6e 61 76 3e 20 66 69 6c 65 20 6e 6f 74 20 66 6f 75 error."EPUB.3.<nav>.file.not.fou
3f60 6e 64 22 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 66 69 6c 65 73 20 28 73 65 71 2d 72 65 6d nd")).......(setq.files.(seq-rem
3f80 6f 76 65 20 28 6c 61 6d 62 64 61 20 28 69 74 65 6d 29 20 28 65 71 20 28 63 61 72 20 69 74 65 6d ove.(lambda.(item).(eq.(car.item
3fa0 29 20 6e 6f 76 2d 74 6f 63 2d 69 64 29 29 20 66 69 6c 65 73 29 29 0a 20 20 20 20 20 20 28 63 6f ).nov-toc-id)).files)).......(co
3fc0 6e 73 20 74 6f 63 2d 66 69 6c 65 20 66 69 6c 65 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f ns.toc-file.files))))..(defun.no
3fe0 76 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 73 20 28 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 v-content-files.(directory.conte
4000 6e 74 29 0a 20 20 22 43 72 65 61 74 65 20 63 6f 72 72 65 63 74 6c 79 20 6f 72 64 65 72 65 64 20 nt)..."Create.correctly.ordered.
4020 66 69 6c 65 20 61 6c 69 73 74 20 66 6f 72 20 43 4f 4e 54 45 4e 54 20 69 6e 20 44 49 52 45 43 54 file.alist.for.CONTENT.in.DIRECT
4040 4f 52 59 2e 0a 45 61 63 68 20 61 6c 69 73 74 20 69 74 65 6d 20 63 6f 6e 73 69 73 74 73 20 6f 66 ORY..Each.alist.item.consists.of
4060 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 66 75 6c 6c 20 70 61 74 68 2e 22 0a .the.identifier.and.full.path.".
4080 20 20 28 6c 65 74 2a 20 28 28 6d 61 6e 69 66 65 73 74 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d ..(let*.((manifest.(nov-content-
40a0 6d 61 6e 69 66 65 73 74 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 manifest.directory.content))....
40c0 20 20 20 20 20 20 28 73 70 69 6e 65 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 73 70 69 6e 65 20 ......(spine.(nov-content-spine.
40e0 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 73 20 28 6d 61 70 63 61 content))..........(files.(mapca
4100 72 20 28 6c 61 6d 62 64 61 20 28 69 74 65 6d 29 20 28 61 73 73 71 20 69 74 65 6d 20 6d 61 6e 69 r.(lambda.(item).(assq.item.mani
4120 66 65 73 74 29 29 20 73 70 69 6e 65 29 29 29 0a 20 20 20 20 28 69 66 20 28 76 65 72 73 69 6f 6e fest)).spine))).....(if.(version
4140 3c 20 6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e 20 22 33 2e 30 22 29 0a 20 20 20 20 20 20 <.nov-epub-version."3.0").......
4160 20 20 28 6e 6f 76 2d 2d 63 6f 6e 74 65 6e 74 2d 65 70 75 62 32 2d 66 69 6c 65 73 20 63 6f 6e 74 ..(nov--content-epub2-files.cont
4180 65 6e 74 20 6d 61 6e 69 66 65 73 74 20 66 69 6c 65 73 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 2d ent.manifest.files).......(nov--
41a0 63 6f 6e 74 65 6e 74 2d 65 70 75 62 33 2d 66 69 6c 65 73 20 63 6f 6e 74 65 6e 74 20 6d 61 6e 69 content-epub3-files.content.mani
41c0 66 65 73 74 20 66 69 6c 65 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 77 61 6c 6b fest.files))))..(defun.nov--walk
41e0 2d 6e 63 78 2d 6e 6f 64 65 20 28 6e 6f 64 65 29 0a 20 20 28 6c 65 74 20 28 28 74 61 67 20 28 64 -ncx-node.(node)...(let.((tag.(d
4200 6f 6d 2d 74 61 67 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 28 63 68 69 6c 64 72 65 6e 20 om-tag.node)).........(children.
4220 28 73 65 71 2d 66 69 6c 74 65 72 20 28 6c 61 6d 62 64 61 20 28 63 68 69 6c 64 29 20 28 65 71 20 (seq-filter.(lambda.(child).(eq.
4240 28 64 6f 6d 2d 74 61 67 20 63 68 69 6c 64 29 20 27 6e 61 76 50 6f 69 6e 74 29 29 0a 20 20 20 20 (dom-tag.child).'navPoint)).....
4260 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 64 6f 6d 2d 63 ..........................(dom-c
4280 68 69 6c 64 72 65 6e 20 6e 6f 64 65 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 hildren.node)))).....(cond......
42a0 28 28 65 71 20 74 61 67 20 27 6e 61 76 4d 61 70 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 ((eq.tag.'navMap).......(insert.
42c0 22 3c 6f 6c 3e 5c 6e 22 29 0a 20 20 20 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 6e "<ol>\n").......(mapc.(lambda.(n
42e0 6f 64 65 29 20 28 6e 6f 76 2d 2d 77 61 6c 6b 2d 6e 63 78 2d 6e 6f 64 65 20 6e 6f 64 65 29 29 20 ode).(nov--walk-ncx-node.node)).
4300 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 2f 6f 6c 3e 5c 6e children).......(insert."</ol>\n
4320 22 29 29 0a 20 20 20 20 20 28 28 65 71 20 74 61 67 20 27 6e 61 76 50 6f 69 6e 74 29 0a 20 20 20 "))......((eq.tag.'navPoint)....
4340 20 20 20 28 6c 65 74 2a 20 28 28 6e 61 76 6c 61 62 65 6c 2d 6e 6f 64 65 20 28 64 6f 6d 2d 62 79 ...(let*.((navlabel-node.(dom-by
4360 2d 74 61 67 20 6e 6f 64 65 20 27 6e 61 76 4c 61 62 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 -tag.node.'navLabel))...........
4380 20 20 20 28 6c 61 62 65 6c 2d 6e 6f 64 65 20 28 64 6f 6d 2d 62 79 2d 74 61 67 20 6e 61 76 6c 61 ...(label-node.(dom-by-tag.navla
43a0 62 65 6c 2d 6e 6f 64 65 20 27 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 bel-node.'text))..............(c
43c0 6f 6e 74 65 6e 74 2d 6e 6f 64 65 20 28 64 6f 6d 2d 62 79 2d 74 61 67 20 6e 6f 64 65 20 27 63 6f ontent-node.(dom-by-tag.node.'co
43e0 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 72 65 66 20 28 6e 6f 76 2d ntent))..............(href.(nov-
4400 75 72 6c 64 65 63 6f 64 65 20 28 64 6f 6d 2d 61 74 74 72 20 63 6f 6e 74 65 6e 74 2d 6e 6f 64 65 urldecode.(dom-attr.content-node
4420 20 27 73 72 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 62 65 6c 20 28 61 6e .'src)))..............(label.(an
4440 64 20 6c 61 62 65 6c 2d 6e 6f 64 65 20 28 63 61 72 20 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 d.label-node.(car.(dom-children.
4460 6c 61 62 65 6c 2d 6e 6f 64 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e label-node))))).........(when.(n
4480 6f 74 20 68 72 65 66 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4e 61 76 69 67 ot.href)...........(error."Navig
44a0 61 74 69 6f 6e 20 70 6f 69 6e 74 20 69 73 20 6d 69 73 73 69 6e 67 20 68 72 65 66 20 61 74 74 72 ation.point.is.missing.href.attr
44c0 69 62 75 74 65 22 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6c 69 6e 6b 20 28 66 6f ibute")).........(let.((link.(fo
44e0 72 6d 61 74 20 22 3c 61 20 68 72 65 66 3d 5c 22 25 73 5c 22 3e 25 73 3c 2f 61 3e 22 0a 20 20 20 rmat."<a.href=\"%s\">%s</a>"....
4500 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 75 72 6c 2d 69 6e .........................(url-in
4520 73 65 72 74 2d 65 6e 74 69 74 69 65 73 2d 69 6e 2d 73 74 72 69 6e 67 20 68 72 65 66 29 0a 20 20 sert-entities-in-string.href)...
4540 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 75 72 6c 2d 69 ..........................(url-i
4560 6e 73 65 72 74 2d 65 6e 74 69 74 69 65 73 2d 69 6e 2d 73 74 72 69 6e 67 20 28 6f 72 20 6c 61 62 nsert-entities-in-string.(or.lab
4580 65 6c 20 68 72 65 66 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 68 69 6c 64 el.href)))))...........(if.child
45a0 72 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 ren...............(progn........
45c0 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 3c 6c 69 3e 5c 6e .........(insert.(format."<li>\n
45e0 25 73 5c 6e 3c 6f 6c 3e 5c 6e 22 20 6c 69 6e 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 %s\n<ol>\n".link))..............
4600 20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 6e 6f 76 2d 2d 77 61 ...(mapc.(lambda.(node).(nov--wa
4620 6c 6b 2d 6e 63 78 2d 6e 6f 64 65 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 lk-ncx-node.node))..............
4640 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .........children)..............
4660 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 3c 2f 6f 6c 3e 5c 6e 3c 2f 6c 69 3e ...(insert.(format."</ol>\n</li>
4680 5c 6e 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d \n"))).............(insert.(form
46a0 61 74 20 22 3c 6c 69 3e 5c 6e 25 73 5c 6e 3c 2f 6c 69 3e 5c 6e 22 20 6c 69 6e 6b 29 29 29 29 29 at."<li>\n%s\n</li>\n".link)))))
46c0 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6e 63 78 2d 74 6f 2d 68 74 6d 6c 20 28 70 61 ))))..(defun.nov-ncx-to-html.(pa
46e0 74 68 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 4e 43 58 20 64 6f 63 75 6d 65 6e 74 20 61 74 20 50 th)..."Convert.NCX.document.at.P
4700 41 54 48 20 74 6f 20 48 54 4d 4c 2e 22 0a 20 20 28 6c 65 74 20 28 28 72 6f 6f 74 20 28 65 73 78 ATH.to.HTML."...(let.((root.(esx
4720 6d 6c 2d 71 75 65 72 79 20 22 6e 61 76 4d 61 70 22 20 28 6e 6f 76 2d 73 6c 75 72 70 20 70 61 74 ml-query."navMap".(nov-slurp.pat
4740 68 20 74 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 h.t)))).....(with-temp-buffer...
4760 20 20 20 20 28 6e 6f 76 2d 2d 77 61 6c 6b 2d 6e 63 78 2d 6e 6f 64 65 20 72 6f 6f 74 29 0a 20 20 ....(nov--walk-ncx-node.root)...
4780 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 55 49 ....(buffer-string))))....;;;.UI
47a0 0a 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 6d 6f 64 65 2d 6d 61 70 0a 20 20 28 6c 65 74 20 28 28 ..(defvar.nov-mode-map...(let.((
47c0 6d 61 70 20 28 6d 61 6b 65 2d 73 70 61 72 73 65 2d 6b 65 79 6d 61 70 29 29 29 0a 20 20 20 20 28 map.(make-sparse-keymap))).....(
47e0 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 67 22 29 20 27 6e 6f 76 2d 72 65 define-key.map.(kbd."g").'nov-re
4800 6e 64 65 72 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d nder-document).....(define-key.m
4820 61 70 20 28 6b 62 64 20 22 76 22 29 20 27 6e 6f 76 2d 76 69 65 77 2d 73 6f 75 72 63 65 29 0a 20 ap.(kbd."v").'nov-view-source)..
4840 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 56 22 29 20 27 6e 6f ...(define-key.map.(kbd."V").'no
4860 76 2d 76 69 65 77 2d 63 6f 6e 74 65 6e 74 2d 73 6f 75 72 63 65 29 0a 20 20 20 20 28 64 65 66 69 v-view-content-source).....(defi
4880 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 61 22 29 20 27 6e 6f 76 2d 72 65 6f 70 65 6e ne-key.map.(kbd."a").'nov-reopen
48a0 2d 61 73 2d 61 72 63 68 69 76 65 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 -as-archive).....(define-key.map
48c0 20 28 6b 62 64 20 22 6d 22 29 20 27 6e 6f 76 2d 64 69 73 70 6c 61 79 2d 6d 65 74 61 64 61 74 61 .(kbd."m").'nov-display-metadata
48e0 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 6e 22 29 20 ).....(define-key.map.(kbd."n").
4900 27 6e 6f 76 2d 6e 65 78 74 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 'nov-next-document).....(define-
4920 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 5d 22 29 20 27 6e 6f 76 2d 6e 65 78 74 2d 64 6f 63 75 key.map.(kbd."]").'nov-next-docu
4940 6d 65 6e 74 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 ment).....(define-key.map.(kbd."
4960 70 22 29 20 27 6e 6f 76 2d 70 72 65 76 69 6f 75 73 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 p").'nov-previous-document).....
4980 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 5b 22 29 20 27 6e 6f 76 2d 70 (define-key.map.(kbd."[").'nov-p
49a0 72 65 76 69 6f 75 73 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 revious-document).....(define-ke
49c0 79 20 6d 61 70 20 28 6b 62 64 20 22 74 22 29 20 27 6e 6f 76 2d 67 6f 74 6f 2d 74 6f 63 29 0a 20 y.map.(kbd."t").'nov-goto-toc)..
49e0 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 6c 22 29 20 27 6e 6f ...(define-key.map.(kbd."l").'no
4a00 76 2d 68 69 73 74 6f 72 79 2d 62 61 63 6b 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 v-history-back).....(define-key.
4a20 6d 61 70 20 28 6b 62 64 20 22 72 22 29 20 27 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 map.(kbd."r").'nov-history-forwa
4a40 72 64 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 54 41 rd).....(define-key.map.(kbd."TA
4a60 42 22 29 20 27 73 68 72 2d 6e 65 78 74 2d 6c 69 6e 6b 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d B").'shr-next-link).....(define-
4a80 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 4d 2d 54 41 42 22 29 20 27 73 68 72 2d 70 72 65 76 69 key.map.(kbd."M-TAB").'shr-previ
4aa0 6f 75 73 2d 6c 69 6e 6b 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b ous-link).....(define-key.map.(k
4ac0 62 64 20 22 3c 62 61 63 6b 74 61 62 3e 22 29 20 27 73 68 72 2d 70 72 65 76 69 6f 75 73 2d 6c 69 bd."<backtab>").'shr-previous-li
4ae0 6e 6b 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 53 50 nk).....(define-key.map.(kbd."SP
4b00 43 22 29 20 27 6e 6f 76 2d 73 63 72 6f 6c 6c 2d 75 70 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d C").'nov-scroll-up).....(define-
4b20 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 53 2d 53 50 43 22 29 20 27 6e 6f 76 2d 73 63 72 6f 6c key.map.(kbd."S-SPC").'nov-scrol
4b40 6c 2d 64 6f 77 6e 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 l-down).....(define-key.map.(kbd
4b60 20 22 44 45 4c 22 29 20 27 6e 6f 76 2d 73 63 72 6f 6c 6c 2d 64 6f 77 6e 29 0a 20 20 20 20 28 64 ."DEL").'nov-scroll-down).....(d
4b80 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 3c 68 6f 6d 65 3e 22 29 20 27 62 65 efine-key.map.(kbd."<home>").'be
4ba0 67 69 6e 6e 69 6e 67 2d 6f 66 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b ginning-of-buffer).....(define-k
4bc0 65 79 20 6d 61 70 20 28 6b 62 64 20 22 3c 65 6e 64 3e 22 29 20 27 65 6e 64 2d 6f 66 2d 62 75 66 ey.map.(kbd."<end>").'end-of-buf
4be0 66 65 72 29 0a 20 20 20 20 6d 61 70 29 29 0a 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 62 75 74 74 fer).....map))..(defvar.nov-butt
4c00 6f 6e 2d 6d 61 70 0a 20 20 28 6c 65 74 20 28 28 6d 61 70 20 28 63 6f 70 79 2d 6b 65 79 6d 61 70 on-map...(let.((map.(copy-keymap
4c20 20 6e 6f 76 2d 6d 6f 64 65 2d 6d 61 70 29 29 29 0a 20 20 20 20 28 73 65 74 2d 6b 65 79 6d 61 70 .nov-mode-map))).....(set-keymap
4c40 2d 70 61 72 65 6e 74 20 6d 61 70 20 73 68 72 2d 6d 61 70 29 0a 20 20 20 20 28 64 65 66 69 6e 65 -parent.map.shr-map).....(define
4c60 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 52 45 54 22 29 20 27 6e 6f 76 2d 62 72 6f 77 73 65 -key.map.(kbd."RET").'nov-browse
4c80 2d 75 72 6c 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 -url).....(define-key.map.(kbd."
4ca0 3c 6d 6f 75 73 65 2d 32 3e 22 29 20 27 6e 6f 76 2d 62 72 6f 77 73 65 2d 75 72 6c 29 0a 20 20 20 <mouse-2>").'nov-browse-url)....
4cc0 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 63 22 29 20 27 6e 6f 76 2d .(define-key.map.(kbd."c").'nov-
4ce0 63 6f 70 79 2d 75 72 6c 29 0a 20 20 20 20 6d 61 70 29 29 0a 0a 28 65 61 73 79 2d 6d 65 6e 75 2d copy-url).....map))..(easy-menu-
4d00 64 65 66 69 6e 65 20 6e 6f 76 2d 6d 6f 64 65 2d 6d 65 6e 75 20 6e 6f 76 2d 6d 6f 64 65 2d 6d 61 define.nov-mode-menu.nov-mode-ma
4d20 70 20 22 4d 65 6e 75 20 66 6f 72 20 6e 6f 76 2d 6d 6f 64 65 22 0a 20 20 27 28 22 45 50 55 42 22 p."Menu.for.nov-mode"...'("EPUB"
4d40 0a 20 20 20 20 5b 22 4e 65 78 74 22 20 6e 6f 76 2d 6e 65 78 74 2d 64 6f 63 75 6d 65 6e 74 0a 20 .....["Next".nov-next-document..
4d60 20 20 20 20 3a 68 65 6c 70 20 22 47 6f 20 74 6f 20 74 68 65 20 6e 65 78 74 20 64 6f 63 75 6d 65 ....:help."Go.to.the.next.docume
4d80 6e 74 22 5d 0a 20 20 20 20 5b 22 50 72 65 76 69 6f 75 73 22 20 6e 6f 76 2d 70 72 65 76 69 6f 75 nt"].....["Previous".nov-previou
4da0 73 2d 64 6f 63 75 6d 65 6e 74 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 47 6f 20 74 6f 20 74 68 65 s-document......:help."Go.to.the
4dc0 20 70 72 65 76 69 6f 75 73 20 64 6f 63 75 6d 65 6e 74 22 5d 0a 20 20 20 20 5b 22 42 61 63 6b 77 .previous.document"].....["Backw
4de0 61 72 64 22 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 62 61 63 6b 0a 20 20 20 20 20 3a 68 65 6c 70 ard".nov-history-back......:help
4e00 20 22 47 6f 20 62 61 63 6b 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 79 20 74 6f 20 74 68 65 20 ."Go.back.in.the.history.to.the.
4e20 6c 61 73 74 20 76 69 73 69 74 65 64 20 64 6f 63 75 6d 65 6e 74 22 5d 0a 20 20 20 20 5b 22 46 6f last.visited.document"].....["Fo
4e40 72 77 61 72 64 22 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 rward".nov-history-forward......
4e60 3a 68 65 6c 70 20 22 47 6f 20 66 6f 72 77 61 72 64 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 79 :help."Go.forward.in.the.history
4e80 20 6f 66 20 76 69 73 69 74 65 64 20 64 6f 63 75 6d 65 6e 74 73 22 5d 0a 20 20 20 20 5b 22 4e 65 .of.visited.documents"].....["Ne
4ea0 78 74 20 4c 69 6e 6b 22 20 73 68 72 2d 6e 65 78 74 2d 6c 69 6e 6b 0a 20 20 20 20 20 3a 68 65 6c xt.Link".shr-next-link......:hel
4ec0 70 20 22 47 6f 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6c 69 6e 6b 22 5d 0a 20 20 20 20 5b 22 50 p."Go.to.the.next.link"].....["P
4ee0 72 65 76 69 6f 75 73 20 4c 69 6e 6b 22 20 73 68 72 2d 70 72 65 76 69 6f 75 73 2d 6c 69 6e 6b 0a revious.Link".shr-previous-link.
4f00 20 20 20 20 20 3a 6b 65 79 73 20 22 4d 2d 54 41 42 22 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 47 .....:keys."M-TAB"......:help."G
4f20 6f 20 74 6f 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 6c 69 6e 6b 22 5d 0a 20 20 20 20 5b 22 54 o.to.the.previous.link"].....["T
4f40 61 62 6c 65 20 6f 66 20 43 6f 6e 74 65 6e 74 73 22 20 6e 6f 76 2d 67 6f 74 6f 2d 74 6f 63 0a 20 able.of.Contents".nov-goto-toc..
4f60 20 20 20 20 3a 68 65 6c 70 20 22 44 69 73 70 6c 61 79 20 74 68 65 20 74 61 62 6c 65 20 6f 66 20 ....:help."Display.the.table.of.
4f80 63 6f 6e 74 65 6e 74 73 22 5d 0a 20 20 20 20 5b 22 52 65 64 69 73 70 6c 61 79 22 20 6e 6f 76 2d contents"].....["Redisplay".nov-
4fa0 72 65 6e 64 65 72 2d 64 6f 63 75 6d 65 6e 74 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 52 65 64 69 render-document......:help."Redi
4fc0 73 70 6c 61 79 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 22 5d 0a 20 20 20 20 22 2d 2d 2d 22 0a 20 splay.the.document"]....."---"..
4fe0 20 20 20 5b 22 56 69 65 77 20 4d 65 74 61 64 61 74 61 22 20 6e 6f 76 2d 64 69 73 70 6c 61 79 2d ...["View.Metadata".nov-display-
5000 6d 65 74 61 64 61 74 61 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 56 69 65 77 20 74 68 65 20 6d 65 metadata......:help."View.the.me
5020 74 61 64 61 74 61 20 6f 66 20 74 68 65 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 22 5d 0a 20 20 tadata.of.the.EPUB.document"]...
5040 20 20 5b 22 56 69 65 77 20 48 54 4d 4c 20 53 6f 75 72 63 65 22 20 6e 6f 76 2d 76 69 65 77 2d 73 ..["View.HTML.Source".nov-view-s
5060 6f 75 72 63 65 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 56 69 65 77 20 74 68 65 20 48 54 4d 4c 20 ource......:help."View.the.HTML.
5080 73 6f 75 72 63 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 69 source.of.the.current.document.i
50a0 6e 20 61 20 6e 65 77 20 62 75 66 66 65 72 22 5d 0a 20 20 20 20 5b 22 56 69 65 77 20 4f 50 46 20 n.a.new.buffer"].....["View.OPF.
50c0 53 6f 75 72 63 65 22 20 6e 6f 76 2d 76 69 65 77 2d 63 6f 6e 74 65 6e 74 2d 73 6f 75 72 63 65 0a Source".nov-view-content-source.
50e0 20 20 20 20 20 3a 68 65 6c 70 20 22 56 69 65 77 20 74 68 65 20 4f 50 46 20 73 6f 75 72 63 65 20 .....:help."View.the.OPF.source.
5100 6f 66 20 74 68 65 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 20 69 6e 20 61 20 6e 65 77 20 62 75 of.the.EPUB.document.in.a.new.bu
5120 66 66 65 72 22 5d 0a 20 20 20 20 5b 22 56 69 65 77 20 61 73 20 41 72 63 68 69 76 65 22 20 6e 6f ffer"].....["View.as.Archive".no
5140 76 2d 72 65 6f 70 65 6e 2d 61 73 2d 61 72 63 68 69 76 65 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 v-reopen-as-archive......:help."
5160 52 65 6f 70 65 6e 20 74 68 65 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 20 61 73 20 61 6e 20 61 Reopen.the.EPUB.document.as.an.a
5180 72 63 68 69 76 65 22 5d 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 20 rchive"]))..(defun.nov-clean-up.
51a0 28 29 0a 20 20 22 44 65 6c 65 74 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 6f 66 20 ()..."Delete.temporary.files.of.
51c0 74 68 65 20 63 75 72 72 65 6e 74 20 45 50 55 42 20 62 75 66 66 65 72 2e 22 0a 20 20 28 77 68 65 the.current.EPUB.buffer."...(whe
51e0 6e 20 28 61 6e 64 20 6e 6f 76 2d 72 65 6d 6f 76 65 2d 77 6f 72 6b 2d 64 69 72 2d 6f 6e 2d 65 78 n.(and.nov-remove-work-dir-on-ex
5200 69 74 2d 70 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 29 0a 20 20 20 20 28 6c 65 74 20 28 28 69 64 it-p.nov-work-dir).....(let.((id
5220 65 6e 74 69 66 69 65 72 20 28 63 64 72 20 28 61 73 73 71 20 27 69 64 65 6e 74 69 66 69 65 72 20 entifier.(cdr.(assq.'identifier.
5240 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 nov-metadata)))...........(index
5260 20 28 69 66 20 28 69 6e 74 65 67 65 72 70 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 .(if.(integerp.nov-documents-ind
5280 65 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d 64 6f 63 ex)......................nov-doc
52a0 75 6d 65 6e 74 73 2d 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uments-index....................
52c0 30 29 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 65 20 69 64 65 6e 74 0))).......(nov-save-place.ident
52e0 69 66 69 65 72 20 69 6e 64 65 78 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 6e 6f 76 2d 69 ifier.index.(point))).....(nov-i
5300 67 6e 6f 72 65 2d 66 69 6c 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 28 64 65 6c 65 74 65 2d 64 gnore-file-errors......(delete-d
5320 69 72 65 63 74 6f 72 79 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 74 29 29 29 29 0a 0a 28 64 65 irectory.nov-work-dir.t))))..(de
5340 66 75 6e 20 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 2d 61 6c 6c 20 28 29 0a 20 20 22 44 65 6c 65 74 fun.nov-clean-up-all.()..."Delet
5360 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 6f 66 20 61 6c 6c 20 6f 70 65 6e 65 64 20 e.temporary.files.of.all.opened.
5380 45 50 55 42 20 62 75 66 66 65 72 73 2e 22 0a 20 20 28 64 6f 6c 69 73 74 20 28 62 75 66 66 65 72 EPUB.buffers."...(dolist.(buffer
53a0 20 28 62 75 66 66 65 72 2d 6c 69 73 74 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e .(buffer-list)).....(with-curren
53c0 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 t-buffer.buffer.......(when.(eq.
53e0 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6e 6f 76 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 6e major-mode.'nov-mode).........(n
5400 6f 76 2d 63 6c 65 61 6e 2d 75 70 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 65 78 74 ov-clean-up)))))..(defun.nov-ext
5420 65 72 6e 61 6c 2d 75 72 6c 2d 70 20 28 75 72 6c 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 69 66 ernal-url-p.(url)..."Return.t.if
5440 20 55 52 4c 20 72 65 66 65 72 73 20 74 6f 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 64 6f 63 75 6d .URL.refers.to.an.external.docum
5460 65 6e 74 2e 22 0a 20 20 28 61 6e 64 20 28 75 72 6c 2d 74 79 70 65 20 28 75 72 6c 2d 67 65 6e 65 ent."...(and.(url-type.(url-gene
5480 72 69 63 2d 70 61 72 73 65 2d 75 72 6c 20 75 72 6c 29 29 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 ric-parse-url.url)).t))..(defun.
54a0 6e 6f 76 2d 75 72 6c 2d 66 69 6c 65 6e 61 6d 65 2d 61 6e 64 2d 74 61 72 67 65 74 20 28 75 72 6c nov-url-filename-and-target.(url
54c0 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 55 52 4c 27 73 20 66 69 6c 65 )..."Return.a.list.of.URL's.file
54e0 6e 61 6d 65 20 61 6e 64 20 74 61 72 67 65 74 2e 22 0a 20 20 28 73 65 74 71 20 75 72 6c 20 28 75 name.and.target."...(setq.url.(u
5500 72 6c 2d 67 65 6e 65 72 69 63 2d 70 61 72 73 65 2d 75 72 6c 20 75 72 6c 29 29 0a 20 20 28 6d 61 rl-generic-parse-url.url))...(ma
5520 70 63 61 72 20 27 6e 6f 76 2d 75 72 6c 64 65 63 6f 64 65 20 28 6c 69 73 74 20 28 75 72 6c 2d 66 pcar.'nov-urldecode.(list.(url-f
5540 69 6c 65 6e 61 6d 65 20 75 72 6c 29 20 28 75 72 6c 2d 74 61 72 67 65 74 20 75 72 6c 29 29 29 29 ilename.url).(url-target.url))))
5560 0a 0a 3b 3b 20 61 64 61 70 74 65 64 20 66 72 6f 6d 20 60 73 68 72 2d 72 65 73 63 61 6c 65 2d 69 ..;;.adapted.from.`shr-rescale-i
5580 6d 61 67 65 27 0a 3b 3b 20 54 4f 44 4f 3a 20 61 64 6a 75 73 74 20 74 6f 20 6c 61 74 65 73 74 20 mage'.;;.TODO:.adjust.to.latest.
55a0 73 68 72 20 63 6f 64 65 20 28 77 68 69 63 68 20 61 64 64 65 64 20 7a 6f 6f 6d 69 6e 67 20 73 75 shr.code.(which.added.zooming.su
55c0 70 70 6f 72 74 29 0a 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 77 69 64 74 68 2f 68 65 pport).;;.TODO:.support.width/he
55e0 69 67 68 74 20 61 73 20 73 75 70 70 6c 69 65 64 20 69 6e 20 69 6d 67 2f 69 6d 61 67 65 2f 73 76 ight.as.supplied.in.img/image/sv
5600 67 20 61 74 74 72 69 62 75 74 65 73 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 69 6e 73 65 72 74 2d 69 g.attributes.(defun.nov-insert-i
5620 6d 61 67 65 20 28 70 61 74 68 20 61 6c 74 29 0a 20 20 22 49 6e 73 65 72 74 20 61 6e 20 69 6d 61 mage.(path.alt)..."Insert.an.ima
5640 67 65 20 66 6f 72 20 50 41 54 48 20 61 74 20 70 6f 69 6e 74 2c 20 66 61 6c 6c 69 6e 67 20 62 61 ge.for.PATH.at.point,.falling.ba
5660 63 6b 20 74 6f 20 41 4c 54 2e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 68 6f 6e 6f 72 73 20 ck.to.ALT..This.function.honors.
5680 60 73 68 72 2d 6d 61 78 2d 69 6d 61 67 65 2d 70 72 6f 70 6f 72 74 69 6f 6e 27 20 69 66 20 70 6f `shr-max-image-proportion'.if.po
56a0 73 73 69 62 6c 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 69 66 20 28 6f 72 20 28 ssible."...(let.((type.(if.(or.(
56c0 61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 69 6d 61 67 65 2d 74 72 61 6e 73 66 6f 72 6d 73 2d 70 and.(fboundp.'image-transforms-p
56e0 29 20 28 69 6d 61 67 65 2d 74 72 61 6e 73 66 6f 72 6d 73 2d 70 29 29 0a 20 20 20 20 20 20 20 20 ).(image-transforms-p)).........
5700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 66 62 6f 75 6e 64 70 20 27 69 6d 61 ..............(not.(fboundp.'ima
5720 67 65 6d 61 67 69 63 6b 2d 74 79 70 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gemagick-types)))...............
5740 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 69 6d 61 67 65 6d 61 ....nil.................'imagema
5760 67 69 63 6b 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 64 69 73 70 6c 61 79 2d 67 72 gick))).....(if.(not.(display-gr
5780 61 70 68 69 63 2d 70 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 61 6c 74 29 0a 20 aphic-p)).........(insert.alt)..
57a0 20 20 20 20 20 28 73 65 71 2d 6c 65 74 20 28 78 31 20 79 31 20 78 32 20 79 32 29 20 28 77 69 6e .....(seq-let.(x1.y1.x2.y2).(win
57c0 64 6f 77 2d 69 6e 73 69 64 65 2d 70 69 78 65 6c 2d 65 64 67 65 73 0a 20 20 20 20 20 20 20 20 20 dow-inside-pixel-edges..........
57e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 .....................(get-buffer
5800 2d 77 69 6e 64 6f 77 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 -window.(current-buffer)))......
5820 20 20 20 28 6c 65 74 20 28 28 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ...(let.((image................;
5840 3b 20 60 63 72 65 61 74 65 2d 69 6d 61 67 65 27 20 65 72 72 6f 72 73 20 6f 75 74 20 66 6f 72 20 ;.`create-image'.errors.out.for.
5860 75 6e 73 75 70 70 6f 72 74 65 64 20 69 6d 61 67 65 20 74 79 70 65 73 0a 20 20 20 20 20 20 20 20 unsupported.image.types.........
5880 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20 .......(ignore-errors...........
58a0 20 20 20 20 20 20 20 28 63 72 65 61 74 65 2d 69 6d 61 67 65 20 70 61 74 68 20 74 79 70 65 20 6e .......(create-image.path.type.n
58c0 69 6c 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 il..............................
58e0 20 20 3a 61 73 63 65 6e 74 20 31 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:ascent.100...................
5900 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 2d 77 69 64 74 68 20 28 74 72 75 6e 63 61 74 .............:max-width.(truncat
5920 65 20 28 2a 20 73 68 72 2d 6d 61 78 2d 69 6d 61 67 65 2d 70 72 6f 70 6f 72 74 69 6f 6e 0a 20 20 e.(*.shr-max-image-proportion...
5940 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 ................................
5960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2d 20 78 32 20 78 31 29 29 29 .....................(-.x2.x1)))
5980 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 ................................
59a0 3a 6d 61 78 2d 68 65 69 67 68 74 20 28 74 72 75 6e 63 61 74 65 20 28 2a 20 73 68 72 2d 6d 61 78 :max-height.(truncate.(*.shr-max
59c0 2d 69 6d 61 67 65 2d 70 72 6f 70 6f 72 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -image-proportion...............
59e0 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 ................................
5a00 20 20 20 20 20 20 20 20 20 20 28 2d 20 79 32 20 79 31 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 ..........(-.y2.y1))))))).......
5a20 20 20 20 20 28 69 66 20 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 ....(if.image...............(ins
5a40 65 72 74 2d 69 6d 61 67 65 20 69 6d 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e ert-image.image).............(in
5a60 73 65 72 74 20 61 6c 74 29 29 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 6f 72 69 sert.alt)))))))..(defvar.nov-ori
5a80 67 69 6e 61 6c 2d 73 68 72 2d 74 61 67 2d 69 6d 67 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 28 73 79 ginal-shr-tag-img-function...(sy
5aa0 6d 62 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 27 73 68 72 2d 74 61 67 2d 69 6d 67 29 29 0a 0a 28 64 mbol-function.'shr-tag-img))..(d
5ac0 65 66 75 6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 69 6d 67 20 28 64 6f 6d 20 26 6f 70 74 69 6f 6e efun.nov-render-img.(dom.&option
5ae0 61 6c 20 75 72 6c 29 0a 20 20 22 43 75 73 74 6f 6d 20 3c 69 6d 67 3e 20 72 65 6e 64 65 72 69 6e al.url)..."Custom.<img>.renderin
5b00 67 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 44 4f 4d 2e 0a 55 73 65 73 20 60 73 68 72 2d 74 61 g.function.for.DOM..Uses.`shr-ta
5b20 67 2d 69 6d 67 27 20 66 6f 72 20 65 78 74 65 72 6e 61 6c 20 70 61 74 68 73 20 61 6e 64 20 60 6e g-img'.for.external.paths.and.`n
5b40 6f 76 2d 69 6e 73 65 72 74 2d 69 6d 61 67 65 27 20 66 6f 72 0a 69 6e 74 65 72 6e 61 6c 20 6f 6e ov-insert-image'.for.internal.on
5b60 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 75 72 6c 20 28 6f 72 20 75 72 6c 20 28 63 64 72 20 28 es."...(let.((url.(or.url.(cdr.(
5b80 61 73 73 71 20 27 73 72 63 20 28 63 61 64 72 20 64 6f 6d 29 29 29 29 29 0a 20 20 20 20 20 20 20 assq.'src.(cadr.dom)))))........
5ba0 20 28 61 6c 74 20 28 6f 72 20 28 63 64 72 20 28 61 73 73 71 20 27 61 6c 74 20 28 63 61 64 72 20 .(alt.(or.(cdr.(assq.'alt.(cadr.
5bc0 64 6f 6d 29 29 29 20 22 22 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 76 2d 65 78 74 65 72 6e dom))).""))).....(if.(nov-extern
5be0 61 6c 2d 75 72 6c 2d 70 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 61 al-url-p.url).........;;.HACK:.a
5c00 76 6f 69 64 20 68 61 6e 67 69 6e 67 20 69 6e 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 void.hanging.in.an.infinite.loop
5c20 20 77 68 65 6e 20 75 73 69 6e 67 0a 20 20 20 20 20 20 20 20 3b 3b 20 60 63 6c 2d 6c 65 74 66 27 .when.using.........;;.`cl-letf'
5c40 20 74 6f 20 6f 76 65 72 72 69 64 65 20 60 73 68 72 2d 74 61 67 2d 69 6d 67 27 20 77 69 74 68 20 .to.override.`shr-tag-img'.with.
5c60 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 20 20 20 20 20 20 20 20 3b 3b 20 6d 69 67 68 74 a.function.that.........;;.might
5c80 20 63 61 6c 6c 20 60 73 68 72 2d 74 61 67 2d 69 6d 67 27 20 61 67 61 69 6e 0a 20 20 20 20 20 20 .call.`shr-tag-img'.again.......
5ca0 20 20 28 66 75 6e 63 61 6c 6c 20 6e 6f 76 2d 6f 72 69 67 69 6e 61 6c 2d 73 68 72 2d 74 61 67 2d ..(funcall.nov-original-shr-tag-
5cc0 69 6d 67 2d 66 75 6e 63 74 69 6f 6e 20 64 6f 6d 20 75 72 6c 29 0a 20 20 20 20 20 20 28 73 65 74 img-function.dom.url).......(set
5ce0 71 20 75 72 6c 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 6e 6f 76 2d 75 72 6c q.url.(expand-file-name.(nov-url
5d00 64 65 63 6f 64 65 20 75 72 6c 29 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 69 6e 73 65 72 74 2d decode.url))).......(nov-insert-
5d20 69 6d 61 67 65 20 75 72 6c 20 61 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 72 image.url.alt))))..(defun.nov--r
5d40 65 6e 64 65 72 2d 69 6d 61 67 65 20 28 64 6f 6d 20 26 6f 70 74 69 6f 6e 61 6c 20 75 72 6c 29 0a ender-image.(dom.&optional.url).
5d60 20 20 28 6c 65 74 20 28 28 69 6d 67 2d 74 61 67 20 28 64 6f 6d 2d 6e 6f 64 65 20 27 69 6d 67 0a ..(let.((img-tag.(dom-node.'img.
5d80 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 64 6f 6d 2d ...........................(dom-
5da0 61 74 74 72 69 62 75 74 65 73 20 64 6f 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 attributes.dom).................
5dc0 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 64 6f 6d 29 29 29 29 ...........(dom-children.dom))))
5de0 0a 20 20 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 69 6d 67 20 69 6d 67 2d 74 61 67 20 75 72 6c .....(nov-render-img.img-tag.url
5e00 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 73 76 67 20 28 64 6f 6d 29 )))..(defun.nov-render-svg.(dom)
5e20 0a 20 20 22 43 75 73 74 6f 6d 20 3c 73 76 67 3e 20 72 65 6e 64 65 72 69 6e 67 20 66 75 6e 63 74 ..."Custom.<svg>.rendering.funct
5e40 69 6f 6e 20 66 6f 72 20 44 4f 4d 2e 0a 49 66 20 74 68 65 20 53 56 47 20 65 6c 65 6d 65 6e 74 20 ion.for.DOM..If.the.SVG.element.
5e60 6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 73 20 3c 69 6d 61 67 65 3e 20 74 61 67 73 20 77 69 74 68 20 only.contains.<image>.tags.with.
5e80 61 6e 20 69 6e 74 65 72 6e 61 6c 0a 55 52 4c 2c 20 69 6e 73 65 72 74 20 65 61 63 68 20 69 6d 61 an.internal.URL,.insert.each.ima
5ea0 67 65 20 77 69 74 68 20 60 6e 6f 76 2d 69 6e 73 65 72 74 2d 69 6d 61 67 65 27 2e 20 4f 74 68 65 ge.with.`nov-insert-image'..Othe
5ec0 72 77 69 73 65 2c 20 66 61 6c 6c 0a 62 61 63 6b 20 74 6f 20 72 65 67 75 6c 61 72 20 3c 69 6d 67 rwise,.fall.back.to.regular.<img
5ee0 3e 20 72 65 6e 64 65 72 69 6e 67 20 76 69 61 20 60 6e 6f 76 2d 72 65 6e 64 65 72 2d 69 6d 67 27 >.rendering.via.`nov-render-img'
5f00 20 28 66 6f 72 0a 65 78 74 65 72 6e 61 6c 20 55 52 4c 73 29 20 6f 72 20 72 65 67 75 6c 61 72 20 .(for.external.URLs).or.regular.
5f20 53 56 47 20 72 65 6e 64 65 72 69 6e 67 20 76 69 61 20 60 73 68 72 2d 74 61 67 2d 73 76 67 27 2e SVG.rendering.via.`shr-tag-svg'.
5f40 22 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 69 6d 61 67 65 2d 74 79 70 65 2d 61 76 61 69 6c "...(when.(and.(image-type-avail
5f60 61 62 6c 65 2d 70 20 27 73 76 67 29 0a 09 20 20 20 20 20 28 6e 6f 74 20 73 68 72 2d 69 6e 68 69 able-p.'svg).......(not.shr-inhi
5f80 62 69 74 2d 69 6d 61 67 65 73 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 63 68 69 6c 64 72 65 6e bit-images)).....(let.((children
5fa0 20 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 64 6f 6d 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 .(dom-children.dom))).......(if.
5fc0 28 73 65 71 2d 65 76 65 72 79 2d 70 20 28 6c 61 6d 62 64 61 20 28 63 68 69 6c 64 29 20 28 65 71 (seq-every-p.(lambda.(child).(eq
5fe0 20 28 64 6f 6d 2d 74 61 67 20 63 68 69 6c 64 29 20 27 69 6d 61 67 65 29 29 20 63 68 69 6c 64 72 .(dom-tag.child).'image)).childr
6000 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 69 6d 61 67 65 2d 74 61 67 en)...........(dolist.(image-tag
6020 20 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 75 72 .children).............(let.((ur
6040 6c 20 28 6f 72 20 28 64 6f 6d 2d 61 74 74 72 20 69 6d 61 67 65 2d 74 61 67 20 27 68 72 65 66 29 l.(or.(dom-attr.image-tag.'href)
6060 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 28 64 6f 6d ............................(dom
6080 2d 61 74 74 72 20 69 6d 61 67 65 2d 74 61 67 20 27 78 6c 69 6e 6b 3a 68 72 65 66 29 29 29 29 0a -attr.image-tag.'xlink:href)))).
60a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 76 2d 65 78 74 65 72 6e 61 6c 2d ..............(if.(nov-external-
60c0 75 72 6c 2d 70 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f url-p.url)...................(no
60e0 76 2d 2d 72 65 6e 64 65 72 2d 69 6d 61 67 65 20 64 6f 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 v--render-image.dom)............
6100 20 20 20 20 20 28 6e 6f 76 2d 69 6e 73 65 72 74 2d 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20 20 .....(nov-insert-image..........
6120 20 20 20 20 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 6e 6f 76 2d 75 ........(expand-file-name.(nov-u
6140 72 6c 64 65 63 6f 64 65 20 75 72 6c 29 29 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 rldecode.url))."")))).........(s
6160 68 72 2d 74 61 67 2d 73 76 67 20 64 6f 6d 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d hr-tag-svg.dom)))))..(defun.nov-
6180 72 65 6e 64 65 72 2d 74 69 74 6c 65 20 28 64 6f 6d 29 0a 20 20 22 43 75 73 74 6f 6d 20 3c 74 69 render-title.(dom)..."Custom.<ti
61a0 74 6c 65 3e 20 72 65 6e 64 65 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 44 4f 4d 2e tle>.rendering.function.for.DOM.
61c0 0a 53 65 74 73 20 60 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 27 20 61 63 63 6f 72 .Sets.`header-line-format'.accor
61e0 64 69 6e 67 20 74 6f 20 60 6e 6f 76 2d 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 27 ding.to.`nov-header-line-format'
6200 2e 22 0a 20 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 09 28 ."...(setq.header-line-format..(
6220 61 6e 64 20 6e 6f 76 2d 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 09 20 20 20 20 and.nov-header-line-format......
6240 20 28 6c 65 74 20 28 28 74 69 74 6c 65 20 28 63 64 72 20 28 61 73 73 71 20 27 74 69 74 6c 65 20 .(let.((title.(cdr.(assq.'title.
6260 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 29 29 0a 09 09 20 20 20 28 63 68 61 70 74 65 72 2d 74 69 nov-metadata)))......(chapter-ti
6280 74 6c 65 20 28 63 61 72 20 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 64 6f 6d 29 29 29 29 0a 09 tle.(car.(dom-children.dom))))..
62a0 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 63 68 61 70 74 65 72 2d 74 69 74 6c 65 29 .......(when.(not.chapter-title)
62c0 0a 09 09 20 28 73 65 74 71 20 63 68 61 70 74 65 72 2d 74 69 74 6c 65 20 28 70 72 6f 70 65 72 74 ....(setq.chapter-title.(propert
62e0 69 7a 65 20 22 4e 6f 20 74 69 74 6c 65 22 20 27 66 61 63 65 20 27 69 74 61 6c 69 63 29 29 29 0a ize."No.title".'face.'italic))).
6300 09 20 20 20 20 20 20 20 3b 3b 20 74 68 69 73 20 73 68 6f 75 6c 64 6e 27 74 20 68 61 70 70 65 6e ........;;.this.shouldn't.happen
6320 20 66 6f 72 20 70 72 6f 70 65 72 6c 79 20 61 75 74 68 6f 72 65 64 20 45 50 55 42 73 0a 09 20 20 .for.properly.authored.EPUBs....
6340 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 74 69 74 6c 65 29 0a 09 09 20 28 73 65 74 71 20 .....(when.(not.title)....(setq.
6360 74 69 74 6c 65 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 4e 6f 20 74 69 74 6c 65 22 20 27 66 61 title.(propertize."No.title".'fa
6380 63 65 20 27 69 74 61 6c 69 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 ce.'italic)))................(re
63a0 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 place-regexp-in-string..........
63c0 20 20 20 20 20 20 20 22 25 22 20 22 25 25 22 0a 09 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 ......."%"."%%"..........(format
63e0 2d 73 70 65 63 0a 09 09 20 6e 6f 76 2d 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a -spec....nov-header-line-format.
6400 09 09 20 60 28 28 3f 63 20 2e 20 2c 63 68 61 70 74 65 72 2d 74 69 74 6c 65 29 0a 09 09 20 20 20 ...`((?c...,chapter-title)......
6420 28 3f 74 20 2e 20 2c 74 69 74 6c 65 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 6e 6f (?t...,title))))))))..(defvar.no
6440 76 2d 73 68 72 2d 72 65 6e 64 65 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 27 28 3b 3b v-shr-rendering-functions...'(;;
6460 20 64 65 66 61 75 6c 74 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 75 72 6c 2d 72 65 74 72 69 .default.function.uses.url-retri
6480 65 76 65 20 61 6e 64 20 66 61 69 6c 73 20 6f 6e 20 6c 6f 63 61 6c 20 69 6d 61 67 65 73 0a 20 20 eve.and.fails.on.local.images...
64a0 20 20 28 69 6d 67 20 2e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 69 6d 67 29 0a 20 20 20 20 3b 3b 20 ..(img...nov-render-img).....;;.
64c0 6c 69 6b 65 77 69 73 65 2c 20 62 75 74 20 66 6f 72 20 53 56 47 20 74 61 67 73 20 63 6f 6e 74 61 likewise,.but.for.SVG.tags.conta
64e0 69 6e 69 6e 67 20 6c 6f 63 61 6c 20 69 6d 61 67 65 73 0a 20 20 20 20 28 73 76 67 20 2e 20 6e 6f ining.local.images.....(svg...no
6500 76 2d 72 65 6e 64 65 72 2d 73 76 67 29 0a 20 20 20 20 3b 3b 20 74 69 74 6c 65 73 20 61 72 65 20 v-render-svg).....;;.titles.are.
6520 72 65 6e 64 65 72 65 64 20 2a 69 6e 73 69 64 65 2a 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 62 rendered.*inside*.the.document.b
6540 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 28 74 69 74 6c 65 20 2e 20 6e 6f 76 2d 72 65 6e 64 65 y.default.....(title...nov-rende
6560 72 2d 74 69 74 6c 65 29 29 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 72 65 6e 64 65 72 69 6e 67 20 r-title))..."Alist.of.rendering.
6580 66 75 6e 63 74 69 6f 6e 73 20 75 73 65 64 20 77 69 74 68 20 60 73 68 72 2d 72 65 6e 64 65 72 2d functions.used.with.`shr-render-
65a0 72 65 67 69 6f 6e 27 2e 22 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 66 69 6c 6c 2d 6c 69 6e 65 region'.")..(defun.nov-fill-line
65c0 20 28 29 0a 20 20 22 4c 69 6b 65 20 60 73 68 72 2d 66 69 6c 6c 2d 6c 69 6e 65 27 2c 20 62 75 74 .()..."Like.`shr-fill-line',.but
65e0 20 6f 6e 6c 79 20 70 65 72 66 6f 72 6d 69 6e 67 20 69 6e 64 65 6e 74 61 74 69 6f 6e 2e 0a 54 6f .only.performing.indentation..To
6600 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 60 6e 6f 76 2d 74 65 78 74 2d 77 69 64 74 68 27 20 69 .be.used.when.`nov-text-width'.i
6620 73 20 73 65 74 20 74 6f 20 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 68 72 2d 69 6e 64 65 6e 74 s.set.to.t."...(let.((shr-indent
6640 61 74 69 6f 6e 20 28 6f 72 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f ation.(or.(get-text-property.(po
6660 69 6e 74 29 20 27 73 68 72 2d 69 6e 64 65 6e 74 61 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 int).'shr-indentation)..........
6680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 72 2d 69 6e 64 65 6e 74 61 74 ....................shr-indentat
66a0 69 6f 6e 29 29 29 0a 20 20 20 20 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 ion))).....(put-text-property.(p
66c0 6f 69 6e 74 29 20 28 31 2b 20 28 70 6f 69 6e 74 29 29 20 27 73 68 72 2d 69 6e 64 65 6e 74 61 74 oint).(1+.(point)).'shr-indentat
66e0 69 6f 6e 20 6e 69 6c 29 0a 20 20 20 20 28 6c 65 74 20 28 28 66 61 63 65 20 28 67 65 74 2d 74 65 ion.nil).....(let.((face.(get-te
6700 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 66 61 63 65 29 29 0a 09 20 20 28 xt-property.(point).'face))....(
6720 62 61 63 6b 67 72 6f 75 6e 64 2d 73 74 61 72 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 background-start.(point)))......
6740 20 28 73 68 72 2d 69 6e 64 65 6e 74 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 66 61 63 65 0a 09 .(shr-indent).......(when.face..
6760 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 62 61 63 6b 67 72 6f 75 6e 64 2d 73 74 (put-text-property.background-st
6780 61 72 74 20 28 70 6f 69 6e 74 29 20 27 66 61 63 65 0a 09 09 09 20 20 20 60 2c 28 73 68 72 2d 66 art.(point).'face.......`,(shr-f
67a0 61 63 65 2d 62 61 63 6b 67 72 6f 75 6e 64 20 66 61 63 65 29 29 29 29 29 29 0a 0a 28 64 65 66 75 ace-background.face))))))..(defu
67c0 6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74 6d 6c 20 28 29 0a 20 20 22 52 65 6e 64 65 72 20 48 n.nov-render-html.()..."Render.H
67e0 54 4d 4c 20 69 6e 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 77 69 74 68 20 73 68 72 2e 22 TML.in.current.buffer.with.shr."
6800 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 6e 6f 76 2d 70 72 65 2d 68 74 6d 6c 2d 72 65 6e 64 ...(run-hooks.'nov-pre-html-rend
6820 65 72 2d 68 6f 6f 6b 29 0a 20 20 28 6c 65 74 20 28 3b 3b 20 48 41 43 4b 3a 20 6d 61 6b 65 20 62 er-hook)...(let.(;;.HACK:.make.b
6840 75 74 74 6f 6e 73 20 75 73 65 20 6f 75 72 20 6f 77 6e 20 63 6f 6d 6d 61 6e 64 73 0a 20 20 20 20 uttons.use.our.own.commands.....
6860 20 20 20 20 28 73 68 72 2d 6d 61 70 20 6e 6f 76 2d 62 75 74 74 6f 6e 2d 6d 61 70 29 0a 20 20 20 ....(shr-map.nov-button-map)....
6880 20 20 20 20 20 28 73 68 72 2d 65 78 74 65 72 6e 61 6c 2d 72 65 6e 64 65 72 69 6e 67 2d 66 75 6e .....(shr-external-rendering-fun
68a0 63 74 69 6f 6e 73 20 6e 6f 76 2d 73 68 72 2d 72 65 6e 64 65 72 69 6e 67 2d 66 75 6e 63 74 69 6f ctions.nov-shr-rendering-functio
68c0 6e 73 29 0a 20 20 20 20 20 20 20 20 28 73 68 72 2d 75 73 65 2d 66 6f 6e 74 73 20 6e 6f 76 2d 76 ns).........(shr-use-fonts.nov-v
68e0 61 72 69 61 62 6c 65 2d 70 69 74 63 68 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 ariable-pitch).........;;.HACK:.
6900 70 72 65 73 65 72 76 65 20 60 74 72 75 6e 63 61 74 65 2d 6c 69 6e 65 73 27 20 66 6f 72 20 60 76 preserve.`truncate-lines'.for.`v
6920 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 27 20 74 6f 0a 20 20 20 20 20 20 20 20 3b 3b 20 77 isual-line-mode'.to.........;;.w
6940 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 61 66 74 65 72 20 61 20 74 61 62 6c 65 20 68 61 73 20 ork.correctly.after.a.table.has.
6960 62 65 65 6e 20 72 65 6e 64 65 72 65 64 2e 2e 2e 0a 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 been.rendered............(trunca
6980 74 65 2d 6c 69 6e 65 73 20 74 72 75 6e 63 61 74 65 2d 6c 69 6e 65 73 29 29 0a 20 20 20 20 3b 3b te-lines.truncate-lines)).....;;
69a0 20 48 41 43 4b 3a 20 60 73 68 72 2d 65 78 74 65 72 6e 61 6c 2d 72 65 6e 64 65 72 69 6e 67 2d 66 .HACK:.`shr-external-rendering-f
69c0 75 6e 63 74 69 6f 6e 73 27 20 64 6f 65 73 6e 27 74 20 63 6f 76 65 72 0a 20 20 20 20 3b 3b 20 65 unctions'.doesn't.cover.....;;.e
69e0 76 65 72 79 20 75 73 61 67 65 20 6f 66 20 60 73 68 72 2d 74 61 67 2d 69 6d 67 27 0a 20 20 20 20 very.usage.of.`shr-tag-img'.....
6a00 28 63 6c 2d 6c 65 74 66 20 28 28 28 73 79 6d 62 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 27 73 68 72 (cl-letf.(((symbol-function.'shr
6a20 2d 74 61 67 2d 69 6d 67 29 20 27 6e 6f 76 2d 72 65 6e 64 65 72 2d 69 6d 67 29 29 0a 20 20 20 20 -tag-img).'nov-render-img)).....
6a40 20 20 28 69 66 20 28 65 71 20 6e 6f 76 2d 74 65 78 74 2d 77 69 64 74 68 20 74 29 0a 20 20 20 20 ..(if.(eq.nov-text-width.t).....
6a60 20 20 20 20 20 20 28 63 6c 2d 6c 65 74 66 20 28 28 28 73 79 6d 62 6f 6c 2d 66 75 6e 63 74 69 6f ......(cl-letf.(((symbol-functio
6a80 6e 20 27 73 68 72 2d 66 69 6c 6c 2d 6c 69 6e 65 29 20 23 27 6e 6f 76 2d 66 69 6c 6c 2d 6c 69 6e n.'shr-fill-line).#'nov-fill-lin
6aa0 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 68 72 2d 72 65 6e 64 65 72 2d 72 65 67 69 e)).............(shr-render-regi
6ac0 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 on.(point-min).(point-max)))....
6ae0 20 20 20 20 20 28 6c 65 74 20 28 28 73 68 72 2d 77 69 64 74 68 20 6e 6f 76 2d 74 65 78 74 2d 77 .....(let.((shr-width.nov-text-w
6b00 69 64 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 68 72 2d 72 65 6e 64 65 72 2d 72 65 67 idth))...........(shr-render-reg
6b20 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 ion.(point-min).(point-max))))))
6b40 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 6e 6f 76 2d 70 6f 73 74 2d 68 74 6d 6c 2d 72 65 6e ...(run-hooks.'nov-post-html-ren
6b60 64 65 72 2d 68 6f 6f 6b 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f der-hook))..(defun.nov-render-do
6b80 63 75 6d 65 6e 74 20 28 29 0a 20 20 22 52 65 6e 64 65 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 cument.()..."Render.the.document
6ba0 20 72 65 66 65 72 65 6e 63 65 64 20 62 79 20 60 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e .referenced.by.`nov-documents-in
6bc0 64 65 78 27 2e 0a 49 66 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 70 61 74 68 20 72 65 66 65 72 dex'..If.the.document.path.refer
6be0 73 20 74 6f 20 61 6e 20 69 6d 61 67 65 20 28 61 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 0a s.to.an.image.(as.determined.by.
6c00 60 69 6d 61 67 65 2d 74 79 70 65 2d 66 69 6c 65 2d 6e 61 6d 65 2d 72 65 67 65 78 70 73 27 29 2c `image-type-file-name-regexps'),
6c20 20 61 6e 20 69 6d 61 67 65 20 69 73 20 69 6e 73 65 72 74 65 64 2c 20 6f 74 68 65 72 77 69 73 65 .an.image.is.inserted,.otherwise
6c40 0a 74 68 65 20 48 54 4d 4c 20 69 73 20 72 65 6e 64 65 72 65 64 20 77 69 74 68 20 60 6e 6f 76 2d .the.HTML.is.rendered.with.`nov-
6c60 72 65 6e 64 65 72 2d 68 74 6d 6c 2d 66 75 6e 63 74 69 6f 6e 27 2e 22 0a 20 20 28 69 6e 74 65 72 render-html-function'."...(inter
6c80 61 63 74 69 76 65 29 0a 20 20 28 73 65 71 2d 6c 65 74 20 28 69 64 20 26 72 65 73 74 20 70 61 74 active)...(seq-let.(id.&rest.pat
6ca0 68 29 20 28 61 72 65 66 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 6e 6f 76 2d 64 6f 63 75 6d h).(aref.nov-documents.nov-docum
6cc0 65 6e 74 73 2d 69 6e 64 65 78 29 0a 20 20 20 20 28 6c 65 74 20 28 3b 3b 20 48 41 43 4b 3a 20 74 ents-index).....(let.(;;.HACK:.t
6ce0 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70 20 69 6e 20 74 68 65 20 6d his.should.be.looked.up.in.the.m
6d00 61 6e 69 66 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 69 6d 61 67 65 70 20 28 73 65 71 2d 66 anifest...........(imagep.(seq-f
6d20 69 6e 64 20 28 6c 61 6d 62 64 61 20 28 69 74 65 6d 29 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 ind.(lambda.(item).(string-match
6d40 2d 70 20 28 63 61 72 20 69 74 65 6d 29 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -p.(car.item).path))............
6d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 61 67 65 2d 74 79 70 65 2d 66 69 6c 65 .................image-type-file
6d80 2d 6e 61 6d 65 2d 72 65 67 65 78 70 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 -name-regexps))...........;;.NOT
6da0 45 3a 20 61 6c 6c 6f 77 73 20 72 65 73 6f 6c 76 69 6e 67 20 69 6d 61 67 65 20 72 65 66 65 72 65 E:.allows.resolving.image.refere
6dc0 6e 63 65 73 20 63 6f 72 72 65 63 74 6c 79 0a 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61 75 6c nces.correctly...........(defaul
6de0 74 2d 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 t-directory.(file-name-directory
6e00 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e .path))...........buffer-read-on
6e20 6c 79 29 0a 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 0a 20 20 20 20 20 20 ly).......(erase-buffer)........
6e40 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 28 69 6d 61 67 65 70 0a 20 20 20 20 20 20 20 20 28 6e 6f (cond........(imagep.........(no
6e60 76 2d 69 6e 73 65 72 74 2d 69 6d 61 67 65 20 70 61 74 68 20 22 22 29 29 0a 20 20 20 20 20 20 20 v-insert-image.path.""))........
6e80 28 28 61 6e 64 20 28 76 65 72 73 69 6f 6e 3c 20 6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e ((and.(version<.nov-epub-version
6ea0 20 22 33 2e 30 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 69 64 20 6e 6f 76 2d ."3.0")..............(eq.id.nov-
6ec0 74 6f 63 2d 69 64 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 6e 6f 76 2d 6e 63 toc-id)).........(insert.(nov-nc
6ee0 78 2d 74 6f 2d 68 74 6d 6c 20 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 x-to-html.path)))........(t.....
6f00 20 20 20 20 28 69 6e 73 65 72 74 20 28 6e 6f 76 2d 73 6c 75 72 70 20 70 61 74 68 29 29 29 29 0a ....(insert.(nov-slurp.path)))).
6f20 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 69 6d 61 67 65 70 29 0a 20 20 20 20 20 20 .......(when.(not.imagep).......
6f40 20 20 28 66 75 6e 63 61 6c 6c 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74 6d 6c 2d 66 75 6e 63 74 ..(funcall.nov-render-html-funct
6f60 69 6f 6e 29 29 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 74 68 69 73 20 69 73 20 68 6f 77 ion)).......;;.NOTE:.this.is.how
6f80 20 64 6f 63 2d 76 69 65 77 20 61 76 6f 69 64 73 20 6f 76 65 72 77 72 69 74 69 6e 67 20 74 68 65 .doc-view.avoids.overwriting.the
6fa0 20 66 69 6c 65 0a 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64 .file.......(set-buffer-modified
6fc0 2d 70 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d -p.nil).......(goto-char.(point-
6fe0 6d 69 6e 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 66 69 6e 64 2d 64 6f 63 75 6d 65 min)))))..(defun.nov-find-docume
7000 6e 74 20 28 70 72 65 64 69 63 61 74 65 29 0a 20 20 22 52 65 74 75 72 6e 20 66 69 72 73 74 20 69 nt.(predicate)..."Return.first.i
7020 74 65 6d 20 69 6e 20 60 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 27 20 50 52 45 44 49 43 41 54 45 tem.in.`nov-documents'.PREDICATE
7040 20 69 73 20 74 72 75 65 20 66 6f 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 69 20 30 29 0a 20 20 20 .is.true.for."...(let.((i.0)....
7060 20 20 20 20 20 64 6f 6e 65 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6e 6f 74 20 .....done).....(while.(and.(not.
7080 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3c 20 69 20 28 6c 65 6e 67 done).................(<.i.(leng
70a0 74 68 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 th.nov-documents))).......(when.
70c0 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 69 63 61 74 65 20 28 61 72 65 66 20 6e 6f 76 2d 64 6f 63 (funcall.predicate.(aref.nov-doc
70e0 75 6d 65 6e 74 73 20 69 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 29 uments.i)).........(setq.done.t)
7100 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 69 20 28 31 2b 20 69 29 29 29 0a 20 20 20 20 28 77 68 ).......(setq.i.(1+.i))).....(wh
7120 65 6e 20 64 6f 6e 65 0a 20 20 20 20 20 20 28 31 2d 20 69 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 en.done.......(1-.i))))..(defun.
7140 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 69 6e 64 65 78 29 0a 20 20 22 47 6f 20 nov-goto-document.(index)..."Go.
7160 74 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 64 65 6e 6f 74 65 64 20 62 79 20 49 4e 44 45 58 to.the.document.denoted.by.INDEX
7180 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 6f 72 79 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 ."...(let.((history.(cons.(list.
71a0 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 nov-documents-index.(point))....
71c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d 68 69 73 74 6f 72 79 29 ....................nov-history)
71e0 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 )).....(setq.nov-documents-index
7200 20 69 6e 64 65 78 29 0a 20 20 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f 63 75 6d 65 6e 74 .index).....(nov-render-document
7220 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 68 69 73 74 6f 72 79 20 68 69 73 74 6f 72 79 29 ).....(setq.nov-history.history)
7240 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 67 6f 74 6f 2d 74 6f 63 20 28 29 0a 20 20 22 47 6f ))..(defun.nov-goto-toc.()..."Go
7260 20 74 6f 20 74 68 65 20 54 4f 43 20 69 6e 64 65 78 20 61 6e 64 20 72 65 6e 64 65 72 20 74 68 65 .to.the.TOC.index.and.render.the
7280 20 54 4f 43 20 64 6f 63 75 6d 65 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a .TOC.document."...(interactive).
72a0 20 20 28 6c 65 74 20 28 28 69 6e 64 65 78 20 28 6e 6f 76 2d 66 69 6e 64 2d 64 6f 63 75 6d 65 6e ..(let.((index.(nov-find-documen
72c0 74 20 28 6c 61 6d 62 64 61 20 28 64 6f 63 29 20 28 65 71 20 28 63 61 72 20 64 6f 63 29 20 6e 6f t.(lambda.(doc).(eq.(car.doc).no
72e0 76 2d 74 6f 63 2d 69 64 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 69 6e 64 v-toc-id))))).....(when.(not.ind
7300 65 78 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 43 6f 75 6c 64 6e 27 74 20 6c 6f 63 61 74 ex).......(error."Couldn't.locat
7320 65 20 54 4f 43 22 29 29 0a 20 20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 e.TOC")).....(nov-goto-document.
7340 69 6e 64 65 78 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 76 69 65 77 2d 73 6f 75 72 63 65 index)))..(defun.nov-view-source
7360 20 28 29 0a 20 20 22 56 69 65 77 20 74 68 65 20 73 6f 75 72 63 65 20 6f 66 20 74 68 65 20 63 75 .()..."View.the.source.of.the.cu
7380 72 72 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 69 6e 20 61 20 6e 65 77 20 62 75 66 66 65 72 2e 22 rrent.document.in.a.new.buffer."
73a0 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 66 69 6e 64 2d 66 69 6c 65 20 28 63 ...(interactive)...(find-file.(c
73c0 64 72 20 28 61 72 65 66 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 6e 6f 76 2d 64 6f 63 75 6d dr.(aref.nov-documents.nov-docum
73e0 65 6e 74 73 2d 69 6e 64 65 78 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 76 69 65 77 2d ents-index))))..(defun.nov-view-
7400 63 6f 6e 74 65 6e 74 2d 73 6f 75 72 63 65 20 28 29 0a 20 20 22 56 69 65 77 20 74 68 65 20 73 6f content-source.()..."View.the.so
7420 75 72 63 65 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 20 69 6e 20 61 20 6e 65 urce.of.the.content.file.in.a.ne
7440 77 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 66 69 w.buffer."...(interactive)...(fi
7460 6e 64 2d 66 69 6c 65 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 29 29 0a 0a 28 64 65 66 nd-file.nov-content-file))..(def
7480 75 6e 20 6e 6f 76 2d 72 65 6f 70 65 6e 2d 61 73 2d 61 72 63 68 69 76 65 20 28 29 0a 20 20 22 52 un.nov-reopen-as-archive.()..."R
74a0 65 6f 70 65 6e 20 74 68 65 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 20 75 73 69 6e 67 20 60 61 eopen.the.EPUB.document.using.`a
74c0 72 63 68 69 76 65 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 rchive-mode'."...(interactive)..
74e0 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 66 69 6e 64 2d 66 69 6c 65 .(with-current-buffer.(find-file
7500 2d 6c 69 74 65 72 61 6c 6c 79 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 28 61 -literally.nov-file-name).....(a
7520 72 63 68 69 76 65 2d 6d 6f 64 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 64 69 73 70 6c rchive-mode)))..(defun.nov-displ
7540 61 79 2d 6d 65 74 61 64 61 74 61 20 28 29 0a 20 20 22 56 69 65 77 20 74 68 65 20 6d 65 74 61 64 ay-metadata.()..."View.the.metad
7560 61 74 61 20 6f 66 20 74 68 65 20 45 50 55 42 20 64 6f 63 75 6d 65 6e 74 20 69 6e 20 61 20 6e 65 ata.of.the.EPUB.document.in.a.ne
7580 77 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 w.buffer."...(interactive)...(le
75a0 74 20 28 28 62 75 66 66 65 72 20 22 2a 45 50 55 42 20 6d 65 74 61 64 61 74 61 2a 22 29 0a 20 20 t.((buffer."*EPUB.metadata*")...
75c0 20 20 20 20 20 20 28 6d 65 74 61 64 61 74 61 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 0a 20 20 ......(metadata.nov-metadata)...
75e0 20 20 20 20 20 20 28 76 65 72 73 69 6f 6e 20 6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e 29 ......(version.nov-epub-version)
7600 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d ).....(with-current-buffer.(get-
7620 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 73 70 65 buffer-create.buffer).......(spe
7640 63 69 61 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 62 75 66 66 65 72 2d 72 65 cial-mode).......(let.(buffer-re
7660 61 64 2d 6f 6e 6c 79 29 0a 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a ad-only).........(erase-buffer).
7680 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 45 50 55 42 20 56 65 ........(insert.(format."EPUB.Ve
76a0 72 73 69 6f 6e 3a 20 25 73 5c 6e 22 20 76 65 72 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 28 rsion:.%s\n".version)).........(
76c0 64 6f 6c 69 73 74 20 28 69 74 65 6d 20 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 dolist.(item.metadata)..........
76e0 20 28 73 65 71 2d 6c 65 74 20 28 6b 65 79 20 26 72 65 73 74 20 76 61 6c 75 65 29 20 69 74 65 6d .(seq-let.(key.&rest.value).item
7700 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 73 .............(insert.(format."%s
7720 3a 20 22 20 28 63 61 70 69 74 61 6c 69 7a 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79 :.".(capitalize.(symbol-name.key
7740 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 )))).............(if.value......
7760 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 6b 65 79 20 27 64 65 73 63 72 69 70 74 ...........(if.(eq.key.'descript
7780 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 ion).....................(let.((
77a0 62 65 67 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 beg.(point)))...................
77c0 20 20 20 20 28 69 6e 73 65 72 74 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(insert.value)..............
77e0 20 20 20 20 20 20 20 20 20 28 73 68 72 2d 72 65 6e 64 65 72 2d 72 65 67 69 6f 6e 20 62 65 67 20 .........(shr-render-region.beg.
7800 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 (point)))...................(ins
7820 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 ert.(format."%s".value))).......
7840 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 4e 6f 6e ........(insert.(propertize."Non
7860 65 22 20 27 66 61 63 65 20 27 69 74 61 6c 69 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 e".'face.'italic))).............
7880 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 (insert."\n"))).........(goto-ch
78a0 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 28 70 6f 70 2d 74 6f 2d 62 75 ar.(point-min)))).....(pop-to-bu
78c0 66 66 65 72 20 62 75 66 66 65 72 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6e 65 78 74 2d ffer.buffer)))..(defun.nov-next-
78e0 64 6f 63 75 6d 65 6e 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 75 6e 74 29 0a 20 20 22 47 6f document.(&optional.count)..."Go
7900 20 74 6f 20 74 68 65 20 6e 65 78 74 20 64 6f 63 75 6d 65 6e 74 20 61 6e 64 20 72 65 6e 64 65 72 .to.the.next.document.and.render
7920 20 69 74 2e 0a 54 61 6b 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 43 4f 55 4e 54 2c 20 67 6f .it..Takes.an.optional.COUNT,.go
7940 65 73 20 62 61 63 6b 77 61 72 64 20 69 66 20 43 4f 55 4e 54 20 69 73 20 6e 65 67 61 74 69 76 65 es.backward.if.COUNT.is.negative
7960 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20 28 6e 6f 76 2d 67 6f ."...(interactive."p")...(nov-go
7980 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 6d 69 6e 20 28 31 2d 20 28 6c 65 6e 67 74 68 20 6e 6f 76 to-document.(min.(1-.(length.nov
79a0 2d 64 6f 63 75 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -documents))....................
79c0 20 20 20 20 20 20 20 28 2b 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 6f .......(+.nov-documents-index.(o
79e0 72 20 63 6f 75 6e 74 20 31 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 70 72 65 76 69 r.count.1)))))..(defun.nov-previ
7a00 6f 75 73 2d 64 6f 63 75 6d 65 6e 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 75 6e 74 29 0a 20 ous-document.(&optional.count)..
7a20 20 22 47 6f 20 74 6f 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 64 6f 63 75 6d 65 6e 74 20 61 6e ."Go.to.the.previous.document.an
7a40 64 20 72 65 6e 64 65 72 20 69 74 2e 0a 54 61 6b 65 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 43 d.render.it..Takes.an.optional.C
7a60 4f 55 4e 54 2c 20 67 6f 65 73 20 66 6f 72 77 61 72 64 20 69 66 20 43 4f 55 4e 54 20 69 73 20 6e OUNT,.goes.forward.if.COUNT.is.n
7a80 65 67 61 74 69 76 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20 egative."...(interactive."p")...
7aa0 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 6d 61 78 20 30 20 28 2d 20 6e 6f 76 (nov-goto-document.(max.0.(-.nov
7ac0 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 6f 72 20 63 6f 75 6e 74 20 31 29 29 29 29 -documents-index.(or.count.1))))
7ae0 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 73 63 72 6f 6c 6c 2d 75 70 20 28 61 72 67 29 0a 20 20 )..(defun.nov-scroll-up.(arg)...
7b00 22 53 63 72 6f 6c 6c 20 77 69 74 68 20 60 73 63 72 6f 6c 6c 2d 75 70 27 20 6f 72 20 76 69 73 69 "Scroll.with.`scroll-up'.or.visi
7b20 74 20 6e 65 78 74 20 63 68 61 70 74 65 72 20 69 66 20 61 74 20 62 6f 74 74 6f 6d 2e 22 0a 20 20 t.next.chapter.if.at.bottom."...
7b40 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 69 66 20 28 3e 3d 20 28 77 69 6e (interactive."P")...(if.(>=.(win
7b60 64 6f 77 2d 65 6e 64 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 dow-end).(point-max)).......(nov
7b80 2d 6e 65 78 74 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 28 73 63 72 6f 6c 6c 2d 75 70 20 61 -next-document).....(scroll-up.a
7ba0 72 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 73 63 72 6f 6c 6c 2d 64 6f 77 6e 20 28 61 rg)))..(defun.nov-scroll-down.(a
7bc0 72 67 29 0a 20 20 22 53 63 72 6f 6c 6c 20 77 69 74 68 20 60 73 63 72 6f 6c 6c 2d 64 6f 77 6e 27 rg)..."Scroll.with.`scroll-down'
7be0 20 6f 72 20 76 69 73 69 74 20 70 72 65 76 69 6f 75 73 20 63 68 61 70 74 65 72 20 69 66 20 61 74 .or.visit.previous.chapter.if.at
7c00 20 74 6f 70 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 69 66 .top."...(interactive."P")...(if
7c20 20 28 61 6e 64 20 28 3c 3d 20 28 77 69 6e 64 6f 77 2d 73 74 61 72 74 29 20 28 70 6f 69 6e 74 2d .(and.(<=.(window-start).(point-
7c40 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 3e 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 min))............(>.nov-document
7c60 73 2d 69 6e 64 65 78 20 30 29 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 s-index.0)).......(progn........
7c80 20 28 6e 6f 76 2d 70 72 65 76 69 6f 75 73 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 .(nov-previous-document)........
7ca0 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 28 73 .(goto-char.(point-max))).....(s
7cc0 63 72 6f 6c 6c 2d 64 6f 77 6e 20 61 72 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 76 69 croll-down.arg)))..(defun.nov-vi
7ce0 73 69 74 2d 72 65 6c 61 74 69 76 65 2d 66 69 6c 65 20 28 66 69 6c 65 6e 61 6d 65 20 74 61 72 67 sit-relative-file.(filename.targ
7d00 65 74 29 0a 20 20 22 56 69 73 69 74 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 61 73 20 73 70 65 et)..."Visit.the.document.as.spe
7d20 63 69 66 69 65 64 20 62 79 20 46 49 4c 45 4e 41 4d 45 20 61 6e 64 20 54 41 52 47 45 54 2e 22 0a cified.by.FILENAME.and.TARGET.".
7d40 20 20 28 6c 65 74 20 28 69 6e 64 65 78 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 7a ..(let.(index).....(when.(not.(z
7d60 65 72 6f 70 20 28 6c 65 6e 67 74 68 20 66 69 6c 65 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 28 erop.(length.filename))).......(
7d80 6c 65 74 2a 20 28 28 63 75 72 72 65 6e 74 2d 70 61 74 68 20 28 63 64 72 20 28 61 72 65 66 20 6e let*.((current-path.(cdr.(aref.n
7da0 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 ov-documents.nov-documents-index
7dc0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c )))..............(directory.(fil
7de0 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 20 63 75 72 72 65 6e 74 2d 70 61 74 68 29 29 0a e-name-directory.current-path)).
7e00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 74 68 20 28 66 69 6c 65 2d 74 72 75 65 6e 61 6d .............(path.(file-truenam
7e20 65 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 6e e.(nov-make-path.directory.filen
7e40 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 20 28 6e 6f 76 2d ame)))..............(match.(nov-
7e60 66 69 6e 64 2d 64 6f 63 75 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 find-document...................
7e80 20 20 20 28 6c 61 6d 62 64 61 20 28 64 6f 63 29 20 28 65 71 75 61 6c 20 70 61 74 68 20 28 66 69 ...(lambda.(doc).(equal.path.(fi
7ea0 6c 65 2d 74 72 75 65 6e 61 6d 65 20 28 63 64 72 20 64 6f 63 29 29 29 29 29 29 29 0a 20 20 20 20 le-truename.(cdr.doc))))))).....
7ec0 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 ....(when.(not.match)...........
7ee0 28 65 72 72 6f 72 20 22 43 6f 75 6c 64 6e 27 74 20 6c 6f 63 61 74 65 20 64 6f 63 75 6d 65 6e 74 (error."Couldn't.locate.document
7f00 22 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 6e 64 65 78 20 6d 61 74 63 68 29 29 29 ")).........(setq.index.match)))
7f20 0a 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 74 68 69 73 20 62 69 6e 64 69 6e 67 20 69 73 20 6f 6e .....;;.HACK:.this.binding.is.on
7f40 6c 79 20 6e 65 65 64 20 66 6f 72 20 45 6d 61 63 73 20 32 37 2e 31 20 61 6e 64 20 6f 6c 64 65 72 ly.need.for.Emacs.27.1.and.older
7f60 2c 20 61 73 20 6f 66 0a 20 20 20 20 3b 3b 20 45 6d 61 63 73 20 32 38 2e 31 2c 20 73 68 72 2e 65 ,.as.of.....;;.Emacs.28.1,.shr.e
7f80 6c 20 61 6c 77 61 79 73 20 61 64 64 73 20 74 68 65 20 73 68 72 2d 74 61 72 67 65 74 2d 69 64 20 l.always.adds.the.shr-target-id.
7fa0 70 72 6f 70 65 72 74 79 0a 20 20 20 20 28 6c 65 74 20 28 28 73 68 72 2d 74 61 72 67 65 74 2d 69 property.....(let.((shr-target-i
7fc0 64 20 74 61 72 67 65 74 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d d.target)).......(nov-goto-docum
7fe0 65 6e 74 20 28 6f 72 20 69 6e 64 65 78 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 ent.(or.index.nov-documents-inde
8000 78 29 29 29 29 0a 20 20 28 77 68 65 6e 20 74 61 72 67 65 74 0a 20 20 20 20 28 6c 65 74 20 28 28 x))))...(when.target.....(let.((
8020 70 6f 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 64 6f 6e 65 29 pos.(point-min))...........done)
8040 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 .......(while.(and.(not.done)...
8060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 6f 73 20 28 6e 65 78 74 2d ................(setq.pos.(next-
8080 73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d 63 68 61 6e 67 65 20 70 6f 73 20 27 73 68 72 2d single-property-change.pos.'shr-
80a0 74 61 72 67 65 74 2d 69 64 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70 target-id))).........(let.((prop
80c0 65 72 74 79 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 70 6f 73 20 27 73 68 72 erty.(get-text-property.pos.'shr
80e0 2d 74 61 72 67 65 74 2d 69 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f -target-id)))...........(when.(o
8100 72 20 28 65 71 75 61 6c 20 70 72 6f 70 65 72 74 79 20 74 61 72 67 65 74 29 0a 20 20 20 20 20 20 r.(equal.property.target).......
8120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 61 73 20 6f 66 20 45 6d 61 ..............;;.NOTE:.as.of.Ema
8140 63 73 20 32 38 2e 31 20 74 68 69 73 20 6d 61 79 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 74 61 cs.28.1.this.may.be.a.list.of.ta
8160 72 67 65 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 rgets.....................(and.(
8180 63 6f 6e 73 70 20 70 72 6f 70 65 72 74 79 29 20 28 6d 65 6d 62 65 72 20 74 61 72 67 65 74 20 70 consp.property).(member.target.p
81a0 72 6f 70 65 72 74 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 roperty))).............(goto-cha
81c0 72 20 70 6f 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 65 6e 74 65 72 20 28 31 2d r.pos).............(recenter.(1-
81e0 20 28 6d 61 78 20 31 20 73 63 72 6f 6c 6c 2d 6d 61 72 67 69 6e 29 29 29 0a 20 20 20 20 20 20 20 .(max.1.scroll-margin)))........
8200 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 .....(setq.done.t)))).......(whe
8220 6e 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 43 6f 75 n.(not.done).........(error."Cou
8240 6c 64 6e 27 74 20 6c 6f 63 61 74 65 20 74 61 72 67 65 74 22 29 29 29 29 29 0a 0a 3b 3b 20 61 64 ldn't.locate.target")))))..;;.ad
8260 61 70 74 65 64 20 66 72 6f 6d 20 60 73 68 72 2d 62 72 6f 77 73 65 2d 75 72 6c 27 0a 28 64 65 66 apted.from.`shr-browse-url'.(def
8280 75 6e 20 6e 6f 76 2d 62 72 6f 77 73 65 2d 75 72 6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 6f 75 un.nov-browse-url.(&optional.mou
82a0 73 65 2d 65 76 65 6e 74 29 0a 20 20 22 46 6f 6c 6c 6f 77 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 se-event)..."Follow.an.external.
82c0 75 72 6c 20 77 69 74 68 20 60 62 72 6f 77 73 65 2d 75 72 6c 27 2e 0a 49 6e 74 65 72 6e 61 6c 20 url.with.`browse-url'..Internal.
82e0 55 52 4c 73 20 61 72 65 20 76 69 73 69 74 65 64 20 77 69 74 68 20 60 6e 6f 76 2d 76 69 73 69 74 URLs.are.visited.with.`nov-visit
8300 2d 72 65 6c 61 74 69 76 65 2d 66 69 6c 65 27 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 -relative-file'."...(interactive
8320 20 28 6c 69 73 74 20 6c 61 73 74 2d 6e 6f 6e 6d 65 6e 75 2d 65 76 65 6e 74 29 29 0a 20 20 28 6d .(list.last-nonmenu-event))...(m
8340 6f 75 73 65 2d 73 65 74 2d 70 6f 69 6e 74 20 6d 6f 75 73 65 2d 65 76 65 6e 74 29 0a 20 20 28 6c ouse-set-point.mouse-event)...(l
8360 65 74 20 28 28 75 72 6c 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 et.((url.(get-text-property.(poi
8380 6e 74 29 20 27 73 68 72 2d 75 72 6c 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 75 nt).'shr-url))).....(when.(not.u
83a0 72 6c 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 6c 69 6e 6b 20 75 rl).......(user-error."No.link.u
83c0 6e 64 65 72 20 70 6f 69 6e 74 22 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 76 2d 65 78 74 65 72 nder.point")).....(if.(nov-exter
83e0 6e 61 6c 2d 75 72 6c 2d 70 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 28 62 72 6f 77 73 65 2d 75 nal-url-p.url).........(browse-u
8400 72 6c 20 75 72 6c 29 0a 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 6e 6f 76 2d 76 69 73 69 74 2d rl.url).......(apply.'nov-visit-
8420 72 65 6c 61 74 69 76 65 2d 66 69 6c 65 20 28 6e 6f 76 2d 75 72 6c 2d 66 69 6c 65 6e 61 6d 65 2d relative-file.(nov-url-filename-
8440 61 6e 64 2d 74 61 72 67 65 74 20 75 72 6c 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d and-target.url)))))..(defun.nov-
8460 63 6f 70 79 2d 75 72 6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 6f 75 73 65 2d 65 76 65 6e 74 29 copy-url.(&optional.mouse-event)
8480 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 6c 61 73 74 2d 6e 6f 6e 6d 65 ...(interactive.(list.last-nonme
84a0 6e 75 2d 65 76 65 6e 74 29 29 0a 20 20 28 6d 6f 75 73 65 2d 73 65 74 2d 70 6f 69 6e 74 20 6d 6f nu-event))...(mouse-set-point.mo
84c0 75 73 65 2d 65 76 65 6e 74 29 0a 20 20 28 6c 65 74 20 28 28 75 72 6c 20 28 67 65 74 2d 74 65 78 use-event)...(let.((url.(get-tex
84e0 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 73 68 72 2d 75 72 6c 29 29 29 0a 20 t-property.(point).'shr-url)))..
8500 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 75 72 6c 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 ...(when.(not.url).......(user-e
8520 72 72 6f 72 20 22 4e 6f 20 6c 69 6e 6b 20 75 6e 64 65 72 20 70 6f 69 6e 74 22 29 29 0a 20 20 20 rror."No.link.under.point"))....
8540 20 28 6b 69 6c 6c 2d 6e 65 77 20 75 72 6c 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 .(kill-new.url).....(message."%s
8560 22 20 75 72 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 73 61 76 65 64 2d 70 6c 61 63 65 ".url)))..(defun.nov-saved-place
8580 73 20 28 29 0a 20 20 22 52 65 74 72 69 65 76 65 20 73 61 76 65 64 20 70 6c 61 63 65 73 20 69 6e s.()..."Retrieve.saved.places.in
85a0 20 60 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 27 2e 22 0a 20 20 28 77 68 65 6e .`nov-save-place-file'."...(when
85c0 20 28 61 6e 64 20 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 20 28 66 69 6c 65 2d .(and.nov-save-place-file.(file-
85e0 65 78 69 73 74 73 2d 70 20 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 29 29 0a 20 exists-p.nov-save-place-file))..
8600 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 6e 73 65 ...(with-temp-buffer.......(inse
8620 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 2d 6c 69 74 65 72 61 6c 6c 79 20 6e 6f 76 2d 73 rt-file-contents-literally.nov-s
8640 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 ave-place-file).......(goto-char
8660 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 .(point-min)).......(condition-c
8680 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 ase.nil...........(read.(current
86a0 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 -buffer)).........(error........
86c0 20 20 28 6e 6f 76 2d 77 61 72 6e 20 22 46 61 69 6c 65 64 20 74 6f 20 72 65 74 72 69 65 76 65 20 ..(nov-warn."Failed.to.retrieve.
86e0 73 61 76 65 64 20 70 6c 61 63 65 73 20 66 72 6f 6d 20 60 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 saved.places.from.`nov-save-plac
8700 65 2d 66 69 6c 65 27 22 29 0a 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 29 29 29 0a 0a 28 64 65 e-file'")..........nil)))))..(de
8720 66 75 6e 20 6e 6f 76 2d 73 61 76 65 64 2d 70 6c 61 63 65 20 28 69 64 65 6e 74 69 66 69 65 72 29 fun.nov-saved-place.(identifier)
8740 0a 20 20 22 52 65 74 72 69 65 76 65 20 73 61 76 65 64 20 70 6c 61 63 65 20 66 6f 72 20 49 44 45 ..."Retrieve.saved.place.for.IDE
8760 4e 54 49 46 49 45 52 20 69 6e 20 60 6e 6f 76 2d 73 61 76 65 64 2d 70 6c 61 63 65 2d 66 69 6c 65 NTIFIER.in.`nov-saved-place-file
8780 27 2e 22 0a 20 20 28 63 64 72 20 28 61 73 73 71 20 69 64 65 6e 74 69 66 69 65 72 20 28 6e 6f 76 '."...(cdr.(assq.identifier.(nov
87a0 2d 73 61 76 65 64 2d 70 6c 61 63 65 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 73 61 -saved-places))))..(defun.nov-sa
87c0 76 65 2d 70 6c 61 63 65 20 28 69 64 65 6e 74 69 66 69 65 72 20 69 6e 64 65 78 20 70 6f 69 6e 74 ve-place.(identifier.index.point
87e0 29 0a 20 20 22 53 61 76 65 20 70 6c 61 63 65 20 61 73 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 )..."Save.place.as.identified.by
8800 20 49 44 45 4e 54 49 46 49 45 52 2c 20 49 4e 44 45 58 20 61 6e 64 20 50 4f 49 4e 54 2e 0a 53 61 .IDENTIFIER,.INDEX.and.POINT..Sa
8820 76 69 6e 67 20 69 73 20 6f 6e 6c 79 20 64 6f 6e 65 20 69 66 20 60 6e 6f 76 2d 73 61 76 65 2d 70 ving.is.only.done.if.`nov-save-p
8840 6c 61 63 65 2d 66 69 6c 65 27 20 69 73 20 73 65 74 2e 22 0a 20 20 28 77 68 65 6e 20 6e 6f 76 2d lace-file'.is.set."...(when.nov-
8860 73 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 70 6c 61 63 save-place-file.....(let*.((plac
8880 65 20 60 28 2c 69 64 65 6e 74 69 66 69 65 72 20 28 69 6e 64 65 78 20 2e 20 2c 69 6e 64 65 78 29 e.`(,identifier.(index...,index)
88a0 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 ................................
88c0 20 28 70 6f 69 6e 74 20 2e 20 2c 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 .(point...,point)))............(
88e0 70 6c 61 63 65 73 20 28 63 6f 6e 73 20 70 6c 61 63 65 20 28 61 73 73 71 2d 64 65 6c 65 74 65 2d places.(cons.place.(assq-delete-
8900 61 6c 6c 20 69 64 65 6e 74 69 66 69 65 72 20 28 6e 6f 76 2d 73 61 76 65 64 2d 70 6c 61 63 65 73 all.identifier.(nov-saved-places
8920 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 2d 6c 65 76 65 6c 0a 20 20 20 20 ))))............print-level.....
8940 20 20 20 20 20 20 20 70 72 69 6e 74 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 28 77 69 74 68 .......print-length).......(with
8960 2d 74 65 6d 70 2d 66 69 6c 65 20 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 0a 20 -temp-file.nov-save-place-file..
8980 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 .......(insert.(prin1-to-string.
89a0 70 6c 61 63 65 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 69 6e 64 65 78 2d places))))))..(defun.nov--index-
89c0 76 61 6c 69 64 2d 70 20 28 64 6f 63 75 6d 65 6e 74 73 20 69 6e 64 65 78 29 0a 20 20 28 61 6e 64 valid-p.(documents.index)...(and
89e0 20 28 69 6e 74 65 67 65 72 70 20 69 6e 64 65 78 29 0a 20 20 20 20 20 20 20 28 3e 3d 20 69 6e 64 .(integerp.index)........(>=.ind
8a00 65 78 20 30 29 0a 20 20 20 20 20 20 20 28 3c 20 69 6e 64 65 78 20 28 6c 65 6e 67 74 68 20 64 6f ex.0)........(<.index.(length.do
8a20 63 75 6d 65 6e 74 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d cuments))))..(defun.nov-history-
8a40 62 61 63 6b 20 28 29 0a 20 20 22 47 6f 20 62 61 63 6b 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 back.()..."Go.back.in.the.histor
8a60 79 20 74 6f 20 74 68 65 20 6c 61 73 74 20 76 69 73 69 74 65 64 20 64 6f 63 75 6d 65 6e 74 2e 22 y.to.the.last.visited.document."
8a80 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6f 72 20 6e 6f 76 2d 68 69 73 74 6f ...(interactive)...(or.nov-histo
8aa0 72 79 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 54 68 69 73 20 69 73 20 74 68 ry.......(user-error."This.is.th
8ac0 65 20 66 69 72 73 74 20 64 6f 63 75 6d 65 6e 74 20 79 6f 75 20 6c 6f 6f 6b 65 64 20 61 74 22 29 e.first.document.you.looked.at")
8ae0 29 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 28 63 6f 6e 73 )...(let.((history-forward.(cons
8b00 20 28 6c 69 73 74 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 70 6f 69 6e .(list.nov-documents-index.(poin
8b20 74 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 t)).............................
8b40 20 20 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 29 29 29 0a 20 20 20 20 28 73 ...nov-history-forward))).....(s
8b60 65 71 2d 6c 65 74 20 28 69 6e 64 65 78 20 6f 70 6f 69 6e 74 29 20 28 63 61 72 20 6e 6f 76 2d 68 eq-let.(index.opoint).(car.nov-h
8b80 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 68 69 73 74 6f 72 79 20 istory).......(setq.nov-history.
8ba0 28 63 64 72 20 6e 6f 76 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 67 6f (cdr.nov-history)).......(nov-go
8bc0 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 69 6e 64 65 78 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e to-document.index).......(setq.n
8be0 6f 76 2d 68 69 73 74 6f 72 79 20 28 63 64 72 20 6e 6f 76 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 ov-history.(cdr.nov-history))...
8c00 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 68 69 ....(setq.nov-history-forward.hi
8c20 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 story-forward).......(goto-char.
8c40 6f 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 28 72 65 63 65 6e 74 65 72 20 28 31 2d 20 28 6d 61 78 opoint).......(recenter.(1-.(max
8c60 20 31 20 73 63 72 6f 6c 6c 2d 6d 61 72 67 69 6e 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e .1.scroll-margin))))))..(defun.n
8c80 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 28 29 0a 20 20 22 47 6f 20 66 6f 72 77 ov-history-forward.()..."Go.forw
8ca0 61 72 64 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 79 20 6f 66 20 76 69 73 69 74 65 64 20 64 6f ard.in.the.history.of.visited.do
8cc0 63 75 6d 65 6e 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6f 72 20 cuments."...(interactive)...(or.
8ce0 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 28 75 73 65 72 2d nov-history-forward.......(user-
8d00 65 72 72 6f 72 20 22 54 68 69 73 20 69 73 20 74 68 65 20 6c 61 73 74 20 64 6f 63 75 6d 65 6e 74 error."This.is.the.last.document
8d20 20 79 6f 75 20 6c 6f 6f 6b 65 64 20 61 74 22 29 29 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 6f .you.looked.at"))...(let.((histo
8d40 72 79 2d 66 6f 72 77 61 72 64 20 28 63 64 72 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 ry-forward.(cdr.nov-history-forw
8d60 61 72 64 29 29 29 0a 20 20 20 20 28 73 65 71 2d 6c 65 74 20 28 69 6e 64 65 78 20 6f 70 6f 69 6e ard))).....(seq-let.(index.opoin
8d80 74 29 20 28 63 61 72 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 29 0a 20 20 20 t).(car.nov-history-forward)....
8da0 20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 69 6e 64 65 78 29 0a 20 20 20 ...(nov-goto-document.index)....
8dc0 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 68 69 73 ...(setq.nov-history-forward.his
8de0 74 6f 72 79 2d 66 6f 72 77 61 72 64 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 6f tory-forward).......(goto-char.o
8e00 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 28 72 65 63 65 6e 74 65 72 20 28 31 2d 20 28 6d 61 78 20 point).......(recenter.(1-.(max.
8e20 31 20 73 63 72 6f 6c 6c 2d 6d 61 72 67 69 6e 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 1.scroll-margin))))))..(defun.no
8e40 76 2d 2d 69 6e 69 74 69 61 6c 69 7a 65 2d 74 65 6d 70 2d 64 69 72 20 28 70 61 74 68 29 0a 20 20 v--initialize-temp-dir.(path)...
8e60 28 77 68 65 6e 20 28 6e 6f 74 20 70 61 74 68 29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 45 50 55 (when.(not.path).....(error."EPU
8e80 42 20 6d 75 73 74 20 62 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 66 69 6c 65 22 29 B.must.be.associated.with.file")
8ea0 29 0a 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6e 6f 76 2d 75 6e 7a 69 70 2d 70 72 6f 67 72 61 6d )...(when.(not.nov-unzip-program
8ec0 29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 75 6e 7a 69 70 20 65 78 65 63 75 74 61 62 6c 65 20 6e ).....(error."unzip.executable.n
8ee0 6f 74 20 66 6f 75 6e 64 2c 20 63 75 73 74 6f 6d 69 7a 65 20 60 6e 6f 76 2d 75 6e 7a 69 70 2d 70 ot.found,.customize.`nov-unzip-p
8f00 72 6f 67 72 61 6d 27 22 29 29 0a 20 20 28 73 65 74 71 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 rogram'"))...(setq.nov-work-dir.
8f20 28 6d 61 6b 65 2d 74 65 6d 70 2d 66 69 6c 65 20 22 6e 6f 76 2d 22 20 74 20 22 2e 65 70 75 62 22 (make-temp-file."nov-".t.".epub"
8f40 29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 69 74 2d 63 6f 64 65 20 28 6e 6f 76 2d 75 6e 7a 69 70 ))...(let.((exit-code.(nov-unzip
8f60 2d 65 70 75 62 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 70 61 74 68 29 29 29 0a 20 20 20 20 28 -epub.nov-work-dir.path))).....(
8f80 77 68 65 6e 20 28 6e 6f 74 20 28 69 6e 74 65 67 65 72 70 20 65 78 69 74 2d 63 6f 64 65 29 29 0a when.(not.(integerp.exit-code)).
8fa0 20 20 20 20 20 20 28 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 29 0a 20 20 20 20 20 20 28 65 72 72 6f ......(nov-clean-up).......(erro
8fc0 72 20 22 45 50 55 42 20 65 78 74 72 61 63 74 69 6f 6e 20 61 62 6f 72 74 65 64 20 62 79 20 73 69 r."EPUB.extraction.aborted.by.si
8fe0 67 6e 61 6c 20 25 73 22 20 65 78 69 74 2d 63 6f 64 65 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 gnal.%s".exit-code)).....(when.(
9000 3e 20 65 78 69 74 2d 63 6f 64 65 20 31 29 20 3b 20 65 78 69 74 20 63 6f 64 65 20 31 20 69 73 20 >.exit-code.1).;.exit.code.1.is.
9020 6d 6f 73 74 20 6c 69 6b 65 6c 79 20 61 20 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 20 28 6e 6f 76 most.likely.a.warning.......(nov
9040 2d 63 6c 65 61 6e 2d 75 70 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 50 55 42 20 65 78 -clean-up).......(error."EPUB.ex
9060 74 72 61 63 74 69 6f 6e 20 66 61 69 6c 65 64 20 77 69 74 68 20 65 78 69 74 20 63 6f 64 65 20 25 traction.failed.with.exit.code.%
9080 64 20 28 73 65 65 20 2a 6e 6f 76 20 75 6e 7a 69 70 2a 20 62 75 66 66 65 72 29 22 0a 20 20 20 20 d.(see.*nov.unzip*.buffer)".....
90a0 20 20 20 20 20 20 20 20 20 65 78 69 74 2d 63 6f 64 65 29 29 29 0a 20 20 28 77 68 65 6e 20 28 6e .........exit-code)))...(when.(n
90c0 6f 74 20 28 6e 6f 76 2d 65 70 75 62 2d 76 61 6c 69 64 2d 70 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 ot.(nov-epub-valid-p.nov-work-di
90e0 72 29 29 0a 20 20 20 20 28 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 29 0a 20 20 20 20 28 65 72 72 6f r)).....(nov-clean-up).....(erro
9100 72 20 22 49 6e 76 61 6c 69 64 20 45 50 55 42 20 66 69 6c 65 22 29 29 29 0a 0a 28 64 65 66 75 6e r."Invalid.EPUB.file")))..(defun
9120 20 6e 6f 76 2d 6f 70 65 6e 2d 64 69 72 65 63 74 6f 72 79 20 28 64 69 72 29 0a 20 20 22 4f 70 65 .nov-open-directory.(dir)..."Ope
9140 6e 20 45 50 55 42 20 62 75 66 66 65 72 20 75 73 69 6e 67 20 44 49 52 20 61 73 20 64 69 72 65 63 n.EPUB.buffer.using.DIR.as.direc
9160 74 6f 72 79 20 6f 66 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 tory.of.the.document."...(intera
9180 63 74 69 76 65 20 22 44 45 50 55 42 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 72 65 61 64 3a 20 ctive."DEPUB.directory.to.read:.
91a0 22 29 0a 20 20 28 6c 65 74 20 28 28 62 75 66 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 ")...(let.((buf.(generate-new-bu
91c0 66 66 65 72 20 28 66 6f 72 6d 61 74 20 22 25 73 3c 6e 6f 76 3e 22 20 64 69 72 29 29 29 29 0a 20 ffer.(format."%s<nov>".dir))))..
91e0 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 ...(with-current-buffer.buf.....
9200 20 20 28 73 65 74 71 20 6e 6f 76 2d 69 6e 69 74 69 61 6c 69 7a 65 2d 77 6f 72 6b 2d 64 69 72 2d ..(setq.nov-initialize-work-dir-
9220 70 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 72 65 6d 6f 76 65 2d 77 6f p.nil).......(setq.nov-remove-wo
9240 72 6b 2d 64 69 72 2d 6f 6e 2d 65 78 69 74 2d 70 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 74 rk-dir-on-exit-p.nil).......(set
9260 71 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 64 69 72 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 6d q.nov-work-dir.dir).......(nov-m
9280 6f 64 65 29 29 0a 20 20 20 20 28 73 77 69 74 63 68 2d 74 6f 2d 62 75 66 66 65 72 20 62 75 66 29 ode)).....(switch-to-buffer.buf)
92a0 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 69 6e 65 2d 64 65 72 69 76 ))..;;;###autoload.(define-deriv
92c0 65 64 2d 6d 6f 64 65 20 6e 6f 76 2d 6d 6f 64 65 20 73 70 65 63 69 61 6c 2d 6d 6f 64 65 20 22 45 ed-mode.nov-mode.special-mode."E
92e0 50 55 42 22 0a 20 20 22 4d 61 6a 6f 72 20 6d 6f 64 65 20 66 6f 72 20 72 65 61 64 69 6e 67 20 45 PUB"..."Major.mode.for.reading.E
9300 50 55 42 20 64 6f 63 75 6d 65 6e 74 73 22 0a 20 20 28 77 68 65 6e 20 6e 6f 76 2d 72 65 6d 6f 76 PUB.documents"...(when.nov-remov
9320 65 2d 77 6f 72 6b 2d 64 69 72 2d 6f 6e 2d 65 78 69 74 2d 70 0a 20 20 20 20 28 61 64 64 2d 68 6f e-work-dir-on-exit-p.....(add-ho
9340 6f 6b 20 27 6b 69 6c 6c 2d 62 75 66 66 65 72 2d 68 6f 6f 6b 20 27 6e 6f 76 2d 63 6c 65 61 6e 2d ok.'kill-buffer-hook.'nov-clean-
9360 75 70 20 6e 69 6c 20 74 29 0a 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 6b 69 6c 6c 2d 65 6d up.nil.t).....(add-hook.'kill-em
9380 61 63 73 2d 68 6f 6f 6b 20 27 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 2d 61 6c 6c 29 0a 20 20 20 20 acs-hook.'nov-clean-up-all).....
93a0 28 61 64 64 2d 68 6f 6f 6b 20 27 63 68 61 6e 67 65 2d 6d 61 6a 6f 72 2d 6d 6f 64 65 2d 68 6f 6f (add-hook.'change-major-mode-hoo
93c0 6b 20 27 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 20 6e 69 6c 20 74 29 29 0a 0a 20 20 28 77 68 65 6e k.'nov-clean-up.nil.t))....(when
93e0 20 6e 6f 76 2d 69 6e 69 74 69 61 6c 69 7a 65 2d 77 6f 72 6b 2d 64 69 72 2d 70 0a 20 20 20 20 28 .nov-initialize-work-dir-p.....(
9400 6e 6f 76 2d 2d 69 6e 69 74 69 61 6c 69 7a 65 2d 74 65 6d 70 2d 64 69 72 20 62 75 66 66 65 72 2d nov--initialize-temp-dir.buffer-
9420 66 69 6c 65 2d 6e 61 6d 65 29 29 0a 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 file-name))....(let*.((content.(
9440 6e 6f 76 2d 73 6c 75 72 70 20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 66 69 6c 65 6e 61 6d nov-slurp.(nov-container-filenam
9460 65 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f e.nov-work-dir).t))..........(co
9480 6e 74 65 6e 74 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 63 ntent-file-name.(nov-container-c
94a0 6f 6e 74 65 6e 74 2d 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 ontent-filename.content)).......
94c0 20 20 20 28 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 ...(content-file.(nov-make-path.
94e0 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 nov-work-dir.content-file-name))
9500 0a 20 20 20 20 20 20 20 20 20 28 77 6f 72 6b 2d 64 69 72 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 ..........(work-dir.(file-name-d
9520 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 irectory.content-file)).........
9540 20 28 63 6f 6e 74 65 6e 74 20 28 6e 6f 76 2d 73 6c 75 72 70 20 63 6f 6e 74 65 6e 74 2d 66 69 6c .(content.(nov-slurp.content-fil
9560 65 20 74 29 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c e.t))).....(setq.nov-content-fil
9580 65 20 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 65 70 e.content-file).....(setq.nov-ep
95a0 75 62 2d 76 65 72 73 69 6f 6e 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 76 65 72 73 69 6f 6e 20 ub-version.(nov-content-version.
95c0 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 content)).....(setq.nov-metadata
95e0 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 6d 65 74 61 64 61 74 61 20 63 6f 6e 74 65 6e 74 29 29 .(nov-content-metadata.content))
9600 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 28 61 70 70 6c 79 20 .....(setq.nov-documents.(apply.
9620 27 76 65 63 74 6f 72 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 73 20 77 6f 72 6b 2d 'vector.(nov-content-files.work-
9640 64 69 72 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63 dir.content))).....(setq.nov-doc
9660 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 30 29 29 0a 20 20 28 73 65 74 71 20 62 75 66 66 65 72 2d uments-index.0))...(setq.buffer-
9680 75 6e 64 6f 2d 6c 69 73 74 20 74 29 0a 20 20 28 73 65 74 71 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 undo-list.t)...(setq.nov-file-na
96a0 6d 65 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 20 3b 20 6b 65 70 74 20 66 6f me.(buffer-file-name)).;.kept.fo
96c0 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 72 65 61 73 6f 6e 73 0a 20 20 28 73 65 74 71 2d r.compatibility.reasons...(setq-
96e0 6c 6f 63 61 6c 20 62 6f 6f 6b 6d 61 72 6b 2d 6d 61 6b 65 2d 72 65 63 6f 72 64 2d 66 75 6e 63 74 local.bookmark-make-record-funct
9700 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d ion...............'nov-bookmark-
9720 6d 61 6b 65 2d 72 65 63 6f 72 64 29 0a 20 20 28 6c 65 74 20 28 28 70 6c 61 63 65 20 28 6e 6f 76 make-record)...(let.((place.(nov
9740 2d 73 61 76 65 64 2d 70 6c 61 63 65 20 28 63 64 72 20 28 61 73 73 71 20 27 69 64 65 6e 74 69 66 -saved-place.(cdr.(assq.'identif
9760 69 65 72 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 70 6c ier.nov-metadata))))).....(if.pl
9780 61 63 65 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 64 65 78 20 28 63 64 72 20 28 61 ace.........(let.((index.(cdr.(a
97a0 73 73 71 20 27 69 6e 64 65 78 20 70 6c 61 63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ssq.'index.place))).............
97c0 20 20 28 70 6f 69 6e 74 20 28 63 64 72 20 28 61 73 73 71 20 27 70 6f 69 6e 74 20 70 6c 61 63 65 ..(point.(cdr.(assq.'point.place
97e0 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 76 2d 2d 69 6e 64 65 78 2d 76 ))))...........(if.(nov--index-v
9800 61 6c 69 64 2d 70 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 69 6e 64 65 78 29 0a 20 20 20 20 alid-p.nov-documents.index).....
9820 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........(progn................
9840 20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 69 6e 64 65 78 .(setq.nov-documents-index.index
9860 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f ).................(nov-render-do
9880 63 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 cument).................(goto-ch
98a0 61 72 20 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 76 2d 77 61 72 6e ar.point)).............(nov-warn
98c0 20 22 43 6f 75 6c 64 6e 27 74 20 72 65 73 74 6f 72 65 20 6c 61 73 74 20 70 6f 73 69 74 69 6f 6e ."Couldn't.restore.last.position
98e0 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f 63 75 6d ").............(nov-render-docum
9900 65 6e 74 29 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f 63 75 6d 65 6e ent))).......(nov-render-documen
9920 74 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 72 65 63 65 6e 74 66 20 69 6e 74 65 72 6f 70 0a 0a 28 64 t))))....;;;.recentf.interop..(d
9940 65 66 75 6e 20 6e 6f 76 2d 61 64 64 2d 74 6f 2d 72 65 63 65 6e 74 66 20 28 29 0a 20 20 22 41 64 efun.nov-add-to-recentf.()..."Ad
9960 64 20 72 65 61 6c 20 70 61 74 68 20 74 6f 20 72 65 63 65 6e 74 66 20 6c 69 73 74 20 69 66 20 70 d.real.path.to.recentf.list.if.p
9980 6f 73 73 69 62 6c 65 2e 22 0a 20 20 28 77 68 65 6e 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 0a ossible."...(when.nov-file-name.
99a0 20 20 20 20 28 72 65 63 65 6e 74 66 2d 61 64 64 2d 66 69 6c 65 20 6e 6f 76 2d 66 69 6c 65 2d 6e ....(recentf-add-file.nov-file-n
99c0 61 6d 65 29 29 29 0a 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 6e 6f 76 2d 6d 6f 64 65 2d 68 6f 6f 6b ame)))..(add-hook.'nov-mode-hook
99e0 20 27 6e 6f 76 2d 61 64 64 2d 74 6f 2d 72 65 63 65 6e 74 66 29 0a 28 61 64 64 2d 68 6f 6f 6b 20 .'nov-add-to-recentf).(add-hook.
9a00 27 6e 6f 76 2d 6d 6f 64 65 2d 68 6f 6f 6b 20 27 68 61 63 6b 2d 64 69 72 2d 6c 6f 63 61 6c 2d 76 'nov-mode-hook.'hack-dir-local-v
9a20 61 72 69 61 62 6c 65 73 2d 6e 6f 6e 2d 66 69 6c 65 2d 62 75 66 66 65 72 29 0a 0a 0c 0a 28 64 65 ariables-non-file-buffer)....(de
9a40 66 75 6e 20 6e 6f 76 2d 2d 66 69 6e 64 2d 66 69 6c 65 20 28 66 69 6c 65 20 69 6e 64 65 78 20 70 fun.nov--find-file.(file.index.p
9a60 6f 69 6e 74 29 0a 20 20 22 4f 70 65 6e 20 46 49 4c 45 20 69 6e 20 6e 6f 76 2d 6d 6f 64 65 20 61 oint)..."Open.FILE.in.nov-mode.a
9a80 6e 64 20 67 6f 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 49 4e 44 45 58 20 61 6e 64 nd.go.to.the.specified.INDEX.and
9aa0 20 50 4f 53 49 54 49 4f 4e 2e 0a 49 66 20 46 49 4c 45 20 69 73 20 6e 69 6c 2c 20 74 68 65 20 63 .POSITION..If.FILE.is.nil,.the.c
9ac0 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 73 20 75 73 65 64 2e 22 0a 20 20 28 77 68 65 6e 20 urrent.buffer.is.used."...(when.
9ae0 66 69 6c 65 0a 20 20 20 20 28 66 69 6e 64 2d 66 69 6c 65 20 66 69 6c 65 29 29 0a 20 20 28 75 6e file.....(find-file.file))...(un
9b00 6c 65 73 73 20 28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6e 6f 76 2d 6d 6f 64 65 29 0a 20 less.(eq.major-mode.'nov-mode)..
9b20 20 20 20 28 6e 6f 76 2d 6d 6f 64 65 29 29 0a 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 6e 6f 76 ...(nov-mode))...(when.(not.(nov
9b40 2d 2d 69 6e 64 65 78 2d 76 61 6c 69 64 2d 70 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 69 6e --index-valid-p.nov-documents.in
9b60 64 65 78 29 29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 64 6f 63 75 6d 65 dex)).....(error."Invalid.docume
9b80 6e 74 73 20 69 6e 64 65 78 22 29 29 0a 20 20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e nts.index"))...(setq.nov-documen
9ba0 74 73 2d 69 6e 64 65 78 20 69 6e 64 65 78 29 0a 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f ts-index.index)...(nov-render-do
9bc0 63 75 6d 65 6e 74 29 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 6f 69 6e 74 29 29 0a 0a 3b 3b cument)...(goto-char.point))..;;
9be0 20 42 6f 6f 6b 6d 61 72 6b 20 69 6e 74 65 72 6f 70 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 62 6f 6f .Bookmark.interop.(defun.nov-boo
9c00 6b 6d 61 72 6b 2d 6d 61 6b 65 2d 72 65 63 6f 72 64 20 20 28 29 0a 20 20 22 43 72 65 61 74 65 20 kmark-make-record..()..."Create.
9c20 61 20 62 6f 6f 6b 6d 61 72 6b 20 45 50 55 42 20 72 65 63 6f 72 64 2e 22 0a 20 20 28 63 6f 6e 73 a.bookmark.EPUB.record."...(cons
9c40 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 60 28 28 66 69 6c 65 6e 61 .(buffer-name).........`((filena
9c60 6d 65 20 2e 20 2c 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 me...,nov-file-name)...........(
9c80 69 6e 64 65 78 20 2e 20 2c 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 0a 20 20 index...,nov-documents-index)...
9ca0 20 20 20 20 20 20 20 20 28 70 6f 73 69 74 69 6f 6e 20 2e 20 2c 28 70 6f 69 6e 74 29 29 0a 20 20 ........(position...,(point))...
9cc0 20 20 20 20 20 20 20 20 28 68 61 6e 64 6c 65 72 20 2e 20 6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d ........(handler...nov-bookmark-
9ce0 6a 75 6d 70 2d 68 61 6e 64 6c 65 72 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 jump-handler))))..;;;###autoload
9d00 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d 6a 75 6d 70 2d 68 61 6e 64 6c 65 .(defun.nov-bookmark-jump-handle
9d20 72 20 28 62 6d 6b 29 0a 20 20 22 54 68 65 20 62 6f 6f 6b 6d 61 72 6b 20 68 61 6e 64 6c 65 72 2d r.(bmk)..."The.bookmark.handler-
9d40 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 20 62 6f 6f 6b 6d 61 72 6b 20 function.interface.for.bookmark.
9d60 42 4d 4b 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 60 6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d 6d 61 6b BMK...See.also.`nov-bookmark-mak
9d80 65 2d 72 65 63 6f 72 64 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 69 6c 65 20 28 62 6f 6f 6b 6d e-record'."...(let.((file.(bookm
9da0 61 72 6b 2d 70 72 6f 70 2d 67 65 74 20 62 6d 6b 20 27 66 69 6c 65 6e 61 6d 65 29 29 0a 20 20 20 ark-prop-get.bmk.'filename))....
9dc0 20 20 20 20 20 28 69 6e 64 65 78 20 28 62 6f 6f 6b 6d 61 72 6b 2d 70 72 6f 70 2d 67 65 74 20 62 .....(index.(bookmark-prop-get.b
9de0 6d 6b 20 27 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 28 70 6f 73 69 74 69 6f 6e 20 28 62 mk.'index)).........(position.(b
9e00 6f 6f 6b 6d 61 72 6b 2d 70 72 6f 70 2d 67 65 74 20 62 6d 6b 20 27 70 6f 73 69 74 69 6f 6e 29 29 ookmark-prop-get.bmk.'position))
9e20 29 0a 20 20 20 20 28 6e 6f 76 2d 2d 66 69 6e 64 2d 66 69 6c 65 20 66 69 6c 65 20 69 6e 64 65 78 ).....(nov--find-file.file.index
9e40 20 70 6f 73 69 74 69 6f 6e 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 4f 72 67 20 69 6e 74 65 72 6f 70 0a .position)))....;;;.Org.interop.
9e60 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6f 72 67 2d 6c .;;;###autoload.(defun.nov-org-l
9e80 69 6e 6b 2d 66 6f 6c 6c 6f 77 20 28 70 61 74 68 29 0a 20 20 22 46 6f 6c 6c 6f 77 20 6e 6f 76 3a ink-follow.(path)..."Follow.nov:
9ea0 20 6c 69 6e 6b 20 64 65 73 69 67 6e 61 74 65 64 20 62 79 20 50 41 54 48 2e 22 0a 20 20 28 69 66 .link.designated.by.PATH."...(if
9ec0 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e 5c 5c 28 2e 2a 5c 5c 29 3a 3a 5c 5c 28 5b 30 .(string-match."^\\(.*\\)::\\([0
9ee0 2d 39 5d 2b 5c 5c 29 3a 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 24 22 20 70 61 74 68 29 0a 20 20 20 -9]+\\):\\([0-9]+\\)$".path)....
9f00 20 20 20 28 6c 65 74 20 28 28 66 69 6c 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 70 ...(let.((file.(match-string.1.p
9f20 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 20 28 73 74 72 69 6e 67 ath)).............(index.(string
9f40 2d 74 6f 2d 6e 75 6d 62 65 72 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 20 70 61 74 68 29 -to-number.(match-string.2.path)
9f60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 20 28 73 74 72 69 6e 67 2d 74 6f )).............(point.(string-to
9f80 2d 6e 75 6d 62 65 72 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 33 20 70 61 74 68 29 29 29 29 -number.(match-string.3.path))))
9fa0 0a 20 20 20 20 20 20 20 20 28 6e 6f 76 2d 2d 66 69 6e 64 2d 66 69 6c 65 20 66 69 6c 65 20 69 6e .........(nov--find-file.file.in
9fc0 64 65 78 20 70 6f 69 6e 74 29 29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 dex.point)).....(error."Invalid.
9fe0 6e 6f 76 2e 65 6c 20 6c 69 6e 6b 22 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a nov.el.link")))..;;;###autoload.
a000 28 64 65 66 75 6e 20 6e 6f 76 2d 6f 72 67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 20 28 29 0a 20 20 22 (defun.nov-org-link-store.()..."
a020 53 74 6f 72 65 20 63 75 72 72 65 6e 74 20 45 50 55 42 20 6c 6f 63 61 74 69 6f 6e 20 61 73 20 6e Store.current.EPUB.location.as.n
a040 6f 76 3a 20 6c 69 6e 6b 2e 22 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 65 71 20 6d 61 6a 6f ov:.link."...(when.(and.(eq.majo
a060 72 2d 6d 6f 64 65 20 27 6e 6f 76 2d 6d 6f 64 65 29 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 29 r-mode.'nov-mode).nov-file-name)
a080 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 69 6e 74 65 67 65 72 70 20 6e 6f 76 2d 64 6f .....(when.(not.(integerp.nov-do
a0a0 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d cuments-index)).......(setq.nov-
a0c0 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 30 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6f documents-index.0)).....(let.((o
a0e0 72 67 2d 73 74 6f 72 65 2d 70 72 6f 70 73 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 rg-store-props-function.........
a100 20 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 2d ...(if.(fboundp.'org-link-store-
a120 70 72 6f 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 72 67 2d 6c 69 6e 6b 2d props)................'org-link-
a140 73 74 6f 72 65 2d 70 72 6f 70 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 72 67 2d 73 74 store-props..............'org-st
a160 6f 72 65 2d 6c 69 6e 6b 2d 70 72 6f 70 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 6b ore-link-props))...........(link
a180 20 28 66 6f 72 6d 61 74 20 22 6e 6f 76 3a 25 73 3a 3a 25 64 3a 25 64 22 0a 20 20 20 20 20 20 20 .(format."nov:%s::%d:%d"........
a1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20 .................nov-file-name..
a1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d 64 6f 63 75 6d .......................nov-docum
a1e0 65 6e 74 73 2d 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ents-index......................
a200 20 20 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 65 73 63 72 69 70 74 ...(point)))...........(descript
a220 69 6f 6e 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 27 74 69 74 6c 65 20 6e 6f 76 2d 6d 65 ion.(or.(alist-get.'title.nov-me
a240 74 61 64 61 74 61 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 tadata).........................
a260 20 20 20 28 66 6f 72 6d 61 74 20 22 45 50 55 42 20 66 69 6c 65 20 61 74 20 25 73 22 20 6e 6f 76 ...(format."EPUB.file.at.%s".nov
a280 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 6f 72 -file-name)))).......(funcall.or
a2a0 67 2d 73 74 6f 72 65 2d 70 72 6f 70 73 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 g-store-props-function..........
a2c0 20 20 20 20 20 20 3a 74 79 70 65 20 22 6e 6f 76 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......:type."nov"...............
a2e0 20 3a 6c 69 6e 6b 20 6c 69 6e 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 75 74 68 .:link.link................:auth
a300 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 27 63 72 65 61 74 6f 72 20 6e 6f 76 2d 6d 65 74 61 64 or.(alist-get.'creator.nov-metad
a320 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6c 61 6e 67 75 61 67 65 20 28 61 ata)................:language.(a
a340 6c 69 73 74 2d 67 65 74 20 27 6c 61 6e 67 75 61 67 65 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 list-get.'language.nov-metadata)
a360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 69 6e 69 74 69 61 6c 20 28 61 6c 69 73 74 2d ................:initial.(alist-
a380 67 65 74 20 27 64 65 73 63 72 69 70 74 69 6f 6e 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 0a 20 get.'description.nov-metadata)..
a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 75 62 6c 69 73 68 65 72 20 28 61 6c 69 73 74 2d ..............:publisher.(alist-
a3c0 67 65 74 20 27 70 75 62 6c 69 73 68 65 72 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 0a 20 20 20 get.'publisher.nov-metadata)....
a3e0 20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 64 65 73 63 72 69 70 ............:description.descrip
a400 74 69 6f 6e 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 77 69 74 68 2d 65 tion))))..;;;###autoload.(with-e
a420 76 61 6c 2d 61 66 74 65 72 2d 6c 6f 61 64 20 27 6f 72 67 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 val-after-load.'org...(cond....(
a440 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 6c 69 6e 6b 2d 73 65 74 2d 70 61 72 61 6d 65 74 65 72 (fboundp.'org-link-set-parameter
a460 73 29 0a 20 20 20 20 28 6f 72 67 2d 6c 69 6e 6b 2d 73 65 74 2d 70 61 72 61 6d 65 74 65 72 73 0a s).....(org-link-set-parameters.
a480 20 20 20 20 20 22 6e 6f 76 22 0a 20 20 20 20 20 3a 66 6f 6c 6c 6f 77 20 27 6e 6f 76 2d 6f 72 67 ....."nov"......:follow.'nov-org
a4a0 2d 6c 69 6e 6b 2d 66 6f 6c 6c 6f 77 0a 20 20 20 20 20 3a 73 74 6f 72 65 20 27 6e 6f 76 2d 6f 72 -link-follow......:store.'nov-or
a4c0 67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 29 29 0a 20 20 20 28 28 66 62 6f 75 6e 64 70 20 27 6f 72 67 g-link-store))....((fboundp.'org
a4e0 2d 61 64 64 2d 6c 69 6e 6b 2d 74 79 70 65 29 0a 20 20 20 20 28 6f 72 67 2d 61 64 64 2d 6c 69 6e -add-link-type).....(org-add-lin
a500 6b 2d 74 79 70 65 20 22 6e 6f 76 22 20 27 6e 6f 76 2d 6f 72 67 2d 6c 69 6e 6b 2d 66 6f 6c 6c 6f k-type."nov".'nov-org-link-follo
a520 77 29 0a 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 6f 72 67 2d 73 74 6f 72 65 2d 6c 69 6e 6b w).....(add-hook.'org-store-link
a540 2d 66 75 6e 63 74 69 6f 6e 73 20 27 6e 6f 76 2d 6f 72 67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 29 29 -functions.'nov-org-link-store))
a560 29 29 0a 0a 0c 0a 3b 3b 3b 20 49 6d 65 6e 75 20 69 6e 74 65 72 6f 70 0a 0a 28 64 65 66 75 6e 20 ))....;;;.Imenu.interop..(defun.
a580 6e 6f 76 2d 69 6d 65 6e 75 2d 67 6f 74 6f 2d 66 75 6e 63 74 69 6f 6e 20 28 5f 6e 61 6d 65 20 66 nov-imenu-goto-function.(_name.f
a5a0 69 6c 65 6e 61 6d 65 20 74 61 72 67 65 74 29 0a 20 20 22 56 69 73 69 74 20 69 6d 65 6e 75 20 69 ilename.target)..."Visit.imenu.i
a5c0 74 65 6d 20 75 73 69 6e 67 20 46 49 4c 45 4e 41 4d 45 20 61 6e 64 20 54 41 52 47 45 54 2e 22 0a tem.using.FILENAME.and.TARGET.".
a5e0 20 20 3b 3b 20 4d 61 6b 65 20 73 75 72 65 20 66 69 6c 65 20 69 73 20 76 69 73 69 74 65 64 20 72 ..;;.Make.sure.file.is.visited.r
a600 65 6c 61 74 69 76 65 20 74 6f 20 74 6f 63 20 66 69 6c 65 2e 0a 20 20 28 6c 65 74 20 28 28 6e 6f elative.to.toc.file....(let.((no
a620 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 30 29 29 0a 20 20 20 20 28 6e 6f 76 2d 76 v-documents-index.0)).....(nov-v
a640 69 73 69 74 2d 72 65 6c 61 74 69 76 65 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 74 61 72 67 isit-relative-file.filename.targ
a660 65 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 69 6d 65 6e 75 2d 63 72 65 61 74 65 2d 69 et)))..(defun.nov-imenu-create-i
a680 6e 64 65 78 20 28 29 0a 20 20 22 47 65 6e 65 72 61 74 65 20 49 6d 65 6e 75 20 69 6e 64 65 78 2e ndex.()..."Generate.Imenu.index.
a6a0 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 63 2d 70 61 74 68 20 28 63 64 72 20 28 61 72 65 66 20 "...(let*.((toc-path.(cdr.(aref.
a6c0 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 63 78 nov-documents.0)))..........(ncx
a6e0 70 20 28 76 65 72 73 69 6f 6e 3c 20 6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e 20 22 33 2e p.(version<.nov-epub-version."3.
a700 30 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 6f 63 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 0"))..........(toc.(with-temp-bu
a720 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 6e 63 78 70 0a 20 20 ffer.................(if.ncxp...
a740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 6e 6f 76 2d 6e ..................(insert.(nov-n
a760 63 78 2d 74 6f 2d 68 74 6d 6c 20 74 6f 63 2d 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 cx-to-html.toc-path))...........
a780 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 74 6f ........(insert-file-contents.to
a7a0 63 2d 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 62 78 6d 6c c-path)).................(libxml
a7c0 2d 70 61 72 73 65 2d 68 74 6d 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 -parse-html-region.(point-min).(
a7e0 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 point-max))))).....(mapcar......
a800 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 68 72 65 (lambda.(node)........(let.((hre
a820 66 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64 65 20 27 68 72 65 66 29 29 0a 20 20 20 20 20 20 20 f.(dom-attr.node.'href))........
a840 20 20 20 20 20 20 28 6c 61 62 65 6c 20 28 64 6f 6d 2d 74 65 78 74 20 6e 6f 64 65 29 29 29 0a 20 ......(label.(dom-text.node)))..
a860 20 20 20 20 20 20 20 20 28 73 65 71 2d 6c 65 74 20 28 66 69 6c 65 6e 61 6d 65 20 74 61 72 67 65 ........(seq-let.(filename.targe
a880 74 29 20 28 6e 6f 76 2d 75 72 6c 2d 66 69 6c 65 6e 61 6d 65 2d 61 6e 64 2d 74 61 72 67 65 74 20 t).(nov-url-filename-and-target.
a8a0 68 72 65 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6c 61 62 65 6c 20 66 69 6c href)............(list.label.fil
a8c0 65 6e 61 6d 65 20 27 6e 6f 76 2d 69 6d 65 6e 75 2d 67 6f 74 6f 2d 66 75 6e 63 74 69 6f 6e 20 74 ename.'nov-imenu-goto-function.t
a8e0 61 72 67 65 74 29 29 29 29 0a 20 20 20 20 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 arget))))......(esxml-query-all.
a900 22 61 22 20 74 6f 63 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 69 6d 65 6e 75 2d 73 65 "a".toc))))..(defun.nov-imenu-se
a920 74 75 70 20 28 29 0a 20 20 28 73 65 74 71 20 69 6d 65 6e 75 2d 63 72 65 61 74 65 2d 69 6e 64 65 tup.()...(setq.imenu-create-inde
a940 78 2d 66 75 6e 63 74 69 6f 6e 20 27 6e 6f 76 2d 69 6d 65 6e 75 2d 63 72 65 61 74 65 2d 69 6e 64 x-function.'nov-imenu-create-ind
a960 65 78 29 29 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 6e 6f 76 2d 6d 6f 64 65 2d 68 6f 6f 6b 20 27 6e ex)).(add-hook.'nov-mode-hook.'n
a980 6f 76 2d 69 6d 65 6e 75 2d 73 65 74 75 70 29 0a 0a 0c 0a 3b 3b 3b 20 6d 75 6c 74 69 2d 69 73 65 ov-imenu-setup)....;;;.multi-ise
a9a0 61 72 63 68 20 69 6e 74 65 72 6f 70 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6d 69 73 65 61 72 63 arch.interop..(defun.nov-misearc
a9c0 68 2d 6e 65 78 74 2d 62 75 66 66 65 72 20 28 5f 62 75 66 66 65 72 20 77 72 61 70 29 0a 20 20 28 h-next-buffer.(_buffer.wrap)...(
a9e0 69 66 20 69 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 if.isearch-forward.......(cond..
aa00 20 20 20 20 20 20 28 28 3c 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 31 ......((<.nov-documents-index.(1
aa20 2d 20 28 6c 65 6e 67 74 68 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 -.(length.nov-documents)))......
aa40 20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 31 2b 20 6e 6f 76 2d 64 6f ...(nov-goto-document.(1+.nov-do
aa60 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 29 0a 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 cuments-index)).........(current
aa80 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 28 77 72 61 70 0a 20 20 20 20 20 20 20 20 28 -buffer))........(wrap.........(
aaa0 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 30 29 0a 20 20 20 20 20 20 20 20 6e 69 6c nov-goto-document.0).........nil
aac0 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 3e 20 6e 6f 76 2d 64 6f 63 75 6d 65 )).....(cond......((>.nov-docume
aae0 6e 74 73 2d 69 6e 64 65 78 20 30 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 nts-index.0).......(nov-goto-doc
ab00 75 6d 65 6e 74 20 28 31 2d 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 29 0a ument.(1-.nov-documents-index)).
ab20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 28 77 72 ......(current-buffer))......(wr
ab40 61 70 0a 20 20 20 20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 31 2d 20 ap.......(nov-goto-document.(1-.
ab60 28 6c 65 6e 67 74 68 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 6e (length.nov-documents))).......n
ab80 69 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 6d 69 73 65 61 72 63 68 2d 73 65 74 75 il))))..(defun.nov-misearch-setu
aba0 70 20 28 29 0a 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 6d 75 6c 74 69 2d 69 73 65 61 72 63 68 p.()...(setq-local.multi-isearch
abc0 2d 6e 65 78 74 2d 62 75 66 66 65 72 2d 66 75 6e 63 74 69 6f 6e 20 23 27 6e 6f 76 2d 6d 69 73 65 -next-buffer-function.#'nov-mise
abe0 61 72 63 68 2d 6e 65 78 74 2d 62 75 66 66 65 72 29 29 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 6e 6f arch-next-buffer)).(add-hook.'no
ac00 76 2d 6d 6f 64 65 2d 68 6f 6f 6b 20 23 27 6e 6f 76 2d 6d 69 73 65 61 72 63 68 2d 73 65 74 75 70 v-mode-hook.#'nov-misearch-setup
ac20 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 6e 6f 76 29 0a 3b 3b 3b 20 6e 6f 76 2e 65 6c 20 65 6e 64 )..(provide.'nov).;;;.nov.el.end
ac40 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 00 s.here..........................
ac60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
baa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................