summaryrefslogtreecommitdiff
path: root/.localrepo/esxml-20250421.1632.tar
blob: 0def3f5f375244ede6c179e0fac20eab6c208168 (plain)
ofshex dumpascii
0000 65 73 78 6d 6c 2d 32 30 32 35 30 34 32 31 2e 31 36 33 32 2f 00 00 00 00 00 00 00 00 00 00 00 00 esxml-20250421.1632/............
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 32 31 33 34 00 20 35 00 00 00 0000000.00000000000.012134..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 65 73 78 6d 6c 2d 32 30 32 35 30 34 32 31 2e 31 36 33 32 2f 65 73 78 6d 6c 2d 70 6b 67 2e 65 6c esxml-20250421.1632/esxml-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 36 33 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 36 34 00 20 30 00 00 00 0000630.00000000000.014364..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 65 73 78 6d 6c 22 20 22 32 30 32 35 30 34 32 31 2e 31 36 33 32 22 0a 20 20 22 4c age."esxml"."20250421.1632"..."L
0460 69 62 72 61 72 79 20 66 6f 72 20 77 6f 72 6b 69 6e 67 20 77 69 74 68 20 78 6d 6c 20 76 69 61 20 ibrary.for.working.with.xml.via.
0480 65 73 78 6d 6c 20 61 6e 64 20 73 78 6d 6c 2e 22 0a 20 20 27 28 28 65 6d 61 63 73 20 20 22 32 34 esxml.and.sxml."...'((emacs.."24
04a0 2e 31 22 29 0a 20 20 20 20 28 63 6c 2d 6c 69 62 20 22 30 2e 35 22 29 29 0a 20 20 3a 75 72 6c 20 .1").....(cl-lib."0.5"))...:url.
04c0 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 6c 69 37 31 33 2f 65 73 78 6d "https://github.com/tali713/esxm
04e0 6c 22 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 61 66 66 61 64 61 31 34 33 66 65 64 37 65 32 64 61 30 l"...:commit."affada143fed7e2da0
0500 38 66 32 62 33 64 39 32 37 61 30 32 37 66 32 36 61 64 34 61 38 66 22 0a 20 20 3a 72 65 76 64 65 8f2b3d927a027f26ad4a8f"...:revde
0520 73 63 20 22 61 66 66 61 64 61 31 34 33 66 65 64 22 0a 20 20 3a 6b 65 79 77 6f 72 64 73 20 27 28 sc."affada143fed"...:keywords.'(
0540 22 74 6f 6f 6c 73 22 20 22 6c 69 73 70 22 20 22 63 6f 6d 6d 22 29 0a 20 20 3a 61 75 74 68 6f 72 "tools"."lisp"."comm")...:author
0560 73 20 27 28 28 22 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 22 20 2e 20 22 s.'(("Vanya.Izaksonas-Smith"..."
0580 69 7a 61 6b 30 30 30 32 61 74 75 6d 6e 64 6f 74 65 64 75 22 29 29 29 0a 00 00 00 00 00 00 00 00 izak0002atumndotedu"))).........
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 65 73 78 6d 6c 2d 32 30 32 35 30 34 32 31 2e 31 36 33 32 2f 65 73 78 6d 6c 2d 71 75 65 72 79 2e esxml-20250421.1632/esxml-query.
0620 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 el..............................
0640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
0680 30 30 37 31 30 33 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 35 37 00 20 30 00 00 00 0071035.00000000000.014757..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 65 73 78 6d 6c 2d 71 75 65 72 79 2e 65 6c 20 2d 2d 2d 20 73 65 6c 65 63 74 20 65 73 ;;;.esxml-query.el.---.select.es
0820 78 6d 6c 20 6e 6f 64 65 73 20 6a 51 75 65 72 79 2d 73 74 79 6c 65 20 20 2d 2a 2d 20 6c 65 78 69 xml.nodes.jQuery-style..-*-.lexi
0840 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 cal-binding:.t;.-*-..;;.Copyrigh
0860 74 20 28 43 29 20 32 30 31 37 20 56 61 73 69 6c 69 6a 20 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e t.(C).2017.Vasilij.Schneidermann
0880 20 3c 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64 65 3e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 56 .<mail@vasilij.de>..;;.Author:.V
08a0 61 73 69 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 asilij.Schneidermann.<mail@vasil
08c0 69 6a 2e 64 65 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 56 61 73 69 6c 69 6a 20 53 63 ij.de>.;;.Maintainer:.Vasilij.Sc
08e0 68 6e 65 69 64 65 72 6d 61 6e 6e 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 64 61 74 61 2c 20 6c hneidermann.;;.Keywords:.data,.l
0900 69 73 70 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 63 6c 2d 6c 69 isp.;;.Package-Requires:.((cl-li
0920 62 20 22 30 2e 31 22 29 29 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 b."0.1")).;;.;;.This.program.is.
0940 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 free.software;.you.can.redistrib
0960 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 0a 3b 3b 20 6d 6f 64 69 66 79 20 69 74 20 75 6e 64 65 72 ute.it.and/or.;;.modify.it.under
0980 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 .the.terms.of.the.GNU.General.Pu
09a0 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 0a 3b 3b 20 70 75 62 6c 69 73 68 65 64 20 62 79 20 blic.License.as.;;.published.by.
09c0 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 the.Free.Software.Foundation,.ei
09e0 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 0a 3b 3b 20 4c 69 63 65 6e 73 65 ther.version.3.of.the.;;.License
0a00 2c 20 6f 72 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 ,.or.(at.your.option).any.later.
0a20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 version...;;.This.program.is.dis
0a40 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c tributed.in.the.hope.that.it.wil
0a60 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 l.be.useful,.;;.but.WITHOUT.ANY.
0a80 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 WARRANTY;.without.even.the.impli
0aa0 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 ed.warranty.of.;;.MERCHANTABILIT
0ac0 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 Y.or.FITNESS.FOR.A.PARTICULAR.PU
0ae0 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 RPOSE...See.the.;;.GNU.General.P
0b00 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a ublic.License.for.more.details..
0b20 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 .;;.You.should.have.received.a.c
0b40 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 opy.of.the.GNU.General.Public.Li
0b60 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d cense.;;.along.with.this.program
0b80 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f ...If.not,.see.<http://www.gnu.o
0ba0 72 67 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 rg/licenses/>...;;;.Commentary:.
0bc0 0a 3b 3b 20 54 72 61 64 69 74 69 6f 6e 61 6c 6c 79 20 70 65 6f 70 6c 65 20 70 69 63 6b 20 6f 6e .;;.Traditionally.people.pick.on
0be0 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 77 68 65 6e 20 e.of.the.following.options.when.
0c00 66 61 63 65 64 0a 3b 3b 20 77 69 74 68 20 74 68 65 20 74 61 73 6b 20 6f 66 20 65 78 74 72 61 63 faced.;;.with.the.task.of.extrac
0c20 74 69 6e 67 20 64 61 74 61 20 66 72 6f 6d 20 58 4d 4c 20 69 6e 20 45 6d 61 63 73 20 4c 69 73 70 ting.data.from.XML.in.Emacs.Lisp
0c40 3a 0a 3b 3b 0a 3b 3b 20 2d 20 55 73 69 6e 67 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 :.;;.;;.-.Using.regular.expressi
0c60 6f 6e 73 20 6f 6e 20 74 68 65 20 75 6e 70 61 72 73 65 64 20 64 6f 63 75 6d 65 6e 74 0a 3b 3b 20 ons.on.the.unparsed.document.;;.
0c80 2d 20 4d 61 6e 75 61 6c 20 74 72 65 65 20 74 72 61 76 65 72 73 61 6c 20 77 69 74 68 20 60 61 73 -.Manual.tree.traversal.with.`as
0ca0 73 6f 63 27 2c 20 60 63 61 72 27 20 61 6e 64 20 60 63 64 72 27 0a 3b 3b 0a 3b 3b 20 42 72 6f 77 soc',.`car'.and.`cdr'.;;.;;.Brow
0cc0 73 65 72 73 20 66 61 63 65 64 20 61 20 73 69 6d 69 6c 61 72 20 70 72 6f 62 6c 65 6d 20 75 6e 74 sers.faced.a.similar.problem.unt
0ce0 69 6c 20 6a 51 75 65 72 79 20 68 61 70 70 65 6e 65 64 2c 20 73 68 6f 72 74 6c 79 0a 3b 3b 20 61 il.jQuery.happened,.shortly.;;.a
0d00 66 74 65 72 77 61 72 64 73 20 74 68 65 79 20 73 74 61 72 74 65 64 20 70 72 6f 76 69 64 69 6e 67 fterwards.they.started.providing
0d20 20 74 68 65 20 60 6e 6f 64 65 2e 71 75 65 72 79 53 65 6c 65 63 74 6f 72 27 20 61 6e 64 0a 3b 3b .the.`node.querySelector'.and.;;
0d40 20 60 6e 6f 64 65 2e 71 75 65 72 79 53 65 6c 65 63 74 6f 72 41 6c 6c 27 20 41 50 49 20 66 6f 72 .`node.querySelectorAll'.API.for
0d60 20 72 65 74 72 69 65 76 69 6e 67 20 6f 6e 65 20 6f 72 20 61 6c 6c 20 6e 6f 64 65 73 0a 3b 3b 20 .retrieving.one.or.all.nodes.;;.
0d80 6d 61 74 63 68 69 6e 67 20 61 20 67 69 76 65 6e 20 43 53 53 20 73 65 6c 65 63 74 6f 72 2e 20 20 matching.a.given.CSS.selector...
0da0 54 68 69 73 20 63 6f 64 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 73 61 6d 65 20 41 50 This.code.implements.the.same.AP
0dc0 49 0a 3b 3b 20 77 69 74 68 20 74 68 65 20 60 65 73 78 6d 6c 2d 71 75 65 72 79 27 20 61 6e 64 20 I.;;.with.the.`esxml-query'.and.
0de0 60 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 27 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 `esxml-query-all'.functions...Th
0e00 65 0a 3b 3b 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62 6c 65 20 73 75 6d 6d 61 72 69 7a 65 73 20 e.;;.following.table.summarizes.
0e20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6d 6f 64 69 66 69 65 72 the.currently.supported.modifier
0e40 73 20 61 6e 64 0a 3b 3b 20 63 6f 6d 62 69 6e 61 74 6f 72 73 3a 0a 3b 3b 0a 3b 3b 20 7c 20 4e 61 s.and.;;.combinators:.;;.;;.|.Na
0e60 6d 65 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 me..............................
0e80 20 7c 20 53 75 70 70 6f 72 74 65 64 3f 20 7c 20 53 79 6e 74 61 78 20 20 20 20 20 20 7c 0a 3b 3b .|.Supported?.|.Syntax......|.;;
0ea0 20 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .|------------------------------
0ec0 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ------+------------+------------
0ee0 2d 7c 0a 3b 3b 20 7c 20 4e 61 6d 65 73 70 61 63 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -|.;;.|.Namespaces..............
0f00 20 20 20 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 7c 62 61 ...........|.No.........|.foo|ba
0f20 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 43 6f 6d 6d 61 73 20 20 20 20 20 20 20 20 20 20 20 20 20 r.....|.;;.|.Commas.............
0f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 ................|.Yes........|.f
0f60 6f 6f 2c 20 62 61 72 20 20 20 20 7c 0a 3b 3b 20 7c 20 44 65 73 63 65 6e 64 61 6e 74 20 63 6f 6d oo,.bar....|.;;.|.Descendant.com
0f80 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 binator..............|.Yes......
0fa0 20 20 7c 20 66 6f 6f 20 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 43 68 69 6c 64 20 63 6f 6d ..|.foo.bar.....|.;;.|.Child.com
0fc0 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 binator...................|.Yes.
0fe0 20 20 20 20 20 20 20 7c 20 66 6f 6f 3e 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 41 64 6a 61 .......|.foo>bar.....|.;;.|.Adja
1000 63 65 6e 74 20 73 69 62 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 7c cent.sibling.combinator........|
1020 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 2b 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c .No.........|.foo+bar.....|.;;.|
1040 20 47 65 6e 65 72 61 6c 20 73 69 62 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 20 .General.sibling.combinator.....
1060 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 7e 62 61 72 20 20 20 20 20 7c ....|.No.........|.foo~bar.....|
1080 0a 3b 3b 20 7c 20 55 6e 69 76 65 72 73 61 6c 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 .;;.|.Universal.selector........
10a0 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 2a 20 20 20 20 20 20 20 .........|.Yes........|.*.......
10c0 20 20 20 20 7c 0a 3b 3b 20 7c 20 54 79 70 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 ....|.;;.|.Type.selector........
10e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 74 61 67 ..............|.Yes........|.tag
1100 20 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 49 44 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 .........|.;;.|.ID.selector.....
1120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 ...................|.Yes........
1140 7c 20 23 66 6f 6f 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 43 6c 61 73 73 20 73 65 6c 65 63 |.#foo........|.;;.|.Class.selec
1160 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 tor.....................|.Yes...
1180 20 20 20 20 20 7c 20 2e 66 6f 6f 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 41 74 74 72 69 62 .....|..foo........|.;;.|.Attrib
11a0 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 ute.selector.................|.Y
11c0 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 5d 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 45 es........|.[foo].......|.;;.|.E
11e0 78 61 63 74 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 xact.match.attribute.selector...
1200 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 3d 62 61 72 5d 20 20 20 7c 0a 3b ..|.Yes........|.[foo=bar]...|.;
1220 3b 20 7c 20 50 72 65 66 69 78 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 ;.|.Prefix.match.attribute.selec
1240 74 6f 72 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 5e 3d 62 61 72 5d tor....|.Yes........|.[foo^=bar]
1260 20 20 7c 0a 3b 3b 20 7c 20 53 75 66 66 69 78 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 ..|.;;.|.Suffix.match.attribute.
1280 73 65 6c 65 63 74 6f 72 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 24 selector....|.Yes........|.[foo$
12a0 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 53 75 62 73 74 72 69 6e 67 20 6d 61 74 63 68 20 61 74 =bar]..|.;;.|.Substring.match.at
12c0 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 tribute.selector.|.Yes........|.
12e0 5b 66 6f 6f 2a 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 49 6e 63 6c 75 64 65 20 6d 61 74 63 68 [foo*=bar]..|.;;.|.Include.match
1300 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 7c 20 59 65 73 20 20 20 20 20 .attribute.selector...|.Yes.....
1320 20 20 20 7c 20 5b 66 6f 6f 7e 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 44 61 73 68 20 6d 61 74 ...|.[foo~=bar]..|.;;.|.Dash.mat
1340 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 7c 20 59 65 73 ch.attribute.selector......|.Yes
1360 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 7c 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 41 74 74 ........|.[foo|=bar]..|.;;.|.Att
1380 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 6d 6f 64 69 66 69 65 72 73 20 20 20 20 20 20 20 ribute.selector.modifiers.......
13a0 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 3d 62 61 72 20 69 5d 20 7c 0a 3b 3b 20 |.No.........|.[foo=bar.i].|.;;.
13c0 7c 20 50 73 65 75 64 6f 20 65 6c 65 6d 65 6e 74 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.Pseudo.elements...............
13e0 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 3a 3a 66 6f 6f 20 20 20 20 20 20 20 .....|.No.........|.::foo.......
1400 7c 0a 3b 3b 20 7c 20 50 73 65 75 64 6f 20 63 6c 61 73 73 65 73 20 20 20 20 20 20 20 20 20 20 20 |.;;.|.Pseudo.classes...........
1420 20 20 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 3a 66 6f 6f 20 20 20 ..........|.No.........|.:foo...
1440 20 20 20 20 20 7c 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 .....|..;;;.Code:..(require.'cl-
1460 6c 69 62 29 0a 0a 0c 0a 3b 3b 3b 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 70 61 72 73 69 6e 67 lib)....;;;.CSS.selector.parsing
1480 0a 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 73 65 6c 65 63 ..;;.https://www.w3.org/TR/selec
14a0 74 6f 72 73 2f 23 77 33 63 73 65 6c 67 72 61 6d 6d 61 72 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 tors/#w3cselgrammar.;;.https://w
14c0 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 73 65 6c 65 63 74 6f 72 73 34 2f 23 67 72 61 6d 6d 61 72 ww.w3.org/TR/selectors4/#grammar
14e0 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 32 30 30 33 2f 57 .;;.https://www.w3.org/TR/2003/W
1500 44 2d 63 73 73 33 2d 73 79 6e 74 61 78 2d 32 30 30 33 30 38 31 33 2f 23 64 65 74 61 69 6c 65 64 D-css3-syntax-20030813/#detailed
1520 2d 67 72 61 6d 6d 61 72 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 -grammar.;;.https://www.w3.org/T
1540 52 2f 32 30 30 33 2f 57 44 2d 63 73 73 33 2d 73 79 6e 74 61 78 2d 32 30 30 33 30 38 31 33 2f 23 R/2003/WD-css3-syntax-20030813/#
1560 74 6f 6b 65 6e 69 7a 61 74 69 6f 6e 0a 0a 3b 3b 20 79 6f 75 20 6d 69 67 68 74 20 62 65 20 77 6f tokenization..;;.you.might.be.wo
1580 6e 64 65 72 69 6e 67 20 77 68 79 20 49 27 6d 20 75 73 69 6e 67 20 62 6f 74 68 20 6c 65 76 65 6c ndering.why.I'm.using.both.level
15a0 20 33 20 61 6e 64 20 34 20 73 74 61 6e 64 61 72 64 73 2c 0a 3b 3b 20 77 65 6c 6c 2c 20 74 68 65 .3.and.4.standards,.;;.well,.the
15c0 20 6c 65 76 65 6c 20 33 20 6f 6e 65 20 68 61 73 20 61 20 62 75 67 67 79 20 6c 65 78 65 72 20 73 .level.3.one.has.a.buggy.lexer.s
15e0 65 63 74 69 6f 6e 20 77 68 65 72 65 61 73 20 6c 65 76 65 6c 20 34 0a 3b 3b 20 6f 6d 69 74 73 20 ection.whereas.level.4.;;.omits.
1600 63 72 75 63 69 61 6c 20 70 61 72 73 65 72 20 64 65 66 69 6e 69 74 69 6f 6e 73 2c 20 73 6f 20 62 crucial.parser.definitions,.so.b
1620 6f 74 68 20 68 61 76 65 20 74 6f 20 62 65 20 75 73 65 64 2e 2e 2e 0a 0a 3b 3b 20 54 4f 44 4f 3a oth.have.to.be.used.....;;.TODO:
1640 20 72 65 6e 61 6d 65 20 74 6f 20 64 6f 6d 2d 71 75 65 72 79 2d 73 65 6c 65 63 74 6f 72 2f 2d 71 .rename.to.dom-query-selector/-q
1660 75 65 72 79 2d 73 65 6c 65 63 74 6f 72 2d 61 6c 6c 0a 3b 3b 20 54 4f 44 4f 3a 20 70 72 65 66 69 uery-selector-all.;;.TODO:.prefi
1680 78 20 65 76 65 72 79 74 68 69 6e 67 20 77 69 74 68 20 64 6f 6d 2d 0a 0a 3b 3b 20 54 4f 44 4f 3a x.everything.with.dom-..;;.TODO:
16a0 20 73 75 70 70 6f 72 74 20 3a 6e 6f 74 0a 28 64 65 66 76 61 72 20 65 73 78 6d 6c 2d 2d 63 73 73 .support.:not.(defvar.esxml--css
16c0 2d 73 65 6c 65 63 74 6f 72 2d 74 6f 6b 65 6e 2d 6d 61 74 63 68 65 72 73 0a 20 20 28 6c 65 74 2a -selector-token-matchers...(let*
16e0 20 28 28 68 20 22 5b 30 2d 39 61 2d 66 5d 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6c 20 22 5c .((h."[0-9a-f]")..........(nl."\
1700 6e 5c 5c 7c 5c 72 5c 6e 5c 5c 7c 5c 72 5c 5c 7c 5c 66 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e n\\|\r\n\\|\r\\|\f")..........(n
1720 6f 6e 61 73 63 69 69 20 22 5b 5c 32 30 30 2d 5c 55 30 30 31 30 66 66 66 66 5d 22 29 0a 20 20 20 onascii."[\200-\U0010ffff]")....
1740 20 20 20 20 20 20 28 75 6e 69 63 6f 64 65 20 28 66 6f 72 6d 61 74 20 22 5c 5c 5c 5c 25 73 5c 5c ......(unicode.(format."\\\\%s\\
1760 7b 31 2c 36 5c 5c 7d 5b 20 5c 74 5c 72 5c 6e 5c 66 5d 3f 22 20 68 29 29 0a 20 20 20 20 20 20 20 {1,6\\}[.\t\r\n\f]?".h))........
1780 20 20 28 65 73 63 61 70 65 20 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 7c ..(escape.(format."\\(?:%s\\)\\|
17a0 5c 5c 5c 5c 5b 20 2d 7e 5c 32 30 30 2d 5c 55 30 30 31 30 66 66 66 66 5d 22 20 75 6e 69 63 6f 64 \\\\[.-~\200-\U0010ffff]".unicod
17c0 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6d 73 74 61 72 74 20 28 66 6f 72 6d 61 74 20 22 5b e))..........(nmstart.(format."[
17e0 61 2d 7a 5f 5d 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 22 20 6e 6f 6e 61 73 63 69 a-z_]\\|%s\\|\\(?:%s\\)".nonasci
1800 69 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6d 63 68 61 72 20 28 66 6f 72 i.escape))..........(nmchar.(for
1820 6d 61 74 20 22 5b 61 2d 7a 30 2d 39 5f 2d 5d 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c mat."[a-z0-9_-]\\|%s\\|\\(?:%s\\
1840 29 22 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e )".nonascii.escape))..........(n
1860 75 6d 20 22 5b 30 2d 39 5d 2b 5c 5c 7c 5b 30 2d 39 5d 2a 5c 5c 2e 5b 30 2d 39 5d 2b 22 29 0a 20 um."[0-9]+\\|[0-9]*\\.[0-9]+")..
1880 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 31 20 28 66 6f 72 6d 61 74 20 22 5c 22 5c 5c 28 3f ........(string1.(format."\"\\(?
18a0 3a 5b 5c 74 20 21 23 24 25 25 26 28 2d 7e 5d 5c 5c 7c 5c 5c 5c 5c 5c 5c 28 3f 3a 25 73 5c 5c 29 :[\t.!#$%%&(-~]\\|\\\\\\(?:%s\\)
18c0 5c 5c 7c 27 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 29 2a 5c 22 22 20 6e 6c \\|'\\|%s\\|\\(?:%s\\)\\)*\"".nl
18e0 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 .nonascii.escape))..........(str
1900 69 6e 67 32 20 28 66 6f 72 6d 61 74 20 22 27 5c 5c 28 3f 3a 5b 5c 74 20 21 23 24 25 25 26 28 2d ing2.(format."'\\(?:[\t.!#$%%&(-
1920 7e 5d 5c 5c 7c 5c 5c 5c 5c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 5c 22 5c 5c 7c 25 73 5c 5c 7c ~]\\|\\\\\\(?:%s\\)\\|\"\\|%s\\|
1940 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 29 2a 27 22 20 6e 6c 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 \\(?:%s\\)\\)*'".nl.nonascii.esc
1960 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 64 65 6e 74 20 28 66 6f 72 6d 61 74 20 22 5b ape))..........(ident.(format."[
1980 2d 5d 3f 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 28 3f 3a 25 73 5c 5c 29 2a 22 20 6e 6d 73 74 61 72 -]?\\(?:%s\\)\\(?:%s\\)*".nmstar
19a0 74 20 6e 6d 63 68 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 69 74 20 28 66 6f 72 6d 61 t.nmchar))..........(unit.(forma
19c0 74 20 22 5b 2d 5d 3f 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 28 3f 3a 25 73 5c 5c 29 2b 22 20 6e 6d t."[-]?\\(?:%s\\)\\(?:%s\\)+".nm
19e0 73 74 61 72 74 20 6e 6d 63 68 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 66 start.nmchar))..........(name.(f
1a00 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 29 2b 22 20 6e 6d 63 68 61 72 29 29 29 0a 0a 20 ormat."\\(?:%s\\)+".nmchar)))...
1a20 20 20 20 60 28 28 77 68 69 74 65 73 70 61 63 65 20 2e 20 22 5b 20 5c 74 5c 72 5c 6e 5c 66 5d 2b ...`((whitespace..."[.\t\r\n\f]+
1a40 22 29 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 5c 5c 28 ").......(string...,(format."\\(
1a60 3f 3a 25 73 5c 5c 7c 25 73 5c 5c 29 22 20 73 74 72 69 6e 67 31 20 73 74 72 69 6e 67 32 29 29 0a ?:%s\\|%s\\)".string1.string2)).
1a80 20 20 20 20 20 20 28 69 64 65 6e 74 20 2e 20 2c 69 64 65 6e 74 29 0a 20 20 20 20 20 20 28 68 61 ......(ident...,ident).......(ha
1aa0 73 68 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 23 25 73 22 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 sh...,(format."#%s".name))......
1ac0 20 28 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 25 73 28 22 20 69 64 65 6e .(function...,(format."%s(".iden
1ae0 74 29 29 0a 20 20 20 20 20 20 28 6e 75 6d 62 65 72 20 2e 20 2c 6e 75 6d 29 0a 20 20 20 20 20 20 t)).......(number...,num).......
1b00 28 64 69 6d 65 6e 73 69 6f 6e 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c (dimension...,(format."\\(?:%s\\
1b20 29 25 73 22 20 6e 75 6d 20 75 6e 69 74 29 29 0a 20 20 20 20 20 20 28 70 72 65 66 69 78 2d 6d 61 )%s".num.unit)).......(prefix-ma
1b40 74 63 68 20 2e 20 22 5c 5c 5e 3d 22 29 0a 20 20 20 20 20 20 28 73 75 66 66 69 78 2d 6d 61 74 63 tch..."\\^=").......(suffix-matc
1b60 68 20 2e 20 22 5c 5c 24 3d 22 29 0a 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 h..."\\$=").......(substring-mat
1b80 63 68 20 2e 20 22 5c 5c 2a 3d 22 29 0a 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d 61 74 63 ch..."\\*=").......(include-matc
1ba0 68 20 2e 20 22 7e 3d 22 29 0a 20 20 20 20 20 20 28 64 61 73 68 2d 6d 61 74 63 68 20 2e 20 22 7c h..."~=").......(dash-match..."|
1bc0 3d 22 29 0a 20 20 20 20 20 20 28 63 6f 6d 6d 61 20 2e 20 22 2c 22 29 0a 20 20 20 20 20 20 28 67 =").......(comma...",").......(g
1be0 74 20 2e 20 22 3e 22 29 0a 20 20 20 20 20 20 28 70 6c 75 73 20 2e 20 22 5c 5c 2b 22 29 0a 20 20 t...">").......(plus..."\\+")...
1c00 20 20 20 20 28 6d 69 6e 75 73 20 2e 20 22 2d 22 29 0a 20 20 20 20 20 20 28 74 69 6c 64 65 20 2e ....(minus..."-").......(tilde..
1c20 20 22 7e 22 29 0a 20 20 20 20 20 20 28 61 73 74 65 72 69 73 6b 20 2e 20 22 5c 5c 2a 22 29 0a 20 ."~").......(asterisk..."\\*")..
1c40 20 20 20 20 20 28 70 65 72 69 6f 64 20 2e 20 22 5c 5c 2e 22 29 0a 20 20 20 20 20 20 28 65 71 75 .....(period..."\\.").......(equ
1c60 61 6c 73 20 2e 20 22 3d 22 29 0a 20 20 20 20 20 20 28 63 6f 6c 6f 6e 20 2e 20 22 3a 22 29 0a 20 als..."=").......(colon...":")..
1c80 20 20 20 20 20 28 6c 62 72 61 63 6b 65 74 20 2e 20 22 5c 5c 5b 22 29 0a 20 20 20 20 20 20 28 72 .....(lbracket..."\\[").......(r
1ca0 62 72 61 63 6b 65 74 20 2e 20 22 5c 5c 5d 22 29 0a 20 20 20 20 20 20 28 72 70 61 72 65 6e 20 2e bracket..."\\]").......(rparen..
1cc0 20 22 29 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 69 7a 65 .")"))))..(defun.esxml--tokenize
1ce0 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 73 74 72 69 6e 67 29 0a 20 20 28 6c 65 74 20 28 72 -css-selector.(string)...(let.(r
1d00 65 73 75 6c 74 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 20 esult).....(with-temp-buffer....
1d20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 ...(insert.string).......(goto-c
1d40 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e har.(point-min)).......(while.(n
1d60 6f 74 20 28 65 6f 62 70 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 78 2d 6c 65 ot.(eobp)).........(let.((max-le
1d80 6e 67 74 68 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 65 73 74 29 0a 20 ngth.0)...............longest)..
1da0 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6d 61 74 63 68 65 72 20 65 73 78 6d 6c 2d .........(dolist.(matcher.esxml-
1dc0 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 74 6f 6b 65 6e 2d 6d 61 74 63 68 65 72 73 29 0a 20 20 -css-selector-token-matchers)...
1de0 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 64 20 28 63 61 72 20 6d 61 74 63 68 65 72 ..........(let.((id.(car.matcher
1e00 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 20 28 63 64 72 20 6d 61 ))...................(re.(cdr.ma
1e20 74 63 68 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f tcher)))...............(when.(lo
1e40 6f 6b 69 6e 67 2d 61 74 20 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 oking-at.re).................(le
1e60 74 2a 20 28 28 74 6f 6b 65 6e 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 29 0a 20 20 20 t*.((token.(match-string.0))....
1e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 28 6c 65 6e ....................(length.(len
1ea0 67 74 68 20 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 gth.token)))...................(
1ec0 77 68 65 6e 20 28 3e 20 6c 65 6e 67 74 68 20 6d 61 78 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 when.(>.length.max-length)......
1ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 78 2d 6c 65 6e 67 74 68 20 ...............(setq.max-length.
1f00 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 length).....................(set
1f20 71 20 6c 6f 6e 67 65 73 74 20 28 63 6f 6e 73 20 69 64 20 74 6f 6b 65 6e 29 29 29 29 29 29 29 0a q.longest.(cons.id.token))))))).
1f40 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6c 6f 6e 67 65 73 74 29 0a 20 20 ..........(when.(not.longest)...
1f60 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 74 6f 6b 65 6e 20 ..........(error."Invalid.token.
1f80 64 65 74 65 63 74 65 64 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 detected:.%s"...................
1fa0 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e .(buffer-substring.(point).(poin
1fc0 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6c 6f 6e 67 65 73 t-max))))...........(push.longes
1fe0 74 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 t.result)...........(goto-char.(
2000 2b 20 28 70 6f 69 6e 74 29 20 6d 61 78 2d 6c 65 6e 67 74 68 29 29 29 29 29 0a 20 20 20 20 28 6e +.(point).max-length))))).....(n
2020 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 0a 0a 3b 3b 20 74 68 65 20 61 6c 74 65 72 6e reverse.result)))..;;.the.altern
2040 61 74 69 76 65 20 69 73 20 63 72 65 61 74 69 6e 67 20 61 20 6d 75 74 61 62 6c 65 20 6f 62 6a 65 ative.is.creating.a.mutable.obje
2060 63 74 20 77 69 74 68 20 70 65 65 6b 2f 6e 65 78 74 20 6d 65 74 68 6f 64 73 0a 3b 3b 20 61 6e 64 ct.with.peek/next.methods.;;.and
2080 20 70 61 73 73 69 6e 67 20 69 74 20 61 72 6f 75 6e 64 2c 20 73 6f 20 49 20 63 68 6f 73 65 20 74 .passing.it.around,.so.I.chose.t
20a0 68 65 20 6f 6e 65 20 72 65 71 75 69 72 69 6e 67 20 6c 65 73 73 20 74 79 70 69 6e 67 2c 20 61 0a he.one.requiring.less.typing,.a.
20c0 3b 3b 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 62 6f 75 6e 64 20 76 61 72 69 61 62 6c 65 20 3a 3c ;;.dynamically.bound.variable.:<
20e0 0a 0a 28 64 65 66 76 61 72 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 0a 0a ..(defvar.esxml--token-stream)..
2100 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 3a 6e 6f 74 0a 3b 3b 20 54 4f 44 4f 3a 20 70 ;;.TODO:.support.:not.;;.TODO:.p
2120 61 72 73 65 20 61 72 69 74 68 6d 65 74 69 63 73 20 77 69 74 68 20 73 68 75 6e 74 69 6e 67 20 79 arse.arithmetics.with.shunting.y
2140 61 72 64 20 6f 72 20 70 72 61 74 74 0a 3b 3b 20 4e 4f 54 45 3a 20 68 74 74 70 3a 2f 2f 6a 6f 75 ard.or.pratt.;;.NOTE:.http://jou
2160 72 6e 61 6c 2e 73 74 75 66 66 77 69 74 68 73 74 75 66 66 2e 63 6f 6d 2f 32 30 31 31 2f 30 33 2f rnal.stuffwithstuff.com/2011/03/
2180 31 39 2f 70 72 61 74 74 2d 70 61 72 73 65 72 73 2d 65 78 70 72 65 73 73 69 6f 6e 2d 70 61 72 73 19/pratt-parsers-expression-pars
21a0 69 6e 67 2d 6d 61 64 65 2d 65 61 73 79 2f 0a 3b 3b 20 63 73 73 2d 73 65 6c 65 63 74 6f 72 3a 0a ing-made-easy/.;;.css-selector:.
21c0 3b 3b 20 20 20 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 3b 0a 3b 3b 20 63 73 73 2d 73 ;;...css-selector-list;.;;.css-s
21e0 65 6c 65 63 74 6f 72 2d 6c 69 73 74 3a 0a 3b 3b 20 20 20 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 elector-list:.;;...complex-css-s
2200 65 6c 65 63 74 6f 72 20 5b 20 63 6f 6d 6d 61 20 77 68 69 74 65 73 70 61 63 65 2a 20 63 6f 6d 70 elector.[.comma.whitespace*.comp
2220 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 5d 2a 3b 0a 3b 3b 20 63 6f 6d 70 6c 65 78 2d lex-css-selector.]*;.;;.complex-
2240 63 73 73 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d css-selector:.;;...compound-css-
2260 73 65 6c 65 63 74 6f 72 20 5b 20 63 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 20 63 6f 6d 70 6f 75 selector.[.css-combinator.compou
2280 6e 64 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 5d 2a 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a nd-css-selector.]*.whitespace*;.
22a0 3b 3b 20 63 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 3a 0a 3b 3b 20 20 20 77 68 69 74 65 73 70 61 ;;.css-combinator:.;;...whitespa
22c0 63 65 2b 20 7c 20 77 68 69 74 65 73 70 61 63 65 2a 20 5b 20 27 3e 27 20 7c 20 27 2b 27 20 7c 20 ce+.|.whitespace*.[.'>'.|.'+'.|.
22e0 27 7e 27 20 5d 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 6f 6d 70 6f 75 6e 64 2d 63 '~'.].whitespace*;.;;.compound-c
2300 73 73 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 ss-selector:.;;...css-type-selec
2320 74 6f 72 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 20 7c 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 tor.css-modifier*.|.css-modifier
2340 2b 3b 0a 3b 3b 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 49 44 +;.;;.css-type-selector:.;;...ID
2360 45 4e 54 20 7c 20 2a 3b 0a 3b 3b 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 3a 0a 3b 3b 20 20 20 20 ENT.|.*;.;;.css-modifier:.;;....
2380 63 73 73 2d 69 64 20 7c 20 63 73 73 2d 63 6c 61 73 73 20 7c 20 63 73 73 2d 61 74 74 72 69 62 20 css-id.|.css-class.|.css-attrib.
23a0 7c 20 63 73 73 2d 70 73 65 75 64 6f 3b 0a 3b 3b 20 63 73 73 2d 69 64 3a 0a 3b 3b 20 20 20 48 41 |.css-pseudo;.;;.css-id:.;;...HA
23c0 53 48 3b 0a 3b 3b 20 63 73 73 2d 63 6c 61 73 73 3a 0a 3b 3b 20 20 20 27 2e 27 20 49 44 45 4e 54 SH;.;;.css-class:.;;...'.'.IDENT
23e0 3b 0a 3b 3b 20 63 73 73 2d 61 74 74 72 69 62 3a 0a 3b 3b 20 20 20 27 5b 27 20 77 68 69 74 65 73 ;.;;.css-attrib:.;;...'['.whites
2400 70 61 63 65 2a 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 27 5d 27 0a 3b 3b 20 20 20 7c pace*.css-attrib-name.']'.;;...|
2420 20 27 5b 27 20 77 68 69 74 65 73 70 61 63 65 2a 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 .'['.whitespace*.css-attrib-name
2440 20 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 20 63 73 73 2d 61 74 74 72 69 62 2d 76 61 6c .css-attrib-match.css-attrib-val
2460 75 65 20 77 68 69 74 65 73 70 61 63 65 2a 20 27 5d 27 3b 0a 3b 3b 20 63 73 73 2d 61 74 74 72 69 ue.whitespace*.']';.;;.css-attri
2480 62 2d 6e 61 6d 65 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a b-name:.;;...IDENT.whitespace*;.
24a0 3b 3b 20 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 3a 0a 3b 3b 20 20 20 5b 20 27 3d 27 20 ;;.css-attrib-match:.;;...[.'='.
24c0 7c 20 50 52 45 46 49 58 2d 4d 41 54 43 48 20 7c 20 53 55 46 46 49 58 2d 4d 41 54 43 48 20 7c 20 |.PREFIX-MATCH.|.SUFFIX-MATCH.|.
24e0 53 55 42 53 54 52 49 4e 47 2d 4d 41 54 43 48 20 7c 20 49 4e 43 4c 55 44 45 2d 4d 41 54 43 48 20 SUBSTRING-MATCH.|.INCLUDE-MATCH.
2500 7c 20 44 41 53 48 2d 4d 41 54 43 48 20 5d 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 |.DASH-MATCH.].whitespace*;.;;.c
2520 73 73 2d 61 74 74 72 69 62 2d 76 61 6c 75 65 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 7c 20 53 54 ss-attrib-value:.;;...IDENT.|.ST
2540 52 49 4e 47 3b 0a 3b 3b 20 63 73 73 2d 70 73 65 75 64 6f 3a 0a 3b 3b 20 20 20 27 3a 27 20 27 3a RING;.;;.css-pseudo:.;;...':'.':
2560 27 3f 20 5b 20 49 44 45 4e 54 20 7c 20 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 '?.[.IDENT.|.css-functional-pseu
2580 64 6f 20 5d 3b 0a 3b 3b 20 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 3a 0a do.];.;;.css-functional-pseudo:.
25a0 3b 3b 20 20 20 46 55 4e 43 54 49 4f 4e 20 77 68 69 74 65 73 70 61 63 65 2a 20 5b 20 63 73 73 2d ;;...FUNCTION.whitespace*.[.css-
25c0 65 78 70 72 65 73 73 69 6f 6e 20 77 68 69 74 65 73 70 61 63 65 2a 20 5d 2b 20 27 29 27 3b 0a 3b expression.whitespace*.]+.')';.;
25e0 3b 20 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 3a 0a 3b 3b 20 20 20 27 2b 27 20 7c 20 27 2d 27 ;.css-expression:.;;...'+'.|.'-'
2600 20 7c 20 44 49 4d 45 4e 53 49 4f 4e 20 7c 20 4e 55 4d 42 45 52 20 7c 20 53 54 52 49 4e 47 20 7c .|.DIMENSION.|.NUMBER.|.STRING.|
2620 20 49 44 45 4e 54 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 79 2d 63 73 73 2d 65 .IDENT..(defun.esxml-query-css-e
2640 73 63 61 70 65 20 28 73 74 72 69 6e 67 29 0a 20 20 22 52 65 74 75 72 6e 73 20 65 73 63 61 70 65 scape.(string)..."Returns.escape
2660 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 54 52 49 4e 47 20 66 6f 72 20 75 73 65 20 69 6e 20 73 d.version.of.STRING.for.use.in.s
2680 65 6c 65 63 74 6f 72 73 2e 0a 54 68 65 20 6c 6f 67 69 63 20 75 73 65 64 20 68 65 72 65 20 63 6f electors..The.logic.used.here.co
26a0 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 74 68 65 20 43 53 53 2e 65 73 63 61 70 65 20 41 50 49 20 rresponds.to.the.CSS.escape.API.
26c0 61 73 0a 73 70 65 63 69 66 69 65 64 20 69 6e 20 68 74 74 70 73 3a 2f 2f 64 72 61 66 74 73 2e 63 as.specified.in.https://drafts.c
26e0 73 73 77 67 2e 6f 72 67 2f 63 73 73 6f 6d 2f 23 74 68 65 2d 63 73 73 2e 65 73 63 61 70 65 28 29 sswg.org/cssom/#the-css.escape()
2700 2d 6d 65 74 68 6f 64 2e 22 0a 20 20 28 6c 65 74 20 28 63 68 61 72 73 29 0a 20 20 20 20 28 64 6f -method."...(let.(chars).....(do
2720 74 69 6d 65 73 20 28 69 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 times.(i.(length.string)).......
2740 28 6c 65 74 2a 20 28 28 63 68 61 72 20 28 61 72 65 66 20 73 74 72 69 6e 67 20 69 29 29 0a 20 20 (let*.((char.(aref.string.i))...
2760 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 70 72 69 6e 74 61 62 6c 65 70 20 28 6f 72 20 28 61 6e ...........(unprintablep.(or.(an
2780 64 20 28 3e 3d 20 63 68 61 72 20 3f 5c 75 30 30 30 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 d.(>=.char.?\u0001).(<=.char.?\u
27a0 30 30 31 66 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 001f))..........................
27c0 20 20 20 20 20 20 28 3d 20 63 68 61 72 20 3f 5c 75 30 30 37 66 29 29 29 0a 20 20 20 20 20 20 20 ......(=.char.?\u007f)))........
27e0 20 20 20 20 20 20 28 6e 6f 6e 61 73 63 69 69 70 20 28 3e 3d 20 63 68 61 72 20 3f 5c 75 30 30 38 ......(nonasciip.(>=.char.?\u008
2800 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 67 69 74 70 20 28 61 6e 64 20 28 3e 0))..............(digitp.(and.(>
2820 3d 20 63 68 61 72 20 3f 5c 75 30 30 33 30 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 33 39 =.char.?\u0030).(<=.char.?\u0039
2840 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 70 70 65 72 70 20 28 61 6e 64 20 28 3e )))..............(upperp.(and.(>
2860 3d 20 63 68 61 72 20 3f 5c 75 30 30 34 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 35 61 =.char.?\u0041).(<=.char.?\u005a
2880 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 77 65 72 70 20 28 61 6e 64 20 28 3e )))..............(lowerp.(and.(>
28a0 3d 20 63 68 61 72 20 3f 5c 75 30 30 36 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 37 61 =.char.?\u0061).(<=.char.?\u007a
28c0 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 3d 20 )))).........(cond..........((=.
28e0 63 68 61 72 20 3f 5c 75 30 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 3f 5c char.?\u0000)...........(push.?\
2900 75 66 66 66 64 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 70 72 69 6e 74 61 ufffd.chars))..........(unprinta
2920 62 6c 65 70 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 blep...........(dolist.(char.(st
2940 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 ring-to-list.(format."\\%x.".cha
2960 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 r))).............(push.char.char
2980 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 30 29 20 64 69 67 69 s)))..........((and.(=.i.0).digi
29a0 74 70 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 tp)...........(dolist.(char.(str
29c0 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 ing-to-list.(format."\\%x.".char
29e0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 ))).............(push.char.chars
2a00 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 31 29 20 64 69 67 69 74 )))..........((and.(=.i.1).digit
2a20 70 20 28 3d 20 28 61 72 65 66 20 73 74 72 69 6e 67 20 30 29 20 3f 2d 29 29 0a 20 20 20 20 20 20 p.(=.(aref.string.0).?-)).......
2a40 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 73 ....(dolist.(char.(string-to-lis
2a60 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 0a 20 20 20 20 20 20 t.(format."\\%x.".char))).......
2a80 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 0a 20 20 20 20 20 20 ......(push.char.chars))).......
2aa0 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 30 29 20 28 3d 20 63 68 61 72 20 3f 2d 29 20 28 3d 20 ...((and.(=.i.0).(=.char.?-).(=.
2ac0 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 (length.string).1))...........(p
2ae0 75 73 68 20 3f 5c 5c 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 ush.?\\.chars)...........(push.c
2b00 68 61 72 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 28 6f 72 20 6e 6f 6e 61 73 63 har.chars))..........((or.nonasc
2b20 69 69 70 20 28 3d 20 63 68 61 72 20 3f 2d 29 20 28 3d 20 63 68 61 72 20 3f 5f 29 20 64 69 67 69 iip.(=.char.?-).(=.char.?_).digi
2b40 74 70 20 75 70 70 65 72 70 20 6c 6f 77 65 72 70 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 tp.upperp.lowerp)...........(pus
2b60 68 20 63 68 61 72 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 h.char.chars))..........(t......
2b80 20 20 20 20 20 28 70 75 73 68 20 3f 5c 5c 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 .....(push.?\\.chars)...........
2ba0 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 (push.char.chars))))).....(conca
2bc0 74 20 28 6e 72 65 76 65 72 73 65 20 63 68 61 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 t.(nreverse.chars))))..(defun.es
2be0 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 73 74 72 69 6e xml--parse-css-identifier.(strin
2c00 67 29 0a 20 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 63 73 g)...;;.https://www.w3.org/TR/cs
2c20 73 2d 73 79 6e 74 61 78 2d 33 2f 23 63 6f 6e 73 75 6d 65 2d 73 74 72 69 6e 67 2d 74 6f 6b 65 6e s-syntax-3/#consume-string-token
2c40 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 64 65 2d 70 6f 69 6e 74 73 20 28 73 74 72 69 6e 67 2d 74 ...(let*.((code-points.(string-t
2c60 6f 2d 6c 69 73 74 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 63 68 61 72 73 29 0a o-list.string))..........chars).
2c80 20 20 20 20 28 77 68 69 6c 65 20 63 6f 64 65 2d 70 6f 69 6e 74 73 0a 20 20 20 20 20 20 28 6c 65 ....(while.code-points.......(le
2ca0 74 20 28 28 63 68 61 72 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 t.((char.(pop.code-points)))....
2cc0 20 20 20 20 20 28 69 66 20 28 3d 20 63 68 61 72 20 3f 5c 5c 29 0a 20 20 20 20 20 20 20 20 20 20 .....(if.(=.char.?\\)...........
2ce0 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 ..(let.((char.(pop.code-points))
2d00 29 0a 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 20 20 20 20 20 )...............(cond...........
2d20 20 20 20 20 20 28 28 6e 6f 74 20 63 68 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....((not.char))...............
2d40 20 28 28 3d 20 63 68 61 72 20 3f 5c 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .((=.char.?\n))................(
2d60 28 6f 72 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 30 29 20 28 3c 3d 20 63 68 61 72 20 3f (or.(and.(>=.char.?0).(<=.char.?
2d80 39 29 29 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 3e 3d 9)).....................(and.(>=
2da0 20 63 68 61 72 20 3f 61 29 20 28 3c 3d 20 63 68 61 72 20 3f 66 29 29 0a 20 20 20 20 20 20 20 20 .char.?a).(<=.char.?f)).........
2dc0 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 41 29 20 28 3c ............(and.(>=.char.?A).(<
2de0 3d 20 63 68 61 72 20 3f 46 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 =.char.?F))).................(le
2e00 74 20 28 28 69 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 t.((i.0).......................(
2e20 68 65 78 2d 63 68 61 72 73 20 28 6c 69 73 74 20 63 68 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 hex-chars.(list.char))).........
2e40 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 3c 20 69 20 35 29 20 63 6f ..........(while.(and.(<.i.5).co
2e60 64 65 2d 70 6f 69 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 de-points).....................(
2e80 6c 65 74 20 28 28 63 68 61 72 20 28 63 61 72 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 let.((char.(car.code-points)))..
2ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 61 6e .....................(if.(or.(an
2ec0 64 20 28 3e 3d 20 63 68 61 72 20 3f 30 29 20 28 3c 3d 20 63 68 61 72 20 3f 39 29 29 0a 20 20 20 d.(>=.char.?0).(<=.char.?9))....
2ee0 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 61 6e 64 20 ...........................(and.
2f00 28 3e 3d 20 63 68 61 72 20 3f 61 29 20 28 3c 3d 20 63 68 61 72 20 3f 66 29 29 0a 20 20 20 20 20 (>=.char.?a).(<=.char.?f))......
2f20 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 61 6e 64 20 28 3e .........................(and.(>
2f40 3d 20 63 68 61 72 20 3f 41 29 20 28 3c 3d 20 63 68 61 72 20 3f 46 29 29 29 0a 20 20 20 20 20 20 =.char.?A).(<=.char.?F))).......
2f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 70 6f 70 20 63 ....................(push.(pop.c
2f80 6f 64 65 2d 70 6f 69 6e 74 73 29 20 68 65 78 2d 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 ode-points).hex-chars)..........
2fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 35 29 29 29 0a 20 20 20 20 ...............(setq.i.5))).....
2fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 28 31 2b 20 69 29 29 29 ................(setq.i.(1+.i)))
2fe0 0a 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 63 68 61 72 20 28 ...................(let.((char.(
3000 63 61 72 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 car.code-points)))..............
3020 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 63 68 61 72 20 28 3d 20 63 68 61 72 20 3f .......(when.(and.char.(=.char.?
3040 5c 73 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 28 70 6f 70 20 \s)).......................(pop.
3060 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 code-points)))..................
3080 20 28 6c 65 74 2a 20 28 28 68 65 78 2d 74 6f 6b 65 6e 20 28 63 6f 6e 63 61 74 20 28 6e 72 65 76 .(let*.((hex-token.(concat.(nrev
30a0 65 72 73 65 20 68 65 78 2d 63 68 61 72 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erse.hex-chars)))...............
30c0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 64 65 2d 70 6f 69 6e 74 20 28 73 74 72 69 6e 67 2d 74 ...........(code-point.(string-t
30e0 6f 2d 6e 75 6d 62 65 72 20 68 65 78 2d 74 6f 6b 65 6e 20 31 36 29 29 29 0a 20 20 20 20 20 20 20 o-number.hex-token.16)))........
3100 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 7a 65 72 6f 70 20 63 6f 64 65 .............(if.(or.(zerop.code
3120 2d 70 6f 69 6e 74 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 -point).........................
3140 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 6f 64 65 2d 70 6f 69 6e 74 20 3f 5c 75 64 38 30 30 29 ....(and.(>=.code-point.?\ud800)
3160 20 28 3c 3d 20 63 6f 64 65 2d 70 6f 69 6e 74 20 3f 5c 75 64 66 66 66 29 29 0a 20 20 20 20 20 20 .(<=.code-point.?\udfff)).......
3180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3e 20 63 6f 64 65 2d 70 6f ......................(>.code-po
31a0 69 6e 74 20 3f 5c 55 30 30 31 30 66 66 66 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 int.?\U0010ffff))...............
31c0 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 3f 5c 75 66 66 66 64 20 63 68 61 72 73 29 0a 20 ..........(push.?\ufffd.chars)..
31e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 64 65 2d .....................(push.code-
3200 70 6f 69 6e 74 20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 point.chars)))))................
3220 28 74 20 3b 20 75 6e 73 70 65 63 69 66 69 65 64 3a 20 6e 6f 6e 2d 68 65 78 20 64 69 67 69 74 0a (t.;.unspecified:.non-hex.digit.
3240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 ................(push.char.chars
3260 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 ))))...........(push.char.chars)
3280 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 68 61 72 73 29 ))).....(concat.(nreverse.chars)
32a0 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 74 72 )))..(defun.esxml--parse-css-str
32c0 69 6e 67 2d 6c 69 74 65 72 61 6c 20 28 73 74 72 69 6e 67 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 70 ing-literal.(string)...(esxml--p
32e0 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 73 75 62 73 74 72 69 6e 67 20 73 arse-css-identifier.(substring.s
3300 74 72 69 6e 67 20 31 20 2d 31 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 73 78 6d 6c 2d 2d tring.1.-1)))..(defmacro.esxml--
3320 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 20 28 26 72 65 73 74 20 62 6f 64 with-parse-shorthands.(&rest.bod
3340 79 29 0a 20 20 60 28 63 6c 2d 6d 61 63 72 6f 6c 65 74 20 28 28 70 65 65 6b 20 28 29 20 27 28 63 y)...`(cl-macrolet.((peek.().'(c
3360 61 72 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 20 ar.esxml--token-stream))........
3380 20 20 20 20 20 20 20 20 20 20 28 6e 65 78 74 20 28 29 20 27 28 70 6f 70 20 65 73 78 6d 6c 2d 2d ..........(next.().'(pop.esxml--
33a0 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 token-stream))..................
33c0 28 61 63 63 65 70 74 20 28 74 79 70 65 29 20 60 28 61 6e 64 20 28 70 65 65 6b 29 20 28 65 71 20 (accept.(type).`(and.(peek).(eq.
33e0 28 63 61 72 20 28 70 65 65 6b 29 29 20 2c 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (car.(peek)).,type).............
3400 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 64 72 20 28 ..........................(cdr.(
3420 6e 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 next))))..................(eat-w
3440 68 69 74 65 73 70 61 63 65 20 28 29 20 27 28 77 68 69 6c 65 20 28 61 63 63 65 70 74 20 27 77 68 hitespace.().'(while.(accept.'wh
3460 69 74 65 73 70 61 63 65 29 29 29 29 0a 20 20 20 20 20 2c 40 62 6f 64 79 29 29 0a 28 64 65 66 2d itespace))))......,@body)).(def-
3480 65 64 65 62 75 67 2d 73 70 65 63 20 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 edebug-spec.esxml--with-parse-sh
34a0 6f 72 74 68 61 6e 64 73 20 28 62 6f 64 79 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 70 orthands.(body))..(defun.esxml-p
34c0 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 73 74 72 69 6e 67 29 0a 20 20 22 50 61 arse-css-selector.(string)..."Pa
34e0 72 73 65 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 53 54 52 49 4e 47 20 69 6e 74 6f 20 61 20 6c rse.CSS.selector.STRING.into.a.l
3500 69 73 74 20 6f 66 20 61 6c 69 73 74 73 2e 0a 45 61 63 68 20 61 6c 69 73 74 20 72 65 70 72 65 73 ist.of.alists..Each.alist.repres
3520 65 6e 74 73 20 61 20 63 6f 6d 70 6c 65 78 20 43 53 53 20 73 65 6c 65 63 74 6f 72 2e 20 20 54 68 ents.a.complex.CSS.selector...Th
3540 65 20 72 65 73 75 6c 74 20 63 61 6e 20 62 65 0a 70 61 73 73 65 64 20 74 6f 20 60 65 73 78 6d 6c e.result.can.be.passed.to.`esxml
3560 2d 71 75 65 72 79 27 20 61 6e 64 20 60 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 27 20 61 73 -query'.and.`esxml-query-all'.as
3580 20 74 68 65 20 73 65 6c 65 63 74 6f 72 0a 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 28 6c 65 74 2a .the.selector.argument."...(let*
35a0 20 28 28 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 20 28 65 73 78 6d 6c 2d 2d 74 .((esxml--token-stream.(esxml--t
35c0 6f 6b 65 6e 69 7a 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 73 74 72 69 6e 67 29 29 0a 20 20 okenize-css-selector.string))...
35e0 20 20 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 .......(result.(esxml--parse-css
3600 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 65 73 78 6d -selector-list))).....(when.esxm
3620 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 54 72 l--token-stream.......(error."Tr
3640 61 69 6c 69 6e 67 20 67 61 72 62 61 67 65 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 ailing.garbage:.%s".............
3660 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 63 64 72 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 .(mapconcat.'cdr.esxml--token-st
3680 72 65 61 6d 20 22 22 29 29 29 0a 20 20 20 20 72 65 73 75 6c 74 29 29 0a 0a 28 64 65 66 75 6e 20 ream.""))).....result))..(defun.
36a0 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 20 28 esxml--parse-css-selector-list.(
36c0 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 )...(esxml--with-parse-shorthand
36e0 73 0a 20 20 20 28 6c 65 74 20 28 28 66 69 72 73 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d s....(let.((first.(esxml--parse-
3700 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 complex-css-selector))..........
3720 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 66 69 72 73 74 29 0a 20 result)......(when.(not.first)..
3740 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 20 6c 65 61 73 74 20 ......(error."Expected.at.least.
3760 6f 6e 65 20 73 65 6c 65 63 74 6f 72 22 29 29 0a 20 20 20 20 20 28 70 75 73 68 20 66 69 72 73 74 one.selector"))......(push.first
3780 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 63 63 65 70 74 20 27 63 .result).......(while.(accept.'c
37a0 6f 6d 6d 61 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 omma)........(eat-whitespace)...
37c0 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 6c 65 63 74 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 .....(let.((selector.(esxml--par
37e0 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 29 29 0a 20 20 20 20 20 se-complex-css-selector)))......
3800 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 20 ....(when.(not.selector)........
3820 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 73 65 6c 65 63 74 6f 72 20 61 66 ....(error."Expected.selector.af
3840 74 65 72 20 63 6f 6d 6d 61 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 73 65 6c 65 ter.comma"))..........(push.sele
3860 63 74 6f 72 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 ctor.result)))......(nreverse.re
3880 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f sult))))..(defun.esxml--parse-co
38a0 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d mplex-css-selector.()...(esxml--
38c0 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 with-parse-shorthands....(let.((
38e0 66 69 72 73 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 first.(esxml--parse-compound-css
3900 2d 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 64 6f 6e 65 -selector))..........result.done
3920 29 0a 20 20 20 20 20 28 77 68 65 6e 20 66 69 72 73 74 0a 20 20 20 20 20 20 20 28 70 75 73 68 20 )......(when.first........(push.
3940 66 69 72 73 74 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f first.result).........(while.(no
3960 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6d 62 69 6e 61 74 t.done)..........(let.((combinat
3980 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 29 or.(esxml--parse-css-combinator)
39a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 6f 6d 62 69 6e 61 74 6f 72 0a 20 20 20 ))............(if.combinator....
39c0 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6d 70 6f 75 6e 64 20 28 65 73 78 ............(let.((compound.(esx
39e0 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 ml--parse-compound-css-selector)
3a00 29 29 0a 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 20 ))..................(cond.......
3a20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 20 ............(compound...........
3a40 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 61 70 70 65 6e 64 20 28 6c .........(setq.result.(append.(l
3a60 69 73 74 20 63 6f 6d 70 6f 75 6e 64 20 63 6f 6d 62 69 6e 61 74 6f 72 29 20 72 65 73 75 6c 74 29 ist.compound.combinator).result)
3a80 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 6c 6c 6f 77 20 77 68 ))...................;;.allow.wh
3aa0 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 20 20 20 itespace.before.comma...........
3ac0 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 20 28 63 61 72 20 28 70 65 65 6b 29 29 20 27 ........((not.(eq.(car.(peek)).'
3ae0 63 6f 6d 6d 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f comma))....................(erro
3b00 72 20 22 54 72 61 69 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 22 29 29 29 29 0a 20 20 20 20 r."Trailing.combinator")))).....
3b20 20 20 20 20 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 .........(setq.done.t)))).......
3b40 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 .(nreverse.result)))))..(defun.e
3b60 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 20 28 29 0a 20 20 sxml--parse-css-combinator.()...
3b80 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 (esxml--with-parse-shorthands...
3ba0 20 3b 3b 20 4e 4f 54 45 3a 20 77 68 69 74 65 73 70 61 63 65 2d 73 75 72 72 6f 75 6e 64 65 64 20 .;;.NOTE:.whitespace-surrounded.
3bc0 63 6f 6d 62 69 6e 61 74 6f 72 73 20 61 72 65 20 64 69 73 74 69 6e 67 75 69 73 68 65 64 20 66 72 combinators.are.distinguished.fr
3be0 6f 6d 0a 20 20 20 3b 3b 20 77 68 69 74 65 73 70 61 63 65 2d 6f 6e 6c 79 20 6f 6e 65 73 20 62 79 om....;;.whitespace-only.ones.by
3c00 20 63 68 65 63 6b 69 6e 67 20 77 68 65 74 68 65 72 20 74 68 65 72 65 20 68 61 73 20 62 65 65 6e .checking.whether.there.has.been
3c20 0a 20 20 20 3b 3b 20 77 68 69 74 65 73 70 61 63 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 ....;;.whitespace.followed.by.a.
3c40 6e 6f 6e 2d 62 6c 61 6e 6b 20 63 6f 6d 62 69 6e 61 74 6f 72 0a 20 20 20 28 6c 65 74 20 28 28 6c non-blank.combinator....(let.((l
3c60 65 61 64 69 6e 67 2d 77 68 69 74 65 73 70 61 63 65 2d 70 20 28 65 71 20 28 63 61 72 20 28 70 65 eading-whitespace-p.(eq.(car.(pe
3c80 65 6b 29 29 20 27 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 ek)).'whitespace))..........resu
3ca0 6c 74 29 0a 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 28 lt)......(eat-whitespace)......(
3cc0 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 28 70 65 65 6b 29 29 29 29 0a 20 20 20 20 20 20 let.((type.(car.(peek)))).......
3ce0 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 74 79 70 65 20 27 28 67 .(cond.........((member.type.'(g
3d00 74 20 70 6c 75 73 20 74 69 6c 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 t.plus.tilde))..........(next)..
3d20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 ........(cond...........((eq.typ
3d40 65 20 27 67 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 e.'gt)............(setq.result.'
3d60 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 63 68 69 6c 64 29 29 29 29 0a 20 20 20 20 20 20 20 ((combinator...child))))........
3d80 20 20 20 28 28 65 71 20 74 79 70 65 20 27 70 6c 75 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 ...((eq.type.'plus)............(
3da0 73 65 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 64 69 72 65 setq.result.'((combinator...dire
3dc0 63 74 2d 73 69 62 6c 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 ct-sibling))))...........((eq.ty
3de0 70 65 20 27 74 69 6c 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 pe.'tilde)............(setq.resu
3e00 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 69 6e 64 69 72 65 63 74 2d 73 69 62 6c lt.'((combinator...indirect-sibl
3e20 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 ing)))))..........(eat-whitespac
3e40 65 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 61 64 69 6e 67 2d 77 68 69 74 65 73 70 61 63 65 2d e)).........(leading-whitespace-
3e60 70 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 p..........(setq.result.'((combi
3e80 6e 61 74 6f 72 20 2e 20 64 65 73 63 65 6e 64 61 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 nator...descendant)))).........(
3ea0 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 72 65 73 75 6c 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 t.nil)))......result)))..(defun.
3ec0 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 65 6c 65 63 74 esxml--parse-compound-css-select
3ee0 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 or.()...(esxml--with-parse-short
3f00 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 28 65 hands....(let.((type-selector.(e
3f20 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 29 29 0a sxml--parse-css-type-selector)).
3f40 20 20 20 20 20 20 20 20 20 64 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 .........done..........result)..
3f60 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 63 ....;;.NOTE:.css-type-selector.c
3f80 73 73 2d 6d 6f 64 69 66 69 65 72 2a 20 7c 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2b 3b 20 69 73 ss-modifier*.|.css-modifier+;.is
3fa0 0a 20 20 20 20 20 3b 3b 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 3a 20 5b 20 63 73 73 2d 74 79 ......;;.equivalent.to:.[.css-ty
3fc0 70 65 2d 73 65 6c 65 63 74 6f 72 20 7c 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 20 5d 20 63 73 73 pe-selector.|.css-modifier.].css
3fe0 2d 6d 6f 64 69 66 69 65 72 2a 3b 0a 20 20 20 20 20 28 69 66 20 74 79 70 65 2d 73 65 6c 65 63 74 -modifier*;......(if.type-select
4000 6f 72 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 or..........(push.type-selector.
4020 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 6f 64 69 66 69 65 72 20 28 result)........(let.((modifier.(
4040 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 6d 6f 64 69 66 69 65 72 29 29 29 0a 20 20 20 esxml--parse-css-modifier)))....
4060 20 20 20 20 20 20 28 69 66 20 6d 6f 64 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(if.modifier..............
4080 28 70 75 73 68 20 6d 6f 64 69 66 69 65 72 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 (push.modifier.result)..........
40a0 20 20 3b 3b 20 4e 4f 54 45 3a 20 74 68 69 73 20 61 6c 6c 6f 77 73 20 74 68 65 20 74 72 61 69 6c ..;;.NOTE:.this.allows.the.trail
40c0 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 65 72 72 6f 72 20 74 6f 20 62 65 20 74 68 72 6f 77 ing.combinator.error.to.be.throw
40e0 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 29 29 29 29 0a 0a 20 n............(setq.done.t))))...
4100 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 28 6c 65 ....(while.(not.done)........(le
4120 74 20 28 28 6d 6f 64 69 66 69 65 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 6d t.((modifier.(esxml--parse-css-m
4140 6f 64 69 66 69 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 6d 6f 64 69 66 69 65 72 odifier)))..........(if.modifier
4160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6d 6f 64 69 66 69 65 72 20 72 65 73 ..............(push.modifier.res
4180 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 29 29 29 29 ult)............(setq.done.t))))
41a0 0a 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 63 6c 2d 63 6f 75 6e 74 20 27 69 64 20 72 65 73 ......(when.(>.(cl-count.'id.res
41c0 75 6c 74 20 3a 6b 65 79 20 27 63 61 72 29 20 31 29 0a 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 ult.:key.'car).1)........(error.
41e0 22 4f 6e 6c 79 20 6f 6e 65 20 69 64 20 73 65 6c 65 63 74 6f 72 20 61 6c 6c 6f 77 65 64 20 70 65 "Only.one.id.selector.allowed.pe
4200 72 20 63 6f 6d 70 6f 75 6e 64 22 29 29 0a 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 r.compound"))......(nreverse.res
4220 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 ult))))..(defun.esxml--parse-css
4240 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 -type-selector.()...(esxml--with
4260 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 -parse-shorthands....(let.((toke
4280 6e 20 28 70 65 65 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 65 71 n.(peek)))......(cond.......((eq
42a0 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e 74 29 0a 20 20 20 20 20 20 20 28 6e 65 78 .(car.token).'ident)........(nex
42c0 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 74 61 67 20 28 69 6e 74 65 72 6e 20 28 65 73 t)........(cons.'tag.(intern.(es
42e0 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 64 72 20 74 xml--parse-css-identifier.(cdr.t
4300 6f 6b 65 6e 29 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 oken))))).......((eq.(car.token)
4320 20 27 61 73 74 65 72 69 73 6b 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 .'asterisk)........(next).......
4340 20 27 28 77 69 6c 64 63 61 72 64 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 29 0a .'(wildcard)).......(t.nil))))).
4360 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 6d 6f 64 69 66 69 65 .(defun.esxml--parse-css-modifie
4380 72 20 28 29 0a 20 20 28 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 29 r.()...(or.(esxml--parse-css-id)
43a0 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 63 6c 61 73 73 29 0a .......(esxml--parse-css-class).
43c0 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 29 0a ......(esxml--parse-css-attrib).
43e0 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 70 73 65 75 64 6f 29 29 ......(esxml--parse-css-pseudo))
4400 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 20 28 29 )..(defun.esxml--parse-css-id.()
4420 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 ...(esxml--with-parse-shorthands
4440 0a 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 70 74 20 27 68 61 73 68 29 29 ....(let.((value.(accept.'hash))
4460 29 0a 20 20 20 20 20 28 77 68 65 6e 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 )......(when.value........(cons.
4480 27 69 64 20 28 73 75 62 73 74 72 69 6e 67 20 76 61 6c 75 65 20 31 29 29 29 29 29 29 0a 0a 28 64 'id.(substring.value.1))))))..(d
44a0 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 63 6c 61 73 73 20 28 29 0a 20 efun.esxml--parse-css-class.()..
44c0 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 .(esxml--with-parse-shorthands..
44e0 20 20 28 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 70 65 72 69 6f 64 29 0a 20 20 20 20 20 28 6c ..(when.(accept.'period)......(l
4500 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 70 74 20 27 69 64 65 6e 74 29 29 29 0a 20 20 20 et.((value.(accept.'ident)))....
4520 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 ....(if.value............(cons.'
4540 63 6c 61 73 73 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 class.value)..........(error."Ex
4560 70 65 63 74 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 61 66 74 65 72 20 70 65 72 69 6f 64 22 29 pected.identifier.after.period")
4580 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 )))))..(defun.esxml--parse-css-a
45a0 74 74 72 69 62 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 ttrib.()...(esxml--with-parse-sh
45c0 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 orthands....(let.(result)......(
45e0 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 6c 62 72 61 63 6b 65 74 29 0a 20 20 20 20 20 20 20 28 when.(accept.'lbracket)........(
4600 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 61 eat-whitespace)........(let.((na
4620 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 me.(esxml--parse-css-attrib-name
4640 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6e 61 6d 65 29 0a 20 20 )))..........(when.(not.name)...
4660 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 74 72 69 62 .........(error."Expected.attrib
4680 75 74 65 20 6e 61 6d 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 ute.name"))..........(push.(cons
46a0 20 27 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 .'name.(esxml--parse-css-identif
46c0 69 65 72 20 6e 61 6d 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 ier.name)).result)..........(whe
46e0 6e 20 28 6e 6f 74 20 28 61 63 63 65 70 74 20 27 72 62 72 61 63 6b 65 74 29 29 0a 20 20 20 20 20 n.(not.(accept.'rbracket))......
4700 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74 63 68 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 ......(let.((match.(esxml--parse
4720 2d 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 -css-attrib-match)))............
4740 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 20 20 ..(when.(not.match).............
4760 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 74 72 69 62 75 74 65 20 6d 61 ...(error."Expected.attribute.ma
4780 74 63 68 65 72 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c tcher"))..............(let.((val
47a0 75 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 76 61 6c 75 ue.(esxml--parse-css-attrib-valu
47c0 65 29 29 29 0a 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 76 e)))................(when.(not.v
47e0 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 alue)..................(error."E
4800 78 70 65 63 74 65 64 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 22 29 29 0a 20 20 20 20 20 xpected.attribute.value"))......
4820 20 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 ..........(eat-whitespace)......
4840 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 61 63 63 65 70 74 20 27 72 62 ..........(when.(not.(accept.'rb
4860 72 61 63 6b 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 racket))..................(error
4880 20 22 55 6e 74 65 72 6d 69 6e 61 74 65 64 20 61 74 74 72 69 62 75 74 65 22 29 29 0a 20 20 20 20 ."Unterminated.attribute")).....
48a0 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 6d 61 74 63 68 20 76 61 6c ...........(push.(cons.match.val
48c0 75 65 29 20 72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 61 74 ue).result)))))........(cons.'at
48e0 74 72 69 62 75 74 65 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 29 0a 0a tribute.(nreverse.result))))))..
4900 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 6e (defun.esxml--parse-css-attrib-n
4920 61 6d 65 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 ame.()...(esxml--with-parse-shor
4940 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 61 63 63 65 70 74 20 27 69 thands....(let.((name.(accept.'i
4960 64 65 6e 74 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 28 dent)))......(when.name........(
4980 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 6e 61 6d 65 29 29 29 29 0a eat-whitespace)........name)))).
49a0 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d .(defun.esxml--parse-css-attrib-
49c0 6d 61 74 63 68 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 match.()...(esxml--with-parse-sh
49e0 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 orthands....(let.(result)......(
4a00 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 65 71 75 61 6c 73 29 0a 20 20 20 cond.......((accept.'equals)....
4a20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 65 78 61 63 74 2d 6d 61 74 63 68 29 29 0a ....(setq.result.'exact-match)).
4a40 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 70 72 65 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 ......((accept.'prefix-match)...
4a60 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 70 72 65 66 69 78 2d 6d 61 74 63 68 29 .....(setq.result.'prefix-match)
4a80 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 73 75 66 66 69 78 2d 6d 61 74 63 68 29 0a ).......((accept.'suffix-match).
4aa0 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 73 75 66 66 69 78 2d 6d 61 74 63 .......(setq.result.'suffix-matc
4ac0 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 73 75 62 73 74 72 69 6e 67 2d 6d 61 h)).......((accept.'substring-ma
4ae0 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 73 75 62 73 74 72 tch)........(setq.result.'substr
4b00 69 6e 67 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 69 6e 63 6c ing-match)).......((accept.'incl
4b20 75 64 65 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 ude-match)........(setq.result.'
4b40 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 include-match)).......((accept.'
4b60 64 61 73 68 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 dash-match)........(setq.result.
4b80 27 64 61 73 68 2d 6d 61 74 63 68 29 29 29 0a 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 'dash-match)))......(eat-whitesp
4ba0 61 63 65 29 0a 20 20 20 20 20 72 65 73 75 6c 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d ace)......result)))..(defun.esxm
4bc0 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 76 61 6c 75 65 20 28 29 0a 20 20 28 l--parse-css-attrib-value.()...(
4be0 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 esxml--with-parse-shorthands....
4c00 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 (let.((token.(peek)))......(cond
4c20 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e 74 29 0a .......((eq.(car.token).'ident).
4c40 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 .......(next)........(esxml--par
4c60 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 0a se-css-identifier.(cdr.token))).
4c80 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 73 74 72 69 6e 67 29 0a ......((eq.(car.token).'string).
4ca0 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 .......(next)........(esxml--par
4cc0 73 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 20 28 63 64 72 20 74 6f 6b 65 6e se-css-string-literal.(cdr.token
4ce0 29 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 ))).......(t.nil)))))..(defun.es
4d00 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 70 73 65 75 64 6f 20 28 29 0a 20 20 28 65 73 78 6d xml--parse-css-pseudo.()...(esxm
4d20 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 l--with-parse-shorthands....(let
4d40 20 28 72 65 73 75 6c 74 20 74 79 70 65 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 61 63 63 65 70 .(result.type)......(when.(accep
4d60 74 20 27 63 6f 6c 6f 6e 29 0a 20 20 20 20 20 20 20 28 69 66 20 28 61 63 63 65 70 74 20 27 63 6f t.'colon)........(if.(accept.'co
4d80 6c 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 79 70 65 20 27 70 73 65 75 lon)............(setq.type.'pseu
4da0 64 6f 2d 65 6c 65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 79 70 65 20 do-element)..........(setq.type.
4dc0 27 70 73 65 75 64 6f 2d 63 6c 61 73 73 29 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 75 'pseudo-class))........(let.((fu
4de0 6e 63 74 69 6f 6e 61 6c 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 66 75 6e 63 74 nctional.(esxml--parse-css-funct
4e00 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 66 75 6e ional-pseudo)))..........(if.fun
4e20 63 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 74 79 70 ctional..............(if.(eq.typ
4e40 65 20 27 70 73 65 75 64 6f 2d 63 6c 61 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.'pseudo-class)................
4e60 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 63 61 72 20 66 75 6e 63 74 69 6f 6e 61 6c 29 29 ..(let.((value.(car.functional))
4e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 73 20 28 63 ........................(args.(c
4ea0 64 72 20 66 75 6e 63 74 69 6f 6e 61 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dr.functional)))................
4ec0 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 27 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 ....(push.(cons.'name.(esxml--pa
4ee0 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 76 61 6c 75 65 29 29 20 72 65 73 75 6c rse-css-identifier.value)).resul
4f00 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e t)....................(push.(con
4f20 73 20 27 61 72 67 73 20 61 72 67 73 29 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20 s.'args.args).result))..........
4f40 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 50 73 65 75 64 6f 2d 65 6c 65 6d 65 6e 74 73 20 6d 61 ......(error."Pseudo-elements.ma
4f60 79 20 6e 6f 74 20 68 61 76 65 20 61 72 67 75 6d 65 6e 74 73 22 29 29 0a 20 20 20 20 20 20 20 20 y.not.have.arguments")).........
4f80 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 70 74 20 27 69 64 65 6e 74 29 29 ...(let.((value.(accept.'ident))
4fa0 29 0a 20 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 20 20 )..............(if.value........
4fc0 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 27 6e 61 6d 65 20 28 65 73 78 ..........(push.(cons.'name.(esx
4fe0 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 76 61 6c 75 65 29 29 ml--parse-css-identifier.value))
5000 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 .result)................(error."
5020 45 78 70 65 63 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 69 64 65 6e 74 69 66 69 65 72 22 Expected.function.or.identifier"
5040 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 74 79 70 65 20 28 6e 72 65 76 65 72 73 )))))........(cons.type.(nrevers
5060 65 20 72 65 73 75 6c 74 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 e.result))))))..(defun.esxml--pa
5080 72 73 65 2d 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 20 28 29 0a 20 20 28 rse-css-functional-pseudo.()...(
50a0 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 esxml--with-parse-shorthands....
50c0 28 6c 65 74 20 28 28 66 75 6e 63 74 69 6f 6e 20 28 61 63 63 65 70 74 20 27 66 75 6e 63 74 69 6f (let.((function.(accept.'functio
50e0 6e 29 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 77 68 65 6e 20 n))..........result)......(when.
5100 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 28 70 75 73 68 20 28 73 75 62 73 74 72 69 6e 67 function........(push.(substring
5120 20 66 75 6e 63 74 69 6f 6e 20 30 20 2d 31 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 28 .function.0.-1).result)........(
5140 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 78 eat-whitespace)........(let.((ex
5160 70 72 65 73 73 69 6f 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 65 78 70 72 65 pression.(esxml--parse-css-expre
5180 73 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 6e 65 29 0a 20 20 20 20 20 ssion))..............done)......
51a0 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 28 77 ....(eat-whitespace)..........(w
51c0 68 65 6e 20 28 6e 6f 74 20 65 78 70 72 65 73 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 hen.(not.expression)............
51e0 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 65 78 (error."Expected.at.least.one.ex
5200 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 pression.for.function"))........
5220 20 20 28 70 75 73 68 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 ..(push.expression.result)......
5240 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 ....(while.(not.done)...........
5260 20 28 73 65 74 71 20 65 78 70 72 65 73 73 69 6f 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d .(setq.expression.(esxml--parse-
5280 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 css-expression))............(if.
52a0 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e expression................(progn
52c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 65 78 70 72 65 73 73 69 ..................(push.expressi
52e0 6f 6e 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 61 74 on.result)..................(eat
5300 2d 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 -whitespace))..............(setq
5320 20 64 6f 6e 65 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 61 .done.t))))........(when.(not.(a
5340 63 63 65 70 74 20 27 72 70 61 72 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 ccept.'rparen))..........(error.
5360 22 55 6e 74 65 72 6d 69 6e 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 20 "Unterminated.function.argument.
5380 6c 69 73 74 22 29 29 0a 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 list"))........(nreverse.result)
53a0 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 65 78 ))))..(defun.esxml--parse-css-ex
53c0 70 72 65 73 73 69 6f 6e 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 pression.()...(esxml--with-parse
53e0 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 65 65 -shorthands....(let.((token.(pee
5400 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 k)))......(cond.......((accept.'
5420 70 6c 75 73 29 0a 20 20 20 20 20 20 20 27 28 6f 70 65 72 61 74 6f 72 20 2e 20 2b 29 29 0a 20 20 plus)........'(operator...+))...
5440 20 20 20 20 28 28 61 63 63 65 70 74 20 27 6d 69 6e 75 73 29 0a 20 20 20 20 20 20 20 27 28 6f 70 ....((accept.'minus)........'(op
5460 65 72 61 74 6f 72 20 2e 20 2d 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b erator...-)).......((eq.(car.tok
5480 65 6e 29 20 27 64 69 6d 65 6e 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 en).'dimension)........(next)...
54a0 20 20 20 20 20 28 63 6f 6e 73 20 27 64 69 6d 65 6e 73 69 6f 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 .....(cons.'dimension.(esxml--pa
54c0 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 rse-css-identifier.(cdr.token)))
54e0 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 6e 75 6d 62 65 72 ).......((eq.(car.token).'number
5500 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 6e 75 )........(next)........(cons.'nu
5520 6d 62 65 72 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 28 63 64 72 20 74 6f 6b 65 mber.(string-to-number.(cdr.toke
5540 6e 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 73 74 n)))).......((eq.(car.token).'st
5560 72 69 6e 67 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 ring)........(next)........(cons
5580 20 27 73 74 72 69 6e 67 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 74 72 69 6e .'string.(esxml--parse-css-strin
55a0 67 2d 6c 69 74 65 72 61 6c 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 g-literal.(cdr.token)))).......(
55c0 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e 74 29 0a 20 20 20 20 20 20 20 28 (eq.(car.token).'ident)........(
55e0 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 69 64 65 6e 74 20 28 65 73 78 6d 6c next)........(cons.'ident.(esxml
5600 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 64 72 20 74 6f 6b 65 --parse-css-identifier.(cdr.toke
5620 6e 29 29 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 74 n)))).......(t.nil)))))....;;;.t
5640 72 65 65 20 74 72 61 76 65 72 73 61 6c 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 77 68 79 20 62 72 61 6e ree.traversal..;;.TODO:.why.bran
5660 63 68 3f 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 28 6e 6f 64 65 29 ch?.(defun.esxml-branch-p.(node)
5680 0a 20 20 22 4e 6f 6e 2d 6e 69 6c 20 69 66 20 4e 4f 44 45 20 72 65 66 65 72 73 20 74 6f 20 61 6e ..."Non-nil.if.NODE.refers.to.an
56a0 20 65 73 78 6d 6c 20 62 72 61 6e 63 68 2e 22 0a 20 20 28 61 6e 64 20 28 6c 69 73 74 70 20 6e 6f .esxml.branch."...(and.(listp.no
56c0 64 65 29 0a 20 20 20 20 20 20 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 6e 6f 64 65 29 20 32 29 0a de)........(>=.(length.node).2).
56e0 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 72 20 6e 6f 64 65 29 29 0a 20 20 20 20 .......(symbolp.(car.node)).....
5700 20 20 20 28 6c 69 73 74 70 20 28 63 61 64 72 20 6e 6f 64 65 29 29 29 29 0a 0a 3b 3b 20 54 4f 44 ...(listp.(cadr.node))))..;;.TOD
5720 4f 3a 20 74 68 65 73 65 20 68 65 6c 70 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 64 65 70 72 65 O:.these.helpers.should.be.depre
5740 63 61 74 65 64 20 69 6e 20 66 61 76 6f 72 20 6f 66 20 64 6f 6d 2e 65 6c 0a 28 64 65 66 75 6e 20 cated.in.favor.of.dom.el.(defun.
5760 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 28 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 esxml-node-tag.(node)..."Returns
5780 20 74 68 65 20 74 61 67 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 22 0a .the.tag.of.NODE.if.available.".
57a0 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 ..(and.(esxml-branch-p.node)....
57c0 20 20 20 20 28 63 61 72 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 6e ....(car.node)))..(defun.esxml-n
57e0 6f 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 28 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 ode-attributes.(node)..."Returns
5800 20 74 68 65 20 61 74 74 72 69 62 75 74 65 73 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 69 6c .the.attributes.of.NODE.if.avail
5820 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f able."...(and.(esxml-branch-p.no
5840 64 65 29 0a 20 20 20 20 20 20 20 28 63 61 64 72 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 75 6e de)........(cadr.node)))..(defun
5860 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 28 61 74 74 72 69 62 75 74 65 .esxml-node-attribute.(attribute
5880 20 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 .node)..."Returns.the.attribute.
58a0 41 54 54 52 49 42 55 54 45 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 22 ATTRIBUTE.of.NODE.if.available."
58c0 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 ...(and.(esxml-branch-p.node)...
58e0 20 20 20 20 20 28 63 64 72 20 28 61 73 73 71 20 61 74 74 72 69 62 75 74 65 20 28 63 61 64 72 20 .....(cdr.(assq.attribute.(cadr.
5900 6e 6f 64 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 node)))))..(defun.esxml-node-chi
5920 6c 64 72 65 6e 20 28 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 63 68 69 6c ldren.(node)..."Returns.the.chil
5940 64 72 65 6e 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 dren.of.NODE.if.available."...(a
5960 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 nd.(esxml-branch-p.node)........
5980 28 6e 74 68 63 64 72 20 32 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d (nthcdr.2.node)))..(defun.esxml-
59a0 66 69 6e 64 2d 6e 6f 64 65 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 find-node.(pred.root)..."Locates
59c0 20 61 20 6e 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 .a.node.satisfying.PRED.starting
59e0 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 52 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 6f 72 20 .from.ROOT..Returns.the.node.or.
5a00 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 69 66 20 28 66 75 6e 63 61 nil.if.none.found."...(if.(funca
5a20 6c 6c 20 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 20 20 20 20 72 6f 6f 74 0a 20 20 20 20 28 63 6c ll.pred.root).......root.....(cl
5a40 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d 6c 2d 66 69 6e 64 -some.(lambda.(node).(esxml-find
5a60 2d 6e 6f 64 65 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 -node.pred.node))..............(
5a80 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 29 29 29 0a 0a 28 64 esxml-node-children.root))))..(d
5aa0 65 66 75 6e 20 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f 64 65 73 20 28 66 75 6e 63 74 69 6f 6e efun.esxml-visit-nodes.(function
5ac0 20 72 6f 6f 74 29 0a 20 20 22 56 69 73 69 74 20 6e 6f 64 65 73 20 62 79 20 63 61 6c 6c 69 6e 67 .root)..."Visit.nodes.by.calling
5ae0 20 46 55 4e 43 54 49 4f 4e 20 6f 6e 20 65 61 63 68 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 .FUNCTION.on.each.starting.from.
5b00 52 4f 4f 54 2e 22 0a 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 ROOT."...(funcall.function.root)
5b20 0a 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d 6c 2d 76 ...(mapc.(lambda.(node).(esxml-v
5b40 69 73 69 74 2d 6e 6f 64 65 73 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 isit-nodes.function.node))......
5b60 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a ...(esxml-node-children.root))).
5b80 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 28 70 72 65 64 20 72 .(defun.esxml-find-nodes.(pred.r
5ba0 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 oot)..."Locates.all.nodes.satisf
5bc0 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 52 65 ying.PRED.starting.from.ROOT..Re
5be0 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c turns.a.list.of.the.nodes.or.nil
5c00 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 61 63 63 20 27 28 .if.none.found."...(let.((acc.'(
5c20 29 29 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f 64 65 73 0a 20 20 20 20 20 ))).....(esxml-visit-nodes......
5c40 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 66 75 6e (lambda.(node)........(when.(fun
5c60 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6e call.pred.node)..........(push.n
5c80 6f 64 65 20 61 63 63 29 29 29 0a 20 20 20 20 20 72 6f 6f 74 29 0a 20 20 20 20 28 6e 72 65 76 65 ode.acc)))......root).....(nreve
5ca0 72 73 65 20 61 63 63 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 64 65 rse.acc)))..(defun.esxml-find-de
5cc0 73 63 65 6e 64 61 6e 74 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 scendant.(pred.root)..."Locates.
5ce0 61 20 6e 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 a.node.satisfying.PRED.starting.
5d00 66 72 6f 6d 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 74 68 from.ROOT's.children..Returns.th
5d20 65 20 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 e.node.or.nil.if.none.found."...
5d40 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d 6c 2d 66 (cl-some.(lambda.(node).(esxml-f
5d60 69 6e 64 2d 6e 6f 64 65 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ind-node.pred.node))............
5d80 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 (esxml-node-children.root)))..(d
5da0 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 64 65 73 63 65 6e 64 61 6e 74 73 20 28 70 72 65 efun.esxml-find-descendants.(pre
5dc0 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 d.root)..."Locates.all.nodes.sat
5de0 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 27 isfying.PRED.starting.from.ROOT'
5e00 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 s.children..Returns.a.list.of.th
5e20 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 e.nodes.or.nil.if.none.found."..
5e40 20 28 63 6c 2d 6d 61 70 63 61 6e 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d .(cl-mapcan.(lambda.(node).(esxm
5e60 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 l-find-nodes.pred.node))........
5e80 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 ......(esxml-node-children.root)
5ea0 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 63 68 69 6c 64 20 28 70 72 65 ))..(defun.esxml-find-child.(pre
5ec0 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f 64 65 20 73 61 74 69 73 66 d.root)..."Locates.a.node.satisf
5ee0 79 69 6e 67 20 50 52 45 44 20 61 6d 6f 6e 67 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e ying.PRED.among.ROOT's.children.
5f00 0a 52 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 .Returns.the.node.or.nil.if.none
5f20 20 66 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 .found."...(cl-some.(lambda.(nod
5f40 65 29 20 28 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 20 6e 6f 64 e).(when.(funcall.pred.node).nod
5f60 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 e))............(esxml-node-child
5f80 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 63 ren.root)))..(defun.esxml-find-c
5fa0 68 69 6c 64 72 65 6e 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 hildren.(pred.root)..."Locates.a
5fc0 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 61 6d 6f 6e 67 20 52 ll.nodes.satisfying.PRED.among.R
5fe0 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f OOT's.children..Returns.a.list.o
6000 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 f.the.nodes.or.nil.if.none.found
6020 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 20 28 77 68 65 ."...(mapcar.(lambda.(node).(whe
6040 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 20 6e 6f 64 65 29 29 0a 20 20 20 n.(funcall.pred.node).node))....
6060 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 .......(esxml-node-children.root
6080 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 63 68 69 )))..(defun.esxml--node-with-chi
60a0 6c 64 72 65 6e 20 28 6e 6f 64 65 20 63 68 69 6c 64 72 65 6e 29 0a 20 20 28 6c 65 74 20 28 28 74 ldren.(node.children)...(let.((t
60c0 61 67 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 ag.(esxml-node-tag.node)).......
60e0 20 20 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 ..(attributes.(esxml-node-attrib
6100 75 74 65 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 74 utes.node))).....(append.(list.t
6120 61 67 20 61 74 74 72 69 62 75 74 65 73 29 20 63 68 69 6c 64 72 65 6e 29 29 29 0a 0a 28 64 65 66 ag.attributes).children)))..(def
6140 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 72 69 62 75 74 65 73 20 28 un.esxml--node-with-attributes.(
6160 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 29 0a 20 20 28 6c 65 74 20 28 28 74 61 67 20 28 65 node.attributes)...(let.((tag.(e
6180 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 28 63 68 sxml-node-tag.node)).........(ch
61a0 69 6c 64 72 65 6e 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 6e 6f 64 65 ildren.(esxml-node-children.node
61c0 29 29 29 0a 20 20 20 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 74 61 67 20 61 74 74 72 69 62 ))).....(append.(list.tag.attrib
61e0 75 74 65 73 29 20 63 68 69 6c 64 72 65 6e 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d utes).children)))..(defun.esxml-
6200 74 72 65 65 2d 6d 61 70 20 28 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 22 52 65 74 75 tree-map.(function.root)..."Retu
6220 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 52 4f 4f 54 20 77 69 74 68 20 46 55 4e 43 54 49 4f 4e rns.a.copy.of.ROOT.with.FUNCTION
6240 20 61 70 70 6c 69 65 64 20 74 6f 20 65 61 63 68 20 6e 6f 64 65 2e 22 0a 20 20 28 69 66 20 28 65 .applied.to.each.node."...(if.(e
6260 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 72 6f 6f 74 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c sxml-branch-p.root).......(esxml
6280 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 20 20 20 28 66 75 6e --node-with-children........(fun
62a0 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 20 20 20 20 20 28 6d 61 70 63 call.function.root)........(mapc
62c0 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d 6c 2d 74 72 65 65 2d 6d 61 ar.(lambda.(node).(esxml-tree-ma
62e0 70 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.function.node))...............
6300 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a 20 20 .(esxml-node-children.root)))...
6320 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 ..(funcall.function.root)))..(de
6340 66 76 61 72 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 fvar.esxml--symbol.(make-symbol.
6360 22 69 64 22 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 64 65 63 6f 72 61 74 65 2d 74 "id"))..(defun.esxml--decorate-t
6380 72 65 65 20 28 72 6f 6f 74 29 0a 20 20 28 6c 65 74 20 28 28 69 20 30 29 29 0a 20 20 20 20 28 65 ree.(root)...(let.((i.0)).....(e
63a0 73 78 6d 6c 2d 74 72 65 65 2d 6d 61 70 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 sxml-tree-map......(lambda.(node
63c0 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 74 65 20 28 63 6f 6e 73 20 )........(let.((attribute.(cons.
63e0 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 69 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 esxml--symbol.i))..............(
6400 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 attributes.(esxml-node-attribute
6420 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 61 74 74 72 69 62 75 s.node)))..........(setq.attribu
6440 74 65 73 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 61 74 74 72 69 62 75 74 65 29 20 61 74 74 tes.(append.(list.attribute).att
6460 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 28 31 2b 20 69 ributes))..........(setq.i.(1+.i
6480 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 ))..........(if.(esxml-branch-p.
64a0 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d node)..............(esxml--node-
64c0 77 69 74 68 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 29 with-attributes.node.attributes)
64e0 0a 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 72 6f 6f 74 29 29 29 ............node)))......root)))
6500 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 75 6e 64 65 63 6f 72 61 74 65 2d 6e 6f 64 65 20 ..(defun.esxml--undecorate-node.
6520 28 6e 6f 64 65 29 0a 20 20 28 69 66 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f 64 (node)...(if.(esxml-branch-p.nod
6540 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d e).......(let.((attributes.(esxm
6560 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 l-node-attributes.node))).......
6580 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 72 69 62 75 74 65 73 20 6e ..(esxml--node-with-attributes.n
65a0 6f 64 65 20 28 61 73 73 71 2d 64 65 6c 65 74 65 2d 61 6c 6c 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 ode.(assq-delete-all.esxml--symb
65c0 6f 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 ol..............................
65e0 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 61 74 ..............................at
6600 74 72 69 62 75 74 65 73 29 29 29 0a 20 20 20 20 6e 6f 64 65 29 29 0a 0a 28 64 65 66 75 6e 20 65 tributes))).....node))..(defun.e
6620 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 6f 6e 20 28 6e 6f 64 65 29 sxml--retrieve-decoration.(node)
6640 0a 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 65 73 78 6d 6c 2d 2d ...(esxml-node-attribute.esxml--
6660 73 79 6d 62 6f 6c 20 6e 6f 64 65 29 29 0a 0a 0c 0a 3b 3b 3b 20 71 75 65 72 79 69 6e 67 0a 0a 3b symbol.node))....;;;.querying..;
6680 3b 20 4e 4f 54 45 3a 20 73 75 70 70 6f 72 74 69 6e 67 20 73 74 72 75 63 74 75 72 61 6c 20 70 73 ;.NOTE:.supporting.structural.ps
66a0 65 75 64 6f 20 66 75 6e 63 74 69 6f 6e 73 2c 20 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 73 20 eudo.functions,.direct.siblings.
66c0 61 6e 64 0a 3b 3b 20 69 6e 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 73 20 72 65 71 75 69 72 65 and.;;.indirect.siblings.require
66e0 73 20 62 72 65 61 64 74 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65 70 74 68 20 74 72 61 76 65 s.breadth.instead.of.depth.trave
6700 72 73 61 6c 2c 0a 3b 3b 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 63 6f 75 6c 64 20 62 65 rsal,.;;.something.that.could.be
6720 20 65 6d 75 6c 61 74 65 64 20 77 69 74 68 6f 75 74 20 7a 69 70 70 65 72 73 20 69 66 20 79 6f 75 .emulated.without.zippers.if.you
6740 20 68 61 64 20 74 68 65 0a 3b 3b 20 70 61 72 65 6e 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 20 28 .had.the.;;.parent.of.the.node.(
6760 61 6e 64 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 68 69 6c 64 29 2e 2e and.the.position.of.the.child)..
6780 2e 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d 61 74 63 68 65 73 2d 61 74 ...(defun.esxml--node-matches-at
67a0 74 72 69 62 75 74 65 2d 70 20 28 6e 6f 64 65 20 6d 6f 64 69 66 69 65 72 29 0a 20 20 28 6c 65 74 tribute-p.(node.modifier)...(let
67c0 20 28 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 .((attributes.(esxml-node-attrib
67e0 75 74 65 73 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 68 61 79 73 74 61 63 6b 29 0a 20 20 utes.node)).........haystack)...
6800 20 20 28 63 6c 2d 65 76 65 72 79 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 69 74 65 6d 29 0a ..(cl-every......(lambda.(item).
6820 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 69 74 65 6d 29 29 0a 20 .......(let.((type.(car.item))..
6840 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 63 64 72 20 69 74 65 6d 29 29 29 0a ............(value.(cdr.item))).
6860 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 .........(cond...........((eq.ty
6880 70 65 20 27 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74 63 pe.'name)............(let.((matc
68a0 68 20 28 61 73 73 71 20 28 69 6e 74 65 72 6e 20 76 61 6c 75 65 29 20 61 74 74 72 69 62 75 74 65 h.(assq.(intern.value).attribute
68c0 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 61 79 73 74 61 63 6b s)))..............(setq.haystack
68e0 20 28 63 64 72 20 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 .(cdr.match))..............match
6900 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 65 78 61 63 74 2d 6d 61 ))...........((eq.type.'exact-ma
6920 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 68 61 79 73 74 61 63 6b 20 tch)............(equal.haystack.
6940 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 70 72 65 value))...........((eq.type.'pre
6960 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 70 72 fix-match)............(string-pr
6980 65 66 69 78 2d 70 20 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 efix-p.value.haystack)).........
69a0 20 20 28 28 65 71 20 74 79 70 65 20 27 73 75 66 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 ..((eq.type.'suffix-match)......
69c0 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69 78 2d 70 20 76 61 6c 75 65 20 68 61 79 ......(string-suffix-p.value.hay
69e0 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 73 75 62 stack))...........((eq.type.'sub
6a00 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 string-match)............(string
6a20 2d 6d 61 74 63 68 2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 76 61 6c 75 65 29 20 68 61 -match-p.(regexp-quote.value).ha
6a40 79 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 69 6e ystack))...........((eq.type.'in
6a60 63 6c 75 64 65 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 62 65 72 20 clude-match)............(member.
6a80 76 61 6c 75 65 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 68 61 79 73 74 61 63 6b 20 22 20 22 value.(split-string.haystack."."
6aa0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 64 61 73 68 2d 6d 61 )))...........((eq.type.'dash-ma
6ac0 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 65 71 75 61 6c 20 76 61 6c 75 65 tch)............(or.(equal.value
6ae0 20 68 61 79 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e .haystack)................(strin
6b00 67 2d 6d 61 74 63 68 2d 70 20 28 66 6f 72 6d 61 74 20 22 5e 25 73 2d 22 20 28 72 65 67 65 78 70 g-match-p.(format."^%s-".(regexp
6b20 2d 71 75 6f 74 65 20 76 61 6c 75 65 29 29 20 68 61 79 73 74 61 63 6b 29 29 29 0a 20 20 20 20 20 -quote.value)).haystack)))......
6b40 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 6b 6e 6f 77 6e 20 61 74 74 72 69 62 75 74 .....(t.(error."Unknown.attribut
6b60 65 20 6d 6f 64 69 66 69 65 72 22 29 29 29 29 29 0a 20 20 20 20 20 6d 6f 64 69 66 69 65 72 29 29 e.modifier")))))......modifier))
6b80 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d 61 74 63 68 65 73 2d 6d 6f )..(defun.esxml--node-matches-mo
6ba0 64 69 66 69 65 72 2d 70 20 28 6e 6f 64 65 20 74 79 70 65 20 76 61 6c 75 65 29 0a 20 20 28 63 6f difier-p.(node.type.value)...(co
6bc0 6e 64 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 77 69 6c 64 63 61 72 64 29 0a 20 20 20 20 74 nd....((eq.type.'wildcard).....t
6be0 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 74 61 67 29 0a 20 20 20 20 28 65 71 75 61 6c 20 )....((eq.type.'tag).....(equal.
6c00 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 20 76 61 6c 75 65 29 29 0a 20 20 (esxml-node-tag.node).value))...
6c20 20 28 28 65 71 20 74 79 70 65 20 27 69 64 29 0a 20 20 20 20 28 65 71 75 61 6c 20 28 65 73 78 6d .((eq.type.'id).....(equal.(esxm
6c40 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 27 69 64 20 6e 6f 64 65 29 20 76 61 6c 75 65 l-node-attribute.'id.node).value
6c60 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 63 6c 61 73 73 29 0a 20 20 20 20 28 6c 65 74 ))....((eq.type.'class).....(let
6c80 20 28 28 63 6c 61 73 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 27 .((class.(esxml-node-attribute.'
6ca0 63 6c 61 73 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 28 61 6e 64 20 63 6c 61 73 73 20 28 class.node))).......(and.class.(
6cc0 6d 65 6d 62 65 72 20 76 61 6c 75 65 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 63 6c 61 73 73 member.value.(split-string.class
6ce0 20 22 20 22 29 29 29 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 61 74 74 72 69 62 75 74 .".")))))....((eq.type.'attribut
6d00 65 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d 61 74 63 68 65 73 2d 61 74 74 72 e).....(esxml--node-matches-attr
6d20 69 62 75 74 65 2d 70 20 6e 6f 64 65 20 76 61 6c 75 65 29 29 0a 20 20 20 3b 3b 20 54 4f 44 4f 3a ibute-p.node.value))....;;.TODO:
6d40 20 73 75 70 70 6f 72 74 20 73 74 72 75 63 74 75 72 61 6c 20 70 73 65 75 64 6f 20 66 75 6e 63 74 .support.structural.pseudo.funct
6d60 69 6f 6e 73 0a 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 65 72 72 6f 72 20 6f 75 74 20 6f 6e 20 69 6e ions....;;.TODO:.error.out.on.in
6d80 76 61 6c 69 64 20 70 73 65 75 64 6f 2d 63 6c 61 73 73 20 61 72 67 75 6d 65 6e 74 73 0a 20 20 20 valid.pseudo-class.arguments....
6da0 28 74 20 28 65 72 72 6f 72 20 22 55 6e 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 74 74 72 69 62 75 (t.(error."Unimplemented.attribu
6dc0 74 65 20 74 79 70 65 3a 20 25 73 22 20 74 79 70 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 te.type:.%s".type))))..(defun.es
6de0 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 2d 66 6f 72 20 28 61 74 74 72 69 62 75 74 65 73 29 0a xml--find-node-for.(attributes).
6e00 20 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 28 63 6c 2d 65 76 65 72 79 0a 20 ..(lambda.(node).....(cl-every..
6e20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 74 74 72 69 62 75 74 65 29 0a 20 20 20 20 20 20 20 28 ....(lambda.(attribute)........(
6e40 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 61 74 74 72 69 62 75 74 65 29 29 0a 20 20 20 20 let.((type.(car.attribute)).....
6e60 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 63 64 72 20 61 74 74 72 69 62 75 74 65 29 29 .........(value.(cdr.attribute))
6e80 29 0a 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d 61 74 63 68 65 73 2d )..........(esxml--node-matches-
6ea0 6d 6f 64 69 66 69 65 72 2d 70 20 6e 6f 64 65 20 74 79 70 65 20 76 61 6c 75 65 29 29 29 0a 20 20 modifier-p.node.type.value)))...
6ec0 20 20 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d ...attributes)))..(defun.esxml--
6ee0 66 69 6e 64 2d 6e 6f 64 65 73 20 28 72 6f 6f 74 20 63 6f 6d 62 69 6e 61 74 6f 72 20 61 74 74 72 find-nodes.(root.combinator.attr
6f00 69 62 75 74 65 73 29 0a 20 20 28 6c 65 74 2a 20 28 28 74 79 70 65 20 28 63 64 72 20 28 61 73 73 ibutes)...(let*.((type.(cdr.(ass
6f20 71 20 27 63 6f 6d 62 69 6e 61 74 6f 72 20 63 6f 6d 62 69 6e 61 74 6f 72 29 29 29 0a 20 20 20 20 q.'combinator.combinator))).....
6f40 20 20 20 20 20 28 77 61 6c 6b 65 72 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(walker.(cond..............
6f60 20 20 20 20 28 28 6e 6f 74 20 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....((not.type).................
6f80 20 20 27 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..'esxml-find-nodes)............
6fa0 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 64 65 73 63 65 6e 64 61 6e 74 29 0a 20 20 20 ......((eq.type.'descendant)....
6fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 69 6e 64 2d 64 65 73 63 65 ...............'esxml-find-desce
6fe0 6e 64 61 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 ndants)..................((eq.ty
7000 70 65 20 27 63 68 69 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 73 pe.'child)...................'es
7020 78 6d 6c 2d 66 69 6e 64 2d 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 xml-find-children)..............
7040 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 64 69 72 65 63 74 20 73 69 62 6c ....;;.TODO:.support.direct.sibl
7060 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 73 75 ing..................;;.TODO:.su
7080 70 70 6f 72 74 20 69 6e 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 0a 20 20 20 20 20 20 20 20 20 pport.indirect.sibling..........
70a0 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 69 6d 70 6c 65 6d 65 6e 74 65 64 ........(t.(error."Unimplemented
70c0 20 63 6f 6d 62 69 6e 61 74 6f 72 20 25 73 22 20 63 6f 6d 62 69 6e 61 74 6f 72 29 29 29 29 29 0a .combinator.%s".combinator))))).
70e0 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 77 61 6c 6b 65 72 20 28 65 73 78 6d 6c 2d 2d 66 69 6e 64 ....(funcall.walker.(esxml--find
7100 2d 6e 6f 64 65 2d 66 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 20 72 6f 6f 74 29 29 29 0a 0a 28 -node-for.attributes).root)))..(
7120 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 71 75 65 72 79 20 28 73 65 6c 65 63 74 6f 72 20 72 6f 6f defun.esxml--query.(selector.roo
7140 74 29 0a 20 20 28 6c 65 74 2a 20 28 28 61 74 74 72 69 62 75 74 65 73 20 28 70 6f 70 20 73 65 6c t)...(let*.((attributes.(pop.sel
7160 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e 61 74 6f 72 0a 20 20 20 20 ector))..........combinator.....
7180 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 .....(result.(esxml--find-nodes.
71a0 72 6f 6f 74 20 6e 69 6c 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 20 20 20 20 28 77 68 69 6c root.nil.attributes))).....(whil
71c0 65 20 28 61 6e 64 20 72 65 73 75 6c 74 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 20 20 28 73 e.(and.result.selector).......(s
71e0 65 74 71 20 63 6f 6d 62 69 6e 61 74 6f 72 20 28 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 29 0a 20 etq.combinator.(pop.selector))..
7200 20 20 20 20 20 28 73 65 74 71 20 61 74 74 72 69 62 75 74 65 73 20 28 70 6f 70 20 73 65 6c 65 63 .....(setq.attributes.(pop.selec
7220 74 6f 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6c 2d 6d 61 70 tor)).......(setq.result.(cl-map
7240 63 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 can.....................(lambda.
7260 28 6e 6f 64 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 28 65 73 (node).......................(es
7280 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 6e 6f 64 65 20 63 6f 6d 62 69 6e 61 74 6f 72 20 xml--find-nodes.node.combinator.
72a0 61 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 attributes))....................
72c0 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 64 65 .result)).......(setq.result.(de
72e0 6c 71 20 6e 69 6c 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 72 65 73 75 6c 74 29 29 0a 0a 28 lq.nil.result))).....result))..(
7300 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 64 65 6c 65 74 65 2d 64 75 70 73 20 28 69 74 65 6d 73 20 defun.esxml--delete-dups.(items.
7320 74 65 73 74 29 0a 20 20 28 6c 65 74 20 28 28 73 65 65 6e 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 test)...(let.((seen.(make-hash-t
7340 61 62 6c 65 20 3a 74 65 73 74 20 74 65 73 74 29 29 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 able.:test.test)).........result
7360 29 0a 20 20 20 20 28 77 68 69 6c 65 20 69 74 65 6d 73 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 ).....(while.items.......(let.((
7380 69 74 65 6d 20 28 70 6f 70 20 69 74 65 6d 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e item.(pop.items))).........(when
73a0 20 28 6e 6f 74 20 28 67 65 74 68 61 73 68 20 69 74 65 6d 20 73 65 65 6e 29 29 0a 20 20 20 20 20 .(not.(gethash.item.seen))......
73c0 20 20 20 20 20 28 70 75 73 68 20 69 74 65 6d 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 .....(push.item.result).........
73e0 20 20 28 70 75 74 68 61 73 68 20 69 74 65 6d 20 74 20 73 65 65 6e 29 29 29 29 0a 20 20 20 20 28 ..(puthash.item.t.seen)))).....(
7400 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c nreverse.result)))..(defun.esxml
7420 2d 71 75 65 72 79 2d 61 6c 6c 20 28 73 65 6c 65 63 74 6f 72 20 72 6f 6f 74 29 0a 20 20 22 4c 6f -query-all.(selector.root)..."Lo
7440 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 53 45 4c 45 43 cates.all.nodes.satisfying.SELEC
7460 54 4f 52 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 53 45 4c 45 43 54 4f 52 TOR.starting.from.ROOT..SELECTOR
7480 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 43 .must.be.a.string.containing.a.C
74a0 53 53 20 73 65 6c 65 63 74 6f 72 20 6f 72 20 61 20 70 61 72 73 65 64 0a 43 53 53 20 73 65 6c 65 SS.selector.or.a.parsed.CSS.sele
74c0 63 74 6f 72 20 72 65 74 75 72 6e 65 64 20 62 79 20 60 65 73 78 6d 6c 2d 70 61 72 73 65 2d 63 73 ctor.returned.by.`esxml-parse-cs
74e0 73 2d 73 65 6c 65 63 74 6f 72 27 2e 20 20 52 65 74 75 72 6e 73 20 61 0a 6c 69 73 74 20 6f 66 20 s-selector'...Returns.a.list.of.
7500 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 the.nodes.or.nil.if.none.found."
7520 0a 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 73 65 6c 65 63 74 6f 72 29 0a 20 20 20 20 ...(when.(stringp.selector).....
7540 28 73 65 74 71 20 73 65 6c 65 63 74 6f 72 20 28 65 73 78 6d 6c 2d 70 61 72 73 65 2d 63 73 73 2d (setq.selector.(esxml-parse-css-
7560 73 65 6c 65 63 74 6f 72 20 73 65 6c 65 63 74 6f 72 29 29 29 0a 20 20 28 69 66 20 28 3d 20 28 6c selector.selector)))...(if.(=.(l
7580 65 6e 67 74 68 20 73 65 6c 65 63 74 6f 72 29 20 31 29 0a 20 20 20 20 20 20 3b 3b 20 6e 6f 20 63 ength.selector).1).......;;.no.c
75a0 6f 6d 6d 61 73 2c 20 77 65 20 63 61 6e 20 6f 6e 6c 79 20 67 65 74 20 74 68 65 20 73 61 6d 65 20 ommas,.we.can.only.get.the.same.
75c0 6e 6f 64 65 73 20 72 65 70 65 61 74 65 64 6c 79 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 64 nodes.repeatedly.......(esxml--d
75e0 65 6c 65 74 65 2d 64 75 70 73 20 28 65 73 78 6d 6c 2d 2d 71 75 65 72 79 20 28 63 61 72 20 73 65 elete-dups.(esxml--query.(car.se
7600 6c 65 63 74 6f 72 29 20 72 6f 6f 74 29 20 27 65 71 29 0a 20 20 20 20 3b 3b 20 63 6f 6d 6d 61 73 lector).root).'eq).....;;.commas
7620 2c 20 6e 6f 64 65 73 20 6d 69 67 68 74 20 62 65 20 74 68 65 20 73 61 6d 65 20 2a 61 6e 64 2a 20 ,.nodes.might.be.the.same.*and*.
7640 69 6e 20 74 68 65 20 77 72 6f 6e 67 20 6f 72 64 65 72 0a 20 20 20 20 28 73 65 74 71 20 72 6f 6f in.the.wrong.order.....(setq.roo
7660 74 20 28 65 73 78 6d 6c 2d 2d 64 65 63 6f 72 61 74 65 2d 74 72 65 65 20 72 6f 6f 74 29 29 0a 20 t.(esxml--decorate-tree.root))..
7680 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 73 65 ...(let.(result).......(while.se
76a0 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 6e 63 6f lector.........(setq.result.(nco
76c0 6e 63 20 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 71 75 65 72 79 20 28 70 6f 70 20 73 65 6c nc.result.(esxml--query.(pop.sel
76e0 65 63 74 6f 72 29 20 72 6f 6f 74 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 ector).root)))).......(setq.resu
7700 6c 74 20 28 63 6c 2d 73 6f 72 74 20 72 65 73 75 6c 74 20 27 3c 20 3a 6b 65 79 20 27 65 73 78 6d lt.(cl-sort.result.'<.:key.'esxm
7720 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 l--retrieve-decoration)).......(
7740 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6c 2d 64 65 6c 65 74 65 2d 64 75 70 6c 69 63 61 74 65 setq.result.(cl-delete-duplicate
7760 73 20 72 65 73 75 6c 74 20 3a 74 65 73 74 20 27 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.result.:test.'=...............
7780 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 3a 6b 65 79 20 ...........................:key.
77a0 27 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 6f 6e 29 29 0a 20 20 'esxml--retrieve-decoration))...
77c0 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d ....(mapcar.(lambda.(node).(esxm
77e0 6c 2d 2d 75 6e 64 65 63 6f 72 61 74 65 2d 6e 6f 64 65 20 6e 6f 64 65 29 29 20 72 65 73 75 6c 74 l--undecorate-node.node)).result
7800 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 79 20 28 73 65 6c 65 63 74 ))))..(defun.esxml-query.(select
7820 6f 72 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f 64 65 20 73 61 74 69 73 or.root)..."Locates.a.node.satis
7840 66 79 69 6e 67 20 53 45 4c 45 43 54 4f 52 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f fying.SELECTOR.starting.from.ROO
7860 54 2e 0a 53 45 4c 45 43 54 4f 52 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 63 6f 6e T..SELECTOR.must.be.a.string.con
7880 74 61 69 6e 69 6e 67 20 61 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 6f 72 20 61 20 70 61 72 73 taining.a.CSS.selector.or.a.pars
78a0 65 64 0a 43 53 53 20 73 65 6c 65 63 74 6f 72 20 72 65 74 75 72 6e 65 64 20 62 79 20 60 65 73 78 ed.CSS.selector.returned.by.`esx
78c0 6d 6c 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 27 2e 20 20 52 65 74 75 72 6e 73 ml-parse-css-selector'...Returns
78e0 20 74 68 65 0a 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 .the.node.or.nil.if.none.found."
7900 0a 20 20 3b 3b 20 4e 4f 54 45 3a 20 79 6f 75 20 63 61 6e 20 64 6f 20 61 20 62 69 74 20 6c 65 73 ...;;.NOTE:.you.can.do.a.bit.les
7920 73 20 77 6f 72 6b 20 28 74 68 65 20 73 61 76 69 6e 67 73 20 64 65 63 72 65 61 73 65 20 74 68 65 s.work.(the.savings.decrease.the
7940 20 6d 6f 72 65 0a 20 20 3b 3b 20 62 72 61 6e 63 68 65 73 20 74 68 65 20 71 75 65 72 79 20 64 69 .more...;;.branches.the.query.di
7960 73 63 61 72 64 73 29 2c 20 62 75 74 20 69 74 27 73 20 73 69 6d 70 6c 65 72 20 61 6e 64 20 73 61 scards),.but.it's.simpler.and.sa
7980 66 65 72 20 74 6f 20 6a 75 73 74 0a 20 20 3b 3b 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 61 fer.to.just...;;.have.the.same.a
79a0 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 62 6f 74 68 20 65 6e 74 72 79 20 70 6f 69 6e 74 73 0a 20 lgorithm.for.both.entry.points..
79c0 20 28 63 61 72 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 73 65 6c 65 63 74 6f 72 20 .(car.(esxml-query-all.selector.
79e0 72 6f 6f 74 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 73 78 6d 6c 2d 71 75 65 72 79 29 0a root)))..(provide.'esxml-query).
7a00 3b 3b 3b 20 65 73 78 6d 6c 2d 71 75 65 72 79 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 ;;;.esxml-query.el.ends.here....
7a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c00 65 73 78 6d 6c 2d 32 30 32 35 30 34 32 31 2e 31 36 33 32 2f 65 73 78 6d 6c 2e 65 6c 00 00 00 00 esxml-20250421.1632/esxml.el....
7c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c60 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
7c80 30 30 32 34 32 37 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 32 30 00 20 30 00 00 00 0024275.00000000000.013620..0...
7ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d00 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...................
7d20 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...................
7d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e00 3b 3b 3b 20 65 73 78 6d 6c 2e 65 6c 20 2d 2d 2d 20 4c 69 62 72 61 72 79 20 66 6f 72 20 77 6f 72 ;;;.esxml.el.---.Library.for.wor
7e20 6b 69 6e 67 20 77 69 74 68 20 78 6d 6c 20 76 69 61 20 65 73 78 6d 6c 20 61 6e 64 20 73 78 6d 6c king.with.xml.via.esxml.and.sxml
7e40 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 0a 0a 3b 3b 20 41 75 74 68 6f .;;.Copyright.(C).2012..;;.Autho
7e60 72 3a 20 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 20 3c 69 7a 61 6b 30 30 r:.Vanya.Izaksonas-Smith.<izak00
7e80 30 32 20 61 74 20 75 6d 6e 20 64 6f 74 20 65 64 75 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 02.at.umn.dot.edu>.;;.Maintainer
7ea0 3a 20 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 0a 3b 3b 20 55 52 4c 3a 20 :.Vanya.Izaksonas-Smith.;;.URL:.
7ec0 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 6c 69 37 31 33 2f 65 73 78 6d 6c https://github.com/tali713/esxml
7ee0 0a 3b 3b 20 43 72 65 61 74 65 64 3a 20 31 35 74 68 20 41 75 67 75 73 74 20 32 30 31 32 0a 3b 3b .;;.Created:.15th.August.2012.;;
7f00 20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 32 35 30 34 32 31 2e 31 36 33 32 0a .Package-Version:.20250421.1632.
7f20 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 61 66 66 61 64 61 31 34 33 66 65 ;;.Package-Revision:.affada143fe
7f40 64 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 6d 61 63 73 20 22 d.;;.Package-Requires:.((emacs."
7f60 32 34 2e 31 22 29 20 28 63 6c 2d 6c 69 62 20 22 30 2e 35 22 29 29 0a 3b 3b 20 4b 65 79 77 6f 72 24.1").(cl-lib."0.5")).;;.Keywor
7f80 64 73 3a 20 74 6f 6f 6c 73 2c 20 6c 69 73 70 2c 20 63 6f 6d 6d 0a 3b 3b 20 44 65 73 63 72 69 70 ds:.tools,.lisp,.comm.;;.Descrip
7fa0 74 69 6f 6e 3a 20 41 20 6c 69 62 72 61 72 79 20 66 6f 72 20 65 61 73 69 6c 79 20 67 65 6e 65 72 tion:.A.library.for.easily.gener
7fc0 61 74 69 6e 67 20 58 4d 4c 2f 58 48 54 4d 4c 20 69 6e 20 65 6c 69 73 70 0a 3b 3b 0a 3b 3b 20 54 ating.XML/XHTML.in.elisp.;;.;;.T
7fe0 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f his.program.is.free.software;.yo
8000 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 u.can.redistribute.it.and/or.mod
8020 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 ify.;;.it.under.the.terms.of.the
8040 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 .GNU.General.Public.License.as.p
8060 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 ublished.by.;;.the.Free.Software
8080 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 .Foundation,.either.version.3.of
80a0 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 .the.License,.or.;;.(at.your.opt
80c0 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 ion).any.later.version...;;.This
80e0 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 .program.is.distributed.in.the.h
8100 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 ope.that.it.will.be.useful,.;;.b
8120 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 ut.WITHOUT.ANY.WARRANTY;.without
8140 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b .even.the.implied.warranty.of.;;
8160 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 .MERCHANTABILITY.or.FITNESS.FOR.
8180 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b A.PARTICULAR.PURPOSE...See.the.;
81a0 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 ;.GNU.General.Public.License.for
81c0 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 .more.details...;;.You.should.ha
81e0 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 ve.received.a.copy.of.the.GNU.Ge
8200 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 neral.Public.License.;;.along.wi
8220 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 th.this.program...If.not,.see.<h
8240 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b ttp://www.gnu.org/licenses/>...;
8260 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 58 4d 4c 2f 58 ;;.Commentary:..;;.This.is.XML/X
8280 48 54 4d 4c 20 64 6f 6e 65 20 77 69 74 68 20 53 2d 45 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 20 HTML.done.with.S-Expressions.in.
82a0 45 6d 61 63 73 4c 69 73 70 2e 20 20 53 69 6d 70 6c 79 2c 0a 3b 3b 20 74 68 69 73 20 69 73 20 74 EmacsLisp...Simply,.;;.this.is.t
82c0 68 65 20 65 61 73 69 65 73 74 20 77 61 79 20 74 6f 20 77 72 69 74 65 20 48 54 4d 4c 20 6f 72 20 he.easiest.way.to.write.HTML.or.
82e0 58 4d 4c 20 69 6e 20 4c 69 73 70 2e 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 72 79 20 XML.in.Lisp..;;.;;.This.library.
8300 75 73 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 66 6f 72 6d 20 6f 66 20 58 4d 4c 20 72 65 70 72 uses.the.native.form.of.XML.repr
8320 65 73 65 6e 74 61 74 69 6f 6e 20 61 73 20 75 73 65 64 20 62 79 0a 3b 3b 20 6d 61 6e 79 20 6c 69 esentation.as.used.by.;;.many.li
8340 62 72 61 72 69 65 73 20 61 6c 72 65 61 64 79 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 69 6e 20 braries.already.included.within.
8360 65 6d 61 63 73 2e 20 20 54 68 69 73 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 0a 3b 3b 20 77 emacs...This.representation.;;.w
8380 69 6c 6c 20 62 65 20 72 65 66 65 72 72 65 64 20 74 6f 20 61 73 20 22 65 73 78 6d 6c 22 20 74 68 ill.be.referred.to.as."esxml".th
83a0 72 6f 75 67 68 6f 75 74 20 74 68 69 73 20 6c 69 62 72 61 72 79 2e 20 20 53 65 65 0a 3b 3b 20 60 roughout.this.library...See.;;.`
83c0 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 27 20 66 6f 72 20 61 20 63 6f 6e 63 69 73 65 20 64 65 73 63 esxml-to-xml'.for.a.concise.desc
83e0 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 72 6d 61 74 2e 0a 3b 3b 0a 3b 3b 20 54 68 69 ription.of.the.format..;;.;;.Thi
8400 73 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 s.library.is.not.intended.to.be.
8420 75 73 65 64 20 64 69 72 65 63 74 6c 79 20 62 79 20 61 20 75 73 65 72 2c 20 74 68 6f 75 67 68 0a used.directly.by.a.user,.though.
8440 3b 3b 20 69 74 20 63 65 72 74 61 69 6e 6c 79 20 63 6f 75 6c 64 20 62 65 2e 20 20 49 74 20 63 6f ;;.it.certainly.could.be...It.co
8460 75 6c 64 20 62 65 20 75 73 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 20 73 74 61 74 69 63 20 68 uld.be.used.to.generate.static.h
8480 74 6d 6c 2c 0a 3b 3b 20 6f 72 20 75 73 65 20 61 20 6c 69 62 72 61 72 79 20 6c 69 6b 65 20 60 65 tml,.;;.or.use.a.library.like.`e
84a0 6c 6e 6f 64 65 27 20 74 6f 20 73 65 72 76 65 20 64 79 6e 61 6d 69 63 20 70 61 67 65 73 2e 20 20 lnode'.to.serve.dynamic.pages...
84c0 4f 72 20 65 76 65 6e 20 74 6f 0a 3b 3b 20 65 78 74 72 61 63 74 20 61 20 66 6f 72 6d 20 66 72 6f Or.even.to.;;.extract.a.form.fro
84e0 6d 20 61 20 73 69 74 65 20 74 6f 20 70 72 6f 64 75 63 65 20 61 6e 20 41 50 49 2e 0a 3b 3b 0a 3b m.a.site.to.produce.an.API..;;.;
8500 3b 20 54 4f 44 4f 3a 20 42 65 74 74 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2c 20 6d 6f ;.TODO:.Better.documentation,.mo
8520 72 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 2e 0a 3b 3b 0a 3b 3b 20 4e 4f 54 49 43 45 3a 20 43 6f re.convenience..;;.;;.NOTICE:.Co
8540 64 65 20 62 61 73 65 20 77 69 6c 6c 20 62 65 20 74 72 61 6e 73 69 74 69 6f 6e 69 6e 67 20 74 6f de.base.will.be.transitioning.to
8560 20 75 73 69 6e 67 20 70 63 61 73 65 20 69 6e 73 74 65 61 64 20 6f 66 0a 3b 3b 20 64 65 73 74 72 .using.pcase.instead.of.;;.destr
8580 75 63 74 75 72 69 6e 67 20 62 69 6e 64 20 77 68 65 72 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e ucturing.bind.wherever.possible.
85a0 20 20 49 66 20 74 68 69 73 20 6c 65 61 64 73 20 74 6f 20 68 61 72 64 20 74 6f 0a 3b 3b 20 64 65 ..If.this.leads.to.hard.to.;;.de
85c0 62 75 67 20 63 6f 64 65 2c 20 70 6c 65 61 73 65 20 6c 65 74 20 6d 65 20 6b 6e 6f 77 2c 20 61 6e bug.code,.please.let.me.know,.an
85e0 64 20 49 20 77 69 6c 6c 20 64 6f 20 77 68 61 74 65 76 65 72 20 49 20 63 61 6e 20 74 6f 0a 3b 3b d.I.will.do.whatever.I.can.to.;;
8600 20 72 65 73 6f 6c 76 65 20 74 68 65 73 65 20 69 73 73 75 65 73 2e 0a 3b 3b 0a 3b 3b 3b 20 43 6f .resolve.these.issues..;;.;;;.Co
8620 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 de:.(require.'cl-lib).(require.'
8640 78 6d 6c 29 0a 28 72 65 71 75 69 72 65 20 27 70 63 61 73 65 29 0a 0a 28 64 65 66 75 6e 20 73 74 xml).(require.'pcase)..(defun.st
8660 72 69 6e 67 2d 74 72 69 6d 2d 77 68 69 74 65 73 70 61 63 65 20 28 73 74 72 69 6e 67 29 0a 20 20 ring-trim-whitespace.(string)...
8680 22 41 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72 69 70 73 20 74 68 65 20 77 "A.simple.function,.strips.the.w
86a0 68 69 74 65 73 70 61 63 65 20 66 72 6f 6d 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 0a 65 6e 64 hitespace.from.beginning.and.end
86c0 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2e 20 20 4c 65 61 76 65 73 20 61 6c 6c 20 6f 74 68 65 .of.the.string...Leaves.all.othe
86e0 72 20 77 68 69 74 65 73 70 61 63 65 20 75 6e 74 6f 75 63 68 65 64 2e 22 0a 20 20 28 72 65 70 6c r.whitespace.untouched."...(repl
8700 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 28 72 78 20 73 74 72 69 ace-regexp-in-string....(rx.stri
8720 6e 67 2d 73 74 61 72 74 20 28 2a 20 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 ng-start.(*.whitespace)........(
8740 67 72 6f 75 70 20 28 2b 3f 20 61 6e 79 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 28 2a 20 77 group.(+?.anything))........(*.w
8760 68 69 74 65 73 70 61 63 65 29 20 73 74 72 69 6e 67 2d 65 6e 64 29 0a 20 20 20 22 5c 5c 31 22 0a hitespace).string-end)...."\\1".
8780 20 20 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 ...string))..(defun.esxml-trim-w
87a0 73 20 28 65 73 78 6d 6c 29 0a 20 20 22 54 68 69 73 20 6d 61 79 20 63 61 75 73 65 20 70 72 6f 62 s.(esxml)..."This.may.cause.prob
87c0 6c 65 6d 73 2c 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 70 61 72 73 69 6e 67 20 78 6d lems,.is.intended.for.parsing.xm
87e0 6c 20 69 6e 74 6f 20 73 78 6d 6c 0a 62 75 74 20 6d 61 79 20 65 72 6f 6e 65 6f 75 73 6c 79 20 64 l.into.sxml.but.may.eroneously.d
8800 65 6c 65 74 65 20 64 65 73 69 72 61 62 6c 65 20 77 68 69 74 65 20 73 70 61 63 65 2e 22 0a 20 20 elete.desirable.white.space."...
8820 28 69 66 20 28 73 74 72 69 6e 67 70 20 65 73 78 6d 6c 29 20 28 73 74 72 69 6e 67 2d 74 72 69 6d (if.(stringp.esxml).(string-trim
8840 2d 77 68 69 74 65 73 70 61 63 65 20 65 73 78 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 -whitespace.esxml).....(pcase-le
8860 74 20 28 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c t.((`(,tag.,attrs...,body).esxml
8880 29 29 0a 20 20 20 20 20 20 60 28 2c 74 61 67 20 2c 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 )).......`(,tag.,attrs..........
88a0 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 27 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 62 6f 64 ....,@(mapcar.'esxml-trim-ws.bod
88c0 79 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 74 74 72 70 20 28 61 74 74 72 29 0a 20 20 22 52 y)))))..(defun.attrp.(attr)..."R
88e0 65 74 75 72 6e 73 20 74 20 69 66 20 61 74 74 72 20 69 73 20 61 20 61 6e 20 65 73 78 6d 6c 20 61 eturns.t.if.attr.is.a.an.esxml.a
8900 74 74 72 69 62 75 74 65 2e 0a 41 6e 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 65 20 69 73 20 ttribute..An.esxml.attribute.is.
8920 61 20 63 6f 6e 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 28 73 79 6d 62 6f 6c 20 2e 20 73 74 72 a.cons.of.the.form.(symbol...str
8940 69 6e 67 29 22 0a 20 28 61 6e 64 20 28 63 6f 6e 73 70 20 61 74 74 72 29 0a 20 20 20 20 20 20 20 ing)"..(and.(consp.attr)........
8960 28 73 79 6d 62 6f 6c 70 20 28 63 61 72 20 61 74 74 72 29 29 0a 20 20 20 20 20 20 20 28 73 74 72 (symbolp.(car.attr))........(str
8980 69 6e 67 70 20 28 63 64 72 20 61 74 74 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c ingp.(cdr.attr))))..(defun.esxml
89a0 2d 2d 63 6f 6e 76 65 72 74 2d 70 61 69 72 20 28 61 74 74 72 29 0a 20 20 22 43 6f 6e 76 65 72 74 --convert-pair.(attr)..."Convert
89c0 73 20 66 72 6f 6d 20 63 6f 6e 73 20 63 65 6c 6c 20 74 6f 20 61 74 74 72 69 62 75 74 65 20 70 61 s.from.cons.cell.to.attribute.pa
89e0 69 72 2e 20 20 4e 6f 74 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 67 65 6e 65 72 61 6c 20 75 73 ir...Not.intended.for.general.us
8a00 65 2e 22 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 63 61 72 20 2e 20 2c 63 64 72 e."...(pcase-let.((`(,car...,cdr
8a20 29 20 61 74 74 72 29 29 0a 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 63 64 72 20 ).attr)).....(cl-check-type.cdr.
8a40 73 74 72 69 6e 67 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 string).....(concat.(symbol-name
8a60 20 63 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 3d 22 0a 20 20 20 20 20 20 20 20 20 20 .car)............."="...........
8a80 20 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 ..(prin1-to-string.(xml-escape-s
8aa0 74 72 69 6e 67 20 63 64 72 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 74 74 72 73 70 20 28 61 tring.cdr)))))..(defun.attrsp.(a
8ac0 74 74 72 73 29 0a 20 20 20 20 22 52 65 74 75 72 6e 73 20 74 20 69 66 20 61 74 74 72 73 20 69 73 ttrs)....."Returns.t.if.attrs.is
8ae0 20 61 20 6c 69 73 74 20 6f 66 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 65 73 2e 0a 0a 53 65 .a.list.of.esxml.attributes...Se
8b00 65 3a 20 60 61 74 74 72 70 27 22 0a 20 20 28 61 6e 64 20 28 6c 69 73 74 70 20 61 74 74 72 73 29 e:.`attrp'"...(and.(listp.attrs)
8b20 0a 20 20 20 20 20 20 20 28 63 6c 2d 65 76 65 72 79 20 28 6c 61 6d 62 64 61 20 28 61 74 74 72 29 ........(cl-every.(lambda.(attr)
8b40 0a 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 63 6f 6e 73 70 20 ....................(and.(consp.
8b60 61 74 74 72 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 28 73 attr).........................(s
8b80 79 6d 62 6f 6c 70 20 28 63 61 72 20 61 74 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ymbolp.(car.attr))..............
8ba0 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 70 20 28 63 64 72 20 61 74 74 72 29 29 29 ...........(stringp.(cdr.attr)))
8bc0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 73 29 29 29 0a 0a 28 64 65 )..................attrs)))..(de
8be0 66 75 6e 20 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 28 65 73 78 6d 6c 29 0a fun.esxml-validate-form.(esxml).
8c00 20 20 22 41 20 66 61 73 74 20 65 73 78 6d 6c 20 76 61 6c 69 64 61 74 6f 72 2e 20 20 57 69 6c 6c .."A.fast.esxml.validator...Will
8c20 20 65 72 72 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 73 75 62 70 61 72 74 73 20 6d 61 6b 69 6e .error.on.invalid.subparts.makin
8c40 67 0a 69 74 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 68 69 6e 64 73 69 67 68 74 20 74 65 73 74 g.it.suitable.for.hindsight.test
8c60 69 6e 67 2e 22 0a 20 20 28 63 6f 6e 64 20 28 28 73 74 72 69 6e 67 70 20 65 73 78 6d 6c 29 20 6e ing."...(cond.((stringp.esxml).n
8c80 69 6c 29 0a 20 20 20 20 20 20 20 20 28 28 3c 20 28 6c 65 6e 67 74 68 20 65 73 78 6d 6c 29 20 32 il).........((<.(length.esxml).2
8ca0 29 0a 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 25 73 20 69 73 20 74 6f 6f 20 73 68 6f )..........(error."%s.is.too.sho
8cc0 72 74 20 74 6f 20 62 65 20 61 20 76 61 6c 69 64 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 6f rt.to.be.a.valid.esxml.expressio
8ce0 6e 22 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 20 20 20 28 74 20 28 70 63 61 73 65 2d 6c 65 74 n".esxml)).........(t.(pcase-let
8d00 20 28 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 .((`(,tag.,attrs...,body).esxml)
8d20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 74 61 )..............(cl-check-type.ta
8d40 67 20 73 79 6d 62 6f 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b g.symbol)..............(cl-check
8d60 2d 74 79 70 65 20 61 74 74 72 73 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -type.attrs.attrs)..............
8d80 28 6d 61 70 63 61 72 20 27 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 62 6f 64 (mapcar.'esxml-validate-form.bod
8da0 79 29 29 29 29 29 0a 0a 3b 3b 20 57 68 69 6c 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 y)))))..;;.While.the.following.c
8dc0 6f 75 6c 64 20 63 65 72 74 61 69 6e 6c 79 20 68 61 76 65 20 62 65 65 6e 20 77 72 69 74 74 65 6e ould.certainly.have.been.written
8de0 20 75 73 69 6e 67 20 66 6f 72 6d 61 74 2c 0a 3b 3b 20 63 6f 6e 63 61 74 20 6d 61 6b 65 73 20 74 .using.format,.;;.concat.makes.t
8e00 68 65 6d 20 65 61 73 69 65 72 20 74 6f 20 72 65 61 64 2e 20 20 55 70 64 61 74 65 20 6c 61 74 65 hem.easier.to.read...Update.late
8e20 72 20 69 66 20 6e 65 63 63 65 73 61 72 79 20 66 6f 72 0a 3b 3b 20 65 66 66 69 63 69 65 6e 63 79 r.if.neccesary.for.;;.efficiency
8e40 2e 0a 0a 3b 3b 20 54 68 6f 75 67 68 20 61 74 20 66 69 72 73 74 20 67 6c 61 6e 63 65 20 74 68 65 ...;;.Though.at.first.glance.the
8e60 20 72 65 63 75 72 73 69 76 65 20 6e 61 74 75 72 65 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 .recursive.nature.of.this.functi
8e80 6f 6e 20 6d 69 67 68 74 0a 3b 3b 20 67 69 76 65 20 6f 6e 65 20 70 61 75 73 65 2c 20 73 69 6e 63 on.might.;;.give.one.pause,.sinc
8ea0 65 20 78 6d 6c 20 69 73 20 61 20 72 65 63 75 72 73 69 76 65 20 64 61 74 61 20 74 79 70 65 2c 20 e.xml.is.a.recursive.data.type,.
8ec0 61 20 72 65 63 75 72 73 69 76 65 0a 3b 3b 20 70 61 72 73 65 72 20 69 73 20 61 6e 20 6f 70 74 69 a.recursive.;;.parser.is.an.opti
8ee0 6d 61 6c 20 73 74 72 61 74 65 67 79 2e 20 20 65 61 63 68 20 6e 6f 64 65 20 77 69 6c 6c 20 62 65 mal.strategy...each.node.will.be
8f00 20 76 69 73 69 74 65 64 20 65 78 61 63 74 6c 79 0a 3b 3b 20 6f 6e 63 65 20 64 75 72 69 6e 67 20 .visited.exactly.;;.once.during.
8f20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 46 75 72 74 68 65 the.transformation..;;.;;.Furthe
8f40 72 2c 20 73 69 6e 63 65 20 61 20 73 74 72 69 6e 67 20 69 73 20 61 20 74 65 72 6d 69 6e 61 6c 20 r,.since.a.string.is.a.terminal.
8f60 6e 6f 64 65 20 61 6e 64 20 73 69 6e 63 65 20 78 6d 6c 20 63 61 6e 20 62 65 0a 3b 3b 20 72 65 70 node.and.since.xml.can.be.;;.rep
8f80 72 65 73 65 6e 74 65 64 20 61 73 20 61 20 73 74 72 69 6e 67 2c 20 6e 6f 6e 20 64 79 6e 61 6d 69 resented.as.a.string,.non.dynami
8fa0 63 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 70 61 67 65 20 6d 61 79 20 62 65 0a 3b 3b c.portions.of.the.page.may.be.;;
8fc0 20 70 72 65 63 61 63 68 65 64 20 71 75 69 74 65 20 65 61 73 69 6c 79 2e 0a 28 64 65 66 75 6e 20 .precached.quite.easily..(defun.
8fe0 65 73 78 6d 6c 2d 2d 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 28 65 73 78 6d 6c 29 0a esxml--to-xml-recursive.(esxml).
9000 20 20 28 70 63 61 73 65 20 65 73 78 6d 6c 0a 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 ..(pcase.esxml.....((pred.string
9020 70 29 0a 20 20 20 20 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e 67 20 65 73 78 6d 6c p)......(xml-escape-string.esxml
9040 29 29 0a 20 20 20 20 28 60 28 72 61 77 2d 73 74 72 69 6e 67 20 2c 73 74 72 69 6e 67 29 0a 20 20 )).....(`(raw-string.,string)...
9060 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 73 74 72 69 6e 67 20 73 74 72 69 6e 67 70 ...(cl-check-type.string.stringp
9080 29 0a 20 20 20 20 20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 )......string).....(`(comment.ni
90a0 6c 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 21 2d 2d 20 22 20 62 6f l.,body)......(concat."<!--.".bo
90c0 64 79 20 22 20 2d 2d 3e 22 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e dy.".-->")).....(`(,tag.,attrs..
90e0 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 3b 3b 20 63 6f 64 65 20 67 6f 65 73 20 68 65 72 65 20 74 .,body)......;;.code.goes.here.t
9100 6f 20 63 61 74 63 68 20 69 6e 76 61 6c 69 64 20 64 61 74 61 2e 0a 20 20 20 20 20 28 63 6f 6e 63 o.catch.invalid.data.......(conc
9120 61 74 20 22 3c 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 0a 20 20 20 20 20 20 20 at."<".(symbol-name.tag)........
9140 20 20 20 20 20 20 28 77 68 65 6e 20 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(when.attrs...............
9160 20 28 63 6f 6e 63 61 74 20 22 20 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d .(concat.".".(mapconcat.'esxml--
9180 63 6f 6e 76 65 72 74 2d 70 61 69 72 20 61 74 74 72 73 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 convert-pair.attrs."."))).......
91a0 20 20 20 20 20 20 20 28 69 66 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(if.body.................
91c0 20 28 63 6f 6e 63 61 74 20 22 3e 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d .(concat.">".(mapconcat.'esxml--
91e0 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 62 6f 64 79 20 22 22 29 0a 20 20 20 20 20 20 to-xml-recursive.body."").......
9200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 2f 22 20 28 73 79 6d 62 6f 6c 2d ..................."</".(symbol-
9220 6e 61 6d 65 20 74 61 67 29 20 22 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f name.tag).">")................"/
9240 3e 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 65 73 >")))))..(defun.esxml-to-xml.(es
9260 78 6d 6c 29 0a 20 20 22 54 68 69 73 20 74 72 61 6e 73 6c 61 74 65 73 20 61 6e 20 65 73 78 6d 6c xml)..."This.translates.an.esxml
9280 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 69 2e 65 2e 20 74 68 61 74 20 77 68 69 63 68 20 69 73 20 .expression,.i.e..that.which.is.
92a0 72 65 74 75 72 6e 65 64 0a 62 79 20 78 6d 6c 2d 70 61 72 73 65 2d 72 65 67 69 6f 6e 2e 20 54 68 returned.by.xml-parse-region..Th
92c0 65 20 73 74 72 75 63 74 75 72 65 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 20 61 6e 79 20 6f 66 e.structure.is.defined.as.any.of
92e0 20 74 68 65 0a 66 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 73 3a 0a 0a 2d 20 41 20 73 74 72 69 6e .the.following.forms:..-.A.strin
9300 67 2e 0a 0a 20 53 54 52 49 4e 47 0a 0a 53 54 52 49 4e 47 3a 20 74 68 65 20 73 74 72 69 6e 67 20 g....STRING..STRING:.the.string.
9320 69 74 20 69 73 20 72 65 74 75 72 6e 65 64 20 77 69 74 68 20 65 6e 74 69 74 69 65 73 20 65 73 63 it.is.returned.with.entities.esc
9340 61 70 65 64 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 66 69 72 73 74 20 65 aped..-.A.list.where.the.first.e
9360 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 72 61 77 2d 73 74 72 69 6e 67 20 73 79 6d 62 6f 6c 20 lement.is.the.raw-string.symbol.
9380 61 6e 64 20 74 68 65 0a 20 20 73 65 63 6f 6e 64 20 69 73 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 and.the...second.is.a.string....
93a0 28 72 61 77 2d 73 74 72 69 6e 67 20 53 54 52 49 4e 47 29 0a 0a 53 54 52 49 4e 47 3a 20 74 68 65 (raw-string.STRING)..STRING:.the
93c0 20 73 74 72 69 6e 67 20 69 73 20 72 65 74 75 72 6e 65 64 20 75 6e 63 68 61 6e 67 65 64 2e 20 54 .string.is.returned.unchanged..T
93e0 68 69 73 20 61 6c 6c 6f 77 73 20 66 6f 72 20 63 61 63 68 69 6e 67 0a 20 20 20 20 20 20 20 20 6f his.allows.for.caching.........o
9400 66 20 61 6e 79 20 63 6f 6e 73 74 61 6e 74 20 70 61 72 74 73 2c 20 73 75 63 68 20 61 73 20 68 65 f.any.constant.parts,.such.as.he
9420 61 64 65 72 73 20 61 6e 64 20 66 6f 6f 74 65 72 73 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 aders.and.footers...-.A.list.whe
9440 72 65 20 74 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 63 6f 6d 6d re.the.first.element.is.the.comm
9460 65 6e 74 20 73 79 6d 62 6f 6c 20 61 6e 64 20 74 68 65 0a 20 20 73 65 63 6f 6e 64 20 69 73 20 61 ent.symbol.and.the...second.is.a
9480 20 73 74 72 69 6e 67 2e 0a 0a 20 28 63 6f 6d 6d 65 6e 74 20 53 54 52 49 4e 47 29 0a 0a 53 54 52 .string....(comment.STRING)..STR
94a0 49 4e 47 3a 20 74 68 65 20 73 74 72 69 6e 67 20 69 73 20 65 6d 62 65 64 64 65 64 20 69 6e 20 61 ING:.the.string.is.embedded.in.a
94c0 20 48 54 4d 4c 20 63 6f 6d 6d 65 6e 74 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 .HTML.comment...-.A.list.where.t
94e0 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 74 61 67 2c 20 74 68 65 he.first.element.is.the.tag,.the
9500 20 73 65 63 6f 6e 64 20 69 73 0a 61 6e 20 61 6c 69 73 74 20 6f 66 20 61 74 74 72 69 62 75 74 65 .second.is.an.alist.of.attribute
9520 20 76 61 6c 75 65 20 70 61 69 72 73 20 61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f .value.pairs.and.the.remainder.o
9540 66 20 74 68 65 20 6c 69 73 74 0a 69 73 20 30 20 6f 72 20 6d 6f 72 65 20 65 73 78 6d 6c 20 65 6c f.the.list.is.0.or.more.esxml.el
9560 65 6d 65 6e 74 73 2e 0a 0a 20 28 54 41 47 20 41 54 54 52 53 20 26 72 65 73 74 20 42 4f 44 59 29 ements....(TAG.ATTRS.&rest.BODY)
9580 0a 0a 54 41 47 3a 20 69 73 20 74 68 65 20 74 61 67 20 61 6e 64 20 6d 75 73 74 20 62 65 20 61 20 ..TAG:.is.the.tag.and.must.be.a.
95a0 73 79 6d 62 6f 6c 2e 0a 0a 41 54 54 52 53 3a 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 61 symbol...ATTRS:.is.an.alist.of.a
95c0 74 74 72 69 62 75 74 65 20 70 61 69 72 73 20 65 61 63 68 20 70 61 69 72 20 6d 75 73 74 20 62 65 ttribute.pairs.each.pair.must.be
95e0 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 20 66 6f 72 6d 20 28 4b 45 59 20 2e 20 56 41 4c 55 45 .of.the........form.(KEY...VALUE
9600 29 2e 0a 0a 4b 45 59 3a 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 74 74 72 )...KEY:.is.the.name.of.the.attr
9620 69 62 75 74 65 20 61 6e 64 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e 0a 0a 56 41 4c ibute.and.must.be.a.symbol...VAL
9640 55 45 3a 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 UE:.is.the.value.of.the.attribut
9660 65 20 61 6e 64 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0a 0a 42 4f 44 59 3a 20 69 e.and.must.be.a.string...BODY:.i
9680 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 s.zero.or.more.esxml.expressions
96a0 2e 20 20 48 61 76 69 6e 67 20 6e 6f 20 62 6f 64 79 20 66 6f 72 6d 73 0a 20 20 20 20 20 20 69 6d ...Having.no.body.forms.......im
96c0 70 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 74 61 67 20 73 68 6f 75 6c 64 20 62 65 20 73 65 6c plies.that.the.tag.should.be.sel
96e0 66 20 63 6c 6f 73 65 64 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 0a 20 20 20 20 20 20 6f 6e 65 f.closed...If.there.is.......one
9700 20 6f 72 20 6d 6f 72 65 20 62 6f 64 79 20 66 6f 72 6d 73 20 74 68 65 20 74 61 67 20 77 69 6c 6c .or.more.body.forms.the.tag.will
9720 20 61 6c 77 61 79 73 20 62 65 20 65 78 70 6c 69 63 69 74 6c 79 0a 20 20 20 20 20 20 63 6c 6f 73 .always.be.explicitly.......clos
9740 65 64 2c 20 65 76 65 6e 20 69 66 20 74 68 65 79 20 61 72 65 20 74 68 65 20 65 6d 70 74 79 20 73 ed,.even.if.they.are.the.empty.s
9760 74 72 69 6e 67 2e 22 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 tring."...(condition-case.nil...
9780 20 20 20 20 28 65 73 78 6d 6c 2d 2d 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 65 73 78 ....(esxml--to-xml-recursive.esx
97a0 6d 6c 29 0a 20 20 20 20 28 65 72 72 6f 72 20 28 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 ml).....(error.(esxml-validate-f
97c0 6f 72 6d 20 65 73 78 6d 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 70 2d 65 73 78 6d 6c 2d 74 orm.esxml))))..(defun.pp-esxml-t
97e0 6f 2d 78 6d 6c 20 28 65 73 78 6d 6c 29 0a 20 20 22 54 68 69 73 20 74 72 61 6e 73 6c 61 74 65 73 o-xml.(esxml)..."This.translates
9800 20 61 6e 20 65 73 78 6d 6c 20 65 78 70 72 65 73 69 6f 6e 20 61 73 20 60 65 73 78 6d 6c 2d 74 6f .an.esxml.expresion.as.`esxml-to
9820 2d 78 6d 6c 27 20 62 75 74 0a 69 6e 64 65 6e 74 73 20 69 74 20 66 6f 72 20 65 61 73 65 20 6f 66 -xml'.but.indents.it.for.ease.of
9840 20 68 75 6d 61 6e 20 72 65 61 64 61 62 69 6c 69 74 79 2c 20 69 74 20 69 73 20 6e 65 63 65 73 73 .human.readability,.it.is.necess
9860 61 72 69 6c 79 0a 73 6c 6f 77 65 72 20 61 6e 64 20 77 69 6c 6c 20 70 72 6f 64 75 63 65 20 6c 6f arily.slower.and.will.produce.lo
9880 6e 67 65 72 20 6f 75 74 70 75 74 2e 22 0a 20 20 28 70 63 61 73 65 20 65 73 78 6d 6c 0a 20 20 20 nger.output."...(pcase.esxml....
98a0 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 28 78 6d 6c 2d 65 73 63 61 70 .((pred.stringp)......(xml-escap
98c0 65 2d 73 74 72 69 6e 67 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 28 60 28 72 61 77 2d 73 74 72 69 e-string.esxml)).....(`(raw-stri
98e0 6e 67 20 2c 73 74 72 69 6e 67 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 ng.,string)......(cl-check-type.
9900 73 74 72 69 6e 67 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 73 74 72 69 6e 67 29 0a 20 20 20 string.stringp)......string)....
9920 20 28 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6f 6e .(`(comment.nil.,body)......(con
9940 63 61 74 20 22 3c 21 2d 2d 20 22 20 62 6f 64 79 20 22 20 2d 2d 3e 22 29 29 0a 20 20 20 20 28 60 cat."<!--.".body.".-->")).....(`
9960 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6c 2d 63 (,tag.,attrs...,body)......(cl-c
9980 68 65 63 6b 2d 74 79 70 65 20 74 61 67 20 73 79 6d 62 6f 6c 29 0a 20 20 20 20 20 28 63 6c 2d 63 heck-type.tag.symbol)......(cl-c
99a0 68 65 63 6b 2d 74 79 70 65 20 61 74 74 72 73 20 61 74 74 72 73 29 0a 20 20 20 20 20 28 63 6f 6e heck-type.attrs.attrs)......(con
99c0 63 61 74 20 22 3c 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 0a 20 20 20 20 20 20 cat."<".(symbol-name.tag).......
99e0 20 20 20 20 20 20 20 28 77 68 65 6e 20 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(when.attrs..............
9a00 20 20 28 63 6f 6e 63 61 74 20 22 20 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d ..(concat.".".(mapconcat.'esxml-
9a20 2d 63 6f 6e 76 65 72 74 2d 70 61 69 72 20 61 74 74 72 73 20 22 20 22 29 29 29 0a 20 20 20 20 20 -convert-pair.attrs.".")))......
9a40 20 20 20 20 20 20 20 20 28 69 66 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........(if.body................
9a60 20 20 28 63 6f 6e 63 61 74 20 22 3e 22 20 28 69 66 20 28 63 6c 2d 65 76 65 72 79 20 27 73 74 72 ..(concat.">".(if.(cl-every.'str
9a80 69 6e 67 70 20 62 6f 64 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ingp.body)......................
9aa0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 ............(mapconcat.'identity
9ac0 20 62 6f 64 79 20 22 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .body.".")......................
9ae0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 ..........(concat."\n"..........
9b00 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 72 ..............................(r
9b20 65 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 eplace-regexp-in-string.........
9b40 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 ................................
9b60 22 5e 22 20 22 20 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "^".".."........................
9b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 70 70 2d .................(mapconcat.'pp-
9ba0 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 62 6f 64 79 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 esxml-to-xml.body."\n"))........
9bc0 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 ................................
9be0 22 5c 6e 22 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 "\n"))..........................
9c00 22 3c 2f 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 20 22 3e 22 29 0a 20 20 20 20 "</".(symbol-name.tag).">").....
9c20 20 20 20 20 20 20 20 20 20 20 20 22 2f 3e 22 29 29 29 0a 20 20 20 20 28 5f 0a 20 20 20 20 20 28 ..........."/>"))).....(_......(
9c40 65 72 72 6f 72 20 22 25 73 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 20 65 73 78 6d 6c 20 65 error."%s.is.not.a.valid.esxml.e
9c60 78 70 72 65 73 73 69 6f 6e 22 20 65 73 78 6d 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 78 6d xpression".esxml))))..(defun.sxm
9c80 6c 2d 74 6f 2d 65 73 78 6d 6c 20 28 73 78 6d 6c 29 0a 20 20 22 54 72 61 6e 73 6c 61 74 65 73 20 l-to-esxml.(sxml)..."Translates.
9ca0 73 78 6d 6c 20 74 6f 20 65 73 78 6d 6c 20 73 6f 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 73 74 61 6e sxml.to.esxml.so.the.common.stan
9cc0 64 61 72 64 20 63 61 6e 20 62 65 20 75 73 65 64 2e 0a 53 65 65 3a 20 68 74 74 70 3a 2f 2f 6f 6b dard.can.be.used..See:.http://ok
9ce0 6d 69 6a 2e 6f 72 67 2f 66 74 70 2f 53 63 68 65 6d 65 2f 53 58 4d 4c 2e 68 74 6d 6c 2e 20 41 64 mij.org/ftp/Scheme/SXML.html..Ad
9d00 64 69 74 69 6f 6e 61 6c 6c 79 2c 0a 28 2a 52 41 57 2d 53 54 52 49 4e 47 2a 20 5c 22 73 74 72 69 ditionally,.(*RAW-STRING*.\"stri
9d20 6e 67 5c 22 29 20 69 73 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 28 72 61 77 2d 73 74 72 69 ng\").is.translated.to.(raw-stri
9d40 6e 67 0a 5c 22 73 74 72 69 6e 67 5c 22 29 2e 22 0a 20 20 28 70 63 61 73 65 20 73 78 6d 6c 0a 20 ng.\"string\")."...(pcase.sxml..
9d60 20 20 20 28 60 28 2a 52 41 57 2d 53 54 52 49 4e 47 2a 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 ...(`(*RAW-STRING*.,body)......`
9d80 28 72 61 77 2d 73 74 72 69 6e 67 20 2c 62 6f 64 79 29 29 0a 20 20 20 20 28 60 28 2a 43 4f 4d 4d (raw-string.,body)).....(`(*COMM
9da0 45 4e 54 2a 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 6c 20 2c ENT*.,body)......`(comment.nil.,
9dc0 62 6f 64 79 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 28 40 20 2e 20 2c 61 74 74 72 73 29 20 body)).....(`(,tag.(@...,attrs).
9de0 2e 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 28 2c 74 61 67 20 2c 28 6d 61 70 63 61 72 20 28 6c ..,body)......`(,tag.,(mapcar.(l
9e00 61 6d 62 64 61 20 28 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ambda.(attr)....................
9e20 20 20 20 20 28 63 6f 6e 73 20 28 63 61 72 20 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 ....(cons.(car.attr)............
9e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 63 61 64 72 20 61 74 74 72 ..................(or.(cadr.attr
9e60 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 20 20 )...............................
9e80 20 20 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 63 61 72 20 61 74 74 72 29 29 29 ...(prin1-to-string.(car.attr)))
9ea0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 73 29 0a 20 ))......................attrs)..
9ec0 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 27 73 78 6d 6c 2d 74 6f 2d 65 73 ...........,@(mapcar.'sxml-to-es
9ee0 78 6d 6c 20 62 6f 64 79 29 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2e 20 2c 62 6f 64 79 29 xml.body))).....(`(,tag...,body)
9f00 0a 20 20 20 20 20 60 28 2c 74 61 67 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 ......`(,tag.nil.............,@(
9f20 6d 61 70 63 61 72 20 27 73 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 62 6f 64 79 29 29 29 0a 20 20 mapcar.'sxml-to-esxml.body)))...
9f40 20 20 28 28 61 6e 64 20 73 78 6d 6c 20 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 29 20 73 78 6d ..((and.sxml.(pred.stringp)).sxm
9f60 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 73 78 6d 6c 29 0a l)))..(defun.sxml-to-xml.(sxml).
9f80 20 20 22 54 72 61 6e 73 6c 61 74 65 73 20 73 78 6d 6c 20 74 6f 20 78 6d 6c 2c 20 76 69 61 20 65 .."Translates.sxml.to.xml,.via.e
9fa0 73 78 6d 6c 2c 20 68 65 79 20 69 74 27 73 20 6f 6e 6c 79 20 61 20 63 6f 6e 73 74 61 6e 74 0a 66 sxml,.hey.it's.only.a.constant.f
9fc0 61 63 74 6f 72 2e 20 3a 29 22 0a 20 20 28 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 73 78 6d 6c actor..:)"...(esxml-to-xml.(sxml
9fe0 2d 74 6f 2d 65 73 78 6d 6c 20 73 78 6d 6c 29 29 29 0a 0a 0c 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 6d -to-esxml.sxml))).....;;.TODO:.m
a000 61 6b 65 20 61 67 6e 6f 73 74 69 63 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 6c 69 62 ake.agnostic.with.respect.to.lib
a020 78 6d 6c 20 76 73 20 78 6d 6c 2e 65 6c 0a 28 64 65 66 75 6e 20 78 6d 6c 2d 74 6f 2d 65 73 78 6d xml.vs.xml.el.(defun.xml-to-esxm
a040 6c 20 28 73 74 72 69 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 74 72 69 6d 29 0a 20 20 28 77 69 74 l.(string.&optional.trim)...(wit
a060 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 h-temp-buffer.....(insert.string
a080 29 0a 20 20 20 20 28 6c 65 74 20 28 28 70 61 72 73 65 2d 74 72 65 65 20 28 6c 69 62 78 6d 6c 2d ).....(let.((parse-tree.(libxml-
a0a0 70 61 72 73 65 2d 78 6d 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 0a 20 20 20 parse-xml-region.(point-min)....
a0c0 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 ................................
a0e0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 ............(point-max))))......
a100 20 28 69 66 20 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 74 72 69 6d 2d .(if.trim...........(esxml-trim-
a120 77 73 20 70 61 72 73 65 2d 74 72 65 65 29 0a 20 20 20 20 20 20 20 20 70 61 72 73 65 2d 74 72 65 ws.parse-tree).........parse-tre
a140 65 29 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 2c 20 6d 6f 76 65 20 74 6f 20 65 73 78 70 61 74 68 20 e))))..;;.TODO,.move.to.esxpath.
a160 77 68 65 6e 20 6d 61 74 75 72 65 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 65 74 2d 62 79 2d when.mature.(defun.esxml-get-by-
a180 6b 65 79 20 28 65 73 78 6d 6c 20 6b 65 79 20 76 61 6c 75 65 29 0a 20 20 22 52 65 74 75 72 6e 73 key.(esxml.key.value)..."Returns
a1a0 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 77 68 6f 73 65 20 77 74 .a.list.of.all.elements.whose.wt
a1c0 74 72 69 62 75 74 65 20 4b 45 59 20 6d 61 74 63 68 0a 56 41 4c 55 45 2e 20 20 4b 45 59 20 73 68 tribute.KEY.match.VALUE...KEY.sh
a1e0 6f 75 6c 64 20 62 65 20 61 20 73 79 6d 62 6f 6c 2c 20 61 6e 64 20 56 41 4c 55 45 20 73 68 6f 75 ould.be.a.symbol,.and.VALUE.shou
a200 6c 64 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0a 57 69 6c 6c 20 6e 6f 74 20 72 65 63 75 72 73 65 ld.be.a.string..Will.not.recurse
a220 20 62 65 6c 6f 77 20 61 20 6d 61 74 63 68 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 .below.a.match."...(unless.(stri
a240 6e 67 70 20 65 73 78 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 ngp.esxml).....(pcase-let.((`(,t
a260 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 ag.,attrs...,body).esxml))......
a280 20 28 69 66 20 28 65 71 75 61 6c 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(if.(equal.value...............
a2a0 20 20 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 6b 65 79 20 61 74 74 72 73 29 29 0a 20 20 ...(assoc-default.key.attrs))...
a2c0 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 65 73 78 6d 6c 29 0a 20 20 20 20 20 20 20 20 28 61 70 ........(list.esxml).........(ap
a2e0 70 6c 79 20 27 61 70 70 65 6e 64 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 65 78 ply.'append.(mapcar.(lambda.(sex
a300 70 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 20 p)..............................
a320 20 20 20 20 28 65 73 78 6d 6c 2d 67 65 74 2d 62 79 2d 6b 65 79 20 73 65 78 70 20 6b 65 79 20 76 ....(esxml-get-by-key.sexp.key.v
a340 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alue))..........................
a360 20 20 20 20 20 20 62 6f 64 79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 ......body))))))..(defun.esxml-g
a380 65 74 2d 74 61 67 73 20 28 65 73 78 6d 6c 20 74 61 67 73 29 0a 20 20 22 52 65 74 75 72 6e 73 20 et-tags.(esxml.tags)..."Returns.
a3a0 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 77 68 6f 73 65 20 74 61 67 a.list.of.all.elements.whose.tag
a3c0 20 69 73 20 61 20 6d 65 6d 62 65 72 20 6f 66 20 54 41 47 53 2e 0a 54 41 47 53 20 73 68 6f 75 6c .is.a.member.of.TAGS..TAGS.shoul
a3e0 64 20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 74 61 67 73 20 74 6f 20 62 65 20 6d 61 74 63 68 65 d.be.a.list.of.tags.to.be.matche
a400 64 20 61 67 61 69 6e 73 74 2e 20 57 69 6c 6c 20 6e 6f 74 0a 72 65 63 75 72 73 65 20 62 65 6c 6f d.against..Will.not.recurse.belo
a420 77 20 61 20 6d 61 74 63 68 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 70 20 65 w.a.match."...(unless.(stringp.e
a440 73 78 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 61 67 20 2c 61 sxml).....(pcase-let.((`(,tag.,a
a460 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 20 28 69 66 20 ttrs...,body).esxml)).......(if.
a480 28 6d 65 6d 62 65 72 20 74 61 67 20 74 61 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 (member.tag.tags)...........(lis
a4a0 74 20 65 73 78 6d 6c 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 61 70 70 65 6e 64 20 t.esxml).........(apply.'append.
a4c0 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 65 78 70 29 0a 20 20 20 20 20 20 20 20 20 (mapcar.(lambda.(sexp)..........
a4e0 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 65 73 78 6d 6c 2d 67 ........................(esxml-g
a500 65 74 2d 74 61 67 73 20 73 65 78 70 20 74 61 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 et-tags.sexp.tags)).............
a520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 29 29 29 29 29 29 0a 0a 28 ...................body))))))..(
a540 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 65 74 2d 66 6f 72 6d 73 20 28 65 73 78 6d 6c 29 0a 20 20 defun.esxml-get-forms.(esxml)...
a560 22 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 66 6f 72 6d 73 2e 22 0a 20 "Returns.a.list.of.all.forms."..
a580 20 28 65 73 78 6d 6c 2d 67 65 74 2d 74 61 67 73 20 65 73 78 6d 6c 20 27 28 66 6f 72 6d 29 29 29 .(esxml-get-tags.esxml.'(form)))
a5a0 0a 0a 3b 3b 20 74 61 6b 65 6e 20 66 72 6f 6d 20 6b 76 0a 28 64 65 66 6d 61 63 72 6f 20 65 73 78 ..;;.taken.from.kv.(defmacro.esx
a5c0 6d 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 6d 61 70 63 61 72 20 28 61 72 67 73 20 73 65 ml-destructuring-mapcar.(args.se
a5e0 78 70 20 73 65 71 29 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 xp.seq)...(declare.(indent.2))..
a600 20 28 6c 65 74 20 28 28 65 6e 74 72 79 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 65 6e 74 72 .(let.((entry.(make-symbol."entr
a620 79 22 29 29 29 0a 20 20 20 20 60 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 2c 65 6e 74 y"))).....`(mapcar.(lambda.(,ent
a640 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 ry)................(cl-destructu
a660 72 69 6e 67 2d 62 69 6e 64 20 2c 61 72 67 73 20 2c 65 6e 74 72 79 20 2c 73 65 78 70 29 29 0a 20 ring-bind.,args.,entry.,sexp))..
a680 20 20 20 20 20 20 20 20 20 20 20 20 2c 73 65 71 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 ............,seq)))..(provide.'e
a6a0 73 78 6d 6c 29 0a 3b 3b 3b 20 65 73 78 6d 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 sxml).;;;.esxml.el.ends.here....
a6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................