single-file-core 1.5.107 → 1.5.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,31 @@
1
+ # .github/workflows/test.yml
2
+
3
+ name: Test
4
+
5
+ # tag pushes are excluded: creating a release would otherwise re-run the check already done on the branch
6
+ on:
7
+ push:
8
+ branches: ['**']
9
+ pull_request:
10
+
11
+ jobs:
12
+ sfz-harness:
13
+ name: 'SFZ format rules'
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v5
17
+ - uses: denoland/setup-deno@v2
18
+ with:
19
+ deno-version: v2.x
20
+ # the suites drive the writer directly, with no browser and no network
21
+ - run: npm test
22
+ lint:
23
+ name: 'Lint'
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - uses: actions/checkout@v5
27
+ - uses: actions/setup-node@v5
28
+ with:
29
+ node-version: '24'
30
+ - run: npm ci
31
+ - run: npx eslint .
@@ -0,0 +1,298 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2110 1332" font-family="system-ui, -apple-system, 'Segoe UI', sans-serif">
2
+ <rect width="2110" height="1332" fill="#ffffff"/>
3
+ <text x="16" y="24" font-size="15" font-weight="600" fill="#1c2733">SingleFile archive byte map</text>
4
+ <rect x="16" y="36" width="12" height="12" rx="2" fill="#3d7dbf"/>
5
+ <text x="32" y="46" font-size="11" fill="#3a4652">HTML markup</text>
6
+ <rect x="115.3" y="36" width="12" height="12" rx="2" fill="#28568a"/>
7
+ <text x="131.3" y="46" font-size="11" fill="#3a4652">bootstrap script</text>
8
+ <rect x="246.10000000000002" y="36" width="12" height="12" rx="2" fill="#e8a33d"/>
9
+ <text x="262.1" y="46" font-size="11" fill="#3a4652">zip entries (local headers + data)</text>
10
+ <rect x="490.3" y="36" width="12" height="12" rx="2" fill="#b06f1d"/>
11
+ <text x="506.3" y="46" font-size="11" fill="#3a4652">zip central directory + EOCD</text>
12
+ <rect x="696.7" y="36" width="12" height="12" rx="2" fill="#c14f4f"/>
13
+ <text x="712.7" y="46" font-size="11" fill="#3a4652">PDF document</text>
14
+ <rect x="802.3000000000001" y="36" width="12" height="12" rx="2" fill="#4f9b63"/>
15
+ <text x="818.3000000000001" y="46" font-size="11" fill="#3a4652">PNG structures</text>
16
+ <rect x="920.5000000000001" y="36" width="12" height="12" rx="2" fill="#8f62b8"/>
17
+ <text x="936.5000000000001" y="46" font-size="11" fill="#3a4652">extra-data payload</text>
18
+ <text x="16" y="86" font-size="12.5" font-weight="600" fill="#1c2733">pure zip</text>
19
+ <text x="87.2" y="86" font-size="11" fill="#68727c">zip · an ordinary archive; nothing before or after it</text>
20
+ <rect x="16" y="94" width="190" height="34" rx="3" fill="#e8a33d"/>
21
+ <path d="M 192 93 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
22
+ <text x="111" y="114.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
23
+ <rect x="208" y="94" width="154" height="34" rx="3" fill="#b06f1d"/>
24
+ <text x="285" y="114.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
25
+ <text x="16" y="174" font-size="12.5" font-weight="600" fill="#1c2733">plain</text>
26
+ <text x="65" y="174" font-size="11" fill="#68727c">zip.html · utf-8</text>
27
+ <rect x="16" y="182" width="140" height="34" rx="3" fill="#3d7dbf"/>
28
+ <text x="86" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
29
+ <rect x="158" y="182" width="190" height="34" rx="3" fill="#28568a"/>
30
+ <path d="M 334 181 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
31
+ <text x="253" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
32
+ <rect x="350" y="182" width="60" height="34" rx="3" fill="#3d7dbf"/>
33
+ <text x="380" y="202.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
34
+ <rect x="412" y="182" width="190" height="34" rx="3" fill="#e8a33d"/>
35
+ <path d="M 588 181 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
36
+ <text x="507" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
37
+ <rect x="604" y="182" width="154" height="34" rx="3" fill="#b06f1d"/>
38
+ <text x="681" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
39
+ <rect x="760" y="182" width="113" height="34" rx="3" fill="#3d7dbf"/>
40
+ <text x="816.5" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;&lt;/body&gt;&lt;/html&gt;</text>
41
+ <path d="M 412 229 v 5 H 758 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
42
+ <text x="585" y="246" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content (hidden from the HTML parser)</text>
43
+ <text x="16" y="288" font-size="12.5" font-weight="600" fill="#1c2733">universal</text>
44
+ <text x="94.60000000000001" y="288" font-size="11" fill="#68727c">u.zip.html · windows-1252</text>
45
+ <rect x="16" y="296" width="140" height="34" rx="3" fill="#3d7dbf"/>
46
+ <text x="86" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
47
+ <rect x="158" y="296" width="190" height="34" rx="3" fill="#28568a"/>
48
+ <path d="M 334 295 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
49
+ <text x="253" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
50
+ <rect x="350" y="296" width="60" height="34" rx="3" fill="#3d7dbf"/>
51
+ <text x="380" y="316.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
52
+ <rect x="412" y="296" width="190" height="34" rx="3" fill="#e8a33d"/>
53
+ <path d="M 588 295 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
54
+ <text x="507" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
55
+ <rect x="604" y="296" width="154" height="34" rx="3" fill="#b06f1d"/>
56
+ <text x="681" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
57
+ <rect x="760" y="296" width="60" height="34" rx="3" fill="#3d7dbf"/>
58
+ <text x="790" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
59
+ <rect x="822" y="296" width="95" height="34" rx="3" fill="#8f62b8"/>
60
+ <text x="869.5" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
61
+ <rect x="919" y="296" width="96" height="34" rx="3" fill="#3d7dbf"/>
62
+ <text x="967" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">&lt;/body&gt;&lt;/html&gt;</text>
63
+ <path d="M 412 343 v 5 H 758 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
64
+ <text x="585" y="360" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
65
+ <text x="16" y="402" font-size="12.5" font-weight="600" fill="#1c2733">universal, relocated extra-data (payload &gt; 64 KB)</text>
66
+ <text x="390.6" y="402" font-size="11" fill="#68727c">u.zip.html · windows-1252 · derived from the writer rules; payload too large for a small specimen</text>
67
+ <rect x="16" y="410" width="140" height="34" rx="3" fill="#3d7dbf"/>
68
+ <text x="86" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
69
+ <rect x="158" y="410" width="190" height="34" rx="3" fill="#28568a"/>
70
+ <path d="M 334 409 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
71
+ <text x="253" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
72
+ <rect x="350" y="410" width="140" height="34" rx="3" fill="#8f62b8" opacity="0.3"/>
73
+ <rect x="350" y="410" width="98" height="34" rx="3" fill="#8f62b8"/>
74
+ <path d="M 476 409 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
75
+ <text x="399" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
76
+ <rect x="492" y="410" width="60" height="34" rx="3" fill="#3d7dbf"/>
77
+ <text x="522" y="430.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
78
+ <rect x="554" y="410" width="190" height="34" rx="3" fill="#e8a33d"/>
79
+ <path d="M 730 409 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
80
+ <text x="649" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
81
+ <rect x="746" y="410" width="154" height="34" rx="3" fill="#b06f1d"/>
82
+ <text x="823" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
83
+ <rect x="902" y="410" width="113" height="34" rx="3" fill="#3d7dbf"/>
84
+ <text x="958.5" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;&lt;/body&gt;&lt;/html&gt;</text>
85
+ <path d="M 554 457 v 5 H 900 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
86
+ <text x="727" y="474" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
87
+ <text x="16" y="516" font-size="12.5" font-weight="600" fill="#1c2733">universal, relocated extra-data (appended data disallowed)</text>
88
+ <text x="457.20000000000005" y="516" font-size="11" fill="#68727c">u.zip.html · windows-1252 · nothing after the eocd; the wrapper comment never closes</text>
89
+ <rect x="16" y="524" width="140" height="34" rx="3" fill="#3d7dbf"/>
90
+ <text x="86" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
91
+ <rect x="158" y="524" width="190" height="34" rx="3" fill="#28568a"/>
92
+ <path d="M 334 523 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
93
+ <text x="253" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
94
+ <rect x="350" y="524" width="140" height="34" rx="3" fill="#8f62b8" opacity="0.3"/>
95
+ <rect x="350" y="524" width="98" height="34" rx="3" fill="#8f62b8"/>
96
+ <text x="399" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
97
+ <rect x="492" y="524" width="60" height="34" rx="3" fill="#3d7dbf"/>
98
+ <text x="522" y="544.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
99
+ <rect x="554" y="524" width="190" height="34" rx="3" fill="#e8a33d"/>
100
+ <path d="M 730 523 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
101
+ <text x="649" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
102
+ <rect x="746" y="524" width="154" height="34" rx="3" fill="#b06f1d"/>
103
+ <text x="823" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
104
+ <path d="M 554 571 v 5 H 900 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
105
+ <text x="727" y="588" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content (the comment never closes)</text>
106
+ <text x="16" y="630" font-size="12.5" font-weight="600" fill="#1c2733">+ PDF face</text>
107
+ <text x="102" y="630" font-size="11" fill="#68727c">u.zip.html · page.pdf listed first in the central directory</text>
108
+ <rect x="16" y="638" width="95" height="34" rx="3" fill="#3d7dbf"/>
109
+ <text x="63.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
110
+ <rect x="113" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
111
+ <text x="143" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">&lt;!--</text>
112
+ <rect x="175" y="638" width="107" height="34" rx="3" fill="#e8a33d"/>
113
+ <text x="228.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-local-header</text>
114
+ <rect x="284" y="638" width="140" height="34" rx="3" fill="#c14f4f"/>
115
+ <path d="M 410 637 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
116
+ <text x="354" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
117
+ <rect x="426" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
118
+ <text x="456" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
119
+ <rect x="488" y="638" width="136" height="34" rx="3" fill="#3d7dbf"/>
120
+ <text x="556" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
121
+ <rect x="626" y="638" width="140" height="34" rx="3" fill="#28568a"/>
122
+ <path d="M 752 637 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
123
+ <text x="696" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
124
+ <rect x="768" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
125
+ <text x="798" y="658.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
126
+ <rect x="830" y="638" width="95" height="34" rx="3" fill="#e8a33d"/>
127
+ <path d="M 911 637 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
128
+ <text x="877.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
129
+ <rect x="927" y="638" width="119" height="34" rx="3" fill="#b06f1d"/>
130
+ <text x="986.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-central-record</text>
131
+ <rect x="1048" y="638" width="154" height="34" rx="3" fill="#b06f1d"/>
132
+ <text x="1125" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
133
+ <rect x="1204" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
134
+ <text x="1234" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
135
+ <rect x="1266" y="638" width="95" height="34" rx="3" fill="#8f62b8"/>
136
+ <text x="1313.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
137
+ <rect x="1363" y="638" width="96" height="34" rx="3" fill="#3d7dbf"/>
138
+ <text x="1411" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">&lt;/body&gt;&lt;/html&gt;</text>
139
+ <path d="M 175 685 v 5 H 424 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
140
+ <text x="299.5" y="702" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
141
+ <path d="M 830 685 v 5 H 1202 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
142
+ <text x="1016" y="702" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
143
+ <text x="16" y="744" font-size="12.5" font-weight="600" fill="#1c2733">+ PNG face</text>
144
+ <text x="102" y="744" font-size="11" fill="#68727c">u.zip.html · well-formed PNG chunk layout; no &lt;/body&gt;&lt;/html&gt; because IEND must end the file</text>
145
+ <rect x="16" y="752" width="130" height="34" rx="3" fill="#4f9b63"/>
146
+ <text x="81" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
147
+ <rect x="148" y="752" width="72" height="34" rx="3" fill="#4f9b63"/>
148
+ <text x="184" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "PNG"</text>
149
+ <rect x="222" y="752" width="95" height="34" rx="3" fill="#3d7dbf"/>
150
+ <text x="269.5" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
151
+ <rect x="319" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
152
+ <text x="349" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">&lt;!--</text>
153
+ <rect x="381" y="752" width="140" height="34" rx="3" fill="#4f9b63"/>
154
+ <path d="M 507 751 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
155
+ <text x="451" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
156
+ <rect x="523" y="752" width="95" height="34" rx="3" fill="#4f9b63"/>
157
+ <text x="570.5" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
158
+ <rect x="620" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
159
+ <text x="650" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
160
+ <rect x="682" y="752" width="136" height="34" rx="3" fill="#3d7dbf"/>
161
+ <text x="750" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
162
+ <rect x="820" y="752" width="140" height="34" rx="3" fill="#28568a"/>
163
+ <path d="M 946 751 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
164
+ <text x="890" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
165
+ <rect x="962" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
166
+ <text x="992" y="772.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
167
+ <rect x="1024" y="752" width="140" height="34" rx="3" fill="#e8a33d"/>
168
+ <path d="M 1150 751 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
169
+ <text x="1094" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
170
+ <rect x="1166" y="752" width="154" height="34" rx="3" fill="#b06f1d"/>
171
+ <text x="1243" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
172
+ <rect x="1322" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
173
+ <text x="1352" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
174
+ <rect x="1384" y="752" width="95" height="34" rx="3" fill="#8f62b8"/>
175
+ <text x="1431.5" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
176
+ <rect x="1481" y="752" width="72" height="34" rx="3" fill="#4f9b63"/>
177
+ <text x="1517" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
178
+ <path d="M 381 799 v 5 H 618 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
179
+ <text x="499.5" y="816" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
180
+ <path d="M 1024 799 v 5 H 1320 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
181
+ <text x="1172" y="816" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
182
+ <path d="M 222 823 v 5 H 379 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
183
+ <text x="300.5" y="840" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "PNG" chunk data</text>
184
+ <path d="M 620 823 v 5 H 1479 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
185
+ <text x="1049.5" y="840" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
186
+ <text x="16" y="882" font-size="12.5" font-weight="600" fill="#1c2733">+ PNG + PDF (all four faces)</text>
187
+ <text x="235.20000000000002" y="882" font-size="11" fill="#68727c">u.zip.html · PDF inside the HTML inside the tEXt chunk</text>
188
+ <rect x="16" y="890" width="130" height="34" rx="3" fill="#4f9b63"/>
189
+ <text x="81" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
190
+ <rect x="148" y="890" width="72" height="34" rx="3" fill="#4f9b63"/>
191
+ <text x="184" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "PNG"</text>
192
+ <rect x="222" y="890" width="95" height="34" rx="3" fill="#3d7dbf"/>
193
+ <text x="269.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
194
+ <rect x="319" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
195
+ <text x="349" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">&lt;!--</text>
196
+ <rect x="381" y="890" width="107" height="34" rx="3" fill="#e8a33d"/>
197
+ <text x="434.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-local-header</text>
198
+ <rect x="490" y="890" width="140" height="34" rx="3" fill="#c14f4f"/>
199
+ <path d="M 616 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
200
+ <text x="560" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
201
+ <rect x="632" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
202
+ <text x="662" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
203
+ <rect x="694" y="890" width="136" height="34" rx="3" fill="#3d7dbf"/>
204
+ <text x="762" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
205
+ <rect x="832" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
206
+ <text x="862" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">&lt;!--</text>
207
+ <rect x="894" y="890" width="113" height="34" rx="3" fill="#4f9b63"/>
208
+ <path d="M 993 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
209
+ <text x="950.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
210
+ <rect x="1009" y="890" width="72" height="34" rx="3" fill="#4f9b63"/>
211
+ <text x="1045" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
212
+ <rect x="1083" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
213
+ <text x="1113" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
214
+ <rect x="1145" y="890" width="136" height="34" rx="3" fill="#3d7dbf"/>
215
+ <text x="1213" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
216
+ <rect x="1283" y="890" width="95" height="34" rx="3" fill="#28568a"/>
217
+ <path d="M 1364 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
218
+ <text x="1330.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
219
+ <rect x="1380" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
220
+ <text x="1410" y="910.5" font-size="8.5" fill="#ffffff" text-anchor="middle">&lt;!--sfz-data</text>
221
+ <rect x="1442" y="890" width="140" height="34" rx="3" fill="#e8a33d"/>
222
+ <path d="M 1568 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
223
+ <text x="1512" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
224
+ <rect x="1584" y="890" width="119" height="34" rx="3" fill="#b06f1d"/>
225
+ <text x="1643.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-central-record</text>
226
+ <rect x="1705" y="890" width="154" height="34" rx="3" fill="#b06f1d"/>
227
+ <text x="1782" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
228
+ <rect x="1861" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
229
+ <text x="1891" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--&gt;</text>
230
+ <rect x="1923" y="890" width="95" height="34" rx="3" fill="#8f62b8"/>
231
+ <text x="1970.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
232
+ <rect x="2020" y="890" width="72" height="34" rx="3" fill="#4f9b63"/>
233
+ <text x="2056" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
234
+ <path d="M 381 937 v 5 H 630 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
235
+ <text x="505.5" y="954" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
236
+ <path d="M 894 937 v 5 H 1081 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
237
+ <text x="987.5" y="954" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
238
+ <path d="M 1442 937 v 5 H 1859 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
239
+ <text x="1650.5" y="954" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
240
+ <path d="M 222 961 v 5 H 892 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
241
+ <text x="557" y="978" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "PNG" chunk data</text>
242
+ <path d="M 1083 961 v 5 H 2018 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
243
+ <text x="1550.5" y="978" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
244
+ <text x="16" y="1020" font-size="12.5" font-weight="600" fill="#1c2733">PDF face without HTML</text>
245
+ <text x="183.4" y="1020" font-size="11" fill="#68727c">zip · the PDF is prepended data; page.pdf is not an archive entry</text>
246
+ <rect x="16" y="1028" width="190" height="34" rx="3" fill="#c14f4f"/>
247
+ <path d="M 192 1027 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
248
+ <text x="111" y="1048.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
249
+ <rect x="208" y="1028" width="190" height="34" rx="3" fill="#e8a33d"/>
250
+ <path d="M 384 1027 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
251
+ <text x="303" y="1048.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
252
+ <rect x="400" y="1028" width="154" height="34" rx="3" fill="#b06f1d"/>
253
+ <text x="477" y="1048.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
254
+ <text x="16" y="1108" font-size="12.5" font-weight="600" fill="#1c2733">PNG face without HTML</text>
255
+ <text x="183.4" y="1108" font-size="11" fill="#68727c">zip · PNG chunk layout, no markup</text>
256
+ <rect x="16" y="1116" width="130" height="34" rx="3" fill="#4f9b63"/>
257
+ <text x="81" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
258
+ <rect x="148" y="1116" width="140" height="34" rx="3" fill="#4f9b63"/>
259
+ <path d="M 274 1115 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
260
+ <text x="218" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
261
+ <rect x="290" y="1116" width="95" height="34" rx="3" fill="#4f9b63"/>
262
+ <text x="337.5" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
263
+ <rect x="387" y="1116" width="140" height="34" rx="3" fill="#e8a33d"/>
264
+ <path d="M 513 1115 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
265
+ <text x="457" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
266
+ <rect x="529" y="1116" width="154" height="34" rx="3" fill="#b06f1d"/>
267
+ <text x="606" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
268
+ <rect x="685" y="1116" width="72" height="34" rx="3" fill="#4f9b63"/>
269
+ <text x="721" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
270
+ <path d="M 387 1163 v 5 H 683 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
271
+ <text x="535" y="1180" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
272
+ <text x="16" y="1222" font-size="12.5" font-weight="600" fill="#1c2733">PNG + PDF faces without HTML</text>
273
+ <text x="235.20000000000002" y="1222" font-size="11" fill="#68727c">zip · the PDF is the data of its own tEXt chunk; page.pdf is not an archive entry</text>
274
+ <rect x="16" y="1230" width="130" height="34" rx="3" fill="#4f9b63"/>
275
+ <text x="81" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
276
+ <rect x="148" y="1230" width="72" height="34" rx="3" fill="#4f9b63"/>
277
+ <text x="184" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "PDF"</text>
278
+ <rect x="222" y="1230" width="140" height="34" rx="3" fill="#c14f4f"/>
279
+ <path d="M 348 1229 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
280
+ <text x="292" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
281
+ <rect x="364" y="1230" width="140" height="34" rx="3" fill="#4f9b63"/>
282
+ <path d="M 490 1229 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
283
+ <text x="434" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
284
+ <rect x="506" y="1230" width="95" height="34" rx="3" fill="#4f9b63"/>
285
+ <text x="553.5" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
286
+ <rect x="603" y="1230" width="140" height="34" rx="3" fill="#e8a33d"/>
287
+ <path d="M 729 1229 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
288
+ <text x="673" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
289
+ <rect x="745" y="1230" width="154" height="34" rx="3" fill="#b06f1d"/>
290
+ <text x="822" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
291
+ <rect x="901" y="1230" width="72" height="34" rx="3" fill="#4f9b63"/>
292
+ <text x="937" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
293
+ <path d="M 222 1277 v 5 H 362 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
294
+ <text x="292" y="1294" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "PDF" chunk data</text>
295
+ <path d="M 603 1277 v 5 H 899 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
296
+ <text x="751" y="1294" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
297
+ <text x="16" y="1326" font-size="9.5" fill="#68727c">Widths are schematic, not proportional; hatched ends mark elided bytes; the lighter tail of a block is reserved space that may stay unused.</text>
298
+ </svg>