@olwiba/dx 0.0.9

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,1536 @@
1
+ import { mkdirSync, writeFileSync, readFileSync } from 'fs';
2
+ import path from 'path';
3
+
4
+ // src/ascii-gif.ts
5
+
6
+ // src/ascii/compose.ts
7
+ function composeAsciiText(font, text) {
8
+ const charBlocks = [];
9
+ for (const ch of text) {
10
+ const code = ch.charCodeAt(0);
11
+ const glyph = font.chars.get(code) ?? font.chars.get(32);
12
+ if (!glyph) continue;
13
+ const width = Math.max(...glyph.map((line) => line.length));
14
+ charBlocks.push({
15
+ lines: glyph.map((line) => line.padEnd(width)),
16
+ width
17
+ });
18
+ }
19
+ const cols = charBlocks.reduce((sum, block) => sum + block.width, 0);
20
+ const rows = font.height;
21
+ const cells = [];
22
+ let offsetX = 0;
23
+ for (const block of charBlocks) {
24
+ for (let row = 0; row < rows; row++) {
25
+ const line = block.lines[row] ?? "";
26
+ for (let col = 0; col < line.length; col++) {
27
+ const ch = line[col];
28
+ if (ch === "\u2588" || ch === "\u2591") {
29
+ cells.push({ ch, col: offsetX + col, row });
30
+ }
31
+ }
32
+ }
33
+ offsetX += block.width;
34
+ }
35
+ return { cells, cols, rows };
36
+ }
37
+ function getAsciiAccentColumns(font, text, accent) {
38
+ if (!accent) return /* @__PURE__ */ new Set();
39
+ const columns = /* @__PURE__ */ new Set();
40
+ let offsetX = 0;
41
+ for (const ch of text) {
42
+ const code = ch.charCodeAt(0);
43
+ const glyph = font.chars.get(code) ?? font.chars.get(32);
44
+ if (!glyph) continue;
45
+ const width = Math.max(...glyph.map((line) => line.length));
46
+ if (accent.includes(ch)) {
47
+ for (let col = 0; col < width; col++) columns.add(offsetX + col);
48
+ }
49
+ offsetX += width;
50
+ }
51
+ return columns;
52
+ }
53
+
54
+ // src/ascii/figlet.ts
55
+ function parseFigletFont(raw) {
56
+ const lines = raw.split("\n");
57
+ if (lines[0]?.charCodeAt(0) === 65279) {
58
+ lines[0] = lines[0].slice(1);
59
+ }
60
+ const header = lines[0];
61
+ if (!header?.startsWith("flf2a")) {
62
+ throw new Error("Invalid FIGlet font: missing flf2a header");
63
+ }
64
+ const hardblank = header[5] ?? "$";
65
+ const parts = header.slice(6).trim().split(/\s+/);
66
+ const height = Number.parseInt(parts[0] ?? "", 10);
67
+ const baseline = Number.parseInt(parts[1] ?? "", 10);
68
+ const commentLines = Number.parseInt(parts[4] ?? "", 10);
69
+ if (!Number.isFinite(height) || height <= 0) {
70
+ throw new Error("Invalid FIGlet font: missing character height");
71
+ }
72
+ const dataStart = 1 + (Number.isFinite(commentLines) ? commentLines : 0);
73
+ const chars = /* @__PURE__ */ new Map();
74
+ let lineIndex = dataStart;
75
+ let ascii = 32;
76
+ while (lineIndex + height <= lines.length && ascii <= 126) {
77
+ const charLines = [];
78
+ for (let row = 0; row < height; row++) {
79
+ const line = (lines[lineIndex + row] ?? "").replace(/@+$/, "").replaceAll(hardblank, " ");
80
+ charLines.push(line);
81
+ }
82
+ chars.set(ascii, charLines);
83
+ lineIndex += height;
84
+ ascii++;
85
+ }
86
+ return { height, baseline, hardblank, chars };
87
+ }
88
+
89
+ // src/ascii/render.ts
90
+ var ASCII_CHAR_WIDTH = 7.5;
91
+ var ASCII_CHAR_HEIGHT = 15;
92
+ function getAsciiCellIntensity(cell, options) {
93
+ const time = options.time ?? 0;
94
+ const loop = options.phase == null ? null : options.phase * Math.PI * 2;
95
+ if (cell.ch === "\u2591") {
96
+ const drift = loop == null ? Math.sin(time * 0.3 + cell.col * 0.1) * 0.03 : Math.sin(loop + cell.col * 0.1) * 0.03;
97
+ return 0.15 + drift;
98
+ }
99
+ if (loop != null) {
100
+ return getLoopIntensity(cell, loop);
101
+ }
102
+ const noise = getLiveNoise(cell, time);
103
+ const seed = cell.col * 7.13 + cell.row * 13.37;
104
+ const flickerPhase = Math.sin(seed) * 1e3;
105
+ const flickerWave = Math.sin(time * 0.8 + flickerPhase);
106
+ const flicker = flickerWave > 0.97 ? 0.15 : 0;
107
+ let intensity = 0.7 + noise + flicker;
108
+ const charWidth = ASCII_CHAR_WIDTH;
109
+ const charHeight = ASCII_CHAR_HEIGHT;
110
+ if (options.pointer?.active) {
111
+ const mdx = cell.col * charWidth + charWidth / 2 - options.pointer.x;
112
+ const mdy = cell.row * charHeight + charHeight / 2 - options.pointer.y;
113
+ const mDist = Math.sqrt(mdx * mdx + mdy * mdy);
114
+ const radius = 80;
115
+ if (mDist < radius) {
116
+ const falloff = 1 - mDist / radius;
117
+ const ripple = Math.sin(mDist * 0.08 - time * 4) * 0.12 * falloff * falloff;
118
+ intensity = Math.min(1, intensity + falloff * 0.2 + ripple);
119
+ }
120
+ }
121
+ const px = cell.col * charWidth + charWidth / 2;
122
+ const py = cell.row * charHeight + charHeight / 2;
123
+ for (const wave of options.waves ?? []) {
124
+ const wdx = px - wave.cx;
125
+ const wdy = py - wave.cy;
126
+ const dist = Math.sqrt(wdx * wdx + wdy * wdy);
127
+ const age = time - wave.t;
128
+ const waveRadius = age * 200;
129
+ const delta = dist - waveRadius;
130
+ const fade = Math.exp(-age * 1.5);
131
+ const ring = Math.exp(-delta * delta * 2e-3) * fade;
132
+ intensity = Math.min(1, intensity + ring * 0.5 * Math.sin(delta * 0.06 + 1.5));
133
+ }
134
+ return Math.max(0.5, Math.min(1, intensity));
135
+ }
136
+ function getLiveNoise(cell, time) {
137
+ const nx = cell.col * 0.18 + time * 0.9;
138
+ const ny = cell.row * 0.3 + time * 0.55;
139
+ return Math.sin(nx) * 0.12 + Math.sin(ny * 1.4 + nx * 0.6) * 0.1 + Math.sin(nx * 0.4 - ny * 0.8 + time * 1.6) * 0.08 + Math.sin((cell.col + cell.row) * 0.15 + time * 0.4) * 0.07;
140
+ }
141
+ function getLoopIntensity(cell, loop) {
142
+ const flow = Math.sin(cell.col * 0.08 + loop) * 0.055 + Math.sin(cell.row * 0.22 - loop * 0.75) * 0.04;
143
+ const shimmer = (Math.sin(cell.col * 0.16 + cell.row * 0.08 - loop * 2) + 1) / 2;
144
+ const highlight = Math.pow(shimmer, 4) * 0.22;
145
+ const intensity = 0.68 + flow + highlight;
146
+ return Math.max(0.55, Math.min(1, intensity));
147
+ }
148
+
149
+ // src/ascii/fonts/dosrebel-data.ts
150
+ var dosrebelFont = `flf2a$ 11 8 35 -1 15
151
+ Rebel by Valerie Mates (popcorn@cyberspace.org), based on a font by Ron Bliss
152
+ (who sometimes goes by the name "rebel" because his initials are REB).
153
+ NOTE: THIS FONT ONLY WORKS IN MS-DOS.
154
+ May 27, 1994
155
+
156
+ Explanation of first line:
157
+ flf2 - "magic number" for file identification
158
+ a - should always be \`a', for now
159
+ $ - the "hardblank" -- prints as a blank, but can't be smushed
160
+ 11 - height of a character
161
+ 8 - height of a character, not including descenders
162
+ 35 - max line length (excluding comment lines) + a fudge factor
163
+ -1 - default smushmode for this font (like "-m 15" on command line)
164
+ 15 - number of comment lines
165
+
166
+ $$$@
167
+ $$$@
168
+ $$$@
169
+ $$$@
170
+ $$$@
171
+ $$$@
172
+ $$$@
173
+ $$$@
174
+ $$$@
175
+ $$$@
176
+ $$$@@
177
+ \u2588\u2588\u2588@
178
+ \u2591\u2588\u2588\u2588@
179
+ \u2591\u2588\u2588\u2588@
180
+ \u2591\u2588\u2588\u2588@
181
+ \u2591\u2588\u2588\u2588@
182
+ \u2591\u2591\u2591 @
183
+ \u2588\u2588\u2588@
184
+ \u2591\u2591\u2591 @
185
+ @
186
+ @
187
+ @@
188
+ \u2588\u2588 \u2588\u2588@
189
+ \u2591\u2588\u2588\u2591\u2588\u2588@
190
+ \u2591\u2591 \u2591\u2591 @
191
+ @
192
+ @
193
+ @
194
+ @
195
+ @
196
+ @
197
+ @
198
+ @@
199
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
200
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
201
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591 @
202
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
203
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591 @
204
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
205
+ @
206
+ @
207
+ @
208
+ @
209
+ @@
210
+ \u2588\u2588\u2588 @
211
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
212
+ \u2588\u2588\u2588\u2591\u2591\u2591 @
213
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
214
+ \u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
215
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
216
+ \u2591\u2591\u2591\u2588\u2588\u2588 @
217
+ \u2591\u2591\u2591 @
218
+ @
219
+ @
220
+ @@
221
+ \u2588\u2588\u2588 \u2588\u2588\u2588@
222
+ \u2591\u2591\u2591 \u2588\u2588\u2588\u2591 @
223
+ \u2588\u2588\u2588\u2591 @
224
+ \u2588\u2588\u2588\u2591 @
225
+ \u2588\u2588\u2588\u2591 @
226
+ \u2588\u2588\u2588\u2591 @
227
+ \u2588\u2588\u2588\u2591 \u2588\u2588\u2588 @
228
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
229
+ @
230
+ @
231
+ @@
232
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
233
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
234
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
235
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
236
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
237
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
238
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588@
239
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591 @
240
+ @
241
+ @
242
+ @@
243
+ \u2588\u2588@
244
+ \u2588\u2588\u2588@
245
+ \u2591\u2591\u2591 @
246
+ @
247
+ @
248
+ @
249
+ @
250
+ @
251
+ @
252
+ @
253
+ @@
254
+ \u2588\u2588\u2588@
255
+ \u2588\u2588\u2588 @
256
+ \u2588\u2588\u2588 @
257
+ \u2591\u2588\u2588\u2588 @
258
+ \u2591\u2588\u2588\u2588 @
259
+ \u2591\u2591\u2588\u2588\u2588 @
260
+ \u2591\u2591\u2588\u2588\u2588@
261
+ \u2591\u2591\u2591 @
262
+ @
263
+ @
264
+ @@
265
+ \u2588\u2588\u2588 @
266
+ \u2591\u2591\u2588\u2588\u2588 @
267
+ \u2591\u2591\u2588\u2588\u2588@
268
+ \u2591\u2588\u2588\u2588@
269
+ \u2591\u2588\u2588\u2588@
270
+ \u2588\u2588\u2588 @
271
+ \u2588\u2588\u2591 @
272
+ \u2591\u2591\u2591 @
273
+ @
274
+ @
275
+ @@
276
+ \u2588\u2588\u2588 @
277
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588\u2588\u2588@
278
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 @
279
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591 @
280
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
281
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
282
+ \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 @
283
+ \u2591\u2591\u2591 @
284
+ @
285
+ @
286
+ @@
287
+ @
288
+ \u2588\u2588\u2588 @
289
+ \u2591\u2588\u2588\u2588 @
290
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
291
+ \u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591 @
292
+ \u2591\u2588\u2588\u2588 @
293
+ \u2591\u2591\u2591 @
294
+ @
295
+ @
296
+ @
297
+ @@
298
+ @
299
+ @
300
+ @
301
+ @
302
+ @
303
+ @
304
+ \u2588\u2588@
305
+ \u2588\u2588 @
306
+ \u2591\u2591 @
307
+ @
308
+ @@
309
+ @
310
+ @
311
+ @
312
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
313
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
314
+ @
315
+ @
316
+ @
317
+ @
318
+ @
319
+ @@
320
+ @
321
+ @
322
+ @
323
+ @
324
+ @
325
+ @
326
+ \u2588\u2588@
327
+ \u2591\u2591 @
328
+ @
329
+ @
330
+ @@
331
+ \u2588\u2588\u2588@
332
+ \u2588\u2588\u2588\u2591 @
333
+ \u2588\u2588\u2588\u2591 @
334
+ \u2588\u2588\u2588\u2591 @
335
+ \u2588\u2588\u2588\u2591 @
336
+ \u2588\u2588\u2588\u2591 @
337
+ \u2588\u2588\u2588\u2591 @
338
+ \u2591\u2591\u2591 @
339
+ @
340
+ @
341
+ @@
342
+ \u2588\u2588\u2588\u2588\u2588 @
343
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588 @
344
+ \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588@
345
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
346
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
347
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
348
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591 @
349
+ \u2591\u2591\u2591\u2591\u2591\u2591 @
350
+ @
351
+ @
352
+ @@
353
+ \u2588\u2588\u2588\u2588 @
354
+ \u2591\u2591\u2588\u2588\u2588 @
355
+ \u2591\u2588\u2588\u2588 @
356
+ \u2591\u2588\u2588\u2588 @
357
+ \u2591\u2588\u2588\u2588 @
358
+ \u2591\u2588\u2588\u2588 @
359
+ \u2588\u2588\u2588\u2588\u2588@
360
+ \u2591\u2591\u2591\u2591\u2591 @
361
+ @
362
+ @
363
+ @@
364
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
365
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
366
+ \u2591\u2591\u2591 \u2591\u2588\u2588\u2588@
367
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
368
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591 @
369
+ \u2588\u2588\u2588 \u2588@
370
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
371
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
372
+ @
373
+ @
374
+ @@
375
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
376
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
377
+ \u2591\u2591\u2591 \u2591\u2588\u2588\u2588@
378
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2591 @
379
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
380
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
381
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
382
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
383
+ @
384
+ @
385
+ @@
386
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 @
387
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
388
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588@
389
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
390
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2588@
391
+ \u2591\u2588\u2588\u2588\u2591 @
392
+ \u2588\u2588\u2588\u2588\u2588 @
393
+ \u2591\u2591\u2591\u2591\u2591 @
394
+ @
395
+ @
396
+ @@
397
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
398
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2588@
399
+ \u2591\u2588\u2588\u2588 \u2591 @
400
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
401
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
402
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
403
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
404
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
405
+ @
406
+ @
407
+ @@
408
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
409
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
410
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 @
411
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
412
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
413
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
414
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
415
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
416
+ @
417
+ @
418
+ @@
419
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
420
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
421
+ \u2591\u2591\u2591 \u2588\u2588\u2588 @
422
+ \u2588\u2588\u2588 @
423
+ \u2588\u2588\u2588 @
424
+ \u2588\u2588\u2588 @
425
+ \u2588\u2588\u2588 @
426
+ \u2591\u2591\u2591 @
427
+ @
428
+ @
429
+ @@
430
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
431
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
432
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
433
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
434
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
435
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
436
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
437
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
438
+ @
439
+ @
440
+ @@
441
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
442
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
443
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
444
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
445
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
446
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
447
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
448
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
449
+ @
450
+ @
451
+ @@
452
+ @
453
+ @
454
+ \u2588\u2588@
455
+ \u2591\u2591 @
456
+ @
457
+ @
458
+ \u2588\u2588@
459
+ \u2591\u2591 @
460
+ @
461
+ @
462
+ @@
463
+ @
464
+ @
465
+ @
466
+ @
467
+ \u2588\u2588@
468
+ \u2591\u2591 @
469
+ \u2588\u2588@
470
+ \u2588\u2588 @
471
+ \u2591\u2591 @
472
+ @
473
+ @@
474
+ \u2588\u2588\u2588@
475
+ \u2588\u2588\u2588\u2591 @
476
+ \u2588\u2588\u2588\u2591 @
477
+ \u2588\u2588\u2588\u2591 @
478
+ \u2591\u2591\u2591\u2588\u2588\u2588 @
479
+ \u2591\u2591\u2591\u2588\u2588\u2588 @
480
+ \u2591\u2591\u2591\u2588\u2588\u2588@
481
+ \u2591\u2591\u2591 @
482
+ @
483
+ @
484
+ @@
485
+ @
486
+ @
487
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
488
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
489
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
490
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
491
+ @
492
+ @
493
+ @
494
+ @
495
+ @@
496
+ \u2588\u2588\u2588 @
497
+ \u2591\u2591\u2591\u2588\u2588\u2588 @
498
+ \u2591\u2591\u2591\u2588\u2588\u2588 @
499
+ \u2591\u2591\u2591\u2588\u2588\u2588@
500
+ \u2588\u2588\u2588\u2591 @
501
+ \u2588\u2588\u2588\u2591 @
502
+ \u2588\u2588\u2588\u2591 @
503
+ \u2591\u2591\u2591 @
504
+ @
505
+ @
506
+ @@
507
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
508
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588@
509
+ \u2591\u2591\u2591 \u2591\u2588\u2588\u2588@
510
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
511
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591 @
512
+ \u2591\u2591\u2591 @
513
+ \u2588\u2588\u2588 @
514
+ \u2591\u2591\u2591 @
515
+ @
516
+ @
517
+ @@
518
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
519
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591 @
520
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 @
521
+ \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588@
522
+ \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588@
523
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591 \u2591\u2588\u2588\u2588@
524
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
525
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
526
+ @
527
+ @
528
+ @@
529
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
530
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
531
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
532
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
533
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
534
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
535
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
536
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
537
+ @
538
+ @
539
+ @@
540
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
541
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
542
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
543
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
544
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
545
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
546
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
547
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
548
+ @
549
+ @
550
+ @@
551
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
552
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
553
+ \u2588\u2588\u2588 \u2591\u2591\u2591 @
554
+ \u2591\u2588\u2588\u2588 @
555
+ \u2591\u2588\u2588\u2588 @
556
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588@
557
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
558
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
559
+ @
560
+ @
561
+ @@
562
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
563
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
564
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588@
565
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
566
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
567
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
568
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
569
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
570
+ @
571
+ @
572
+ @@
573
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
574
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588@
575
+ \u2591\u2588\u2588\u2588 \u2588 \u2591 @
576
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
577
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588 @
578
+ \u2591\u2588\u2588\u2588 \u2591 \u2588@
579
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
580
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
581
+ @
582
+ @
583
+ @@
584
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
585
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2588@
586
+ \u2591\u2588\u2588\u2588 \u2588 \u2591 @
587
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
588
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2588 @
589
+ \u2591\u2588\u2588\u2588 \u2591 @
590
+ \u2588\u2588\u2588\u2588\u2588 @
591
+ \u2591\u2591\u2591\u2591\u2591 @
592
+ @
593
+ @
594
+ @@
595
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
596
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
597
+ \u2588\u2588\u2588 \u2591\u2591\u2591 @
598
+ \u2591\u2588\u2588\u2588 @
599
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
600
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
601
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
602
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
603
+ @
604
+ @
605
+ @@
606
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
607
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
608
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
609
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
610
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
611
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
612
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
613
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
614
+ @
615
+ @
616
+ @@
617
+ \u2588\u2588\u2588\u2588\u2588@
618
+ \u2591\u2591\u2588\u2588\u2588 @
619
+ \u2591\u2588\u2588\u2588 @
620
+ \u2591\u2588\u2588\u2588 @
621
+ \u2591\u2588\u2588\u2588 @
622
+ \u2591\u2588\u2588\u2588 @
623
+ \u2588\u2588\u2588\u2588\u2588@
624
+ \u2591\u2591\u2591\u2591\u2591 @
625
+ @
626
+ @
627
+ @@
628
+ \u2588\u2588\u2588\u2588\u2588@
629
+ \u2591\u2591\u2588\u2588\u2588 @
630
+ \u2591\u2588\u2588\u2588 @
631
+ \u2591\u2588\u2588\u2588 @
632
+ \u2591\u2588\u2588\u2588 @
633
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
634
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
635
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
636
+ @
637
+ @
638
+ @@
639
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588@
640
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591 @
641
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
642
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
643
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
644
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
645
+ \u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588@
646
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591 @
647
+ @
648
+ @
649
+ @@
650
+ \u2588\u2588\u2588\u2588\u2588 @
651
+ \u2591\u2591\u2588\u2588\u2588 @
652
+ \u2591\u2588\u2588\u2588 @
653
+ \u2591\u2588\u2588\u2588 @
654
+ \u2591\u2588\u2588\u2588 @
655
+ \u2591\u2588\u2588\u2588 \u2588@
656
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
657
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
658
+ @
659
+ @
660
+ @@
661
+ \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588@
662
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 @
663
+ \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588 @
664
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
665
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 @
666
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
667
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
668
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
669
+ @
670
+ @
671
+ @@
672
+ \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
673
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
674
+ \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
675
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 @
676
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
677
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
678
+ \u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588@
679
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
680
+ @
681
+ @
682
+ @@
683
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
684
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
685
+ \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588@
686
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
687
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
688
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
689
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 @
690
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
691
+ @
692
+ @
693
+ @@
694
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
695
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
696
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
697
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
698
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591 @
699
+ \u2591\u2588\u2588\u2588 @
700
+ \u2588\u2588\u2588\u2588\u2588 @
701
+ \u2591\u2591\u2591\u2591\u2591 @
702
+ @
703
+ @
704
+ @@
705
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
706
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
707
+ \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588@
708
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
709
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2591\u2588\u2588\u2588@
710
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588 @
711
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588@
712
+ \u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591 @
713
+ @
714
+ @
715
+ @@
716
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
717
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
718
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
719
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
720
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
721
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
722
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
723
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
724
+ @
725
+ @
726
+ @@
727
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
728
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
729
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 @
730
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
731
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
732
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
733
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
734
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
735
+ @
736
+ @
737
+ @@
738
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
739
+ \u2591\u2588\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2588@
740
+ \u2591 \u2591\u2588\u2588\u2588 \u2591 @
741
+ \u2591\u2588\u2588\u2588 @
742
+ \u2591\u2588\u2588\u2588 @
743
+ \u2591\u2588\u2588\u2588 @
744
+ \u2588\u2588\u2588\u2588\u2588 @
745
+ \u2591\u2591\u2591\u2591\u2591 @
746
+ @
747
+ @
748
+ @@
749
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
750
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
751
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
752
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
753
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
754
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
755
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
756
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
757
+ @
758
+ @
759
+ @@
760
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
761
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
762
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
763
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
764
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
765
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591 @
766
+ \u2591\u2591\u2588\u2588\u2588 @
767
+ \u2591\u2591\u2591 @
768
+ @
769
+ @
770
+ @@
771
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
772
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
773
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
774
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
775
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 @
776
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591 @
777
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
778
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
779
+ @
780
+ @
781
+ @@
782
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
783
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
784
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
785
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
786
+ \u2588\u2588\u2588\u2591\u2588\u2588\u2588 @
787
+ \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
788
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
789
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
790
+ @
791
+ @
792
+ @@
793
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
794
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
795
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
796
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
797
+ \u2591\u2591\u2588\u2588\u2588 @
798
+ \u2591\u2588\u2588\u2588 @
799
+ \u2588\u2588\u2588\u2588\u2588 @
800
+ \u2591\u2591\u2591\u2591\u2591 @
801
+ @
802
+ @
803
+ @@
804
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
805
+ \u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
806
+ \u2591 \u2588\u2588\u2588\u2591 @
807
+ \u2588\u2588\u2588 @
808
+ \u2588\u2588\u2588 @
809
+ \u2588\u2588\u2588\u2588 \u2588@
810
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
811
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
812
+ @
813
+ @
814
+ @@
815
+ \u2588\u2588\u2588\u2588\u2588@
816
+ \u2591\u2588\u2588\u2588\u2591 @
817
+ \u2591\u2588\u2588\u2588 @
818
+ \u2591\u2588\u2588\u2588 @
819
+ \u2591\u2588\u2588\u2588 @
820
+ \u2591\u2588\u2588\u2588 @
821
+ \u2591\u2588\u2588\u2588\u2588\u2588@
822
+ \u2591\u2591\u2591\u2591\u2591 @
823
+ @
824
+ @
825
+ @@
826
+ \u2588\u2588\u2588 @
827
+ \u2591\u2591\u2588\u2588\u2588 @
828
+ \u2591\u2591\u2588\u2588\u2588 @
829
+ \u2591\u2591\u2588\u2588\u2588 @
830
+ \u2591\u2591\u2588\u2588\u2588 @
831
+ \u2591\u2591\u2588\u2588\u2588 @
832
+ \u2591\u2591\u2588\u2588\u2588@
833
+ \u2591\u2591\u2591 @
834
+ @
835
+ @
836
+ @@
837
+ \u2588\u2588\u2588\u2588\u2588@
838
+ \u2591\u2591\u2591\u2588\u2588\u2588@
839
+ \u2591\u2588\u2588\u2588@
840
+ \u2591\u2588\u2588\u2588@
841
+ \u2591\u2588\u2588\u2588@
842
+ \u2591\u2588\u2588\u2588@
843
+ \u2588\u2588\u2588\u2588\u2588@
844
+ \u2591\u2591\u2591\u2591\u2591 @
845
+ @
846
+ @
847
+ @@
848
+ \u2588\u2588 @
849
+ \u2588\u2588\u2588\u2588 @
850
+ \u2588\u2588\u2591\u2591\u2588\u2588@
851
+ \u2591\u2591 \u2591\u2591 @
852
+ @
853
+ @
854
+ @
855
+ @
856
+ @
857
+ @
858
+ @@
859
+ @
860
+ @
861
+ @
862
+ @
863
+ @
864
+ @
865
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
866
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
867
+ @
868
+ @
869
+ @@
870
+ \u2588\u2588 @
871
+ \u2591\u2588\u2588\u2588@
872
+ \u2591\u2591\u2591 @
873
+ @
874
+ @
875
+ @
876
+ @
877
+ @
878
+ @
879
+ @
880
+ @@
881
+ @
882
+ @
883
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
884
+ \u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
885
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
886
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
887
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
888
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
889
+ @
890
+ @
891
+ @@
892
+ \u2588\u2588\u2588\u2588\u2588 @
893
+ \u2591\u2591\u2588\u2588\u2588 @
894
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
895
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
896
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
897
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
898
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
899
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
900
+ @
901
+ @
902
+ @@
903
+ @
904
+ @
905
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
906
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
907
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 @
908
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588@
909
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
910
+ \u2591\u2591\u2591\u2591\u2591\u2591 @
911
+ @
912
+ @
913
+ @@
914
+ \u2588\u2588\u2588\u2588\u2588@
915
+ \u2591\u2591\u2588\u2588\u2588 @
916
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
917
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
918
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
919
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
920
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
921
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
922
+ @
923
+ @
924
+ @@
925
+ @
926
+ @
927
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
928
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
929
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
930
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591 @
931
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
932
+ \u2591\u2591\u2591\u2591\u2591\u2591 @
933
+ @
934
+ @
935
+ @@
936
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
937
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
938
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 @
939
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
940
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2591 @
941
+ \u2591\u2588\u2588\u2588 @
942
+ \u2588\u2588\u2588\u2588\u2588 @
943
+ \u2591\u2591\u2591\u2591\u2591 @
944
+ @
945
+ @
946
+ @@
947
+ @
948
+ @
949
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588@
950
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
951
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
952
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
953
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
954
+ \u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
955
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
956
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
957
+ \u2591\u2591\u2591\u2591\u2591\u2591 @@
958
+ \u2588\u2588\u2588\u2588\u2588 @
959
+ \u2591\u2591\u2588\u2588\u2588 @
960
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
961
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
962
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
963
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
964
+ \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
965
+ \u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
966
+ @
967
+ @
968
+ @@
969
+ \u2588\u2588\u2588 @
970
+ \u2591\u2591\u2591 @
971
+ \u2588\u2588\u2588\u2588 @
972
+ \u2591\u2591\u2588\u2588\u2588 @
973
+ \u2591\u2588\u2588\u2588 @
974
+ \u2591\u2588\u2588\u2588 @
975
+ \u2588\u2588\u2588\u2588\u2588@
976
+ \u2591\u2591\u2591\u2591\u2591 @
977
+ @
978
+ @
979
+ @@
980
+ \u2588\u2588\u2588 @
981
+ \u2591\u2591\u2591 @
982
+ \u2588\u2588\u2588\u2588\u2588@
983
+ \u2591\u2591\u2588\u2588\u2588 @
984
+ \u2591\u2588\u2588\u2588 @
985
+ \u2591\u2588\u2588\u2588 @
986
+ \u2591\u2588\u2588\u2588 @
987
+ \u2591\u2588\u2588\u2588 @
988
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
989
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
990
+ \u2591\u2591\u2591\u2591\u2591\u2591 @@
991
+ \u2588\u2588\u2588\u2588\u2588 @
992
+ \u2591\u2591\u2588\u2588\u2588 @
993
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
994
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
995
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2591 @
996
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
997
+ \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
998
+ \u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
999
+ @
1000
+ @
1001
+ @@
1002
+ \u2588\u2588\u2588\u2588 @
1003
+ \u2591\u2591\u2588\u2588\u2588 @
1004
+ \u2591\u2588\u2588\u2588 @
1005
+ \u2591\u2588\u2588\u2588 @
1006
+ \u2591\u2588\u2588\u2588 @
1007
+ \u2591\u2588\u2588\u2588 @
1008
+ \u2588\u2588\u2588\u2588\u2588@
1009
+ \u2591\u2591\u2591\u2591\u2591 @
1010
+ @
1011
+ @
1012
+ @@
1013
+ @
1014
+ @
1015
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1016
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
1017
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1018
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1019
+ \u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1020
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
1021
+ @
1022
+ @
1023
+ @@
1024
+ @
1025
+ @
1026
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1027
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
1028
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1029
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1030
+ \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1031
+ \u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
1032
+ @
1033
+ @
1034
+ @@
1035
+ @
1036
+ @
1037
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
1038
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
1039
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1040
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1041
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
1042
+ \u2591\u2591\u2591\u2591\u2591\u2591 @
1043
+ @
1044
+ @
1045
+ @@
1046
+ @
1047
+ @
1048
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1049
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
1050
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1051
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1052
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1053
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591 @
1054
+ \u2591\u2588\u2588\u2588 @
1055
+ \u2588\u2588\u2588\u2588\u2588 @
1056
+ \u2591\u2591\u2591\u2591\u2591 @@
1057
+ @
1058
+ @
1059
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
1060
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
1061
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1062
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1063
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1064
+ \u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
1065
+ \u2591\u2588\u2588\u2588 @
1066
+ \u2588\u2588\u2588\u2588\u2588@
1067
+ \u2591\u2591\u2591\u2591\u2591 @@
1068
+ @
1069
+ @
1070
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1071
+ \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588@
1072
+ \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 @
1073
+ \u2591\u2588\u2588\u2588 @
1074
+ \u2588\u2588\u2588\u2588\u2588 @
1075
+ \u2591\u2591\u2591\u2591\u2591 @
1076
+ @
1077
+ @
1078
+ @@
1079
+ @
1080
+ @
1081
+ \u2588\u2588\u2588\u2588\u2588 @
1082
+ \u2588\u2588\u2588\u2591\u2591 @
1083
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
1084
+ \u2591\u2591\u2591\u2591\u2588\u2588\u2588@
1085
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
1086
+ \u2591\u2591\u2591\u2591\u2591\u2591 @
1087
+ @
1088
+ @
1089
+ @@
1090
+ \u2588\u2588\u2588\u2588\u2588 @
1091
+ \u2591\u2591\u2588\u2588\u2588 @
1092
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1093
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2591 @
1094
+ \u2591\u2588\u2588\u2588 @
1095
+ \u2591\u2588\u2588\u2588 \u2588\u2588\u2588@
1096
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
1097
+ \u2591\u2591\u2591\u2591\u2591 @
1098
+ @
1099
+ @
1100
+ @@
1101
+ @
1102
+ @
1103
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588@
1104
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1105
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1106
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1107
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
1108
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1109
+ @
1110
+ @
1111
+ @@
1112
+ @
1113
+ @
1114
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1115
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
1116
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1117
+ \u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 @
1118
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588 @
1119
+ \u2591\u2591\u2591\u2591\u2591 @
1120
+ @
1121
+ @
1122
+ @@
1123
+ @
1124
+ @
1125
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1126
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
1127
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1128
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1129
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588 @
1130
+ \u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591 @
1131
+ @
1132
+ @
1133
+ @@
1134
+ @
1135
+ @
1136
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1137
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
1138
+ \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591 @
1139
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588 @
1140
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1141
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
1142
+ @
1143
+ @
1144
+ @@
1145
+ @
1146
+ @
1147
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588@
1148
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1149
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1150
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1151
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1152
+ \u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
1153
+ \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1154
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 @
1155
+ \u2591\u2591\u2591\u2591\u2591\u2591 @@
1156
+ @
1157
+ @
1158
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
1159
+ \u2591\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
1160
+ \u2591 \u2588\u2588\u2588\u2591 @
1161
+ \u2588\u2588\u2588\u2591 \u2588@
1162
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
1163
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1164
+ @
1165
+ @
1166
+ @@
1167
+ \u2588\u2588\u2588@
1168
+ \u2588\u2588\u2591 @
1169
+ \u2588\u2588 @
1170
+ \u2588\u2588\u2588 @
1171
+ \u2591\u2591\u2591\u2588\u2588 @
1172
+ \u2591\u2591\u2588\u2588 @
1173
+ \u2591\u2591\u2588\u2588\u2588@
1174
+ \u2591\u2591\u2591 @
1175
+ @
1176
+ @
1177
+ @@
1178
+ \u2588\u2588\u2588@
1179
+ \u2591\u2588\u2588\u2588@
1180
+ \u2591\u2588\u2588\u2588@
1181
+ \u2591\u2588\u2588\u2588@
1182
+ \u2591\u2588\u2588\u2588@
1183
+ \u2591\u2588\u2588\u2588@
1184
+ \u2591\u2588\u2588\u2588@
1185
+ \u2591\u2591\u2591 @
1186
+ @
1187
+ @
1188
+ @@
1189
+ \u2588\u2588\u2588 @
1190
+ \u2591\u2591\u2591\u2588\u2588 @
1191
+ \u2591\u2591\u2588\u2588 @
1192
+ \u2591\u2591\u2588\u2588\u2588@
1193
+ \u2588\u2588\u2591 @
1194
+ \u2588\u2588 @
1195
+ \u2588\u2588\u2588 @
1196
+ \u2591\u2591\u2591 @
1197
+ @
1198
+ @
1199
+ @@
1200
+ @
1201
+ \u2588\u2588\u2588 \u2588\u2588\u2588@
1202
+ \u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591 @
1203
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1204
+ @
1205
+ @
1206
+ @
1207
+ @
1208
+ @
1209
+ @
1210
+ @@
1211
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
1212
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1213
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1214
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588 @
1215
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1216
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588 @
1217
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1218
+ \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 @
1219
+ @
1220
+ @
1221
+ @@
1222
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
1223
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1224
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1225
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588@
1226
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1227
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1228
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1229
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1230
+ @
1231
+ @
1232
+ @@
1233
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
1234
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1235
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1236
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
1237
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1238
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1239
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1240
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1241
+ @
1242
+ @
1243
+ @@
1244
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
1245
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1246
+ \u2588\u2588\u2588\u2588\u2588\u2588 @
1247
+ \u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 @
1248
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1249
+ \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 @
1250
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
1251
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1252
+ @
1253
+ @
1254
+ @@
1255
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
1256
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1257
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1258
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588@
1259
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1260
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1261
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1262
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1263
+ @
1264
+ @
1265
+ @@
1266
+ \u2588\u2588\u2588 \u2588\u2588\u2588 @
1267
+ \u2591\u2591\u2591 \u2591\u2591\u2591 @
1268
+ \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588@
1269
+ \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 @
1270
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1271
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 @
1272
+ \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588@
1273
+ \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 @
1274
+ @
1275
+ @
1276
+ @@
1277
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1278
+ \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
1279
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1280
+ \u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 @
1281
+ \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588@
1282
+ \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588@
1283
+ \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 @
1284
+ \u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591 @
1285
+ @
1286
+ @
1287
+ @@
1288
+ `;
1289
+
1290
+ // src/ascii/fonts.ts
1291
+ var asciiFonts = {
1292
+ dosrebel: dosrebelFont
1293
+ };
1294
+
1295
+ // src/ascii-gif.ts
1296
+ async function generateAsciiGif(options) {
1297
+ const fps = options.fps ?? 24;
1298
+ const duration = options.duration ?? 2.4;
1299
+ const scale = options.scale ?? 2;
1300
+ const levels = Math.max(2, Math.min(48, options.levels ?? 32));
1301
+ const padding = Math.max(0, Math.round(options.padding ?? 16));
1302
+ const fontRaw = resolveFont(options.font ?? "dosrebel");
1303
+ const font = parseFigletFont(fontRaw);
1304
+ const layout = composeAsciiText(font, options.text);
1305
+ const bounds = getLayoutBounds(layout);
1306
+ const accentColumns = getAsciiAccentColumns(font, options.text, options.accent ?? "");
1307
+ const palette = createPalette({
1308
+ backgroundColor: options.backgroundColor ?? "#0a0a0a",
1309
+ blendColor: options.blendColor ?? options.backgroundColor ?? "#0a0a0a",
1310
+ color: options.color ?? "#e5e5e5",
1311
+ accentColor: options.accentColor ?? options.color ?? "#38bdf8",
1312
+ levels,
1313
+ transparent: options.transparent ?? false
1314
+ });
1315
+ const width = Math.ceil(bounds.cols * ASCII_CHAR_WIDTH * scale) + padding * 2;
1316
+ const height = bounds.rows * ASCII_CHAR_HEIGHT * scale + padding * 2;
1317
+ const frameCount = Math.max(1, Math.round(fps * duration));
1318
+ const delay = Math.max(1, Math.round(100 / fps));
1319
+ const frames = [];
1320
+ for (let frame = 0; frame < frameCount; frame++) {
1321
+ frames.push(
1322
+ renderIndexedAsciiFrame({
1323
+ layout,
1324
+ accentColumns,
1325
+ phase: frame / frameCount,
1326
+ width,
1327
+ height,
1328
+ scale,
1329
+ levels,
1330
+ bounds,
1331
+ padding
1332
+ })
1333
+ );
1334
+ }
1335
+ const bytes = encodeGif({
1336
+ width,
1337
+ height,
1338
+ delay,
1339
+ palette: palette.table,
1340
+ frames,
1341
+ transparent: options.transparent ?? false
1342
+ });
1343
+ mkdirSync(path.dirname(options.outputPath), { recursive: true });
1344
+ writeFileSync(options.outputPath, bytes);
1345
+ }
1346
+ function renderIndexedAsciiFrame(options) {
1347
+ const pixels = new Uint8Array(options.width * options.height);
1348
+ const charWidth = Math.round(ASCII_CHAR_WIDTH * options.scale);
1349
+ const charHeight = Math.round(ASCII_CHAR_HEIGHT * options.scale);
1350
+ for (const cell of options.layout.cells) {
1351
+ const intensity = getAsciiCellIntensity(cell, { phase: options.phase });
1352
+ const level = Math.max(0, Math.min(options.levels - 1, Math.round(intensity * (options.levels - 1))));
1353
+ const offset = options.accentColumns.has(cell.col) ? 1 + options.levels : 1;
1354
+ const colorIndex = offset + level;
1355
+ const x0 = options.padding + Math.round((cell.col - options.bounds.minCol) * ASCII_CHAR_WIDTH * options.scale);
1356
+ const y0 = options.padding + (cell.row - options.bounds.minRow) * charHeight;
1357
+ const x1 = Math.min(options.width, x0 + charWidth);
1358
+ const y1 = Math.min(options.height, y0 + charHeight);
1359
+ for (let y = y0; y < y1; y++) {
1360
+ const row = y * options.width;
1361
+ for (let x = x0; x < x1; x++) {
1362
+ pixels[row + x] = colorIndex;
1363
+ }
1364
+ }
1365
+ }
1366
+ return pixels;
1367
+ }
1368
+ function getLayoutBounds(layout) {
1369
+ if (layout.cells.length === 0) {
1370
+ return { minCol: 0, minRow: 0, cols: Math.max(1, layout.cols), rows: Math.max(1, layout.rows) };
1371
+ }
1372
+ let minCol = Number.POSITIVE_INFINITY;
1373
+ let maxCol = Number.NEGATIVE_INFINITY;
1374
+ let minRow = Number.POSITIVE_INFINITY;
1375
+ let maxRow = Number.NEGATIVE_INFINITY;
1376
+ for (const cell of layout.cells) {
1377
+ minCol = Math.min(minCol, cell.col);
1378
+ maxCol = Math.max(maxCol, cell.col);
1379
+ minRow = Math.min(minRow, cell.row);
1380
+ maxRow = Math.max(maxRow, cell.row);
1381
+ }
1382
+ return {
1383
+ minCol,
1384
+ minRow,
1385
+ cols: maxCol - minCol + 1,
1386
+ rows: maxRow - minRow + 1
1387
+ };
1388
+ }
1389
+ function resolveFont(font) {
1390
+ if (font in asciiFonts) return asciiFonts[font];
1391
+ return readFileSync(font, "utf-8");
1392
+ }
1393
+ function createPalette(options) {
1394
+ const bg = parseColor(options.backgroundColor);
1395
+ const blend = parseColor(options.blendColor);
1396
+ const base = parseColor(options.color);
1397
+ const accent = parseColor(options.accentColor);
1398
+ const table = [bg.r, bg.g, bg.b];
1399
+ for (let level = 0; level < options.levels; level++) {
1400
+ const alpha = level / (options.levels - 1);
1401
+ const mixed = mix(blend, base, alpha);
1402
+ table.push(mixed.r, mixed.g, mixed.b);
1403
+ }
1404
+ for (let level = 0; level < options.levels; level++) {
1405
+ const alpha = level / (options.levels - 1);
1406
+ const mixed = mix(blend, accent, alpha);
1407
+ table.push(mixed.r, mixed.g, mixed.b);
1408
+ }
1409
+ while (table.length < 256 * 3) table.push(0, 0, 0);
1410
+ return { table: Uint8Array.from(table.slice(0, 256 * 3)) };
1411
+ }
1412
+ function parseColor(input) {
1413
+ const color = input.trim();
1414
+ const shortHex = /^#([0-9a-f]{3})$/i.exec(color);
1415
+ if (shortHex) {
1416
+ const [r, g, b] = shortHex[1].split("").map((part) => Number.parseInt(part + part, 16));
1417
+ return { r, g, b };
1418
+ }
1419
+ const longHex = /^#([0-9a-f]{6})$/i.exec(color);
1420
+ if (longHex) {
1421
+ const value = longHex[1];
1422
+ return {
1423
+ r: Number.parseInt(value.slice(0, 2), 16),
1424
+ g: Number.parseInt(value.slice(2, 4), 16),
1425
+ b: Number.parseInt(value.slice(4, 6), 16)
1426
+ };
1427
+ }
1428
+ const rgb = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(color);
1429
+ if (rgb) {
1430
+ return {
1431
+ r: clampByte(Number.parseInt(rgb[1], 10)),
1432
+ g: clampByte(Number.parseInt(rgb[2], 10)),
1433
+ b: clampByte(Number.parseInt(rgb[3], 10))
1434
+ };
1435
+ }
1436
+ throw new Error(`Unsupported color "${input}". Use #rgb, #rrggbb, or rgb(r,g,b).`);
1437
+ }
1438
+ function mix(a, b, amount) {
1439
+ return {
1440
+ r: clampByte(a.r + (b.r - a.r) * amount),
1441
+ g: clampByte(a.g + (b.g - a.g) * amount),
1442
+ b: clampByte(a.b + (b.b - a.b) * amount)
1443
+ };
1444
+ }
1445
+ function clampByte(value) {
1446
+ return Math.max(0, Math.min(255, Math.round(value)));
1447
+ }
1448
+ function encodeGif(options) {
1449
+ const bytes = [];
1450
+ writeAscii(bytes, "GIF89a");
1451
+ writeU16(bytes, options.width);
1452
+ writeU16(bytes, options.height);
1453
+ bytes.push(247, 0, 0);
1454
+ pushBytes(bytes, options.palette);
1455
+ bytes.push(33, 255, 11);
1456
+ writeAscii(bytes, "NETSCAPE2.0");
1457
+ bytes.push(3, 1);
1458
+ writeU16(bytes, 0);
1459
+ bytes.push(0);
1460
+ for (const frame of options.frames) {
1461
+ bytes.push(33, 249, 4, options.transparent ? 5 : 4);
1462
+ writeU16(bytes, options.delay);
1463
+ bytes.push(0, 0);
1464
+ bytes.push(44);
1465
+ writeU16(bytes, 0);
1466
+ writeU16(bytes, 0);
1467
+ writeU16(bytes, options.width);
1468
+ writeU16(bytes, options.height);
1469
+ bytes.push(0);
1470
+ bytes.push(8);
1471
+ writeSubBlocks(bytes, lzwEncode(frame, 8));
1472
+ }
1473
+ bytes.push(59);
1474
+ return Uint8Array.from(bytes);
1475
+ }
1476
+ function lzwEncode(indices, minCodeSize) {
1477
+ const clearCode = 1 << minCodeSize;
1478
+ const endCode = clearCode + 1;
1479
+ let codeSize = minCodeSize + 1;
1480
+ const output = [];
1481
+ const writeCode = createBitWriter(output);
1482
+ writeCode(clearCode, codeSize);
1483
+ let codesSinceClear = 0;
1484
+ for (const index of indices) {
1485
+ if (codesSinceClear >= 240) {
1486
+ writeCode(clearCode, codeSize);
1487
+ codeSize = minCodeSize + 1;
1488
+ codesSinceClear = 0;
1489
+ }
1490
+ writeCode(index, codeSize);
1491
+ codesSinceClear++;
1492
+ }
1493
+ writeCode(endCode, codeSize);
1494
+ writeCode(-1, 0);
1495
+ return Uint8Array.from(output);
1496
+ }
1497
+ function createBitWriter(output) {
1498
+ let buffer = 0;
1499
+ let bitCount = 0;
1500
+ return (code, size) => {
1501
+ if (code < 0) {
1502
+ if (bitCount > 0) output.push(buffer & 255);
1503
+ buffer = 0;
1504
+ bitCount = 0;
1505
+ return;
1506
+ }
1507
+ buffer |= code << bitCount;
1508
+ bitCount += size;
1509
+ while (bitCount >= 8) {
1510
+ output.push(buffer & 255);
1511
+ buffer >>= 8;
1512
+ bitCount -= 8;
1513
+ }
1514
+ };
1515
+ }
1516
+ function writeSubBlocks(bytes, data) {
1517
+ for (let offset = 0; offset < data.length; offset += 255) {
1518
+ const chunk = data.slice(offset, offset + 255);
1519
+ bytes.push(chunk.length);
1520
+ pushBytes(bytes, chunk);
1521
+ }
1522
+ bytes.push(0);
1523
+ }
1524
+ function writeAscii(bytes, value) {
1525
+ for (let i = 0; i < value.length; i++) bytes.push(value.charCodeAt(i));
1526
+ }
1527
+ function writeU16(bytes, value) {
1528
+ bytes.push(value & 255, value >> 8 & 255);
1529
+ }
1530
+ function pushBytes(bytes, values) {
1531
+ for (const value of values) bytes.push(value);
1532
+ }
1533
+
1534
+ export { generateAsciiGif };
1535
+ //# sourceMappingURL=ascii-gif.js.map
1536
+ //# sourceMappingURL=ascii-gif.js.map