Coverage Report

Created: 2025-07-18 06:06

/src/janet/build/c/janet.c
Line
Count
Source (jump to first uncovered line)
1
/* Amalgamated build - DO NOT EDIT */
2
/* Generated from janet version 1.38.0-ddc12295 */
3
#define JANET_BUILD "ddc12295"
4
#define JANET_AMALG
5
6
/* src/core/features.h */
7
#line 0 "src/core/features.h"
8
9
/*
10
* Copyright (c) 2025 Calvin Rose
11
*
12
* Permission is hereby granted, free of charge, to any person obtaining a copy
13
* of this software and associated documentation files (the "Software"), to
14
* deal in the Software without restriction, including without limitation the
15
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
* sell copies of the Software, and to permit persons to whom the Software is
17
* furnished to do so, subject to the following conditions:
18
*
19
* The above copyright notice and this permission notice shall be included in
20
* all copies or substantial portions of the Software.
21
*
22
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28
* IN THE SOFTWARE.
29
*/
30
31
/* Feature test macros */
32
33
#ifndef JANET_FEATURES_H_defined
34
#define JANET_FEATURES_H_defined
35
36
#if defined(__NetBSD__) || defined(__APPLE__) || defined(__OpenBSD__) \
37
    || defined(__bsdi__) || defined(__DragonFly__) || defined(__FreeBSD__)
38
/* Use BSD source on any BSD systems, include OSX */
39
# define _BSD_SOURCE
40
# define _POSIX_C_SOURCE 200809L
41
#else
42
/* Use POSIX feature flags */
43
# ifndef _POSIX_C_SOURCE
44
# define _POSIX_C_SOURCE 200809L
45
# endif
46
#endif
47
48
#if defined(__APPLE__)
49
#define _DARWIN_C_SOURCE
50
#endif
51
52
/* Needed for sched.h for cpu count */
53
#ifdef __linux__
54
#define _GNU_SOURCE
55
#endif
56
57
#if defined(WIN32) || defined(_WIN32)
58
#define WIN32_LEAN_AND_MEAN
59
#endif
60
61
/* needed for inet_pton and InitializeSRWLock */
62
#ifdef __MINGW32__
63
#define _WIN32_WINNT _WIN32_WINNT_VISTA
64
#endif
65
66
/* Needed for realpath on linux, as well as pthread rwlocks. */
67
#ifndef _XOPEN_SOURCE
68
#define _XOPEN_SOURCE 600
69
#endif
70
#if _XOPEN_SOURCE < 600
71
#undef _XOPEN_SOURCE
72
#define _XOPEN_SOURCE 600
73
#endif
74
75
/* Needed for timegm and other extensions when building with -std=c99.
76
 * It also defines realpath, etc, which would normally require
77
 * _XOPEN_SOURCE >= 500. */
78
#if !defined(_NETBSD_SOURCE) && defined(__NetBSD__)
79
#define _NETBSD_SOURCE
80
#endif
81
82
/* Needed for several things when building with -std=c99. */
83
#if !__BSD_VISIBLE && (defined(__DragonFly__) || defined(__FreeBSD__))
84
#define __BSD_VISIBLE 1
85
#endif
86
87
#define _FILE_OFFSET_BITS 64
88
89
#endif
90
91
#include "janet.h"
92
93
/* src/core/state.h */
94
#line 0 "src/core/state.h"
95
96
/*
97
* Copyright (c) 2025 Calvin Rose
98
*
99
* Permission is hereby granted, free of charge, to any person obtaining a copy
100
* of this software and associated documentation files (the "Software"), to
101
* deal in the Software without restriction, including without limitation the
102
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
103
* sell copies of the Software, and to permit persons to whom the Software is
104
* furnished to do so, subject to the following conditions:
105
*
106
* The above copyright notice and this permission notice shall be included in
107
* all copies or substantial portions of the Software.
108
*
109
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
110
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
111
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
112
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
113
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
114
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
115
* IN THE SOFTWARE.
116
*/
117
118
#ifndef JANET_STATE_H_defined
119
#define JANET_STATE_H_defined
120
121
#include <janet.h>
122
#include <stdint.h>
123
124
#ifdef JANET_EV
125
#ifdef JANET_WINDOWS
126
#include <windows.h>
127
#else
128
#include <pthread.h>
129
#endif
130
#endif
131
132
typedef int64_t JanetTimestamp;
133
134
typedef struct JanetScratch {
135
    JanetScratchFinalizer finalize;
136
    long long mem[]; /* for proper alignment */
137
} JanetScratch;
138
139
typedef struct {
140
    JanetGCObject *self;
141
    JanetGCObject *other;
142
    int32_t index;
143
    int32_t index2;
144
} JanetTraversalNode;
145
146
typedef struct {
147
    int32_t capacity;
148
    int32_t head;
149
    int32_t tail;
150
    void *data;
151
} JanetQueue;
152
153
#ifdef JANET_EV
154
typedef struct {
155
    JanetTimestamp when;
156
    JanetFiber *fiber;
157
    JanetFiber *curr_fiber;
158
    uint32_t sched_id;
159
    int is_error;
160
    int has_worker;
161
#ifdef JANET_WINDOWS
162
    HANDLE worker;
163
#else
164
    pthread_t worker;
165
#endif
166
} JanetTimeout;
167
#endif
168
169
/* Registry table for C functions - contains metadata that can
170
 * be looked up by cfunction pointer. All strings here are pointing to
171
 * static memory not managed by Janet. */
172
typedef struct {
173
    JanetCFunction cfun;
174
    const char *name;
175
    const char *name_prefix;
176
    const char *source_file;
177
    int32_t source_line;
178
    /* int32_t min_arity; */
179
    /* int32_t max_arity; */
180
} JanetCFunRegistry;
181
182
struct JanetVM {
183
    /* Place for user data */
184
    void *user;
185
186
    /* Top level dynamic bindings */
187
    JanetTable *top_dyns;
188
189
    /* Cache the core environment */
190
    JanetTable *core_env;
191
192
    /* How many VM stacks have been entered */
193
    int stackn;
194
195
    /* If this flag is true, suspend on function calls and backwards jumps.
196
     * When this occurs, this flag will be reset to 0. */
197
    volatile JanetAtomicInt auto_suspend;
198
199
    /* The current running fiber on the current thread.
200
     * Set and unset by functions in vm.c */
201
    JanetFiber *fiber;
202
    JanetFiber *root_fiber;
203
204
    /* The current pointer to the inner most jmp_buf. The current
205
     * return point for panics. */
206
    jmp_buf *signal_buf;
207
    Janet *return_reg;
208
    int coerce_error;
209
210
    /* The global registry for c functions. Used to store meta-data
211
     * along with otherwise bare c function pointers. */
212
    JanetCFunRegistry *registry;
213
    size_t registry_cap;
214
    size_t registry_count;
215
    int registry_dirty;
216
217
    /* Registry for abstract types that can be marshalled.
218
     * We need this to look up the constructors when unmarshalling. */
219
    JanetTable *abstract_registry;
220
221
    /* Immutable value cache */
222
    const uint8_t **cache;
223
    uint32_t cache_capacity;
224
    uint32_t cache_count;
225
    uint32_t cache_deleted;
226
    uint8_t gensym_counter[8];
227
228
    /* Garbage collection */
229
    void *blocks;
230
    void *weak_blocks;
231
    size_t gc_interval;
232
    size_t next_collection;
233
    size_t block_count;
234
    int gc_suspend;
235
    int gc_mark_phase;
236
237
    /* GC roots */
238
    Janet *roots;
239
    size_t root_count;
240
    size_t root_capacity;
241
242
    /* Scratch memory */
243
    JanetScratch **scratch_mem;
244
    size_t scratch_cap;
245
    size_t scratch_len;
246
247
    /* Sandbox flags */
248
    uint32_t sandbox_flags;
249
250
    /* Random number generator */
251
    JanetRNG rng;
252
253
    /* Traversal pointers */
254
    JanetTraversalNode *traversal;
255
    JanetTraversalNode *traversal_top;
256
    JanetTraversalNode *traversal_base;
257
258
    /* Thread safe strerror error buffer - for janet_strerror */
259
#ifndef JANET_WINDOWS
260
    char strerror_buf[256];
261
#endif
262
263
    /* Event loop and scheduler globals */
264
#ifdef JANET_EV
265
    size_t tq_count;
266
    size_t tq_capacity;
267
    JanetQueue spawn;
268
    JanetTimeout *tq;
269
    JanetRNG ev_rng;
270
    volatile JanetAtomicInt listener_count; /* used in signal handler, must be volatile */
271
    JanetTable threaded_abstracts; /* All abstract types that can be shared between threads (used in this thread) */
272
    JanetTable active_tasks; /* All possibly live task fibers - used just for tracking */
273
    JanetTable signal_handlers;
274
#ifdef JANET_WINDOWS
275
    void **iocp;
276
#elif defined(JANET_EV_EPOLL)
277
    pthread_attr_t new_thread_attr;
278
    JanetHandle selfpipe[2];
279
    int epoll;
280
    int timerfd;
281
    int timer_enabled;
282
#elif defined(JANET_EV_KQUEUE)
283
    pthread_attr_t new_thread_attr;
284
    JanetHandle selfpipe[2];
285
    int kq;
286
    int timer;
287
    int timer_enabled;
288
#else
289
    JanetStream **streams;
290
    size_t stream_count;
291
    size_t stream_capacity;
292
    pthread_attr_t new_thread_attr;
293
    JanetHandle selfpipe[2];
294
    struct pollfd *fds;
295
#endif
296
#endif
297
298
};
299
300
extern JANET_THREAD_LOCAL JanetVM janet_vm;
301
302
#ifdef JANET_NET
303
void janet_net_init(void);
304
void janet_net_deinit(void);
305
#endif
306
307
#ifdef JANET_EV
308
void janet_ev_init(void);
309
void janet_ev_deinit(void);
310
#endif
311
312
#endif /* JANET_STATE_H_defined */
313
314
315
/* src/core/util.h */
316
#line 0 "src/core/util.h"
317
318
/*
319
* Copyright (c) 2025 Calvin Rose
320
*
321
* Permission is hereby granted, free of charge, to any person obtaining a copy
322
* of this software and associated documentation files (the "Software"), to
323
* deal in the Software without restriction, including without limitation the
324
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
325
* sell copies of the Software, and to permit persons to whom the Software is
326
* furnished to do so, subject to the following conditions:
327
*
328
* The above copyright notice and this permission notice shall be included in
329
* all copies or substantial portions of the Software.
330
*
331
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
332
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
333
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
334
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
335
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
336
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
337
* IN THE SOFTWARE.
338
*/
339
340
#ifndef JANET_UTIL_H_defined
341
#define JANET_UTIL_H_defined
342
343
#ifndef JANET_AMALG
344
#include "features.h"
345
#include <janet.h>
346
#include "state.h"
347
#endif
348
349
#include <stdio.h>
350
#include <errno.h>
351
#include <stddef.h>
352
#include <stdbool.h>
353
#include <math.h>
354
355
#ifdef JANET_EV
356
#ifndef JANET_WINDOWS
357
#include <pthread.h>
358
#endif
359
#endif
360
361
#if !defined(JANET_REDUCED_OS) || !defined(JANET_SINGLE_THREADED)
362
#include <time.h>
363
#define JANET_GETTIME
364
#endif
365
366
/* Handle runtime errors */
367
#ifndef JANET_EXIT
368
#include <stdio.h>
369
0
#define JANET_EXIT(m) do { \
370
0
    fprintf(stderr, "janet internal error at line %d in file %s: %s\n",\
371
0
        __LINE__,\
372
0
        __FILE__,\
373
0
        (m));\
374
0
    abort();\
375
0
} while (0)
376
#endif
377
378
0
#define JANET_MARSHAL_DECREF 0x40000
379
380
7.06M
#define janet_assert(c, m) do { \
381
7.06M
    if (!(c)) JANET_EXIT((m)); \
382
7.06M
} while (0)
383
384
/* Utils */
385
uint32_t janet_hash_mix(uint32_t input, uint32_t more);
386
6.18M
#define janet_maphash(cap, hash) ((uint32_t)(hash) & (cap - 1))
387
int janet_valid_utf8(const uint8_t *str, int32_t len);
388
int janet_is_symbol_char(uint8_t c);
389
extern const char janet_base64[65];
390
int32_t janet_array_calchash(const Janet *array, int32_t len);
391
int32_t janet_kv_calchash(const JanetKV *kvs, int32_t len);
392
int32_t janet_string_calchash(const uint8_t *str, int32_t len);
393
int32_t janet_tablen(int32_t n);
394
void safe_memcpy(void *dest, const void *src, size_t len);
395
void janet_buffer_push_types(JanetBuffer *buffer, int types);
396
const JanetKV *janet_dict_find(const JanetKV *buckets, int32_t cap, Janet key);
397
void janet_memempty(JanetKV *mem, int32_t count);
398
void *janet_memalloc_empty(int32_t count);
399
JanetTable *janet_get_core_table(const char *name);
400
void janet_def_addflags(JanetFuncDef *def);
401
void janet_buffer_dtostr(JanetBuffer *buffer, double x);
402
const char *janet_strerror(int e);
403
const void *janet_strbinsearch(
404
    const void *tab,
405
    size_t tabcount,
406
    size_t itemsize,
407
    const uint8_t *key);
408
void janet_buffer_format(
409
    JanetBuffer *b,
410
    const char *strfrmt,
411
    int32_t argstart,
412
    int32_t argc,
413
    Janet *argv);
414
Janet janet_next_impl(Janet ds, Janet key, int is_interpreter);
415
JanetBinding janet_binding_from_entry(Janet entry);
416
JanetByteView janet_text_substitution(
417
    Janet *subst,
418
    const uint8_t *bytes,
419
    uint32_t len,
420
    JanetArray *extra_args);
421
422
/* Registry functions */
423
void janet_registry_put(
424
    JanetCFunction key,
425
    const char *name,
426
    const char *name_prefix,
427
    const char *source_file,
428
    int32_t source_line);
429
JanetCFunRegistry *janet_registry_get(JanetCFunction key);
430
431
/* Inside the janet core, defining globals is different
432
 * at bootstrap time and normal runtime */
433
#ifdef JANET_BOOTSTRAP
434
#define JANET_CORE_REG JANET_REG
435
#define JANET_CORE_FN JANET_FN
436
#define JANET_CORE_DEF JANET_DEF
437
#define janet_core_def_sm janet_def_sm
438
#define janet_core_cfuns_ext janet_cfuns_ext
439
#else
440
0
#define JANET_CORE_REG JANET_REG_S
441
#define JANET_CORE_FN JANET_FN_S
442
0
#define JANET_CORE_DEF(ENV, NAME, X, DOC) janet_core_def_sm(ENV, NAME, X, DOC, NULL, 0)
443
void janet_core_def_sm(JanetTable *env, const char *name, Janet x, const void *p, const void *sf, int32_t sl);
444
void janet_core_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns);
445
#endif
446
447
/* Clock gettime */
448
#ifdef JANET_GETTIME
449
enum JanetTimeSource {
450
    JANET_TIME_REALTIME,
451
    JANET_TIME_MONOTONIC,
452
    JANET_TIME_CPUTIME
453
};
454
int janet_gettime(struct timespec *spec, enum JanetTimeSource source);
455
#endif
456
457
/* strdup */
458
#ifdef JANET_WINDOWS
459
#define strdup(x) _strdup(x)
460
#endif
461
462
/* Use LoadLibrary on windows or dlopen on posix to load dynamic libraries
463
 * with native code. */
464
#if defined(JANET_NO_DYNAMIC_MODULES)
465
typedef int Clib;
466
#define load_clib(name) ((void) name, 0)
467
#define symbol_clib(lib, sym) ((void) lib, (void) sym, NULL)
468
const char *error_clib(void);
469
#define free_clib(c) ((void) (c), 0)
470
#elif defined(JANET_WINDOWS)
471
#include <windows.h>
472
typedef HINSTANCE Clib;
473
void *symbol_clib(Clib clib, const char *sym);
474
void free_clib(Clib clib);
475
Clib load_clib(const char *name);
476
char *error_clib(void);
477
#else
478
#include <dlfcn.h>
479
typedef void *Clib;
480
0
#define load_clib(name) dlopen((name), RTLD_NOW)
481
0
#define free_clib(lib) dlclose((lib))
482
0
#define symbol_clib(lib, sym) dlsym((lib), (sym))
483
0
#define error_clib dlerror
484
#endif
485
char *get_processed_name(const char *name);
486
487
0
#define RETRY_EINTR(RC, CALL) do { (RC) = CALL; } while((RC) < 0 && errno == EINTR)
488
489
/* Initialize builtin libraries */
490
void janet_lib_io(JanetTable *env);
491
void janet_lib_math(JanetTable *env);
492
void janet_lib_array(JanetTable *env);
493
void janet_lib_tuple(JanetTable *env);
494
void janet_lib_buffer(JanetTable *env);
495
void janet_lib_table(JanetTable *env);
496
void janet_lib_struct(JanetTable *env);
497
void janet_lib_fiber(JanetTable *env);
498
void janet_lib_os(JanetTable *env);
499
void janet_lib_string(JanetTable *env);
500
void janet_lib_marsh(JanetTable *env);
501
void janet_lib_parse(JanetTable *env);
502
#ifdef JANET_ASSEMBLER
503
void janet_lib_asm(JanetTable *env);
504
#endif
505
void janet_lib_compile(JanetTable *env);
506
void janet_lib_debug(JanetTable *env);
507
#ifdef JANET_PEG
508
void janet_lib_peg(JanetTable *env);
509
#endif
510
#ifdef JANET_INT_TYPES
511
void janet_lib_inttypes(JanetTable *env);
512
#endif
513
#ifdef JANET_NET
514
void janet_lib_net(JanetTable *env);
515
extern const JanetAbstractType janet_address_type;
516
#endif
517
#ifdef JANET_EV
518
void janet_lib_ev(JanetTable *env);
519
void janet_ev_mark(void);
520
void janet_async_start_fiber(JanetFiber *fiber, JanetStream *stream, JanetAsyncMode mode, JanetEVCallback callback, void *state);
521
int janet_make_pipe(JanetHandle handles[2], int mode);
522
#ifdef JANET_FILEWATCH
523
void janet_lib_filewatch(JanetTable *env);
524
#endif
525
#endif
526
#ifdef JANET_FFI
527
void janet_lib_ffi(JanetTable *env);
528
#endif
529
530
#endif
531
532
533
/* src/core/gc.h */
534
#line 0 "src/core/gc.h"
535
536
/*
537
* Copyright (c) 2025 Calvin Rose
538
*
539
* Permission is hereby granted, free of charge, to any person obtaining a copy
540
* of this software and associated documentation files (the "Software"), to
541
* deal in the Software without restriction, including without limitation the
542
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
543
* sell copies of the Software, and to permit persons to whom the Software is
544
* furnished to do so, subject to the following conditions:
545
*
546
* The above copyright notice and this permission notice shall be included in
547
* all copies or substantial portions of the Software.
548
*
549
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
550
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
551
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
552
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
553
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
554
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
555
* IN THE SOFTWARE.
556
*/
557
558
#ifndef JANET_GC_H
559
#define JANET_GC_H
560
561
#ifndef JANET_AMALG
562
#include "features.h"
563
#include <janet.h>
564
#endif
565
566
/* The metadata header associated with an allocated block of memory */
567
40.3k
#define janet_gc_header(mem) ((JanetGCObject *)(mem))
568
569
9.44M
#define JANET_MEM_TYPEBITS 0xFF
570
0
#define JANET_MEM_REACHABLE 0x100
571
0
#define JANET_MEM_DISABLED 0x200
572
573
40.3k
#define janet_gc_settype(m, t) ((janet_gc_header(m)->flags |= (0xFF & (t))))
574
0
#define janet_gc_type(m) (janet_gc_header(m)->flags & 0xFF)
575
576
0
#define janet_gc_mark(m) (janet_gc_header(m)->flags |= JANET_MEM_REACHABLE)
577
0
#define janet_gc_reachable(m) (janet_gc_header(m)->flags & JANET_MEM_REACHABLE)
578
579
/* Memory types for the GC. Different from JanetType to include funcenv and funcdef. */
580
enum JanetMemoryType {
581
    JANET_MEMORY_NONE,
582
    JANET_MEMORY_STRING,
583
    JANET_MEMORY_SYMBOL,
584
    JANET_MEMORY_ARRAY,
585
    JANET_MEMORY_TUPLE,
586
    JANET_MEMORY_TABLE,
587
    JANET_MEMORY_STRUCT,
588
    JANET_MEMORY_FIBER,
589
    JANET_MEMORY_BUFFER,
590
    JANET_MEMORY_FUNCTION,
591
    JANET_MEMORY_ABSTRACT,
592
    JANET_MEMORY_FUNCENV,
593
    JANET_MEMORY_FUNCDEF,
594
    JANET_MEMORY_THREADED_ABSTRACT,
595
    JANET_MEMORY_TABLE_WEAKK,
596
    JANET_MEMORY_TABLE_WEAKV,
597
    JANET_MEMORY_TABLE_WEAKKV,
598
    JANET_MEMORY_ARRAY_WEAK
599
};
600
601
/* To allocate collectable memory, one must call janet_alloc, initialize the memory,
602
 * and then call when janet_enablegc when it is initialized and reachable by the gc (on the JANET stack) */
603
void *janet_gcalloc(enum JanetMemoryType type, size_t size);
604
605
#endif
606
607
608
/* src/core/vector.h */
609
#line 0 "src/core/vector.h"
610
611
/*
612
* Copyright (c) 2025 Calvin Rose
613
*
614
* Permission is hereby granted, free of charge, to any person obtaining a copy
615
* of this software and associated documentation files (the "Software"), to
616
* deal in the Software without restriction, including without limitation the
617
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
618
* sell copies of the Software, and to permit persons to whom the Software is
619
* furnished to do so, subject to the following conditions:
620
*
621
* The above copyright notice and this permission notice shall be included in
622
* all copies or substantial portions of the Software.
623
*
624
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
625
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
626
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
627
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
628
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
629
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
630
* IN THE SOFTWARE.
631
*/
632
633
#ifndef JANET_VECTOR_H_defined
634
#define JANET_VECTOR_H_defined
635
636
#ifndef JANET_AMALG
637
#include "features.h"
638
#include <janet.h>
639
#endif
640
641
/*
642
 * vector code modified from
643
 * https://github.com/nothings/stb/blob/master/stretchy_buffer.h
644
*/
645
646
/* This is mainly used code such as the assembler or compiler, which
647
 * need vector like data structures that are only garbage collected in case
648
 * of an error, and normally rely on malloc/free. */
649
650
0
#define janet_v_free(v)         (((v) != NULL) ? (janet_sfree(janet_v__raw(v)), 0) : 0)
651
0
#define janet_v_push(v, x)      (janet_v__maybegrow(v, 1), (v)[janet_v__cnt(v)++] = (x))
652
#define janet_v_pop(v)          (janet_v_count(v) ? janet_v__cnt(v)-- : 0)
653
0
#define janet_v_count(v)        (((v) != NULL) ? janet_v__cnt(v) : 0)
654
0
#define janet_v_last(v)         ((v)[janet_v__cnt(v) - 1])
655
#define janet_v_empty(v)        (((v) != NULL) ? (janet_v__cnt(v) = 0) : 0)
656
0
#define janet_v_flatten(v)      (janet_v_flattenmem((v), sizeof(*(v))))
657
658
0
#define janet_v__raw(v) ((int32_t *)(v) - 2)
659
0
#define janet_v__cap(v) janet_v__raw(v)[0]
660
0
#define janet_v__cnt(v) janet_v__raw(v)[1]
661
662
0
#define janet_v__needgrow(v, n)  ((v) == NULL || janet_v__cnt(v) + (n) >= janet_v__cap(v))
663
0
#define janet_v__maybegrow(v, n) (janet_v__needgrow((v), (n)) ? janet_v__grow((v), (n)) : 0)
664
0
#define janet_v__grow(v, n)      ((v) = janet_v_grow((v), (n), sizeof(*(v))))
665
666
/* Actual functions defined in vector.c */
667
void *janet_v_grow(void *v, int32_t increment, int32_t itemsize);
668
void *janet_v_flattenmem(void *v, int32_t itemsize);
669
670
#endif
671
672
673
/* src/core/fiber.h */
674
#line 0 "src/core/fiber.h"
675
676
/*
677
* Copyright (c) 2025 Calvin Rose
678
*
679
* Permission is hereby granted, free of charge, to any person obtaining a copy
680
* of this software and associated documentation files (the "Software"), to
681
* deal in the Software without restriction, including without limitation the
682
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
683
* sell copies of the Software, and to permit persons to whom the Software is
684
* furnished to do so, subject to the following conditions:
685
*
686
* The above copyright notice and this permission notice shall be included in
687
* all copies or substantial portions of the Software.
688
*
689
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
690
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
691
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
692
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
693
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
694
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
695
* IN THE SOFTWARE.
696
*/
697
698
#ifndef JANET_FIBER_H_defined
699
#define JANET_FIBER_H_defined
700
701
#ifndef JANET_AMALG
702
#include <janet.h>
703
#endif
704
705
/* Fiber signal masks. */
706
0
#define JANET_FIBER_MASK_ERROR 2
707
0
#define JANET_FIBER_MASK_DEBUG 4
708
0
#define JANET_FIBER_MASK_YIELD 8
709
710
0
#define JANET_FIBER_MASK_USER0 (16 << 0)
711
0
#define JANET_FIBER_MASK_USER1 (16 << 1)
712
0
#define JANET_FIBER_MASK_USER2 (16 << 2)
713
0
#define JANET_FIBER_MASK_USER3 (16 << 3)
714
0
#define JANET_FIBER_MASK_USER4 (16 << 4)
715
#define JANET_FIBER_MASK_USER5 (16 << 5)
716
#define JANET_FIBER_MASK_USER6 (16 << 6)
717
#define JANET_FIBER_MASK_USER7 (16 << 7)
718
0
#define JANET_FIBER_MASK_USER8 (16 << 8)
719
0
#define JANET_FIBER_MASK_USER9 (16 << 9)
720
721
0
#define JANET_FIBER_MASK_USERN(N) (16 << (N))
722
0
#define JANET_FIBER_MASK_USER 0x3FF0
723
724
0
#define JANET_FIBER_STATUS_MASK 0x3F0000
725
0
#define JANET_FIBER_RESUME_SIGNAL 0x400000
726
0
#define JANET_FIBER_STATUS_OFFSET 16
727
728
0
#define JANET_FIBER_BREAKPOINT       0x1000000
729
0
#define JANET_FIBER_RESUME_NO_USEVAL 0x2000000
730
0
#define JANET_FIBER_RESUME_NO_SKIP   0x4000000
731
0
#define JANET_FIBER_DID_LONGJUMP     0x8000000
732
0
#define JANET_FIBER_FLAG_MASK        0xF000000
733
734
0
#define JANET_FIBER_EV_FLAG_CANCELED 0x10000
735
0
#define JANET_FIBER_EV_FLAG_SUSPENDED 0x20000
736
0
#define JANET_FIBER_FLAG_ROOT 0x40000
737
0
#define JANET_FIBER_EV_FLAG_IN_FLIGHT 0x1
738
739
/* used only on windows, should otherwise be unset */
740
741
0
#define janet_fiber_set_status(f, s) do {\
742
0
    (f)->flags &= ~JANET_FIBER_STATUS_MASK;\
743
0
    (f)->flags |= (s) << JANET_FIBER_STATUS_OFFSET;\
744
0
} while (0)
745
746
0
#define janet_stack_frame(s) ((JanetStackFrame *)((s) - JANET_FRAME_SIZE))
747
0
#define janet_fiber_frame(f) janet_stack_frame((f)->data + (f)->frame)
748
void janet_fiber_setcapacity(JanetFiber *fiber, int32_t n);
749
void janet_fiber_push(JanetFiber *fiber, Janet x);
750
void janet_fiber_push2(JanetFiber *fiber, Janet x, Janet y);
751
void janet_fiber_push3(JanetFiber *fiber, Janet x, Janet y, Janet z);
752
void janet_fiber_pushn(JanetFiber *fiber, const Janet *arr, int32_t n);
753
int janet_fiber_funcframe(JanetFiber *fiber, JanetFunction *func);
754
int janet_fiber_funcframe_tail(JanetFiber *fiber, JanetFunction *func);
755
void janet_fiber_cframe(JanetFiber *fiber, JanetCFunction cfun);
756
void janet_fiber_popframe(JanetFiber *fiber);
757
void janet_env_maybe_detach(JanetFuncEnv *env);
758
int janet_env_valid(JanetFuncEnv *env);
759
760
#ifdef JANET_EV
761
void janet_fiber_did_resume(JanetFiber *fiber);
762
#endif
763
764
#endif
765
766
767
/* src/core/regalloc.h */
768
#line 0 "src/core/regalloc.h"
769
770
/*
771
* Copyright (c) 2025 Calvin Rose
772
*
773
* Permission is hereby granted, free of charge, to any person obtaining a copy
774
* of this software and associated documentation files (the "Software"), to
775
* deal in the Software without restriction, including without limitation the
776
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
777
* sell copies of the Software, and to permit persons to whom the Software is
778
* furnished to do so, subject to the following conditions:
779
*
780
* The above copyright notice and this permission notice shall be included in
781
* all copies or substantial portions of the Software.
782
*
783
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
784
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
785
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
786
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
787
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
788
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
789
* IN THE SOFTWARE.
790
*/
791
792
/* Implements a simple first fit register allocator for the compiler. */
793
794
#ifndef JANET_REGALLOC_H
795
#define JANET_REGALLOC_H
796
797
#include <stdint.h>
798
799
/* Placeholder for allocating temporary registers */
800
typedef enum {
801
    JANETC_REGTEMP_0,
802
    JANETC_REGTEMP_1,
803
    JANETC_REGTEMP_2,
804
    JANETC_REGTEMP_3,
805
    JANETC_REGTEMP_4,
806
    JANETC_REGTEMP_5,
807
    JANETC_REGTEMP_6,
808
    JANETC_REGTEMP_7
809
} JanetcRegisterTemp;
810
811
typedef struct {
812
    uint32_t *chunks;
813
    int32_t count; /* number of chunks in chunks */
814
    int32_t capacity; /* amount allocated for chunks */
815
    int32_t max; /* The maximum allocated register so far */
816
    int32_t regtemps; /* Hold which temp. registers are allocated. */
817
} JanetcRegisterAllocator;
818
819
void janetc_regalloc_init(JanetcRegisterAllocator *ra);
820
void janetc_regalloc_deinit(JanetcRegisterAllocator *ra);
821
822
int32_t janetc_regalloc_1(JanetcRegisterAllocator *ra);
823
void janetc_regalloc_free(JanetcRegisterAllocator *ra, int32_t reg);
824
int32_t janetc_regalloc_temp(JanetcRegisterAllocator *ra, JanetcRegisterTemp nth);
825
void janetc_regalloc_freetemp(JanetcRegisterAllocator *ra, int32_t reg, JanetcRegisterTemp nth);
826
void janetc_regalloc_clone(JanetcRegisterAllocator *dest, JanetcRegisterAllocator *src);
827
void janetc_regalloc_touch(JanetcRegisterAllocator *ra, int32_t reg);
828
int janetc_regalloc_check(JanetcRegisterAllocator *ra, int32_t reg);
829
830
#endif
831
832
833
/* src/core/compile.h */
834
#line 0 "src/core/compile.h"
835
836
/*
837
* Copyright (c) 2025 Calvin Rose
838
*
839
* Permission is hereby granted, free of charge, to any person obtaining a copy
840
* of this software and associated documentation files (the "Software"), to
841
* deal in the Software without restriction, including without limitation the
842
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
843
* sell copies of the Software, and to permit persons to whom the Software is
844
* furnished to do so, subject to the following conditions:
845
*
846
* The above copyright notice and this permission notice shall be included in
847
* all copies or substantial portions of the Software.
848
*
849
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
850
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
851
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
852
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
853
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
854
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
855
* IN THE SOFTWARE.
856
*/
857
858
#ifndef JANET_COMPILE_H
859
#define JANET_COMPILE_H
860
861
#ifndef JANET_AMALG
862
#include "features.h"
863
#include <janet.h>
864
#include "regalloc.h"
865
#endif
866
867
/* Levels for compiler warnings */
868
typedef enum {
869
    JANET_C_LINT_RELAXED,
870
    JANET_C_LINT_NORMAL,
871
    JANET_C_LINT_STRICT
872
} JanetCompileLintLevel;
873
874
/* Tags for some functions for the prepared inliner */
875
#define JANET_FUN_DEBUG 1
876
#define JANET_FUN_ERROR 2
877
#define JANET_FUN_APPLY 3
878
#define JANET_FUN_YIELD 4
879
#define JANET_FUN_RESUME 5
880
#define JANET_FUN_IN 6
881
#define JANET_FUN_PUT 7
882
#define JANET_FUN_LENGTH 8
883
#define JANET_FUN_ADD 9
884
#define JANET_FUN_SUBTRACT 10
885
#define JANET_FUN_MULTIPLY 11
886
#define JANET_FUN_DIVIDE 12
887
#define JANET_FUN_BAND 13
888
#define JANET_FUN_BOR 14
889
#define JANET_FUN_BXOR 15
890
#define JANET_FUN_LSHIFT 16
891
#define JANET_FUN_RSHIFT 17
892
#define JANET_FUN_RSHIFTU 18
893
#define JANET_FUN_BNOT 19
894
#define JANET_FUN_GT 20
895
#define JANET_FUN_LT 21
896
#define JANET_FUN_GTE 22
897
#define JANET_FUN_LTE 23
898
0
#define JANET_FUN_EQ 24
899
0
#define JANET_FUN_NEQ 25
900
#define JANET_FUN_PROP 26
901
#define JANET_FUN_GET 27
902
#define JANET_FUN_NEXT 28
903
#define JANET_FUN_MODULO 29
904
#define JANET_FUN_REMAINDER 30
905
#define JANET_FUN_CMP 31
906
#define JANET_FUN_CANCEL 32
907
#define JANET_FUN_DIVIDE_FLOOR 33
908
909
/* Compiler typedefs */
910
typedef struct JanetCompiler JanetCompiler;
911
typedef struct FormOptions FormOptions;
912
typedef struct SlotTracker SlotTracker;
913
typedef struct JanetScope JanetScope;
914
typedef struct JanetSlot JanetSlot;
915
typedef struct JanetFopts JanetFopts;
916
typedef struct JanetFunOptimizer JanetFunOptimizer;
917
typedef struct JanetSpecial JanetSpecial;
918
919
0
#define JANET_SLOT_CONSTANT 0x10000
920
0
#define JANET_SLOT_NAMED 0x20000
921
0
#define JANET_SLOT_MUTABLE 0x40000
922
0
#define JANET_SLOT_REF 0x80000
923
0
#define JANET_SLOT_RETURNED 0x100000
924
#define JANET_SLOT_DEP_NOTE 0x200000
925
#define JANET_SLOT_DEP_WARN 0x400000
926
#define JANET_SLOT_DEP_ERROR 0x800000
927
0
#define JANET_SLOT_SPLICED 0x1000000
928
929
0
#define JANET_SLOTTYPE_ANY 0xFFFF
930
931
/* A stack slot */
932
struct JanetSlot {
933
    Janet constant; /* If the slot has a constant value */
934
    int32_t index;
935
    int32_t envindex; /* 0 is local, positive number is an upvalue */
936
    uint32_t flags;
937
};
938
939
0
#define JANET_SCOPE_FUNCTION 1
940
0
#define JANET_SCOPE_ENV 2
941
0
#define JANET_SCOPE_TOP 4
942
0
#define JANET_SCOPE_UNUSED 8
943
0
#define JANET_SCOPE_CLOSURE 16
944
0
#define JANET_SCOPE_WHILE 32
945
946
/* A symbol and slot pair */
947
typedef struct SymPair {
948
    JanetSlot slot;
949
    const uint8_t *sym;
950
    const uint8_t *sym2;
951
    int keep;
952
    uint32_t birth_pc;
953
    uint32_t death_pc;
954
} SymPair;
955
956
typedef struct JanetEnvRef {
957
    int32_t envindex;
958
    JanetScope *scope;
959
} JanetEnvRef;
960
961
/* A lexical scope during compilation */
962
struct JanetScope {
963
964
    /* For debugging the compiler */
965
    const char *name;
966
967
    /* Scopes are doubly linked list */
968
    JanetScope *parent;
969
    JanetScope *child;
970
971
    /* Constants for this funcdef */
972
    Janet *consts;
973
974
    /* Map of symbols to slots. Use a simple linear scan for symbols. */
975
    SymPair *syms;
976
977
    /* FuncDefs */
978
    JanetFuncDef **defs;
979
980
    /* Register allocator */
981
    JanetcRegisterAllocator ra;
982
983
    /* Upvalue allocator */
984
    JanetcRegisterAllocator ua;
985
986
    /* Referenced closure environments. The values at each index correspond
987
     * to which index to get the environment from in the parent. The environment
988
     * that corresponds to the direct parent's stack will always have value 0. */
989
    JanetEnvRef *envs;
990
991
    int32_t bytecode_start;
992
    int flags;
993
};
994
995
/* Compilation state */
996
struct JanetCompiler {
997
998
    /* Pointer to current scope */
999
    JanetScope *scope;
1000
1001
    uint32_t *buffer;
1002
    JanetSourceMapping *mapbuffer;
1003
1004
    /* Hold the environment */
1005
    JanetTable *env;
1006
1007
    /* Name of source to attach to generated functions */
1008
    const uint8_t *source;
1009
1010
    /* The result of compilation */
1011
    JanetCompileResult result;
1012
1013
    /* Keep track of where we are in the source */
1014
    JanetSourceMapping current_mapping;
1015
1016
    /* Prevent unbounded recursion */
1017
    int recursion_guard;
1018
1019
    /* Collect linting results */
1020
    JanetArray *lints;
1021
};
1022
1023
0
#define JANET_FOPTS_TAIL 0x10000
1024
0
#define JANET_FOPTS_HINT 0x20000
1025
0
#define JANET_FOPTS_DROP 0x40000
1026
0
#define JANET_FOPTS_ACCEPT_SPLICE 0x80000
1027
1028
/* Options for compiling a single form */
1029
struct JanetFopts {
1030
    JanetCompiler *compiler;
1031
    JanetSlot hint;
1032
    uint32_t flags; /* bit set of accepted primitive types */
1033
};
1034
1035
/* Get the default form options */
1036
JanetFopts janetc_fopts_default(JanetCompiler *c);
1037
1038
/* For optimizing builtin normal functions. */
1039
struct JanetFunOptimizer {
1040
    int (*can_optimize)(JanetFopts opts, JanetSlot *args);
1041
    JanetSlot(*optimize)(JanetFopts opts, JanetSlot *args);
1042
};
1043
1044
/* A grouping of a named special and the corresponding compiler fragment */
1045
struct JanetSpecial {
1046
    const char *name;
1047
    JanetSlot(*compile)(JanetFopts opts, int32_t argn, const Janet *argv);
1048
};
1049
1050
/****************************************************/
1051
1052
/* Get an optimizer if it exists, otherwise NULL */
1053
const JanetFunOptimizer *janetc_funopt(uint32_t flags);
1054
1055
/* Get a special. Return NULL if none exists */
1056
const JanetSpecial *janetc_special(const uint8_t *name);
1057
1058
void janetc_freeslot(JanetCompiler *c, JanetSlot s);
1059
void janetc_nameslot(JanetCompiler *c, const uint8_t *sym, JanetSlot s);
1060
JanetSlot janetc_farslot(JanetCompiler *c);
1061
1062
/* Throw away some code after checking that it is well formed. */
1063
void janetc_throwaway(JanetFopts opts, Janet x);
1064
1065
/* Get a target slot for emitting an instruction. Will always return
1066
 * a local slot. */
1067
JanetSlot janetc_gettarget(JanetFopts opts);
1068
1069
/* Get a bunch of slots for function arguments */
1070
JanetSlot *janetc_toslots(JanetCompiler *c, const Janet *vals, int32_t len);
1071
1072
/* Get a bunch of slots for function arguments */
1073
JanetSlot *janetc_toslotskv(JanetCompiler *c, Janet ds);
1074
1075
/* Push slots loaded via janetc_toslots. */
1076
int32_t janetc_pushslots(JanetCompiler *c, JanetSlot *slots);
1077
1078
/* Free slots loaded via janetc_toslots */
1079
void janetc_freeslots(JanetCompiler *c, JanetSlot *slots);
1080
1081
/* Generate the return instruction for a slot. */
1082
JanetSlot janetc_return(JanetCompiler *c, JanetSlot s);
1083
1084
/* Store an error */
1085
void janetc_error(JanetCompiler *c, const uint8_t *m);
1086
void janetc_cerror(JanetCompiler *c, const char *m);
1087
1088
/* Linting */
1089
void janetc_lintf(JanetCompiler *C, JanetCompileLintLevel level, const char *format, ...);
1090
1091
/* Dispatch to correct form compiler */
1092
JanetSlot janetc_value(JanetFopts opts, Janet x);
1093
1094
/* Push and pop from the scope stack */
1095
void janetc_scope(JanetScope *s, JanetCompiler *c, int flags, const char *name);
1096
void janetc_popscope(JanetCompiler *c);
1097
void janetc_popscope_keepslot(JanetCompiler *c, JanetSlot retslot);
1098
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c);
1099
1100
/* Create a destroy slot */
1101
JanetSlot janetc_cslot(Janet x);
1102
1103
/* Search for a symbol */
1104
JanetSlot janetc_resolve(JanetCompiler *c, const uint8_t *sym);
1105
1106
/* Bytecode optimization */
1107
void janet_bytecode_movopt(JanetFuncDef *def);
1108
void janet_bytecode_remove_noops(JanetFuncDef *def);
1109
1110
#endif
1111
1112
1113
/* src/core/emit.h */
1114
#line 0 "src/core/emit.h"
1115
1116
/*
1117
* Copyright (c) 2025 Calvin Rose
1118
*
1119
* Permission is hereby granted, free of charge, to any person obtaining a copy
1120
* of this software and associated documentation files (the "Software"), to
1121
* deal in the Software without restriction, including without limitation the
1122
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1123
* sell copies of the Software, and to permit persons to whom the Software is
1124
* furnished to do so, subject to the following conditions:
1125
*
1126
* The above copyright notice and this permission notice shall be included in
1127
* all copies or substantial portions of the Software.
1128
*
1129
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1130
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1131
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1132
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1133
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1134
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1135
* IN THE SOFTWARE.
1136
*/
1137
1138
#ifndef JANET_EMIT_H
1139
#define JANET_EMIT_H
1140
1141
#ifndef JANET_AMALG
1142
#include "compile.h"
1143
#endif
1144
1145
void janetc_emit(JanetCompiler *c, uint32_t instr);
1146
1147
int32_t janetc_allocfar(JanetCompiler *c);
1148
int32_t janetc_allocnear(JanetCompiler *c, JanetcRegisterTemp);
1149
1150
int32_t janetc_emit_s(JanetCompiler *c, uint8_t op, JanetSlot s, int wr);
1151
int32_t janetc_emit_sl(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t label);
1152
int32_t janetc_emit_st(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t tflags);
1153
int32_t janetc_emit_si(JanetCompiler *c, uint8_t op, JanetSlot s, int16_t immediate, int wr);
1154
int32_t janetc_emit_su(JanetCompiler *c, uint8_t op, JanetSlot s, uint16_t immediate, int wr);
1155
int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int wr);
1156
int32_t janetc_emit_ssi(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int8_t immediate, int wr);
1157
int32_t janetc_emit_ssu(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, uint8_t immediate, int wr);
1158
int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, JanetSlot s3, int wr);
1159
1160
/* Check if two slots are equivalent */
1161
int janetc_sequal(JanetSlot x, JanetSlot y);
1162
1163
/* Move value from one slot to another. Cannot copy to constant slots. */
1164
void janetc_copy(JanetCompiler *c, JanetSlot dest, JanetSlot src);
1165
1166
#endif
1167
1168
1169
/* src/core/symcache.h */
1170
#line 0 "src/core/symcache.h"
1171
1172
/*
1173
* Copyright (c) 2025 Calvin Rose
1174
*
1175
* Permission is hereby granted, free of charge, to any person obtaining a copy
1176
* of this software and associated documentation files (the "Software"), to
1177
* deal in the Software without restriction, including without limitation the
1178
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1179
* sell copies of the Software, and to permit persons to whom the Software is
1180
* furnished to do so, subject to the following conditions:
1181
*
1182
* The above copyright notice and this permission notice shall be included in
1183
* all copies or substantial portions of the Software.
1184
*
1185
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1186
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1187
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1188
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1189
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1190
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1191
* IN THE SOFTWARE.
1192
*/
1193
1194
#ifndef JANET_SYMCACHE_H_defined
1195
#define JANET_SYMCACHE_H_defined
1196
1197
#ifndef JANET_AMALG
1198
#include "features.h"
1199
#include <janet.h>
1200
#endif
1201
1202
/* Initialize the cache (allocate cache memory) */
1203
void janet_symcache_init(void);
1204
void janet_symcache_deinit(void);
1205
void janet_symbol_deinit(const uint8_t *sym);
1206
1207
#endif
1208
1209
1210
/* Windows work around - winsock2 must be included before windows.h, especially in amalgamated build */
1211
#if defined(JANET_WINDOWS) && defined(JANET_NET)
1212
#include <winsock2.h>
1213
#endif
1214
1215
1216
/* src/core/abstract.c */
1217
#line 0 "src/core/abstract.c"
1218
1219
/*
1220
* Copyright (c) 2025 Calvin Rose
1221
*
1222
* Permission is hereby granted, free of charge, to any person obtaining a copy
1223
* of this software and associated documentation files (the "Software"), to
1224
* deal in the Software without restriction, including without limitation the
1225
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1226
* sell copies of the Software, and to permit persons to whom the Software is
1227
* furnished to do so, subject to the following conditions:
1228
*
1229
* The above copyright notice and this permission notice shall be included in
1230
* all copies or substantial portions of the Software.
1231
*
1232
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1233
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1234
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1235
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1236
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1237
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1238
* IN THE SOFTWARE.
1239
*/
1240
1241
#ifndef JANET_AMALG
1242
#include "features.h"
1243
#include <janet.h>
1244
#include "util.h"
1245
#include "gc.h"
1246
#include "state.h"
1247
#endif
1248
1249
#ifdef JANET_EV
1250
#ifdef JANET_WINDOWS
1251
#include <windows.h>
1252
#endif
1253
#endif
1254
1255
/* Create new userdata */
1256
40.3k
void *janet_abstract_begin(const JanetAbstractType *atype, size_t size) {
1257
40.3k
    JanetAbstractHead *header = janet_gcalloc(JANET_MEMORY_NONE,
1258
40.3k
                                sizeof(JanetAbstractHead) + size);
1259
40.3k
    header->size = size;
1260
40.3k
    header->type = atype;
1261
40.3k
    return (void *) & (header->data);
1262
40.3k
}
1263
1264
40.3k
void *janet_abstract_end(void *x) {
1265
40.3k
    janet_gc_settype((void *)(janet_abstract_head(x)), JANET_MEMORY_ABSTRACT);
1266
40.3k
    return x;
1267
40.3k
}
1268
1269
40.3k
void *janet_abstract(const JanetAbstractType *atype, size_t size) {
1270
40.3k
    return janet_abstract_end(janet_abstract_begin(atype, size));
1271
40.3k
}
1272
1273
#ifdef JANET_EV
1274
1275
/*
1276
 * Threaded abstracts
1277
 */
1278
1279
0
void *janet_abstract_begin_threaded(const JanetAbstractType *atype, size_t size) {
1280
0
    JanetAbstractHead *header = janet_malloc(sizeof(JanetAbstractHead) + size);
1281
0
    if (NULL == header) {
1282
0
        JANET_OUT_OF_MEMORY;
1283
0
    }
1284
0
    janet_vm.next_collection += size + sizeof(JanetAbstractHead);
1285
0
    header->gc.flags = JANET_MEMORY_THREADED_ABSTRACT;
1286
0
    header->gc.data.next = NULL; /* Clear memory for address sanitizers */
1287
0
    header->gc.data.refcount = 1;
1288
0
    header->size = size;
1289
0
    header->type = atype;
1290
0
    void *abstract = (void *) & (header->data);
1291
0
    janet_table_put(&janet_vm.threaded_abstracts, janet_wrap_abstract(abstract), janet_wrap_false());
1292
0
    return abstract;
1293
0
}
1294
1295
0
void *janet_abstract_end_threaded(void *x) {
1296
0
    janet_gc_settype((void *)(janet_abstract_head(x)), JANET_MEMORY_THREADED_ABSTRACT);
1297
0
    return x;
1298
0
}
1299
1300
0
void *janet_abstract_threaded(const JanetAbstractType *atype, size_t size) {
1301
0
    return janet_abstract_end_threaded(janet_abstract_begin_threaded(atype, size));
1302
0
}
1303
1304
/* Refcounting primitives and sync primitives */
1305
1306
#ifdef JANET_WINDOWS
1307
1308
size_t janet_os_mutex_size(void) {
1309
    return sizeof(CRITICAL_SECTION);
1310
}
1311
1312
size_t janet_os_rwlock_size(void) {
1313
    return sizeof(void *);
1314
}
1315
1316
void janet_os_mutex_init(JanetOSMutex *mutex) {
1317
    InitializeCriticalSection((CRITICAL_SECTION *) mutex);
1318
}
1319
1320
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
1321
    DeleteCriticalSection((CRITICAL_SECTION *) mutex);
1322
}
1323
1324
void janet_os_mutex_lock(JanetOSMutex *mutex) {
1325
    EnterCriticalSection((CRITICAL_SECTION *) mutex);
1326
}
1327
1328
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
1329
    /* error handling? May want to keep counter */
1330
    LeaveCriticalSection((CRITICAL_SECTION *) mutex);
1331
}
1332
1333
void janet_os_rwlock_init(JanetOSRWLock *rwlock) {
1334
    InitializeSRWLock((PSRWLOCK) rwlock);
1335
}
1336
1337
void janet_os_rwlock_deinit(JanetOSRWLock *rwlock) {
1338
    /* no op? */
1339
    (void) rwlock;
1340
}
1341
1342
void janet_os_rwlock_rlock(JanetOSRWLock *rwlock) {
1343
    AcquireSRWLockShared((PSRWLOCK) rwlock);
1344
}
1345
1346
void janet_os_rwlock_wlock(JanetOSRWLock *rwlock) {
1347
    AcquireSRWLockExclusive((PSRWLOCK) rwlock);
1348
}
1349
1350
void janet_os_rwlock_runlock(JanetOSRWLock *rwlock) {
1351
    ReleaseSRWLockShared((PSRWLOCK) rwlock);
1352
}
1353
1354
void janet_os_rwlock_wunlock(JanetOSRWLock *rwlock) {
1355
    ReleaseSRWLockExclusive((PSRWLOCK) rwlock);
1356
}
1357
1358
#else
1359
1360
0
size_t janet_os_mutex_size(void) {
1361
0
    return sizeof(pthread_mutex_t);
1362
0
}
1363
1364
0
size_t janet_os_rwlock_size(void) {
1365
0
    return sizeof(pthread_rwlock_t);
1366
0
}
1367
1368
0
void janet_os_mutex_init(JanetOSMutex *mutex) {
1369
0
    pthread_mutexattr_t attr;
1370
0
    pthread_mutexattr_init(&attr);
1371
0
    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
1372
0
    pthread_mutex_init((pthread_mutex_t *) mutex, &attr);
1373
0
}
1374
1375
0
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
1376
0
    pthread_mutex_destroy((pthread_mutex_t *) mutex);
1377
0
}
1378
1379
0
void janet_os_mutex_lock(JanetOSMutex *mutex) {
1380
0
    pthread_mutex_lock((pthread_mutex_t *) mutex);
1381
0
}
1382
1383
0
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
1384
0
    int ret = pthread_mutex_unlock((pthread_mutex_t *) mutex);
1385
0
    if (ret) janet_panic("cannot release lock");
1386
0
}
1387
1388
0
void janet_os_rwlock_init(JanetOSRWLock *rwlock) {
1389
0
    pthread_rwlock_init((pthread_rwlock_t *) rwlock, NULL);
1390
0
}
1391
1392
0
void janet_os_rwlock_deinit(JanetOSRWLock *rwlock) {
1393
0
    pthread_rwlock_destroy((pthread_rwlock_t *) rwlock);
1394
0
}
1395
1396
0
void janet_os_rwlock_rlock(JanetOSRWLock *rwlock) {
1397
0
    pthread_rwlock_rdlock((pthread_rwlock_t *) rwlock);
1398
0
}
1399
1400
0
void janet_os_rwlock_wlock(JanetOSRWLock *rwlock) {
1401
0
    pthread_rwlock_wrlock((pthread_rwlock_t *) rwlock);
1402
0
}
1403
1404
0
void janet_os_rwlock_runlock(JanetOSRWLock *rwlock) {
1405
0
    pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
1406
0
}
1407
1408
0
void janet_os_rwlock_wunlock(JanetOSRWLock *rwlock) {
1409
0
    pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
1410
0
}
1411
1412
#endif
1413
1414
0
int32_t janet_abstract_incref(void *abst) {
1415
0
    return janet_atomic_inc(&janet_abstract_head(abst)->gc.data.refcount);
1416
0
}
1417
1418
0
int32_t janet_abstract_decref(void *abst) {
1419
0
    return janet_atomic_dec(&janet_abstract_head(abst)->gc.data.refcount);
1420
0
}
1421
1422
#endif
1423
1424
1425
/* src/core/array.c */
1426
#line 0 "src/core/array.c"
1427
1428
/*
1429
* Copyright (c) 2025 Calvin Rose
1430
*
1431
* Permission is hereby granted, free of charge, to any person obtaining a copy
1432
* of this software and associated documentation files (the "Software"), to
1433
* deal in the Software without restriction, including without limitation the
1434
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1435
* sell copies of the Software, and to permit persons to whom the Software is
1436
* furnished to do so, subject to the following conditions:
1437
*
1438
* The above copyright notice and this permission notice shall be included in
1439
* all copies or substantial portions of the Software.
1440
*
1441
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1442
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1443
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1444
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1445
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1446
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1447
* IN THE SOFTWARE.
1448
*/
1449
1450
#ifndef JANET_AMALG
1451
#include "features.h"
1452
#include <janet.h>
1453
#include "gc.h"
1454
#include "util.h"
1455
#include "state.h"
1456
#endif
1457
1458
#include <string.h>
1459
1460
3.20k
static void janet_array_impl(JanetArray *array, int32_t capacity) {
1461
3.20k
    Janet *data = NULL;
1462
3.20k
    if (capacity > 0) {
1463
2.85k
        janet_vm.next_collection += capacity * sizeof(Janet);
1464
2.85k
        data = (Janet *) janet_malloc(sizeof(Janet) * (size_t) capacity);
1465
2.85k
        if (NULL == data) {
1466
0
            JANET_OUT_OF_MEMORY;
1467
0
        }
1468
2.85k
    }
1469
3.20k
    array->count = 0;
1470
3.20k
    array->capacity = capacity;
1471
3.20k
    array->data = data;
1472
3.20k
}
1473
1474
/* Creates a new array */
1475
3.20k
JanetArray *janet_array(int32_t capacity) {
1476
3.20k
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY, sizeof(JanetArray));
1477
3.20k
    janet_array_impl(array, capacity);
1478
3.20k
    return array;
1479
3.20k
}
1480
1481
/* Creates a new array with weak references */
1482
0
JanetArray *janet_array_weak(int32_t capacity) {
1483
0
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY_WEAK, sizeof(JanetArray));
1484
0
    janet_array_impl(array, capacity);
1485
0
    return array;
1486
0
}
1487
1488
/* Creates a new array from n elements. */
1489
0
JanetArray *janet_array_n(const Janet *elements, int32_t n) {
1490
0
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY, sizeof(JanetArray));
1491
0
    array->capacity = n;
1492
0
    array->count = n;
1493
0
    array->data = janet_malloc(sizeof(Janet) * (size_t) n);
1494
0
    if (!array->data) {
1495
0
        JANET_OUT_OF_MEMORY;
1496
0
    }
1497
0
    safe_memcpy(array->data, elements, sizeof(Janet) * n);
1498
0
    return array;
1499
0
}
1500
1501
/* Ensure the array has enough capacity for elements */
1502
0
void janet_array_ensure(JanetArray *array, int32_t capacity, int32_t growth) {
1503
0
    Janet *newData;
1504
0
    Janet *old = array->data;
1505
0
    if (capacity <= array->capacity) return;
1506
0
    int64_t new_capacity = ((int64_t) capacity) * growth;
1507
0
    if (new_capacity > INT32_MAX) new_capacity = INT32_MAX;
1508
0
    capacity = (int32_t) new_capacity;
1509
0
    newData = janet_realloc(old, capacity * sizeof(Janet));
1510
0
    if (NULL == newData) {
1511
0
        JANET_OUT_OF_MEMORY;
1512
0
    }
1513
0
    janet_vm.next_collection += (capacity - array->capacity) * sizeof(Janet);
1514
0
    array->data = newData;
1515
0
    array->capacity = capacity;
1516
0
}
1517
1518
/* Set the count of an array. Extend with nil if needed. */
1519
0
void janet_array_setcount(JanetArray *array, int32_t count) {
1520
0
    if (count < 0)
1521
0
        return;
1522
0
    if (count > array->count) {
1523
0
        int32_t i;
1524
0
        janet_array_ensure(array, count, 1);
1525
0
        for (i = array->count; i < count; i++) {
1526
0
            array->data[i] = janet_wrap_nil();
1527
0
        }
1528
0
    }
1529
0
    array->count = count;
1530
0
}
1531
1532
/* Push a value to the top of the array */
1533
0
void janet_array_push(JanetArray *array, Janet x) {
1534
0
    if (array->count == INT32_MAX) {
1535
0
        janet_panic("array overflow");
1536
0
    }
1537
0
    int32_t newcount = array->count + 1;
1538
0
    janet_array_ensure(array, newcount, 2);
1539
0
    array->data[array->count] = x;
1540
0
    array->count = newcount;
1541
0
}
1542
1543
/* Pop a value from the top of the array */
1544
0
Janet janet_array_pop(JanetArray *array) {
1545
0
    if (array->count) {
1546
0
        return array->data[--array->count];
1547
0
    } else {
1548
0
        return janet_wrap_nil();
1549
0
    }
1550
0
}
1551
1552
/* Look at the last value in the array */
1553
0
Janet janet_array_peek(JanetArray *array) {
1554
0
    if (array->count) {
1555
0
        return array->data[array->count - 1];
1556
0
    } else {
1557
0
        return janet_wrap_nil();
1558
0
    }
1559
0
}
1560
1561
/* C Functions */
1562
1563
JANET_CORE_FN(cfun_array_new,
1564
              "(array/new capacity)",
1565
              "Creates a new empty array with a pre-allocated capacity. The same as "
1566
0
              "`(array)` but can be more efficient if the maximum size of an array is known.") {
1567
0
    janet_fixarity(argc, 1);
1568
0
    int32_t cap = janet_getinteger(argv, 0);
1569
0
    JanetArray *array = janet_array(cap);
1570
0
    return janet_wrap_array(array);
1571
0
}
1572
1573
JANET_CORE_FN(cfun_array_weak,
1574
              "(array/weak capacity)",
1575
0
              "Creates a new empty array with a pre-allocated capacity and support for weak references. Similar to `array/new`.") {
1576
0
    janet_fixarity(argc, 1);
1577
0
    int32_t cap = janet_getinteger(argv, 0);
1578
0
    JanetArray *array = janet_array_weak(cap);
1579
0
    return janet_wrap_array(array);
1580
0
}
1581
1582
JANET_CORE_FN(cfun_array_new_filled,
1583
              "(array/new-filled count &opt value)",
1584
0
              "Creates a new array of `count` elements, all set to `value`, which defaults to nil. Returns the new array.") {
1585
0
    janet_arity(argc, 1, 2);
1586
0
    int32_t count = janet_getnat(argv, 0);
1587
0
    Janet x = (argc == 2) ? argv[1] : janet_wrap_nil();
1588
0
    JanetArray *array = janet_array(count);
1589
0
    for (int32_t i = 0; i < count; i++) {
1590
0
        array->data[i] = x;
1591
0
    }
1592
0
    array->count = count;
1593
0
    return janet_wrap_array(array);
1594
0
}
1595
1596
JANET_CORE_FN(cfun_array_fill,
1597
              "(array/fill arr &opt value)",
1598
              "Replace all elements of an array with `value` (defaulting to nil) without changing the length of the array. "
1599
0
              "Returns the modified array.") {
1600
0
    janet_arity(argc, 1, 2);
1601
0
    JanetArray *array = janet_getarray(argv, 0);
1602
0
    Janet x = (argc == 2) ? argv[1] : janet_wrap_nil();
1603
0
    for (int32_t i = 0; i < array->count; i++) {
1604
0
        array->data[i] = x;
1605
0
    }
1606
0
    return argv[0];
1607
0
}
1608
1609
JANET_CORE_FN(cfun_array_pop,
1610
              "(array/pop arr)",
1611
              "Remove the last element of the array and return it. If the array is empty, will return nil. Modifies "
1612
0
              "the input array.") {
1613
0
    janet_fixarity(argc, 1);
1614
0
    JanetArray *array = janet_getarray(argv, 0);
1615
0
    return janet_array_pop(array);
1616
0
}
1617
1618
JANET_CORE_FN(cfun_array_peek,
1619
              "(array/peek arr)",
1620
0
              "Returns the last element of the array. Does not modify the array.") {
1621
0
    janet_fixarity(argc, 1);
1622
0
    JanetArray *array = janet_getarray(argv, 0);
1623
0
    return janet_array_peek(array);
1624
0
}
1625
1626
JANET_CORE_FN(cfun_array_push,
1627
              "(array/push arr & xs)",
1628
0
              "Push all the elements of xs to the end of an array. Modifies the input array and returns it.") {
1629
0
    janet_arity(argc, 1, -1);
1630
0
    JanetArray *array = janet_getarray(argv, 0);
1631
0
    if (INT32_MAX - argc + 1 <= array->count) {
1632
0
        janet_panic("array overflow");
1633
0
    }
1634
0
    int32_t newcount = array->count - 1 + argc;
1635
0
    janet_array_ensure(array, newcount, 2);
1636
0
    if (argc > 1) memcpy(array->data + array->count, argv + 1, (size_t)(argc - 1) * sizeof(Janet));
1637
0
    array->count = newcount;
1638
0
    return argv[0];
1639
0
}
1640
1641
JANET_CORE_FN(cfun_array_ensure,
1642
              "(array/ensure arr capacity growth)",
1643
              "Ensures that the memory backing the array is large enough for `capacity` "
1644
              "items at the given rate of growth. `capacity` and `growth` must be integers. "
1645
              "If the backing capacity is already enough, then this function does nothing. "
1646
0
              "Otherwise, the backing memory will be reallocated so that there is enough space.") {
1647
0
    janet_fixarity(argc, 3);
1648
0
    JanetArray *array = janet_getarray(argv, 0);
1649
0
    int32_t newcount = janet_getinteger(argv, 1);
1650
0
    int32_t growth = janet_getinteger(argv, 2);
1651
0
    if (newcount < 1) janet_panic("expected positive integer");
1652
0
    janet_array_ensure(array, newcount, growth);
1653
0
    return argv[0];
1654
0
}
1655
1656
JANET_CORE_FN(cfun_array_slice,
1657
              "(array/slice arrtup &opt start end)",
1658
              "Takes a slice of array or tuple from `start` to `end`. The range is half open, "
1659
              "[start, end). Indexes can also be negative, indicating indexing from the "
1660
              "end of the array. By default, `start` is 0 and `end` is the length of the array. "
1661
              "Note that if the range is negative, it is taken as (start, end] to allow a full "
1662
0
              "negative slice range. Returns a new array.") {
1663
0
    JanetView view = janet_getindexed(argv, 0);
1664
0
    JanetRange range = janet_getslice(argc, argv);
1665
0
    JanetArray *array = janet_array(range.end - range.start);
1666
0
    if (array->data)
1667
0
        memcpy(array->data, view.items + range.start, sizeof(Janet) * (range.end - range.start));
1668
0
    array->count = range.end - range.start;
1669
0
    return janet_wrap_array(array);
1670
0
}
1671
1672
JANET_CORE_FN(cfun_array_concat,
1673
              "(array/concat arr & parts)",
1674
              "Concatenates a variable number of arrays (and tuples) into the first argument, "
1675
              "which must be an array. If any of the parts are arrays or tuples, their elements will "
1676
              "be inserted into the array. Otherwise, each part in `parts` will be appended to `arr` in order. "
1677
0
              "Return the modified array `arr`.") {
1678
0
    int32_t i;
1679
0
    janet_arity(argc, 1, -1);
1680
0
    JanetArray *array = janet_getarray(argv, 0);
1681
0
    for (i = 1; i < argc; i++) {
1682
0
        switch (janet_type(argv[i])) {
1683
0
            default:
1684
0
                janet_array_push(array, argv[i]);
1685
0
                break;
1686
0
            case JANET_ARRAY:
1687
0
            case JANET_TUPLE: {
1688
0
                int32_t j, len = 0;
1689
0
                const Janet *vals = NULL;
1690
0
                janet_indexed_view(argv[i], &vals, &len);
1691
0
                if (array->data == vals) {
1692
0
                    int32_t newcount = array->count + len;
1693
0
                    janet_array_ensure(array, newcount, 2);
1694
0
                    janet_indexed_view(argv[i], &vals, &len);
1695
0
                }
1696
0
                for (j = 0; j < len; j++)
1697
0
                    janet_array_push(array, vals[j]);
1698
0
            }
1699
0
            break;
1700
0
        }
1701
0
    }
1702
0
    return janet_wrap_array(array);
1703
0
}
1704
1705
JANET_CORE_FN(cfun_array_join,
1706
              "(array/join arr & parts)",
1707
              "Join a variable number of arrays and tuples into the first argument, "
1708
              "which must be an array. "
1709
0
              "Return the modified array `arr`.") {
1710
0
    int32_t i;
1711
0
    janet_arity(argc, 1, -1);
1712
0
    JanetArray *array = janet_getarray(argv, 0);
1713
0
    for (i = 1; i < argc; i++) {
1714
0
        int32_t j, len = 0;
1715
0
        const Janet *vals = NULL;
1716
0
        if (!janet_indexed_view(argv[i], &vals, &len)) {
1717
0
            janet_panicf("expected indexed type for argument %d, got %v", i, argv[i]);
1718
0
        }
1719
0
        if (array->data == vals) {
1720
0
            int32_t newcount = array->count + len;
1721
0
            janet_array_ensure(array, newcount, 2);
1722
0
            janet_indexed_view(argv[i], &vals, &len);
1723
0
        }
1724
0
        for (j = 0; j < len; j++)
1725
0
            janet_array_push(array, vals[j]);
1726
0
    }
1727
0
    return janet_wrap_array(array);
1728
0
}
1729
1730
JANET_CORE_FN(cfun_array_insert,
1731
              "(array/insert arr at & xs)",
1732
              "Insert all `xs` into array `arr` at index `at`. `at` should be an integer between "
1733
              "0 and the length of the array. A negative value for `at` will index backwards from "
1734
              "the end of the array, inserting after the index such that inserting at -1 appends to "
1735
0
              "the array. Returns the array.") {
1736
0
    size_t chunksize, restsize;
1737
0
    janet_arity(argc, 2, -1);
1738
0
    JanetArray *array = janet_getarray(argv, 0);
1739
0
    int32_t at = janet_getinteger(argv, 1);
1740
0
    if (at < 0) {
1741
0
        at = array->count + at + 1;
1742
0
    }
1743
0
    if (at < 0 || at > array->count)
1744
0
        janet_panicf("insertion index %d out of range [0,%d]", at, array->count);
1745
0
    chunksize = (argc - 2) * sizeof(Janet);
1746
0
    restsize = (array->count - at) * sizeof(Janet);
1747
0
    if (INT32_MAX - (argc - 2) < array->count) {
1748
0
        janet_panic("array overflow");
1749
0
    }
1750
0
    janet_array_ensure(array, array->count + argc - 2, 2);
1751
0
    if (restsize) {
1752
0
        memmove(array->data + at + argc - 2,
1753
0
                array->data + at,
1754
0
                restsize);
1755
0
    }
1756
0
    safe_memcpy(array->data + at, argv + 2, chunksize);
1757
0
    array->count += (argc - 2);
1758
0
    return argv[0];
1759
0
}
1760
1761
JANET_CORE_FN(cfun_array_remove,
1762
              "(array/remove arr at &opt n)",
1763
              "Remove up to `n` elements starting at index `at` in array `arr`. `at` can index from "
1764
              "the end of the array with a negative index, and `n` must be a non-negative integer. "
1765
              "By default, `n` is 1. "
1766
0
              "Returns the array.") {
1767
0
    janet_arity(argc, 2, 3);
1768
0
    JanetArray *array = janet_getarray(argv, 0);
1769
0
    int32_t at = janet_getinteger(argv, 1);
1770
0
    int32_t n = 1;
1771
0
    if (at < 0) {
1772
0
        at = array->count + at;
1773
0
    }
1774
0
    if (at < 0 || at > array->count)
1775
0
        janet_panicf("removal index %d out of range [0,%d]", at, array->count);
1776
0
    if (argc == 3) {
1777
0
        n = janet_getinteger(argv, 2);
1778
0
        if (n < 0)
1779
0
            janet_panicf("expected non-negative integer for argument n, got %v", argv[2]);
1780
0
    }
1781
0
    if (at + n > array->count) {
1782
0
        n = array->count - at;
1783
0
    }
1784
0
    memmove(array->data + at,
1785
0
            array->data + at + n,
1786
0
            (array->count - at - n) * sizeof(Janet));
1787
0
    array->count -= n;
1788
0
    return argv[0];
1789
0
}
1790
1791
JANET_CORE_FN(cfun_array_trim,
1792
              "(array/trim arr)",
1793
0
              "Set the backing capacity of an array to its current length. Returns the modified array.") {
1794
0
    janet_fixarity(argc, 1);
1795
0
    JanetArray *array = janet_getarray(argv, 0);
1796
0
    if (array->count) {
1797
0
        if (array->count < array->capacity) {
1798
0
            Janet *newData = janet_realloc(array->data, array->count * sizeof(Janet));
1799
0
            if (NULL == newData) {
1800
0
                JANET_OUT_OF_MEMORY;
1801
0
            }
1802
0
            array->data = newData;
1803
0
            array->capacity = array->count;
1804
0
        }
1805
0
    } else {
1806
0
        array->capacity = 0;
1807
0
        janet_free(array->data);
1808
0
        array->data = NULL;
1809
0
    }
1810
0
    return argv[0];
1811
0
}
1812
1813
JANET_CORE_FN(cfun_array_clear,
1814
              "(array/clear arr)",
1815
              "Empties an array, setting it's count to 0 but does not free the backing capacity. "
1816
0
              "Returns the modified array.") {
1817
0
    janet_fixarity(argc, 1);
1818
0
    JanetArray *array = janet_getarray(argv, 0);
1819
0
    array->count = 0;
1820
0
    return argv[0];
1821
0
}
1822
1823
/* Load the array module */
1824
0
void janet_lib_array(JanetTable *env) {
1825
0
    JanetRegExt array_cfuns[] = {
1826
0
        JANET_CORE_REG("array/new", cfun_array_new),
1827
0
        JANET_CORE_REG("array/weak", cfun_array_weak),
1828
0
        JANET_CORE_REG("array/new-filled", cfun_array_new_filled),
1829
0
        JANET_CORE_REG("array/fill", cfun_array_fill),
1830
0
        JANET_CORE_REG("array/pop", cfun_array_pop),
1831
0
        JANET_CORE_REG("array/peek", cfun_array_peek),
1832
0
        JANET_CORE_REG("array/push", cfun_array_push),
1833
0
        JANET_CORE_REG("array/ensure", cfun_array_ensure),
1834
0
        JANET_CORE_REG("array/slice", cfun_array_slice),
1835
0
        JANET_CORE_REG("array/concat", cfun_array_concat),
1836
0
        JANET_CORE_REG("array/insert", cfun_array_insert),
1837
0
        JANET_CORE_REG("array/remove", cfun_array_remove),
1838
0
        JANET_CORE_REG("array/trim", cfun_array_trim),
1839
0
        JANET_CORE_REG("array/clear", cfun_array_clear),
1840
0
        JANET_CORE_REG("array/join", cfun_array_join),
1841
0
        JANET_REG_END
1842
0
    };
1843
0
    janet_core_cfuns_ext(env, NULL, array_cfuns);
1844
0
}
1845
1846
1847
/* src/core/asm.c */
1848
#line 0 "src/core/asm.c"
1849
1850
/*
1851
* Copyright (c) 2025 Calvin Rose
1852
*
1853
* Permission is hereby granted, free of charge, to any person obtaining a copy
1854
* of this software and associated documentation files (the "Software"), to
1855
* deal in the Software without restriction, including without limitation the
1856
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1857
* sell copies of the Software, and to permit persons to whom the Software is
1858
* furnished to do so, subject to the following conditions:
1859
*
1860
* The above copyright notice and this permission notice shall be included in
1861
* all copies or substantial portions of the Software.
1862
*
1863
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1864
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1865
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1866
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1867
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1868
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1869
* IN THE SOFTWARE.
1870
*/
1871
1872
#ifndef JANET_AMALG
1873
#include "features.h"
1874
#include <janet.h>
1875
#include "util.h"
1876
#endif
1877
1878
#include <setjmp.h>
1879
1880
/* Conditionally compile this file */
1881
#ifdef JANET_ASSEMBLER
1882
1883
/* Definition for an instruction in the assembler */
1884
typedef struct JanetInstructionDef JanetInstructionDef;
1885
struct JanetInstructionDef {
1886
    const char *name;
1887
    enum JanetOpCode opcode;
1888
};
1889
1890
/* Hold all state needed during assembly */
1891
typedef struct JanetAssembler JanetAssembler;
1892
struct JanetAssembler {
1893
    JanetAssembler *parent;
1894
    JanetFuncDef *def;
1895
    jmp_buf on_error;
1896
    const uint8_t *errmessage;
1897
    int32_t errindex;
1898
1899
    int32_t environments_capacity;
1900
    int32_t defs_capacity;
1901
    int32_t bytecode_count; /* Used for calculating labels */
1902
1903
    Janet name;
1904
    JanetTable labels; /* keyword -> bytecode index */
1905
    JanetTable slots; /* symbol -> slot index */
1906
    JanetTable envs; /* symbol -> environment index */
1907
    JanetTable defs; /* symbol -> funcdefs index */
1908
};
1909
1910
/* Janet opcode descriptions in lexicographic order. This
1911
 * allows a binary search over the elements to find the
1912
 * correct opcode given a name. This works in reasonable
1913
 * time and is easier to setup statically than a hash table or
1914
 * prefix tree. */
1915
static const JanetInstructionDef janet_ops[] = {
1916
    {"add", JOP_ADD},
1917
    {"addim", JOP_ADD_IMMEDIATE},
1918
    {"band", JOP_BAND},
1919
    {"bnot", JOP_BNOT},
1920
    {"bor", JOP_BOR},
1921
    {"bxor", JOP_BXOR},
1922
    {"call", JOP_CALL},
1923
    {"clo", JOP_CLOSURE},
1924
    {"cmp", JOP_COMPARE},
1925
    {"cncl", JOP_CANCEL},
1926
    {"div", JOP_DIVIDE},
1927
    {"divf", JOP_DIVIDE_FLOOR},
1928
    {"divim", JOP_DIVIDE_IMMEDIATE},
1929
    {"eq", JOP_EQUALS},
1930
    {"eqim", JOP_EQUALS_IMMEDIATE},
1931
    {"err", JOP_ERROR},
1932
    {"get", JOP_GET},
1933
    {"geti", JOP_GET_INDEX},
1934
    {"gt", JOP_GREATER_THAN},
1935
    {"gte", JOP_GREATER_THAN_EQUAL},
1936
    {"gtim", JOP_GREATER_THAN_IMMEDIATE},
1937
    {"in", JOP_IN},
1938
    {"jmp", JOP_JUMP},
1939
    {"jmpif", JOP_JUMP_IF},
1940
    {"jmpni", JOP_JUMP_IF_NIL},
1941
    {"jmpnn", JOP_JUMP_IF_NOT_NIL},
1942
    {"jmpno", JOP_JUMP_IF_NOT},
1943
    {"ldc", JOP_LOAD_CONSTANT},
1944
    {"ldf", JOP_LOAD_FALSE},
1945
    {"ldi", JOP_LOAD_INTEGER},
1946
    {"ldn", JOP_LOAD_NIL},
1947
    {"lds", JOP_LOAD_SELF},
1948
    {"ldt", JOP_LOAD_TRUE},
1949
    {"ldu", JOP_LOAD_UPVALUE},
1950
    {"len", JOP_LENGTH},
1951
    {"lt", JOP_LESS_THAN},
1952
    {"lte", JOP_LESS_THAN_EQUAL},
1953
    {"ltim", JOP_LESS_THAN_IMMEDIATE},
1954
    {"mkarr", JOP_MAKE_ARRAY},
1955
    {"mkbtp", JOP_MAKE_BRACKET_TUPLE},
1956
    {"mkbuf", JOP_MAKE_BUFFER},
1957
    {"mkstr", JOP_MAKE_STRING},
1958
    {"mkstu", JOP_MAKE_STRUCT},
1959
    {"mktab", JOP_MAKE_TABLE},
1960
    {"mktup", JOP_MAKE_TUPLE},
1961
    {"mod", JOP_MODULO},
1962
    {"movf", JOP_MOVE_FAR},
1963
    {"movn", JOP_MOVE_NEAR},
1964
    {"mul", JOP_MULTIPLY},
1965
    {"mulim", JOP_MULTIPLY_IMMEDIATE},
1966
    {"neq", JOP_NOT_EQUALS},
1967
    {"neqim", JOP_NOT_EQUALS_IMMEDIATE},
1968
    {"next", JOP_NEXT},
1969
    {"noop", JOP_NOOP},
1970
    {"prop", JOP_PROPAGATE},
1971
    {"push", JOP_PUSH},
1972
    {"push2", JOP_PUSH_2},
1973
    {"push3", JOP_PUSH_3},
1974
    {"pusha", JOP_PUSH_ARRAY},
1975
    {"put", JOP_PUT},
1976
    {"puti", JOP_PUT_INDEX},
1977
    {"rem", JOP_REMAINDER},
1978
    {"res", JOP_RESUME},
1979
    {"ret", JOP_RETURN},
1980
    {"retn", JOP_RETURN_NIL},
1981
    {"setu", JOP_SET_UPVALUE},
1982
    {"sig", JOP_SIGNAL},
1983
    {"sl", JOP_SHIFT_LEFT},
1984
    {"slim", JOP_SHIFT_LEFT_IMMEDIATE},
1985
    {"sr", JOP_SHIFT_RIGHT},
1986
    {"srim", JOP_SHIFT_RIGHT_IMMEDIATE},
1987
    {"sru", JOP_SHIFT_RIGHT_UNSIGNED},
1988
    {"sruim", JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE},
1989
    {"sub", JOP_SUBTRACT},
1990
    {"subim", JOP_SUBTRACT_IMMEDIATE},
1991
    {"tcall", JOP_TAILCALL},
1992
    {"tchck", JOP_TYPECHECK}
1993
};
1994
1995
/* Typename aliases for tchck instruction */
1996
typedef struct TypeAlias {
1997
    const char *name;
1998
    int32_t mask;
1999
} TypeAlias;
2000
2001
static const TypeAlias type_aliases[] = {
2002
    {"abstract", JANET_TFLAG_ABSTRACT},
2003
    {"array", JANET_TFLAG_ARRAY},
2004
    {"boolean", JANET_TFLAG_BOOLEAN},
2005
    {"buffer", JANET_TFLAG_BUFFER},
2006
    {"callable", JANET_TFLAG_CALLABLE},
2007
    {"cfunction", JANET_TFLAG_CFUNCTION},
2008
    {"dictionary", JANET_TFLAG_DICTIONARY},
2009
    {"fiber", JANET_TFLAG_FIBER},
2010
    {"function", JANET_TFLAG_FUNCTION},
2011
    {"indexed", JANET_TFLAG_INDEXED},
2012
    {"keyword", JANET_TFLAG_KEYWORD},
2013
    {"nil", JANET_TFLAG_NIL},
2014
    {"number", JANET_TFLAG_NUMBER},
2015
    {"pointer", JANET_TFLAG_POINTER},
2016
    {"string", JANET_TFLAG_STRING},
2017
    {"struct", JANET_TFLAG_STRUCT},
2018
    {"symbol", JANET_TFLAG_SYMBOL},
2019
    {"table", JANET_TFLAG_TABLE},
2020
    {"tuple", JANET_TFLAG_TUPLE}
2021
};
2022
2023
/* Deinitialize an Assembler. Does not deinitialize the parents. */
2024
0
static void janet_asm_deinit(JanetAssembler *a) {
2025
0
    janet_table_deinit(&a->slots);
2026
0
    janet_table_deinit(&a->labels);
2027
0
    janet_table_deinit(&a->envs);
2028
0
    janet_table_deinit(&a->defs);
2029
0
}
2030
2031
0
static void janet_asm_longjmp(JanetAssembler *a) {
2032
#if defined(JANET_BSD) || defined(JANET_APPLE)
2033
    _longjmp(a->on_error, 1);
2034
#else
2035
0
    longjmp(a->on_error, 1);
2036
0
#endif
2037
0
}
2038
2039
/* Throw some kind of assembly error */
2040
0
static void janet_asm_error(JanetAssembler *a, const char *message) {
2041
0
    if (a->errindex < 0) {
2042
0
        a->errmessage = janet_formatc("%s", message);
2043
0
    } else {
2044
0
        a->errmessage = janet_formatc("%s, instruction %d", message, a->errindex);
2045
0
    }
2046
0
    janet_asm_longjmp(a);
2047
0
}
2048
0
#define janet_asm_assert(a, c, m) do { if (!(c)) janet_asm_error((a), (m)); } while (0)
2049
2050
/* Throw some kind of assembly error */
2051
0
static void janet_asm_errorv(JanetAssembler *a, const uint8_t *m) {
2052
0
    a->errmessage = m;
2053
0
    janet_asm_longjmp(a);
2054
0
}
2055
2056
/* Add a closure environment to the assembler. Sub funcdefs may need
2057
 * to reference outer function environments, and may change the outer environment.
2058
 * Returns the index of the environment in the assembler's environments, or -1
2059
 * if not found. */
2060
0
static int32_t janet_asm_addenv(JanetAssembler *a, Janet envname) {
2061
0
    Janet check;
2062
0
    JanetFuncDef *def = a->def;
2063
0
    int32_t envindex;
2064
0
    int32_t res;
2065
0
    if (janet_equals(a->name, envname)) {
2066
0
        return -1;
2067
0
    }
2068
    /* Check for memoized value */
2069
0
    check = janet_table_get(&a->envs, envname);
2070
0
    if (janet_checktype(check, JANET_NUMBER)) {
2071
0
        return (int32_t) janet_unwrap_number(check);
2072
0
    }
2073
0
    if (NULL == a->parent) return -2;
2074
0
    res = janet_asm_addenv(a->parent, envname);
2075
0
    if (res < -1) {
2076
0
        return res;
2077
0
    }
2078
0
    envindex = def->environments_length;
2079
0
    janet_table_put(&a->envs, envname, janet_wrap_number(envindex));
2080
0
    if (envindex >= a->environments_capacity) {
2081
0
        int32_t newcap = 2 * envindex;
2082
0
        def->environments = janet_realloc(def->environments, newcap * sizeof(int32_t));
2083
0
        if (NULL == def->environments) {
2084
0
            JANET_OUT_OF_MEMORY;
2085
0
        }
2086
0
        a->environments_capacity = newcap;
2087
0
    }
2088
0
    def->environments[envindex] = (int32_t) res;
2089
0
    def->environments_length = envindex + 1;
2090
0
    return envindex;
2091
0
}
2092
2093
/* Parse an argument to an assembly instruction, and return the result as an
2094
 * integer. This integer will need to be bounds checked. */
2095
static int32_t doarg_1(
2096
    JanetAssembler *a,
2097
    enum JanetOpArgType argtype,
2098
0
    Janet x) {
2099
0
    int32_t ret = -1;
2100
0
    JanetTable *c;
2101
0
    switch (argtype) {
2102
0
        default:
2103
0
            c = NULL;
2104
0
            break;
2105
0
        case JANET_OAT_SLOT:
2106
0
            c = &a->slots;
2107
0
            break;
2108
0
        case JANET_OAT_ENVIRONMENT:
2109
0
            c = &a->envs;
2110
0
            break;
2111
0
        case JANET_OAT_LABEL:
2112
0
            c = &a->labels;
2113
0
            break;
2114
0
        case JANET_OAT_FUNCDEF:
2115
0
            c = &a->defs;
2116
0
            break;
2117
0
    }
2118
0
    switch (janet_type(x)) {
2119
0
        default:
2120
0
            goto error;
2121
0
            break;
2122
0
        case JANET_NUMBER: {
2123
0
            double y = janet_unwrap_number(x);
2124
0
            if (janet_checkintrange(y)) {
2125
0
                ret = (int32_t) y;
2126
0
            } else {
2127
0
                goto error;
2128
0
            }
2129
0
            break;
2130
0
        }
2131
0
        case JANET_TUPLE: {
2132
0
            const Janet *t = janet_unwrap_tuple(x);
2133
0
            if (argtype == JANET_OAT_TYPE) {
2134
0
                int32_t i = 0;
2135
0
                ret = 0;
2136
0
                for (i = 0; i < janet_tuple_length(t); i++) {
2137
0
                    ret |= doarg_1(a, JANET_OAT_SIMPLETYPE, t[i]);
2138
0
                }
2139
0
            } else {
2140
0
                goto error;
2141
0
            }
2142
0
            break;
2143
0
        }
2144
0
        case JANET_KEYWORD: {
2145
0
            if (NULL != c && argtype == JANET_OAT_LABEL) {
2146
0
                Janet result = janet_table_get(c, x);
2147
0
                if (janet_checktype(result, JANET_NUMBER)) {
2148
0
                    ret = janet_unwrap_integer(result) - a->bytecode_count;
2149
0
                } else {
2150
0
                    goto error;
2151
0
                }
2152
0
            } else if (argtype == JANET_OAT_TYPE || argtype == JANET_OAT_SIMPLETYPE) {
2153
0
                const TypeAlias *alias = janet_strbinsearch(
2154
0
                                             &type_aliases,
2155
0
                                             sizeof(type_aliases) / sizeof(TypeAlias),
2156
0
                                             sizeof(TypeAlias),
2157
0
                                             janet_unwrap_keyword(x));
2158
0
                if (alias) {
2159
0
                    ret = alias->mask;
2160
0
                } else {
2161
0
                    janet_asm_errorv(a, janet_formatc("unknown type %v", x));
2162
0
                }
2163
0
            } else {
2164
0
                goto error;
2165
0
            }
2166
0
            break;
2167
0
        }
2168
0
        case JANET_SYMBOL: {
2169
0
            if (NULL != c) {
2170
0
                Janet result = janet_table_get(c, x);
2171
0
                if (janet_checktype(result, JANET_NUMBER)) {
2172
0
                    ret = (int32_t) janet_unwrap_number(result);
2173
0
                } else {
2174
0
                    janet_asm_errorv(a, janet_formatc("unknown name %v", x));
2175
0
                }
2176
0
            } else {
2177
0
                goto error;
2178
0
            }
2179
0
            if (argtype == JANET_OAT_ENVIRONMENT && ret == -1) {
2180
                /* Add a new env */
2181
0
                ret = janet_asm_addenv(a, x);
2182
0
                if (ret < -1) {
2183
0
                    janet_asm_errorv(a, janet_formatc("unknown environment %v", x));
2184
0
                }
2185
0
            }
2186
0
            break;
2187
0
        }
2188
0
    }
2189
0
    if (argtype == JANET_OAT_SLOT && ret >= a->def->slotcount)
2190
0
        a->def->slotcount = (int32_t) ret + 1;
2191
0
    return ret;
2192
2193
0
error:
2194
0
    janet_asm_errorv(a, janet_formatc("error parsing instruction argument %v", x));
2195
0
    return 0;
2196
0
}
2197
2198
/* Parse a single argument to an instruction. Trims it as well as
2199
 * try to convert arguments to bit patterns */
2200
static uint32_t doarg(
2201
    JanetAssembler *a,
2202
    enum JanetOpArgType argtype,
2203
    int nth,
2204
    int nbytes,
2205
    int hassign,
2206
0
    Janet x) {
2207
0
    int32_t arg = doarg_1(a, argtype, x);
2208
    /* Calculate the min and max values that can be stored given
2209
     * nbytes, and whether or not the storage is signed */
2210
0
    int32_t max = (1 << ((nbytes << 3) - hassign)) - 1;
2211
0
    int32_t min = hassign ? -max - 1 : 0;
2212
0
    if (arg < min)
2213
0
        janet_asm_errorv(a, janet_formatc("instruction argument %v is too small, must be %d byte%s",
2214
0
                                          x, nbytes, nbytes > 1 ? "s" : ""));
2215
0
    if (arg > max)
2216
0
        janet_asm_errorv(a, janet_formatc("instruction argument %v is too large, must be %d byte%s",
2217
0
                                          x, nbytes, nbytes > 1 ? "s" : ""));
2218
0
    return ((uint32_t) arg) << (nth << 3);
2219
0
}
2220
2221
/* Provide parsing methods for the different kinds of arguments */
2222
static uint32_t read_instruction(
2223
    JanetAssembler *a,
2224
    const JanetInstructionDef *idef,
2225
0
    const Janet *argt) {
2226
0
    uint32_t instr = idef->opcode;
2227
0
    enum JanetInstructionType type = janet_instructions[idef->opcode];
2228
0
    switch (type) {
2229
0
        case JINT_0: {
2230
0
            if (janet_tuple_length(argt) != 1)
2231
0
                janet_asm_error(a, "expected 0 arguments: (op)");
2232
0
            break;
2233
0
        }
2234
0
        case JINT_S: {
2235
0
            if (janet_tuple_length(argt) != 2)
2236
0
                janet_asm_error(a, "expected 1 argument: (op, slot)");
2237
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 2, 0, argt[1]);
2238
0
            break;
2239
0
        }
2240
0
        case JINT_L: {
2241
0
            if (janet_tuple_length(argt) != 2)
2242
0
                janet_asm_error(a, "expected 1 argument: (op, label)");
2243
0
            instr |= doarg(a, JANET_OAT_LABEL, 1, 3, 1, argt[1]);
2244
0
            break;
2245
0
        }
2246
0
        case JINT_SS: {
2247
0
            if (janet_tuple_length(argt) != 3)
2248
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, slot)");
2249
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2250
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 2, 0, argt[2]);
2251
0
            break;
2252
0
        }
2253
0
        case JINT_SL: {
2254
0
            if (janet_tuple_length(argt) != 3)
2255
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, label)");
2256
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2257
0
            instr |= doarg(a, JANET_OAT_LABEL, 2, 2, 1, argt[2]);
2258
0
            break;
2259
0
        }
2260
0
        case JINT_ST: {
2261
0
            if (janet_tuple_length(argt) != 3)
2262
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, type)");
2263
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2264
0
            instr |= doarg(a, JANET_OAT_TYPE, 2, 2, 0, argt[2]);
2265
0
            break;
2266
0
        }
2267
0
        case JINT_SI:
2268
0
        case JINT_SU: {
2269
0
            if (janet_tuple_length(argt) != 3)
2270
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, integer)");
2271
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2272
0
            instr |= doarg(a, JANET_OAT_INTEGER, 2, 2, type == JINT_SI, argt[2]);
2273
0
            break;
2274
0
        }
2275
0
        case JINT_SD: {
2276
0
            if (janet_tuple_length(argt) != 3)
2277
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, funcdef)");
2278
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2279
0
            instr |= doarg(a, JANET_OAT_FUNCDEF, 2, 2, 0, argt[2]);
2280
0
            break;
2281
0
        }
2282
0
        case JINT_SSS: {
2283
0
            if (janet_tuple_length(argt) != 4)
2284
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, slot, slot)");
2285
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2286
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 1, 0, argt[2]);
2287
0
            instr |= doarg(a, JANET_OAT_SLOT, 3, 1, 0, argt[3]);
2288
0
            break;
2289
0
        }
2290
0
        case JINT_SSI:
2291
0
        case JINT_SSU: {
2292
0
            if (janet_tuple_length(argt) != 4)
2293
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, slot, integer)");
2294
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2295
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 1, 0, argt[2]);
2296
0
            instr |= doarg(a, JANET_OAT_INTEGER, 3, 1, type == JINT_SSI, argt[3]);
2297
0
            break;
2298
0
        }
2299
0
        case JINT_SES: {
2300
0
            JanetAssembler *b = a;
2301
0
            uint32_t env;
2302
0
            if (janet_tuple_length(argt) != 4)
2303
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, environment, envslot)");
2304
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2305
0
            env = doarg(a, JANET_OAT_ENVIRONMENT, 0, 1, 0, argt[2]);
2306
0
            instr |= env << 16;
2307
0
            for (env += 1; env > 0; env--) {
2308
0
                b = b->parent;
2309
0
                if (NULL == b)
2310
0
                    janet_asm_error(a, "invalid environment index");
2311
0
            }
2312
0
            instr |= doarg(b, JANET_OAT_SLOT, 3, 1, 0, argt[3]);
2313
0
            break;
2314
0
        }
2315
0
        case JINT_SC: {
2316
0
            if (janet_tuple_length(argt) != 3)
2317
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, constant)");
2318
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2319
0
            instr |= doarg(a, JANET_OAT_CONSTANT, 2, 2, 0, argt[2]);
2320
0
            break;
2321
0
        }
2322
0
    }
2323
0
    return instr;
2324
0
}
2325
2326
/* Helper to get from a structure */
2327
0
static Janet janet_get1(Janet ds, Janet key) {
2328
0
    switch (janet_type(ds)) {
2329
0
        default:
2330
0
            return janet_wrap_nil();
2331
0
        case JANET_TABLE:
2332
0
            return janet_table_get(janet_unwrap_table(ds), key);
2333
0
        case JANET_STRUCT:
2334
0
            return janet_struct_get(janet_unwrap_struct(ds), key);
2335
0
    }
2336
0
}
2337
2338
/* Helper to assembly. Return the assembly result */
2339
0
static JanetAssembleResult janet_asm1(JanetAssembler *parent, Janet source, int flags) {
2340
0
    JanetAssembleResult result;
2341
0
    JanetAssembler a;
2342
0
    Janet s = source;
2343
0
    JanetFuncDef *def;
2344
0
    int32_t count, i;
2345
0
    const Janet *arr;
2346
0
    Janet x;
2347
0
    (void) flags;
2348
2349
    /* Initialize funcdef */
2350
0
    def = janet_funcdef_alloc();
2351
2352
    /* Initialize Assembler */
2353
0
    a.def = def;
2354
0
    a.parent = parent;
2355
0
    a.errmessage = NULL;
2356
0
    a.errindex = 0;
2357
0
    a.environments_capacity = 0;
2358
0
    a.bytecode_count = 0;
2359
0
    a.defs_capacity = 0;
2360
0
    a.name = janet_wrap_nil();
2361
0
    janet_table_init(&a.labels, 0);
2362
0
    janet_table_init(&a.slots, 0);
2363
0
    janet_table_init(&a.envs, 0);
2364
0
    janet_table_init(&a.defs, 0);
2365
2366
    /* Set error jump */
2367
#if defined(JANET_BSD) || defined(JANET_APPLE)
2368
    if (_setjmp(a.on_error)) {
2369
#else
2370
0
    if (setjmp(a.on_error)) {
2371
0
#endif
2372
0
        if (NULL != a.parent) {
2373
0
            janet_asm_deinit(&a);
2374
0
            a.parent->errmessage = a.errmessage;
2375
0
            janet_asm_longjmp(a.parent);
2376
0
        }
2377
0
        result.funcdef = NULL;
2378
0
        result.error = a.errmessage;
2379
0
        result.status = JANET_ASSEMBLE_ERROR;
2380
0
        janet_asm_deinit(&a);
2381
0
        return result;
2382
0
    }
2383
2384
0
    janet_asm_assert(&a,
2385
0
                     janet_checktype(s, JANET_STRUCT) ||
2386
0
                     janet_checktype(s, JANET_TABLE),
2387
0
                     "expected struct or table for assembly source");
2388
2389
    /* Check for function name */
2390
0
    a.name = janet_get1(s, janet_ckeywordv("name"));
2391
0
    if (!janet_checktype(a.name, JANET_NIL)) {
2392
0
        def->name = janet_to_string(a.name);
2393
0
    }
2394
2395
    /* Set function arity */
2396
0
    x = janet_get1(s, janet_ckeywordv("arity"));
2397
0
    def->arity = janet_checkint(x) ? janet_unwrap_integer(x) : 0;
2398
0
    janet_asm_assert(&a, def->arity >= 0, "arity must be non-negative");
2399
2400
0
    x = janet_get1(s, janet_ckeywordv("max-arity"));
2401
0
    def->max_arity = janet_checkint(x) ? janet_unwrap_integer(x) : def->arity;
2402
0
    janet_asm_assert(&a, def->max_arity >= def->arity, "max-arity must be greater than or equal to arity");
2403
2404
0
    x = janet_get1(s, janet_ckeywordv("min-arity"));
2405
0
    def->min_arity = janet_checkint(x) ? janet_unwrap_integer(x) : def->arity;
2406
0
    janet_asm_assert(&a, def->min_arity <= def->arity, "min-arity must be less than or equal to arity");
2407
2408
    /* Check vararg */
2409
0
    x = janet_get1(s, janet_ckeywordv("vararg"));
2410
0
    if (janet_truthy(x)) def->flags |= JANET_FUNCDEF_FLAG_VARARG;
2411
2412
    /* Initialize slotcount */
2413
0
    def->slotcount = !!(def->flags & JANET_FUNCDEF_FLAG_VARARG) + def->arity;
2414
2415
    /* Check structarg */
2416
0
    x = janet_get1(s, janet_ckeywordv("structarg"));
2417
0
    if (janet_truthy(x)) def->flags |= JANET_FUNCDEF_FLAG_STRUCTARG;
2418
2419
    /* Check source */
2420
0
    x = janet_get1(s, janet_ckeywordv("source"));
2421
0
    if (janet_checktype(x, JANET_STRING)) def->source = janet_unwrap_string(x);
2422
2423
    /* Create slot aliases */
2424
0
    x = janet_get1(s, janet_ckeywordv("slots"));
2425
0
    if (janet_indexed_view(x, &arr, &count)) {
2426
0
        for (i = 0; i < count; i++) {
2427
0
            Janet v = arr[i];
2428
0
            if (janet_checktype(v, JANET_TUPLE)) {
2429
0
                const Janet *t = janet_unwrap_tuple(v);
2430
0
                int32_t j;
2431
0
                for (j = 0; j < janet_tuple_length(t); j++) {
2432
0
                    if (!janet_checktype(t[j], JANET_SYMBOL))
2433
0
                        janet_asm_error(&a, "slot names must be symbols");
2434
0
                    janet_table_put(&a.slots, t[j], janet_wrap_integer(i));
2435
0
                }
2436
0
            } else if (janet_checktype(v, JANET_SYMBOL)) {
2437
0
                janet_table_put(&a.slots, v, janet_wrap_integer(i));
2438
0
            } else {
2439
0
                janet_asm_error(&a, "slot names must be symbols or tuple of symbols");
2440
0
            }
2441
0
        }
2442
0
    }
2443
2444
    /* Parse constants */
2445
0
    x = janet_get1(s, janet_ckeywordv("constants"));
2446
0
    if (janet_indexed_view(x, &arr, &count)) {
2447
0
        def->constants_length = count;
2448
0
        def->constants = janet_malloc(sizeof(Janet) * (size_t) count);
2449
0
        if (NULL == def->constants) {
2450
0
            JANET_OUT_OF_MEMORY;
2451
0
        }
2452
0
        for (i = 0; i < count; i++) {
2453
0
            Janet ct = arr[i];
2454
0
            def->constants[i] = ct;
2455
0
        }
2456
0
    } else {
2457
0
        def->constants = NULL;
2458
0
        def->constants_length = 0;
2459
0
    }
2460
2461
    /* Parse sub funcdefs */
2462
0
    x = janet_get1(s, janet_ckeywordv("closures"));
2463
0
    if (janet_checktype(x, JANET_NIL)) {
2464
0
        x = janet_get1(s, janet_ckeywordv("defs"));
2465
0
    }
2466
0
    if (janet_indexed_view(x, &arr, &count)) {
2467
0
        int32_t i;
2468
0
        for (i = 0; i < count; i++) {
2469
0
            JanetAssembleResult subres;
2470
0
            Janet subname;
2471
0
            int32_t newlen;
2472
0
            subres = janet_asm1(&a, arr[i], flags);
2473
0
            if (subres.status != JANET_ASSEMBLE_OK) {
2474
0
                janet_asm_errorv(&a, subres.error);
2475
0
            }
2476
0
            subname = janet_get1(arr[i], janet_ckeywordv("name"));
2477
0
            if (!janet_checktype(subname, JANET_NIL)) {
2478
0
                janet_table_put(&a.defs, subname, janet_wrap_integer(def->defs_length));
2479
0
            }
2480
0
            newlen = def->defs_length + 1;
2481
0
            if (a.defs_capacity < newlen) {
2482
0
                int32_t newcap = newlen;
2483
0
                def->defs = janet_realloc(def->defs, newcap * sizeof(JanetFuncDef *));
2484
0
                if (NULL == def->defs) {
2485
0
                    JANET_OUT_OF_MEMORY;
2486
0
                }
2487
0
                a.defs_capacity = newcap;
2488
0
            }
2489
0
            def->defs[def->defs_length] = subres.funcdef;
2490
0
            def->defs_length = newlen;
2491
0
        }
2492
0
    }
2493
2494
    /* Parse bytecode and labels */
2495
0
    x = janet_get1(s, janet_ckeywordv("bytecode"));
2496
0
    if (janet_indexed_view(x, &arr, &count)) {
2497
        /* Do labels and find length */
2498
0
        int32_t blength = 0;
2499
0
        for (i = 0; i < count; ++i) {
2500
0
            Janet instr = arr[i];
2501
0
            if (janet_checktype(instr, JANET_KEYWORD)) {
2502
0
                janet_table_put(&a.labels, instr, janet_wrap_integer(blength));
2503
0
            } else if (janet_checktype(instr, JANET_TUPLE)) {
2504
0
                blength++;
2505
0
            } else {
2506
0
                a.errindex = i;
2507
0
                janet_asm_error(&a, "expected assembly instruction");
2508
0
            }
2509
0
        }
2510
        /* Allocate bytecode array */
2511
0
        def->bytecode_length = blength;
2512
0
        def->bytecode = janet_malloc(sizeof(uint32_t) * (size_t) blength);
2513
0
        if (NULL == def->bytecode) {
2514
0
            JANET_OUT_OF_MEMORY;
2515
0
        }
2516
        /* Do bytecode */
2517
0
        for (i = 0; i < count; ++i) {
2518
0
            Janet instr = arr[i];
2519
0
            if (janet_checktype(instr, JANET_KEYWORD)) {
2520
0
                continue;
2521
0
            } else {
2522
0
                uint32_t op;
2523
0
                const JanetInstructionDef *idef;
2524
0
                const Janet *t;
2525
0
                a.errindex = i;
2526
0
                janet_asm_assert(&a, janet_checktype(instr, JANET_TUPLE), "expected tuple");
2527
0
                t = janet_unwrap_tuple(instr);
2528
0
                if (janet_tuple_length(t) == 0) {
2529
0
                    op = 0;
2530
0
                } else {
2531
0
                    janet_asm_assert(&a, janet_checktype(t[0], JANET_SYMBOL),
2532
0
                                     "expected symbol in assembly instruction");
2533
0
                    idef = janet_strbinsearch(
2534
0
                               &janet_ops,
2535
0
                               sizeof(janet_ops) / sizeof(JanetInstructionDef),
2536
0
                               sizeof(JanetInstructionDef),
2537
0
                               janet_unwrap_symbol(t[0]));
2538
0
                    if (NULL == idef)
2539
0
                        janet_asm_errorv(&a, janet_formatc("unknown instruction %v", t[0]));
2540
0
                    op = read_instruction(&a, idef, t);
2541
0
                }
2542
0
                def->bytecode[a.bytecode_count++] = op;
2543
0
            }
2544
0
        }
2545
0
    } else {
2546
0
        janet_asm_error(&a, "bytecode expected");
2547
0
    }
2548
0
    a.errindex = -1;
2549
2550
    /* Check for source mapping */
2551
0
    x = janet_get1(s, janet_ckeywordv("sourcemap"));
2552
0
    if (janet_indexed_view(x, &arr, &count)) {
2553
0
        janet_asm_assert(&a, count == def->bytecode_length, "sourcemap must have the same length as the bytecode");
2554
0
        def->sourcemap = janet_malloc(sizeof(JanetSourceMapping) * (size_t) count);
2555
0
        if (NULL == def->sourcemap) {
2556
0
            JANET_OUT_OF_MEMORY;
2557
0
        }
2558
0
        for (i = 0; i < count; i++) {
2559
0
            const Janet *tup;
2560
0
            Janet entry = arr[i];
2561
0
            JanetSourceMapping mapping;
2562
0
            if (!janet_checktype(entry, JANET_TUPLE)) {
2563
0
                janet_asm_error(&a, "expected tuple");
2564
0
            }
2565
0
            tup = janet_unwrap_tuple(entry);
2566
0
            if (!janet_checkint(tup[0])) {
2567
0
                janet_asm_error(&a, "expected integer");
2568
0
            }
2569
0
            if (!janet_checkint(tup[1])) {
2570
0
                janet_asm_error(&a, "expected integer");
2571
0
            }
2572
0
            mapping.line = janet_unwrap_integer(tup[0]);
2573
0
            mapping.column = janet_unwrap_integer(tup[1]);
2574
0
            def->sourcemap[i] = mapping;
2575
0
        }
2576
0
    }
2577
2578
    /* Set symbolmap */
2579
0
    def->symbolmap = NULL;
2580
0
    def->symbolmap_length = 0;
2581
0
    x = janet_get1(s, janet_ckeywordv("symbolmap"));
2582
0
    if (janet_indexed_view(x, &arr, &count)) {
2583
0
        def->symbolmap_length = count;
2584
0
        def->symbolmap = janet_malloc(sizeof(JanetSymbolMap) * (size_t)count);
2585
0
        if (NULL == def->symbolmap) {
2586
0
            JANET_OUT_OF_MEMORY;
2587
0
        }
2588
0
        for (i = 0; i < count; i++) {
2589
0
            const Janet *tup;
2590
0
            Janet entry = arr[i];
2591
0
            JanetSymbolMap ss;
2592
0
            if (!janet_checktype(entry, JANET_TUPLE)) {
2593
0
                janet_asm_error(&a, "expected tuple");
2594
0
            }
2595
0
            tup = janet_unwrap_tuple(entry);
2596
0
            if (janet_keyeq(tup[0], "upvalue")) {
2597
0
                ss.birth_pc = UINT32_MAX;
2598
0
            } else if (!janet_checkint(tup[0])) {
2599
0
                janet_asm_error(&a, "expected integer");
2600
0
            } else {
2601
0
                ss.birth_pc = janet_unwrap_integer(tup[0]);
2602
0
            }
2603
0
            if (!janet_checkint(tup[1])) {
2604
0
                janet_asm_error(&a, "expected integer");
2605
0
            }
2606
0
            if (!janet_checkint(tup[2])) {
2607
0
                janet_asm_error(&a, "expected integer");
2608
0
            }
2609
0
            if (!janet_checktype(tup[3], JANET_SYMBOL)) {
2610
0
                janet_asm_error(&a, "expected symbol");
2611
0
            }
2612
0
            ss.death_pc = janet_unwrap_integer(tup[1]);
2613
0
            ss.slot_index = janet_unwrap_integer(tup[2]);
2614
0
            ss.symbol = janet_unwrap_symbol(tup[3]);
2615
0
            def->symbolmap[i] = ss;
2616
0
        }
2617
0
    }
2618
0
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;
2619
2620
    /* Set environments */
2621
0
    x = janet_get1(s, janet_ckeywordv("environments"));
2622
0
    if (janet_indexed_view(x, &arr, &count)) {
2623
0
        def->environments_length = count;
2624
0
        if (def->environments_length) {
2625
0
            def->environments = janet_realloc(def->environments, def->environments_length * sizeof(int32_t));
2626
0
        }
2627
0
        for (int32_t i = 0; i < count; i++) {
2628
0
            if (!janet_checkint(arr[i])) {
2629
0
                janet_asm_error(&a, "expected integer");
2630
0
            }
2631
0
            def->environments[i] = janet_unwrap_integer(arr[i]);
2632
0
        }
2633
0
    }
2634
0
    if (def->environments_length && NULL == def->environments) {
2635
0
        JANET_OUT_OF_MEMORY;
2636
0
    }
2637
2638
    /* Verify the func def */
2639
0
    int verify_status = janet_verify(def);
2640
0
    if (verify_status) {
2641
0
        janet_asm_errorv(&a, janet_formatc("invalid assembly (%d)", verify_status));
2642
0
    }
2643
2644
    /* Add final flags */
2645
0
    janet_def_addflags(def);
2646
2647
    /* Finish everything and return funcdef */
2648
0
    janet_asm_deinit(&a);
2649
0
    result.error = NULL;
2650
0
    result.funcdef = def;
2651
0
    result.status = JANET_ASSEMBLE_OK;
2652
0
    return result;
2653
0
}
2654
2655
/* Assemble a function */
2656
0
JanetAssembleResult janet_asm(Janet source, int flags) {
2657
0
    return janet_asm1(NULL, source, flags);
2658
0
}
2659
2660
/* Disassembly */
2661
2662
/* Find the definition of an instruction given the instruction word. Return
2663
 * NULL if not found. */
2664
0
static const JanetInstructionDef *janet_asm_reverse_lookup(uint32_t instr) {
2665
0
    size_t i;
2666
0
    uint32_t opcode = instr & 0x7F;
2667
0
    for (i = 0; i < sizeof(janet_ops) / sizeof(JanetInstructionDef); i++) {
2668
0
        const JanetInstructionDef *def = janet_ops + i;
2669
0
        if (def->opcode == opcode)
2670
0
            return def;
2671
0
    }
2672
0
    return NULL;
2673
0
}
2674
2675
/* Create some constant sized tuples */
2676
0
static const Janet *tup1(Janet x) {
2677
0
    Janet *tup = janet_tuple_begin(1);
2678
0
    tup[0] = x;
2679
0
    return janet_tuple_end(tup);
2680
0
}
2681
0
static const Janet *tup2(Janet x, Janet y) {
2682
0
    Janet *tup = janet_tuple_begin(2);
2683
0
    tup[0] = x;
2684
0
    tup[1] = y;
2685
0
    return janet_tuple_end(tup);
2686
0
}
2687
0
static const Janet *tup3(Janet x, Janet y, Janet z) {
2688
0
    Janet *tup = janet_tuple_begin(3);
2689
0
    tup[0] = x;
2690
0
    tup[1] = y;
2691
0
    tup[2] = z;
2692
0
    return janet_tuple_end(tup);
2693
0
}
2694
0
static const Janet *tup4(Janet w, Janet x, Janet y, Janet z) {
2695
0
    Janet *tup = janet_tuple_begin(4);
2696
0
    tup[0] = w;
2697
0
    tup[1] = x;
2698
0
    tup[2] = y;
2699
0
    tup[3] = z;
2700
0
    return janet_tuple_end(tup);
2701
0
}
2702
2703
/* Given an argument, convert it to the appropriate integer or symbol */
2704
0
Janet janet_asm_decode_instruction(uint32_t instr) {
2705
0
    const JanetInstructionDef *def = janet_asm_reverse_lookup(instr);
2706
0
    Janet name;
2707
0
    if (NULL == def) {
2708
0
        return janet_wrap_integer((int32_t)instr);
2709
0
    }
2710
0
    name = janet_csymbolv(def->name);
2711
0
    const Janet *ret = NULL;
2712
0
#define oparg(shift, mask) ((instr >> ((shift) << 3)) & (mask))
2713
0
    switch (janet_instructions[def->opcode]) {
2714
0
        case JINT_0:
2715
0
            ret = tup1(name);
2716
0
            break;
2717
0
        case JINT_S:
2718
0
            ret = tup2(name, janet_wrap_integer(oparg(1, 0xFFFFFF)));
2719
0
            break;
2720
0
        case JINT_L:
2721
0
            ret = tup2(name, janet_wrap_integer((int32_t)instr >> 8));
2722
0
            break;
2723
0
        case JINT_SS:
2724
0
        case JINT_ST:
2725
0
        case JINT_SC:
2726
0
        case JINT_SU:
2727
0
        case JINT_SD:
2728
0
            ret = tup3(name,
2729
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2730
0
                       janet_wrap_integer(oparg(2, 0xFFFF)));
2731
0
            break;
2732
0
        case JINT_SI:
2733
0
        case JINT_SL:
2734
0
            ret =  tup3(name,
2735
0
                        janet_wrap_integer(oparg(1, 0xFF)),
2736
0
                        janet_wrap_integer((int32_t)instr >> 16));
2737
0
            break;
2738
0
        case JINT_SSS:
2739
0
        case JINT_SES:
2740
0
        case JINT_SSU:
2741
0
            ret = tup4(name,
2742
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2743
0
                       janet_wrap_integer(oparg(2, 0xFF)),
2744
0
                       janet_wrap_integer(oparg(3, 0xFF)));
2745
0
            break;
2746
0
        case JINT_SSI:
2747
0
            ret = tup4(name,
2748
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2749
0
                       janet_wrap_integer(oparg(2, 0xFF)),
2750
0
                       janet_wrap_integer((int32_t)instr >> 24));
2751
0
            break;
2752
0
    }
2753
0
#undef oparg
2754
0
    if (ret) {
2755
        /* Check if break point set */
2756
0
        if (instr & 0x80) {
2757
0
            janet_tuple_flag(ret) |= JANET_TUPLE_FLAG_BRACKETCTOR;
2758
0
        }
2759
0
        return janet_wrap_tuple(ret);
2760
0
    }
2761
0
    return janet_wrap_nil();
2762
0
}
2763
2764
/*
2765
 * Disasm sections
2766
 */
2767
2768
0
static Janet janet_disasm_arity(JanetFuncDef *def) {
2769
0
    return janet_wrap_integer(def->arity);
2770
0
}
2771
2772
0
static Janet janet_disasm_min_arity(JanetFuncDef *def) {
2773
0
    return janet_wrap_integer(def->min_arity);
2774
0
}
2775
2776
0
static Janet janet_disasm_max_arity(JanetFuncDef *def) {
2777
0
    return janet_wrap_integer(def->max_arity);
2778
0
}
2779
2780
0
static Janet janet_disasm_slotcount(JanetFuncDef *def) {
2781
0
    return janet_wrap_integer(def->slotcount);
2782
0
}
2783
2784
0
static Janet janet_disasm_symbolslots(JanetFuncDef *def) {
2785
0
    if (def->symbolmap == NULL) {
2786
0
        return janet_wrap_nil();
2787
0
    }
2788
0
    JanetArray *symbolslots = janet_array(def->symbolmap_length);
2789
0
    Janet upvaluekw = janet_ckeywordv("upvalue");
2790
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
2791
0
        JanetSymbolMap ss = def->symbolmap[i];
2792
0
        Janet *t = janet_tuple_begin(4);
2793
0
        if (ss.birth_pc == UINT32_MAX) {
2794
0
            t[0] = upvaluekw;
2795
0
        } else {
2796
0
            t[0] = janet_wrap_integer(ss.birth_pc);
2797
0
        }
2798
0
        t[1] = janet_wrap_integer(ss.death_pc);
2799
0
        t[2] = janet_wrap_integer(ss.slot_index);
2800
0
        t[3] = janet_wrap_symbol(ss.symbol);
2801
0
        symbolslots->data[i] = janet_wrap_tuple(janet_tuple_end(t));
2802
0
    }
2803
0
    symbolslots->count = def->symbolmap_length;
2804
0
    return janet_wrap_array(symbolslots);
2805
0
}
2806
2807
0
static Janet janet_disasm_bytecode(JanetFuncDef *def) {
2808
0
    JanetArray *bcode = janet_array(def->bytecode_length);
2809
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
2810
0
        bcode->data[i] = janet_asm_decode_instruction(def->bytecode[i]);
2811
0
    }
2812
0
    bcode->count = def->bytecode_length;
2813
0
    return janet_wrap_array(bcode);
2814
0
}
2815
2816
0
static Janet janet_disasm_source(JanetFuncDef *def) {
2817
0
    if (def->source != NULL) return janet_wrap_string(def->source);
2818
0
    return janet_wrap_nil();
2819
0
}
2820
2821
0
static Janet janet_disasm_name(JanetFuncDef *def) {
2822
0
    if (def->name != NULL) return janet_wrap_string(def->name);
2823
0
    return janet_wrap_nil();
2824
0
}
2825
2826
0
static Janet janet_disasm_vararg(JanetFuncDef *def) {
2827
0
    return janet_wrap_boolean(def->flags & JANET_FUNCDEF_FLAG_VARARG);
2828
0
}
2829
2830
0
static Janet janet_disasm_structarg(JanetFuncDef *def) {
2831
0
    return janet_wrap_boolean(def->flags & JANET_FUNCDEF_FLAG_STRUCTARG);
2832
0
}
2833
2834
0
static Janet janet_disasm_constants(JanetFuncDef *def) {
2835
0
    JanetArray *constants = janet_array(def->constants_length);
2836
0
    for (int32_t i = 0; i < def->constants_length; i++) {
2837
0
        constants->data[i] = def->constants[i];
2838
0
    }
2839
0
    constants->count = def->constants_length;
2840
0
    return janet_wrap_array(constants);
2841
0
}
2842
2843
0
static Janet janet_disasm_sourcemap(JanetFuncDef *def) {
2844
0
    if (NULL == def->sourcemap) return janet_wrap_nil();
2845
0
    JanetArray *sourcemap = janet_array(def->bytecode_length);
2846
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
2847
0
        Janet *t = janet_tuple_begin(2);
2848
0
        JanetSourceMapping mapping = def->sourcemap[i];
2849
0
        t[0] = janet_wrap_integer(mapping.line);
2850
0
        t[1] = janet_wrap_integer(mapping.column);
2851
0
        sourcemap->data[i] = janet_wrap_tuple(janet_tuple_end(t));
2852
0
    }
2853
0
    sourcemap->count = def->bytecode_length;
2854
0
    return janet_wrap_array(sourcemap);
2855
0
}
2856
2857
0
static Janet janet_disasm_environments(JanetFuncDef *def) {
2858
0
    JanetArray *envs = janet_array(def->environments_length);
2859
0
    for (int32_t i = 0; i < def->environments_length; i++) {
2860
0
        envs->data[i] = janet_wrap_integer(def->environments[i]);
2861
0
    }
2862
0
    envs->count = def->environments_length;
2863
0
    return janet_wrap_array(envs);
2864
0
}
2865
2866
0
static Janet janet_disasm_defs(JanetFuncDef *def) {
2867
0
    JanetArray *defs = janet_array(def->defs_length);
2868
0
    for (int32_t i = 0; i < def->defs_length; i++) {
2869
0
        defs->data[i] = janet_disasm(def->defs[i]);
2870
0
    }
2871
0
    defs->count = def->defs_length;
2872
0
    return janet_wrap_array(defs);
2873
0
}
2874
2875
0
Janet janet_disasm(JanetFuncDef *def) {
2876
0
    JanetTable *ret = janet_table(10);
2877
0
    janet_table_put(ret, janet_ckeywordv("arity"), janet_disasm_arity(def));
2878
0
    janet_table_put(ret, janet_ckeywordv("min-arity"), janet_disasm_min_arity(def));
2879
0
    janet_table_put(ret, janet_ckeywordv("max-arity"), janet_disasm_max_arity(def));
2880
0
    janet_table_put(ret, janet_ckeywordv("bytecode"), janet_disasm_bytecode(def));
2881
0
    janet_table_put(ret, janet_ckeywordv("source"), janet_disasm_source(def));
2882
0
    janet_table_put(ret, janet_ckeywordv("vararg"), janet_disasm_vararg(def));
2883
0
    janet_table_put(ret, janet_ckeywordv("structarg"), janet_disasm_structarg(def));
2884
0
    janet_table_put(ret, janet_ckeywordv("name"), janet_disasm_name(def));
2885
0
    janet_table_put(ret, janet_ckeywordv("slotcount"), janet_disasm_slotcount(def));
2886
0
    janet_table_put(ret, janet_ckeywordv("symbolmap"), janet_disasm_symbolslots(def));
2887
0
    janet_table_put(ret, janet_ckeywordv("constants"), janet_disasm_constants(def));
2888
0
    janet_table_put(ret, janet_ckeywordv("sourcemap"), janet_disasm_sourcemap(def));
2889
0
    janet_table_put(ret, janet_ckeywordv("environments"), janet_disasm_environments(def));
2890
0
    janet_table_put(ret, janet_ckeywordv("defs"), janet_disasm_defs(def));
2891
0
    return janet_wrap_struct(janet_table_to_struct(ret));
2892
0
}
2893
2894
JANET_CORE_FN(cfun_asm,
2895
              "(asm assembly)",
2896
              "Returns a new function that is the compiled result of the assembly.\n"
2897
              "The syntax for the assembly can be found on the Janet website, and should correspond\n"
2898
              "to the return value of disasm. Will throw an\n"
2899
0
              "error on invalid assembly.") {
2900
0
    janet_fixarity(argc, 1);
2901
0
    JanetAssembleResult res;
2902
0
    res = janet_asm(argv[0], 0);
2903
0
    if (res.status != JANET_ASSEMBLE_OK) {
2904
0
        janet_panics(res.error ? res.error : janet_cstring("invalid assembly"));
2905
0
    }
2906
0
    return janet_wrap_function(janet_thunk(res.funcdef));
2907
0
}
2908
2909
JANET_CORE_FN(cfun_disasm,
2910
              "(disasm func &opt field)",
2911
              "Returns assembly that could be used to compile the given function. "
2912
              "func must be a function, not a c function. Will throw on error on a badly "
2913
              "typed argument. If given a field name, will only return that part of the function assembly. "
2914
              "Possible fields are:\n\n"
2915
              "* :arity - number of required and optional arguments.\n"
2916
              "* :min-arity - minimum number of arguments function can be called with.\n"
2917
              "* :max-arity - maximum number of arguments function can be called with.\n"
2918
              "* :vararg - true if function can take a variable number of arguments.\n"
2919
              "* :bytecode - array of parsed bytecode instructions. Each instruction is a tuple.\n"
2920
              "* :source - name of source file that this function was compiled from.\n"
2921
              "* :name - name of function.\n"
2922
              "* :slotcount - how many virtual registers, or slots, this function uses. Corresponds to stack space used by function.\n"
2923
              "* :symbolmap - all symbols and their slots.\n"
2924
              "* :constants - an array of constants referenced by this function.\n"
2925
              "* :sourcemap - a mapping of each bytecode instruction to a line and column in the source file.\n"
2926
              "* :environments - an internal mapping of which enclosing functions are referenced for bindings.\n"
2927
0
              "* :defs - other function definitions that this function may instantiate.\n") {
2928
0
    janet_arity(argc, 1, 2);
2929
0
    JanetFunction *f = janet_getfunction(argv, 0);
2930
0
    if (argc == 2) {
2931
0
        JanetKeyword kw = janet_getkeyword(argv, 1);
2932
0
        if (!janet_cstrcmp(kw, "arity")) return janet_disasm_arity(f->def);
2933
0
        if (!janet_cstrcmp(kw, "min-arity")) return janet_disasm_min_arity(f->def);
2934
0
        if (!janet_cstrcmp(kw, "max-arity")) return janet_disasm_max_arity(f->def);
2935
0
        if (!janet_cstrcmp(kw, "bytecode")) return janet_disasm_bytecode(f->def);
2936
0
        if (!janet_cstrcmp(kw, "source")) return janet_disasm_source(f->def);
2937
0
        if (!janet_cstrcmp(kw, "name")) return janet_disasm_name(f->def);
2938
0
        if (!janet_cstrcmp(kw, "vararg")) return janet_disasm_vararg(f->def);
2939
0
        if (!janet_cstrcmp(kw, "structarg")) return janet_disasm_structarg(f->def);
2940
0
        if (!janet_cstrcmp(kw, "slotcount")) return janet_disasm_slotcount(f->def);
2941
0
        if (!janet_cstrcmp(kw, "constants")) return janet_disasm_constants(f->def);
2942
0
        if (!janet_cstrcmp(kw, "sourcemap")) return janet_disasm_sourcemap(f->def);
2943
0
        if (!janet_cstrcmp(kw, "environments")) return janet_disasm_environments(f->def);
2944
0
        if (!janet_cstrcmp(kw, "defs")) return janet_disasm_defs(f->def);
2945
0
        janet_panicf("unknown disasm key %v", argv[1]);
2946
0
    } else {
2947
0
        return janet_disasm(f->def);
2948
0
    }
2949
0
}
2950
2951
/* Load the library */
2952
0
void janet_lib_asm(JanetTable *env) {
2953
0
    JanetRegExt asm_cfuns[] = {
2954
0
        JANET_CORE_REG("asm", cfun_asm),
2955
0
        JANET_CORE_REG("disasm", cfun_disasm),
2956
0
        JANET_REG_END
2957
0
    };
2958
0
    janet_core_cfuns_ext(env, NULL, asm_cfuns);
2959
0
}
2960
2961
#endif
2962
2963
2964
/* src/core/buffer.c */
2965
#line 0 "src/core/buffer.c"
2966
2967
/*
2968
* Copyright (c) 2025 Calvin Rose
2969
*
2970
* Permission is hereby granted, free of charge, to any person obtaining a copy
2971
* of this software and associated documentation files (the "Software"), to
2972
* deal in the Software without restriction, including without limitation the
2973
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
2974
* sell copies of the Software, and to permit persons to whom the Software is
2975
* furnished to do so, subject to the following conditions:
2976
*
2977
* The above copyright notice and this permission notice shall be included in
2978
* all copies or substantial portions of the Software.
2979
*
2980
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2981
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2982
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2983
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2984
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
2985
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
2986
* IN THE SOFTWARE.
2987
*/
2988
2989
#ifndef JANET_AMALG
2990
#include "features.h"
2991
#include <janet.h>
2992
#include "gc.h"
2993
#include "util.h"
2994
#include "state.h"
2995
#endif
2996
2997
/* Allow for managed buffers that cannot realloc/free their backing memory */
2998
60
static void janet_buffer_can_realloc(JanetBuffer *buffer) {
2999
60
    if (buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC) {
3000
0
        janet_panic("buffer cannot reallocate foreign memory");
3001
0
    }
3002
60
}
3003
3004
/* Initialize a buffer */
3005
1.31M
static JanetBuffer *janet_buffer_init_impl(JanetBuffer *buffer, int32_t capacity) {
3006
1.31M
    uint8_t *data = NULL;
3007
1.31M
    if (capacity < 4) capacity = 4;
3008
1.31M
    janet_gcpressure(capacity);
3009
1.31M
    data = janet_malloc(sizeof(uint8_t) * (size_t) capacity);
3010
1.31M
    if (NULL == data) {
3011
0
        JANET_OUT_OF_MEMORY;
3012
0
    }
3013
1.31M
    buffer->count = 0;
3014
1.31M
    buffer->capacity = capacity;
3015
1.31M
    buffer->data = data;
3016
1.31M
    return buffer;
3017
1.31M
}
3018
3019
/* Initialize a buffer */
3020
0
JanetBuffer *janet_buffer_init(JanetBuffer *buffer, int32_t capacity) {
3021
0
    janet_buffer_init_impl(buffer, capacity);
3022
0
    buffer->gc.data.next = NULL;
3023
0
    buffer->gc.flags = JANET_MEM_DISABLED;
3024
0
    return buffer;
3025
0
}
3026
3027
/* Initialize an unmanaged buffer */
3028
0
JanetBuffer *janet_pointer_buffer_unsafe(void *memory, int32_t capacity, int32_t count) {
3029
0
    if (count < 0) janet_panic("count < 0");
3030
0
    if (capacity < count) janet_panic("capacity < count");
3031
0
    JanetBuffer *buffer = janet_gcalloc(JANET_MEMORY_BUFFER, sizeof(JanetBuffer));
3032
0
    buffer->gc.flags |= JANET_BUFFER_FLAG_NO_REALLOC;
3033
0
    buffer->capacity = capacity;
3034
0
    buffer->count = count;
3035
0
    buffer->data = (uint8_t *) memory;
3036
0
    return buffer;
3037
0
}
3038
3039
/* Deinitialize a buffer (free data memory) */
3040
1.31M
void janet_buffer_deinit(JanetBuffer *buffer) {
3041
1.31M
    if (!(buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC)) {
3042
1.31M
        janet_free(buffer->data);
3043
1.31M
    }
3044
1.31M
}
3045
3046
/* Initialize a buffer */
3047
1.31M
JanetBuffer *janet_buffer(int32_t capacity) {
3048
1.31M
    JanetBuffer *buffer = janet_gcalloc(JANET_MEMORY_BUFFER, sizeof(JanetBuffer));
3049
1.31M
    return janet_buffer_init_impl(buffer, capacity);
3050
1.31M
}
3051
3052
/* Ensure that the buffer has enough internal capacity */
3053
0
void janet_buffer_ensure(JanetBuffer *buffer, int32_t capacity, int32_t growth) {
3054
0
    uint8_t *new_data;
3055
0
    uint8_t *old = buffer->data;
3056
0
    if (capacity <= buffer->capacity) return;
3057
0
    janet_buffer_can_realloc(buffer);
3058
0
    int64_t big_capacity = ((int64_t) capacity) * growth;
3059
0
    capacity = big_capacity > INT32_MAX ? INT32_MAX : (int32_t) big_capacity;
3060
0
    janet_gcpressure(capacity - buffer->capacity);
3061
0
    new_data = janet_realloc(old, (size_t) capacity * sizeof(uint8_t));
3062
0
    if (NULL == new_data) {
3063
0
        JANET_OUT_OF_MEMORY;
3064
0
    }
3065
0
    buffer->data = new_data;
3066
0
    buffer->capacity = capacity;
3067
0
}
3068
3069
/* Ensure that the buffer has enough internal capacity */
3070
0
void janet_buffer_setcount(JanetBuffer *buffer, int32_t count) {
3071
0
    if (count < 0)
3072
0
        return;
3073
0
    if (count > buffer->count) {
3074
0
        int32_t oldcount = buffer->count;
3075
0
        janet_buffer_ensure(buffer, count, 1);
3076
0
        memset(buffer->data + oldcount, 0, count - oldcount);
3077
0
    }
3078
0
    buffer->count = count;
3079
0
}
3080
3081
/* Adds capacity for enough extra bytes to the buffer. Ensures that the
3082
 * next n bytes pushed to the buffer will not cause a reallocation */
3083
26.1k
void janet_buffer_extra(JanetBuffer *buffer, int32_t n) {
3084
    /* Check for buffer overflow */
3085
26.1k
    if ((int64_t)n + buffer->count > INT32_MAX) {
3086
0
        janet_panic("buffer overflow");
3087
0
    }
3088
26.1k
    int32_t new_size = buffer->count + n;
3089
26.1k
    if (new_size > buffer->capacity) {
3090
60
        janet_buffer_can_realloc(buffer);
3091
60
        int32_t new_capacity = (new_size > (INT32_MAX / 2)) ? INT32_MAX : (new_size * 2);
3092
60
        uint8_t *new_data = janet_realloc(buffer->data, new_capacity * sizeof(uint8_t));
3093
60
        janet_gcpressure(new_capacity - buffer->capacity);
3094
60
        if (NULL == new_data) {
3095
0
            JANET_OUT_OF_MEMORY;
3096
0
        }
3097
60
        buffer->data = new_data;
3098
60
        buffer->capacity = new_capacity;
3099
60
    }
3100
26.1k
}
3101
3102
/* Push a cstring to buffer */
3103
311
void janet_buffer_push_cstring(JanetBuffer *buffer, const char *cstring) {
3104
311
    int32_t len = (int32_t) strlen(cstring);
3105
311
    janet_buffer_push_bytes(buffer, (const uint8_t *) cstring, len);
3106
311
}
3107
3108
/* Push multiple bytes into the buffer */
3109
1.31M
void janet_buffer_push_bytes(JanetBuffer *buffer, const uint8_t *string, int32_t length) {
3110
1.31M
    if (0 == length) return;
3111
24.3k
    janet_buffer_extra(buffer, length);
3112
24.3k
    memcpy(buffer->data + buffer->count, string, length);
3113
24.3k
    buffer->count += length;
3114
24.3k
}
3115
3116
0
void janet_buffer_push_string(JanetBuffer *buffer, const uint8_t *string) {
3117
0
    janet_buffer_push_bytes(buffer, string, janet_string_length(string));
3118
0
}
3119
3120
/* Push a single byte to the buffer */
3121
1.79k
void janet_buffer_push_u8(JanetBuffer *buffer, uint8_t byte) {
3122
1.79k
    janet_buffer_extra(buffer, 1);
3123
1.79k
    buffer->data[buffer->count] = byte;
3124
1.79k
    buffer->count++;
3125
1.79k
}
3126
3127
/* Push a 16 bit unsigned integer to the buffer */
3128
0
void janet_buffer_push_u16(JanetBuffer *buffer, uint16_t x) {
3129
0
    janet_buffer_extra(buffer, 2);
3130
0
    buffer->data[buffer->count] = x & 0xFF;
3131
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3132
0
    buffer->count += 2;
3133
0
}
3134
3135
/* Push a 32 bit unsigned integer to the buffer */
3136
0
void janet_buffer_push_u32(JanetBuffer *buffer, uint32_t x) {
3137
0
    janet_buffer_extra(buffer, 4);
3138
0
    buffer->data[buffer->count] = x & 0xFF;
3139
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3140
0
    buffer->data[buffer->count + 2] = (x >> 16) & 0xFF;
3141
0
    buffer->data[buffer->count + 3] = (x >> 24) & 0xFF;
3142
0
    buffer->count += 4;
3143
0
}
3144
3145
/* Push a 64 bit unsigned integer to the buffer */
3146
0
void janet_buffer_push_u64(JanetBuffer *buffer, uint64_t x) {
3147
0
    janet_buffer_extra(buffer, 8);
3148
0
    buffer->data[buffer->count] = x & 0xFF;
3149
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3150
0
    buffer->data[buffer->count + 2] = (x >> 16) & 0xFF;
3151
0
    buffer->data[buffer->count + 3] = (x >> 24) & 0xFF;
3152
0
    buffer->data[buffer->count + 4] = (x >> 32) & 0xFF;
3153
0
    buffer->data[buffer->count + 5] = (x >> 40) & 0xFF;
3154
0
    buffer->data[buffer->count + 6] = (x >> 48) & 0xFF;
3155
0
    buffer->data[buffer->count + 7] = (x >> 56) & 0xFF;
3156
0
    buffer->count += 8;
3157
0
}
3158
3159
/* C functions */
3160
3161
JANET_CORE_FN(cfun_buffer_new,
3162
              "(buffer/new capacity)",
3163
              "Creates a new, empty buffer with enough backing memory for `capacity` bytes. "
3164
0
              "Returns a new buffer of length 0.") {
3165
0
    janet_fixarity(argc, 1);
3166
0
    int32_t cap = janet_getinteger(argv, 0);
3167
0
    JanetBuffer *buffer = janet_buffer(cap);
3168
0
    return janet_wrap_buffer(buffer);
3169
0
}
3170
3171
JANET_CORE_FN(cfun_buffer_new_filled,
3172
              "(buffer/new-filled count &opt byte)",
3173
              "Creates a new buffer of length `count` filled with `byte`. By default, `byte` is 0. "
3174
0
              "Returns the new buffer.") {
3175
0
    janet_arity(argc, 1, 2);
3176
0
    int32_t count = janet_getinteger(argv, 0);
3177
0
    if (count < 0) count = 0;
3178
0
    int32_t byte = 0;
3179
0
    if (argc == 2) {
3180
0
        byte = janet_getinteger(argv, 1) & 0xFF;
3181
0
    }
3182
0
    JanetBuffer *buffer = janet_buffer(count);
3183
0
    if (buffer->data && count > 0)
3184
0
        memset(buffer->data, byte, count);
3185
0
    buffer->count = count;
3186
0
    return janet_wrap_buffer(buffer);
3187
0
}
3188
3189
JANET_CORE_FN(cfun_buffer_frombytes,
3190
              "(buffer/from-bytes & byte-vals)",
3191
              "Creates a buffer from integer parameters with byte values. All integers "
3192
0
              "will be coerced to the range of 1 byte 0-255.") {
3193
0
    int32_t i;
3194
0
    JanetBuffer *buffer = janet_buffer(argc);
3195
0
    for (i = 0; i < argc; i++) {
3196
0
        int32_t c = janet_getinteger(argv, i);
3197
0
        buffer->data[i] = c & 0xFF;
3198
0
    }
3199
0
    buffer->count = argc;
3200
0
    return janet_wrap_buffer(buffer);
3201
0
}
3202
3203
JANET_CORE_FN(cfun_buffer_fill,
3204
              "(buffer/fill buffer &opt byte)",
3205
              "Fill up a buffer with bytes, defaulting to 0s. Does not change the buffer's length. "
3206
0
              "Returns the modified buffer.") {
3207
0
    janet_arity(argc, 1, 2);
3208
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3209
0
    int32_t byte = 0;
3210
0
    if (argc == 2) {
3211
0
        byte = janet_getinteger(argv, 1) & 0xFF;
3212
0
    }
3213
0
    if (buffer->count) {
3214
0
        memset(buffer->data, byte, buffer->count);
3215
0
    }
3216
0
    return argv[0];
3217
0
}
3218
3219
JANET_CORE_FN(cfun_buffer_trim,
3220
              "(buffer/trim buffer)",
3221
              "Set the backing capacity of the buffer to the current length of the buffer. Returns the "
3222
0
              "modified buffer.") {
3223
0
    janet_fixarity(argc, 1);
3224
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3225
0
    janet_buffer_can_realloc(buffer);
3226
0
    if (buffer->count < buffer->capacity) {
3227
0
        int32_t newcap = buffer->count > 4 ? buffer->count : 4;
3228
0
        uint8_t *newData = janet_realloc(buffer->data, newcap);
3229
0
        if (NULL == newData) {
3230
0
            JANET_OUT_OF_MEMORY;
3231
0
        }
3232
0
        buffer->data = newData;
3233
0
        buffer->capacity = newcap;
3234
0
    }
3235
0
    return argv[0];
3236
0
}
3237
3238
JANET_CORE_FN(cfun_buffer_u8,
3239
              "(buffer/push-byte buffer & xs)",
3240
              "Append bytes to a buffer. Will expand the buffer as necessary. "
3241
0
              "Returns the modified buffer. Will throw an error if the buffer overflows.") {
3242
0
    int32_t i;
3243
0
    janet_arity(argc, 1, -1);
3244
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3245
0
    for (i = 1; i < argc; i++) {
3246
0
        janet_buffer_push_u8(buffer, (uint8_t)(janet_getinteger(argv, i) & 0xFF));
3247
0
    }
3248
0
    return argv[0];
3249
0
}
3250
3251
JANET_CORE_FN(cfun_buffer_word,
3252
              "(buffer/push-word buffer & xs)",
3253
              "Append machine words to a buffer. The 4 bytes of the integer are appended "
3254
              "in twos complement, little endian order, unsigned for all x. Returns the modified buffer. Will "
3255
0
              "throw an error if the buffer overflows.") {
3256
0
    int32_t i;
3257
0
    janet_arity(argc, 1, -1);
3258
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3259
0
    for (i = 1; i < argc; i++) {
3260
0
        double number = janet_getnumber(argv, i);
3261
0
        uint32_t word = (uint32_t) number;
3262
0
        if (word != number)
3263
0
            janet_panicf("cannot convert %v to machine word", argv[i]);
3264
0
        janet_buffer_push_u32(buffer, word);
3265
0
    }
3266
0
    return argv[0];
3267
0
}
3268
3269
JANET_CORE_FN(cfun_buffer_chars,
3270
              "(buffer/push-string buffer & xs)",
3271
              "Push byte sequences onto the end of a buffer. "
3272
              "Will accept any of strings, keywords, symbols, and buffers. "
3273
              "Returns the modified buffer. "
3274
0
              "Will throw an error if the buffer overflows.") {
3275
0
    int32_t i;
3276
0
    janet_arity(argc, 1, -1);
3277
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3278
0
    for (i = 1; i < argc; i++) {
3279
0
        JanetByteView view = janet_getbytes(argv, i);
3280
0
        if (view.bytes == buffer->data) {
3281
0
            janet_buffer_ensure(buffer, buffer->count + view.len, 2);
3282
0
            view.bytes = buffer->data;
3283
0
        }
3284
0
        janet_buffer_push_bytes(buffer, view.bytes, view.len);
3285
0
    }
3286
0
    return argv[0];
3287
0
}
3288
3289
0
static int should_reverse_bytes(const Janet *argv, int32_t argc) {
3290
0
    JanetKeyword order_kw = janet_getkeyword(argv, argc);
3291
0
    if (!janet_cstrcmp(order_kw, "le")) {
3292
#if JANET_BIG_ENDIAN
3293
        return 1;
3294
#endif
3295
0
    } else if (!janet_cstrcmp(order_kw, "be")) {
3296
0
#if JANET_LITTLE_ENDIAN
3297
0
        return 1;
3298
0
#endif
3299
0
    } else if (!janet_cstrcmp(order_kw, "native")) {
3300
0
        return 0;
3301
0
    } else {
3302
0
        janet_panicf("expected endianness :le, :be or :native, got %v", argv[1]);
3303
0
    }
3304
0
    return 0;
3305
0
}
3306
3307
0
static void reverse_u32(uint8_t bytes[4]) {
3308
0
    uint8_t temp;
3309
0
    temp = bytes[3];
3310
0
    bytes[3] = bytes[0];
3311
0
    bytes[0] = temp;
3312
0
    temp = bytes[2];
3313
0
    bytes[2] = bytes[1];
3314
0
    bytes[1] = temp;
3315
0
}
3316
3317
0
static void reverse_u64(uint8_t bytes[8]) {
3318
0
    uint8_t temp;
3319
0
    temp = bytes[7];
3320
0
    bytes[7] = bytes[0];
3321
0
    bytes[0] = temp;
3322
0
    temp = bytes[6];
3323
0
    bytes[6] = bytes[1];
3324
0
    bytes[1] = temp;
3325
0
    temp = bytes[5];
3326
0
    bytes[5] = bytes[2];
3327
0
    bytes[2] = temp;
3328
0
    temp = bytes[4];
3329
0
    bytes[4] = bytes[3];
3330
0
    bytes[3] = temp;
3331
0
}
3332
3333
JANET_CORE_FN(cfun_buffer_push_uint16,
3334
              "(buffer/push-uint16 buffer order data)",
3335
              "Push a 16 bit unsigned integer data onto the end of the buffer. "
3336
0
              "Returns the modified buffer.") {
3337
0
    janet_fixarity(argc, 3);
3338
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3339
0
    int reverse = should_reverse_bytes(argv, 1);
3340
0
    uint16_t data = janet_getuinteger16(argv, 2);
3341
0
    uint8_t bytes[sizeof(data)];
3342
0
    memcpy(bytes, &data, sizeof(bytes));
3343
0
    if (reverse) {
3344
0
        uint8_t temp = bytes[1];
3345
0
        bytes[1] = bytes[0];
3346
0
        bytes[0] = temp;
3347
0
    }
3348
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3349
0
    return argv[0];
3350
0
}
3351
3352
JANET_CORE_FN(cfun_buffer_push_uint32,
3353
              "(buffer/push-uint32 buffer order data)",
3354
              "Push a 32 bit unsigned integer data onto the end of the buffer. "
3355
0
              "Returns the modified buffer.") {
3356
0
    janet_fixarity(argc, 3);
3357
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3358
0
    int reverse = should_reverse_bytes(argv, 1);
3359
0
    uint32_t data = janet_getuinteger(argv, 2);
3360
0
    uint8_t bytes[sizeof(data)];
3361
0
    memcpy(bytes, &data, sizeof(bytes));
3362
0
    if (reverse)
3363
0
        reverse_u32(bytes);
3364
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3365
0
    return argv[0];
3366
0
}
3367
3368
JANET_CORE_FN(cfun_buffer_push_uint64,
3369
              "(buffer/push-uint64 buffer order data)",
3370
              "Push a 64 bit unsigned integer data onto the end of the buffer. "
3371
0
              "Returns the modified buffer.") {
3372
0
    janet_fixarity(argc, 3);
3373
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3374
0
    int reverse = should_reverse_bytes(argv, 1);
3375
0
    uint64_t data = janet_getuinteger64(argv, 2);
3376
0
    uint8_t bytes[sizeof(data)];
3377
0
    memcpy(bytes, &data, sizeof(bytes));
3378
0
    if (reverse)
3379
0
        reverse_u64(bytes);
3380
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3381
0
    return argv[0];
3382
0
}
3383
3384
JANET_CORE_FN(cfun_buffer_push_float32,
3385
              "(buffer/push-float32 buffer order data)",
3386
              "Push the underlying bytes of a 32 bit float data onto the end of the buffer. "
3387
0
              "Returns the modified buffer.") {
3388
0
    janet_fixarity(argc, 3);
3389
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3390
0
    int reverse = should_reverse_bytes(argv, 1);
3391
0
    float data = (float) janet_getnumber(argv, 2);
3392
0
    uint8_t bytes[sizeof(data)];
3393
0
    memcpy(bytes, &data, sizeof(bytes));
3394
0
    if (reverse)
3395
0
        reverse_u32(bytes);
3396
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3397
0
    return argv[0];
3398
0
}
3399
3400
JANET_CORE_FN(cfun_buffer_push_float64,
3401
              "(buffer/push-float64 buffer order data)",
3402
              "Push the underlying bytes of a 64 bit float data onto the end of the buffer. "
3403
0
              "Returns the modified buffer.") {
3404
0
    janet_fixarity(argc, 3);
3405
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3406
0
    int reverse = should_reverse_bytes(argv, 1);
3407
0
    double data = janet_getnumber(argv, 2);
3408
0
    uint8_t bytes[sizeof(data)];
3409
0
    memcpy(bytes, &data, sizeof(bytes));
3410
0
    if (reverse)
3411
0
        reverse_u64(bytes);
3412
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3413
0
    return argv[0];
3414
0
}
3415
3416
0
static void buffer_push_impl(JanetBuffer *buffer, Janet *argv, int32_t argc_offset, int32_t argc) {
3417
0
    for (int32_t i = argc_offset; i < argc; i++) {
3418
0
        if (janet_checktype(argv[i], JANET_NUMBER)) {
3419
0
            janet_buffer_push_u8(buffer, (uint8_t)(janet_getinteger(argv, i) & 0xFF));
3420
0
        } else {
3421
0
            JanetByteView view = janet_getbytes(argv, i);
3422
0
            if (view.bytes == buffer->data) {
3423
0
                janet_buffer_ensure(buffer, buffer->count + view.len, 2);
3424
0
                view.bytes = buffer->data;
3425
0
            }
3426
0
            janet_buffer_push_bytes(buffer, view.bytes, view.len);
3427
0
        }
3428
0
    }
3429
0
}
3430
3431
JANET_CORE_FN(cfun_buffer_push_at,
3432
              "(buffer/push-at buffer index & xs)",
3433
              "Same as buffer/push, but copies the new data into the buffer "
3434
0
              " at index `index`.") {
3435
0
    janet_arity(argc, 2, -1);
3436
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3437
0
    int32_t index = janet_getinteger(argv, 1);
3438
0
    int32_t old_count = buffer->count;
3439
0
    if (index < 0 || index > old_count) {
3440
0
        janet_panicf("index out of range [0, %d)", old_count);
3441
0
    }
3442
0
    buffer->count = index;
3443
0
    buffer_push_impl(buffer, argv, 2, argc);
3444
0
    if (buffer->count < old_count) {
3445
0
        buffer->count = old_count;
3446
0
    }
3447
0
    return argv[0];
3448
0
}
3449
3450
JANET_CORE_FN(cfun_buffer_push,
3451
              "(buffer/push buffer & xs)",
3452
              "Push both individual bytes and byte sequences to a buffer. For each x in xs, "
3453
              "push the byte if x is an integer, otherwise push the bytesequence to the buffer. "
3454
              "Thus, this function behaves like both `buffer/push-string` and `buffer/push-byte`. "
3455
              "Returns the modified buffer. "
3456
0
              "Will throw an error if the buffer overflows.") {
3457
0
    janet_arity(argc, 1, -1);
3458
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3459
0
    buffer_push_impl(buffer, argv, 1, argc);
3460
0
    return argv[0];
3461
0
}
3462
3463
JANET_CORE_FN(cfun_buffer_clear,
3464
              "(buffer/clear buffer)",
3465
              "Sets the size of a buffer to 0 and empties it. The buffer retains "
3466
0
              "its memory so it can be efficiently refilled. Returns the modified buffer.") {
3467
0
    janet_fixarity(argc, 1);
3468
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3469
0
    buffer->count = 0;
3470
0
    return argv[0];
3471
0
}
3472
3473
JANET_CORE_FN(cfun_buffer_popn,
3474
              "(buffer/popn buffer n)",
3475
0
              "Removes the last `n` bytes from the buffer. Returns the modified buffer.") {
3476
0
    janet_fixarity(argc, 2);
3477
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3478
0
    int32_t n = janet_getinteger(argv, 1);
3479
0
    if (n < 0) janet_panic("n must be non-negative");
3480
0
    if (buffer->count < n) {
3481
0
        buffer->count = 0;
3482
0
    } else {
3483
0
        buffer->count -= n;
3484
0
    }
3485
0
    return argv[0];
3486
0
}
3487
3488
JANET_CORE_FN(cfun_buffer_slice,
3489
              "(buffer/slice bytes &opt start end)",
3490
              "Takes a slice of a byte sequence from `start` to `end`. The range is half open, "
3491
              "[start, end). Indexes can also be negative, indicating indexing from the end of the "
3492
              "end of the array. By default, `start` is 0 and `end` is the length of the buffer. "
3493
0
              "Returns a new buffer.") {
3494
0
    JanetByteView view = janet_getbytes(argv, 0);
3495
0
    JanetRange range = janet_getslice(argc, argv);
3496
0
    JanetBuffer *buffer = janet_buffer(range.end - range.start);
3497
0
    if (buffer->data)
3498
0
        memcpy(buffer->data, view.bytes + range.start, range.end - range.start);
3499
0
    buffer->count = range.end - range.start;
3500
0
    return janet_wrap_buffer(buffer);
3501
0
}
3502
3503
0
static void bitloc(int32_t argc, Janet *argv, JanetBuffer **b, int32_t *index, int *bit) {
3504
0
    janet_fixarity(argc, 2);
3505
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3506
0
    double x = janet_getnumber(argv, 1);
3507
0
    int64_t bitindex = (int64_t) x;
3508
0
    int64_t byteindex = bitindex >> 3;
3509
0
    int which_bit = bitindex & 7;
3510
0
    if (bitindex != x || bitindex < 0 || byteindex >= buffer->count)
3511
0
        janet_panicf("invalid bit index %v", argv[1]);
3512
0
    *b = buffer;
3513
0
    *index = (int32_t) byteindex;
3514
0
    *bit = which_bit;
3515
0
}
3516
3517
JANET_CORE_FN(cfun_buffer_bitset,
3518
              "(buffer/bit-set buffer index)",
3519
0
              "Sets the bit at the given bit-index. Returns the buffer.") {
3520
0
    int bit;
3521
0
    int32_t index;
3522
0
    JanetBuffer *buffer;
3523
0
    bitloc(argc, argv, &buffer, &index, &bit);
3524
0
    buffer->data[index] |= 1 << bit;
3525
0
    return argv[0];
3526
0
}
3527
3528
JANET_CORE_FN(cfun_buffer_bitclear,
3529
              "(buffer/bit-clear buffer index)",
3530
0
              "Clears the bit at the given bit-index. Returns the buffer.") {
3531
0
    int bit;
3532
0
    int32_t index;
3533
0
    JanetBuffer *buffer;
3534
0
    bitloc(argc, argv, &buffer, &index, &bit);
3535
0
    buffer->data[index] &= ~(1 << bit);
3536
0
    return argv[0];
3537
0
}
3538
3539
JANET_CORE_FN(cfun_buffer_bitget,
3540
              "(buffer/bit buffer index)",
3541
0
              "Gets the bit at the given bit-index. Returns true if the bit is set, false if not.") {
3542
0
    int bit;
3543
0
    int32_t index;
3544
0
    JanetBuffer *buffer;
3545
0
    bitloc(argc, argv, &buffer, &index, &bit);
3546
0
    return janet_wrap_boolean(buffer->data[index] & (1 << bit));
3547
0
}
3548
3549
JANET_CORE_FN(cfun_buffer_bittoggle,
3550
              "(buffer/bit-toggle buffer index)",
3551
0
              "Toggles the bit at the given bit index in buffer. Returns the buffer.") {
3552
0
    int bit;
3553
0
    int32_t index;
3554
0
    JanetBuffer *buffer;
3555
0
    bitloc(argc, argv, &buffer, &index, &bit);
3556
0
    buffer->data[index] ^= (1 << bit);
3557
0
    return argv[0];
3558
0
}
3559
3560
JANET_CORE_FN(cfun_buffer_blit,
3561
              "(buffer/blit dest src &opt dest-start src-start src-end)",
3562
              "Insert the contents of `src` into `dest`. Can optionally take indices that "
3563
              "indicate which part of `src` to copy into which part of `dest`. Indices can be "
3564
0
              "negative in order to index from the end of `src` or `dest`. Returns `dest`.") {
3565
0
    janet_arity(argc, 2, 5);
3566
0
    JanetBuffer *dest = janet_getbuffer(argv, 0);
3567
0
    JanetByteView src = janet_getbytes(argv, 1);
3568
0
    int same_buf = src.bytes == dest->data;
3569
0
    int32_t offset_dest = 0;
3570
0
    int32_t offset_src = 0;
3571
0
    if (argc > 2 && !janet_checktype(argv[2], JANET_NIL))
3572
0
        offset_dest = janet_gethalfrange(argv, 2, dest->count, "dest-start");
3573
0
    if (argc > 3 && !janet_checktype(argv[3], JANET_NIL))
3574
0
        offset_src = janet_gethalfrange(argv, 3, src.len, "src-start");
3575
0
    int32_t length_src;
3576
0
    if (argc > 4) {
3577
0
        int32_t src_end = src.len;
3578
0
        if (!janet_checktype(argv[4], JANET_NIL))
3579
0
            src_end = janet_gethalfrange(argv, 4, src.len, "src-end");
3580
0
        length_src = src_end - offset_src;
3581
0
        if (length_src < 0) length_src = 0;
3582
0
    } else {
3583
0
        length_src = src.len - offset_src;
3584
0
    }
3585
0
    int64_t last = (int64_t) offset_dest + length_src;
3586
0
    if (last > INT32_MAX)
3587
0
        janet_panic("buffer blit out of range");
3588
0
    int32_t last32 = (int32_t) last;
3589
0
    janet_buffer_ensure(dest, last32, 2);
3590
0
    if (last32 > dest->count) dest->count = last32;
3591
0
    if (length_src) {
3592
0
        if (same_buf) {
3593
            /* janet_buffer_ensure may have invalidated src */
3594
0
            src.bytes = dest->data;
3595
0
            memmove(dest->data + offset_dest, src.bytes + offset_src, length_src);
3596
0
        } else {
3597
0
            memcpy(dest->data + offset_dest, src.bytes + offset_src, length_src);
3598
0
        }
3599
0
    }
3600
0
    return argv[0];
3601
0
}
3602
3603
JANET_CORE_FN(cfun_buffer_format,
3604
              "(buffer/format buffer format & args)",
3605
              "Snprintf like functionality for printing values into a buffer. Returns "
3606
0
              "the modified buffer.") {
3607
0
    janet_arity(argc, 2, -1);
3608
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3609
0
    const char *strfrmt = (const char *) janet_getstring(argv, 1);
3610
0
    janet_buffer_format(buffer, strfrmt, 1, argc, argv);
3611
0
    return argv[0];
3612
0
}
3613
3614
JANET_CORE_FN(cfun_buffer_format_at,
3615
              "(buffer/format-at buffer at format & args)",
3616
              "Snprintf like functionality for printing values into a buffer. Returns "
3617
0
              "the modified buffer.") {
3618
0
    janet_arity(argc, 2, -1);
3619
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3620
0
    int32_t at = janet_getinteger(argv, 1);
3621
0
    if (at < 0) {
3622
0
        at += buffer->count + 1;
3623
0
    }
3624
0
    if (at > buffer->count || at < 0) janet_panicf("expected index at to be in range [0, %d), got %d", buffer->count, at);
3625
0
    int32_t oldcount = buffer->count;
3626
0
    buffer->count = at;
3627
0
    const char *strfrmt = (const char *) janet_getstring(argv, 2);
3628
0
    janet_buffer_format(buffer, strfrmt, 2, argc, argv);
3629
0
    if (buffer->count < oldcount) {
3630
0
        buffer->count = oldcount;
3631
0
    }
3632
0
    return argv[0];
3633
0
}
3634
3635
0
void janet_lib_buffer(JanetTable *env) {
3636
0
    JanetRegExt buffer_cfuns[] = {
3637
0
        JANET_CORE_REG("buffer/new", cfun_buffer_new),
3638
0
        JANET_CORE_REG("buffer/new-filled", cfun_buffer_new_filled),
3639
0
        JANET_CORE_REG("buffer/from-bytes", cfun_buffer_frombytes),
3640
0
        JANET_CORE_REG("buffer/fill", cfun_buffer_fill),
3641
0
        JANET_CORE_REG("buffer/trim", cfun_buffer_trim),
3642
0
        JANET_CORE_REG("buffer/push-byte", cfun_buffer_u8),
3643
0
        JANET_CORE_REG("buffer/push-word", cfun_buffer_word),
3644
0
        JANET_CORE_REG("buffer/push-string", cfun_buffer_chars),
3645
0
        JANET_CORE_REG("buffer/push-uint16", cfun_buffer_push_uint16),
3646
0
        JANET_CORE_REG("buffer/push-uint32", cfun_buffer_push_uint32),
3647
0
        JANET_CORE_REG("buffer/push-uint64", cfun_buffer_push_uint64),
3648
0
        JANET_CORE_REG("buffer/push-float32", cfun_buffer_push_float32),
3649
0
        JANET_CORE_REG("buffer/push-float64", cfun_buffer_push_float64),
3650
0
        JANET_CORE_REG("buffer/push", cfun_buffer_push),
3651
0
        JANET_CORE_REG("buffer/push-at", cfun_buffer_push_at),
3652
0
        JANET_CORE_REG("buffer/popn", cfun_buffer_popn),
3653
0
        JANET_CORE_REG("buffer/clear", cfun_buffer_clear),
3654
0
        JANET_CORE_REG("buffer/slice", cfun_buffer_slice),
3655
0
        JANET_CORE_REG("buffer/bit-set", cfun_buffer_bitset),
3656
0
        JANET_CORE_REG("buffer/bit-clear", cfun_buffer_bitclear),
3657
0
        JANET_CORE_REG("buffer/bit", cfun_buffer_bitget),
3658
0
        JANET_CORE_REG("buffer/bit-toggle", cfun_buffer_bittoggle),
3659
0
        JANET_CORE_REG("buffer/blit", cfun_buffer_blit),
3660
0
        JANET_CORE_REG("buffer/format", cfun_buffer_format),
3661
0
        JANET_CORE_REG("buffer/format-at", cfun_buffer_format_at),
3662
0
        JANET_REG_END
3663
0
    };
3664
0
    janet_core_cfuns_ext(env, NULL, buffer_cfuns);
3665
0
}
3666
3667
3668
/* src/core/bytecode.c */
3669
#line 0 "src/core/bytecode.c"
3670
3671
/*
3672
* Copyright (c) 2025 Calvin Rose
3673
*
3674
* Permission is hereby granted, free of charge, to any person obtaining a copy
3675
* of this software and associated documentation files (the "Software"), to
3676
* deal in the Software without restriction, including without limitation the
3677
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
3678
* sell copies of the Software, and to permit persons to whom the Software is
3679
* furnished to do so, subject to the following conditions:
3680
*
3681
* The above copyright notice and this permission notice shall be included in
3682
* all copies or substantial portions of the Software.
3683
*
3684
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3685
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3686
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3687
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3688
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3689
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
3690
* IN THE SOFTWARE.
3691
*/
3692
3693
#ifndef JANET_AMALG
3694
#include "features.h"
3695
#include <janet.h>
3696
#include "gc.h"
3697
#include "util.h"
3698
#include "regalloc.h"
3699
#endif
3700
3701
/* Look up table for instructions */
3702
enum JanetInstructionType janet_instructions[JOP_INSTRUCTION_COUNT] = {
3703
    JINT_0, /* JOP_NOOP, */
3704
    JINT_S, /* JOP_ERROR, */
3705
    JINT_ST, /* JOP_TYPECHECK, */
3706
    JINT_S, /* JOP_RETURN, */
3707
    JINT_0, /* JOP_RETURN_NIL, */
3708
    JINT_SSI, /* JOP_ADD_IMMEDIATE, */
3709
    JINT_SSS, /* JOP_ADD, */
3710
    JINT_SSI, /* JOP_SUBTRACT_IMMEDIATE, */
3711
    JINT_SSS, /* JOP_SUBTRACT, */
3712
    JINT_SSI, /* JOP_MULTIPLY_IMMEDIATE, */
3713
    JINT_SSS, /* JOP_MULTIPLY, */
3714
    JINT_SSI, /* JOP_DIVIDE_IMMEDIATE, */
3715
    JINT_SSS, /* JOP_DIVIDE, */
3716
    JINT_SSS, /* JOP_DIVIDE_FLOOR */
3717
    JINT_SSS, /* JOP_MODULO, */
3718
    JINT_SSS, /* JOP_REMAINDER, */
3719
    JINT_SSS, /* JOP_BAND, */
3720
    JINT_SSS, /* JOP_BOR, */
3721
    JINT_SSS, /* JOP_BXOR, */
3722
    JINT_SS, /* JOP_BNOT, */
3723
    JINT_SSS, /* JOP_SHIFT_LEFT, */
3724
    JINT_SSI, /* JOP_SHIFT_LEFT_IMMEDIATE, */
3725
    JINT_SSS, /* JOP_SHIFT_RIGHT, */
3726
    JINT_SSI, /* JOP_SHIFT_RIGHT_IMMEDIATE, */
3727
    JINT_SSS, /* JOP_SHIFT_RIGHT_UNSIGNED, */
3728
    JINT_SSU, /* JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE, */
3729
    JINT_SS, /* JOP_MOVE_FAR, */
3730
    JINT_SS, /* JOP_MOVE_NEAR, */
3731
    JINT_L, /* JOP_JUMP, */
3732
    JINT_SL, /* JOP_JUMP_IF, */
3733
    JINT_SL, /* JOP_JUMP_IF_NOT, */
3734
    JINT_SL, /* JOP_JUMP_IF_NIL, */
3735
    JINT_SL, /* JOP_JUMP_IF_NOT_NIL, */
3736
    JINT_SSS, /* JOP_GREATER_THAN, */
3737
    JINT_SSI, /* JOP_GREATER_THAN_IMMEDIATE, */
3738
    JINT_SSS, /* JOP_LESS_THAN, */
3739
    JINT_SSI, /* JOP_LESS_THAN_IMMEDIATE, */
3740
    JINT_SSS, /* JOP_EQUALS, */
3741
    JINT_SSI, /* JOP_EQUALS_IMMEDIATE, */
3742
    JINT_SSS, /* JOP_COMPARE, */
3743
    JINT_S, /* JOP_LOAD_NIL, */
3744
    JINT_S, /* JOP_LOAD_TRUE, */
3745
    JINT_S, /* JOP_LOAD_FALSE, */
3746
    JINT_SI, /* JOP_LOAD_INTEGER, */
3747
    JINT_SC, /* JOP_LOAD_CONSTANT, */
3748
    JINT_SES, /* JOP_LOAD_UPVALUE, */
3749
    JINT_S, /* JOP_LOAD_SELF, */
3750
    JINT_SES, /* JOP_SET_UPVALUE, */
3751
    JINT_SD, /* JOP_CLOSURE, */
3752
    JINT_S, /* JOP_PUSH, */
3753
    JINT_SS, /* JOP_PUSH_2, */
3754
    JINT_SSS, /* JOP_PUSH_3, */
3755
    JINT_S, /* JOP_PUSH_ARRAY, */
3756
    JINT_SS, /* JOP_CALL, */
3757
    JINT_S, /* JOP_TAILCALL, */
3758
    JINT_SSS, /* JOP_RESUME, */
3759
    JINT_SSU, /* JOP_SIGNAL, */
3760
    JINT_SSS, /* JOP_PROPAGATE */
3761
    JINT_SSS, /* JOP_IN, */
3762
    JINT_SSS, /* JOP_GET, */
3763
    JINT_SSS, /* JOP_PUT, */
3764
    JINT_SSU, /* JOP_GET_INDEX, */
3765
    JINT_SSU, /* JOP_PUT_INDEX, */
3766
    JINT_SS, /* JOP_LENGTH */
3767
    JINT_S, /* JOP_MAKE_ARRAY */
3768
    JINT_S, /* JOP_MAKE_BUFFER */
3769
    JINT_S, /* JOP_MAKE_STRING */
3770
    JINT_S, /* JOP_MAKE_STRUCT */
3771
    JINT_S, /* JOP_MAKE_TABLE */
3772
    JINT_S, /* JOP_MAKE_TUPLE */
3773
    JINT_S, /* JOP_MAKE_BRACKET_TUPLE */
3774
    JINT_SSS, /* JOP_GREATER_THAN_EQUAL */
3775
    JINT_SSS, /* JOP_LESS_THAN_EQUAL */
3776
    JINT_SSS, /* JOP_NEXT */
3777
    JINT_SSS, /* JOP_NOT_EQUALS, */
3778
    JINT_SSI, /* JOP_NOT_EQUALS_IMMEDIATE, */
3779
    JINT_SSS /* JOP_CANCEL, */
3780
};
3781
3782
/* Remove all noops while preserving jumps and debugging information.
3783
 * Useful as part of a filtering compiler pass. */
3784
0
void janet_bytecode_remove_noops(JanetFuncDef *def) {
3785
3786
    /* Get an instruction rewrite map so we can rewrite jumps */
3787
0
    uint32_t *pc_map = janet_smalloc(sizeof(uint32_t) * (1 + def->bytecode_length));
3788
0
    uint32_t new_bytecode_length = 0;
3789
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
3790
0
        uint32_t instr = def->bytecode[i];
3791
0
        uint32_t opcode = instr & 0x7F;
3792
0
        pc_map[i] = new_bytecode_length;
3793
0
        if (opcode != JOP_NOOP) {
3794
0
            new_bytecode_length++;
3795
0
        }
3796
0
    }
3797
0
    pc_map[def->bytecode_length] = new_bytecode_length;
3798
3799
    /* Linear scan rewrite bytecode and sourcemap. Also fix jumps. */
3800
0
    int32_t j = 0;
3801
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
3802
0
        uint32_t instr = def->bytecode[i];
3803
0
        uint32_t opcode = instr & 0x7F;
3804
0
        int32_t old_jump_target = 0;
3805
0
        int32_t new_jump_target = 0;
3806
0
        switch (opcode) {
3807
0
            case JOP_NOOP:
3808
0
                continue;
3809
0
            case JOP_JUMP:
3810
                /* relative pc is in DS field of instruction */
3811
0
                old_jump_target = i + (((int32_t)instr) >> 8);
3812
0
                new_jump_target = pc_map[old_jump_target];
3813
0
                instr += (uint32_t)(new_jump_target - old_jump_target + (i - j)) << 8;
3814
0
                break;
3815
0
            case JOP_JUMP_IF:
3816
0
            case JOP_JUMP_IF_NIL:
3817
0
            case JOP_JUMP_IF_NOT:
3818
0
            case JOP_JUMP_IF_NOT_NIL:
3819
                /* relative pc is in ES field of instruction */
3820
0
                old_jump_target = i + (((int32_t)instr) >> 16);
3821
0
                new_jump_target = pc_map[old_jump_target];
3822
0
                instr += (uint32_t)(new_jump_target - old_jump_target + (i - j)) << 16;
3823
0
                break;
3824
0
            default:
3825
0
                break;
3826
0
        }
3827
0
        def->bytecode[j] = instr;
3828
0
        if (def->sourcemap != NULL) {
3829
0
            def->sourcemap[j] = def->sourcemap[i];
3830
0
        }
3831
0
        j++;
3832
0
    }
3833
3834
    /* Rewrite symbolmap */
3835
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
3836
0
        JanetSymbolMap *sm = def->symbolmap + i;
3837
        /* Don't rewrite upvalue mappings */
3838
0
        if (sm->birth_pc < UINT32_MAX) {
3839
0
            sm->birth_pc = pc_map[sm->birth_pc];
3840
0
            sm->death_pc = pc_map[sm->death_pc];
3841
0
        }
3842
0
    }
3843
3844
0
    def->bytecode_length = new_bytecode_length;
3845
0
    def->bytecode = janet_realloc(def->bytecode, def->bytecode_length * sizeof(uint32_t));
3846
0
    janet_sfree(pc_map);
3847
0
}
3848
3849
/* Remove redundant loads, moves and other instructions if possible and convert them to
3850
 * noops. Input is assumed valid bytecode. */
3851
0
void janet_bytecode_movopt(JanetFuncDef *def) {
3852
0
    JanetcRegisterAllocator ra;
3853
0
    int recur = 1;
3854
3855
    /* Iterate this until no more instructions can be removed. */
3856
0
    while (recur) {
3857
0
        janetc_regalloc_init(&ra);
3858
3859
        /* Look for slots that have writes but no reads (and aren't in the closure bitset). */
3860
0
        if (def->closure_bitset != NULL) {
3861
0
            for (int32_t i = 0; i < def->slotcount; i++) {
3862
0
                int32_t index = i >> 5;
3863
0
                uint32_t mask = 1U << (((uint32_t) i) & 31);
3864
0
                if (def->closure_bitset[index] & mask) {
3865
0
                    janetc_regalloc_touch(&ra, i);
3866
0
                }
3867
0
            }
3868
0
        }
3869
3870
0
#define AA ((instr >> 8)  & 0xFF)
3871
0
#define BB ((instr >> 16) & 0xFF)
3872
0
#define CC (instr >> 24)
3873
0
#define DD (instr >> 8)
3874
0
#define EE (instr >> 16)
3875
3876
        /* Check reads and writes */
3877
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
3878
0
            uint32_t instr = def->bytecode[i];
3879
0
            switch (instr & 0x7F) {
3880
3881
                /* Group instructions my how they read from slots */
3882
3883
                /* No reads or writes */
3884
0
                default:
3885
0
                    janet_assert(0, "unhandled instruction");
3886
0
                case JOP_JUMP:
3887
0
                case JOP_NOOP:
3888
0
                case JOP_RETURN_NIL:
3889
                /* Write A */
3890
0
                case JOP_LOAD_INTEGER:
3891
0
                case JOP_LOAD_CONSTANT:
3892
0
                case JOP_LOAD_UPVALUE:
3893
0
                case JOP_CLOSURE:
3894
                /* Write D */
3895
0
                case JOP_LOAD_NIL:
3896
0
                case JOP_LOAD_TRUE:
3897
0
                case JOP_LOAD_FALSE:
3898
0
                case JOP_LOAD_SELF:
3899
0
                    break;
3900
0
                case JOP_MAKE_ARRAY:
3901
0
                case JOP_MAKE_BUFFER:
3902
0
                case JOP_MAKE_STRING:
3903
0
                case JOP_MAKE_STRUCT:
3904
0
                case JOP_MAKE_TABLE:
3905
0
                case JOP_MAKE_TUPLE:
3906
0
                case JOP_MAKE_BRACKET_TUPLE:
3907
                    /* Reads from the stack, don't remove */
3908
0
                    janetc_regalloc_touch(&ra, DD);
3909
0
                    break;
3910
3911
                /* Read A */
3912
0
                case JOP_ERROR:
3913
0
                case JOP_TYPECHECK:
3914
0
                case JOP_JUMP_IF:
3915
0
                case JOP_JUMP_IF_NOT:
3916
0
                case JOP_JUMP_IF_NIL:
3917
0
                case JOP_JUMP_IF_NOT_NIL:
3918
0
                case JOP_SET_UPVALUE:
3919
                /* Write E, Read A */
3920
0
                case JOP_MOVE_FAR:
3921
0
                    janetc_regalloc_touch(&ra, AA);
3922
0
                    break;
3923
3924
                /* Read B */
3925
0
                case JOP_SIGNAL:
3926
                /* Write A, Read B */
3927
0
                case JOP_ADD_IMMEDIATE:
3928
0
                case JOP_SUBTRACT_IMMEDIATE:
3929
0
                case JOP_MULTIPLY_IMMEDIATE:
3930
0
                case JOP_DIVIDE_IMMEDIATE:
3931
0
                case JOP_SHIFT_LEFT_IMMEDIATE:
3932
0
                case JOP_SHIFT_RIGHT_IMMEDIATE:
3933
0
                case JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE:
3934
0
                case JOP_GREATER_THAN_IMMEDIATE:
3935
0
                case JOP_LESS_THAN_IMMEDIATE:
3936
0
                case JOP_EQUALS_IMMEDIATE:
3937
0
                case JOP_NOT_EQUALS_IMMEDIATE:
3938
0
                case JOP_GET_INDEX:
3939
0
                    janetc_regalloc_touch(&ra, BB);
3940
0
                    break;
3941
3942
                /* Read D */
3943
0
                case JOP_RETURN:
3944
0
                case JOP_PUSH:
3945
0
                case JOP_PUSH_ARRAY:
3946
0
                case JOP_TAILCALL:
3947
0
                    janetc_regalloc_touch(&ra, DD);
3948
0
                    break;
3949
3950
                /* Write A, Read E */
3951
0
                case JOP_MOVE_NEAR:
3952
0
                case JOP_LENGTH:
3953
0
                case JOP_BNOT:
3954
0
                case JOP_CALL:
3955
0
                    janetc_regalloc_touch(&ra, EE);
3956
0
                    break;
3957
3958
                /* Read A, B */
3959
0
                case JOP_PUT_INDEX:
3960
0
                    janetc_regalloc_touch(&ra, AA);
3961
0
                    janetc_regalloc_touch(&ra, BB);
3962
0
                    break;
3963
3964
                /* Read A, E */
3965
0
                case JOP_PUSH_2:
3966
0
                    janetc_regalloc_touch(&ra, AA);
3967
0
                    janetc_regalloc_touch(&ra, EE);
3968
0
                    break;
3969
3970
                /* Read B, C */
3971
0
                case JOP_PROPAGATE:
3972
                /* Write A, Read B and C */
3973
0
                case JOP_BAND:
3974
0
                case JOP_BOR:
3975
0
                case JOP_BXOR:
3976
0
                case JOP_ADD:
3977
0
                case JOP_SUBTRACT:
3978
0
                case JOP_MULTIPLY:
3979
0
                case JOP_DIVIDE:
3980
0
                case JOP_DIVIDE_FLOOR:
3981
0
                case JOP_MODULO:
3982
0
                case JOP_REMAINDER:
3983
0
                case JOP_SHIFT_LEFT:
3984
0
                case JOP_SHIFT_RIGHT:
3985
0
                case JOP_SHIFT_RIGHT_UNSIGNED:
3986
0
                case JOP_GREATER_THAN:
3987
0
                case JOP_LESS_THAN:
3988
0
                case JOP_EQUALS:
3989
0
                case JOP_COMPARE:
3990
0
                case JOP_IN:
3991
0
                case JOP_GET:
3992
0
                case JOP_GREATER_THAN_EQUAL:
3993
0
                case JOP_LESS_THAN_EQUAL:
3994
0
                case JOP_NOT_EQUALS:
3995
0
                case JOP_CANCEL:
3996
0
                case JOP_RESUME:
3997
0
                case JOP_NEXT:
3998
0
                    janetc_regalloc_touch(&ra, BB);
3999
0
                    janetc_regalloc_touch(&ra, CC);
4000
0
                    break;
4001
4002
                /* Read A, B, C */
4003
0
                case JOP_PUT:
4004
0
                case JOP_PUSH_3:
4005
0
                    janetc_regalloc_touch(&ra, AA);
4006
0
                    janetc_regalloc_touch(&ra, BB);
4007
0
                    janetc_regalloc_touch(&ra, CC);
4008
0
                    break;
4009
0
            }
4010
0
        }
4011
4012
        /* Iterate and set noops on instructions that make writes that no one ever reads.
4013
         * Only set noops for instructions with no side effects - moves, loads, etc. that can't
4014
         * raise errors (outside of systemic errors like oom or stack overflow). */
4015
0
        recur = 0;
4016
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
4017
0
            uint32_t instr = def->bytecode[i];
4018
0
            switch (instr & 0x7F) {
4019
0
                default:
4020
0
                    break;
4021
                /* Write D */
4022
0
                case JOP_LOAD_NIL:
4023
0
                case JOP_LOAD_TRUE:
4024
0
                case JOP_LOAD_FALSE:
4025
0
                case JOP_LOAD_SELF:
4026
0
                case JOP_MAKE_ARRAY:
4027
0
                case JOP_MAKE_TUPLE:
4028
0
                case JOP_MAKE_BRACKET_TUPLE: {
4029
0
                    if (!janetc_regalloc_check(&ra, DD)) {
4030
0
                        def->bytecode[i] = JOP_NOOP;
4031
0
                        recur = 1;
4032
0
                    }
4033
0
                }
4034
0
                break;
4035
                /* Write E, Read A */
4036
0
                case JOP_MOVE_FAR: {
4037
0
                    if (!janetc_regalloc_check(&ra, EE)) {
4038
0
                        def->bytecode[i] = JOP_NOOP;
4039
0
                        recur = 1;
4040
0
                    }
4041
0
                }
4042
0
                break;
4043
                /* Write A, Read E */
4044
0
                case JOP_MOVE_NEAR:
4045
                /* Write A, Read B */
4046
0
                case JOP_GET_INDEX:
4047
                /* Write A */
4048
0
                case JOP_LOAD_INTEGER:
4049
0
                case JOP_LOAD_CONSTANT:
4050
0
                case JOP_LOAD_UPVALUE:
4051
0
                case JOP_CLOSURE: {
4052
0
                    if (!janetc_regalloc_check(&ra, AA)) {
4053
0
                        def->bytecode[i] = JOP_NOOP;
4054
0
                        recur = 1;
4055
0
                    }
4056
0
                }
4057
0
                break;
4058
0
            }
4059
0
        }
4060
4061
0
        janetc_regalloc_deinit(&ra);
4062
0
#undef AA
4063
0
#undef BB
4064
0
#undef CC
4065
0
#undef DD
4066
0
#undef EE
4067
0
    }
4068
0
}
4069
4070
/* Verify some bytecode */
4071
0
int janet_verify(JanetFuncDef *def) {
4072
0
    int vargs = !!(def->flags & JANET_FUNCDEF_FLAG_VARARG);
4073
0
    int32_t i;
4074
0
    int32_t maxslot = def->arity + vargs;
4075
0
    int32_t sc = def->slotcount;
4076
4077
0
    if (def->bytecode_length == 0) return 1;
4078
4079
0
    if (maxslot > sc) return 2;
4080
4081
    /* Verify each instruction */
4082
0
    for (i = 0; i < def->bytecode_length; i++) {
4083
0
        uint32_t instr = def->bytecode[i];
4084
        /* Check for invalid instructions */
4085
0
        if ((instr & 0x7F) >= JOP_INSTRUCTION_COUNT) {
4086
0
            return 3;
4087
0
        }
4088
0
        enum JanetInstructionType type = janet_instructions[instr & 0x7F];
4089
0
        switch (type) {
4090
0
            case JINT_0:
4091
0
                continue;
4092
0
            case JINT_S: {
4093
0
                if ((int32_t)(instr >> 8) >= sc) return 4;
4094
0
                continue;
4095
0
            }
4096
0
            case JINT_SI:
4097
0
            case JINT_SU:
4098
0
            case JINT_ST: {
4099
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4100
0
                continue;
4101
0
            }
4102
0
            case JINT_L: {
4103
0
                int32_t jumpdest = i + (((int32_t)instr) >> 8);
4104
0
                if (jumpdest < 0 || jumpdest >= def->bytecode_length) return 5;
4105
0
                continue;
4106
0
            }
4107
0
            case JINT_SS: {
4108
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc ||
4109
0
                        (int32_t)(instr >> 16) >= sc) return 4;
4110
0
                continue;
4111
0
            }
4112
0
            case JINT_SSI:
4113
0
            case JINT_SSU: {
4114
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc ||
4115
0
                        (int32_t)((instr >> 16) & 0xFF) >= sc) return 4;
4116
0
                continue;
4117
0
            }
4118
0
            case JINT_SL: {
4119
0
                int32_t jumpdest = i + (((int32_t)instr) >> 16);
4120
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4121
0
                if (jumpdest < 0 || jumpdest >= def->bytecode_length) return 5;
4122
0
                continue;
4123
0
            }
4124
0
            case JINT_SSS: {
4125
0
                if (((int32_t)(instr >> 8) & 0xFF) >= sc ||
4126
0
                        ((int32_t)(instr >> 16) & 0xFF) >= sc ||
4127
0
                        ((int32_t)(instr >> 24) & 0xFF) >= sc) return 4;
4128
0
                continue;
4129
0
            }
4130
0
            case JINT_SD: {
4131
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4132
0
                if ((int32_t)(instr >> 16) >= def->defs_length) return 6;
4133
0
                continue;
4134
0
            }
4135
0
            case JINT_SC: {
4136
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4137
0
                if ((int32_t)(instr >> 16) >= def->constants_length) return 7;
4138
0
                continue;
4139
0
            }
4140
0
            case JINT_SES: {
4141
                /* How can we check the last slot index? We need info parent funcdefs. Resort
4142
                 * to runtime checks for now. Maybe invalid upvalue references could be defaulted
4143
                 * to nil? (don't commit to this in the long term, though) */
4144
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4145
0
                if ((int32_t)((instr >> 16) & 0xFF) >= def->environments_length) return 8;
4146
0
                continue;
4147
0
            }
4148
0
        }
4149
0
    }
4150
4151
    /* Verify last instruction is either a jump, return, return-nil, or tailcall. Eventually,
4152
     * some real flow analysis would be ideal, but this should be very effective. Will completely
4153
     * prevent running over the end of bytecode. However, valid functions with dead code will
4154
     * be rejected. */
4155
0
    {
4156
0
        uint32_t lastop = def->bytecode[def->bytecode_length - 1] & 0xFF;
4157
0
        switch (lastop) {
4158
0
            default:
4159
0
                return 9;
4160
0
            case JOP_RETURN:
4161
0
            case JOP_RETURN_NIL:
4162
0
            case JOP_JUMP:
4163
0
            case JOP_ERROR:
4164
0
            case JOP_TAILCALL:
4165
0
                break;
4166
0
        }
4167
0
    }
4168
4169
0
    return 0;
4170
0
}
4171
4172
/* Allocate an empty funcdef. This function may have added functionality
4173
 * as commonalities between asm and compile arise. */
4174
0
JanetFuncDef *janet_funcdef_alloc(void) {
4175
0
    JanetFuncDef *def = janet_gcalloc(JANET_MEMORY_FUNCDEF, sizeof(JanetFuncDef));
4176
0
    def->environments = NULL;
4177
0
    def->constants = NULL;
4178
0
    def->bytecode = NULL;
4179
0
    def->closure_bitset = NULL;
4180
0
    def->flags = 0;
4181
0
    def->slotcount = 0;
4182
0
    def->symbolmap = NULL;
4183
0
    def->arity = 0;
4184
0
    def->min_arity = 0;
4185
0
    def->max_arity = INT32_MAX;
4186
0
    def->source = NULL;
4187
0
    def->sourcemap = NULL;
4188
0
    def->name = NULL;
4189
0
    def->defs = NULL;
4190
0
    def->defs_length = 0;
4191
0
    def->constants_length = 0;
4192
0
    def->bytecode_length = 0;
4193
0
    def->environments_length = 0;
4194
0
    def->symbolmap_length = 0;
4195
0
    return def;
4196
0
}
4197
4198
/* Create a simple closure from a funcdef */
4199
0
JanetFunction *janet_thunk(JanetFuncDef *def) {
4200
0
    JanetFunction *func = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction));
4201
0
    func->def = def;
4202
0
    janet_assert(def->environments_length == 0, "tried to create thunk that needs upvalues");
4203
0
    return func;
4204
0
}
4205
4206
4207
/* src/core/capi.c */
4208
#line 0 "src/core/capi.c"
4209
4210
/*
4211
* Copyright (c) 2025 Calvin Rose
4212
*
4213
* Permission is hereby granted, free of charge, to any person obtaining a copy
4214
* of this software and associated documentation files (the "Software"), to
4215
* deal in the Software without restriction, including without limitation the
4216
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
4217
* sell copies of the Software, and to permit persons to whom the Software is
4218
* furnished to do so, subject to the following conditions:
4219
*
4220
* The above copyright notice and this permission notice shall be included in
4221
* all copies or substantial portions of the Software.
4222
*
4223
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4224
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4225
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4226
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4227
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4228
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
4229
* IN THE SOFTWARE.
4230
*/
4231
4232
#ifndef JANET_AMALG
4233
#include "features.h"
4234
#include <janet.h>
4235
#include "state.h"
4236
#include "fiber.h"
4237
#include "util.h"
4238
#endif
4239
4240
#ifndef JANET_SINGLE_THREADED
4241
#ifndef JANET_WINDOWS
4242
#include <pthread.h>
4243
#endif
4244
#endif
4245
4246
#ifdef JANET_WINDOWS
4247
#include <windows.h>
4248
#endif
4249
4250
#ifdef JANET_USE_STDATOMIC
4251
#include <stdatomic.h>
4252
/* We don't need stdatomic on most compilers since we use compiler builtins for atomic operations.
4253
 * Some (TCC), explicitly require using stdatomic.h and don't have any exposed builtins (that I know of).
4254
 * For TCC and similar compilers, one would need -std=c11 or similar then to get access. */
4255
#endif
4256
4257
0
JANET_NO_RETURN static void janet_top_level_signal(const char *msg) {
4258
#ifdef JANET_TOP_LEVEL_SIGNAL
4259
    JANET_TOP_LEVEL_SIGNAL(msg);
4260
#else
4261
0
    fputs(msg, stdout);
4262
# ifdef JANET_SINGLE_THREADED
4263
    exit(-1);
4264
# elif defined(JANET_WINDOWS)
4265
    ExitThread(-1);
4266
# else
4267
0
    pthread_exit(NULL);
4268
0
# endif
4269
0
#endif
4270
0
}
4271
4272
0
void janet_signalv(JanetSignal sig, Janet message) {
4273
0
    if (janet_vm.return_reg != NULL) {
4274
        /* Should match logic in janet_call for coercing everything not ok to an error (no awaits, yields, etc.) */
4275
0
        if (janet_vm.coerce_error && sig != JANET_SIGNAL_OK) {
4276
0
#ifdef JANET_EV
4277
0
            if (NULL != janet_vm.root_fiber && sig == JANET_SIGNAL_EVENT) {
4278
0
                janet_vm.root_fiber->sched_id++;
4279
0
            }
4280
0
#endif
4281
0
            if (sig != JANET_SIGNAL_ERROR) {
4282
0
                message = janet_wrap_string(janet_formatc("%v coerced from %s to error", message, janet_signal_names[sig]));
4283
0
            }
4284
0
            sig = JANET_SIGNAL_ERROR;
4285
0
        }
4286
0
        *janet_vm.return_reg = message;
4287
0
        if (NULL != janet_vm.fiber) {
4288
0
            janet_vm.fiber->flags |= JANET_FIBER_DID_LONGJUMP;
4289
0
        }
4290
#if defined(JANET_BSD) || defined(JANET_APPLE)
4291
        _longjmp(*janet_vm.signal_buf, sig);
4292
#else
4293
0
        longjmp(*janet_vm.signal_buf, sig);
4294
0
#endif
4295
0
    } else {
4296
0
        const char *str = (const char *)janet_formatc("janet top level signal - %v\n", message);
4297
0
        janet_top_level_signal(str);
4298
0
    }
4299
0
}
4300
4301
0
void janet_panicv(Janet message) {
4302
0
    janet_signalv(JANET_SIGNAL_ERROR, message);
4303
0
}
4304
4305
0
void janet_panicf(const char *format, ...) {
4306
0
    va_list args;
4307
0
    const uint8_t *ret;
4308
0
    JanetBuffer buffer;
4309
0
    int32_t len = 0;
4310
0
    while (format[len]) len++;
4311
0
    janet_buffer_init(&buffer, len);
4312
0
    va_start(args, format);
4313
0
    janet_formatbv(&buffer, format, args);
4314
0
    va_end(args);
4315
0
    ret = janet_string(buffer.data, buffer.count);
4316
0
    janet_buffer_deinit(&buffer);
4317
0
    janet_panics(ret);
4318
0
}
4319
4320
0
void janet_panic(const char *message) {
4321
0
    janet_panicv(janet_cstringv(message));
4322
0
}
4323
4324
0
void janet_panics(const uint8_t *message) {
4325
0
    janet_panicv(janet_wrap_string(message));
4326
0
}
4327
4328
0
void janet_panic_type(Janet x, int32_t n, int expected) {
4329
0
    janet_panicf("bad slot #%d, expected %T, got %v", n, expected, x);
4330
0
}
4331
4332
0
void janet_panic_abstract(Janet x, int32_t n, const JanetAbstractType *at) {
4333
0
    janet_panicf("bad slot #%d, expected %s, got %v", n, at->name, x);
4334
0
}
4335
4336
0
void janet_fixarity(int32_t arity, int32_t fix) {
4337
0
    if (arity != fix)
4338
0
        janet_panicf("arity mismatch, expected %d, got %d", fix, arity);
4339
0
}
4340
4341
0
void janet_arity(int32_t arity, int32_t min, int32_t max) {
4342
0
    if (min >= 0 && arity < min)
4343
0
        janet_panicf("arity mismatch, expected at least %d, got %d", min, arity);
4344
0
    if (max >= 0 && arity > max)
4345
0
        janet_panicf("arity mismatch, expected at most %d, got %d", max, arity);
4346
0
}
4347
4348
#define DEFINE_GETTER(name, NAME, type) \
4349
0
type janet_get##name(const Janet *argv, int32_t n) { \
4350
0
    Janet x = argv[n]; \
4351
0
    if (!janet_checktype(x, JANET_##NAME)) { \
4352
0
        janet_panic_type(x, n, JANET_TFLAG_##NAME); \
4353
0
    } \
4354
0
    return janet_unwrap_##name(x); \
4355
0
}
Unexecuted instantiation: janet_getnumber
Unexecuted instantiation: janet_getarray
Unexecuted instantiation: janet_gettuple
Unexecuted instantiation: janet_gettable
Unexecuted instantiation: janet_getstruct
Unexecuted instantiation: janet_getstring
Unexecuted instantiation: janet_getkeyword
Unexecuted instantiation: janet_getsymbol
Unexecuted instantiation: janet_getbuffer
Unexecuted instantiation: janet_getfiber
Unexecuted instantiation: janet_getfunction
Unexecuted instantiation: janet_getcfunction
Unexecuted instantiation: janet_getboolean
Unexecuted instantiation: janet_getpointer
4356
4357
#define DEFINE_OPT(name, NAME, type) \
4358
0
type janet_opt##name(const Janet *argv, int32_t argc, int32_t n, type dflt) { \
4359
0
    if (n >= argc) return dflt; \
4360
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt; \
4361
0
    return janet_get##name(argv, n); \
4362
0
}
Unexecuted instantiation: janet_optnumber
Unexecuted instantiation: janet_opttuple
Unexecuted instantiation: janet_optstruct
Unexecuted instantiation: janet_optstring
Unexecuted instantiation: janet_optkeyword
Unexecuted instantiation: janet_optsymbol
Unexecuted instantiation: janet_optfiber
Unexecuted instantiation: janet_optfunction
Unexecuted instantiation: janet_optcfunction
Unexecuted instantiation: janet_optboolean
Unexecuted instantiation: janet_optpointer
4363
4364
#define DEFINE_OPTLEN(name, NAME, type) \
4365
0
type janet_opt##name(const Janet *argv, int32_t argc, int32_t n, int32_t dflt_len) { \
4366
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {\
4367
0
        return janet_##name(dflt_len); \
4368
0
    }\
4369
0
    return janet_get##name(argv, n); \
4370
0
}
Unexecuted instantiation: janet_optbuffer
Unexecuted instantiation: janet_opttable
Unexecuted instantiation: janet_optarray
4371
4372
0
int janet_getmethod(const uint8_t *method, const JanetMethod *methods, Janet *out) {
4373
0
    while (methods->name) {
4374
0
        if (!janet_cstrcmp(method, methods->name)) {
4375
0
            *out = janet_wrap_cfunction(methods->cfun);
4376
0
            return 1;
4377
0
        }
4378
0
        methods++;
4379
0
    }
4380
0
    return 0;
4381
0
}
4382
4383
0
Janet janet_nextmethod(const JanetMethod *methods, Janet key) {
4384
0
    if (!janet_checktype(key, JANET_NIL)) {
4385
0
        while (methods->name) {
4386
0
            if (janet_keyeq(key, methods->name)) {
4387
0
                methods++;
4388
0
                break;
4389
0
            }
4390
0
            methods++;
4391
0
        }
4392
0
    }
4393
0
    if (methods->name) {
4394
0
        return janet_ckeywordv(methods->name);
4395
0
    } else {
4396
0
        return janet_wrap_nil();
4397
0
    }
4398
0
}
4399
4400
DEFINE_GETTER(number, NUMBER, double)
4401
DEFINE_GETTER(array, ARRAY, JanetArray *)
4402
DEFINE_GETTER(tuple, TUPLE, const Janet *)
4403
DEFINE_GETTER(table, TABLE, JanetTable *)
4404
DEFINE_GETTER(struct, STRUCT, const JanetKV *)
4405
DEFINE_GETTER(string, STRING, const uint8_t *)
4406
DEFINE_GETTER(keyword, KEYWORD, const uint8_t *)
4407
DEFINE_GETTER(symbol, SYMBOL, const uint8_t *)
4408
DEFINE_GETTER(buffer, BUFFER, JanetBuffer *)
4409
DEFINE_GETTER(fiber, FIBER, JanetFiber *)
4410
DEFINE_GETTER(function, FUNCTION, JanetFunction *)
4411
DEFINE_GETTER(cfunction, CFUNCTION, JanetCFunction)
4412
DEFINE_GETTER(boolean, BOOLEAN, int)
4413
DEFINE_GETTER(pointer, POINTER, void *)
4414
4415
DEFINE_OPT(number, NUMBER, double)
4416
DEFINE_OPT(tuple, TUPLE, const Janet *)
4417
DEFINE_OPT(struct, STRUCT, const JanetKV *)
4418
DEFINE_OPT(string, STRING, const uint8_t *)
4419
DEFINE_OPT(keyword, KEYWORD, const uint8_t *)
4420
DEFINE_OPT(symbol, SYMBOL, const uint8_t *)
4421
DEFINE_OPT(fiber, FIBER, JanetFiber *)
4422
DEFINE_OPT(function, FUNCTION, JanetFunction *)
4423
DEFINE_OPT(cfunction, CFUNCTION, JanetCFunction)
4424
DEFINE_OPT(boolean, BOOLEAN, int)
4425
DEFINE_OPT(pointer, POINTER, void *)
4426
4427
DEFINE_OPTLEN(buffer, BUFFER, JanetBuffer *)
4428
DEFINE_OPTLEN(table, TABLE, JanetTable *)
4429
DEFINE_OPTLEN(array, ARRAY, JanetArray *)
4430
4431
0
const char *janet_optcstring(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
4432
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4433
0
        return dflt;
4434
0
    }
4435
0
    return janet_getcstring(argv, n);
4436
0
}
4437
4438
#undef DEFINE_GETTER
4439
#undef DEFINE_OPT
4440
#undef DEFINE_OPTLEN
4441
4442
0
const char *janet_getcstring(const Janet *argv, int32_t n) {
4443
0
    if (!janet_checktype(argv[n], JANET_STRING)) {
4444
0
        janet_panic_type(argv[n], n, JANET_TFLAG_STRING);
4445
0
    }
4446
0
    return janet_getcbytes(argv, n);
4447
0
}
4448
4449
0
const char *janet_getcbytes(const Janet *argv, int32_t n) {
4450
    /* Ensure buffer 0-padded */
4451
0
    if (janet_checktype(argv[n], JANET_BUFFER)) {
4452
0
        JanetBuffer *b = janet_unwrap_buffer(argv[n]);
4453
0
        if ((b->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC) && b->count == b->capacity) {
4454
            /* Make a copy with janet_smalloc in the rare case we have a buffer that
4455
             * cannot be realloced and pushing a 0 byte would panic. */
4456
0
            char *new_string = janet_smalloc(b->count + 1);
4457
0
            memcpy(new_string, b->data, b->count);
4458
0
            new_string[b->count] = 0;
4459
0
            if (strlen(new_string) != (size_t) b->count) goto badzeros;
4460
0
            return new_string;
4461
0
        } else {
4462
            /* Ensure trailing 0 */
4463
0
            janet_buffer_push_u8(b, 0);
4464
0
            b->count--;
4465
0
            if (strlen((char *)b->data) != (size_t) b->count) goto badzeros;
4466
0
            return (const char *) b->data;
4467
0
        }
4468
0
    }
4469
0
    JanetByteView view = janet_getbytes(argv, n);
4470
0
    const char *cstr = (const char *)view.bytes;
4471
0
    if (strlen(cstr) != (size_t) view.len) goto badzeros;
4472
0
    return cstr;
4473
4474
0
badzeros:
4475
0
    janet_panic("bytes contain embedded 0s");
4476
0
}
4477
4478
0
const char *janet_optcbytes(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
4479
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4480
0
        return dflt;
4481
0
    }
4482
0
    return janet_getcbytes(argv, n);
4483
0
}
4484
4485
0
int32_t janet_getnat(const Janet *argv, int32_t n) {
4486
0
    Janet x = argv[n];
4487
0
    if (!janet_checkint(x)) goto bad;
4488
0
    int32_t ret = janet_unwrap_integer(x);
4489
0
    if (ret < 0) goto bad;
4490
0
    return ret;
4491
0
bad:
4492
0
    janet_panicf("bad slot #%d, expected non-negative 32 bit signed integer, got %v", n, x);
4493
0
}
4494
4495
0
JanetAbstract janet_checkabstract(Janet x, const JanetAbstractType *at) {
4496
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return NULL;
4497
0
    JanetAbstract a = janet_unwrap_abstract(x);
4498
0
    if (janet_abstract_type(a) != at) return NULL;
4499
0
    return a;
4500
0
}
4501
4502
0
static int janet_strlike_cmp(JanetType type, Janet x, const char *cstring) {
4503
0
    if (janet_type(x) != type) return 0;
4504
0
    return !janet_cstrcmp(janet_unwrap_string(x), cstring);
4505
0
}
4506
4507
0
int janet_keyeq(Janet x, const char *cstring) {
4508
0
    return janet_strlike_cmp(JANET_KEYWORD, x, cstring);
4509
0
}
4510
4511
0
int janet_streq(Janet x, const char *cstring) {
4512
0
    return janet_strlike_cmp(JANET_STRING, x, cstring);
4513
0
}
4514
4515
0
int janet_symeq(Janet x, const char *cstring) {
4516
0
    return janet_strlike_cmp(JANET_SYMBOL, x, cstring);
4517
0
}
4518
4519
0
int32_t janet_getinteger(const Janet *argv, int32_t n) {
4520
0
    Janet x = argv[n];
4521
0
    if (!janet_checkint(x)) {
4522
0
        janet_panicf("bad slot #%d, expected 32 bit signed integer, got %v", n, x);
4523
0
    }
4524
0
    return janet_unwrap_integer(x);
4525
0
}
4526
4527
0
uint32_t janet_getuinteger(const Janet *argv, int32_t n) {
4528
0
    Janet x = argv[n];
4529
0
    if (!janet_checkuint(x)) {
4530
0
        janet_panicf("bad slot #%d, expected 32 bit unsigned integer, got %v", n, x);
4531
0
    }
4532
0
    return (uint32_t) janet_unwrap_number(x);
4533
0
}
4534
4535
0
int16_t janet_getinteger16(const Janet *argv, int32_t n) {
4536
0
    Janet x = argv[n];
4537
0
    if (!janet_checkint16(x)) {
4538
0
        janet_panicf("bad slot #%d, expected 16 bit signed integer, got %v", n, x);
4539
0
    }
4540
0
    return (int16_t) janet_unwrap_number(x);
4541
0
}
4542
4543
0
uint16_t janet_getuinteger16(const Janet *argv, int32_t n) {
4544
0
    Janet x = argv[n];
4545
0
    if (!janet_checkuint16(x)) {
4546
0
        janet_panicf("bad slot #%d, expected 16 bit unsigned integer, got %v", n, x);
4547
0
    }
4548
0
    return (uint16_t) janet_unwrap_number(x);
4549
0
}
4550
4551
4552
0
int64_t janet_getinteger64(const Janet *argv, int32_t n) {
4553
0
#ifdef JANET_INT_TYPES
4554
0
    return janet_unwrap_s64(argv[n]);
4555
#else
4556
    Janet x = argv[n];
4557
    if (!janet_checkint64(x)) {
4558
        janet_panicf("bad slot #%d, expected 64 bit signed integer, got %v", n, x);
4559
    }
4560
    return (int64_t) janet_unwrap_number(x);
4561
#endif
4562
0
}
4563
4564
0
uint64_t janet_getuinteger64(const Janet *argv, int32_t n) {
4565
0
#ifdef JANET_INT_TYPES
4566
0
    return janet_unwrap_u64(argv[n]);
4567
#else
4568
    Janet x = argv[n];
4569
    if (!janet_checkuint64(x)) {
4570
        janet_panicf("bad slot #%d, expected 64 bit unsigned integer, got %v", n, x);
4571
    }
4572
    return (uint64_t) janet_unwrap_number(x);
4573
#endif
4574
0
}
4575
4576
0
size_t janet_getsize(const Janet *argv, int32_t n) {
4577
0
    Janet x = argv[n];
4578
0
    if (!janet_checksize(x)) {
4579
0
        janet_panicf("bad slot #%d, expected size, got %v", n, x);
4580
0
    }
4581
0
    return (size_t) janet_unwrap_number(x);
4582
0
}
4583
4584
0
int32_t janet_gethalfrange(const Janet *argv, int32_t n, int32_t length, const char *which) {
4585
0
    int32_t raw = janet_getinteger(argv, n);
4586
0
    int32_t not_raw = raw;
4587
0
    if (not_raw < 0) not_raw += length + 1;
4588
0
    if (not_raw < 0 || not_raw > length)
4589
0
        janet_panicf("%s index %d out of range [%d,%d]", which, (int64_t) raw, -(int64_t)length - 1, (int64_t) length);
4590
0
    return not_raw;
4591
0
}
4592
4593
0
int32_t janet_getstartrange(const Janet *argv, int32_t argc, int32_t n, int32_t length) {
4594
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4595
0
        return 0;
4596
0
    }
4597
0
    return janet_gethalfrange(argv, n, length, "start");
4598
0
}
4599
4600
0
int32_t janet_getendrange(const Janet *argv, int32_t argc, int32_t n, int32_t length) {
4601
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4602
0
        return length;
4603
0
    }
4604
0
    return janet_gethalfrange(argv, n, length, "end");
4605
0
}
4606
4607
0
int32_t janet_getargindex(const Janet *argv, int32_t n, int32_t length, const char *which) {
4608
0
    int32_t raw = janet_getinteger(argv, n);
4609
0
    int32_t not_raw = raw;
4610
0
    if (not_raw < 0) not_raw += length;
4611
0
    if (not_raw < 0 || not_raw > length)
4612
0
        janet_panicf("%s index %d out of range [%d,%d)", which, (int64_t)raw, -(int64_t)length, (int64_t)length);
4613
0
    return not_raw;
4614
0
}
4615
4616
0
JanetView janet_getindexed(const Janet *argv, int32_t n) {
4617
0
    Janet x = argv[n];
4618
0
    JanetView view;
4619
0
    if (!janet_indexed_view(x, &view.items, &view.len)) {
4620
0
        janet_panic_type(x, n, JANET_TFLAG_INDEXED);
4621
0
    }
4622
0
    return view;
4623
0
}
4624
4625
0
JanetByteView janet_getbytes(const Janet *argv, int32_t n) {
4626
0
    Janet x = argv[n];
4627
0
    JanetByteView view;
4628
0
    if (!janet_bytes_view(x, &view.bytes, &view.len)) {
4629
0
        janet_panic_type(x, n, JANET_TFLAG_BYTES);
4630
0
    }
4631
0
    return view;
4632
0
}
4633
4634
0
JanetDictView janet_getdictionary(const Janet *argv, int32_t n) {
4635
0
    Janet x = argv[n];
4636
0
    JanetDictView view;
4637
0
    if (!janet_dictionary_view(x, &view.kvs, &view.len, &view.cap)) {
4638
0
        janet_panic_type(x, n, JANET_TFLAG_DICTIONARY);
4639
0
    }
4640
0
    return view;
4641
0
}
4642
4643
0
void *janet_getabstract(const Janet *argv, int32_t n, const JanetAbstractType *at) {
4644
0
    Janet x = argv[n];
4645
0
    if (!janet_checktype(x, JANET_ABSTRACT)) {
4646
0
        janet_panic_abstract(x, n, at);
4647
0
    }
4648
0
    void *abstractx = janet_unwrap_abstract(x);
4649
0
    if (janet_abstract_type(abstractx) != at) {
4650
0
        janet_panic_abstract(x, n, at);
4651
0
    }
4652
0
    return abstractx;
4653
0
}
4654
4655
0
JanetRange janet_getslice(int32_t argc, const Janet *argv) {
4656
0
    janet_arity(argc, 1, 3);
4657
0
    JanetRange range;
4658
0
    int32_t length = janet_length(argv[0]);
4659
0
    range.start = janet_getstartrange(argv, argc, 1, length);
4660
0
    range.end = janet_getendrange(argv, argc, 2, length);
4661
0
    if (range.end < range.start)
4662
0
        range.end = range.start;
4663
0
    return range;
4664
0
}
4665
4666
0
Janet janet_dyn(const char *name) {
4667
0
    if (!janet_vm.fiber) {
4668
0
        if (!janet_vm.top_dyns) return janet_wrap_nil();
4669
0
        return janet_table_get(janet_vm.top_dyns, janet_ckeywordv(name));
4670
0
    }
4671
0
    if (janet_vm.fiber->env) {
4672
0
        return janet_table_get(janet_vm.fiber->env, janet_ckeywordv(name));
4673
0
    } else {
4674
0
        return janet_wrap_nil();
4675
0
    }
4676
0
}
4677
4678
0
void janet_setdyn(const char *name, Janet value) {
4679
0
    if (!janet_vm.fiber) {
4680
0
        if (!janet_vm.top_dyns) janet_vm.top_dyns = janet_table(10);
4681
0
        janet_table_put(janet_vm.top_dyns, janet_ckeywordv(name), value);
4682
0
    } else {
4683
0
        if (!janet_vm.fiber->env) {
4684
0
            janet_vm.fiber->env = janet_table(1);
4685
0
        }
4686
0
        janet_table_put(janet_vm.fiber->env, janet_ckeywordv(name), value);
4687
0
    }
4688
0
}
4689
4690
/* Create a function that when called, returns X. Trivial in Janet, a pain in C. */
4691
0
JanetFunction *janet_thunk_delay(Janet x) {
4692
0
    static const uint32_t bytecode[] = {
4693
0
        JOP_LOAD_CONSTANT,
4694
0
        JOP_RETURN
4695
0
    };
4696
0
    JanetFuncDef *def = janet_funcdef_alloc();
4697
0
    def->arity = 0;
4698
0
    def->min_arity = 0;
4699
0
    def->max_arity = INT32_MAX;
4700
0
    def->flags = JANET_FUNCDEF_FLAG_VARARG;
4701
0
    def->slotcount = 1;
4702
0
    def->bytecode = janet_malloc(sizeof(bytecode));
4703
0
    def->bytecode_length = (int32_t)(sizeof(bytecode) / sizeof(uint32_t));
4704
0
    def->constants = janet_malloc(sizeof(Janet));
4705
0
    def->constants_length = 1;
4706
0
    def->name = NULL;
4707
0
    if (!def->bytecode || !def->constants) {
4708
0
        JANET_OUT_OF_MEMORY;
4709
0
    }
4710
0
    def->constants[0] = x;
4711
0
    memcpy(def->bytecode, bytecode, sizeof(bytecode));
4712
0
    janet_def_addflags(def);
4713
    /* janet_verify(def); */
4714
0
    return janet_thunk(def);
4715
0
}
4716
4717
0
uint64_t janet_getflags(const Janet *argv, int32_t n, const char *flags) {
4718
0
    uint64_t ret = 0;
4719
0
    const uint8_t *keyw = janet_getkeyword(argv, n);
4720
0
    int32_t klen = janet_string_length(keyw);
4721
0
    int32_t flen = (int32_t) strlen(flags);
4722
0
    if (flen > 64) {
4723
0
        flen = 64;
4724
0
    }
4725
0
    for (int32_t j = 0; j < klen; j++) {
4726
0
        for (int32_t i = 0; i < flen; i++) {
4727
0
            if (((uint8_t) flags[i]) == keyw[j]) {
4728
0
                ret |= 1ULL << i;
4729
0
                goto found;
4730
0
            }
4731
0
        }
4732
0
        janet_panicf("unexpected flag %c, expected one of \"%s\"", (char) keyw[j], flags);
4733
0
    found:
4734
0
        ;
4735
0
    }
4736
0
    return ret;
4737
0
}
4738
4739
0
int32_t janet_optnat(const Janet *argv, int32_t argc, int32_t n, int32_t dflt) {
4740
0
    if (argc <= n) return dflt;
4741
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4742
0
    return janet_getnat(argv, n);
4743
0
}
4744
4745
0
int32_t janet_optinteger(const Janet *argv, int32_t argc, int32_t n, int32_t dflt) {
4746
0
    if (argc <= n) return dflt;
4747
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4748
0
    return janet_getinteger(argv, n);
4749
0
}
4750
4751
0
int64_t janet_optinteger64(const Janet *argv, int32_t argc, int32_t n, int64_t dflt) {
4752
0
    if (argc <= n) return dflt;
4753
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4754
0
    return janet_getinteger64(argv, n);
4755
0
}
4756
4757
0
size_t janet_optsize(const Janet *argv, int32_t argc, int32_t n, size_t dflt) {
4758
0
    if (argc <= n) return dflt;
4759
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4760
0
    return janet_getsize(argv, n);
4761
0
}
4762
4763
0
void *janet_optabstract(const Janet *argv, int32_t argc, int32_t n, const JanetAbstractType *at, void *dflt) {
4764
0
    if (argc <= n) return dflt;
4765
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4766
0
    return janet_getabstract(argv, n, at);
4767
0
}
4768
4769
/* Atomic refcounts */
4770
4771
0
JanetAtomicInt janet_atomic_inc(JanetAtomicInt volatile *x) {
4772
#ifdef _MSC_VER
4773
    return _InterlockedIncrement(x);
4774
#elif defined(JANET_USE_STDATOMIC)
4775
    return atomic_fetch_add_explicit(x, 1, memory_order_relaxed) + 1;
4776
#else
4777
0
    return __atomic_add_fetch(x, 1, __ATOMIC_RELAXED);
4778
0
#endif
4779
0
}
4780
4781
0
JanetAtomicInt janet_atomic_dec(JanetAtomicInt volatile *x) {
4782
#ifdef _MSC_VER
4783
    return _InterlockedDecrement(x);
4784
#elif defined(JANET_USE_STDATOMIC)
4785
    return atomic_fetch_add_explicit(x, -1, memory_order_acq_rel) - 1;
4786
#else
4787
0
    return __atomic_add_fetch(x, -1, __ATOMIC_ACQ_REL);
4788
0
#endif
4789
0
}
4790
4791
0
JanetAtomicInt janet_atomic_load(JanetAtomicInt volatile *x) {
4792
#ifdef _MSC_VER
4793
    return _InterlockedOr(x, 0);
4794
#elif defined(JANET_USE_STDATOMIC)
4795
    return atomic_load_explicit(x, memory_order_acquire);
4796
#else
4797
0
    return __atomic_load_n(x, __ATOMIC_ACQUIRE);
4798
0
#endif
4799
0
}
4800
4801
0
JanetAtomicInt janet_atomic_load_relaxed(JanetAtomicInt volatile *x) {
4802
#ifdef _MSC_VER
4803
    return _InterlockedOr(x, 0);
4804
#elif defined(JANET_USE_STDATOMIC)
4805
    return atomic_load_explicit(x, memory_order_relaxed);
4806
#else
4807
0
    return __atomic_load_n(x, __ATOMIC_RELAXED);
4808
0
#endif
4809
0
}
4810
4811
/* Some definitions for function-like macros */
4812
4813
0
JANET_API JanetStructHead *(janet_struct_head)(JanetStruct st) {
4814
0
    return janet_struct_head(st);
4815
0
}
4816
4817
0
JANET_API JanetAbstractHead *(janet_abstract_head)(const void *abstract) {
4818
0
    return janet_abstract_head(abstract);
4819
0
}
4820
4821
0
JANET_API JanetStringHead *(janet_string_head)(JanetString s) {
4822
0
    return janet_string_head(s);
4823
0
}
4824
4825
0
JANET_API JanetTupleHead *(janet_tuple_head)(JanetTuple tuple) {
4826
0
    return janet_tuple_head(tuple);
4827
0
}
4828
4829
4830
/* src/core/cfuns.c */
4831
#line 0 "src/core/cfuns.c"
4832
4833
/*
4834
* Copyright (c) 2025 Calvin Rose
4835
*
4836
* Permission is hereby granted, free of charge, to any person obtaining a copy
4837
* of this software and associated documentation files (the "Software"), to
4838
* deal in the Software without restriction, including without limitation the
4839
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
4840
* sell copies of the Software, and to permit persons to whom the Software is
4841
* furnished to do so, subject to the following conditions:
4842
*
4843
* The above copyright notice and this permission notice shall be included in
4844
* all copies or substantial portions of the Software.
4845
*
4846
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4847
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4848
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4849
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4850
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4851
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
4852
* IN THE SOFTWARE.
4853
*/
4854
4855
#ifndef JANET_AMALG
4856
#include "features.h"
4857
#include <janet.h>
4858
#include "compile.h"
4859
#include "emit.h"
4860
#include "vector.h"
4861
#endif
4862
4863
0
static int arity1or2(JanetFopts opts, JanetSlot *args) {
4864
0
    (void) opts;
4865
0
    int32_t arity = janet_v_count(args);
4866
0
    return arity == 1 || arity == 2;
4867
0
}
4868
0
static int arity2or3(JanetFopts opts, JanetSlot *args) {
4869
0
    (void) opts;
4870
0
    int32_t arity = janet_v_count(args);
4871
0
    return arity == 2 || arity == 3;
4872
0
}
4873
0
static int fixarity1(JanetFopts opts, JanetSlot *args) {
4874
0
    (void) opts;
4875
0
    return janet_v_count(args) == 1;
4876
0
}
4877
0
static int maxarity1(JanetFopts opts, JanetSlot *args) {
4878
0
    (void) opts;
4879
0
    return janet_v_count(args) <= 1;
4880
0
}
4881
0
static int minarity2(JanetFopts opts, JanetSlot *args) {
4882
0
    (void) opts;
4883
0
    return janet_v_count(args) >= 2;
4884
0
}
4885
0
static int fixarity2(JanetFopts opts, JanetSlot *args) {
4886
0
    (void) opts;
4887
0
    return janet_v_count(args) == 2;
4888
0
}
4889
0
static int fixarity3(JanetFopts opts, JanetSlot *args) {
4890
0
    (void) opts;
4891
0
    return janet_v_count(args) == 3;
4892
0
}
4893
4894
/* Generic handling for $A = op $B */
4895
0
static JanetSlot genericSS(JanetFopts opts, int op, JanetSlot s) {
4896
0
    JanetSlot target = janetc_gettarget(opts);
4897
0
    janetc_emit_ss(opts.compiler, op, target, s, 1);
4898
0
    return target;
4899
0
}
4900
4901
/* Generic handling for $A = $B op I */
4902
0
static JanetSlot genericSSI(JanetFopts opts, int op, JanetSlot s, int32_t imm) {
4903
0
    JanetSlot target = janetc_gettarget(opts);
4904
0
    janetc_emit_ssi(opts.compiler, op, target, s, imm, 1);
4905
0
    return target;
4906
0
}
4907
4908
/* Emit an insruction that implements a form by itself. */
4909
static JanetSlot opfunction(
4910
    JanetFopts opts,
4911
    JanetSlot *args,
4912
    int op,
4913
0
    Janet defaultArg2) {
4914
0
    JanetCompiler *c = opts.compiler;
4915
0
    int32_t len;
4916
0
    len = janet_v_count(args);
4917
0
    JanetSlot t;
4918
0
    if (len == 1) {
4919
0
        t = janetc_gettarget(opts);
4920
0
        janetc_emit_sss(c, op, t, args[0], janetc_cslot(defaultArg2), 1);
4921
0
        return t;
4922
0
    } else {
4923
        /* len == 2 */
4924
0
        t = janetc_gettarget(opts);
4925
0
        janetc_emit_sss(c, op, t, args[0], args[1], 1);
4926
0
    }
4927
0
    return t;
4928
0
}
4929
4930
/* Check if a value can be coerced to an immediate value */
4931
0
static int can_be_imm(Janet x, int8_t *out) {
4932
0
    if (!janet_checkint(x)) return 0;
4933
0
    int32_t integer = janet_unwrap_integer(x);
4934
0
    if (integer > INT8_MAX || integer < INT8_MIN) return 0;
4935
0
    *out = (int8_t) integer;
4936
0
    return 1;
4937
0
}
4938
4939
/* Check if a slot can be coerced to an immediate value */
4940
0
static int can_slot_be_imm(JanetSlot s, int8_t *out) {
4941
0
    if (!(s.flags & JANET_SLOT_CONSTANT)) return 0;
4942
0
    return can_be_imm(s.constant, out);
4943
0
}
4944
4945
/* Emit a series of instructions instead of a function call to a math op */
4946
static JanetSlot opreduce(
4947
    JanetFopts opts,
4948
    JanetSlot *args,
4949
    int op,
4950
    int opim,
4951
    Janet nullary,
4952
0
    Janet unary) {
4953
0
    JanetCompiler *c = opts.compiler;
4954
0
    int32_t i, len;
4955
0
    int8_t imm = 0;
4956
0
    len = janet_v_count(args);
4957
0
    JanetSlot t;
4958
0
    if (len == 0) {
4959
0
        return janetc_cslot(nullary);
4960
0
    } else if (len == 1) {
4961
0
        t = janetc_gettarget(opts);
4962
        /* Special case subtract to be times -1 */
4963
0
        if (op == JOP_SUBTRACT) {
4964
0
            janetc_emit_ssi(c, JOP_MULTIPLY_IMMEDIATE, t, args[0], -1, 1);
4965
0
        } else {
4966
0
            janetc_emit_sss(c, op, t, janetc_cslot(unary), args[0], 1);
4967
0
        }
4968
0
        return t;
4969
0
    }
4970
0
    t = janetc_gettarget(opts);
4971
0
    if (opim && can_slot_be_imm(args[1], &imm)) {
4972
0
        janetc_emit_ssi(c, opim, t, args[0], imm, 1);
4973
0
    } else {
4974
0
        janetc_emit_sss(c, op, t, args[0], args[1], 1);
4975
0
    }
4976
0
    for (i = 2; i < len; i++) {
4977
0
        if (opim && can_slot_be_imm(args[i], &imm)) {
4978
0
            janetc_emit_ssi(c, opim, t, t, imm, 1);
4979
0
        } else {
4980
0
            janetc_emit_sss(c, op, t, t, args[i], 1);
4981
0
        }
4982
0
    }
4983
0
    return t;
4984
0
}
4985
4986
/* Function optimizers */
4987
4988
0
static JanetSlot do_propagate(JanetFopts opts, JanetSlot *args) {
4989
0
    return opreduce(opts, args, JOP_PROPAGATE, 0, janet_wrap_nil(), janet_wrap_nil());
4990
0
}
4991
0
static JanetSlot do_error(JanetFopts opts, JanetSlot *args) {
4992
0
    janetc_emit_s(opts.compiler, JOP_ERROR, args[0], 0);
4993
0
    return janetc_cslot(janet_wrap_nil());
4994
0
}
4995
0
static JanetSlot do_debug(JanetFopts opts, JanetSlot *args) {
4996
0
    (void)args;
4997
0
    int32_t len = janet_v_count(args);
4998
0
    JanetSlot t = janetc_gettarget(opts);
4999
0
    janetc_emit_ssu(opts.compiler, JOP_SIGNAL, t,
5000
0
                    (len == 1) ? args[0] : janetc_cslot(janet_wrap_nil()),
5001
0
                    JANET_SIGNAL_DEBUG,
5002
0
                    1);
5003
0
    return t;
5004
0
}
5005
0
static JanetSlot do_in(JanetFopts opts, JanetSlot *args) {
5006
0
    return opreduce(opts, args, JOP_IN, 0, janet_wrap_nil(), janet_wrap_nil());
5007
0
}
5008
0
static JanetSlot do_get(JanetFopts opts, JanetSlot *args) {
5009
0
    if (janet_v_count(args) == 3) {
5010
0
        JanetCompiler *c = opts.compiler;
5011
0
        JanetSlot t = janetc_gettarget(opts);
5012
0
        int target_is_default = janetc_sequal(t, args[2]);
5013
0
        JanetSlot dflt_slot = args[2];
5014
0
        if (target_is_default) {
5015
0
            dflt_slot = janetc_farslot(c);
5016
0
            janetc_copy(c, dflt_slot, t);
5017
0
        }
5018
0
        janetc_emit_sss(c, JOP_GET, t, args[0], args[1], 1);
5019
0
        int32_t label = janetc_emit_si(c, JOP_JUMP_IF_NOT_NIL, t, 0, 0);
5020
0
        janetc_copy(c, t, dflt_slot);
5021
0
        if (target_is_default) janetc_freeslot(c, dflt_slot);
5022
0
        int32_t current = janet_v_count(c->buffer);
5023
0
        c->buffer[label] |= (current - label) << 16;
5024
0
        return t;
5025
0
    } else {
5026
0
        return opreduce(opts, args, JOP_GET, 0, janet_wrap_nil(), janet_wrap_nil());
5027
0
    }
5028
0
}
5029
0
static JanetSlot do_next(JanetFopts opts, JanetSlot *args) {
5030
0
    return opfunction(opts, args, JOP_NEXT, janet_wrap_nil());
5031
0
}
5032
0
static JanetSlot do_cmp(JanetFopts opts, JanetSlot *args) {
5033
0
    return opreduce(opts, args, JOP_COMPARE, 0, janet_wrap_nil(), janet_wrap_nil());
5034
0
}
5035
0
static JanetSlot do_put(JanetFopts opts, JanetSlot *args) {
5036
0
    if (opts.flags & JANET_FOPTS_DROP) {
5037
0
        janetc_emit_sss(opts.compiler, JOP_PUT, args[0], args[1], args[2], 0);
5038
0
        return janetc_cslot(janet_wrap_nil());
5039
0
    } else {
5040
0
        JanetSlot t = janetc_gettarget(opts);
5041
0
        janetc_copy(opts.compiler, t, args[0]);
5042
0
        janetc_emit_sss(opts.compiler, JOP_PUT, t, args[1], args[2], 0);
5043
0
        return t;
5044
0
    }
5045
0
}
5046
0
static JanetSlot do_length(JanetFopts opts, JanetSlot *args) {
5047
0
    return genericSS(opts, JOP_LENGTH, args[0]);
5048
0
}
5049
0
static JanetSlot do_yield(JanetFopts opts, JanetSlot *args) {
5050
0
    if (janet_v_count(args) == 0) {
5051
0
        return genericSSI(opts, JOP_SIGNAL, janetc_cslot(janet_wrap_nil()), 3);
5052
0
    } else {
5053
0
        return genericSSI(opts, JOP_SIGNAL, args[0], 3);
5054
0
    }
5055
0
}
5056
0
static JanetSlot do_resume(JanetFopts opts, JanetSlot *args) {
5057
0
    return opfunction(opts, args, JOP_RESUME, janet_wrap_nil());
5058
0
}
5059
0
static JanetSlot do_cancel(JanetFopts opts, JanetSlot *args) {
5060
0
    return opfunction(opts, args, JOP_CANCEL, janet_wrap_nil());
5061
0
}
5062
0
static JanetSlot do_apply(JanetFopts opts, JanetSlot *args) {
5063
    /* Push phase */
5064
0
    JanetCompiler *c = opts.compiler;
5065
0
    int32_t i;
5066
0
    for (i = 1; i < janet_v_count(args) - 3; i += 3)
5067
0
        janetc_emit_sss(c, JOP_PUSH_3, args[i], args[i + 1], args[i + 2], 0);
5068
0
    if (i == janet_v_count(args) - 3)
5069
0
        janetc_emit_ss(c, JOP_PUSH_2, args[i], args[i + 1], 0);
5070
0
    else if (i == janet_v_count(args) - 2)
5071
0
        janetc_emit_s(c, JOP_PUSH, args[i], 0);
5072
    /* Push array phase */
5073
0
    janetc_emit_s(c, JOP_PUSH_ARRAY, janet_v_last(args), 0);
5074
    /* Call phase */
5075
0
    JanetSlot target;
5076
0
    if (opts.flags & JANET_FOPTS_TAIL) {
5077
0
        janetc_emit_s(c, JOP_TAILCALL, args[0], 0);
5078
0
        target = janetc_cslot(janet_wrap_nil());
5079
0
        target.flags |= JANET_SLOT_RETURNED;
5080
0
    } else {
5081
0
        target = janetc_gettarget(opts);
5082
0
        janetc_emit_ss(c, JOP_CALL, target, args[0], 1);
5083
0
    }
5084
0
    return target;
5085
0
}
5086
5087
/* Variadic operators specialization */
5088
5089
0
static JanetSlot do_add(JanetFopts opts, JanetSlot *args) {
5090
0
    return opreduce(opts, args, JOP_ADD, JOP_ADD_IMMEDIATE, janet_wrap_integer(0), janet_wrap_integer(0));
5091
0
}
5092
0
static JanetSlot do_sub(JanetFopts opts, JanetSlot *args) {
5093
0
    return opreduce(opts, args, JOP_SUBTRACT, JOP_SUBTRACT_IMMEDIATE, janet_wrap_integer(0), janet_wrap_integer(0));
5094
0
}
5095
0
static JanetSlot do_mul(JanetFopts opts, JanetSlot *args) {
5096
0
    return opreduce(opts, args, JOP_MULTIPLY, JOP_MULTIPLY_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5097
0
}
5098
0
static JanetSlot do_div(JanetFopts opts, JanetSlot *args) {
5099
0
    return opreduce(opts, args, JOP_DIVIDE, JOP_DIVIDE_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5100
0
}
5101
0
static JanetSlot do_divf(JanetFopts opts, JanetSlot *args) {
5102
0
    return opreduce(opts, args, JOP_DIVIDE_FLOOR, 0, janet_wrap_integer(1), janet_wrap_integer(1));
5103
0
}
5104
0
static JanetSlot do_modulo(JanetFopts opts, JanetSlot *args) {
5105
0
    return opreduce(opts, args, JOP_MODULO, 0, janet_wrap_integer(0), janet_wrap_integer(1));
5106
0
}
5107
0
static JanetSlot do_remainder(JanetFopts opts, JanetSlot *args) {
5108
0
    return opreduce(opts, args, JOP_REMAINDER, 0, janet_wrap_integer(0), janet_wrap_integer(1));
5109
0
}
5110
0
static JanetSlot do_band(JanetFopts opts, JanetSlot *args) {
5111
0
    return opreduce(opts, args, JOP_BAND, 0, janet_wrap_integer(-1), janet_wrap_integer(-1));
5112
0
}
5113
0
static JanetSlot do_bor(JanetFopts opts, JanetSlot *args) {
5114
0
    return opreduce(opts, args, JOP_BOR, 0, janet_wrap_integer(0), janet_wrap_integer(0));
5115
0
}
5116
0
static JanetSlot do_bxor(JanetFopts opts, JanetSlot *args) {
5117
0
    return opreduce(opts, args, JOP_BXOR, 0, janet_wrap_integer(0), janet_wrap_integer(0));
5118
0
}
5119
0
static JanetSlot do_lshift(JanetFopts opts, JanetSlot *args) {
5120
0
    return opreduce(opts, args, JOP_SHIFT_LEFT, JOP_SHIFT_LEFT_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5121
0
}
5122
0
static JanetSlot do_rshift(JanetFopts opts, JanetSlot *args) {
5123
0
    return opreduce(opts, args, JOP_SHIFT_RIGHT, JOP_SHIFT_RIGHT_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5124
0
}
5125
0
static JanetSlot do_rshiftu(JanetFopts opts, JanetSlot *args) {
5126
0
    return opreduce(opts, args, JOP_SHIFT_RIGHT_UNSIGNED, JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5127
0
}
5128
0
static JanetSlot do_bnot(JanetFopts opts, JanetSlot *args) {
5129
0
    return genericSS(opts, JOP_BNOT, args[0]);
5130
0
}
5131
5132
/* Specialization for comparators */
5133
static JanetSlot compreduce(
5134
    JanetFopts opts,
5135
    JanetSlot *args,
5136
    int op,
5137
    int opim,
5138
0
    int invert) {
5139
0
    JanetCompiler *c = opts.compiler;
5140
0
    int32_t i, len;
5141
0
    int8_t imm = 0;
5142
0
    len = janet_v_count(args);
5143
0
    int32_t *labels = NULL;
5144
0
    JanetSlot t;
5145
0
    if (len < 2) {
5146
0
        return invert
5147
0
               ? janetc_cslot(janet_wrap_false())
5148
0
               : janetc_cslot(janet_wrap_true());
5149
0
    }
5150
0
    t = janetc_gettarget(opts);
5151
0
    for (i = 1; i < len; i++) {
5152
0
        if (opim && can_slot_be_imm(args[i], &imm)) {
5153
0
            janetc_emit_ssi(c, opim, t, args[i - 1], imm, 1);
5154
0
        } else {
5155
0
            janetc_emit_sss(c, op, t, args[i - 1], args[i], 1);
5156
0
        }
5157
0
        if (i != (len - 1)) {
5158
0
            int32_t label = janetc_emit_si(c, invert ? JOP_JUMP_IF : JOP_JUMP_IF_NOT, t, 0, 1);
5159
0
            janet_v_push(labels, label);
5160
0
        }
5161
0
    }
5162
0
    int32_t end = janet_v_count(c->buffer);
5163
0
    for (i = 0; i < janet_v_count(labels); i++) {
5164
0
        int32_t label = labels[i];
5165
0
        c->buffer[label] |= ((end - label) << 16);
5166
0
    }
5167
0
    janet_v_free(labels);
5168
0
    return t;
5169
0
}
5170
5171
0
static JanetSlot do_gt(JanetFopts opts, JanetSlot *args) {
5172
0
    return compreduce(opts, args, JOP_GREATER_THAN, JOP_GREATER_THAN_IMMEDIATE, 0);
5173
0
}
5174
0
static JanetSlot do_lt(JanetFopts opts, JanetSlot *args) {
5175
0
    return compreduce(opts, args, JOP_LESS_THAN, JOP_LESS_THAN_IMMEDIATE, 0);
5176
0
}
5177
0
static JanetSlot do_gte(JanetFopts opts, JanetSlot *args) {
5178
0
    return compreduce(opts, args, JOP_GREATER_THAN_EQUAL, 0, 0);
5179
0
}
5180
0
static JanetSlot do_lte(JanetFopts opts, JanetSlot *args) {
5181
0
    return compreduce(opts, args, JOP_LESS_THAN_EQUAL, 0, 0);
5182
0
}
5183
0
static JanetSlot do_eq(JanetFopts opts, JanetSlot *args) {
5184
0
    return compreduce(opts, args, JOP_EQUALS, JOP_EQUALS_IMMEDIATE, 0);
5185
0
}
5186
0
static JanetSlot do_neq(JanetFopts opts, JanetSlot *args) {
5187
0
    return compreduce(opts, args, JOP_NOT_EQUALS, JOP_NOT_EQUALS_IMMEDIATE, 1);
5188
0
}
5189
5190
/* Arranged by tag */
5191
static const JanetFunOptimizer optimizers[] = {
5192
    {maxarity1, do_debug},
5193
    {fixarity1, do_error},
5194
    {minarity2, do_apply},
5195
    {maxarity1, do_yield},
5196
    {arity1or2, do_resume},
5197
    {fixarity2, do_in},
5198
    {fixarity3, do_put},
5199
    {fixarity1, do_length},
5200
    {NULL, do_add},
5201
    {NULL, do_sub},
5202
    {NULL, do_mul},
5203
    {NULL, do_div},
5204
    {NULL, do_band},
5205
    {NULL, do_bor},
5206
    {NULL, do_bxor},
5207
    {NULL, do_lshift},
5208
    {NULL, do_rshift},
5209
    {NULL, do_rshiftu},
5210
    {fixarity1, do_bnot},
5211
    {NULL, do_gt},
5212
    {NULL, do_lt},
5213
    {NULL, do_gte},
5214
    {NULL, do_lte},
5215
    {NULL, do_eq},
5216
    {NULL, do_neq},
5217
    {fixarity2, do_propagate},
5218
    {arity2or3, do_get},
5219
    {arity1or2, do_next},
5220
    {NULL, do_modulo},
5221
    {NULL, do_remainder},
5222
    {fixarity2, do_cmp},
5223
    {fixarity2, do_cancel},
5224
    {NULL, do_divf}
5225
};
5226
5227
0
const JanetFunOptimizer *janetc_funopt(uint32_t flags) {
5228
0
    uint32_t tag = flags & JANET_FUNCDEF_FLAG_TAG;
5229
0
    if (tag == 0)
5230
0
        return NULL;
5231
0
    uint32_t index = tag - 1;
5232
0
    if (index >= (sizeof(optimizers) / sizeof(optimizers[0])))
5233
0
        return NULL;
5234
0
    return optimizers + index;
5235
0
}
5236
5237
5238
5239
/* src/core/compile.c */
5240
#line 0 "src/core/compile.c"
5241
5242
/*
5243
* Copyright (c) 2025 Calvin Rose
5244
*
5245
* Permission is hereby granted, free of charge, to any person obtaining a copy
5246
* of this software and associated documentation files (the "Software"), to
5247
* deal in the Software without restriction, including without limitation the
5248
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
5249
* sell copies of the Software, and to permit persons to whom the Software is
5250
* furnished to do so, subject to the following conditions:
5251
*
5252
* The above copyright notice and this permission notice shall be included in
5253
* all copies or substantial portions of the Software.
5254
*
5255
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5256
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5257
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5258
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5259
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5260
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
5261
* IN THE SOFTWARE.
5262
*/
5263
5264
#ifndef JANET_AMALG
5265
#include "features.h"
5266
#include <janet.h>
5267
#include "compile.h"
5268
#include "emit.h"
5269
#include "vector.h"
5270
#include "util.h"
5271
#include "state.h"
5272
#endif
5273
5274
0
JanetFopts janetc_fopts_default(JanetCompiler *c) {
5275
0
    JanetFopts ret;
5276
0
    ret.compiler = c;
5277
0
    ret.flags = 0;
5278
0
    ret.hint = janetc_cslot(janet_wrap_nil());
5279
0
    return ret;
5280
0
}
5281
5282
/* Throw an error with a janet string. */
5283
0
void janetc_error(JanetCompiler *c, const uint8_t *m) {
5284
    /* Don't override first error */
5285
0
    if (c->result.status == JANET_COMPILE_ERROR) {
5286
0
        return;
5287
0
    }
5288
0
    c->result.status = JANET_COMPILE_ERROR;
5289
0
    c->result.error = m;
5290
0
}
5291
5292
/* Throw an error with a message in a cstring */
5293
0
void janetc_cerror(JanetCompiler *c, const char *m) {
5294
0
    janetc_error(c, janet_cstring(m));
5295
0
}
5296
5297
static const char *janet_lint_level_names[] = {
5298
    "relaxed",
5299
    "normal",
5300
    "strict"
5301
};
5302
5303
/* Emit compiler linter messages */
5304
0
void janetc_lintf(JanetCompiler *c, JanetCompileLintLevel level, const char *format, ...) {
5305
0
    if (NULL != c->lints) {
5306
        /* format message */
5307
0
        va_list args;
5308
0
        JanetBuffer buffer;
5309
0
        int32_t len = 0;
5310
0
        while (format[len]) len++;
5311
0
        janet_buffer_init(&buffer, len);
5312
0
        va_start(args, format);
5313
0
        janet_formatbv(&buffer, format, args);
5314
0
        va_end(args);
5315
0
        const uint8_t *str = janet_string(buffer.data, buffer.count);
5316
0
        janet_buffer_deinit(&buffer);
5317
        /* construct linting payload */
5318
0
        Janet *payload = janet_tuple_begin(4);
5319
0
        payload[0] = janet_ckeywordv(janet_lint_level_names[level]);
5320
0
        payload[1] = c->current_mapping.line == -1 ? janet_wrap_nil() : janet_wrap_integer(c->current_mapping.line);
5321
0
        payload[2] = c->current_mapping.column == -1 ? janet_wrap_nil() : janet_wrap_integer(c->current_mapping.column);
5322
0
        payload[3] = janet_wrap_string(str);
5323
0
        janet_array_push(c->lints, janet_wrap_tuple(janet_tuple_end(payload)));
5324
0
    }
5325
0
}
5326
5327
/* Free a slot */
5328
0
void janetc_freeslot(JanetCompiler *c, JanetSlot s) {
5329
0
    if (s.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF | JANET_SLOT_NAMED)) return;
5330
0
    if (s.envindex >= 0) return;
5331
0
    janetc_regalloc_free(&c->scope->ra, s.index);
5332
0
}
5333
5334
/* Add a slot to a scope with a symbol associated with it (def or var). */
5335
0
void janetc_nameslot(JanetCompiler *c, const uint8_t *sym, JanetSlot s) {
5336
0
    SymPair sp;
5337
0
    int32_t cnt = janet_v_count(c->buffer);
5338
0
    sp.sym = sym;
5339
0
    sp.sym2 = sym;
5340
0
    sp.slot = s;
5341
0
    sp.keep = 0;
5342
0
    sp.slot.flags |= JANET_SLOT_NAMED;
5343
0
    sp.birth_pc = cnt ? cnt - 1 : 0;
5344
0
    sp.death_pc = UINT32_MAX;
5345
0
    janet_v_push(c->scope->syms, sp);
5346
0
}
5347
5348
/* Create a slot with a constant */
5349
0
JanetSlot janetc_cslot(Janet x) {
5350
0
    JanetSlot ret;
5351
0
    ret.flags = (1 << janet_type(x)) | JANET_SLOT_CONSTANT;
5352
0
    ret.index = -1;
5353
0
    ret.constant = x;
5354
0
    ret.envindex = -1;
5355
0
    return ret;
5356
0
}
5357
5358
/* Get a local slot */
5359
0
JanetSlot janetc_farslot(JanetCompiler *c) {
5360
0
    JanetSlot ret;
5361
0
    ret.flags = JANET_SLOTTYPE_ANY;
5362
0
    ret.index = janetc_allocfar(c);
5363
0
    ret.constant = janet_wrap_nil();
5364
0
    ret.envindex = -1;
5365
0
    return ret;
5366
0
}
5367
5368
/* Enter a new scope */
5369
0
void janetc_scope(JanetScope *s, JanetCompiler *c, int flags, const char *name) {
5370
0
    JanetScope scope;
5371
0
    scope.name = name;
5372
0
    scope.child = NULL;
5373
0
    scope.consts = NULL;
5374
0
    scope.syms = NULL;
5375
0
    scope.envs = NULL;
5376
0
    scope.defs = NULL;
5377
0
    scope.bytecode_start = janet_v_count(c->buffer);
5378
0
    scope.flags = flags;
5379
0
    scope.parent = c->scope;
5380
0
    janetc_regalloc_init(&scope.ua);
5381
    /* Inherit slots */
5382
0
    if ((!(flags & JANET_SCOPE_FUNCTION)) && c->scope) {
5383
0
        janetc_regalloc_clone(&scope.ra, &(c->scope->ra));
5384
0
    } else {
5385
0
        janetc_regalloc_init(&scope.ra);
5386
0
    }
5387
    /* Link parent and child and update pointer */
5388
0
    if (c->scope)
5389
0
        c->scope->child = s;
5390
0
    c->scope = s;
5391
0
    *s = scope;
5392
0
}
5393
5394
/* Leave a scope. */
5395
0
void janetc_popscope(JanetCompiler *c) {
5396
0
    JanetScope *oldscope = c->scope;
5397
0
    JanetScope *newscope = oldscope->parent;
5398
    /* Move free slots to parent scope if not a new function.
5399
     * We need to know the total number of slots used when compiling the function. */
5400
0
    if (!(oldscope->flags & (JANET_SCOPE_FUNCTION | JANET_SCOPE_UNUSED)) && newscope) {
5401
        /* Parent scopes inherit child's closure flag. Needed
5402
         * for while loops. (if a while loop creates a closure, it
5403
         * is compiled to a tail recursive iife) */
5404
0
        if (oldscope->flags & JANET_SCOPE_CLOSURE) {
5405
0
            newscope->flags |= JANET_SCOPE_CLOSURE;
5406
0
        }
5407
0
        if (newscope->ra.max < oldscope->ra.max) {
5408
0
            newscope->ra.max = oldscope->ra.max;
5409
0
        }
5410
5411
        /* Keep upvalue slots and symbols for debugging. */
5412
0
        for (int32_t i = 0; i < janet_v_count(oldscope->syms); i++) {
5413
0
            SymPair pair = oldscope->syms[i];
5414
            /* The variable should not be lexically accessible */
5415
0
            pair.sym = NULL;
5416
0
            if (pair.death_pc == UINT32_MAX) {
5417
0
                pair.death_pc = (uint32_t) janet_v_count(c->buffer);
5418
0
            }
5419
0
            if (pair.keep) {
5420
                /* The variable should also not be included in the locals */
5421
0
                pair.sym2 = NULL;
5422
0
                janetc_regalloc_touch(&newscope->ra, pair.slot.index);
5423
0
            }
5424
0
            janet_v_push(newscope->syms, pair);
5425
0
        }
5426
0
    }
5427
5428
    /* Free the old scope */
5429
0
    janet_v_free(oldscope->consts);
5430
0
    janet_v_free(oldscope->syms);
5431
0
    janet_v_free(oldscope->envs);
5432
0
    janet_v_free(oldscope->defs);
5433
0
    janetc_regalloc_deinit(&oldscope->ra);
5434
0
    janetc_regalloc_deinit(&oldscope->ua);
5435
    /* Update pointer */
5436
0
    if (newscope)
5437
0
        newscope->child = NULL;
5438
0
    c->scope = newscope;
5439
0
}
5440
5441
/* Leave a scope but keep a slot allocated. */
5442
0
void janetc_popscope_keepslot(JanetCompiler *c, JanetSlot retslot) {
5443
0
    JanetScope *scope;
5444
0
    janetc_popscope(c);
5445
0
    scope = c->scope;
5446
0
    if (scope && retslot.envindex < 0 && retslot.index >= 0) {
5447
0
        janetc_regalloc_touch(&scope->ra, retslot.index);
5448
0
    }
5449
0
}
5450
5451
static int lookup_missing(
5452
    JanetCompiler *c,
5453
    const uint8_t *sym,
5454
    JanetFunction *handler,
5455
0
    JanetBinding *out) {
5456
0
    int32_t minar = handler->def->min_arity;
5457
0
    int32_t maxar = handler->def->max_arity;
5458
0
    if (minar > 1 || maxar < 1) {
5459
0
        janetc_error(c, janet_cstring("missing symbol lookup handler must take 1 argument"));
5460
0
        return 0;
5461
0
    }
5462
0
    Janet args[1] = { janet_wrap_symbol(sym) };
5463
0
    JanetFiber *fiberp = janet_fiber(handler, 64, 1, args);
5464
0
    if (NULL == fiberp) {
5465
0
        janetc_error(c, janet_cstring("failed to call missing symbol lookup handler"));
5466
0
        return 0;
5467
0
    }
5468
0
    fiberp->env = c->env;
5469
0
    int lock = janet_gclock();
5470
0
    Janet tempOut;
5471
0
    JanetSignal status = janet_continue(fiberp, janet_wrap_nil(), &tempOut);
5472
0
    janet_gcunlock(lock);
5473
0
    if (status != JANET_SIGNAL_OK) {
5474
0
        janetc_error(c, janet_formatc("(lookup) %V", tempOut));
5475
0
        return 0;
5476
0
    }
5477
5478
    /* Convert return value as entry. */
5479
    /* Alternative could use janet_resolve_ext(c->env, sym) to read result from environment. */
5480
0
    *out = janet_binding_from_entry(tempOut);
5481
0
    return 1;
5482
0
}
5483
5484
/* Allow searching for symbols. Return information about the symbol */
5485
JanetSlot janetc_resolve(
5486
    JanetCompiler *c,
5487
0
    const uint8_t *sym) {
5488
5489
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
5490
0
    JanetScope *scope = c->scope;
5491
0
    SymPair *pair;
5492
0
    int foundlocal = 1;
5493
0
    int unused = 0;
5494
5495
    /* Search scopes for symbol, starting from top */
5496
0
    while (scope) {
5497
0
        int32_t i, len;
5498
0
        if (scope->flags & JANET_SCOPE_UNUSED)
5499
0
            unused = 1;
5500
0
        len = janet_v_count(scope->syms);
5501
        /* Search in reverse order */
5502
0
        for (i = len - 1; i >= 0; i--) {
5503
0
            pair = scope->syms + i;
5504
0
            if (pair->sym == sym) {
5505
0
                ret = pair->slot;
5506
0
                goto found;
5507
0
            }
5508
0
        }
5509
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
5510
0
            foundlocal = 0;
5511
0
        scope = scope->parent;
5512
0
    }
5513
5514
    /* Symbol not found - check for global */
5515
0
    {
5516
0
        JanetBinding binding = janet_resolve_ext(c->env, sym);
5517
0
        if (binding.type == JANET_BINDING_NONE) {
5518
0
            Janet handler = janet_table_get(c->env, janet_ckeywordv("missing-symbol"));
5519
0
            switch (janet_type(handler)) {
5520
0
                case JANET_NIL:
5521
0
                    break;
5522
0
                case JANET_FUNCTION:
5523
0
                    if (!lookup_missing(c, sym, janet_unwrap_function(handler), &binding))
5524
0
                        return janetc_cslot(janet_wrap_nil());
5525
0
                    break;
5526
0
                default:
5527
0
                    janetc_error(c, janet_formatc("invalid lookup handler %V", handler));
5528
0
                    return janetc_cslot(janet_wrap_nil());
5529
0
            }
5530
0
        }
5531
5532
0
        switch (binding.type) {
5533
0
            default:
5534
0
            case JANET_BINDING_NONE:
5535
0
                janetc_error(c, janet_formatc("unknown symbol %q", janet_wrap_symbol(sym)));
5536
0
                return janetc_cslot(janet_wrap_nil());
5537
0
            case JANET_BINDING_DEF:
5538
0
            case JANET_BINDING_MACRO: /* Macro should function like defs when not in calling pos */
5539
0
                ret = janetc_cslot(binding.value);
5540
0
                break;
5541
0
            case JANET_BINDING_DYNAMIC_DEF:
5542
0
            case JANET_BINDING_DYNAMIC_MACRO:
5543
0
                ret = janetc_cslot(binding.value);
5544
0
                ret.flags |= JANET_SLOT_REF | JANET_SLOT_NAMED | JANET_SLOTTYPE_ANY;
5545
0
                ret.flags &= ~JANET_SLOT_CONSTANT;
5546
0
                break;
5547
0
            case JANET_BINDING_VAR: {
5548
0
                ret = janetc_cslot(binding.value);
5549
0
                ret.flags |= JANET_SLOT_REF | JANET_SLOT_NAMED | JANET_SLOT_MUTABLE | JANET_SLOTTYPE_ANY;
5550
0
                ret.flags &= ~JANET_SLOT_CONSTANT;
5551
0
                break;
5552
0
            }
5553
0
        }
5554
0
        JanetCompileLintLevel depLevel = JANET_C_LINT_RELAXED;
5555
0
        switch (binding.deprecation) {
5556
0
            case JANET_BINDING_DEP_NONE:
5557
0
                break;
5558
0
            case JANET_BINDING_DEP_RELAXED:
5559
0
                depLevel = JANET_C_LINT_RELAXED;
5560
0
                break;
5561
0
            case JANET_BINDING_DEP_NORMAL:
5562
0
                depLevel = JANET_C_LINT_NORMAL;
5563
0
                break;
5564
0
            case JANET_BINDING_DEP_STRICT:
5565
0
                depLevel = JANET_C_LINT_STRICT;
5566
0
                break;
5567
0
        }
5568
0
        if (binding.deprecation != JANET_BINDING_DEP_NONE) {
5569
0
            janetc_lintf(c, depLevel, "%q is deprecated", janet_wrap_symbol(sym));
5570
0
        }
5571
0
        return ret;
5572
0
    }
5573
5574
    /* Symbol was found */
5575
0
found:
5576
5577
    /* Constants can be returned immediately (they are stateless) */
5578
0
    if (ret.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF))
5579
0
        return ret;
5580
5581
    /* Unused references and locals shouldn't add captured envs. */
5582
0
    if (unused || foundlocal) {
5583
0
        ret.envindex = -1;
5584
0
        return ret;
5585
0
    }
5586
5587
    /* non-local scope needs to expose its environment */
5588
0
    JanetScope *original_scope = scope;
5589
0
    pair->keep = 1;
5590
0
    while (scope && !(scope->flags & JANET_SCOPE_FUNCTION))
5591
0
        scope = scope->parent;
5592
0
    janet_assert(scope, "invalid scopes");
5593
0
    scope->flags |= JANET_SCOPE_ENV;
5594
5595
    /* In the function scope, allocate the slot as an upvalue */
5596
0
    janetc_regalloc_touch(&scope->ua, ret.index);
5597
5598
    /* Iterate through child scopes and make sure environment is propagated */
5599
0
    scope = scope->child;
5600
5601
    /* Propagate env up to current scope */
5602
0
    int32_t envindex = -1;
5603
0
    while (scope) {
5604
0
        if (scope->flags & JANET_SCOPE_FUNCTION) {
5605
0
            int32_t j, len;
5606
0
            int scopefound = 0;
5607
            /* Check if scope already has env. If so, break */
5608
0
            len = janet_v_count(scope->envs);
5609
0
            for (j = 0; j < len; j++) {
5610
0
                if (scope->envs[j].envindex == envindex) {
5611
0
                    scopefound = 1;
5612
0
                    envindex = j;
5613
0
                    break;
5614
0
                }
5615
0
            }
5616
            /* Add the environment if it is not already referenced */
5617
0
            if (!scopefound) {
5618
0
                len = janet_v_count(scope->envs);
5619
0
                JanetEnvRef ref;
5620
0
                ref.envindex = envindex;
5621
0
                ref.scope = original_scope;
5622
0
                janet_v_push(scope->envs, ref);
5623
0
                envindex = len;
5624
0
            }
5625
0
        }
5626
0
        scope = scope->child;
5627
0
    }
5628
5629
0
    ret.envindex = envindex;
5630
0
    return ret;
5631
0
}
5632
5633
/* Generate the return instruction for a slot. */
5634
0
JanetSlot janetc_return(JanetCompiler *c, JanetSlot s) {
5635
0
    if (!(s.flags & JANET_SLOT_RETURNED)) {
5636
0
        if (s.flags & JANET_SLOT_CONSTANT && janet_checktype(s.constant, JANET_NIL))
5637
0
            janetc_emit(c, JOP_RETURN_NIL);
5638
0
        else
5639
0
            janetc_emit_s(c, JOP_RETURN, s, 0);
5640
0
        s.flags |= JANET_SLOT_RETURNED;
5641
0
    }
5642
0
    return s;
5643
0
}
5644
5645
/* Get a target slot for emitting an instruction. */
5646
0
JanetSlot janetc_gettarget(JanetFopts opts) {
5647
0
    JanetSlot slot;
5648
0
    if ((opts.flags & JANET_FOPTS_HINT) &&
5649
0
            (opts.hint.envindex < 0) &&
5650
0
            (opts.hint.index >= 0 && opts.hint.index <= 0xFF)) {
5651
0
        slot = opts.hint;
5652
0
    } else {
5653
0
        slot.envindex = -1;
5654
0
        slot.constant = janet_wrap_nil();
5655
0
        slot.flags = 0;
5656
0
        slot.index = janetc_allocfar(opts.compiler);
5657
0
    }
5658
0
    return slot;
5659
0
}
5660
5661
/* Get a bunch of slots for function arguments */
5662
0
JanetSlot *janetc_toslots(JanetCompiler *c, const Janet *vals, int32_t len) {
5663
0
    int32_t i;
5664
0
    JanetSlot *ret = NULL;
5665
0
    JanetFopts subopts = janetc_fopts_default(c);
5666
0
    subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
5667
0
    for (i = 0; i < len; i++) {
5668
0
        janet_v_push(ret, janetc_value(subopts, vals[i]));
5669
0
    }
5670
0
    return ret;
5671
0
}
5672
5673
/* Get a bunch of slots for function arguments */
5674
0
JanetSlot *janetc_toslotskv(JanetCompiler *c, Janet ds) {
5675
0
    JanetSlot *ret = NULL;
5676
0
    JanetFopts subopts = janetc_fopts_default(c);
5677
0
    subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
5678
0
    const JanetKV *kvs = NULL;
5679
0
    int32_t cap = 0, len = 0;
5680
0
    janet_dictionary_view(ds, &kvs, &len, &cap);
5681
0
    for (int32_t i = 0; i < cap; i++) {
5682
0
        if (janet_checktype(kvs[i].key, JANET_NIL)) continue;
5683
0
        janet_v_push(ret, janetc_value(subopts, kvs[i].key));
5684
0
        janet_v_push(ret, janetc_value(subopts, kvs[i].value));
5685
0
    }
5686
0
    return ret;
5687
0
}
5688
5689
/* Push slots loaded via janetc_toslots. Return the minimum number of slots pushed,
5690
 * or -1 - min_arity if there is a splice. (if there is no splice, min_arity is also
5691
 * the maximum possible arity). */
5692
0
int32_t janetc_pushslots(JanetCompiler *c, JanetSlot *slots) {
5693
0
    int32_t i;
5694
0
    int32_t count = janet_v_count(slots);
5695
0
    int32_t min_arity = 0;
5696
0
    int has_splice = 0;
5697
0
    for (i = 0; i < count;) {
5698
0
        if (slots[i].flags & JANET_SLOT_SPLICED) {
5699
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i], 0);
5700
0
            i++;
5701
0
            has_splice = 1;
5702
0
        } else if (i + 1 == count) {
5703
0
            janetc_emit_s(c, JOP_PUSH, slots[i], 0);
5704
0
            i++;
5705
0
            min_arity++;
5706
0
        } else if (slots[i + 1].flags & JANET_SLOT_SPLICED) {
5707
0
            janetc_emit_s(c, JOP_PUSH, slots[i], 0);
5708
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i + 1], 0);
5709
0
            i += 2;
5710
0
            min_arity++;
5711
0
            has_splice = 1;
5712
0
        } else if (i + 2 == count) {
5713
0
            janetc_emit_ss(c, JOP_PUSH_2, slots[i], slots[i + 1], 0);
5714
0
            i += 2;
5715
0
            min_arity += 2;
5716
0
        } else if (slots[i + 2].flags & JANET_SLOT_SPLICED) {
5717
0
            janetc_emit_ss(c, JOP_PUSH_2, slots[i], slots[i + 1], 0);
5718
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i + 2], 0);
5719
0
            i += 3;
5720
0
            min_arity += 2;
5721
0
            has_splice = 1;
5722
0
        } else {
5723
0
            janetc_emit_sss(c, JOP_PUSH_3, slots[i], slots[i + 1], slots[i + 2], 0);
5724
0
            i += 3;
5725
0
            min_arity += 3;
5726
0
        }
5727
0
    }
5728
0
    return has_splice ? (-1 - min_arity) : min_arity;
5729
0
}
5730
5731
/* Check if a list of slots has any spliced slots */
5732
0
static int has_spliced(JanetSlot *slots) {
5733
0
    int32_t i;
5734
0
    for (i = 0; i < janet_v_count(slots); i++) {
5735
0
        if (slots[i].flags & JANET_SLOT_SPLICED)
5736
0
            return 1;
5737
0
    }
5738
0
    return 0;
5739
0
}
5740
5741
/* Free slots loaded via janetc_toslots */
5742
0
void janetc_freeslots(JanetCompiler *c, JanetSlot *slots) {
5743
0
    int32_t i;
5744
0
    for (i = 0; i < janet_v_count(slots); i++) {
5745
0
        janetc_freeslot(c, slots[i]);
5746
0
    }
5747
0
    janet_v_free(slots);
5748
0
}
5749
5750
/* Compile some code that will be thrown away. Used to ensure
5751
 * that dead code is well formed without including it in the final
5752
 * bytecode. */
5753
0
void janetc_throwaway(JanetFopts opts, Janet x) {
5754
0
    JanetCompiler *c = opts.compiler;
5755
0
    JanetScope unusedScope;
5756
0
    int32_t bufstart = janet_v_count(c->buffer);
5757
0
    int32_t mapbufstart = janet_v_count(c->mapbuffer);
5758
0
    janetc_scope(&unusedScope, c, JANET_SCOPE_UNUSED, "unusued");
5759
0
    janetc_value(opts, x);
5760
0
    janetc_lintf(c, JANET_C_LINT_STRICT, "dead code, consider removing %.2q", x);
5761
0
    janetc_popscope(c);
5762
0
    if (c->buffer) {
5763
0
        janet_v__cnt(c->buffer) = bufstart;
5764
0
        if (c->mapbuffer)
5765
0
            janet_v__cnt(c->mapbuffer) = mapbufstart;
5766
0
    }
5767
0
}
5768
5769
/* Compile a call or tailcall instruction */
5770
0
static JanetSlot janetc_call(JanetFopts opts, JanetSlot *slots, JanetSlot fun) {
5771
0
    JanetSlot retslot;
5772
0
    JanetCompiler *c = opts.compiler;
5773
0
    int specialized = 0;
5774
0
    if (fun.flags & JANET_SLOT_CONSTANT && !has_spliced(slots)) {
5775
0
        if (janet_checktype(fun.constant, JANET_FUNCTION)) {
5776
0
            JanetFunction *f = janet_unwrap_function(fun.constant);
5777
0
            const JanetFunOptimizer *o = janetc_funopt(f->def->flags);
5778
0
            if (o && (!o->can_optimize || o->can_optimize(opts, slots))) {
5779
0
                specialized = 1;
5780
0
                retslot = o->optimize(opts, slots);
5781
0
            }
5782
0
        }
5783
        /* TODO janet function inlining (no c functions)*/
5784
0
    }
5785
0
    if (!specialized) {
5786
0
        int32_t min_arity = janetc_pushslots(c, slots);
5787
        /* Check for provably incorrect function calls */
5788
0
        if (fun.flags & JANET_SLOT_CONSTANT) {
5789
5790
            /* Check for bad arity type if fun is a constant */
5791
0
            switch (janet_type(fun.constant)) {
5792
0
                case JANET_FUNCTION: {
5793
0
                    JanetFunction *f = janet_unwrap_function(fun.constant);
5794
0
                    int32_t min = f->def->min_arity;
5795
0
                    int32_t max = f->def->max_arity;
5796
0
                    if (min_arity < 0) {
5797
                        /* Call has splices */
5798
0
                        min_arity = -1 - min_arity;
5799
0
                        if (min_arity > max && max >= 0) {
5800
0
                            const uint8_t *es = janet_formatc(
5801
0
                                                    "%v expects at most %d argument%s, got at least %d",
5802
0
                                                    fun.constant, max, max == 1 ? "" : "s", min_arity);
5803
0
                            janetc_error(c, es);
5804
0
                        }
5805
0
                    } else {
5806
                        /* Call has no splices */
5807
0
                        if (min_arity > max && max >= 0) {
5808
0
                            const uint8_t *es = janet_formatc(
5809
0
                                                    "%v expects at most %d argument%s, got %d",
5810
0
                                                    fun.constant, max, max == 1 ? "" : "s", min_arity);
5811
0
                            janetc_error(c, es);
5812
0
                        }
5813
0
                        if (min_arity < min) {
5814
0
                            const uint8_t *es = janet_formatc(
5815
0
                                                    "%v expects at least %d argument%s, got %d",
5816
0
                                                    fun.constant, min, min == 1 ? "" : "s", min_arity);
5817
0
                            janetc_error(c, es);
5818
0
                        }
5819
0
                    }
5820
0
                }
5821
0
                break;
5822
0
                case JANET_CFUNCTION:
5823
0
                case JANET_ABSTRACT:
5824
0
                case JANET_NIL:
5825
0
                    break;
5826
0
                case JANET_KEYWORD:
5827
0
                    if (min_arity == 0) {
5828
0
                        const uint8_t *es = janet_formatc("%v expects at least 1 argument, got 0",
5829
0
                                                          fun.constant);
5830
0
                        janetc_error(c, es);
5831
0
                    }
5832
0
                    break;
5833
0
                default:
5834
0
                    if (min_arity > 1 || min_arity == 0) {
5835
0
                        const uint8_t *es = janet_formatc("%v expects 1 argument, got %d",
5836
0
                                                          fun.constant, min_arity);
5837
0
                        janetc_error(c, es);
5838
0
                    }
5839
0
                    if (min_arity < -2) {
5840
0
                        const uint8_t *es = janet_formatc("%v expects 1 argument, got at least %d",
5841
0
                                                          fun.constant, -1 - min_arity);
5842
0
                        janetc_error(c, es);
5843
0
                    }
5844
0
                    break;
5845
0
            }
5846
0
        }
5847
5848
0
        if ((opts.flags & JANET_FOPTS_TAIL) &&
5849
                /* Prevent top level tail calls for better errors */
5850
0
                !(c->scope->flags & JANET_SCOPE_TOP)) {
5851
0
            janetc_emit_s(c, JOP_TAILCALL, fun, 0);
5852
0
            retslot = janetc_cslot(janet_wrap_nil());
5853
0
            retslot.flags = JANET_SLOT_RETURNED;
5854
0
        } else {
5855
0
            retslot = janetc_gettarget(opts);
5856
0
            janetc_emit_ss(c, JOP_CALL, retslot, fun, 1);
5857
0
        }
5858
0
    }
5859
0
    janetc_freeslots(c, slots);
5860
0
    return retslot;
5861
0
}
5862
5863
0
static JanetSlot janetc_maker(JanetFopts opts, JanetSlot *slots, int op) {
5864
0
    JanetCompiler *c = opts.compiler;
5865
0
    JanetSlot retslot;
5866
5867
    /* Check if this structure is composed entirely of constants */
5868
0
    int can_inline = 1;
5869
0
    for (int32_t i = 0; i < janet_v_count(slots); i++) {
5870
0
        if (!(slots[i].flags & JANET_SLOT_CONSTANT) ||
5871
0
                (slots[i].flags & JANET_SLOT_SPLICED)) {
5872
0
            can_inline = 0;
5873
0
            break;
5874
0
        }
5875
0
    }
5876
5877
0
    if (can_inline && (op == JOP_MAKE_STRUCT)) {
5878
0
        JanetKV *st = janet_struct_begin(janet_v_count(slots) / 2);
5879
0
        for (int32_t i = 0; i < janet_v_count(slots); i += 2) {
5880
0
            Janet k = slots[i].constant;
5881
0
            Janet v = slots[i + 1].constant;
5882
0
            janet_struct_put(st, k, v);
5883
0
        }
5884
0
        retslot = janetc_cslot(janet_wrap_struct(janet_struct_end(st)));
5885
0
        janetc_freeslots(c, slots);
5886
0
    } else if (can_inline && (op == JOP_MAKE_TUPLE)) {
5887
0
        Janet *tup = janet_tuple_begin(janet_v_count(slots));
5888
0
        for (int32_t i = 0; i < janet_v_count(slots); i++) {
5889
0
            tup[i] = slots[i].constant;
5890
0
        }
5891
0
        retslot = janetc_cslot(janet_wrap_tuple(janet_tuple_end(tup)));
5892
0
        janetc_freeslots(c, slots);
5893
0
    } else {
5894
0
        janetc_pushslots(c, slots);
5895
0
        janetc_freeslots(c, slots);
5896
0
        retslot = janetc_gettarget(opts);
5897
0
        janetc_emit_s(c, op, retslot, 1);
5898
0
    }
5899
5900
0
    return retslot;
5901
0
}
5902
5903
0
static JanetSlot janetc_array(JanetFopts opts, Janet x) {
5904
0
    JanetCompiler *c = opts.compiler;
5905
0
    JanetArray *a = janet_unwrap_array(x);
5906
0
    return janetc_maker(opts,
5907
0
                        janetc_toslots(c, a->data, a->count),
5908
0
                        JOP_MAKE_ARRAY);
5909
0
}
5910
5911
0
static JanetSlot janetc_tuple(JanetFopts opts, Janet x) {
5912
0
    JanetCompiler *c = opts.compiler;
5913
0
    const Janet *t = janet_unwrap_tuple(x);
5914
0
    return janetc_maker(opts,
5915
0
                        janetc_toslots(c, t, janet_tuple_length(t)),
5916
0
                        JOP_MAKE_TUPLE);
5917
0
}
5918
5919
0
static JanetSlot janetc_tablector(JanetFopts opts, Janet x, int op) {
5920
0
    JanetCompiler *c = opts.compiler;
5921
0
    return janetc_maker(opts,
5922
0
                        janetc_toslotskv(c, x),
5923
0
                        op);
5924
0
}
5925
5926
0
static JanetSlot janetc_bufferctor(JanetFopts opts, Janet x) {
5927
0
    JanetCompiler *c = opts.compiler;
5928
0
    JanetBuffer *b = janet_unwrap_buffer(x);
5929
0
    Janet onearg = janet_stringv(b->data, b->count);
5930
0
    return janetc_maker(opts,
5931
0
                        janetc_toslots(c, &onearg, 1),
5932
0
                        JOP_MAKE_BUFFER);
5933
0
}
5934
5935
/* Expand a macro one time. Also get the special form compiler if we
5936
 * find that instead. */
5937
static int macroexpand1(
5938
    JanetCompiler *c,
5939
    Janet x,
5940
    Janet *out,
5941
0
    const JanetSpecial **spec) {
5942
0
    if (!janet_checktype(x, JANET_TUPLE))
5943
0
        return 0;
5944
0
    const Janet *form = janet_unwrap_tuple(x);
5945
0
    if (janet_tuple_length(form) == 0)
5946
0
        return 0;
5947
    /* Source map - only set when we get a tuple */
5948
0
    if (janet_tuple_sm_line(form) >= 0) {
5949
0
        c->current_mapping.line = janet_tuple_sm_line(form);
5950
0
        c->current_mapping.column = janet_tuple_sm_column(form);
5951
0
    }
5952
    /* Bracketed tuples are not specials or macros! */
5953
0
    if (janet_tuple_flag(form) & JANET_TUPLE_FLAG_BRACKETCTOR)
5954
0
        return 0;
5955
0
    if (!janet_checktype(form[0], JANET_SYMBOL))
5956
0
        return 0;
5957
0
    const uint8_t *name = janet_unwrap_symbol(form[0]);
5958
0
    const JanetSpecial *s = janetc_special(name);
5959
0
    if (s) {
5960
0
        *spec = s;
5961
0
        return 0;
5962
0
    }
5963
0
    Janet macroval;
5964
0
    JanetBindingType btype = janet_resolve(c->env, name, &macroval);
5965
0
    if (!(btype == JANET_BINDING_MACRO || btype == JANET_BINDING_DYNAMIC_MACRO) ||
5966
0
            !janet_checktype(macroval, JANET_FUNCTION))
5967
0
        return 0;
5968
5969
    /* Evaluate macro */
5970
0
    JanetFunction *macro = janet_unwrap_function(macroval);
5971
0
    int32_t arity = janet_tuple_length(form) - 1;
5972
0
    JanetFiber *fiberp = janet_fiber(macro, 64, arity, form + 1);
5973
0
    if (NULL == fiberp) {
5974
0
        int32_t minar = macro->def->min_arity;
5975
0
        int32_t maxar = macro->def->max_arity;
5976
0
        const uint8_t *es = NULL;
5977
0
        if (minar >= 0 && arity < minar)
5978
0
            es = janet_formatc("macro arity mismatch, expected at least %d, got %d", minar, arity);
5979
0
        if (maxar >= 0 && arity > maxar)
5980
0
            es = janet_formatc("macro arity mismatch, expected at most %d, got %d", maxar, arity);
5981
0
        c->result.macrofiber = NULL;
5982
0
        janetc_error(c, es);
5983
0
        return 0;
5984
0
    }
5985
    /* Set env */
5986
0
    fiberp->env = c->env;
5987
0
    int lock = janet_gclock();
5988
0
    Janet mf_kw = janet_ckeywordv("macro-form");
5989
0
    janet_table_put(c->env, mf_kw, x);
5990
0
    Janet ml_kw = janet_ckeywordv("macro-lints");
5991
0
    if (c->lints) {
5992
0
        janet_table_put(c->env, ml_kw, janet_wrap_array(c->lints));
5993
0
    }
5994
0
    Janet tempOut;
5995
0
    JanetSignal status = janet_continue(fiberp, janet_wrap_nil(), &tempOut);
5996
0
    janet_table_put(c->env, mf_kw, janet_wrap_nil());
5997
0
    janet_table_put(c->env, ml_kw, janet_wrap_nil());
5998
0
    janet_gcunlock(lock);
5999
0
    if (status != JANET_SIGNAL_OK) {
6000
0
        const uint8_t *es = janet_formatc("(macro) %V", tempOut);
6001
0
        c->result.macrofiber = fiberp;
6002
0
        janetc_error(c, es);
6003
0
        return 0;
6004
0
    } else {
6005
0
        *out = tempOut;
6006
0
    }
6007
6008
0
    return 1;
6009
0
}
6010
6011
/* Compile a single value */
6012
0
JanetSlot janetc_value(JanetFopts opts, Janet x) {
6013
0
    JanetSlot ret;
6014
0
    JanetCompiler *c = opts.compiler;
6015
0
    JanetSourceMapping last_mapping = c->current_mapping;
6016
0
    c->recursion_guard--;
6017
6018
    /* Guard against previous errors and unbounded recursion */
6019
0
    if (c->result.status == JANET_COMPILE_ERROR) return janetc_cslot(janet_wrap_nil());
6020
0
    if (c->recursion_guard <= 0) {
6021
0
        janetc_cerror(c, "recursed too deeply");
6022
0
        return janetc_cslot(janet_wrap_nil());
6023
0
    }
6024
6025
    /* Macro expand. Also gets possible special form and
6026
     * refines source mapping cursor if possible. */
6027
0
    const JanetSpecial *spec = NULL;
6028
0
    int macroi = JANET_MAX_MACRO_EXPAND;
6029
0
    while (macroi &&
6030
0
            c->result.status != JANET_COMPILE_ERROR &&
6031
0
            macroexpand1(c, x, &x, &spec))
6032
0
        macroi--;
6033
0
    if (macroi == 0) {
6034
0
        janetc_cerror(c, "recursed too deeply in macro expansion");
6035
0
        return janetc_cslot(janet_wrap_nil());
6036
0
    }
6037
6038
    /* Special forms */
6039
0
    if (spec) {
6040
0
        const Janet *tup = janet_unwrap_tuple(x);
6041
0
        ret = spec->compile(opts, janet_tuple_length(tup) - 1, tup + 1);
6042
0
    } else {
6043
0
        switch (janet_type(x)) {
6044
0
            case JANET_TUPLE: {
6045
0
                JanetFopts subopts = janetc_fopts_default(c);
6046
0
                const Janet *tup = janet_unwrap_tuple(x);
6047
                /* Empty tuple is tuple literal */
6048
0
                if (janet_tuple_length(tup) == 0) {
6049
0
                    ret = janetc_cslot(janet_wrap_tuple(janet_tuple_n(NULL, 0)));
6050
0
                } else if (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR) { /* [] tuples are not function call */
6051
0
                    ret = janetc_tuple(opts, x);
6052
0
                } else {
6053
0
                    JanetSlot head = janetc_value(subopts, tup[0]);
6054
0
                    subopts.flags = JANET_FUNCTION | JANET_CFUNCTION;
6055
0
                    ret = janetc_call(opts, janetc_toslots(c, tup + 1, janet_tuple_length(tup) - 1), head);
6056
0
                    janetc_freeslot(c, head);
6057
0
                }
6058
0
                ret.flags &= ~JANET_SLOT_SPLICED;
6059
0
            }
6060
0
            break;
6061
0
            case JANET_SYMBOL:
6062
0
                ret = janetc_resolve(c, janet_unwrap_symbol(x));
6063
0
                break;
6064
0
            case JANET_ARRAY:
6065
0
                ret = janetc_array(opts, x);
6066
0
                break;
6067
0
            case JANET_STRUCT:
6068
0
                ret = janetc_tablector(opts, x, JOP_MAKE_STRUCT);
6069
0
                break;
6070
0
            case JANET_TABLE:
6071
0
                ret = janetc_tablector(opts, x, JOP_MAKE_TABLE);
6072
0
                break;
6073
0
            case JANET_BUFFER:
6074
0
                ret = janetc_bufferctor(opts, x);
6075
0
                break;
6076
0
            default:
6077
0
                ret = janetc_cslot(x);
6078
0
                break;
6079
0
        }
6080
0
    }
6081
6082
0
    if (c->result.status == JANET_COMPILE_ERROR)
6083
0
        return janetc_cslot(janet_wrap_nil());
6084
0
    if (opts.flags & JANET_FOPTS_TAIL)
6085
0
        ret = janetc_return(c, ret);
6086
0
    if (opts.flags & JANET_FOPTS_HINT) {
6087
0
        janetc_copy(c, opts.hint, ret);
6088
0
        ret = opts.hint;
6089
0
    }
6090
0
    c->current_mapping = last_mapping;
6091
0
    c->recursion_guard++;
6092
0
    return ret;
6093
0
}
6094
6095
/* Add function flags to janet functions */
6096
0
void janet_def_addflags(JanetFuncDef *def) {
6097
0
    int32_t set_flags = 0;
6098
0
    int32_t unset_flags = 0;
6099
    /* pos checks */
6100
0
    if (def->name)            set_flags |= JANET_FUNCDEF_FLAG_HASNAME;
6101
0
    if (def->source)          set_flags |= JANET_FUNCDEF_FLAG_HASSOURCE;
6102
0
    if (def->defs)            set_flags |= JANET_FUNCDEF_FLAG_HASDEFS;
6103
0
    if (def->environments)    set_flags |= JANET_FUNCDEF_FLAG_HASENVS;
6104
0
    if (def->sourcemap)       set_flags |= JANET_FUNCDEF_FLAG_HASSOURCEMAP;
6105
0
    if (def->closure_bitset)  set_flags |= JANET_FUNCDEF_FLAG_HASCLOBITSET;
6106
    /* negative checks */
6107
0
    if (!def->name)           unset_flags |= JANET_FUNCDEF_FLAG_HASNAME;
6108
0
    if (!def->source)         unset_flags |= JANET_FUNCDEF_FLAG_HASSOURCE;
6109
0
    if (!def->defs)           unset_flags |= JANET_FUNCDEF_FLAG_HASDEFS;
6110
0
    if (!def->environments)   unset_flags |= JANET_FUNCDEF_FLAG_HASENVS;
6111
0
    if (!def->sourcemap)      unset_flags |= JANET_FUNCDEF_FLAG_HASSOURCEMAP;
6112
0
    if (!def->closure_bitset) unset_flags |= JANET_FUNCDEF_FLAG_HASCLOBITSET;
6113
    /* Update flags */
6114
0
    def->flags |= set_flags;
6115
0
    def->flags &= ~unset_flags;
6116
0
}
6117
6118
/* Compile a funcdef */
6119
/* Once the various other settings of the FuncDef have been tweaked,
6120
 * call janet_def_addflags to set the proper flags for the funcdef */
6121
0
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c) {
6122
0
    JanetScope *scope = c->scope;
6123
0
    JanetFuncDef *def = janet_funcdef_alloc();
6124
0
    def->slotcount = scope->ra.max + 1;
6125
6126
0
    janet_assert(scope->flags & JANET_SCOPE_FUNCTION, "expected function scope");
6127
6128
    /* Copy envs */
6129
0
    def->environments_length = janet_v_count(scope->envs);
6130
0
    def->environments = janet_malloc(sizeof(int32_t) * def->environments_length);
6131
0
    for (int32_t i = 0; i < def->environments_length; i++) {
6132
0
        def->environments[i] = scope->envs[i].envindex;
6133
0
    }
6134
6135
0
    def->constants_length = janet_v_count(scope->consts);
6136
0
    def->constants = janet_v_flatten(scope->consts);
6137
6138
0
    def->defs_length = janet_v_count(scope->defs);
6139
0
    def->defs = janet_v_flatten(scope->defs);
6140
6141
    /* Copy bytecode (only last chunk) */
6142
0
    def->bytecode_length = janet_v_count(c->buffer) - scope->bytecode_start;
6143
0
    if (def->bytecode_length) {
6144
0
        size_t s = sizeof(int32_t) * (size_t) def->bytecode_length;
6145
0
        def->bytecode = janet_malloc(s);
6146
0
        if (NULL == def->bytecode) {
6147
0
            JANET_OUT_OF_MEMORY;
6148
0
        }
6149
0
        safe_memcpy(def->bytecode, c->buffer + scope->bytecode_start, s);
6150
0
        janet_v__cnt(c->buffer) = scope->bytecode_start;
6151
0
        if (NULL != c->mapbuffer && c->source) {
6152
0
            size_t s = sizeof(JanetSourceMapping) * (size_t) def->bytecode_length;
6153
0
            def->sourcemap = janet_malloc(s);
6154
0
            if (NULL == def->sourcemap) {
6155
0
                JANET_OUT_OF_MEMORY;
6156
0
            }
6157
0
            safe_memcpy(def->sourcemap, c->mapbuffer + scope->bytecode_start, s);
6158
0
            janet_v__cnt(c->mapbuffer) = scope->bytecode_start;
6159
0
        }
6160
0
    }
6161
6162
    /* Get source from parser */
6163
0
    def->source = c->source;
6164
6165
0
    def->arity = 0;
6166
0
    def->min_arity = 0;
6167
0
    def->flags = 0;
6168
0
    if (scope->flags & JANET_SCOPE_ENV) {
6169
0
        def->flags |= JANET_FUNCDEF_FLAG_NEEDSENV;
6170
0
    }
6171
6172
    /* Copy upvalue bitset */
6173
0
    if (scope->ua.count) {
6174
        /* Number of u32s we need to create a bitmask for all slots */
6175
0
        int32_t slotchunks = (def->slotcount + 31) >> 5;
6176
        /* numchunks is min of slotchunks and scope->ua.count */
6177
0
        int32_t numchunks = slotchunks > scope->ua.count ? scope->ua.count : slotchunks;
6178
0
        uint32_t *chunks = janet_calloc(slotchunks, sizeof(uint32_t));
6179
0
        if (NULL == chunks) {
6180
0
            JANET_OUT_OF_MEMORY;
6181
0
        }
6182
0
        memcpy(chunks, scope->ua.chunks, sizeof(uint32_t) * numchunks);
6183
        /* Register allocator preallocates some registers [240-255, high 16 bits of chunk index 7], we can ignore those. */
6184
0
        if (scope->ua.count > 7) chunks[7] &= 0xFFFFU;
6185
0
        def->closure_bitset = chunks;
6186
0
    }
6187
6188
    /* Capture symbol to local mapping */
6189
0
    JanetSymbolMap *locals = NULL;
6190
6191
    /* Symbol -> upvalue mapping */
6192
0
    JanetScope *top = c->scope;
6193
0
    while (top->parent) top = top->parent;
6194
0
    for (JanetScope *s = top; s != NULL; s = s->child) {
6195
0
        for (int32_t j = 0; j < janet_v_count(scope->envs); j++) {
6196
0
            JanetEnvRef ref = scope->envs[j];
6197
0
            JanetScope *upscope = ref.scope;
6198
0
            if (upscope != s) continue;
6199
0
            for (int32_t i = 0; i < janet_v_count(upscope->syms); i++) {
6200
0
                SymPair pair = upscope->syms[i];
6201
0
                if (pair.sym2) {
6202
0
                    JanetSymbolMap jsm;
6203
0
                    jsm.birth_pc = UINT32_MAX;
6204
0
                    jsm.death_pc = j;
6205
0
                    jsm.slot_index = pair.slot.index;
6206
0
                    jsm.symbol = pair.sym2;
6207
0
                    janet_v_push(locals, jsm);
6208
0
                }
6209
0
            }
6210
0
        }
6211
0
    }
6212
6213
    /* Symbol -> slot mapping */
6214
0
    for (int32_t i = 0; i < janet_v_count(scope->syms); i++) {
6215
0
        SymPair pair = scope->syms[i];
6216
0
        if (pair.sym2) {
6217
0
            JanetSymbolMap jsm;
6218
0
            if (pair.death_pc == UINT32_MAX) {
6219
0
                jsm.death_pc = def->bytecode_length;
6220
0
            } else {
6221
0
                jsm.death_pc = pair.death_pc - scope->bytecode_start;
6222
0
            }
6223
            /* Handle birth_pc == 0 correctly */
6224
0
            if ((uint32_t) scope->bytecode_start > pair.birth_pc) {
6225
0
                jsm.birth_pc = 0;
6226
0
            } else {
6227
0
                jsm.birth_pc = pair.birth_pc - scope->bytecode_start;
6228
0
            }
6229
0
            janet_assert(jsm.birth_pc <= jsm.death_pc, "birth pc after death pc");
6230
0
            janet_assert(jsm.birth_pc < (uint32_t) def->bytecode_length, "bad birth pc");
6231
0
            janet_assert(jsm.death_pc <= (uint32_t) def->bytecode_length, "bad death pc");
6232
0
            jsm.slot_index = pair.slot.index;
6233
0
            jsm.symbol = pair.sym2;
6234
0
            janet_v_push(locals, jsm);
6235
0
        }
6236
0
    }
6237
0
    def->symbolmap_length = janet_v_count(locals);
6238
0
    def->symbolmap = janet_v_flatten(locals);
6239
0
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;
6240
6241
    /* Pop the scope */
6242
0
    janetc_popscope(c);
6243
6244
    /* Do basic optimization */
6245
0
    janet_bytecode_movopt(def);
6246
0
    janet_bytecode_remove_noops(def);
6247
6248
0
    return def;
6249
0
}
6250
6251
/* Initialize a compiler */
6252
0
static void janetc_init(JanetCompiler *c, JanetTable *env, const uint8_t *where, JanetArray *lints) {
6253
0
    c->scope = NULL;
6254
0
    c->buffer = NULL;
6255
0
    c->mapbuffer = NULL;
6256
0
    c->recursion_guard = JANET_RECURSION_GUARD;
6257
0
    c->env = env;
6258
0
    c->source = where;
6259
0
    c->current_mapping.line = -1;
6260
0
    c->current_mapping.column = -1;
6261
0
    c->lints = lints;
6262
    /* Init result */
6263
0
    c->result.error = NULL;
6264
0
    c->result.status = JANET_COMPILE_OK;
6265
0
    c->result.funcdef = NULL;
6266
0
    c->result.macrofiber = NULL;
6267
0
    c->result.error_mapping.line = -1;
6268
0
    c->result.error_mapping.column = -1;
6269
0
}
6270
6271
/* Deinitialize a compiler struct */
6272
0
static void janetc_deinit(JanetCompiler *c) {
6273
0
    janet_v_free(c->buffer);
6274
0
    janet_v_free(c->mapbuffer);
6275
0
    c->env = NULL;
6276
0
}
6277
6278
/* Compile a form. */
6279
JanetCompileResult janet_compile_lint(Janet source,
6280
0
                                      JanetTable *env, const uint8_t *where, JanetArray *lints) {
6281
0
    JanetCompiler c;
6282
0
    JanetScope rootscope;
6283
0
    JanetFopts fopts;
6284
6285
0
    janetc_init(&c, env, where, lints);
6286
6287
    /* Push a function scope */
6288
0
    janetc_scope(&rootscope, &c, JANET_SCOPE_FUNCTION | JANET_SCOPE_TOP, "root");
6289
6290
    /* Set initial form options */
6291
0
    fopts.compiler = &c;
6292
0
    fopts.flags = JANET_FOPTS_TAIL | JANET_SLOTTYPE_ANY;
6293
0
    fopts.hint = janetc_cslot(janet_wrap_nil());
6294
6295
    /* Compile the value */
6296
0
    janetc_value(fopts, source);
6297
6298
0
    if (c.result.status == JANET_COMPILE_OK) {
6299
0
        JanetFuncDef *def = janetc_pop_funcdef(&c);
6300
0
        def->name = janet_cstring("thunk");
6301
0
        janet_def_addflags(def);
6302
0
        c.result.funcdef = def;
6303
0
    } else {
6304
0
        c.result.error_mapping = c.current_mapping;
6305
0
        janetc_popscope(&c);
6306
0
    }
6307
6308
0
    janetc_deinit(&c);
6309
6310
0
    return c.result;
6311
0
}
6312
6313
0
JanetCompileResult janet_compile(Janet source, JanetTable *env, const uint8_t *where) {
6314
0
    return janet_compile_lint(source, env, where, NULL);
6315
0
}
6316
6317
/* C Function for compiling */
6318
JANET_CORE_FN(cfun_compile,
6319
              "(compile ast &opt env source lints)",
6320
              "Compiles an Abstract Syntax Tree (ast) into a function. "
6321
              "Pair the compile function with parsing functionality to implement "
6322
              "eval. Returns a new function and does not modify ast. Returns an error "
6323
              "struct with keys :line, :column, and :error if compilation fails. "
6324
              "If a `lints` array is given, linting messages will be appended to the array. "
6325
0
              "Each message will be a tuple of the form `(level line col message)`.") {
6326
0
    janet_arity(argc, 1, 4);
6327
0
    JanetTable *env = (argc > 1 && !janet_checktype(argv[1], JANET_NIL))
6328
0
                      ? janet_gettable(argv, 1) : janet_vm.fiber->env;
6329
0
    if (NULL == env) {
6330
0
        env = janet_table(0);
6331
0
        janet_vm.fiber->env = env;
6332
0
    }
6333
0
    const uint8_t *source = NULL;
6334
0
    if (argc >= 3) {
6335
0
        Janet x = argv[2];
6336
0
        if (janet_checktype(x, JANET_STRING)) {
6337
0
            source = janet_unwrap_string(x);
6338
0
        } else if (janet_checktype(x, JANET_KEYWORD)) {
6339
0
            source = janet_unwrap_keyword(x);
6340
0
        } else if (!janet_checktype(x, JANET_NIL)) {
6341
0
            janet_panic_type(x, 2, JANET_TFLAG_STRING | JANET_TFLAG_KEYWORD);
6342
0
        }
6343
0
    }
6344
0
    JanetArray *lints = (argc >= 4 && !janet_checktype(argv[3], JANET_NIL))
6345
0
                        ? janet_getarray(argv, 3) : NULL;
6346
0
    JanetCompileResult res = janet_compile_lint(argv[0], env, source, lints);
6347
0
    if (res.status == JANET_COMPILE_OK) {
6348
0
        return janet_wrap_function(janet_thunk(res.funcdef));
6349
0
    } else {
6350
0
        JanetTable *t = janet_table(4);
6351
0
        janet_table_put(t, janet_ckeywordv("error"), janet_wrap_string(res.error));
6352
0
        if (res.error_mapping.line > 0) {
6353
0
            janet_table_put(t, janet_ckeywordv("line"), janet_wrap_integer(res.error_mapping.line));
6354
0
        }
6355
0
        if (res.error_mapping.column > 0) {
6356
0
            janet_table_put(t, janet_ckeywordv("column"), janet_wrap_integer(res.error_mapping.column));
6357
0
        }
6358
0
        if (res.macrofiber) {
6359
0
            janet_table_put(t, janet_ckeywordv("fiber"), janet_wrap_fiber(res.macrofiber));
6360
0
        }
6361
0
        return janet_wrap_table(t);
6362
0
    }
6363
0
}
6364
6365
0
void janet_lib_compile(JanetTable *env) {
6366
0
    JanetRegExt cfuns[] = {
6367
0
        JANET_CORE_REG("compile", cfun_compile),
6368
0
        JANET_REG_END
6369
0
    };
6370
0
    janet_core_cfuns_ext(env, NULL, cfuns);
6371
0
}
6372
6373
6374
/* src/core/corelib.c */
6375
#line 0 "src/core/corelib.c"
6376
6377
/*
6378
* Copyright (c) 2025 Calvin Rose
6379
*
6380
* Permission is hereby granted, free of charge, to any person obtaining a copy
6381
* of this software and associated documentation files (the "Software"), to
6382
* deal in the Software without restriction, including without limitation the
6383
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6384
* sell copies of the Software, and to permit persons to whom the Software is
6385
* furnished to do so, subject to the following conditions:
6386
*
6387
* The above copyright notice and this permission notice shall be included in
6388
* all copies or substantial portions of the Software.
6389
*
6390
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6391
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
6392
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
6393
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
6394
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6395
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
6396
* IN THE SOFTWARE.
6397
*/
6398
6399
#ifndef JANET_AMALG
6400
#include "features.h"
6401
#include <janet.h>
6402
#include <math.h>
6403
#include "compile.h"
6404
#include "state.h"
6405
#include "util.h"
6406
#endif
6407
6408
/* Generated bytes */
6409
#ifndef JANET_BOOTSTRAP
6410
extern const unsigned char *janet_core_image;
6411
extern size_t janet_core_image_size;
6412
#endif
6413
6414
/* Docstrings should only exist during bootstrap */
6415
#ifdef JANET_BOOTSTRAP
6416
#define JDOC(x) (x)
6417
#else
6418
#define JDOC(x) NULL
6419
#endif
6420
6421
0
JanetModule janet_native(const char *name, const uint8_t **error) {
6422
0
    janet_sandbox_assert(JANET_SANDBOX_DYNAMIC_MODULES);
6423
0
    char *processed_name = get_processed_name(name);
6424
0
    Clib lib = load_clib(processed_name);
6425
0
    JanetModule init;
6426
0
    JanetModconf getter;
6427
0
    if (name != processed_name) janet_free(processed_name);
6428
0
    if (!lib) {
6429
0
        *error = janet_cstring(error_clib());
6430
0
        return NULL;
6431
0
    }
6432
0
    init = (JanetModule) symbol_clib(lib, "_janet_init");
6433
0
    if (!init) {
6434
0
        *error = janet_cstring("could not find the _janet_init symbol");
6435
0
        return NULL;
6436
0
    }
6437
0
    getter = (JanetModconf) symbol_clib(lib, "_janet_mod_config");
6438
0
    if (!getter) {
6439
0
        *error = janet_cstring("could not find the _janet_mod_config symbol");
6440
0
        return NULL;
6441
0
    }
6442
0
    JanetBuildConfig modconf = getter();
6443
0
    JanetBuildConfig host = janet_config_current();
6444
0
    if (host.major != modconf.major ||
6445
0
            host.minor < modconf.minor ||
6446
0
            host.bits != modconf.bits) {
6447
0
        char errbuf[128];
6448
0
        snprintf(errbuf, sizeof(errbuf), "config mismatch - host %d.%.d.%d(%.4x) vs. module %d.%d.%d(%.4x)",
6449
0
                 host.major,
6450
0
                 host.minor,
6451
0
                 host.patch,
6452
0
                 host.bits,
6453
0
                 modconf.major,
6454
0
                 modconf.minor,
6455
0
                 modconf.patch,
6456
0
                 modconf.bits);
6457
0
        *error = janet_cstring(errbuf);
6458
0
        return NULL;
6459
0
    }
6460
0
    return init;
6461
0
}
6462
6463
0
static const char *janet_dyncstring(const char *name, const char *dflt) {
6464
0
    Janet x = janet_dyn(name);
6465
0
    if (janet_checktype(x, JANET_NIL)) return dflt;
6466
0
    if (!janet_checktype(x, JANET_STRING)) {
6467
0
        janet_panicf("expected string, got %v", x);
6468
0
    }
6469
0
    const uint8_t *jstr = janet_unwrap_string(x);
6470
0
    const char *cstr = (const char *)jstr;
6471
0
    if (strlen(cstr) != (size_t) janet_string_length(jstr)) {
6472
0
        janet_panicf("string %v contains embedded 0s", x);
6473
0
    }
6474
0
    return cstr;
6475
0
}
6476
6477
0
static int is_path_sep(char c) {
6478
#ifdef JANET_WINDOWS
6479
    if (c == '\\') return 1;
6480
#endif
6481
0
    return c == '/';
6482
0
}
6483
6484
/* Used for module system. */
6485
JANET_CORE_FN(janet_core_expand_path,
6486
              "(module/expand-path path template)",
6487
              "Expands a path template as found in `module/paths` for `module/find`. "
6488
              "This takes in a path (the argument to require) and a template string, "
6489
              "to expand the path to a path that can be used for importing files. "
6490
              "The replacements are as follows:\n\n"
6491
              "* :all: -- the value of path verbatim.\n\n"
6492
              "* :@all: -- Same as :all:, but if `path` starts with the @ character, "
6493
              "the first path segment is replaced with a dynamic binding "
6494
              "`(dyn <first path segment as keyword>)`.\n\n"
6495
              "* :cur: -- the directory portion, if any, of (dyn :current-file)\n\n"
6496
              "* :dir: -- the directory portion, if any, of the path argument\n\n"
6497
              "* :name: -- the name component of path, with extension if given\n\n"
6498
              "* :native: -- the extension used to load natives, .so or .dll\n\n"
6499
0
              "* :sys: -- the system path, or (dyn :syspath)") {
6500
0
    janet_fixarity(argc, 2);
6501
0
    const char *input = janet_getcstring(argv, 0);
6502
0
    const char *template = janet_getcstring(argv, 1);
6503
0
    const char *curfile = janet_dyncstring("current-file", "");
6504
0
    const char *syspath = janet_dyncstring("syspath", "");
6505
0
    JanetBuffer *out = janet_buffer(0);
6506
0
    size_t tlen = strlen(template);
6507
6508
    /* Calculate name */
6509
0
    const char *name = input + strlen(input);
6510
0
    while (name > input) {
6511
0
        if (is_path_sep(*(name - 1))) break;
6512
0
        name--;
6513
0
    }
6514
6515
    /* Calculate dirpath from current file */
6516
0
    const char *curname = curfile + strlen(curfile);
6517
0
    while (curname > curfile) {
6518
0
        if (is_path_sep(*curname)) break;
6519
0
        curname--;
6520
0
    }
6521
0
    const char *curdir;
6522
0
    int32_t curlen;
6523
0
    if (curname == curfile) {
6524
        /* Current file has one or zero path segments, so
6525
         * we are in the . directory. */
6526
0
        curdir = ".";
6527
0
        curlen = 1;
6528
0
    } else {
6529
        /* Current file has 2 or more segments, so we
6530
         * can cut off the last segment. */
6531
0
        curdir = curfile;
6532
0
        curlen = (int32_t)(curname - curfile);
6533
0
    }
6534
6535
0
    for (size_t i = 0; i < tlen; i++) {
6536
0
        if (template[i] == ':') {
6537
0
            if (strncmp(template + i, ":all:", 5) == 0) {
6538
0
                janet_buffer_push_cstring(out, input);
6539
0
                i += 4;
6540
0
            } else if (strncmp(template + i, ":@all:", 6) == 0) {
6541
0
                if (input[0] == '@') {
6542
0
                    const char *p = input;
6543
0
                    while (*p && !is_path_sep(*p)) p++;
6544
0
                    size_t len = p - input - 1;
6545
0
                    char *str = janet_smalloc(len + 1);
6546
0
                    memcpy(str, input + 1, len);
6547
0
                    str[len] = '\0';
6548
0
                    janet_formatb(out, "%V", janet_dyn(str));
6549
0
                    janet_sfree(str);
6550
0
                    janet_buffer_push_cstring(out, p);
6551
0
                } else {
6552
0
                    janet_buffer_push_cstring(out, input);
6553
0
                }
6554
0
                i += 5;
6555
0
            } else if (strncmp(template + i, ":cur:", 5) == 0) {
6556
0
                janet_buffer_push_bytes(out, (const uint8_t *)curdir, curlen);
6557
0
                i += 4;
6558
0
            } else if (strncmp(template + i, ":dir:", 5) == 0) {
6559
0
                janet_buffer_push_bytes(out, (const uint8_t *)input,
6560
0
                                        (int32_t)(name - input));
6561
0
                i += 4;
6562
0
            } else if (strncmp(template + i, ":sys:", 5) == 0) {
6563
0
                janet_buffer_push_cstring(out, syspath);
6564
0
                i += 4;
6565
0
            } else if (strncmp(template + i, ":name:", 6) == 0) {
6566
0
                janet_buffer_push_cstring(out, name);
6567
0
                i += 5;
6568
0
            } else if (strncmp(template + i, ":native:", 8) == 0) {
6569
#ifdef JANET_WINDOWS
6570
                janet_buffer_push_cstring(out, ".dll");
6571
#else
6572
0
                janet_buffer_push_cstring(out, ".so");
6573
0
#endif
6574
0
                i += 7;
6575
0
            } else {
6576
0
                janet_buffer_push_u8(out, (uint8_t) template[i]);
6577
0
            }
6578
0
        } else {
6579
0
            janet_buffer_push_u8(out, (uint8_t) template[i]);
6580
0
        }
6581
0
    }
6582
6583
    /* Normalize */
6584
0
    uint8_t *scan = out->data;
6585
0
    uint8_t *print = scan;
6586
0
    uint8_t *scanend = scan + out->count;
6587
0
    int normal_section_count = 0;
6588
0
    int dot_count = 0;
6589
0
    while (scan < scanend) {
6590
0
        if (*scan == '.') {
6591
0
            if (dot_count >= 0) {
6592
0
                dot_count++;
6593
0
            } else {
6594
0
                *print++ = '.';
6595
0
            }
6596
0
        } else if (is_path_sep(*scan)) {
6597
0
            if (dot_count == 1) {
6598
0
                ;
6599
0
            } else if (dot_count == 2) {
6600
0
                if (normal_section_count > 0) {
6601
                    /* unprint last separator */
6602
0
                    print--;
6603
                    /* unprint last section */
6604
0
                    while (print > out->data && !is_path_sep(*(print - 1)))
6605
0
                        print--;
6606
0
                    normal_section_count--;
6607
0
                } else {
6608
0
                    *print++ = '.';
6609
0
                    *print++ = '.';
6610
0
                    *print++ = '/';
6611
0
                }
6612
0
            } else if (scan == out->data || dot_count != 0) {
6613
0
                while (dot_count > 0) {
6614
0
                    --dot_count;
6615
0
                    *print++ = '.';
6616
0
                }
6617
0
                if (scan > out->data) {
6618
0
                    normal_section_count++;
6619
0
                }
6620
0
                *print++ = '/';
6621
0
            }
6622
0
            dot_count = 0;
6623
0
        } else {
6624
0
            while (dot_count > 0) {
6625
0
                --dot_count;
6626
0
                *print++ = '.';
6627
0
            }
6628
0
            dot_count = -1;
6629
0
            *print++ = *scan;
6630
0
        }
6631
0
        scan++;
6632
0
    }
6633
0
    out->count = (int32_t)(print - out->data);
6634
0
    return janet_wrap_buffer(out);
6635
0
}
6636
6637
JANET_CORE_FN(janet_core_dyn,
6638
              "(dyn key &opt default)",
6639
0
              "Get a dynamic binding. Returns the default value (or nil) if no binding found.") {
6640
0
    janet_arity(argc, 1, 2);
6641
0
    Janet value;
6642
0
    if (janet_vm.fiber->env) {
6643
0
        value = janet_table_get(janet_vm.fiber->env, argv[0]);
6644
0
    } else {
6645
0
        value = janet_wrap_nil();
6646
0
    }
6647
0
    if (argc == 2 && janet_checktype(value, JANET_NIL)) {
6648
0
        return argv[1];
6649
0
    }
6650
0
    return value;
6651
0
}
6652
6653
JANET_CORE_FN(janet_core_setdyn,
6654
              "(setdyn key value)",
6655
0
              "Set a dynamic binding. Returns value.") {
6656
0
    janet_fixarity(argc, 2);
6657
0
    if (!janet_vm.fiber->env) {
6658
0
        janet_vm.fiber->env = janet_table(2);
6659
0
    }
6660
0
    janet_table_put(janet_vm.fiber->env, argv[0], argv[1]);
6661
0
    return argv[1];
6662
0
}
6663
6664
JANET_CORE_FN(janet_core_native,
6665
              "(native path &opt env)",
6666
              "Load a native module from the given path. The path "
6667
              "must be an absolute or relative path on the file system, and is "
6668
              "usually a .so file on Unix systems, and a .dll file on Windows. "
6669
              "Returns an environment table that contains functions and other values "
6670
0
              "from the native module.") {
6671
0
    JanetModule init;
6672
0
    janet_arity(argc, 1, 2);
6673
0
    const uint8_t *path = janet_getstring(argv, 0);
6674
0
    const uint8_t *error = NULL;
6675
0
    JanetTable *env;
6676
0
    if (argc == 2) {
6677
0
        env = janet_gettable(argv, 1);
6678
0
    } else {
6679
0
        env = janet_table(0);
6680
0
    }
6681
0
    init = janet_native((const char *)path, &error);
6682
0
    if (!init) {
6683
0
        janet_panicf("could not load native %S: %S", path, error);
6684
0
    }
6685
0
    init(env);
6686
0
    janet_table_put(env, janet_ckeywordv("native"), argv[0]);
6687
0
    return janet_wrap_table(env);
6688
0
}
6689
6690
JANET_CORE_FN(janet_core_describe,
6691
              "(describe x)",
6692
              "Returns a string that is a human-readable description of `x`. "
6693
              "For recursive data structures, the string returned contains a "
6694
              "pointer value from which the identity of `x` "
6695
0
              "can be determined.") {
6696
0
    JanetBuffer *b = janet_buffer(0);
6697
0
    for (int32_t i = 0; i < argc; ++i)
6698
0
        janet_description_b(b, argv[i]);
6699
0
    return janet_stringv(b->data, b->count);
6700
0
}
6701
6702
JANET_CORE_FN(janet_core_string,
6703
              "(string & xs)",
6704
              "Creates a string by concatenating the elements of `xs` together. If an "
6705
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6706
0
              "Returns the new string.") {
6707
0
    JanetBuffer *b = janet_buffer(0);
6708
0
    for (int32_t i = 0; i < argc; ++i)
6709
0
        janet_to_string_b(b, argv[i]);
6710
0
    return janet_stringv(b->data, b->count);
6711
0
}
6712
6713
JANET_CORE_FN(janet_core_symbol,
6714
              "(symbol & xs)",
6715
              "Creates a symbol by concatenating the elements of `xs` together. If an "
6716
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6717
0
              "Returns the new symbol.") {
6718
0
    JanetBuffer *b = janet_buffer(0);
6719
0
    for (int32_t i = 0; i < argc; ++i)
6720
0
        janet_to_string_b(b, argv[i]);
6721
0
    return janet_symbolv(b->data, b->count);
6722
0
}
6723
6724
JANET_CORE_FN(janet_core_keyword,
6725
              "(keyword & xs)",
6726
              "Creates a keyword by concatenating the elements of `xs` together. If an "
6727
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6728
0
              "Returns the new keyword.") {
6729
0
    JanetBuffer *b = janet_buffer(0);
6730
0
    for (int32_t i = 0; i < argc; ++i)
6731
0
        janet_to_string_b(b, argv[i]);
6732
0
    return janet_keywordv(b->data, b->count);
6733
0
}
6734
6735
JANET_CORE_FN(janet_core_buffer,
6736
              "(buffer & xs)",
6737
              "Creates a buffer by concatenating the elements of `xs` together. If an "
6738
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6739
0
              "Returns the new buffer.") {
6740
0
    JanetBuffer *b = janet_buffer(0);
6741
0
    for (int32_t i = 0; i < argc; ++i)
6742
0
        janet_to_string_b(b, argv[i]);
6743
0
    return janet_wrap_buffer(b);
6744
0
}
6745
6746
JANET_CORE_FN(janet_core_is_abstract,
6747
              "(abstract? x)",
6748
0
              "Check if x is an abstract type.") {
6749
0
    janet_fixarity(argc, 1);
6750
0
    return janet_wrap_boolean(janet_checktype(argv[0], JANET_ABSTRACT));
6751
0
}
6752
6753
JANET_CORE_FN(janet_core_scannumber,
6754
              "(scan-number str &opt base)",
6755
              "Parse a number from a byte sequence and return that number, either an integer "
6756
              "or a real. The number "
6757
              "must be in the same format as numbers in janet source code. Will return nil "
6758
              "on an invalid number. Optionally provide a base - if a base is provided, no "
6759
0
              "radix specifier is expected at the beginning of the number.") {
6760
0
    double number;
6761
0
    janet_arity(argc, 1, 2);
6762
0
    JanetByteView view = janet_getbytes(argv, 0);
6763
0
    int32_t base = janet_optinteger(argv, argc, 1, 0);
6764
0
    int valid = base == 0 || (base >= 2 && base <= 36);
6765
0
    if (!valid) {
6766
0
        janet_panicf("expected base between 2 and 36, got %d", base);
6767
0
    }
6768
0
    if (janet_scan_number_base(view.bytes, view.len, base, &number))
6769
0
        return janet_wrap_nil();
6770
0
    return janet_wrap_number(number);
6771
0
}
6772
6773
JANET_CORE_FN(janet_core_tuple,
6774
              "(tuple & items)",
6775
0
              "Creates a new tuple that contains items. Returns the new tuple.") {
6776
0
    return janet_wrap_tuple(janet_tuple_n(argv, argc));
6777
0
}
6778
6779
JANET_CORE_FN(janet_core_array,
6780
              "(array & items)",
6781
0
              "Create a new array that contains items. Returns the new array.") {
6782
0
    JanetArray *array = janet_array(argc);
6783
0
    array->count = argc;
6784
0
    safe_memcpy(array->data, argv, argc * sizeof(Janet));
6785
0
    return janet_wrap_array(array);
6786
0
}
6787
6788
JANET_CORE_FN(janet_core_slice,
6789
              "(slice x &opt start end)",
6790
0
              "Extract a sub-range of an indexed data structure or byte sequence.") {
6791
0
    JanetRange range;
6792
0
    JanetByteView bview;
6793
0
    JanetView iview;
6794
0
    if (janet_bytes_view(argv[0], &bview.bytes, &bview.len)) {
6795
0
        range = janet_getslice(argc, argv);
6796
0
        return janet_stringv(bview.bytes + range.start, range.end - range.start);
6797
0
    } else if (janet_indexed_view(argv[0], &iview.items, &iview.len)) {
6798
0
        range = janet_getslice(argc, argv);
6799
0
        return janet_wrap_tuple(janet_tuple_n(iview.items + range.start, range.end - range.start));
6800
0
    } else {
6801
0
        janet_panic_type(argv[0], 0, JANET_TFLAG_BYTES | JANET_TFLAG_INDEXED);
6802
0
    }
6803
0
}
6804
6805
JANET_CORE_FN(janet_core_range,
6806
              "(range & args)",
6807
              "Create an array of values [start, end) with a given step. "
6808
              "With one argument, returns a range [0, end). With two arguments, returns "
6809
0
              "a range [start, end). With three, returns a range with optional step size.") {
6810
0
    janet_arity(argc, 1, 3);
6811
0
    double start = 0, stop = 0, step = 1, count = 0;
6812
0
    if (argc == 3) {
6813
0
        start = janet_getnumber(argv, 0);
6814
0
        stop = janet_getnumber(argv, 1);
6815
0
        step = janet_getnumber(argv, 2);
6816
0
        count = (step > 0) ? (stop - start) / step :
6817
0
                ((step < 0) ? (stop - start) / step : 0);
6818
0
    } else if (argc == 2) {
6819
0
        start = janet_getnumber(argv, 0);
6820
0
        stop = janet_getnumber(argv, 1);
6821
0
        count = stop - start;
6822
0
    } else {
6823
0
        stop = janet_getnumber(argv, 0);
6824
0
        count = stop;
6825
0
    }
6826
0
    count = (count > 0) ? count : 0;
6827
0
    int32_t int_count;
6828
0
    janet_assert(count >= 0, "bad range code");
6829
0
    if (count > (double) INT32_MAX) {
6830
0
        janet_panicf("range is too large, %f elements", count);
6831
0
    } else {
6832
0
        int_count = (int32_t) ceil(count);
6833
0
    }
6834
0
    if (step > 0.0) {
6835
0
        janet_assert(start + int_count * step >= stop, "bad range code");
6836
0
    } else {
6837
0
        janet_assert(start + int_count * step <= stop, "bad range code");
6838
0
    }
6839
0
    JanetArray *array = janet_array(int_count);
6840
0
    for (int32_t i = 0; i < int_count; i++) {
6841
0
        array->data[i] = janet_wrap_number((double) start + (double) i * step);
6842
0
    }
6843
0
    array->count = int_count;
6844
0
    return janet_wrap_array(array);
6845
0
}
6846
6847
JANET_CORE_FN(janet_core_table,
6848
              "(table & kvs)",
6849
              "Creates a new table from a variadic number of keys and values. "
6850
              "kvs is a sequence k1, v1, k2, v2, k3, v3, ... If kvs has "
6851
              "an odd number of elements, an error will be thrown. Returns the "
6852
0
              "new table.") {
6853
0
    int32_t i;
6854
0
    if (argc & 1)
6855
0
        janet_panic("expected even number of arguments");
6856
0
    JanetTable *table = janet_table(argc >> 1);
6857
0
    for (i = 0; i < argc; i += 2) {
6858
0
        janet_table_put(table, argv[i], argv[i + 1]);
6859
0
    }
6860
0
    return janet_wrap_table(table);
6861
0
}
6862
6863
JANET_CORE_FN(janet_core_getproto,
6864
              "(getproto x)",
6865
0
              "Get the prototype of a table or struct. Will return nil if `x` has no prototype.") {
6866
0
    janet_fixarity(argc, 1);
6867
0
    if (janet_checktype(argv[0], JANET_TABLE)) {
6868
0
        JanetTable *t = janet_unwrap_table(argv[0]);
6869
0
        return t->proto
6870
0
               ? janet_wrap_table(t->proto)
6871
0
               : janet_wrap_nil();
6872
0
    }
6873
0
    if (janet_checktype(argv[0], JANET_STRUCT)) {
6874
0
        JanetStruct st = janet_unwrap_struct(argv[0]);
6875
0
        return janet_struct_proto(st)
6876
0
               ? janet_wrap_struct(janet_struct_proto(st))
6877
0
               : janet_wrap_nil();
6878
0
    }
6879
0
    janet_panicf("expected struct or table, got %v", argv[0]);
6880
0
}
6881
6882
JANET_CORE_FN(janet_core_struct,
6883
              "(struct & kvs)",
6884
              "Create a new struct from a sequence of key value pairs. "
6885
              "kvs is a sequence k1, v1, k2, v2, k3, v3, ... If kvs has "
6886
              "an odd number of elements, an error will be thrown. Returns the "
6887
0
              "new struct.") {
6888
0
    int32_t i;
6889
0
    if (argc & 1) {
6890
0
        janet_panic("expected even number of arguments");
6891
0
    }
6892
0
    JanetKV *st = janet_struct_begin(argc >> 1);
6893
0
    for (i = 0; i < argc; i += 2) {
6894
0
        janet_struct_put(st, argv[i], argv[i + 1]);
6895
0
    }
6896
0
    return janet_wrap_struct(janet_struct_end(st));
6897
0
}
6898
6899
JANET_CORE_FN(janet_core_gensym,
6900
              "(gensym)",
6901
              "Returns a new symbol that is unique across the runtime. This means it "
6902
              "will not collide with any already created symbols during compilation, so "
6903
0
              "it can be used in macros to generate automatic bindings.") {
6904
0
    (void) argv;
6905
0
    janet_fixarity(argc, 0);
6906
0
    return janet_wrap_symbol(janet_symbol_gen());
6907
0
}
6908
6909
JANET_CORE_FN(janet_core_gccollect,
6910
              "(gccollect)",
6911
0
              "Run garbage collection. You should probably not call this manually.") {
6912
0
    (void) argv;
6913
0
    (void) argc;
6914
0
    janet_collect();
6915
0
    return janet_wrap_nil();
6916
0
}
6917
6918
JANET_CORE_FN(janet_core_gcsetinterval,
6919
              "(gcsetinterval interval)",
6920
              "Set an integer number of bytes to allocate before running garbage collection. "
6921
              "Low values for interval will be slower but use less memory. "
6922
0
              "High values will be faster but use more memory.") {
6923
0
    janet_fixarity(argc, 1);
6924
0
    size_t s = janet_getsize(argv, 0);
6925
    /* limit interval to 48 bits */
6926
0
#ifdef JANET_64
6927
0
    if (s >> 48) {
6928
0
        janet_panic("interval too large");
6929
0
    }
6930
0
#endif
6931
0
    janet_vm.gc_interval = s;
6932
0
    return janet_wrap_nil();
6933
0
}
6934
6935
JANET_CORE_FN(janet_core_gcinterval,
6936
              "(gcinterval)",
6937
              "Returns the integer number of bytes to allocate before running an iteration "
6938
0
              "of garbage collection.") {
6939
0
    (void) argv;
6940
0
    janet_fixarity(argc, 0);
6941
0
    return janet_wrap_number((double) janet_vm.gc_interval);
6942
0
}
6943
6944
JANET_CORE_FN(janet_core_type,
6945
              "(type x)",
6946
              "Returns the type of `x` as a keyword. `x` is one of:\n\n"
6947
              "* :nil\n\n"
6948
              "* :boolean\n\n"
6949
              "* :number\n\n"
6950
              "* :array\n\n"
6951
              "* :tuple\n\n"
6952
              "* :table\n\n"
6953
              "* :struct\n\n"
6954
              "* :string\n\n"
6955
              "* :buffer\n\n"
6956
              "* :symbol\n\n"
6957
              "* :keyword\n\n"
6958
              "* :function\n\n"
6959
              "* :cfunction\n\n"
6960
              "* :fiber\n\n"
6961
0
              "or another keyword for an abstract type.") {
6962
0
    janet_fixarity(argc, 1);
6963
0
    JanetType t = janet_type(argv[0]);
6964
0
    if (t == JANET_ABSTRACT) {
6965
0
        return janet_ckeywordv(janet_abstract_type(janet_unwrap_abstract(argv[0]))->name);
6966
0
    } else {
6967
0
        return janet_ckeywordv(janet_type_names[t]);
6968
0
    }
6969
0
}
6970
6971
JANET_CORE_FN(janet_core_hash,
6972
              "(hash value)",
6973
              "Gets a hash for any value. The hash is an integer can be used "
6974
              "as a cheap hash function for all values. If two values are strictly equal, "
6975
0
              "then they will have the same hash value.") {
6976
0
    janet_fixarity(argc, 1);
6977
0
    return janet_wrap_number(janet_hash(argv[0]));
6978
0
}
6979
6980
JANET_CORE_FN(janet_core_getline,
6981
              "(getline &opt prompt buf env)",
6982
              "Reads a line of input into a buffer, including the newline character, using a prompt. "
6983
              "An optional environment table can be provided for auto-complete. "
6984
              "Returns the modified buffer. "
6985
0
              "Use this function to implement a simple interface for a terminal program.") {
6986
0
    FILE *in = janet_dynfile("in", stdin);
6987
0
    FILE *out = janet_dynfile("out", stdout);
6988
0
    janet_arity(argc, 0, 3);
6989
0
    JanetBuffer *buf = (argc >= 2) ? janet_getbuffer(argv, 1) : janet_buffer(10);
6990
0
    if (argc >= 1) {
6991
0
        const char *prompt = (const char *) janet_getstring(argv, 0);
6992
0
        fprintf(out, "%s", prompt);
6993
0
        fflush(out);
6994
0
    }
6995
0
    {
6996
0
        buf->count = 0;
6997
0
        int c;
6998
0
        for (;;) {
6999
0
            c = fgetc(in);
7000
0
            if (feof(in) || c < 0) {
7001
0
                break;
7002
0
            }
7003
0
            janet_buffer_push_u8(buf, (uint8_t) c);
7004
0
            if (c == '\n') break;
7005
0
        }
7006
0
    }
7007
0
    return janet_wrap_buffer(buf);
7008
0
}
7009
7010
JANET_CORE_FN(janet_core_trace,
7011
              "(trace func)",
7012
0
              "Enable tracing on a function. Returns the function.") {
7013
0
    janet_fixarity(argc, 1);
7014
0
    JanetFunction *func = janet_getfunction(argv, 0);
7015
0
    func->gc.flags |= JANET_FUNCFLAG_TRACE;
7016
0
    return argv[0];
7017
0
}
7018
7019
JANET_CORE_FN(janet_core_untrace,
7020
              "(untrace func)",
7021
0
              "Disables tracing on a function. Returns the function.") {
7022
0
    janet_fixarity(argc, 1);
7023
0
    JanetFunction *func = janet_getfunction(argv, 0);
7024
0
    func->gc.flags &= ~JANET_FUNCFLAG_TRACE;
7025
0
    return argv[0];
7026
0
}
7027
7028
JANET_CORE_FN(janet_core_check_int,
7029
              "(int? x)",
7030
0
              "Check if x can be exactly represented as a 32 bit signed two's complement integer.") {
7031
0
    janet_fixarity(argc, 1);
7032
0
    return janet_wrap_boolean(janet_checkint(argv[0]));
7033
0
}
7034
7035
JANET_CORE_FN(janet_core_check_nat,
7036
              "(nat? x)",
7037
0
              "Check if x can be exactly represented as a non-negative 32 bit signed two's complement integer.") {
7038
0
    janet_fixarity(argc, 1);
7039
0
    if (!janet_checkint(argv[0])) return janet_wrap_false();
7040
0
    return janet_wrap_boolean(janet_unwrap_integer(argv[0]) >= 0);
7041
0
}
7042
7043
JANET_CORE_FN(janet_core_is_bytes,
7044
              "(bytes? x)",
7045
0
              "Check if x is a string, symbol, keyword, or buffer.") {
7046
0
    janet_fixarity(argc, 1);
7047
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_BYTES));
7048
0
}
7049
7050
JANET_CORE_FN(janet_core_is_indexed,
7051
              "(indexed? x)",
7052
0
              "Check if x is an array or tuple.") {
7053
0
    janet_fixarity(argc, 1);
7054
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_INDEXED));
7055
0
}
7056
7057
JANET_CORE_FN(janet_core_is_dictionary,
7058
              "(dictionary? x)",
7059
0
              "Check if x is a table or struct.") {
7060
0
    janet_fixarity(argc, 1);
7061
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_DICTIONARY));
7062
0
}
7063
7064
JANET_CORE_FN(janet_core_is_lengthable,
7065
              "(lengthable? x)",
7066
0
              "Check if x is a bytes, indexed, or dictionary.") {
7067
0
    janet_fixarity(argc, 1);
7068
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_LENGTHABLE));
7069
0
}
7070
7071
JANET_CORE_FN(janet_core_signal,
7072
              "(signal what x)",
7073
              "Raise a signal with payload x. `what` can be an integer\n"
7074
              "from 0 through 7 indicating user(0-7), or one of:\n\n"
7075
              "* :ok\n"
7076
              "* :error\n"
7077
              "* :debug\n"
7078
              "* :yield\n"
7079
              "* :user(0-7)\n"
7080
              "* :interrupt\n"
7081
0
              "* :await") {
7082
0
    janet_arity(argc, 1, 2);
7083
0
    Janet payload = argc == 2 ? argv[1] : janet_wrap_nil();
7084
0
    if (janet_checkint(argv[0])) {
7085
0
        int32_t s = janet_unwrap_integer(argv[0]);
7086
0
        if (s < 0 || s > 9) {
7087
0
            janet_panicf("expected user signal between 0 and 9, got %d", s);
7088
0
        }
7089
0
        janet_signalv(JANET_SIGNAL_USER0 + s, payload);
7090
0
    } else {
7091
0
        JanetKeyword kw = janet_getkeyword(argv, 0);
7092
0
        for (unsigned i = 0; i < sizeof(janet_signal_names) / sizeof(char *); i++) {
7093
0
            if (!janet_cstrcmp(kw, janet_signal_names[i])) {
7094
0
                janet_signalv((JanetSignal) i, payload);
7095
0
            }
7096
0
        }
7097
0
    }
7098
0
    janet_panicf("unknown signal %v", argv[0]);
7099
0
}
7100
7101
JANET_CORE_FN(janet_core_memcmp,
7102
              "(memcmp a b &opt len offset-a offset-b)",
7103
              "Compare memory. Takes two byte sequences `a` and `b`, and "
7104
              "return 0 if they have identical contents, a negative integer if a is less than b, "
7105
              "and a positive integer if a is greater than b. Optionally take a length and offsets "
7106
0
              "to compare slices of the bytes sequences.") {
7107
0
    janet_arity(argc, 2, 5);
7108
0
    JanetByteView a = janet_getbytes(argv, 0);
7109
0
    JanetByteView b = janet_getbytes(argv, 1);
7110
0
    int32_t len = janet_optnat(argv, argc, 2, a.len < b.len ? a.len : b.len);
7111
0
    int32_t offset_a = janet_optnat(argv, argc, 3, 0);
7112
0
    int32_t offset_b = janet_optnat(argv, argc, 4, 0);
7113
0
    if (offset_a + len > a.len) janet_panicf("invalid offset-a: %d", offset_a);
7114
0
    if (offset_b + len > b.len) janet_panicf("invalid offset-b: %d", offset_b);
7115
0
    return janet_wrap_integer(memcmp(a.bytes + offset_a, b.bytes + offset_b, (size_t) len));
7116
0
}
7117
7118
typedef struct SandboxOption {
7119
    const char *name;
7120
    uint32_t flag;
7121
} SandboxOption;
7122
7123
static const SandboxOption sandbox_options[] = {
7124
    {"all", JANET_SANDBOX_ALL},
7125
    {"env", JANET_SANDBOX_ENV},
7126
    {"ffi", JANET_SANDBOX_FFI},
7127
    {"ffi-define", JANET_SANDBOX_FFI_DEFINE},
7128
    {"ffi-jit", JANET_SANDBOX_FFI_JIT},
7129
    {"ffi-use", JANET_SANDBOX_FFI_USE},
7130
    {"fs", JANET_SANDBOX_FS},
7131
    {"fs-read", JANET_SANDBOX_FS_READ},
7132
    {"fs-temp", JANET_SANDBOX_FS_TEMP},
7133
    {"fs-write", JANET_SANDBOX_FS_WRITE},
7134
    {"hrtime", JANET_SANDBOX_HRTIME},
7135
    {"modules", JANET_SANDBOX_DYNAMIC_MODULES},
7136
    {"net", JANET_SANDBOX_NET},
7137
    {"net-connect", JANET_SANDBOX_NET_CONNECT},
7138
    {"net-listen", JANET_SANDBOX_NET_LISTEN},
7139
    {"sandbox", JANET_SANDBOX_SANDBOX},
7140
    {"signal", JANET_SANDBOX_SIGNAL},
7141
    {"subprocess", JANET_SANDBOX_SUBPROCESS},
7142
    {NULL, 0}
7143
};
7144
7145
JANET_CORE_FN(janet_core_sandbox,
7146
              "(sandbox & forbidden-capabilities)",
7147
              "Disable feature sets to prevent the interpreter from using certain system resources. "
7148
              "Once a feature is disabled, there is no way to re-enable it. Capabilities can be:\n\n"
7149
              "* :all - disallow all (except IO to stdout, stderr, and stdin)\n"
7150
              "* :env - disallow reading and write env variables\n"
7151
              "* :ffi - disallow FFI (recommended if disabling anything else)\n"
7152
              "* :ffi-define - disallow loading new FFI modules and binding new functions\n"
7153
              "* :ffi-jit - disallow calling `ffi/jitfn`\n"
7154
              "* :ffi-use - disallow using any previously bound FFI functions and memory-unsafe functions.\n"
7155
              "* :fs - disallow access to the file system\n"
7156
              "* :fs-read - disallow read access to the file system\n"
7157
              "* :fs-temp - disallow creating temporary files\n"
7158
              "* :fs-write - disallow write access to the file system\n"
7159
              "* :hrtime - disallow high-resolution timers\n"
7160
              "* :modules - disallow load dynamic modules (natives)\n"
7161
              "* :net - disallow network access\n"
7162
              "* :net-connect - disallow making outbound network connections\n"
7163
              "* :net-listen - disallow accepting inbound network connections\n"
7164
              "* :sandbox - disallow calling this function\n"
7165
              "* :signal - disallow adding or removing signal handlers\n"
7166
0
              "* :subprocess - disallow running subprocesses") {
7167
0
    uint32_t flags = 0;
7168
0
    for (int32_t i = 0; i < argc; i++) {
7169
0
        JanetKeyword kw = janet_getkeyword(argv, i);
7170
0
        const SandboxOption *opt = sandbox_options;
7171
0
        while (opt->name != NULL) {
7172
0
            if (janet_cstrcmp(kw, opt->name) == 0) {
7173
0
                flags |= opt->flag;
7174
0
                break;
7175
0
            }
7176
0
            opt++;
7177
0
        }
7178
0
        if (opt->name == NULL) janet_panicf("unknown capability %v", argv[i]);
7179
0
    }
7180
0
    janet_sandbox(flags);
7181
0
    return janet_wrap_nil();
7182
0
}
7183
7184
#ifdef JANET_BOOTSTRAP
7185
7186
/* Utility for inline assembly */
7187
static void janet_quick_asm(
7188
    JanetTable *env,
7189
    int32_t flags,
7190
    const char *name,
7191
    int32_t arity,
7192
    int32_t min_arity,
7193
    int32_t max_arity,
7194
    int32_t slots,
7195
    const uint32_t *bytecode,
7196
    size_t bytecode_size,
7197
    const char *doc) {
7198
    JanetFuncDef *def = janet_funcdef_alloc();
7199
    def->arity = arity;
7200
    def->min_arity = min_arity;
7201
    def->max_arity = max_arity;
7202
    def->flags = flags;
7203
    def->slotcount = slots;
7204
    def->bytecode = janet_malloc(bytecode_size);
7205
    def->bytecode_length = (int32_t)(bytecode_size / sizeof(uint32_t));
7206
    def->name = janet_cstring(name);
7207
    if (!def->bytecode) {
7208
        JANET_OUT_OF_MEMORY;
7209
    }
7210
    memcpy(def->bytecode, bytecode, bytecode_size);
7211
    janet_def_addflags(def);
7212
    janet_def(env, name, janet_wrap_function(janet_thunk(def)), doc);
7213
}
7214
7215
/* Macros for easier inline assembly */
7216
#define SSS(op, a, b, c) ((op) | ((a) << 8) | ((b) << 16) | ((c) << 24))
7217
#define SS(op, a, b) ((op) | ((a) << 8) | ((b) << 16))
7218
#define SSI(op, a, b, I) ((op) | ((a) << 8) | ((b) << 16) | ((uint32_t)(I) << 24))
7219
#define S(op, a) ((op) | ((a) << 8))
7220
#define SI(op, a, I) ((op) | ((a) << 8) | ((uint32_t)(I) << 16))
7221
7222
/* Templatize a varop */
7223
static void templatize_varop(
7224
    JanetTable *env,
7225
    int32_t flags,
7226
    const char *name,
7227
    int32_t nullary,
7228
    int32_t unary,
7229
    uint32_t op,
7230
    const char *doc) {
7231
7232
    /* Variadic operator assembly. Must be templatized for each different opcode. */
7233
    /* Reg 0: Argument tuple (args) */
7234
    /* Reg 1: Argument count (argn) */
7235
    /* Reg 2: Jump flag (jump?) */
7236
    /* Reg 3: Accumulator (accum) */
7237
    /* Reg 4: Next operand (operand) */
7238
    /* Reg 5: Loop iterator (i) */
7239
    uint32_t varop_asm[] = {
7240
        SS(JOP_LENGTH, 1, 0), /* Put number of arguments in register 1 -> argn = count(args) */
7241
7242
        /* Check nullary */
7243
        SSS(JOP_EQUALS_IMMEDIATE, 2, 1, 0), /* Check if numargs equal to 0 */
7244
        SI(JOP_JUMP_IF_NOT, 2, 3), /* If not 0, jump to next check */
7245
        /* Nullary */
7246
        SI(JOP_LOAD_INTEGER, 3, nullary),  /* accum = nullary value */
7247
        S(JOP_RETURN, 3), /* return accum */
7248
7249
        /* Check unary */
7250
        SSI(JOP_EQUALS_IMMEDIATE, 2, 1, 1), /* Check if numargs equal to 1 */
7251
        SI(JOP_JUMP_IF_NOT, 2, 5), /* If not 1, jump to next check */
7252
        /* Unary */
7253
        SI(JOP_LOAD_INTEGER, 3, unary), /* accum = unary value */
7254
        SSI(JOP_GET_INDEX, 4, 0, 0), /* operand = args[0] */
7255
        SSS(op, 3, 3, 4), /* accum = accum op operand */
7256
        S(JOP_RETURN, 3), /* return accum */
7257
7258
        /* Mutli (2 or more) arity */
7259
        /* Prime loop */
7260
        SSI(JOP_GET_INDEX, 3, 0, 0), /* accum = args[0] */
7261
        SI(JOP_LOAD_INTEGER, 5, 1), /* i = 1 */
7262
        /* Main loop */
7263
        SSS(JOP_IN, 4, 0, 5), /* operand = args[i] */
7264
        SSS(op, 3, 3, 4), /* accum = accum op operand */
7265
        SSI(JOP_ADD_IMMEDIATE, 5, 5, 1), /* i++ */
7266
        SSI(JOP_EQUALS, 2, 5, 1), /* jump? = (i == argn) */
7267
        SI(JOP_JUMP_IF_NOT, 2, -4), /* if not jump? go back 4 */
7268
7269
        /* Done, do last and return accumulator */
7270
        S(JOP_RETURN, 3) /* return accum */
7271
    };
7272
7273
    janet_quick_asm(
7274
        env,
7275
        flags | JANET_FUNCDEF_FLAG_VARARG,
7276
        name,
7277
        0,
7278
        0,
7279
        INT32_MAX,
7280
        6,
7281
        varop_asm,
7282
        sizeof(varop_asm),
7283
        doc);
7284
}
7285
7286
/* Templatize variadic comparators */
7287
static void templatize_comparator(
7288
    JanetTable *env,
7289
    int32_t flags,
7290
    const char *name,
7291
    int invert,
7292
    uint32_t op,
7293
    const char *doc) {
7294
7295
    /* Reg 0: Argument tuple (args) */
7296
    /* Reg 1: Argument count (argn) */
7297
    /* Reg 2: Jump flag (jump?) */
7298
    /* Reg 3: Last value (last) */
7299
    /* Reg 4: Next operand (next) */
7300
    /* Reg 5: Loop iterator (i) */
7301
    uint32_t comparator_asm[] = {
7302
        SS(JOP_LENGTH, 1, 0), /* Put number of arguments in register 1 -> argn = count(args) */
7303
        SSS(JOP_LESS_THAN_IMMEDIATE, 2, 1, 2), /* Check if numargs less than 2 */
7304
        SI(JOP_JUMP_IF, 2, 10), /* If numargs < 2, jump to done */
7305
7306
        /* Prime loop */
7307
        SSI(JOP_GET_INDEX, 3, 0, 0), /* last = args[0] */
7308
        SI(JOP_LOAD_INTEGER, 5, 1), /* i = 1 */
7309
7310
        /* Main loop */
7311
        SSS(JOP_IN, 4, 0, 5), /* next = args[i] */
7312
        SSS(op, 2, 3, 4), /* jump? = last compare next */
7313
        SI(JOP_JUMP_IF_NOT, 2, 7), /* if not jump? goto fail (return false) */
7314
        SSI(JOP_ADD_IMMEDIATE, 5, 5, 1), /* i++ */
7315
        SS(JOP_MOVE_NEAR, 3, 4), /* last = next */
7316
        SSI(JOP_EQUALS, 2, 5, 1), /* jump? = (i == argn) */
7317
        SI(JOP_JUMP_IF_NOT, 2, -6), /* if not jump? go back 6 */
7318
7319
        /* Done, return true */
7320
        S(invert ? JOP_LOAD_FALSE : JOP_LOAD_TRUE, 3),
7321
        S(JOP_RETURN, 3),
7322
7323
        /* Failed, return false */
7324
        S(invert ? JOP_LOAD_TRUE : JOP_LOAD_FALSE, 3),
7325
        S(JOP_RETURN, 3)
7326
    };
7327
7328
    janet_quick_asm(
7329
        env,
7330
        flags | JANET_FUNCDEF_FLAG_VARARG,
7331
        name,
7332
        0,
7333
        0,
7334
        INT32_MAX,
7335
        6,
7336
        comparator_asm,
7337
        sizeof(comparator_asm),
7338
        doc);
7339
}
7340
7341
/* Make the apply function */
7342
static void make_apply(JanetTable *env) {
7343
    /* Reg 0: Function (fun) */
7344
    /* Reg 1: Argument tuple (args) */
7345
    /* Reg 2: Argument count (argn) */
7346
    /* Reg 3: Jump flag (jump?) */
7347
    /* Reg 4: Loop iterator (i) */
7348
    /* Reg 5: Loop values (x) */
7349
    uint32_t apply_asm[] = {
7350
        SS(JOP_LENGTH, 2, 1),
7351
        SSS(JOP_EQUALS_IMMEDIATE, 3, 2, 0), /* Immediate tail call if no args */
7352
        SI(JOP_JUMP_IF, 3, 9),
7353
7354
        /* Prime loop */
7355
        SI(JOP_LOAD_INTEGER, 4, 0), /* i = 0 */
7356
7357
        /* Main loop */
7358
        SSS(JOP_IN, 5, 1, 4), /* x = args[i] */
7359
        SSI(JOP_ADD_IMMEDIATE, 4, 4, 1), /* i++ */
7360
        SSI(JOP_EQUALS, 3, 4, 2), /* jump? = (i == argn) */
7361
        SI(JOP_JUMP_IF, 3, 3), /* if jump? go forward 3 */
7362
        S(JOP_PUSH, 5),
7363
        (JOP_JUMP | ((uint32_t)(-5) << 8)),
7364
7365
        /* Push the array */
7366
        S(JOP_PUSH_ARRAY, 5),
7367
7368
        /* Call the function */
7369
        S(JOP_TAILCALL, 0)
7370
    };
7371
    janet_quick_asm(env, JANET_FUN_APPLY | JANET_FUNCDEF_FLAG_VARARG,
7372
                    "apply", 1, 1, INT32_MAX, 6, apply_asm, sizeof(apply_asm),
7373
                    JDOC("(apply f & args)\n\n"
7374
         "Applies a function f to a variable number of arguments. Each "
7375
         "element in args is used as an argument to f, except the last "
7376
         "element in args, which is expected to be an array or a tuple. "
7377
         "Each element in this last argument is then also pushed as an "
7378
         "argument to f."));
7379
}
7380
7381
static const uint32_t error_asm[] = {
7382
    JOP_ERROR
7383
};
7384
static const uint32_t debug_asm[] = {
7385
    JOP_SIGNAL | (2 << 24),
7386
    JOP_RETURN
7387
};
7388
static const uint32_t yield_asm[] = {
7389
    JOP_SIGNAL | (3 << 24),
7390
    JOP_RETURN
7391
};
7392
static const uint32_t resume_asm[] = {
7393
    JOP_RESUME | (1 << 24),
7394
    JOP_RETURN
7395
};
7396
static const uint32_t cancel_asm[] = {
7397
    JOP_CANCEL | (1 << 24),
7398
    JOP_RETURN
7399
};
7400
static const uint32_t in_asm[] = {
7401
    JOP_IN | (1 << 24),
7402
    JOP_LOAD_NIL | (3 << 8),
7403
    JOP_EQUALS | (3 << 8) | (3 << 24),
7404
    JOP_JUMP_IF | (3 << 8) | (2 << 16),
7405
    JOP_RETURN,
7406
    JOP_RETURN | (2 << 8)
7407
};
7408
static const uint32_t get_asm[] = {
7409
    JOP_GET | (1 << 24),
7410
    JOP_LOAD_NIL | (3 << 8),
7411
    JOP_EQUALS | (3 << 8) | (3 << 24),
7412
    JOP_JUMP_IF | (3 << 8) | (2 << 16),
7413
    JOP_RETURN,
7414
    JOP_RETURN | (2 << 8)
7415
};
7416
static const uint32_t put_asm[] = {
7417
    JOP_PUT | (1 << 16) | (2 << 24),
7418
    JOP_RETURN
7419
};
7420
static const uint32_t length_asm[] = {
7421
    JOP_LENGTH,
7422
    JOP_RETURN
7423
};
7424
static const uint32_t bnot_asm[] = {
7425
    JOP_BNOT,
7426
    JOP_RETURN
7427
};
7428
static const uint32_t propagate_asm[] = {
7429
    JOP_PROPAGATE | (1 << 24),
7430
    JOP_RETURN
7431
};
7432
static const uint32_t next_asm[] = {
7433
    JOP_NEXT | (1 << 24),
7434
    JOP_RETURN
7435
};
7436
static const uint32_t cmp_asm[] = {
7437
    JOP_COMPARE | (1 << 24),
7438
    JOP_RETURN
7439
};
7440
#endif /* ifdef JANET_BOOTSTRAP */
7441
7442
/*
7443
 * Setup Environment
7444
 */
7445
7446
0
static void janet_load_libs(JanetTable *env) {
7447
0
    JanetRegExt corelib_cfuns[] = {
7448
0
        JANET_CORE_REG("native", janet_core_native),
7449
0
        JANET_CORE_REG("describe", janet_core_describe),
7450
0
        JANET_CORE_REG("string", janet_core_string),
7451
0
        JANET_CORE_REG("symbol", janet_core_symbol),
7452
0
        JANET_CORE_REG("keyword", janet_core_keyword),
7453
0
        JANET_CORE_REG("buffer", janet_core_buffer),
7454
0
        JANET_CORE_REG("abstract?", janet_core_is_abstract),
7455
0
        JANET_CORE_REG("table", janet_core_table),
7456
0
        JANET_CORE_REG("array", janet_core_array),
7457
0
        JANET_CORE_REG("scan-number", janet_core_scannumber),
7458
0
        JANET_CORE_REG("tuple", janet_core_tuple),
7459
0
        JANET_CORE_REG("struct", janet_core_struct),
7460
0
        JANET_CORE_REG("gensym", janet_core_gensym),
7461
0
        JANET_CORE_REG("gccollect", janet_core_gccollect),
7462
0
        JANET_CORE_REG("gcsetinterval", janet_core_gcsetinterval),
7463
0
        JANET_CORE_REG("gcinterval", janet_core_gcinterval),
7464
0
        JANET_CORE_REG("type", janet_core_type),
7465
0
        JANET_CORE_REG("hash", janet_core_hash),
7466
0
        JANET_CORE_REG("getline", janet_core_getline),
7467
0
        JANET_CORE_REG("dyn", janet_core_dyn),
7468
0
        JANET_CORE_REG("setdyn", janet_core_setdyn),
7469
0
        JANET_CORE_REG("trace", janet_core_trace),
7470
0
        JANET_CORE_REG("untrace", janet_core_untrace),
7471
0
        JANET_CORE_REG("module/expand-path", janet_core_expand_path),
7472
0
        JANET_CORE_REG("int?", janet_core_check_int),
7473
0
        JANET_CORE_REG("nat?", janet_core_check_nat),
7474
0
        JANET_CORE_REG("bytes?", janet_core_is_bytes),
7475
0
        JANET_CORE_REG("indexed?", janet_core_is_indexed),
7476
0
        JANET_CORE_REG("dictionary?", janet_core_is_dictionary),
7477
0
        JANET_CORE_REG("lengthable?", janet_core_is_lengthable),
7478
0
        JANET_CORE_REG("slice", janet_core_slice),
7479
0
        JANET_CORE_REG("range", janet_core_range),
7480
0
        JANET_CORE_REG("signal", janet_core_signal),
7481
0
        JANET_CORE_REG("memcmp", janet_core_memcmp),
7482
0
        JANET_CORE_REG("getproto", janet_core_getproto),
7483
0
        JANET_CORE_REG("sandbox", janet_core_sandbox),
7484
0
        JANET_REG_END
7485
0
    };
7486
0
    janet_core_cfuns_ext(env, NULL, corelib_cfuns);
7487
0
    janet_lib_io(env);
7488
0
    janet_lib_math(env);
7489
0
    janet_lib_array(env);
7490
0
    janet_lib_tuple(env);
7491
0
    janet_lib_buffer(env);
7492
0
    janet_lib_table(env);
7493
0
    janet_lib_struct(env);
7494
0
    janet_lib_fiber(env);
7495
0
    janet_lib_os(env);
7496
0
    janet_lib_parse(env);
7497
0
    janet_lib_compile(env);
7498
0
    janet_lib_debug(env);
7499
0
    janet_lib_string(env);
7500
0
    janet_lib_marsh(env);
7501
0
#ifdef JANET_PEG
7502
0
    janet_lib_peg(env);
7503
0
#endif
7504
0
#ifdef JANET_ASSEMBLER
7505
0
    janet_lib_asm(env);
7506
0
#endif
7507
0
#ifdef JANET_INT_TYPES
7508
0
    janet_lib_inttypes(env);
7509
0
#endif
7510
0
#ifdef JANET_EV
7511
0
    janet_lib_ev(env);
7512
0
#ifdef JANET_FILEWATCH
7513
0
    janet_lib_filewatch(env);
7514
0
#endif
7515
0
#endif
7516
0
#ifdef JANET_NET
7517
0
    janet_lib_net(env);
7518
0
#endif
7519
0
#ifdef JANET_FFI
7520
0
    janet_lib_ffi(env);
7521
0
#endif
7522
0
}
7523
7524
#ifdef JANET_BOOTSTRAP
7525
7526
JanetTable *janet_core_env(JanetTable *replacements) {
7527
    JanetTable *env = (NULL != replacements) ? replacements : janet_table(0);
7528
    janet_quick_asm(env, JANET_FUN_CMP,
7529
                    "cmp", 2, 2, 2, 2, cmp_asm, sizeof(cmp_asm),
7530
                    JDOC("(cmp x y)\n\n"
7531
         "Returns -1 if x is strictly less than y, 1 if y is strictly greater "
7532
         "than x, and 0 otherwise. To return 0, x and y must be the exact same type."));
7533
    janet_quick_asm(env, JANET_FUN_NEXT,
7534
                    "next", 2, 1, 2, 2, next_asm, sizeof(next_asm),
7535
                    JDOC("(next ds &opt key)\n\n"
7536
         "Gets the next key in a data structure. Can be used to iterate through "
7537
         "the keys of a data structure in an unspecified order. Keys are guaranteed "
7538
         "to be seen only once per iteration if the data structure is not mutated "
7539
         "during iteration. If key is nil, next returns the first key. If next "
7540
         "returns nil, there are no more keys to iterate through."));
7541
    janet_quick_asm(env, JANET_FUN_PROP,
7542
                    "propagate", 2, 2, 2, 2, propagate_asm, sizeof(propagate_asm),
7543
                    JDOC("(propagate x fiber)\n\n"
7544
         "Propagate a signal from a fiber to the current fiber and "
7545
         "set the last value of the current fiber to `x`.  The signal "
7546
         "value is then available as the status of the current fiber. "
7547
         "The resulting stack trace from the current fiber will include "
7548
         "frames from fiber. If fiber is in a state that can be resumed, "
7549
         "resuming the current fiber will first resume `fiber`. "
7550
         "This function can be used to re-raise an error without losing "
7551
         "the original stack trace."));
7552
    janet_quick_asm(env, JANET_FUN_DEBUG,
7553
                    "debug", 1, 0, 1, 1, debug_asm, sizeof(debug_asm),
7554
                    JDOC("(debug &opt x)\n\n"
7555
         "Throws a debug signal that can be caught by a parent fiber and used to inspect "
7556
         "the running state of the current fiber. Returns the value passed in by resume."));
7557
    janet_quick_asm(env, JANET_FUN_ERROR,
7558
                    "error", 1, 1, 1, 1, error_asm, sizeof(error_asm),
7559
                    JDOC("(error e)\n\n"
7560
         "Throws an error e that can be caught and handled by a parent fiber."));
7561
    janet_quick_asm(env, JANET_FUN_YIELD,
7562
                    "yield", 1, 0, 1, 2, yield_asm, sizeof(yield_asm),
7563
                    JDOC("(yield &opt x)\n\n"
7564
         "Yield a value to a parent fiber. When a fiber yields, its execution is paused until "
7565
         "another thread resumes it. The fiber will then resume, and the last yield call will "
7566
         "return the value that was passed to resume."));
7567
    janet_quick_asm(env, JANET_FUN_CANCEL,
7568
                    "cancel", 2, 2, 2, 2, cancel_asm, sizeof(cancel_asm),
7569
                    JDOC("(cancel fiber err)\n\n"
7570
         "Resume a fiber but have it immediately raise an error. This lets a programmer unwind a pending fiber. "
7571
         "Returns the same result as resume."));
7572
    janet_quick_asm(env, JANET_FUN_RESUME,
7573
                    "resume", 2, 1, 2, 2, resume_asm, sizeof(resume_asm),
7574
                    JDOC("(resume fiber &opt x)\n\n"
7575
         "Resume a new or suspended fiber and optionally pass in a value to the fiber that "
7576
         "will be returned to the last yield in the case of a pending fiber, or the argument to "
7577
         "the dispatch function in the case of a new fiber. Returns either the return result of "
7578
         "the fiber's dispatch function, or the value from the next yield call in fiber."));
7579
    janet_quick_asm(env, JANET_FUN_IN,
7580
                    "in", 3, 2, 3, 4, in_asm, sizeof(in_asm),
7581
                    JDOC("(in ds key &opt dflt)\n\n"
7582
         "Get value in ds at key, works on associative data structures. Arrays, tuples, tables, structs, "
7583
         "strings, symbols, and buffers are all associative and can be used. Arrays, tuples, strings, buffers, "
7584
         "and symbols must use integer keys that are in bounds or an error is raised. Structs and tables can "
7585
         "take any value as a key except nil and will return nil or dflt if not found."));
7586
    janet_quick_asm(env, JANET_FUN_GET,
7587
                    "get", 3, 2, 3, 4, get_asm, sizeof(in_asm),
7588
                    JDOC("(get ds key &opt dflt)\n\n"
7589
         "Get the value mapped to key in data structure ds, and return dflt or nil if not found. "
7590
         "Similar to in, but will not throw an error if the key is invalid for the data structure "
7591
         "unless the data structure is an abstract type. In that case, the abstract type getter may throw "
7592
         "an error."));
7593
    janet_quick_asm(env, JANET_FUN_PUT,
7594
                    "put", 3, 3, 3, 3, put_asm, sizeof(put_asm),
7595
                    JDOC("(put ds key value)\n\n"
7596
         "Associate a key with a value in any mutable associative data structure. Indexed data structures "
7597
         "(arrays and buffers) only accept non-negative integer keys, and will expand if an out of bounds "
7598
         "value is provided. In an array, extra space will be filled with nils, and in a buffer, extra "
7599
         "space will be filled with 0 bytes. In a table, putting a key that is contained in the table prototype "
7600
         "will hide the association defined by the prototype, but will not mutate the prototype table. Putting "
7601
         "a value nil into a table will remove the key from the table. Returns the data structure ds."));
7602
    janet_quick_asm(env, JANET_FUN_LENGTH,
7603
                    "length", 1, 1, 1, 1, length_asm, sizeof(length_asm),
7604
                    JDOC("(length ds)\n\n"
7605
         "Returns the length or count of a data structure in constant time as an integer. For "
7606
         "structs and tables, returns the number of key-value pairs in the data structure."));
7607
    janet_quick_asm(env, JANET_FUN_BNOT,
7608
                    "bnot", 1, 1, 1, 1, bnot_asm, sizeof(bnot_asm),
7609
                    JDOC("(bnot x)\n\nReturns the bit-wise inverse of integer x."));
7610
    make_apply(env);
7611
7612
    /* Variadic ops */
7613
    templatize_varop(env, JANET_FUN_ADD, "+", 0, 0, JOP_ADD,
7614
                     JDOC("(+ & xs)\n\n"
7615
         "Returns the sum of all xs. xs must be integers or real numbers only. If xs is empty, return 0."));
7616
    templatize_varop(env, JANET_FUN_SUBTRACT, "-", 0, 0, JOP_SUBTRACT,
7617
                     JDOC("(- & xs)\n\n"
7618
         "Returns the difference of xs. If xs is empty, returns 0. If xs has one element, returns the "
7619
         "negative value of that element. Otherwise, returns the first element in xs minus the sum of "
7620
         "the rest of the elements."));
7621
    templatize_varop(env, JANET_FUN_MULTIPLY, "*", 1, 1, JOP_MULTIPLY,
7622
                     JDOC("(* & xs)\n\n"
7623
         "Returns the product of all elements in xs. If xs is empty, returns 1."));
7624
    templatize_varop(env, JANET_FUN_DIVIDE, "/", 1, 1, JOP_DIVIDE,
7625
                     JDOC("(/ & xs)\n\n"
7626
         "Returns the quotient of xs. If xs is empty, returns 1. If xs has one value x, returns "
7627
         "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
7628
         "values."));
7629
    templatize_varop(env, JANET_FUN_DIVIDE_FLOOR, "div", 1, 1, JOP_DIVIDE_FLOOR,
7630
                     JDOC("(div & xs)\n\n"
7631
         "Returns the floored division of xs. If xs is empty, returns 1. If xs has one value x, returns "
7632
         "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
7633
         "values."));
7634
    templatize_varop(env, JANET_FUN_MODULO, "mod", 0, 1, JOP_MODULO,
7635
                     JDOC("(mod & xs)\n\n"
7636
         "Returns the result of applying the modulo operator on the first value of xs with each remaining value. "
7637
         "`(mod x 0)` is defined to be `x`."));
7638
    templatize_varop(env, JANET_FUN_REMAINDER, "%", 0, 1, JOP_REMAINDER,
7639
                     JDOC("(% & xs)\n\n"
7640
         "Returns the remainder of dividing the first value of xs by each remaining value."));
7641
    templatize_varop(env, JANET_FUN_BAND, "band", -1, -1, JOP_BAND,
7642
                     JDOC("(band & xs)\n\n"
7643
         "Returns the bit-wise and of all values in xs. Each x in xs must be an integer."));
7644
    templatize_varop(env, JANET_FUN_BOR, "bor", 0, 0, JOP_BOR,
7645
                     JDOC("(bor & xs)\n\n"
7646
         "Returns the bit-wise or of all values in xs. Each x in xs must be an integer."));
7647
    templatize_varop(env, JANET_FUN_BXOR, "bxor", 0, 0, JOP_BXOR,
7648
                     JDOC("(bxor & xs)\n\n"
7649
         "Returns the bit-wise xor of all values in xs. Each in xs must be an integer."));
7650
    templatize_varop(env, JANET_FUN_LSHIFT, "blshift", 1, 1, JOP_SHIFT_LEFT,
7651
                     JDOC("(blshift x & shifts)\n\n"
7652
         "Returns the value of x bit shifted left by the sum of all values in shifts. x "
7653
         "and each element in shift must be an integer."));
7654
    templatize_varop(env, JANET_FUN_RSHIFT, "brshift", 1, 1, JOP_SHIFT_RIGHT,
7655
                     JDOC("(brshift x & shifts)\n\n"
7656
         "Returns the value of x bit shifted right by the sum of all values in shifts. x "
7657
         "and each element in shift must be an integer."));
7658
    templatize_varop(env, JANET_FUN_RSHIFTU, "brushift", 1, 1, JOP_SHIFT_RIGHT_UNSIGNED,
7659
                     JDOC("(brushift x & shifts)\n\n"
7660
         "Returns the value of x bit shifted right by the sum of all values in shifts. x "
7661
         "and each element in shift must be an integer. The sign of x is not preserved, so "
7662
         "for positive shifts the return value will always be positive."));
7663
7664
    /* Variadic comparators */
7665
    templatize_comparator(env, JANET_FUN_GT, ">", 0, JOP_GREATER_THAN,
7666
                          JDOC("(> & xs)\n\n"
7667
         "Check if xs is in descending order. Returns a boolean."));
7668
    templatize_comparator(env, JANET_FUN_LT, "<", 0, JOP_LESS_THAN,
7669
                          JDOC("(< & xs)\n\n"
7670
         "Check if xs is in ascending order. Returns a boolean."));
7671
    templatize_comparator(env, JANET_FUN_GTE, ">=", 0, JOP_GREATER_THAN_EQUAL,
7672
                          JDOC("(>= & xs)\n\n"
7673
         "Check if xs is in non-ascending order. Returns a boolean."));
7674
    templatize_comparator(env, JANET_FUN_LTE, "<=", 0, JOP_LESS_THAN_EQUAL,
7675
                          JDOC("(<= & xs)\n\n"
7676
         "Check if xs is in non-descending order. Returns a boolean."));
7677
    templatize_comparator(env, JANET_FUN_EQ, "=", 0, JOP_EQUALS,
7678
                          JDOC("(= & xs)\n\n"
7679
         "Check if all values in xs are equal. Returns a boolean."));
7680
    templatize_comparator(env, JANET_FUN_NEQ, "not=", 1, JOP_EQUALS,
7681
                          JDOC("(not= & xs)\n\n"
7682
         "Check if any values in xs are not equal. Returns a boolean."));
7683
7684
    /* Platform detection */
7685
    janet_def(env, "janet/version", janet_cstringv(JANET_VERSION),
7686
              JDOC("The version number of the running janet program."));
7687
    janet_def(env, "janet/build", janet_cstringv(JANET_BUILD),
7688
              JDOC("The build identifier of the running janet program."));
7689
    janet_def(env, "janet/config-bits", janet_wrap_integer(JANET_CURRENT_CONFIG_BITS),
7690
              JDOC("The flag set of config options from janetconf.h which is used to check "
7691
         "if native modules are compatible with the host program."));
7692
7693
    /* Allow references to the environment */
7694
    janet_def(env, "root-env", janet_wrap_table(env),
7695
              JDOC("The root environment used to create environments with (make-env)."));
7696
7697
    janet_load_libs(env);
7698
    janet_gcroot(janet_wrap_table(env));
7699
    return env;
7700
}
7701
7702
#else
7703
7704
0
JanetTable *janet_core_env(JanetTable *replacements) {
7705
    /* Memoize core env, ignoring replacements the second time around. */
7706
0
    if (NULL != janet_vm.core_env) {
7707
0
        return janet_vm.core_env;
7708
0
    }
7709
7710
0
    JanetTable *dict = janet_core_lookup_table(replacements);
7711
7712
    /* Unmarshal bytecode */
7713
0
    Janet marsh_out = janet_unmarshal(
7714
0
                          janet_core_image,
7715
0
                          janet_core_image_size,
7716
0
                          0,
7717
0
                          dict,
7718
0
                          NULL);
7719
7720
    /* Memoize */
7721
0
    janet_gcroot(marsh_out);
7722
0
    JanetTable *env = janet_unwrap_table(marsh_out);
7723
0
    janet_vm.core_env = env;
7724
7725
    /* Invert image dict manually here. We can't do this in boot.janet as it
7726
     * breaks deterministic builds */
7727
0
    Janet lidv, midv;
7728
0
    lidv = midv = janet_wrap_nil();
7729
0
    janet_resolve(env, janet_csymbol("load-image-dict"), &lidv);
7730
0
    janet_resolve(env, janet_csymbol("make-image-dict"), &midv);
7731
0
    JanetTable *lid = janet_unwrap_table(lidv);
7732
0
    JanetTable *mid = janet_unwrap_table(midv);
7733
0
    for (int32_t i = 0; i < lid->capacity; i++) {
7734
0
        const JanetKV *kv = lid->data + i;
7735
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
7736
0
            janet_table_put(mid, kv->value, kv->key);
7737
0
        }
7738
0
    }
7739
7740
0
    return env;
7741
0
}
7742
7743
#endif
7744
7745
0
JanetTable *janet_core_lookup_table(JanetTable *replacements) {
7746
0
    JanetTable *dict = janet_table(512);
7747
0
    janet_load_libs(dict);
7748
7749
    /* Add replacements */
7750
0
    if (replacements != NULL) {
7751
0
        for (int32_t i = 0; i < replacements->capacity; i++) {
7752
0
            JanetKV kv = replacements->data[i];
7753
0
            if (!janet_checktype(kv.key, JANET_NIL)) {
7754
0
                janet_table_put(dict, kv.key, kv.value);
7755
                /* Add replacement functions to registry? */
7756
0
            }
7757
0
        }
7758
0
    }
7759
7760
0
    return dict;
7761
0
}
7762
7763
7764
/* src/core/debug.c */
7765
#line 0 "src/core/debug.c"
7766
7767
/*
7768
* Copyright (c) 2025 Calvin Rose
7769
*
7770
* Permission is hereby granted, free of charge, to any person obtaining a copy
7771
* of this software and associated documentation files (the "Software"), to
7772
* deal in the Software without restriction, including without limitation the
7773
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7774
* sell copies of the Software, and to permit persons to whom the Software is
7775
* furnished to do so, subject to the following conditions:
7776
*
7777
* The above copyright notice and this permission notice shall be included in
7778
* all copies or substantial portions of the Software.
7779
*
7780
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7781
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7782
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7783
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7784
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7785
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
7786
* IN THE SOFTWARE.
7787
*/
7788
7789
#ifndef JANET_AMALG
7790
#include "features.h"
7791
#include <janet.h>
7792
#include "gc.h"
7793
#include "state.h"
7794
#include "util.h"
7795
#include "vector.h"
7796
#endif
7797
7798
/* Implements functionality to build a debugger from within janet.
7799
 * The repl should also be able to serve as pretty featured debugger
7800
 * out of the box. */
7801
7802
/* Add a break point to a function */
7803
0
void janet_debug_break(JanetFuncDef *def, int32_t pc) {
7804
0
    if (pc >= def->bytecode_length || pc < 0)
7805
0
        janet_panic("invalid bytecode offset");
7806
0
    def->bytecode[pc] |= 0x80;
7807
0
}
7808
7809
/* Remove a break point from a function */
7810
0
void janet_debug_unbreak(JanetFuncDef *def, int32_t pc) {
7811
0
    if (pc >= def->bytecode_length || pc < 0)
7812
0
        janet_panic("invalid bytecode offset");
7813
0
    def->bytecode[pc] &= ~((uint32_t)0x80);
7814
0
}
7815
7816
/*
7817
 * Find a location for a breakpoint given a source file an
7818
 * location.
7819
 */
7820
void janet_debug_find(
7821
    JanetFuncDef **def_out, int32_t *pc_out,
7822
0
    const uint8_t *source, int32_t sourceLine, int32_t sourceColumn) {
7823
    /* Scan the heap for right func def */
7824
0
    JanetGCObject *current = janet_vm.blocks;
7825
    /* Keep track of the best source mapping we have seen so far */
7826
0
    int32_t besti = -1;
7827
0
    int32_t best_line = -1;
7828
0
    int32_t best_column = -1;
7829
0
    JanetFuncDef *best_def = NULL;
7830
0
    while (NULL != current) {
7831
0
        if ((current->flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_FUNCDEF) {
7832
0
            JanetFuncDef *def = (JanetFuncDef *)(current);
7833
0
            if (def->sourcemap &&
7834
0
                    def->source &&
7835
0
                    !janet_string_compare(source, def->source)) {
7836
                /* Correct source file, check mappings. The chosen
7837
                 * pc index is the instruction closest to the given line column, but
7838
                 * not after. */
7839
0
                int32_t i;
7840
0
                for (i = 0; i < def->bytecode_length; i++) {
7841
0
                    int32_t line = def->sourcemap[i].line;
7842
0
                    int32_t column = def->sourcemap[i].column;
7843
0
                    if (line <= sourceLine && line >= best_line) {
7844
0
                        if (column <= sourceColumn &&
7845
0
                                (line > best_line || column > best_column)) {
7846
0
                            best_line = line;
7847
0
                            best_column = column;
7848
0
                            besti = i;
7849
0
                            best_def = def;
7850
0
                        }
7851
0
                    }
7852
0
                }
7853
0
            }
7854
0
        }
7855
0
        current = current->data.next;
7856
0
    }
7857
0
    if (best_def) {
7858
0
        *def_out = best_def;
7859
0
        *pc_out = besti;
7860
0
    } else {
7861
0
        janet_panic("could not find breakpoint");
7862
0
    }
7863
0
}
7864
7865
0
void janet_stacktrace(JanetFiber *fiber, Janet err) {
7866
0
    const char *prefix = janet_checktype(err, JANET_NIL) ? NULL : "";
7867
0
    janet_stacktrace_ext(fiber, err, prefix);
7868
0
}
7869
7870
/* Error reporting. This can be emulated from within Janet, but for
7871
 * consistency with the top level code it is defined once. */
7872
0
void janet_stacktrace_ext(JanetFiber *fiber, Janet err, const char *prefix) {
7873
7874
0
    int32_t fi;
7875
0
    const char *errstr = (const char *)janet_to_string(err);
7876
0
    JanetFiber **fibers = NULL;
7877
0
    int wrote_error = !prefix;
7878
7879
0
    int print_color = janet_truthy(janet_dyn("err-color"));
7880
0
    if (print_color) janet_eprintf("\x1b[31m");
7881
7882
0
    while (fiber) {
7883
0
        janet_v_push(fibers, fiber);
7884
0
        fiber = fiber->child;
7885
0
    }
7886
7887
0
    for (fi = janet_v_count(fibers) - 1; fi >= 0; fi--) {
7888
0
        fiber = fibers[fi];
7889
0
        int32_t i = fiber->frame;
7890
0
        while (i > 0) {
7891
0
            JanetCFunRegistry *reg = NULL;
7892
0
            JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
7893
0
            JanetFuncDef *def = NULL;
7894
0
            i = frame->prevframe;
7895
7896
            /* Print prelude to stack frame */
7897
0
            if (!wrote_error) {
7898
0
                JanetFiberStatus status = janet_fiber_status(fiber);
7899
0
                janet_eprintf("%s%s: %s\n",
7900
0
                              prefix ? prefix : "",
7901
0
                              janet_status_names[status],
7902
0
                              errstr ? errstr : janet_status_names[status]);
7903
0
                wrote_error = 1;
7904
0
            }
7905
7906
0
            janet_eprintf("  in");
7907
7908
0
            if (frame->func) {
7909
0
                def = frame->func->def;
7910
0
                janet_eprintf(" %s", def->name ? (const char *)def->name : "<anonymous>");
7911
0
                if (def->source) {
7912
0
                    janet_eprintf(" [%s]", (const char *)def->source);
7913
0
                }
7914
0
            } else {
7915
0
                JanetCFunction cfun = (JanetCFunction)(frame->pc);
7916
0
                if (cfun) {
7917
0
                    reg = janet_registry_get(cfun);
7918
0
                    if (NULL != reg && NULL != reg->name) {
7919
0
                        if (reg->name_prefix) {
7920
0
                            janet_eprintf(" %s/%s", reg->name_prefix, reg->name);
7921
0
                        } else {
7922
0
                            janet_eprintf(" %s", reg->name);
7923
0
                        }
7924
0
                        if (NULL != reg->source_file) {
7925
0
                            janet_eprintf(" [%s]", reg->source_file);
7926
0
                        }
7927
0
                    } else {
7928
0
                        janet_eprintf(" <cfunction>");
7929
0
                    }
7930
0
                }
7931
0
            }
7932
0
            if (frame->flags & JANET_STACKFRAME_TAILCALL)
7933
0
                janet_eprintf(" (tail call)");
7934
0
            if (frame->func && frame->pc) {
7935
0
                int32_t off = (int32_t)(frame->pc - def->bytecode);
7936
0
                if (def->sourcemap) {
7937
0
                    JanetSourceMapping mapping = def->sourcemap[off];
7938
0
                    janet_eprintf(" on line %d, column %d", mapping.line, mapping.column);
7939
0
                } else {
7940
0
                    janet_eprintf(" pc=%d", off);
7941
0
                }
7942
0
            } else if (NULL != reg) {
7943
                /* C Function */
7944
0
                if (reg->source_line > 0) {
7945
0
                    janet_eprintf(" on line %d", (long) reg->source_line);
7946
0
                }
7947
0
            }
7948
0
            janet_eprintf("\n");
7949
            /* Print fiber points optionally. Clutters traces but provides info
7950
            if (i <= 0 && fi > 0) {
7951
                janet_eprintf("  in parent fiber\n");
7952
            }
7953
            */
7954
0
        }
7955
0
    }
7956
7957
0
    if (print_color) janet_eprintf("\x1b[0m");
7958
7959
0
    janet_v_free(fibers);
7960
0
}
7961
7962
/*
7963
 * CFuns
7964
 */
7965
7966
/* Helper to find funcdef and bytecode offset to insert or remove breakpoints.
7967
 * Takes a source file name and byte offset. */
7968
0
static void helper_find(int32_t argc, Janet *argv, JanetFuncDef **def, int32_t *bytecode_offset) {
7969
0
    janet_fixarity(argc, 3);
7970
0
    const uint8_t *source = janet_getstring(argv, 0);
7971
0
    int32_t line = janet_getinteger(argv, 1);
7972
0
    int32_t col = janet_getinteger(argv, 2);
7973
0
    janet_debug_find(def, bytecode_offset, source, line, col);
7974
0
}
7975
7976
/* Helper to find funcdef and bytecode offset to insert or remove breakpoints.
7977
 * Takes a function and byte offset*/
7978
0
static void helper_find_fun(int32_t argc, Janet *argv, JanetFuncDef **def, int32_t *bytecode_offset) {
7979
0
    janet_arity(argc, 1, 2);
7980
0
    JanetFunction *func = janet_getfunction(argv, 0);
7981
0
    int32_t offset = (argc == 2) ? janet_getinteger(argv, 1) : 0;
7982
0
    *def = func->def;
7983
0
    *bytecode_offset = offset;
7984
0
}
7985
7986
JANET_CORE_FN(cfun_debug_break,
7987
              "(debug/break source line col)",
7988
              "Sets a breakpoint in `source` at a given line and column. "
7989
              "Will throw an error if the breakpoint location "
7990
              "cannot be found. For example\n\n"
7991
              "\t(debug/break \"core.janet\" 10 4)\n\n"
7992
0
              "will set a breakpoint at line 10, 4th column of the file core.janet.") {
7993
0
    JanetFuncDef *def;
7994
0
    int32_t offset;
7995
0
    helper_find(argc, argv, &def, &offset);
7996
0
    janet_debug_break(def, offset);
7997
0
    return janet_wrap_nil();
7998
0
}
7999
8000
JANET_CORE_FN(cfun_debug_unbreak,
8001
              "(debug/unbreak source line column)",
8002
              "Remove a breakpoint with a source key at a given line and column. "
8003
              "Will throw an error if the breakpoint "
8004
0
              "cannot be found.") {
8005
0
    JanetFuncDef *def;
8006
0
    int32_t offset = 0;
8007
0
    helper_find(argc, argv, &def, &offset);
8008
0
    janet_debug_unbreak(def, offset);
8009
0
    return janet_wrap_nil();
8010
0
}
8011
8012
JANET_CORE_FN(cfun_debug_fbreak,
8013
              "(debug/fbreak fun &opt pc)",
8014
              "Set a breakpoint in a given function. pc is an optional offset, which "
8015
              "is in bytecode instructions. fun is a function value. Will throw an error "
8016
0
              "if the offset is too large or negative.") {
8017
0
    JanetFuncDef *def;
8018
0
    int32_t offset = 0;
8019
0
    helper_find_fun(argc, argv, &def, &offset);
8020
0
    janet_debug_break(def, offset);
8021
0
    return janet_wrap_nil();
8022
0
}
8023
8024
JANET_CORE_FN(cfun_debug_unfbreak,
8025
              "(debug/unfbreak fun &opt pc)",
8026
0
              "Unset a breakpoint set with debug/fbreak.") {
8027
0
    JanetFuncDef *def;
8028
0
    int32_t offset;
8029
0
    helper_find_fun(argc, argv, &def, &offset);
8030
0
    janet_debug_unbreak(def, offset);
8031
0
    return janet_wrap_nil();
8032
0
}
8033
8034
JANET_CORE_FN(cfun_debug_lineage,
8035
              "(debug/lineage fib)",
8036
              "Returns an array of all child fibers from a root fiber. This function "
8037
              "is useful when a fiber signals or errors to an ancestor fiber. Using this function, "
8038
              "the fiber handling the error can see which fiber raised the signal. This function should "
8039
0
              "be used mostly for debugging purposes.") {
8040
0
    janet_fixarity(argc, 1);
8041
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8042
0
    JanetArray *array = janet_array(0);
8043
0
    while (fiber) {
8044
0
        janet_array_push(array, janet_wrap_fiber(fiber));
8045
0
        fiber = fiber->child;
8046
0
    }
8047
0
    return janet_wrap_array(array);
8048
0
}
8049
8050
/* Extract info from one stack frame */
8051
0
static Janet doframe(JanetStackFrame *frame) {
8052
0
    int32_t off;
8053
0
    JanetTable *t = janet_table(3);
8054
0
    JanetFuncDef *def = NULL;
8055
0
    if (frame->func) {
8056
0
        janet_table_put(t, janet_ckeywordv("function"), janet_wrap_function(frame->func));
8057
0
        def = frame->func->def;
8058
0
        if (def->name) {
8059
0
            janet_table_put(t, janet_ckeywordv("name"), janet_wrap_string(def->name));
8060
0
        }
8061
0
    } else {
8062
0
        JanetCFunction cfun = (JanetCFunction)(frame->pc);
8063
0
        if (cfun) {
8064
0
            JanetCFunRegistry *reg = janet_registry_get(cfun);
8065
0
            if (NULL != reg->name) {
8066
0
                if (NULL != reg->name_prefix) {
8067
0
                    janet_table_put(t, janet_ckeywordv("name"), janet_wrap_string(janet_formatc("%s/%s", reg->name_prefix, reg->name)));
8068
0
                } else {
8069
0
                    janet_table_put(t, janet_ckeywordv("name"), janet_cstringv(reg->name));
8070
0
                }
8071
0
                if (NULL != reg->source_file) {
8072
0
                    janet_table_put(t, janet_ckeywordv("source"), janet_cstringv(reg->source_file));
8073
0
                }
8074
0
                if (reg->source_line > 0) {
8075
0
                    janet_table_put(t, janet_ckeywordv("source-line"), janet_wrap_integer(reg->source_line));
8076
0
                    janet_table_put(t, janet_ckeywordv("source-column"), janet_wrap_integer(1));
8077
0
                }
8078
0
            }
8079
0
        }
8080
0
        janet_table_put(t, janet_ckeywordv("c"), janet_wrap_true());
8081
0
    }
8082
0
    if (frame->flags & JANET_STACKFRAME_TAILCALL) {
8083
0
        janet_table_put(t, janet_ckeywordv("tail"), janet_wrap_true());
8084
0
    }
8085
0
    if (frame->func && frame->pc) {
8086
0
        Janet *stack = (Janet *)frame + JANET_FRAME_SIZE;
8087
0
        JanetArray *slots;
8088
0
        janet_assert(def != NULL, "def != NULL");
8089
0
        off = (int32_t)(frame->pc - def->bytecode);
8090
0
        janet_table_put(t, janet_ckeywordv("pc"), janet_wrap_integer(off));
8091
0
        if (def->sourcemap) {
8092
0
            JanetSourceMapping mapping = def->sourcemap[off];
8093
0
            janet_table_put(t, janet_ckeywordv("source-line"), janet_wrap_integer(mapping.line));
8094
0
            janet_table_put(t, janet_ckeywordv("source-column"), janet_wrap_integer(mapping.column));
8095
0
        }
8096
0
        if (def->source) {
8097
0
            janet_table_put(t, janet_ckeywordv("source"), janet_wrap_string(def->source));
8098
0
        }
8099
        /* Add stack arguments */
8100
0
        slots = janet_array(def->slotcount);
8101
0
        safe_memcpy(slots->data, stack, sizeof(Janet) * def->slotcount);
8102
0
        slots->count = def->slotcount;
8103
0
        janet_table_put(t, janet_ckeywordv("slots"), janet_wrap_array(slots));
8104
        /* Add local bindings */
8105
0
        if (def->symbolmap) {
8106
0
            JanetTable *local_bindings = janet_table(0);
8107
0
            for (int32_t i = def->symbolmap_length - 1; i >= 0; i--) {
8108
0
                JanetSymbolMap jsm = def->symbolmap[i];
8109
0
                Janet value = janet_wrap_nil();
8110
0
                uint32_t pc = (uint32_t)(frame->pc - def->bytecode);
8111
0
                if (jsm.birth_pc == UINT32_MAX) {
8112
0
                    JanetFuncEnv *env = frame->func->envs[jsm.death_pc];
8113
0
                    if (env->offset > 0) {
8114
0
                        value = env->as.fiber->data[env->offset + jsm.slot_index];
8115
0
                    } else {
8116
0
                        value = env->as.values[jsm.slot_index];
8117
0
                    }
8118
0
                } else if (pc >= jsm.birth_pc && pc < jsm.death_pc) {
8119
0
                    value = stack[jsm.slot_index];
8120
0
                }
8121
0
                janet_table_put(local_bindings, janet_wrap_symbol(jsm.symbol), value);
8122
0
            }
8123
0
            janet_table_put(t, janet_ckeywordv("locals"), janet_wrap_table(local_bindings));
8124
0
        }
8125
0
    }
8126
0
    return janet_wrap_table(t);
8127
0
}
8128
8129
JANET_CORE_FN(cfun_debug_stack,
8130
              "(debug/stack fib)",
8131
              "Gets information about the stack as an array of tables. Each table "
8132
              "in the array contains information about a stack frame. The top-most, current "
8133
              "stack frame is the first table in the array, and the bottom-most stack frame "
8134
              "is the last value. Each stack frame contains some of the following attributes:\n\n"
8135
              "* :c - true if the stack frame is a c function invocation\n\n"
8136
              "* :source-column - the current source column of the stack frame\n\n"
8137
              "* :function - the function that the stack frame represents\n\n"
8138
              "* :source-line - the current source line of the stack frame\n\n"
8139
              "* :name - the human-friendly name of the function\n\n"
8140
              "* :pc - integer indicating the location of the program counter\n\n"
8141
              "* :source - string with the file path or other identifier for the source code\n\n"
8142
              "* :slots - array of all values in each slot\n\n"
8143
0
              "* :tail - boolean indicating a tail call") {
8144
0
    janet_fixarity(argc, 1);
8145
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8146
0
    JanetArray *array = janet_array(0);
8147
0
    {
8148
0
        int32_t i = fiber->frame;
8149
0
        JanetStackFrame *frame;
8150
0
        while (i > 0) {
8151
0
            frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
8152
0
            janet_array_push(array, doframe(frame));
8153
0
            i = frame->prevframe;
8154
0
        }
8155
0
    }
8156
0
    return janet_wrap_array(array);
8157
0
}
8158
8159
JANET_CORE_FN(cfun_debug_stacktrace,
8160
              "(debug/stacktrace fiber &opt err prefix)",
8161
              "Prints a nice looking stacktrace for a fiber. Can optionally provide "
8162
              "an error value to print the stack trace with. If `prefix` is nil or not "
8163
0
              "provided, will skip the error line. Returns the fiber.") {
8164
0
    janet_arity(argc, 1, 3);
8165
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8166
0
    Janet x = argc == 1 ? janet_wrap_nil() : argv[1];
8167
0
    const char *prefix = janet_optcstring(argv, argc, 2, NULL);
8168
0
    janet_stacktrace_ext(fiber, x, prefix);
8169
0
    return argv[0];
8170
0
}
8171
8172
JANET_CORE_FN(cfun_debug_argstack,
8173
              "(debug/arg-stack fiber)",
8174
              "Gets all values currently on the fiber's argument stack. Normally, "
8175
              "this should be empty unless the fiber signals while pushing arguments "
8176
0
              "to make a function call. Returns a new array.") {
8177
0
    janet_fixarity(argc, 1);
8178
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8179
0
    JanetArray *array = janet_array(fiber->stacktop - fiber->stackstart);
8180
0
    memcpy(array->data, fiber->data + fiber->stackstart, array->capacity * sizeof(Janet));
8181
0
    array->count = array->capacity;
8182
0
    return janet_wrap_array(array);
8183
0
}
8184
8185
JANET_CORE_FN(cfun_debug_step,
8186
              "(debug/step fiber &opt x)",
8187
              "Run a fiber for one virtual instruction of the Janet machine. Can optionally "
8188
              "pass in a value that will be passed as the resuming value. Returns the signal value, "
8189
0
              "which will usually be nil, as breakpoints raise nil signals.") {
8190
0
    janet_arity(argc, 1, 2);
8191
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8192
0
    Janet out = janet_wrap_nil();
8193
0
    janet_step(fiber, argc == 1 ? janet_wrap_nil() : argv[1], &out);
8194
0
    return out;
8195
0
}
8196
8197
/* Module entry point */
8198
0
void janet_lib_debug(JanetTable *env) {
8199
0
    JanetRegExt debug_cfuns[] = {
8200
0
        JANET_CORE_REG("debug/break", cfun_debug_break),
8201
0
        JANET_CORE_REG("debug/unbreak", cfun_debug_unbreak),
8202
0
        JANET_CORE_REG("debug/fbreak", cfun_debug_fbreak),
8203
0
        JANET_CORE_REG("debug/unfbreak", cfun_debug_unfbreak),
8204
0
        JANET_CORE_REG("debug/arg-stack", cfun_debug_argstack),
8205
0
        JANET_CORE_REG("debug/stack", cfun_debug_stack),
8206
0
        JANET_CORE_REG("debug/stacktrace", cfun_debug_stacktrace),
8207
0
        JANET_CORE_REG("debug/lineage", cfun_debug_lineage),
8208
0
        JANET_CORE_REG("debug/step", cfun_debug_step),
8209
0
        JANET_REG_END
8210
0
    };
8211
0
    janet_core_cfuns_ext(env, NULL, debug_cfuns);
8212
0
}
8213
8214
8215
/* src/core/emit.c */
8216
#line 0 "src/core/emit.c"
8217
8218
/*
8219
* Copyright (c) 2025 Calvin Rose
8220
*
8221
* Permission is hereby granted, free of charge, to any person obtaining a copy
8222
* of this software and associated documentation files (the "Software"), to
8223
* deal in the Software without restriction, including without limitation the
8224
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8225
* sell copies of the Software, and to permit persons to whom the Software is
8226
* furnished to do so, subject to the following conditions:
8227
*
8228
* The above copyright notice and this permission notice shall be included in
8229
* all copies or substantial portions of the Software.
8230
*
8231
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8232
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8233
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8234
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
8235
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
8236
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
8237
* IN THE SOFTWARE.
8238
*/
8239
8240
#ifndef JANET_AMALG
8241
#include "features.h"
8242
#include <janet.h>
8243
#include "emit.h"
8244
#include "vector.h"
8245
#include "regalloc.h"
8246
#include "util.h"
8247
#endif
8248
8249
/* Get a register */
8250
0
int32_t janetc_allocfar(JanetCompiler *c) {
8251
0
    int32_t reg = janetc_regalloc_1(&c->scope->ra);
8252
0
    if (reg > 0xFFFF) {
8253
0
        janetc_cerror(c, "ran out of internal registers");
8254
0
    }
8255
0
    return reg;
8256
0
}
8257
8258
/* Get a register less than 256 for temporary use. */
8259
0
int32_t janetc_allocnear(JanetCompiler *c, JanetcRegisterTemp tag) {
8260
0
    return janetc_regalloc_temp(&c->scope->ra, tag);
8261
0
}
8262
8263
/* Emit a raw instruction with source mapping. */
8264
0
void janetc_emit(JanetCompiler *c, uint32_t instr) {
8265
0
    janet_v_push(c->buffer, instr);
8266
0
    janet_v_push(c->mapbuffer, c->current_mapping);
8267
0
}
8268
8269
/* Add a constant to the current scope. Return the index of the constant. */
8270
0
static int32_t janetc_const(JanetCompiler *c, Janet x) {
8271
0
    JanetScope *scope = c->scope;
8272
0
    int32_t i, len;
8273
    /* Get the topmost function scope */
8274
0
    while (scope) {
8275
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
8276
0
            break;
8277
0
        scope = scope->parent;
8278
0
    }
8279
    /* Check if already added */
8280
0
    len = janet_v_count(scope->consts);
8281
0
    for (i = 0; i < len; i++) {
8282
0
        if (janet_equals(x, scope->consts[i]))
8283
0
            return i;
8284
0
    }
8285
    /* Ensure not too many constants. */
8286
0
    if (len >= 0xFFFF) {
8287
0
        janetc_cerror(c, "too many constants");
8288
0
        return 0;
8289
0
    }
8290
0
    janet_v_push(scope->consts, x);
8291
0
    return len;
8292
0
}
8293
8294
/* Load a constant into a local register */
8295
0
static void janetc_loadconst(JanetCompiler *c, Janet k, int32_t reg) {
8296
0
    switch (janet_type(k)) {
8297
0
        case JANET_NIL:
8298
0
            janetc_emit(c, (reg << 8) | JOP_LOAD_NIL);
8299
0
            break;
8300
0
        case JANET_BOOLEAN:
8301
0
            janetc_emit(c, (reg << 8) |
8302
0
                        (janet_unwrap_boolean(k) ? JOP_LOAD_TRUE : JOP_LOAD_FALSE));
8303
0
            break;
8304
0
        case JANET_NUMBER: {
8305
0
            double dval = janet_unwrap_number(k);
8306
0
            if (dval < INT16_MIN || dval > INT16_MAX)
8307
0
                goto do_constant;
8308
0
            int32_t i = (int32_t) dval;
8309
0
            if (dval != i)
8310
0
                goto do_constant;
8311
0
            uint32_t iu = (uint32_t)i;
8312
0
            janetc_emit(c,
8313
0
                        (iu << 16) |
8314
0
                        (reg << 8) |
8315
0
                        JOP_LOAD_INTEGER);
8316
0
            break;
8317
0
        }
8318
0
        default:
8319
0
        do_constant: {
8320
0
                int32_t cindex = janetc_const(c, k);
8321
0
                janetc_emit(c,
8322
0
                            (cindex << 16) |
8323
0
                            (reg << 8) |
8324
0
                            JOP_LOAD_CONSTANT);
8325
0
                break;
8326
0
            }
8327
0
    }
8328
0
}
8329
8330
/* Move a slot to a near register */
8331
static void janetc_movenear(JanetCompiler *c,
8332
                            int32_t dest,
8333
0
                            JanetSlot src) {
8334
0
    if (src.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF)) {
8335
0
        janetc_loadconst(c, src.constant, dest);
8336
        /* If we also are a reference, deref the one element array */
8337
0
        if (src.flags & JANET_SLOT_REF) {
8338
0
            janetc_emit(c,
8339
0
                        (dest << 16) |
8340
0
                        (dest << 8) |
8341
0
                        JOP_GET_INDEX);
8342
0
        }
8343
0
    } else if (src.envindex >= 0) {
8344
0
        janetc_emit(c,
8345
0
                    ((uint32_t)(src.index) << 24) |
8346
0
                    ((uint32_t)(src.envindex) << 16) |
8347
0
                    ((uint32_t)(dest) << 8) |
8348
0
                    JOP_LOAD_UPVALUE);
8349
0
    } else if (src.index != dest) {
8350
0
        janet_assert(src.index >= 0, "bad slot");
8351
0
        janetc_emit(c,
8352
0
                    ((uint32_t)(src.index) << 16) |
8353
0
                    ((uint32_t)(dest) << 8) |
8354
0
                    JOP_MOVE_NEAR);
8355
0
    }
8356
0
}
8357
8358
/* Move a near register to a Slot. */
8359
static void janetc_moveback(JanetCompiler *c,
8360
                            JanetSlot dest,
8361
0
                            int32_t src) {
8362
0
    if (dest.flags & JANET_SLOT_REF) {
8363
0
        int32_t refreg = janetc_regalloc_temp(&c->scope->ra, JANETC_REGTEMP_5);
8364
0
        janetc_loadconst(c, dest.constant, refreg);
8365
0
        janetc_emit(c,
8366
0
                    (src << 16) |
8367
0
                    (refreg << 8) |
8368
0
                    JOP_PUT_INDEX);
8369
0
        janetc_regalloc_freetemp(&c->scope->ra, refreg, JANETC_REGTEMP_5);
8370
0
    } else if (dest.envindex >= 0) {
8371
0
        janetc_emit(c,
8372
0
                    ((uint32_t)(dest.index) << 24) |
8373
0
                    ((uint32_t)(dest.envindex) << 16) |
8374
0
                    ((uint32_t)(src) << 8) |
8375
0
                    JOP_SET_UPVALUE);
8376
0
    } else if (dest.index != src) {
8377
0
        janet_assert(dest.index >= 0, "bad slot");
8378
0
        janetc_emit(c,
8379
0
                    ((uint32_t)(dest.index) << 16) |
8380
0
                    ((uint32_t)(src) << 8) |
8381
0
                    JOP_MOVE_FAR);
8382
0
    }
8383
0
}
8384
8385
/* Call this to release a register after emitting the instruction. */
8386
0
static void janetc_free_regnear(JanetCompiler *c, JanetSlot s, int32_t reg, JanetcRegisterTemp tag) {
8387
0
    if (reg != s.index ||
8388
0
            s.envindex >= 0 ||
8389
0
            s.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF)) {
8390
        /* We need to free the temporary slot */
8391
0
        janetc_regalloc_freetemp(&c->scope->ra, reg, tag);
8392
0
    }
8393
0
}
8394
8395
/* Convert a slot to a two byte register */
8396
0
static int32_t janetc_regfar(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp tag) {
8397
    /* check if already near register */
8398
0
    if (s.envindex < 0 && s.index >= 0) {
8399
0
        return s.index;
8400
0
    }
8401
0
    int32_t reg;
8402
0
    int32_t nearreg = janetc_regalloc_temp(&c->scope->ra, tag);
8403
0
    janetc_movenear(c, nearreg, s);
8404
0
    if (nearreg >= 0xF0) {
8405
0
        reg = janetc_allocfar(c);
8406
0
        janetc_emit(c, JOP_MOVE_FAR | (nearreg << 8) | (reg << 16));
8407
0
        janetc_regalloc_freetemp(&c->scope->ra, nearreg, tag);
8408
0
    } else {
8409
0
        reg = nearreg;
8410
0
        janetc_regalloc_freetemp(&c->scope->ra, nearreg, tag);
8411
0
        janetc_regalloc_touch(&c->scope->ra, reg);
8412
0
    }
8413
0
    return reg;
8414
0
}
8415
8416
/* Convert a slot to a temporary 1 byte register */
8417
0
static int32_t janetc_regnear(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp tag) {
8418
    /* check if already near register */
8419
0
    if (s.envindex < 0 && s.index >= 0 && s.index <= 0xFF) {
8420
0
        return s.index;
8421
0
    }
8422
0
    int32_t reg = janetc_regalloc_temp(&c->scope->ra, tag);
8423
0
    janetc_movenear(c, reg, s);
8424
0
    return reg;
8425
0
}
8426
8427
/* Check if two slots are equal */
8428
0
int janetc_sequal(JanetSlot lhs, JanetSlot rhs) {
8429
0
    if ((lhs.flags & ~JANET_SLOTTYPE_ANY) == (rhs.flags & ~JANET_SLOTTYPE_ANY) &&
8430
0
            lhs.index == rhs.index &&
8431
0
            lhs.envindex == rhs.envindex) {
8432
0
        if (lhs.flags & (JANET_SLOT_REF | JANET_SLOT_CONSTANT)) {
8433
0
            return janet_equals(lhs.constant, rhs.constant);
8434
0
        } else {
8435
0
            return 1;
8436
0
        }
8437
0
    }
8438
0
    return 0;
8439
0
}
8440
8441
/* Move values from one slot to another. The destination must
8442
 * be writeable (not a literal). */
8443
void janetc_copy(
8444
    JanetCompiler *c,
8445
    JanetSlot dest,
8446
0
    JanetSlot src) {
8447
0
    if (dest.flags & JANET_SLOT_CONSTANT) {
8448
0
        janetc_cerror(c, "cannot write to constant");
8449
0
        return;
8450
0
    }
8451
0
    if (janetc_sequal(dest, src)) return;
8452
    /* If dest is a near register */
8453
0
    if (dest.envindex < 0 && dest.index >= 0 && dest.index <= 0xFF) {
8454
0
        janetc_movenear(c, dest.index, src);
8455
0
        return;
8456
0
    }
8457
    /* If src is a near register */
8458
0
    if (src.envindex < 0 && src.index >= 0 && src.index <= 0xFF) {
8459
0
        janetc_moveback(c, dest, src.index);
8460
0
        return;
8461
0
    }
8462
    /* Process: src -> near -> dest */
8463
0
    int32_t nearreg = janetc_allocnear(c, JANETC_REGTEMP_3);
8464
0
    janetc_movenear(c, nearreg, src);
8465
0
    janetc_moveback(c, dest, nearreg);
8466
    /* Cleanup */
8467
0
    janetc_regalloc_freetemp(&c->scope->ra, nearreg, JANETC_REGTEMP_3);
8468
0
}
8469
8470
/* Instruction templated emitters */
8471
8472
0
static int32_t emit1s(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t rest, int wr) {
8473
0
    int32_t reg = janetc_regnear(c, s, JANETC_REGTEMP_0);
8474
0
    int32_t label = janet_v_count(c->buffer);
8475
0
    janetc_emit(c, op | (reg << 8) | ((uint32_t)rest << 16));
8476
0
    if (wr)
8477
0
        janetc_moveback(c, s, reg);
8478
0
    janetc_free_regnear(c, s, reg, JANETC_REGTEMP_0);
8479
0
    return label;
8480
0
}
8481
8482
0
int32_t janetc_emit_s(JanetCompiler *c, uint8_t op, JanetSlot s, int wr) {
8483
0
    int32_t reg = janetc_regfar(c, s, JANETC_REGTEMP_0);
8484
0
    int32_t label = janet_v_count(c->buffer);
8485
0
    janetc_emit(c, op | (reg << 8));
8486
0
    if (wr)
8487
0
        janetc_moveback(c, s, reg);
8488
0
    janetc_free_regnear(c, s, reg, JANETC_REGTEMP_0);
8489
0
    return label;
8490
0
}
8491
8492
0
int32_t janetc_emit_sl(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t label) {
8493
0
    int32_t current = janet_v_count(c->buffer) - 1;
8494
0
    int32_t jump = label - current;
8495
0
    if (jump < INT16_MIN || jump > INT16_MAX) {
8496
0
        janetc_cerror(c, "jump is too far");
8497
0
    }
8498
0
    return emit1s(c, op, s, jump, 0);
8499
0
}
8500
8501
0
int32_t janetc_emit_st(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t tflags) {
8502
0
    return emit1s(c, op, s, tflags, 0);
8503
0
}
8504
8505
0
int32_t janetc_emit_si(JanetCompiler *c, uint8_t op, JanetSlot s, int16_t immediate, int wr) {
8506
0
    return emit1s(c, op, s, immediate, wr);
8507
0
}
8508
8509
0
int32_t janetc_emit_su(JanetCompiler *c, uint8_t op, JanetSlot s, uint16_t immediate, int wr) {
8510
0
    return emit1s(c, op, s, (int32_t) immediate, wr);
8511
0
}
8512
8513
0
static int32_t emit2s(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int32_t rest, int wr) {
8514
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8515
0
    int32_t reg2 = janetc_regnear(c, s2, JANETC_REGTEMP_1);
8516
0
    int32_t label = janet_v_count(c->buffer);
8517
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16) | ((uint32_t)rest << 24));
8518
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8519
0
    if (wr)
8520
0
        janetc_moveback(c, s1, reg1);
8521
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8522
0
    return label;
8523
0
}
8524
8525
0
int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int wr) {
8526
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8527
0
    int32_t reg2 = janetc_regfar(c, s2, JANETC_REGTEMP_1);
8528
0
    int32_t label = janet_v_count(c->buffer);
8529
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16));
8530
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8531
0
    if (wr)
8532
0
        janetc_moveback(c, s1, reg1);
8533
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8534
0
    return label;
8535
0
}
8536
8537
0
int32_t janetc_emit_ssi(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int8_t immediate, int wr) {
8538
0
    return emit2s(c, op, s1, s2, immediate, wr);
8539
0
}
8540
8541
0
int32_t janetc_emit_ssu(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, uint8_t immediate, int wr) {
8542
0
    return emit2s(c, op, s1, s2, (int32_t) immediate, wr);
8543
0
}
8544
8545
0
int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, JanetSlot s3, int wr) {
8546
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8547
0
    int32_t reg2 = janetc_regnear(c, s2, JANETC_REGTEMP_1);
8548
0
    int32_t reg3 = janetc_regnear(c, s3, JANETC_REGTEMP_2);
8549
0
    int32_t label = janet_v_count(c->buffer);
8550
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16) | ((uint32_t)reg3 << 24));
8551
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8552
0
    janetc_free_regnear(c, s3, reg3, JANETC_REGTEMP_2);
8553
0
    if (wr)
8554
0
        janetc_moveback(c, s1, reg1);
8555
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8556
0
    return label;
8557
0
}
8558
8559
8560
/* src/core/ev.c */
8561
#line 0 "src/core/ev.c"
8562
8563
/*
8564
* Copyright (c) 2025 Calvin Rose
8565
*
8566
* Permission is hereby granted, free of charge, to any person obtaining a copy
8567
* of this software and associated documentation files (the "Software"), to
8568
* deal in the Software without restriction, including without limitation the
8569
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8570
* sell copies of the Software, and to permit persons to whom the Software is
8571
* furnished to do so, subject to the following conditions:
8572
*
8573
* The above copyright notice and this permission notice shall be included in
8574
* all copies or substantial portions of the Software.
8575
*
8576
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8577
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8578
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8579
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
8580
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
8581
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
8582
* IN THE SOFTWARE.
8583
*/
8584
8585
#ifndef JANET_AMALG
8586
#include "features.h"
8587
#include <janet.h>
8588
#include "util.h"
8589
#include "gc.h"
8590
#include "state.h"
8591
#include "fiber.h"
8592
#endif
8593
8594
#ifdef JANET_EV
8595
8596
#include <math.h>
8597
#include <fcntl.h>
8598
#ifdef JANET_WINDOWS
8599
#include <winsock2.h>
8600
#include <windows.h>
8601
#include <io.h>
8602
#else
8603
#include <pthread.h>
8604
#include <limits.h>
8605
#include <errno.h>
8606
#include <unistd.h>
8607
#include <signal.h>
8608
#include <sys/ioctl.h>
8609
#include <sys/types.h>
8610
#include <netinet/in.h>
8611
#include <netinet/tcp.h>
8612
#include <netdb.h>
8613
#include <sys/socket.h>
8614
#include <sys/wait.h>
8615
#ifdef JANET_EV_EPOLL
8616
#include <sys/epoll.h>
8617
#include <sys/timerfd.h>
8618
#endif
8619
#ifdef JANET_EV_KQUEUE
8620
#include <sys/event.h>
8621
#endif
8622
#ifdef JANET_EV_POLL
8623
#include <poll.h>
8624
#endif
8625
#endif
8626
8627
typedef struct {
8628
    JanetVM *thread;
8629
    JanetFiber *fiber;
8630
    uint32_t sched_id;
8631
    enum {
8632
        JANET_CP_MODE_READ,
8633
        JANET_CP_MODE_WRITE,
8634
        JANET_CP_MODE_CHOICE_READ,
8635
        JANET_CP_MODE_CHOICE_WRITE,
8636
        JANET_CP_MODE_CLOSE
8637
    } mode;
8638
} JanetChannelPending;
8639
8640
struct JanetChannel {
8641
    JanetQueue items;
8642
    JanetQueue read_pending;
8643
    JanetQueue write_pending;
8644
    int32_t limit;
8645
    int closed;
8646
    int is_threaded;
8647
#ifdef JANET_WINDOWS
8648
    CRITICAL_SECTION lock;
8649
#else
8650
    pthread_mutex_t lock;
8651
#endif
8652
};
8653
8654
typedef struct {
8655
    JanetFiber *fiber;
8656
    Janet value;
8657
    JanetSignal sig;
8658
    uint32_t expected_sched_id; /* If the fiber has been rescheduled this loop, don't run first scheduling. */
8659
} JanetTask;
8660
8661
/* Wrap return value by pairing it with the callback used to handle it
8662
 * in the main thread */
8663
typedef struct {
8664
    JanetEVGenericMessage msg;
8665
    JanetThreadedCallback cb;
8666
} JanetSelfPipeEvent;
8667
8668
/* Structure used to initialize threads in the thread pool
8669
 * (same head structure as self pipe event)*/
8670
typedef struct {
8671
    JanetEVGenericMessage msg;
8672
    JanetThreadedCallback cb;
8673
    JanetThreadedSubroutine subr;
8674
    JanetHandle write_pipe;
8675
} JanetEVThreadInit;
8676
8677
/* Structure used to initialize threads that run timeouts */
8678
typedef struct {
8679
    double sec;
8680
    JanetVM *vm;
8681
    JanetFiber *fiber;
8682
} JanetThreadedTimeout;
8683
8684
0
#define JANET_MAX_Q_CAPACITY 0x7FFFFFF
8685
8686
6.23k
static void janet_q_init(JanetQueue *q) {
8687
6.23k
    q->data = NULL;
8688
6.23k
    q->head = 0;
8689
6.23k
    q->tail = 0;
8690
6.23k
    q->capacity = 0;
8691
6.23k
}
8692
8693
6.23k
static void janet_q_deinit(JanetQueue *q) {
8694
6.23k
    janet_free(q->data);
8695
6.23k
}
8696
8697
0
static int32_t janet_q_count(JanetQueue *q) {
8698
0
    return (q->head > q->tail)
8699
0
           ? (q->tail + q->capacity - q->head)
8700
0
           : (q->tail - q->head);
8701
0
}
8702
8703
0
static int janet_q_maybe_resize(JanetQueue *q, size_t itemsize) {
8704
0
    int32_t count = janet_q_count(q);
8705
    /* Resize if needed */
8706
0
    if (count + 1 >= q->capacity) {
8707
0
        if (count + 1 >= JANET_MAX_Q_CAPACITY) return 1;
8708
0
        int32_t newcap = (count + 2) * 2;
8709
0
        if (newcap > JANET_MAX_Q_CAPACITY) newcap = JANET_MAX_Q_CAPACITY;
8710
0
        q->data = janet_realloc(q->data, itemsize * newcap);
8711
0
        if (NULL == q->data) {
8712
0
            JANET_OUT_OF_MEMORY;
8713
0
        }
8714
0
        if (q->head > q->tail) {
8715
            /* Two segments, fix 2nd seg. */
8716
0
            int32_t newhead = q->head + (newcap - q->capacity);
8717
0
            size_t seg1 = (size_t)(q->capacity - q->head);
8718
0
            if (seg1 > 0) {
8719
0
                memmove((char *) q->data + (newhead * itemsize),
8720
0
                        (char *) q->data + (q->head * itemsize),
8721
0
                        seg1 * itemsize);
8722
0
            }
8723
0
            q->head = newhead;
8724
0
        }
8725
0
        q->capacity = newcap;
8726
0
    }
8727
0
    return 0;
8728
0
}
8729
8730
0
static int janet_q_push(JanetQueue *q, void *item, size_t itemsize) {
8731
0
    if (janet_q_maybe_resize(q, itemsize)) return 1;
8732
0
    memcpy((char *) q->data + itemsize * q->tail, item, itemsize);
8733
0
    q->tail = q->tail + 1 < q->capacity ? q->tail + 1 : 0;
8734
0
    return 0;
8735
0
}
8736
8737
0
static int janet_q_push_head(JanetQueue *q, void *item, size_t itemsize) {
8738
0
    if (janet_q_maybe_resize(q, itemsize)) return 1;
8739
0
    int32_t newhead = q->head - 1;
8740
0
    if (newhead < 0) {
8741
0
        newhead += q->capacity;
8742
0
    }
8743
0
    memcpy((char *) q->data + itemsize * newhead, item, itemsize);
8744
0
    q->head = newhead;
8745
0
    return 0;
8746
0
}
8747
8748
0
static int janet_q_pop(JanetQueue *q, void *out, size_t itemsize) {
8749
0
    if (q->head == q->tail) return 1;
8750
0
    memcpy(out, (char *) q->data + itemsize * q->head, itemsize);
8751
0
    q->head = q->head + 1 < q->capacity ? q->head + 1 : 0;
8752
0
    return 0;
8753
0
}
8754
8755
/* Get current timestamp (millisecond precision) */
8756
static JanetTimestamp ts_now(void);
8757
8758
/* Get current timestamp + an interval (millisecond precision) */
8759
0
static JanetTimestamp ts_delta(JanetTimestamp ts, double delta) {
8760
0
    if (isinf(delta)) {
8761
0
        return delta < 0 ? ts : INT64_MAX;
8762
0
    }
8763
0
    ts += (int64_t)round(delta * 1000);
8764
0
    return ts;
8765
0
}
8766
8767
/* Look at the next timeout value without removing it. */
8768
6.23k
static int peek_timeout(JanetTimeout *out) {
8769
6.23k
    if (janet_vm.tq_count == 0) return 0;
8770
0
    *out = janet_vm.tq[0];
8771
0
    return 1;
8772
6.23k
}
8773
8774
/* Remove the next timeout from the priority queue */
8775
0
static void pop_timeout(size_t index) {
8776
0
    if (janet_vm.tq_count <= index) return;
8777
0
    janet_vm.tq[index] = janet_vm.tq[--janet_vm.tq_count];
8778
0
    for (;;) {
8779
0
        size_t left = (index << 1) + 1;
8780
0
        size_t right = left + 1;
8781
0
        size_t smallest = index;
8782
0
        if (left < janet_vm.tq_count &&
8783
0
                (janet_vm.tq[left].when < janet_vm.tq[smallest].when))
8784
0
            smallest = left;
8785
0
        if (right < janet_vm.tq_count &&
8786
0
                (janet_vm.tq[right].when < janet_vm.tq[smallest].when))
8787
0
            smallest = right;
8788
0
        if (smallest == index) return;
8789
0
        JanetTimeout temp = janet_vm.tq[index];
8790
0
        janet_vm.tq[index] = janet_vm.tq[smallest];
8791
0
        janet_vm.tq[smallest] = temp;
8792
0
        index = smallest;
8793
0
    }
8794
0
}
8795
8796
/* Add a timeout to the timeout min heap */
8797
0
static void add_timeout(JanetTimeout to) {
8798
0
    size_t oldcount = janet_vm.tq_count;
8799
0
    size_t newcount = oldcount + 1;
8800
0
    if (newcount > janet_vm.tq_capacity) {
8801
0
        size_t newcap = 2 * newcount;
8802
0
        JanetTimeout *tq = janet_realloc(janet_vm.tq, newcap * sizeof(JanetTimeout));
8803
0
        if (NULL == tq) {
8804
0
            JANET_OUT_OF_MEMORY;
8805
0
        }
8806
0
        janet_vm.tq = tq;
8807
0
        janet_vm.tq_capacity = newcap;
8808
0
    }
8809
    /* Append */
8810
0
    janet_vm.tq_count = (int32_t) newcount;
8811
0
    janet_vm.tq[oldcount] = to;
8812
    /* Heapify */
8813
0
    size_t index = oldcount;
8814
0
    while (index > 0) {
8815
0
        size_t parent = (index - 1) >> 1;
8816
0
        if (janet_vm.tq[parent].when <= janet_vm.tq[index].when) break;
8817
        /* Swap */
8818
0
        JanetTimeout tmp = janet_vm.tq[index];
8819
0
        janet_vm.tq[index] = janet_vm.tq[parent];
8820
0
        janet_vm.tq[parent] = tmp;
8821
        /* Next */
8822
0
        index = parent;
8823
0
    }
8824
0
}
8825
8826
0
void janet_async_end(JanetFiber *fiber) {
8827
0
    if (fiber->ev_callback) {
8828
0
        if (fiber->ev_stream->read_fiber == fiber) {
8829
0
            fiber->ev_stream->read_fiber = NULL;
8830
0
        }
8831
0
        if (fiber->ev_stream->write_fiber == fiber) {
8832
0
            fiber->ev_stream->write_fiber = NULL;
8833
0
        }
8834
0
        fiber->ev_callback(fiber, JANET_ASYNC_EVENT_DEINIT);
8835
0
        janet_gcunroot(janet_wrap_abstract(fiber->ev_stream));
8836
0
        fiber->ev_callback = NULL;
8837
0
        if (!(fiber->flags & JANET_FIBER_EV_FLAG_IN_FLIGHT)) {
8838
0
            if (fiber->ev_state) {
8839
0
                janet_free(fiber->ev_state);
8840
0
                fiber->ev_state = NULL;
8841
0
            }
8842
0
            janet_ev_dec_refcount();
8843
0
        }
8844
0
    }
8845
0
}
8846
8847
0
void janet_async_in_flight(JanetFiber *fiber) {
8848
#ifdef JANET_WINDOWS
8849
    fiber->flags |= JANET_FIBER_EV_FLAG_IN_FLIGHT;
8850
#else
8851
0
    (void) fiber;
8852
0
#endif
8853
0
}
8854
8855
0
void janet_async_start_fiber(JanetFiber *fiber, JanetStream *stream, JanetAsyncMode mode, JanetEVCallback callback, void *state) {
8856
0
    janet_assert(!fiber->ev_callback, "double async on fiber");
8857
0
    if (mode & JANET_ASYNC_LISTEN_READ) {
8858
0
        stream->read_fiber = fiber;
8859
0
    }
8860
0
    if (mode & JANET_ASYNC_LISTEN_WRITE) {
8861
0
        stream->write_fiber = fiber;
8862
0
    }
8863
0
    fiber->ev_callback = callback;
8864
0
    fiber->ev_stream = stream;
8865
0
    janet_ev_inc_refcount();
8866
0
    janet_gcroot(janet_wrap_abstract(stream));
8867
0
    fiber->ev_state = state;
8868
0
    callback(fiber, JANET_ASYNC_EVENT_INIT);
8869
0
}
8870
8871
0
void janet_async_start(JanetStream *stream, JanetAsyncMode mode, JanetEVCallback callback, void *state) {
8872
0
    janet_async_start_fiber(janet_vm.root_fiber, stream, mode, callback, state);
8873
0
    janet_await();
8874
0
}
8875
8876
0
void janet_fiber_did_resume(JanetFiber *fiber) {
8877
0
    janet_async_end(fiber);
8878
0
}
8879
8880
0
static void janet_stream_checktoclose(JanetStream *stream) {
8881
0
    if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->read_fiber && !stream->write_fiber) {
8882
0
        janet_stream_close(stream);
8883
0
    }
8884
0
}
8885
8886
/* Forward declaration */
8887
static void janet_register_stream(JanetStream *stream);
8888
8889
static const JanetMethod ev_default_stream_methods[] = {
8890
    {"close", janet_cfun_stream_close},
8891
    {"read", janet_cfun_stream_read},
8892
    {"chunk", janet_cfun_stream_chunk},
8893
    {"write", janet_cfun_stream_write},
8894
    {NULL, NULL}
8895
};
8896
8897
/* Create a stream*/
8898
0
JanetStream *janet_stream_ext(JanetHandle handle, uint32_t flags, const JanetMethod *methods, size_t size) {
8899
0
    janet_assert(size >= sizeof(JanetStream), "bad size");
8900
0
    JanetStream *stream = janet_abstract(&janet_stream_type, size);
8901
0
    stream->handle = handle;
8902
0
    stream->flags = flags;
8903
0
    stream->read_fiber = NULL;
8904
0
    stream->write_fiber = NULL;
8905
0
    if (methods == NULL) methods = ev_default_stream_methods;
8906
0
    stream->methods = methods;
8907
0
    stream->index = 0;
8908
0
    janet_register_stream(stream);
8909
0
    return stream;
8910
0
}
8911
8912
0
JanetStream *janet_stream(JanetHandle handle, uint32_t flags, const JanetMethod *methods) {
8913
0
    return janet_stream_ext(handle, flags, methods, sizeof(JanetStream));
8914
0
}
8915
8916
0
static void janet_stream_close_impl(JanetStream *stream) {
8917
0
    stream->flags |= JANET_STREAM_CLOSED;
8918
0
    int canclose = !(stream->flags & JANET_STREAM_NOT_CLOSEABLE);
8919
#ifdef JANET_WINDOWS
8920
    if (stream->handle != INVALID_HANDLE_VALUE) {
8921
#ifdef JANET_NET
8922
        if (stream->flags & JANET_STREAM_SOCKET) {
8923
            if (canclose) closesocket((SOCKET) stream->handle);
8924
        } else
8925
#endif
8926
        {
8927
            if (canclose) CloseHandle(stream->handle);
8928
        }
8929
        stream->handle = INVALID_HANDLE_VALUE;
8930
    }
8931
#else
8932
0
    if (stream->handle != -1) {
8933
0
        if (canclose) close(stream->handle);
8934
0
        stream->handle = -1;
8935
#ifdef JANET_EV_POLL
8936
        uint32_t i = stream->index;
8937
        size_t j = janet_vm.stream_count - 1;
8938
        JanetStream *last = janet_vm.streams[j];
8939
        struct pollfd lastfd = janet_vm.fds[j + 1];
8940
        janet_vm.fds[i + 1] = lastfd;
8941
        janet_vm.streams[i] = last;
8942
        last->index = stream->index;
8943
        janet_vm.stream_count--;
8944
#endif
8945
0
    }
8946
0
#endif
8947
0
}
8948
8949
0
void janet_stream_close(JanetStream *stream) {
8950
0
    JanetFiber *rf = stream->read_fiber;
8951
0
    JanetFiber *wf = stream->write_fiber;
8952
0
    if (rf && rf->ev_callback) {
8953
0
        rf->ev_callback(rf, JANET_ASYNC_EVENT_CLOSE);
8954
0
        stream->read_fiber = NULL;
8955
0
    }
8956
0
    if (wf && wf->ev_callback) {
8957
0
        wf->ev_callback(wf, JANET_ASYNC_EVENT_CLOSE);
8958
0
        stream->write_fiber = NULL;
8959
0
    }
8960
0
    janet_stream_close_impl(stream);
8961
0
}
8962
8963
/* Called to clean up a stream */
8964
0
static int janet_stream_gc(void *p, size_t s) {
8965
0
    (void) s;
8966
0
    JanetStream *stream = (JanetStream *)p;
8967
0
    janet_stream_close_impl(stream);
8968
0
    return 0;
8969
0
}
8970
8971
/* Mark a stream for GC */
8972
0
static int janet_stream_mark(void *p, size_t s) {
8973
0
    (void) s;
8974
0
    JanetStream *stream = (JanetStream *) p;
8975
0
    JanetFiber *rf = stream->read_fiber;
8976
0
    JanetFiber *wf = stream->write_fiber;
8977
0
    if (rf) {
8978
0
        janet_mark(janet_wrap_fiber(rf));
8979
0
    }
8980
0
    if (wf) {
8981
0
        janet_mark(janet_wrap_fiber(wf));
8982
0
    }
8983
0
    return 0;
8984
0
}
8985
8986
0
static int janet_stream_getter(void *p, Janet key, Janet *out) {
8987
0
    JanetStream *stream = (JanetStream *)p;
8988
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
8989
0
    const JanetMethod *stream_methods = stream->methods;
8990
0
    return janet_getmethod(janet_unwrap_keyword(key), stream_methods, out);
8991
0
}
8992
8993
0
static void janet_stream_marshal(void *p, JanetMarshalContext *ctx) {
8994
0
    JanetStream *s = p;
8995
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
8996
0
        janet_panic("can only marshal stream with unsafe flag");
8997
0
    }
8998
0
    janet_marshal_abstract(ctx, p);
8999
0
    janet_marshal_int(ctx, (int32_t) s->flags);
9000
0
    janet_marshal_ptr(ctx, s->methods);
9001
#ifdef JANET_WINDOWS
9002
    /* TODO - ref counting to avoid situation where a handle is closed or GCed
9003
     * while in transit, and it's value gets reused. DuplicateHandle does not work
9004
     * for network sockets, and in general for winsock it is better to not duplicate
9005
     * unless there is a need to. */
9006
    HANDLE duph = INVALID_HANDLE_VALUE;
9007
    if (s->flags & JANET_STREAM_SOCKET) {
9008
        duph = s->handle;
9009
    } else {
9010
        DuplicateHandle(
9011
            GetCurrentProcess(),
9012
            s->handle,
9013
            GetCurrentProcess(),
9014
            &duph,
9015
            0,
9016
            FALSE,
9017
            DUPLICATE_SAME_ACCESS);
9018
    }
9019
    janet_marshal_int64(ctx, (int64_t)(duph));
9020
#else
9021
    /* Marshal after dup because it is easier than maintaining our own ref counting. */
9022
0
    int duph = dup(s->handle);
9023
0
    if (duph < 0) janet_panicf("failed to duplicate stream handle: %V", janet_ev_lasterr());
9024
0
    janet_marshal_int(ctx, (int32_t)(duph));
9025
0
#endif
9026
0
}
9027
9028
0
static void *janet_stream_unmarshal(JanetMarshalContext *ctx) {
9029
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
9030
0
        janet_panic("can only unmarshal stream with unsafe flag");
9031
0
    }
9032
0
    JanetStream *p = janet_unmarshal_abstract(ctx, sizeof(JanetStream));
9033
    /* Can't share listening state and such across threads */
9034
0
    p->read_fiber = NULL;
9035
0
    p->write_fiber = NULL;
9036
0
    p->flags = (uint32_t) janet_unmarshal_int(ctx);
9037
0
    p->methods =  janet_unmarshal_ptr(ctx);
9038
#ifdef JANET_WINDOWS
9039
    p->handle = (JanetHandle) janet_unmarshal_int64(ctx);
9040
#else
9041
0
    p->handle = (JanetHandle) janet_unmarshal_int(ctx);
9042
0
#endif
9043
#ifdef JANET_EV_POLL
9044
    janet_register_stream(p);
9045
#endif
9046
0
    return p;
9047
0
}
9048
9049
0
static Janet janet_stream_next(void *p, Janet key) {
9050
0
    JanetStream *stream = (JanetStream *)p;
9051
0
    return janet_nextmethod(stream->methods, key);
9052
0
}
9053
9054
0
static void janet_stream_tostring(void *p, JanetBuffer *buffer) {
9055
0
    JanetStream *stream = p;
9056
    /* Let user print the file descriptor for debugging */
9057
0
    janet_formatb(buffer, "[fd=%d]", stream->handle);
9058
0
}
9059
9060
const JanetAbstractType janet_stream_type = {
9061
    "core/stream",
9062
    janet_stream_gc,
9063
    janet_stream_mark,
9064
    janet_stream_getter,
9065
    NULL,
9066
    janet_stream_marshal,
9067
    janet_stream_unmarshal,
9068
    janet_stream_tostring,
9069
    NULL,
9070
    NULL,
9071
    janet_stream_next,
9072
    JANET_ATEND_NEXT
9073
};
9074
9075
/* Register a fiber to resume with value */
9076
0
static void janet_schedule_general(JanetFiber *fiber, Janet value, JanetSignal sig, int soon) {
9077
0
    if (fiber->gc.flags & JANET_FIBER_EV_FLAG_CANCELED) return;
9078
0
    if (!(fiber->gc.flags & JANET_FIBER_FLAG_ROOT)) {
9079
0
        Janet task_element = janet_wrap_fiber(fiber);
9080
0
        janet_table_put(&janet_vm.active_tasks, task_element, janet_wrap_true());
9081
0
    }
9082
0
    JanetTask t = { fiber, value, sig, ++fiber->sched_id };
9083
0
    fiber->gc.flags |= JANET_FIBER_FLAG_ROOT;
9084
0
    if (sig == JANET_SIGNAL_ERROR) fiber->gc.flags |= JANET_FIBER_EV_FLAG_CANCELED;
9085
0
    if (soon) {
9086
0
        janet_q_push_head(&janet_vm.spawn, &t, sizeof(t));
9087
0
    } else {
9088
0
        janet_q_push(&janet_vm.spawn, &t, sizeof(t));
9089
0
    }
9090
0
}
9091
9092
0
void janet_schedule_signal(JanetFiber *fiber, Janet value, JanetSignal sig) {
9093
0
    janet_schedule_general(fiber, value, sig, 0);
9094
0
}
9095
9096
0
void janet_schedule_soon(JanetFiber *fiber, Janet value, JanetSignal sig) {
9097
0
    janet_schedule_general(fiber, value, sig, 1);
9098
0
}
9099
9100
0
void janet_cancel(JanetFiber *fiber, Janet value) {
9101
0
    janet_schedule_signal(fiber, value, JANET_SIGNAL_ERROR);
9102
0
}
9103
9104
0
void janet_schedule(JanetFiber *fiber, Janet value) {
9105
0
    janet_schedule_signal(fiber, value, JANET_SIGNAL_OK);
9106
0
}
9107
9108
/* Mark all pending tasks */
9109
0
void janet_ev_mark(void) {
9110
9111
    /* Pending tasks */
9112
0
    JanetTask *tasks = janet_vm.spawn.data;
9113
0
    if (janet_vm.spawn.head <= janet_vm.spawn.tail) {
9114
0
        for (int32_t i = janet_vm.spawn.head; i < janet_vm.spawn.tail; i++) {
9115
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
9116
0
            janet_mark(tasks[i].value);
9117
0
        }
9118
0
    } else {
9119
0
        for (int32_t i = janet_vm.spawn.head; i < janet_vm.spawn.capacity; i++) {
9120
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
9121
0
            janet_mark(tasks[i].value);
9122
0
        }
9123
0
        for (int32_t i = 0; i < janet_vm.spawn.tail; i++) {
9124
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
9125
0
            janet_mark(tasks[i].value);
9126
0
        }
9127
0
    }
9128
9129
    /* Pending timeouts */
9130
0
    for (size_t i = 0; i < janet_vm.tq_count; i++) {
9131
0
        janet_mark(janet_wrap_fiber(janet_vm.tq[i].fiber));
9132
0
        if (janet_vm.tq[i].curr_fiber != NULL) {
9133
0
            janet_mark(janet_wrap_fiber(janet_vm.tq[i].curr_fiber));
9134
0
        }
9135
0
    }
9136
0
}
9137
9138
static int janet_channel_push(JanetChannel *channel, Janet x, int mode);
9139
static int janet_channel_pop(JanetChannel *channel, Janet *item, int is_choice);
9140
9141
0
static Janet make_supervisor_event(const char *name, JanetFiber *fiber, int threaded) {
9142
0
    Janet tup[3];
9143
0
    tup[0] = janet_ckeywordv(name);
9144
0
    tup[1] = threaded ? fiber->last_value : janet_wrap_fiber(fiber) ;
9145
0
    if (fiber->env != NULL) {
9146
0
        tup[2] = janet_table_get(fiber->env, janet_ckeywordv("task-id"));
9147
0
    } else {
9148
0
        tup[2] = janet_wrap_nil();
9149
0
    }
9150
0
    return janet_wrap_tuple(janet_tuple_n(tup, 3));
9151
0
}
9152
9153
/* Common init code */
9154
6.23k
void janet_ev_init_common(void) {
9155
6.23k
    janet_q_init(&janet_vm.spawn);
9156
6.23k
    janet_vm.tq = NULL;
9157
6.23k
    janet_vm.tq_count = 0;
9158
6.23k
    janet_vm.tq_capacity = 0;
9159
6.23k
    janet_table_init_raw(&janet_vm.threaded_abstracts, 0);
9160
6.23k
    janet_table_init_raw(&janet_vm.active_tasks, 0);
9161
6.23k
    janet_table_init_raw(&janet_vm.signal_handlers, 0);
9162
6.23k
    janet_rng_seed(&janet_vm.ev_rng, 0);
9163
6.23k
#ifndef JANET_WINDOWS
9164
6.23k
    pthread_attr_init(&janet_vm.new_thread_attr);
9165
6.23k
    pthread_attr_setdetachstate(&janet_vm.new_thread_attr, PTHREAD_CREATE_DETACHED);
9166
6.23k
#endif
9167
6.23k
}
9168
9169
#ifdef JANET_WINDOWS
9170
static VOID CALLBACK janet_timeout_stop(ULONG_PTR ptr) {
9171
    UNREFERENCED_PARAMETER(ptr);
9172
    ExitThread(0);
9173
}
9174
#elif JANET_ANDROID
9175
static void janet_timeout_stop(int sig_num) {
9176
    if (sig_num == SIGUSR1) {
9177
        pthread_exit(0);
9178
    }
9179
}
9180
#endif
9181
9182
0
static void handle_timeout_worker(JanetTimeout to, int cancel) {
9183
0
    if (!to.has_worker) return;
9184
#ifdef JANET_WINDOWS
9185
    QueueUserAPC(janet_timeout_stop, to.worker, 0);
9186
    WaitForSingleObject(to.worker, INFINITE);
9187
    CloseHandle(to.worker);
9188
#else
9189
#ifdef JANET_ANDROID
9190
    if (cancel) janet_assert(!pthread_kill(to.worker, SIGUSR1), "pthread_kill");
9191
#else
9192
0
    if (cancel) janet_assert(!pthread_cancel(to.worker), "pthread_cancel");
9193
0
#endif
9194
0
    void *res = NULL;
9195
0
    janet_assert(!pthread_join(to.worker, &res), "pthread_join");
9196
0
#endif
9197
0
}
9198
9199
/* Common deinit code */
9200
6.23k
void janet_ev_deinit_common(void) {
9201
6.23k
    JanetTimeout to;
9202
6.23k
    while (peek_timeout(&to)) {
9203
0
        handle_timeout_worker(to, 1);
9204
0
        pop_timeout(0);
9205
0
    }
9206
6.23k
    janet_q_deinit(&janet_vm.spawn);
9207
6.23k
    janet_free(janet_vm.tq);
9208
6.23k
    janet_table_deinit(&janet_vm.threaded_abstracts);
9209
6.23k
    janet_table_deinit(&janet_vm.active_tasks);
9210
6.23k
    janet_table_deinit(&janet_vm.signal_handlers);
9211
6.23k
#ifndef JANET_WINDOWS
9212
6.23k
    pthread_attr_destroy(&janet_vm.new_thread_attr);
9213
6.23k
#endif
9214
6.23k
}
9215
9216
/* Shorthand to yield to event loop */
9217
0
void janet_await(void) {
9218
    /* Store the fiber in a global table */
9219
0
    janet_signalv(JANET_SIGNAL_EVENT, janet_wrap_nil());
9220
0
}
9221
9222
/* Set timeout for the current root fiber */
9223
0
void janet_addtimeout(double sec) {
9224
0
    JanetFiber *fiber = janet_vm.root_fiber;
9225
0
    JanetTimeout to;
9226
0
    to.when = ts_delta(ts_now(), sec);
9227
0
    to.fiber = fiber;
9228
0
    to.curr_fiber = NULL;
9229
0
    to.sched_id = fiber->sched_id;
9230
0
    to.is_error = 1;
9231
0
    to.has_worker = 0;
9232
0
    add_timeout(to);
9233
0
}
9234
9235
/* Set timeout for the current root fiber but resume with nil instead of raising an error */
9236
0
void janet_addtimeout_nil(double sec) {
9237
0
    JanetFiber *fiber = janet_vm.root_fiber;
9238
0
    JanetTimeout to;
9239
0
    to.when = ts_delta(ts_now(), sec);
9240
0
    to.fiber = fiber;
9241
0
    to.curr_fiber = NULL;
9242
0
    to.sched_id = fiber->sched_id;
9243
0
    to.is_error = 0;
9244
0
    to.has_worker = 0;
9245
0
    add_timeout(to);
9246
0
}
9247
9248
0
static void janet_timeout_cb(JanetEVGenericMessage msg) {
9249
0
    (void) msg;
9250
0
    janet_interpreter_interrupt_handled(&janet_vm);
9251
0
}
9252
9253
#ifdef JANET_WINDOWS
9254
static DWORD WINAPI janet_timeout_body(LPVOID ptr) {
9255
    JanetThreadedTimeout tto = *(JanetThreadedTimeout *)ptr;
9256
    janet_free(ptr);
9257
    SleepEx((DWORD)(tto.sec * 1000), TRUE);
9258
    janet_interpreter_interrupt(tto.vm);
9259
    JanetEVGenericMessage msg = {0};
9260
    janet_ev_post_event(tto.vm, janet_timeout_cb, msg);
9261
    return 0;
9262
}
9263
#else
9264
0
static void *janet_timeout_body(void *ptr) {
9265
#ifdef JANET_ANDROID
9266
    struct sigaction action;
9267
    memset(&action, 0, sizeof(action));
9268
    sigemptyset(&action.sa_mask);
9269
    action.sa_flags = 0;
9270
    action.sa_handler = &janet_timeout_stop;
9271
    sigaction(SIGUSR1, &action, NULL);
9272
#endif
9273
0
    JanetThreadedTimeout tto = *(JanetThreadedTimeout *)ptr;
9274
0
    janet_free(ptr);
9275
0
    struct timespec ts;
9276
0
    ts.tv_sec = (time_t) tto.sec;
9277
0
    ts.tv_nsec = (tto.sec <= UINT32_MAX)
9278
0
                 ? (long)((tto.sec - ((uint32_t)tto.sec)) * 1000000000)
9279
0
                 : 0;
9280
0
    nanosleep(&ts, &ts);
9281
0
    janet_interpreter_interrupt(tto.vm);
9282
0
    JanetEVGenericMessage msg = {0};
9283
0
    janet_ev_post_event(tto.vm, janet_timeout_cb, msg);
9284
0
    return NULL;
9285
0
}
9286
#endif
9287
9288
9289
0
void janet_ev_inc_refcount(void) {
9290
0
    janet_atomic_inc(&janet_vm.listener_count);
9291
0
}
9292
9293
0
void janet_ev_dec_refcount(void) {
9294
0
    janet_atomic_dec(&janet_vm.listener_count);
9295
0
}
9296
9297
/* Channels */
9298
9299
#define JANET_MAX_CHANNEL_CAPACITY 0xFFFFFF
9300
9301
0
static inline int janet_chan_is_threaded(JanetChannel *chan) {
9302
0
    return chan->is_threaded;
9303
0
}
9304
9305
0
static int janet_chan_pack(JanetChannel *chan, Janet *x) {
9306
0
    if (!janet_chan_is_threaded(chan)) return 0;
9307
0
    switch (janet_type(*x)) {
9308
0
        default: {
9309
0
            JanetBuffer *buf = janet_malloc(sizeof(JanetBuffer));
9310
0
            if (NULL == buf) {
9311
0
                JANET_OUT_OF_MEMORY;
9312
0
            }
9313
0
            janet_buffer_init(buf, 10);
9314
0
            janet_marshal(buf, *x, NULL, JANET_MARSHAL_UNSAFE);
9315
0
            *x = janet_wrap_buffer(buf);
9316
0
            return 0;
9317
0
        }
9318
0
        case JANET_NIL:
9319
0
        case JANET_NUMBER:
9320
0
        case JANET_POINTER:
9321
0
        case JANET_BOOLEAN:
9322
0
        case JANET_CFUNCTION:
9323
0
            return 0;
9324
0
    }
9325
0
}
9326
9327
0
static int janet_chan_unpack(JanetChannel *chan, Janet *x, int is_cleanup) {
9328
0
    if (!janet_chan_is_threaded(chan)) return 0;
9329
0
    switch (janet_type(*x)) {
9330
0
        default:
9331
0
            return 1;
9332
0
        case JANET_BUFFER: {
9333
0
            JanetBuffer *buf = janet_unwrap_buffer(*x);
9334
0
            int flags = is_cleanup ? (JANET_MARSHAL_UNSAFE | JANET_MARSHAL_DECREF) : JANET_MARSHAL_UNSAFE;
9335
0
            *x = janet_unmarshal(buf->data, buf->count, flags, NULL, NULL);
9336
0
            janet_buffer_deinit(buf);
9337
0
            janet_free(buf);
9338
0
            return 0;
9339
0
        }
9340
0
        case JANET_NIL:
9341
0
        case JANET_NUMBER:
9342
0
        case JANET_POINTER:
9343
0
        case JANET_BOOLEAN:
9344
0
        case JANET_CFUNCTION:
9345
0
            return 0;
9346
0
    }
9347
0
}
9348
9349
0
static void janet_chan_init(JanetChannel *chan, int32_t limit, int threaded) {
9350
0
    chan->limit = limit;
9351
0
    chan->closed = 0;
9352
0
    chan->is_threaded = threaded;
9353
0
    janet_q_init(&chan->items);
9354
0
    janet_q_init(&chan->read_pending);
9355
0
    janet_q_init(&chan->write_pending);
9356
0
    janet_os_mutex_init((JanetOSMutex *) &chan->lock);
9357
0
}
9358
9359
0
static void janet_chan_lock(JanetChannel *chan) {
9360
0
    if (!janet_chan_is_threaded(chan)) return;
9361
0
    janet_os_mutex_lock((JanetOSMutex *) &chan->lock);
9362
0
}
9363
9364
0
static void janet_chan_unlock(JanetChannel *chan) {
9365
0
    if (!janet_chan_is_threaded(chan)) return;
9366
0
    janet_os_mutex_unlock((JanetOSMutex *) &chan->lock);
9367
0
}
9368
9369
0
static void janet_chan_deinit(JanetChannel *chan) {
9370
0
    if (janet_chan_is_threaded(chan)) {
9371
0
        Janet item;
9372
0
        janet_chan_lock(chan);
9373
0
        janet_q_deinit(&chan->read_pending);
9374
0
        janet_q_deinit(&chan->write_pending);
9375
0
        while (!janet_q_pop(&chan->items, &item, sizeof(item))) {
9376
0
            janet_chan_unpack(chan, &item, 1);
9377
0
        }
9378
0
        janet_q_deinit(&chan->items);
9379
0
        janet_chan_unlock(chan);
9380
0
    } else {
9381
0
        janet_q_deinit(&chan->read_pending);
9382
0
        janet_q_deinit(&chan->write_pending);
9383
0
        janet_q_deinit(&chan->items);
9384
0
    }
9385
0
    janet_os_mutex_deinit((JanetOSMutex *) &chan->lock);
9386
0
}
9387
9388
/*
9389
 * Janet Channel abstract type
9390
 */
9391
9392
0
static Janet janet_wrap_channel(JanetChannel *channel) {
9393
0
    return janet_wrap_abstract(channel);
9394
0
}
9395
9396
0
static int janet_chanat_gc(void *p, size_t s) {
9397
0
    (void) s;
9398
0
    JanetChannel *channel = p;
9399
0
    janet_chan_deinit(channel);
9400
0
    return 0;
9401
0
}
9402
9403
0
static void janet_chanat_mark_fq(JanetQueue *fq) {
9404
0
    JanetChannelPending *pending = fq->data;
9405
0
    if (fq->head <= fq->tail) {
9406
0
        for (int32_t i = fq->head; i < fq->tail; i++)
9407
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
9408
0
    } else {
9409
0
        for (int32_t i = fq->head; i < fq->capacity; i++)
9410
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
9411
0
        for (int32_t i = 0; i < fq->tail; i++)
9412
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
9413
0
    }
9414
0
}
9415
9416
0
static int janet_chanat_mark(void *p, size_t s) {
9417
0
    (void) s;
9418
0
    JanetChannel *chan = p;
9419
0
    janet_chanat_mark_fq(&chan->read_pending);
9420
0
    janet_chanat_mark_fq(&chan->write_pending);
9421
0
    JanetQueue *items = &chan->items;
9422
0
    Janet *data = chan->items.data;
9423
0
    if (items->head <= items->tail) {
9424
0
        for (int32_t i = items->head; i < items->tail; i++)
9425
0
            janet_mark(data[i]);
9426
0
    } else {
9427
0
        for (int32_t i = items->head; i < items->capacity; i++)
9428
0
            janet_mark(data[i]);
9429
0
        for (int32_t i = 0; i < items->tail; i++)
9430
0
            janet_mark(data[i]);
9431
0
    }
9432
0
    return 0;
9433
0
}
9434
9435
0
static Janet make_write_result(JanetChannel *channel) {
9436
0
    Janet *tup = janet_tuple_begin(2);
9437
0
    tup[0] = janet_ckeywordv("give");
9438
0
    tup[1] = janet_wrap_channel(channel);
9439
0
    return janet_wrap_tuple(janet_tuple_end(tup));
9440
0
}
9441
9442
0
static Janet make_read_result(JanetChannel *channel, Janet x) {
9443
0
    Janet *tup = janet_tuple_begin(3);
9444
0
    tup[0] = janet_ckeywordv("take");
9445
0
    tup[1] = janet_wrap_channel(channel);
9446
0
    tup[2] = x;
9447
0
    return janet_wrap_tuple(janet_tuple_end(tup));
9448
0
}
9449
9450
0
static Janet make_close_result(JanetChannel *channel) {
9451
0
    Janet *tup = janet_tuple_begin(2);
9452
0
    tup[0] = janet_ckeywordv("close");
9453
0
    tup[1] = janet_wrap_channel(channel);
9454
0
    return janet_wrap_tuple(janet_tuple_end(tup));
9455
0
}
9456
9457
/* Callback to use for scheduling a fiber from another thread. */
9458
0
static void janet_thread_chan_cb(JanetEVGenericMessage msg) {
9459
0
    uint32_t sched_id = (uint32_t) msg.argi;
9460
0
    JanetFiber *fiber = msg.fiber;
9461
0
    int mode = msg.tag;
9462
0
    JanetChannel *channel = (JanetChannel *) msg.argp;
9463
0
    Janet x = msg.argj;
9464
0
    janet_chan_lock(channel);
9465
0
    if (fiber->sched_id == sched_id) {
9466
0
        if (mode == JANET_CP_MODE_CHOICE_READ) {
9467
0
            janet_assert(!janet_chan_unpack(channel, &x, 0), "packing error");
9468
0
            janet_schedule(fiber, make_read_result(channel, x));
9469
0
        } else if (mode == JANET_CP_MODE_CHOICE_WRITE) {
9470
0
            janet_schedule(fiber, make_write_result(channel));
9471
0
        } else if (mode == JANET_CP_MODE_READ) {
9472
0
            janet_assert(!janet_chan_unpack(channel, &x, 0), "packing error");
9473
0
            janet_schedule(fiber, x);
9474
0
        } else if (mode == JANET_CP_MODE_WRITE) {
9475
0
            janet_schedule(fiber, janet_wrap_channel(channel));
9476
0
        } else { /* (mode == JANET_CP_MODE_CLOSE) */
9477
0
            janet_schedule(fiber, janet_wrap_nil());
9478
0
        }
9479
0
    } else if (mode != JANET_CP_MODE_CLOSE) {
9480
        /* Fiber has already been cancelled or resumed. */
9481
        /* Resend event to another waiting thread, depending on mode */
9482
0
        int is_read = (mode == JANET_CP_MODE_CHOICE_READ) || (mode == JANET_CP_MODE_READ);
9483
0
        if (is_read) {
9484
0
            JanetChannelPending reader;
9485
0
            if (!janet_q_pop(&channel->read_pending, &reader, sizeof(reader))) {
9486
0
                JanetVM *vm = reader.thread;
9487
0
                JanetEVGenericMessage msg;
9488
0
                msg.tag = reader.mode;
9489
0
                msg.fiber = reader.fiber;
9490
0
                msg.argi = (int32_t) reader.sched_id;
9491
0
                msg.argp = channel;
9492
0
                msg.argj = x;
9493
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9494
0
            }
9495
0
        } else {
9496
0
            JanetChannelPending writer;
9497
0
            if (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9498
0
                JanetVM *vm = writer.thread;
9499
0
                JanetEVGenericMessage msg;
9500
0
                msg.tag = writer.mode;
9501
0
                msg.fiber = writer.fiber;
9502
0
                msg.argi = (int32_t) writer.sched_id;
9503
0
                msg.argp = channel;
9504
0
                msg.argj = janet_wrap_nil();
9505
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9506
0
            }
9507
0
        }
9508
0
    }
9509
0
    janet_chan_unlock(channel);
9510
0
}
9511
9512
/* Push a value to a channel, and return 1 if channel should block, zero otherwise.
9513
 * If the push would block, will add to the write_pending queue in the channel.
9514
 * Handles both threaded and unthreaded channels. */
9515
0
static int janet_channel_push_with_lock(JanetChannel *channel, Janet x, int mode) {
9516
0
    JanetChannelPending reader;
9517
0
    int is_empty;
9518
0
    if (janet_chan_pack(channel, &x)) {
9519
0
        janet_chan_unlock(channel);
9520
0
        janet_panicf("failed to pack value for channel: %v", x);
9521
0
    }
9522
0
    if (channel->closed) {
9523
0
        janet_chan_unlock(channel);
9524
0
        janet_panic("cannot write to closed channel");
9525
0
    }
9526
0
    int is_threaded = janet_chan_is_threaded(channel);
9527
0
    if (is_threaded) {
9528
        /* don't dereference fiber from another thread */
9529
0
        is_empty = janet_q_pop(&channel->read_pending, &reader, sizeof(reader));
9530
0
    } else {
9531
0
        do {
9532
0
            is_empty = janet_q_pop(&channel->read_pending, &reader, sizeof(reader));
9533
0
        } while (!is_empty && (reader.sched_id != reader.fiber->sched_id));
9534
0
    }
9535
0
    if (is_empty) {
9536
        /* No pending reader */
9537
0
        if (janet_q_push(&channel->items, &x, sizeof(Janet))) {
9538
0
            janet_chan_unlock(channel);
9539
0
            janet_panicf("channel overflow: %v", x);
9540
0
        } else if (janet_q_count(&channel->items) > channel->limit) {
9541
            /* No root fiber, we are in completion on a root fiber. Don't block. */
9542
0
            if (mode == 2) {
9543
0
                janet_chan_unlock(channel);
9544
0
                return 1;
9545
0
            }
9546
            /* Pushed successfully, but should block. */
9547
0
            JanetChannelPending pending;
9548
0
            pending.thread = &janet_vm;
9549
0
            pending.fiber = janet_vm.root_fiber,
9550
0
            pending.sched_id = janet_vm.root_fiber->sched_id,
9551
0
            pending.mode = mode ? JANET_CP_MODE_CHOICE_WRITE : JANET_CP_MODE_WRITE;
9552
0
            janet_q_push(&channel->write_pending, &pending, sizeof(pending));
9553
0
            janet_chan_unlock(channel);
9554
0
            if (is_threaded) {
9555
0
                janet_gcroot(janet_wrap_fiber(pending.fiber));
9556
0
            }
9557
0
            return 1;
9558
0
        }
9559
0
    } else {
9560
        /* Pending reader */
9561
0
        if (is_threaded) {
9562
0
            JanetVM *vm = reader.thread;
9563
0
            JanetEVGenericMessage msg;
9564
0
            msg.tag = reader.mode;
9565
0
            msg.fiber = reader.fiber;
9566
0
            msg.argi = (int32_t) reader.sched_id;
9567
0
            msg.argp = channel;
9568
0
            msg.argj = x;
9569
0
            janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9570
0
        } else {
9571
0
            if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
9572
0
                janet_schedule(reader.fiber, make_read_result(channel, x));
9573
0
            } else {
9574
0
                janet_schedule(reader.fiber, x);
9575
0
            }
9576
0
        }
9577
0
    }
9578
0
    janet_chan_unlock(channel);
9579
0
    return 0;
9580
0
}
9581
9582
0
static int janet_channel_push(JanetChannel *channel, Janet x, int mode) {
9583
0
    janet_chan_lock(channel);
9584
0
    return janet_channel_push_with_lock(channel, x, mode);
9585
0
}
9586
9587
/* Pop from a channel - returns 1 if item was obtained, 0 otherwise. The item
9588
 * is returned by reference. If the pop would block, will add to the read_pending
9589
 * queue in the channel. */
9590
0
static int janet_channel_pop_with_lock(JanetChannel *channel, Janet *item, int is_choice) {
9591
0
    JanetChannelPending writer;
9592
0
    if (channel->closed) {
9593
0
        janet_chan_unlock(channel);
9594
0
        *item = janet_wrap_nil();
9595
0
        return 1;
9596
0
    }
9597
0
    int is_threaded = janet_chan_is_threaded(channel);
9598
0
    if (janet_q_pop(&channel->items, item, sizeof(Janet))) {
9599
        /* Queue empty */
9600
0
        if (is_choice == 2) return 0; // Skip pending read
9601
0
        JanetChannelPending pending;
9602
0
        pending.thread = &janet_vm;
9603
0
        pending.fiber = janet_vm.root_fiber,
9604
0
        pending.sched_id = janet_vm.root_fiber->sched_id;
9605
0
        pending.mode = is_choice ? JANET_CP_MODE_CHOICE_READ : JANET_CP_MODE_READ;
9606
0
        janet_q_push(&channel->read_pending, &pending, sizeof(pending));
9607
0
        janet_chan_unlock(channel);
9608
0
        if (is_threaded) {
9609
0
            janet_gcroot(janet_wrap_fiber(pending.fiber));
9610
0
        }
9611
0
        return 0;
9612
0
    }
9613
0
    janet_assert(!janet_chan_unpack(channel, item, 0), "bad channel packing");
9614
0
    if (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9615
        /* Pending writer */
9616
0
        if (is_threaded) {
9617
0
            JanetVM *vm = writer.thread;
9618
0
            JanetEVGenericMessage msg;
9619
0
            msg.tag = writer.mode;
9620
0
            msg.fiber = writer.fiber;
9621
0
            msg.argi = (int32_t) writer.sched_id;
9622
0
            msg.argp = channel;
9623
0
            msg.argj = janet_wrap_nil();
9624
0
            janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9625
0
        } else {
9626
0
            if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
9627
0
                janet_schedule(writer.fiber, make_write_result(channel));
9628
0
            } else {
9629
0
                janet_schedule(writer.fiber, janet_wrap_abstract(channel));
9630
0
            }
9631
0
        }
9632
0
    }
9633
0
    janet_chan_unlock(channel);
9634
0
    return 1;
9635
0
}
9636
9637
0
static int janet_channel_pop(JanetChannel *channel, Janet *item, int is_choice) {
9638
0
    janet_chan_lock(channel);
9639
0
    return janet_channel_pop_with_lock(channel, item, is_choice);
9640
0
}
9641
9642
0
JanetChannel *janet_channel_unwrap(void *abstract) {
9643
0
    return abstract;
9644
0
}
9645
9646
0
JanetChannel *janet_getchannel(const Janet *argv, int32_t n) {
9647
0
    return janet_channel_unwrap(janet_getabstract(argv, n, &janet_channel_type));
9648
0
}
9649
9650
0
JanetChannel *janet_optchannel(const Janet *argv, int32_t argc, int32_t n, JanetChannel *dflt) {
9651
0
    if (argc > n && !janet_checktype(argv[n], JANET_NIL)) {
9652
0
        return janet_getchannel(argv, n);
9653
0
    } else {
9654
0
        return dflt;
9655
0
    }
9656
0
}
9657
9658
0
int janet_channel_give(JanetChannel *channel, Janet x) {
9659
0
    return janet_channel_push(channel, x, 2);
9660
0
}
9661
9662
0
int janet_channel_take(JanetChannel *channel, Janet *out) {
9663
0
    return janet_channel_pop(channel, out, 2);
9664
0
}
9665
9666
0
JanetChannel *janet_channel_make(uint32_t limit) {
9667
0
    janet_assert(limit <= INT32_MAX, "bad limit");
9668
0
    JanetChannel *channel = janet_abstract(&janet_channel_type, sizeof(JanetChannel));
9669
0
    janet_chan_init(channel, (int32_t) limit, 0);
9670
0
    return channel;
9671
0
}
9672
9673
0
JanetChannel *janet_channel_make_threaded(uint32_t limit) {
9674
0
    janet_assert(limit <= INT32_MAX, "bad limit");
9675
0
    JanetChannel *channel = janet_abstract_threaded(&janet_channel_type, sizeof(JanetChannel));
9676
0
    janet_chan_init(channel, (int32_t) limit, 0);
9677
0
    return channel;
9678
0
}
9679
9680
/* Channel Methods */
9681
9682
JANET_CORE_FN(cfun_channel_push,
9683
              "(ev/give channel value)",
9684
              "Write a value to a channel, suspending the current fiber if the channel is full. "
9685
0
              "Returns the channel if the write succeeded, nil otherwise.") {
9686
0
    janet_fixarity(argc, 2);
9687
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9688
0
    if (janet_vm.coerce_error) {
9689
0
        janet_panic("cannot give to channel inside janet_call");
9690
0
    }
9691
0
    if (janet_channel_push(channel, argv[1], 0)) {
9692
0
        janet_await();
9693
0
    }
9694
0
    return argv[0];
9695
0
}
9696
9697
JANET_CORE_FN(cfun_channel_pop,
9698
              "(ev/take channel)",
9699
0
              "Read from a channel, suspending the current fiber if no value is available.") {
9700
0
    janet_fixarity(argc, 1);
9701
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9702
0
    Janet item;
9703
0
    if (janet_vm.coerce_error) {
9704
0
        janet_panic("cannot take from channel inside janet_call");
9705
0
    }
9706
0
    if (janet_channel_pop(channel, &item, 0)) {
9707
0
        janet_schedule(janet_vm.root_fiber, item);
9708
0
    }
9709
0
    janet_await();
9710
0
}
9711
9712
0
static void chan_unlock_args(const Janet *argv, int32_t n) {
9713
0
    for (int32_t i = 0; i < n; i++) {
9714
0
        int32_t len;
9715
0
        const Janet *data;
9716
0
        JanetChannel *chan;
9717
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9718
0
            chan = janet_getchannel(data, 0);
9719
0
        } else {
9720
0
            chan = janet_getchannel(argv, i);
9721
0
        }
9722
0
        janet_chan_unlock(chan);
9723
0
    }
9724
0
}
9725
9726
JANET_CORE_FN(cfun_channel_choice,
9727
              "(ev/select & clauses)",
9728
              "Block until the first of several channel operations occur. Returns a "
9729
              "tuple of the form [:give chan], [:take chan x], or [:close chan], "
9730
              "where a :give tuple is the result of a write and a :take tuple is the "
9731
              "result of a read. Each clause must be either a channel (for a channel "
9732
              "take operation) or a tuple [channel x] (for a channel give operation). "
9733
              "Operations are tried in order such that earlier clauses take "
9734
              "precedence over later clauses. Both give and take operations can "
9735
              "return a [:close chan] tuple, which indicates that the specified "
9736
              "channel was closed while waiting, or that the channel was already "
9737
0
              "closed.") {
9738
0
    janet_arity(argc, 1, -1);
9739
0
    int32_t len;
9740
0
    const Janet *data;
9741
9742
0
    if (janet_vm.coerce_error) {
9743
0
        janet_panic("cannot select from channel inside janet_call");
9744
0
    }
9745
9746
    /* Check channels for immediate reads and writes */
9747
0
    for (int32_t i = 0; i < argc; i++) {
9748
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9749
            /* Write */
9750
0
            JanetChannel *chan = janet_getchannel(data, 0);
9751
0
            janet_chan_lock(chan);
9752
0
            if (chan->closed) {
9753
0
                janet_chan_unlock(chan);
9754
0
                chan_unlock_args(argv, i);
9755
0
                return make_close_result(chan);
9756
0
            }
9757
0
            if (janet_q_count(&chan->items) < chan->limit) {
9758
0
                janet_channel_push_with_lock(chan, data[1], 1);
9759
0
                chan_unlock_args(argv, i);
9760
0
                return make_write_result(chan);
9761
0
            }
9762
0
        } else {
9763
            /* Read */
9764
0
            JanetChannel *chan = janet_getchannel(argv, i);
9765
0
            janet_chan_lock(chan);
9766
0
            if (chan->closed) {
9767
0
                janet_chan_unlock(chan);
9768
0
                chan_unlock_args(argv, i);
9769
0
                return make_close_result(chan);
9770
0
            }
9771
0
            if (chan->items.head != chan->items.tail) {
9772
0
                Janet item;
9773
0
                janet_channel_pop_with_lock(chan, &item, 1);
9774
0
                chan_unlock_args(argv, i);
9775
0
                return make_read_result(chan, item);
9776
0
            }
9777
0
        }
9778
0
    }
9779
9780
    /* Wait for all readers or writers */
9781
0
    for (int32_t i = 0; i < argc; i++) {
9782
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9783
            /* Write */
9784
0
            JanetChannel *chan = janet_getchannel(data, 0);
9785
0
            janet_channel_push_with_lock(chan, data[1], 1);
9786
0
        } else {
9787
            /* Read */
9788
0
            Janet item;
9789
0
            JanetChannel *chan = janet_getchannel(argv, i);
9790
0
            janet_channel_pop_with_lock(chan, &item, 1);
9791
0
        }
9792
0
    }
9793
9794
0
    janet_await();
9795
0
}
9796
9797
JANET_CORE_FN(cfun_channel_full,
9798
              "(ev/full channel)",
9799
0
              "Check if a channel is full or not.") {
9800
0
    janet_fixarity(argc, 1);
9801
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9802
0
    janet_chan_lock(channel);
9803
0
    Janet ret = janet_wrap_boolean(janet_q_count(&channel->items) >= channel->limit);
9804
0
    janet_chan_unlock(channel);
9805
0
    return ret;
9806
0
}
9807
9808
JANET_CORE_FN(cfun_channel_capacity,
9809
              "(ev/capacity channel)",
9810
0
              "Get the number of items a channel will store before blocking writers.") {
9811
0
    janet_fixarity(argc, 1);
9812
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9813
0
    janet_chan_lock(channel);
9814
0
    Janet ret = janet_wrap_integer(channel->limit);
9815
0
    janet_chan_unlock(channel);
9816
0
    return ret;
9817
0
}
9818
9819
JANET_CORE_FN(cfun_channel_count,
9820
              "(ev/count channel)",
9821
0
              "Get the number of items currently waiting in a channel.") {
9822
0
    janet_fixarity(argc, 1);
9823
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9824
0
    janet_chan_lock(channel);
9825
0
    Janet ret = janet_wrap_integer(janet_q_count(&channel->items));
9826
0
    janet_chan_unlock(channel);
9827
0
    return ret;
9828
0
}
9829
9830
/* Fisher yates shuffle of arguments to get fairness */
9831
0
static void fisher_yates_args(int32_t argc, Janet *argv) {
9832
0
    for (int32_t i = argc; i > 1; i--) {
9833
0
        int32_t swap_index = janet_rng_u32(&janet_vm.ev_rng) % i;
9834
0
        Janet temp = argv[swap_index];
9835
0
        argv[swap_index] = argv[i - 1];
9836
0
        argv[i - 1] = temp;
9837
0
    }
9838
0
}
9839
9840
JANET_CORE_FN(cfun_channel_rchoice,
9841
              "(ev/rselect & clauses)",
9842
0
              "Similar to ev/select, but will try clauses in a random order for fairness.") {
9843
0
    fisher_yates_args(argc, argv);
9844
0
    return cfun_channel_choice(argc, argv);
9845
0
}
9846
9847
JANET_CORE_FN(cfun_channel_new,
9848
              "(ev/chan &opt capacity)",
9849
              "Create a new channel. capacity is the number of values to queue before "
9850
0
              "blocking writers, defaults to 0 if not provided. Returns a new channel.") {
9851
0
    janet_arity(argc, 0, 1);
9852
0
    int32_t limit = janet_optnat(argv, argc, 0, 0);
9853
0
    JanetChannel *channel = janet_abstract(&janet_channel_type, sizeof(JanetChannel));
9854
0
    janet_chan_init(channel, limit, 0);
9855
0
    return janet_wrap_abstract(channel);
9856
0
}
9857
9858
JANET_CORE_FN(cfun_channel_new_threaded,
9859
              "(ev/thread-chan &opt limit)",
9860
              "Create a threaded channel. A threaded channel is a channel that can be shared between threads and "
9861
0
              "used to communicate between any number of operating system threads.") {
9862
0
    janet_arity(argc, 0, 1);
9863
0
    int32_t limit = janet_optnat(argv, argc, 0, 0);
9864
0
    JanetChannel *tchan = janet_abstract_threaded(&janet_channel_type, sizeof(JanetChannel));
9865
0
    janet_chan_init(tchan, limit, 1);
9866
0
    return janet_wrap_abstract(tchan);
9867
0
}
9868
9869
JANET_CORE_FN(cfun_channel_close,
9870
              "(ev/chan-close chan)",
9871
              "Close a channel. A closed channel will cause all pending reads and writes to return nil. "
9872
0
              "Returns the channel.") {
9873
0
    janet_fixarity(argc, 1);
9874
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9875
0
    janet_chan_lock(channel);
9876
0
    if (!channel->closed) {
9877
0
        channel->closed = 1;
9878
0
        JanetChannelPending writer;
9879
0
        while (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9880
0
            if (writer.thread != &janet_vm) {
9881
0
                JanetVM *vm = writer.thread;
9882
0
                JanetEVGenericMessage msg;
9883
0
                msg.fiber = writer.fiber;
9884
0
                msg.argp = channel;
9885
0
                msg.tag = JANET_CP_MODE_CLOSE;
9886
0
                msg.argi = (int32_t) writer.sched_id;
9887
0
                msg.argj = janet_wrap_nil();
9888
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9889
0
            } else {
9890
0
                if (janet_fiber_can_resume(writer.fiber)) {
9891
0
                    if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
9892
0
                        janet_schedule(writer.fiber, make_close_result(channel));
9893
0
                    } else {
9894
0
                        janet_schedule(writer.fiber, janet_wrap_nil());
9895
0
                    }
9896
0
                }
9897
0
            }
9898
0
        }
9899
0
        JanetChannelPending reader;
9900
0
        while (!janet_q_pop(&channel->read_pending, &reader, sizeof(reader))) {
9901
0
            if (reader.thread != &janet_vm) {
9902
0
                JanetVM *vm = reader.thread;
9903
0
                JanetEVGenericMessage msg;
9904
0
                msg.fiber = reader.fiber;
9905
0
                msg.argp = channel;
9906
0
                msg.tag = JANET_CP_MODE_CLOSE;
9907
0
                msg.argi = (int32_t) reader.sched_id;
9908
0
                msg.argj = janet_wrap_nil();
9909
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9910
0
            } else {
9911
0
                if (janet_fiber_can_resume(reader.fiber)) {
9912
0
                    if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
9913
0
                        janet_schedule(reader.fiber, make_close_result(channel));
9914
0
                    } else {
9915
0
                        janet_schedule(reader.fiber, janet_wrap_nil());
9916
0
                    }
9917
0
                }
9918
0
            }
9919
0
        }
9920
0
    }
9921
0
    janet_chan_unlock(channel);
9922
0
    return argv[0];
9923
0
}
9924
9925
static const JanetMethod ev_chanat_methods[] = {
9926
    {"select", cfun_channel_choice},
9927
    {"rselect", cfun_channel_rchoice},
9928
    {"count", cfun_channel_count},
9929
    {"take", cfun_channel_pop},
9930
    {"give", cfun_channel_push},
9931
    {"capacity", cfun_channel_capacity},
9932
    {"full", cfun_channel_full},
9933
    {"close", cfun_channel_close},
9934
    {NULL, NULL}
9935
};
9936
9937
0
static int janet_chanat_get(void *p, Janet key, Janet *out) {
9938
0
    (void) p;
9939
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
9940
0
    return janet_getmethod(janet_unwrap_keyword(key), ev_chanat_methods, out);
9941
0
}
9942
9943
0
static Janet janet_chanat_next(void *p, Janet key) {
9944
0
    (void) p;
9945
0
    return janet_nextmethod(ev_chanat_methods, key);
9946
0
}
9947
9948
0
static void janet_chanat_marshal(void *p, JanetMarshalContext *ctx) {
9949
0
    JanetChannel *channel = (JanetChannel *)p;
9950
0
    janet_marshal_byte(ctx, channel->is_threaded);
9951
0
    janet_marshal_abstract(ctx, channel);
9952
0
    janet_marshal_byte(ctx, channel->closed);
9953
0
    janet_marshal_int(ctx, channel->limit);
9954
0
    int32_t count = janet_q_count(&channel->items);
9955
0
    janet_marshal_int(ctx, count);
9956
0
    JanetQueue *items = &channel->items;
9957
0
    Janet *data = channel->items.data;
9958
0
    if (items->head <= items->tail) {
9959
0
        for (int32_t i = items->head; i < items->tail; i++)
9960
0
            janet_marshal_janet(ctx, data[i]);
9961
0
    } else {
9962
0
        for (int32_t i = items->head; i < items->capacity; i++)
9963
0
            janet_marshal_janet(ctx, data[i]);
9964
0
        for (int32_t i = 0; i < items->tail; i++)
9965
0
            janet_marshal_janet(ctx, data[i]);
9966
0
    }
9967
0
}
9968
9969
0
static void *janet_chanat_unmarshal(JanetMarshalContext *ctx) {
9970
0
    uint8_t is_threaded = janet_unmarshal_byte(ctx);
9971
0
    JanetChannel *abst;
9972
0
    if (is_threaded) {
9973
0
        abst = janet_unmarshal_abstract_threaded(ctx, sizeof(JanetChannel));
9974
0
    } else {
9975
0
        abst = janet_unmarshal_abstract(ctx, sizeof(JanetChannel));
9976
0
    }
9977
0
    uint8_t is_closed = janet_unmarshal_byte(ctx);
9978
0
    int32_t limit = janet_unmarshal_int(ctx);
9979
0
    int32_t count = janet_unmarshal_int(ctx);
9980
0
    if (count < 0) janet_panic("invalid negative channel count");
9981
0
    janet_chan_init(abst, limit, 0);
9982
0
    abst->closed = !!is_closed;
9983
0
    for (int32_t i = 0; i < count; i++) {
9984
0
        Janet item = janet_unmarshal_janet(ctx);
9985
0
        janet_q_push(&abst->items, &item, sizeof(item));
9986
0
    }
9987
0
    return abst;
9988
0
}
9989
9990
const JanetAbstractType janet_channel_type = {
9991
    "core/channel",
9992
    janet_chanat_gc,
9993
    janet_chanat_mark,
9994
    janet_chanat_get,
9995
    NULL, /* put */
9996
    janet_chanat_marshal,
9997
    janet_chanat_unmarshal,
9998
    NULL, /* tostring */
9999
    NULL, /* compare */
10000
    NULL, /* hash */
10001
    janet_chanat_next,
10002
    JANET_ATEND_NEXT
10003
};
10004
10005
/* Main event loop */
10006
10007
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout);
10008
10009
0
int janet_loop_done(void) {
10010
0
    return !((janet_vm.spawn.head != janet_vm.spawn.tail) ||
10011
0
             janet_vm.tq_count ||
10012
0
             janet_atomic_load(&janet_vm.listener_count));
10013
0
}
10014
10015
0
JanetFiber *janet_loop1(void) {
10016
    /* Schedule expired timers */
10017
0
    JanetTimeout to;
10018
0
    JanetTimestamp now = ts_now();
10019
0
    while (peek_timeout(&to) && to.when <= now) {
10020
0
        pop_timeout(0);
10021
0
        if (to.curr_fiber != NULL) {
10022
0
            if (janet_fiber_can_resume(to.curr_fiber)) {
10023
0
                janet_cancel(to.fiber, janet_cstringv("deadline expired"));
10024
0
            }
10025
0
        } else {
10026
            /* This is a timeout (for a function call, not a whole fiber) */
10027
0
            if (to.fiber->sched_id == to.sched_id) {
10028
0
                if (to.is_error) {
10029
0
                    janet_cancel(to.fiber, janet_cstringv("timeout"));
10030
0
                } else {
10031
0
                    janet_schedule(to.fiber, janet_wrap_nil());
10032
0
                }
10033
0
            }
10034
0
        }
10035
0
        handle_timeout_worker(to, 0);
10036
0
    }
10037
10038
    /* Run scheduled fibers unless interrupts need to be handled. */
10039
0
    while (janet_vm.spawn.head != janet_vm.spawn.tail) {
10040
        /* Don't run until all interrupts have been marked as handled by calling janet_interpreter_interrupt_handled */
10041
0
        if (janet_atomic_load_relaxed(&janet_vm.auto_suspend)) break;
10042
0
        JanetTask task = {NULL, janet_wrap_nil(), JANET_SIGNAL_OK, 0};
10043
0
        janet_q_pop(&janet_vm.spawn, &task, sizeof(task));
10044
0
        if (task.fiber->gc.flags & JANET_FIBER_EV_FLAG_SUSPENDED) janet_ev_dec_refcount();
10045
0
        task.fiber->gc.flags &= ~(JANET_FIBER_EV_FLAG_CANCELED | JANET_FIBER_EV_FLAG_SUSPENDED);
10046
0
        if (task.expected_sched_id != task.fiber->sched_id) continue;
10047
0
        Janet res;
10048
0
        JanetSignal sig = janet_continue_signal(task.fiber, task.value, &res, task.sig);
10049
0
        if (!janet_fiber_can_resume(task.fiber)) {
10050
0
            janet_table_remove(&janet_vm.active_tasks, janet_wrap_fiber(task.fiber));
10051
0
        }
10052
0
        void *sv = task.fiber->supervisor_channel;
10053
0
        int is_suspended = sig == JANET_SIGNAL_EVENT || sig == JANET_SIGNAL_YIELD || sig == JANET_SIGNAL_INTERRUPT;
10054
0
        if (is_suspended) {
10055
0
            task.fiber->gc.flags |= JANET_FIBER_EV_FLAG_SUSPENDED;
10056
0
            janet_ev_inc_refcount();
10057
0
        }
10058
0
        if (NULL == sv) {
10059
0
            if (!is_suspended) {
10060
0
                janet_stacktrace_ext(task.fiber, res, "");
10061
0
            }
10062
0
        } else if (sig == JANET_SIGNAL_OK || (task.fiber->flags & (1 << sig))) {
10063
0
            JanetChannel *chan = janet_channel_unwrap(sv);
10064
0
            janet_channel_push(chan, make_supervisor_event(janet_signal_names[sig],
10065
0
                               task.fiber, chan->is_threaded), 2);
10066
0
        } else if (!is_suspended) {
10067
0
            janet_stacktrace_ext(task.fiber, res, "");
10068
0
        }
10069
0
        if (sig == JANET_SIGNAL_INTERRUPT) {
10070
0
            return task.fiber;
10071
0
        }
10072
0
    }
10073
10074
    /* Poll for events */
10075
0
    if (janet_vm.tq_count || janet_atomic_load(&janet_vm.listener_count)) {
10076
0
        JanetTimeout to;
10077
0
        memset(&to, 0, sizeof(to));
10078
0
        int has_timeout;
10079
        /* Drop timeouts that are no longer needed */
10080
0
        while ((has_timeout = peek_timeout(&to))) {
10081
0
            if (to.curr_fiber != NULL) {
10082
0
                if (!janet_fiber_can_resume(to.curr_fiber)) {
10083
0
                    pop_timeout(0);
10084
0
                    janet_table_remove(&janet_vm.active_tasks, janet_wrap_fiber(to.curr_fiber));
10085
0
                    handle_timeout_worker(to, 1);
10086
0
                    continue;
10087
0
                }
10088
0
            } else if (to.fiber->sched_id != to.sched_id) {
10089
0
                pop_timeout(0);
10090
0
                handle_timeout_worker(to, 1);
10091
0
                continue;
10092
0
            }
10093
0
            break;
10094
0
        }
10095
        /* Run polling implementation only if pending timeouts or pending events */
10096
0
        if (janet_vm.tq_count || janet_atomic_load(&janet_vm.listener_count)) {
10097
0
            janet_loop1_impl(has_timeout, to.when);
10098
0
        }
10099
0
    }
10100
10101
    /* No fiber was interrupted */
10102
0
    return NULL;
10103
0
}
10104
10105
/* Same as janet_interpreter_interrupt, but will also
10106
 * break out of the event loop if waiting for an event
10107
 * (say, waiting for ev/sleep to finish). Does this by pushing
10108
 * an empty event to the event loop. */
10109
0
void janet_loop1_interrupt(JanetVM *vm) {
10110
0
    janet_interpreter_interrupt(vm);
10111
0
    JanetEVGenericMessage msg = {0};
10112
0
    JanetCallback cb = NULL;
10113
0
    janet_ev_post_event(vm, cb, msg);
10114
0
}
10115
10116
0
void janet_loop(void) {
10117
0
    while (!janet_loop_done()) {
10118
0
        JanetFiber *interrupted_fiber = janet_loop1();
10119
0
        if (NULL != interrupted_fiber) {
10120
0
            janet_schedule(interrupted_fiber, janet_wrap_nil());
10121
0
        }
10122
0
    }
10123
0
}
10124
10125
/*
10126
 * Self-pipe handling code.
10127
 */
10128
10129
#ifdef JANET_WINDOWS
10130
10131
/* On windows, use PostQueuedCompletionStatus instead for
10132
 * custom events */
10133
10134
#else
10135
10136
6.23k
static void janet_ev_setup_selfpipe(void) {
10137
6.23k
    if (janet_make_pipe(janet_vm.selfpipe, 1)) {
10138
0
        JANET_EXIT("failed to initialize self pipe in event loop");
10139
0
    }
10140
6.23k
}
10141
10142
/* Handle events from the self pipe inside the event loop */
10143
0
static void janet_ev_handle_selfpipe(void) {
10144
0
    JanetSelfPipeEvent response;
10145
0
    int status;
10146
0
recur:
10147
0
    do {
10148
0
        status = read(janet_vm.selfpipe[0], &response, sizeof(response));
10149
0
    } while (status == -1 && errno == EINTR);
10150
0
    if (status > 0) {
10151
0
        if (NULL != response.cb) {
10152
0
            response.cb(response.msg);
10153
0
            janet_ev_dec_refcount();
10154
0
        }
10155
0
        goto recur;
10156
0
    }
10157
0
}
10158
10159
6.23k
static void janet_ev_cleanup_selfpipe(void) {
10160
6.23k
    close(janet_vm.selfpipe[0]);
10161
6.23k
    close(janet_vm.selfpipe[1]);
10162
6.23k
}
10163
10164
#endif
10165
10166
#ifdef JANET_WINDOWS
10167
10168
static JanetTimestamp ts_now(void) {
10169
    return (JanetTimestamp) GetTickCount64();
10170
}
10171
10172
void janet_ev_init(void) {
10173
    janet_ev_init_common();
10174
    janet_vm.iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
10175
    if (NULL == janet_vm.iocp) janet_panic("could not create io completion port");
10176
}
10177
10178
void janet_ev_deinit(void) {
10179
    janet_ev_deinit_common();
10180
    CloseHandle(janet_vm.iocp);
10181
}
10182
10183
static void janet_register_stream(JanetStream *stream) {
10184
    if (NULL == CreateIoCompletionPort(stream->handle, janet_vm.iocp, (ULONG_PTR) stream, 0)) {
10185
        if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_WRITABLE | JANET_STREAM_ACCEPTABLE)) {
10186
            janet_panicf("failed to listen for events: %V", janet_ev_lasterr());
10187
        }
10188
        stream->flags |= JANET_STREAM_UNREGISTERED;
10189
    }
10190
}
10191
10192
void janet_loop1_impl(int has_timeout, JanetTimestamp to) {
10193
    ULONG_PTR completionKey = 0;
10194
    DWORD num_bytes_transferred = 0;
10195
    LPOVERLAPPED overlapped = NULL;
10196
10197
    /* Calculate how long to wait before timeout */
10198
    uint64_t waittime;
10199
    if (has_timeout) {
10200
        JanetTimestamp now = ts_now();
10201
        if (now > to) {
10202
            waittime = 0;
10203
        } else {
10204
            waittime = (uint64_t)(to - now);
10205
        }
10206
    } else {
10207
        waittime = INFINITE;
10208
    }
10209
    BOOL result = GetQueuedCompletionStatus(janet_vm.iocp, &num_bytes_transferred, &completionKey, &overlapped, (DWORD) waittime);
10210
10211
    if (result || overlapped) {
10212
        if (0 == completionKey) {
10213
            /* Custom event */
10214
            JanetSelfPipeEvent *response = (JanetSelfPipeEvent *)(overlapped);
10215
            if (NULL != response->cb) {
10216
                response->cb(response->msg);
10217
            }
10218
            janet_ev_dec_refcount();
10219
            janet_free(response);
10220
        } else {
10221
            /* Normal event */
10222
            JanetStream *stream = (JanetStream *) completionKey;
10223
            JanetFiber *fiber = NULL;
10224
            if (stream->read_fiber && stream->read_fiber->ev_state == overlapped) {
10225
                fiber = stream->read_fiber;
10226
            } else if (stream->write_fiber && stream->write_fiber->ev_state == overlapped) {
10227
                fiber = stream->write_fiber;
10228
            }
10229
            if (fiber != NULL) {
10230
                fiber->flags &= ~JANET_FIBER_EV_FLAG_IN_FLIGHT;
10231
                /* System is done with this, we can reused this data */
10232
                overlapped->InternalHigh = (ULONG_PTR) num_bytes_transferred;
10233
                fiber->ev_callback(fiber, result ? JANET_ASYNC_EVENT_COMPLETE : JANET_ASYNC_EVENT_FAILED);
10234
            } else {
10235
                janet_free((void *) overlapped);
10236
                janet_ev_dec_refcount();
10237
            }
10238
            janet_stream_checktoclose(stream);
10239
        }
10240
    }
10241
}
10242
10243
void janet_stream_edge_triggered(JanetStream *stream) {
10244
    (void) stream;
10245
}
10246
10247
void janet_stream_level_triggered(JanetStream *stream) {
10248
    (void) stream;
10249
}
10250
10251
#elif defined(JANET_EV_EPOLL)
10252
10253
0
static JanetTimestamp ts_now(void) {
10254
0
    struct timespec now;
10255
0
    janet_assert(-1 != clock_gettime(CLOCK_MONOTONIC, &now), "failed to get time");
10256
0
    uint64_t res = 1000 * now.tv_sec;
10257
0
    res += now.tv_nsec / 1000000;
10258
0
    return res;
10259
0
}
10260
10261
/* Wait for the next event */
10262
0
static void janet_register_stream_impl(JanetStream *stream, int mod, int edge_trigger) {
10263
0
    struct epoll_event ev;
10264
0
    ev.events = edge_trigger ? EPOLLET : 0;
10265
0
    if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_ACCEPTABLE)) ev.events |= EPOLLIN;
10266
0
    if (stream->flags & JANET_STREAM_WRITABLE) ev.events |= EPOLLOUT;
10267
0
    ev.data.ptr = stream;
10268
0
    int status;
10269
0
    do {
10270
0
        status = epoll_ctl(janet_vm.epoll, mod ? EPOLL_CTL_MOD : EPOLL_CTL_ADD, stream->handle, &ev);
10271
0
    } while (status == -1 && errno == EINTR);
10272
0
    if (status == -1) {
10273
0
        if (errno == EPERM) {
10274
            /* Couldn't add to event loop, so assume that it completes
10275
             * synchronously. */
10276
0
            stream->flags |= JANET_STREAM_UNREGISTERED;
10277
0
        } else {
10278
            /* Unexpected error */
10279
0
            janet_panicv(janet_ev_lasterr());
10280
0
        }
10281
0
    }
10282
0
}
10283
10284
0
static void janet_register_stream(JanetStream *stream) {
10285
0
    janet_register_stream_impl(stream, 0, 1);
10286
0
}
10287
10288
0
void janet_stream_edge_triggered(JanetStream *stream) {
10289
0
    janet_register_stream_impl(stream, 1, 1);
10290
0
}
10291
10292
0
void janet_stream_level_triggered(JanetStream *stream) {
10293
0
    janet_register_stream_impl(stream, 1, 0);
10294
0
}
10295
10296
0
#define JANET_EPOLL_MAX_EVENTS 64
10297
0
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10298
0
    struct itimerspec its;
10299
0
    if (janet_vm.timer_enabled || has_timeout) {
10300
0
        memset(&its, 0, sizeof(its));
10301
0
        if (has_timeout) {
10302
0
            its.it_value.tv_sec = timeout / 1000;
10303
0
            its.it_value.tv_nsec = (timeout % 1000) * 1000000;
10304
0
        }
10305
0
        timerfd_settime(janet_vm.timerfd, TFD_TIMER_ABSTIME, &its, NULL);
10306
0
    }
10307
0
    janet_vm.timer_enabled = has_timeout;
10308
10309
    /* Poll for events */
10310
0
    struct epoll_event events[JANET_EPOLL_MAX_EVENTS];
10311
0
    int ready;
10312
0
    do {
10313
0
        ready = epoll_wait(janet_vm.epoll, events, JANET_EPOLL_MAX_EVENTS, -1);
10314
0
    } while (ready == -1 && errno == EINTR);
10315
0
    if (ready == -1) {
10316
0
        JANET_EXIT("failed to poll events");
10317
0
    }
10318
10319
    /* Step state machines */
10320
0
    for (int i = 0; i < ready; i++) {
10321
0
        void *p = events[i].data.ptr;
10322
0
        if (&janet_vm.timerfd == p) {
10323
0
            /* Timer expired, ignore */;
10324
0
        } else if (janet_vm.selfpipe == p) {
10325
            /* Self-pipe handling */
10326
0
            janet_ev_handle_selfpipe();
10327
0
        } else {
10328
0
            JanetStream *stream = p;
10329
0
            int mask = events[i].events;
10330
0
            int has_err = mask & EPOLLERR;
10331
0
            int has_hup = mask & EPOLLHUP;
10332
0
            JanetFiber *rf = stream->read_fiber;
10333
0
            JanetFiber *wf = stream->write_fiber;
10334
0
            if (rf) {
10335
0
                if (rf->ev_callback && (mask & EPOLLIN)) {
10336
0
                    rf->ev_callback(rf, JANET_ASYNC_EVENT_READ);
10337
0
                }
10338
0
                if (rf->ev_callback && has_err) {
10339
0
                    rf->ev_callback(rf, JANET_ASYNC_EVENT_ERR);
10340
0
                }
10341
0
                if (rf->ev_callback && has_hup) {
10342
0
                    rf->ev_callback(rf, JANET_ASYNC_EVENT_HUP);
10343
0
                }
10344
0
            }
10345
0
            if (wf) {
10346
0
                if (wf->ev_callback && (mask & EPOLLOUT)) {
10347
0
                    wf->ev_callback(wf, JANET_ASYNC_EVENT_WRITE);
10348
0
                }
10349
0
                if (wf->ev_callback && has_err) {
10350
0
                    wf->ev_callback(wf, JANET_ASYNC_EVENT_ERR);
10351
0
                }
10352
0
                if (wf->ev_callback && has_hup) {
10353
0
                    wf->ev_callback(wf, JANET_ASYNC_EVENT_HUP);
10354
0
                }
10355
0
            }
10356
0
            janet_stream_checktoclose(stream);
10357
0
        }
10358
0
    }
10359
0
}
10360
10361
6.23k
void janet_ev_init(void) {
10362
6.23k
    janet_ev_init_common();
10363
6.23k
    janet_ev_setup_selfpipe();
10364
6.23k
    janet_vm.epoll = epoll_create1(EPOLL_CLOEXEC);
10365
6.23k
    janet_vm.timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK);
10366
6.23k
    janet_vm.timer_enabled = 0;
10367
6.23k
    if (janet_vm.epoll == -1 || janet_vm.timerfd == -1) goto error;
10368
6.23k
    struct epoll_event ev;
10369
6.23k
    ev.events = EPOLLIN | EPOLLET;
10370
6.23k
    ev.data.ptr = &janet_vm.timerfd;
10371
6.23k
    if (-1 == epoll_ctl(janet_vm.epoll, EPOLL_CTL_ADD, janet_vm.timerfd, &ev)) goto error;
10372
6.23k
    ev.events = EPOLLIN | EPOLLET;
10373
6.23k
    ev.data.ptr = janet_vm.selfpipe;
10374
6.23k
    if (-1 == epoll_ctl(janet_vm.epoll, EPOLL_CTL_ADD, janet_vm.selfpipe[0], &ev)) goto error;
10375
6.23k
    return;
10376
6.23k
error:
10377
0
    JANET_EXIT("failed to initialize event loop");
10378
0
}
10379
10380
6.23k
void janet_ev_deinit(void) {
10381
6.23k
    janet_ev_deinit_common();
10382
6.23k
    close(janet_vm.epoll);
10383
6.23k
    close(janet_vm.timerfd);
10384
6.23k
    janet_ev_cleanup_selfpipe();
10385
6.23k
    janet_vm.epoll = 0;
10386
6.23k
}
10387
10388
/*
10389
 * End epoll implementation
10390
 */
10391
10392
#elif defined(JANET_EV_KQUEUE)
10393
/* Definition from:
10394
 *   https://github.com/wahern/cqueues/blob/master/src/lib/kpoll.c
10395
 * NetBSD uses intptr_t while others use void * for .udata */
10396
#define EV_SETx(ev, a, b, c, d, e, f) EV_SET((ev), (a), (b), (c), (d), (e), ((__typeof__((ev)->udata))(f)))
10397
#define JANET_KQUEUE_MIN_INTERVAL 0
10398
10399
/* NOTE:
10400
 * NetBSD and OpenBSD expect things are always intervals, and FreeBSD doesn't
10401
 * like an ABSTIME in the past so just use intervals always. Introduces a
10402
 * calculation to determine the minimum timeout per timeout requested of
10403
 * kqueue. Also note that NetBSD doesn't accept timeout intervals less than 1
10404
 * millisecond, so correct all intervals on that platform to be at least 1
10405
 * millisecond.*/
10406
JanetTimestamp to_interval(const JanetTimestamp ts) {
10407
    return ts >= JANET_KQUEUE_MIN_INTERVAL ? ts : JANET_KQUEUE_MIN_INTERVAL;
10408
}
10409
#define JANET_KQUEUE_INTERVAL(timestamp) (to_interval((timestamp - ts_now())))
10410
10411
static JanetTimestamp ts_now(void) {
10412
    struct timespec now;
10413
    janet_assert(-1 != clock_gettime(CLOCK_MONOTONIC, &now), "failed to get time");
10414
    uint64_t res = 1000 * now.tv_sec;
10415
    res += now.tv_nsec / 1000000;
10416
    return res;
10417
}
10418
10419
/* NOTE: Assumes Janet's timestamp precision is in milliseconds. */
10420
static void timestamp2timespec(struct timespec *t, JanetTimestamp ts) {
10421
    t->tv_sec = ts == 0 ? 0 : ts / 1000;
10422
    t->tv_nsec = ts == 0 ? 0 : (ts % 1000) * 1000000;
10423
}
10424
10425
void janet_register_stream_impl(JanetStream *stream, int edge_trigger) {
10426
    struct kevent kevs[2];
10427
    int length = 0;
10428
    int clear = edge_trigger ? EV_CLEAR : 0;
10429
    if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_ACCEPTABLE)) {
10430
        EV_SETx(&kevs[length++], stream->handle, EVFILT_READ, EV_ADD | EV_ENABLE | clear, 0, 0, stream);
10431
    }
10432
    if (stream->flags & JANET_STREAM_WRITABLE) {
10433
        EV_SETx(&kevs[length++], stream->handle, EVFILT_WRITE, EV_ADD | EV_ENABLE | clear, 0, 0, stream);
10434
    }
10435
    int status;
10436
    do {
10437
        status = kevent(janet_vm.kq, kevs, length, NULL, 0, NULL);
10438
    } while (status == -1 && errno == EINTR);
10439
    if (status == -1) {
10440
        stream->flags |= JANET_STREAM_UNREGISTERED;
10441
    }
10442
}
10443
10444
void janet_register_stream(JanetStream *stream) {
10445
    janet_register_stream_impl(stream, 1);
10446
}
10447
10448
void janet_stream_edge_triggered(JanetStream *stream) {
10449
    janet_register_stream_impl(stream, 1);
10450
}
10451
10452
void janet_stream_level_triggered(JanetStream *stream) {
10453
    /* On macos, we seem to need to delete any registered events before re-registering without
10454
     * EV_CLEAR, otherwise the new event will still have EV_CLEAR set erroneously. This could be a
10455
     * kernel bug, but unfortunately the specification is vague here, esp. in regards to where and when
10456
     * EV_CLEAR is set automatically. */
10457
    struct kevent kevs[2];
10458
    int length = 0;
10459
    if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_ACCEPTABLE)) {
10460
        EV_SETx(&kevs[length++], stream->handle, EVFILT_READ, EV_DELETE, 0, 0, stream);
10461
    }
10462
    if (stream->flags & JANET_STREAM_WRITABLE) {
10463
        EV_SETx(&kevs[length++], stream->handle, EVFILT_WRITE, EV_DELETE, 0, 0, stream);
10464
    }
10465
    int status;
10466
    do {
10467
        status = kevent(janet_vm.kq, kevs, length, NULL, 0, NULL);
10468
    } while (status == -1 && errno == EINTR);
10469
    janet_register_stream_impl(stream, 0);
10470
}
10471
10472
#define JANET_KQUEUE_MAX_EVENTS 64
10473
10474
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10475
    /* Poll for events */
10476
    /* NOTE:
10477
     * We calculate the timeout interval per iteration. When the interval
10478
     * drops to 0 or negative, we effect a timeout of 0. Effecting a timeout
10479
     * of infinity will not work and could make other fibers with timeouts
10480
     * miss their timeouts if we did so.
10481
     * JANET_KQUEUE_INTERVAL insures we have a timeout of no less than 0. */
10482
    int status;
10483
    struct timespec ts;
10484
    struct kevent events[JANET_KQUEUE_MAX_EVENTS];
10485
    do {
10486
        if (janet_vm.timer_enabled || has_timeout) {
10487
            timestamp2timespec(&ts, JANET_KQUEUE_INTERVAL(timeout));
10488
            status = kevent(janet_vm.kq, NULL, 0, events,
10489
                            JANET_KQUEUE_MAX_EVENTS, &ts);
10490
        } else {
10491
            status = kevent(janet_vm.kq, NULL, 0, events,
10492
                            JANET_KQUEUE_MAX_EVENTS, NULL);
10493
        }
10494
    } while (status == -1 && errno == EINTR);
10495
    if (status == -1) {
10496
        JANET_EXIT("failed to poll events");
10497
    }
10498
10499
    /* Make sure timer is set accordingly. */
10500
    janet_vm.timer_enabled = has_timeout;
10501
10502
    /* Step state machines */
10503
    for (int i = 0; i < status; i++) {
10504
        void *p = (void *) events[i].udata;
10505
        if (janet_vm.selfpipe == p) {
10506
            /* Self-pipe handling */
10507
            janet_ev_handle_selfpipe();
10508
        } else {
10509
            JanetStream *stream = p;
10510
            int filt = events[i].filter;
10511
            int has_err = events[i].flags & EV_ERROR;
10512
            int has_hup = events[i].flags & EV_EOF;
10513
            for (int j = 0; j < 2; j++) {
10514
                JanetFiber *f = j ? stream->read_fiber : stream->write_fiber;
10515
                if (!f) continue;
10516
                if (f->ev_callback && has_err) {
10517
                    f->ev_callback(f, JANET_ASYNC_EVENT_ERR);
10518
                }
10519
                if (f->ev_callback && (filt == EVFILT_READ) && f == stream->read_fiber) {
10520
                    f->ev_callback(f, JANET_ASYNC_EVENT_READ);
10521
                }
10522
                if (f->ev_callback && (filt == EVFILT_WRITE) && f == stream->write_fiber) {
10523
                    f->ev_callback(f, JANET_ASYNC_EVENT_WRITE);
10524
                }
10525
                if (f->ev_callback && has_hup) {
10526
                    f->ev_callback(f, JANET_ASYNC_EVENT_HUP);
10527
                }
10528
            }
10529
            janet_stream_checktoclose(stream);
10530
        }
10531
    }
10532
}
10533
10534
void janet_ev_init(void) {
10535
    janet_ev_init_common();
10536
    janet_ev_setup_selfpipe();
10537
    janet_vm.kq = kqueue();
10538
    janet_vm.timer_enabled = 0;
10539
    if (janet_vm.kq == -1) goto error;
10540
    struct kevent event;
10541
    EV_SETx(&event, janet_vm.selfpipe[0], EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, janet_vm.selfpipe);
10542
    int status;
10543
    do {
10544
        status = kevent(janet_vm.kq, &event, 1, NULL, 0, NULL);
10545
    } while (status == -1 && errno != EINTR);
10546
    if (status == -1) goto error;
10547
    return;
10548
error:
10549
    JANET_EXIT("failed to initialize event loop");
10550
}
10551
10552
void janet_ev_deinit(void) {
10553
    janet_ev_deinit_common();
10554
    close(janet_vm.kq);
10555
    janet_ev_cleanup_selfpipe();
10556
    janet_vm.kq = 0;
10557
}
10558
10559
#elif defined(JANET_EV_POLL)
10560
10561
/* Simple poll implementation. Efficiency is not the goal here, although the poll implementation should be farily efficient
10562
 * for low numbers of concurrent file descriptors. Rather, the code should be simple, portable, correct, and mirror the
10563
 * epoll and kqueue code. */
10564
10565
static JanetTimestamp ts_now(void) {
10566
    struct timespec now;
10567
    janet_assert(-1 != clock_gettime(CLOCK_REALTIME, &now), "failed to get time");
10568
    uint64_t res = 1000 * now.tv_sec;
10569
    res += now.tv_nsec / 1000000;
10570
    return res;
10571
}
10572
10573
/* Wait for the next event */
10574
void janet_register_stream(JanetStream *stream) {
10575
    struct pollfd ev = {0};
10576
    stream->index = (uint32_t) janet_vm.stream_count;
10577
    size_t new_count = janet_vm.stream_count + 1;
10578
    if (new_count > janet_vm.stream_capacity) {
10579
        size_t new_cap = new_count * 2;
10580
        janet_vm.fds = janet_realloc(janet_vm.fds, (1 + new_cap) * sizeof(struct pollfd));
10581
        janet_vm.streams = janet_realloc(janet_vm.streams, new_cap * sizeof(JanetStream *));
10582
        if (!janet_vm.fds || !janet_vm.streams) {
10583
            JANET_OUT_OF_MEMORY;
10584
        }
10585
        janet_vm.stream_capacity = new_cap;
10586
    }
10587
    ev.fd = stream->handle;
10588
    ev.events = POLLIN | POLLOUT;
10589
    janet_vm.fds[janet_vm.stream_count + 1] = ev;
10590
    janet_vm.streams[janet_vm.stream_count] = stream;
10591
    janet_vm.stream_count = new_count;
10592
}
10593
10594
void janet_stream_edge_triggered(JanetStream *stream) {
10595
    (void) stream;
10596
}
10597
10598
void janet_stream_level_triggered(JanetStream *stream) {
10599
    (void) stream;
10600
}
10601
10602
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10603
10604
    /* set event flags */
10605
    for (size_t i = 0; i < janet_vm.stream_count; i++) {
10606
        JanetStream *stream = janet_vm.streams[i];
10607
        struct pollfd *pfd = janet_vm.fds + i + 1;
10608
        pfd->events = 0;
10609
        pfd->revents = 0;
10610
        JanetFiber *rf = stream->read_fiber;
10611
        JanetFiber *wf = stream->write_fiber;
10612
        if (rf && rf->ev_callback) pfd->events |= POLLIN;
10613
        if (wf && wf->ev_callback) pfd->events |= POLLOUT;
10614
        /* Hack to ignore a file descriptor - make file descriptor negative if we want to ignore */
10615
        if (!pfd->events) {
10616
            pfd->fd = -pfd->fd;
10617
        }
10618
    }
10619
10620
    /* Poll for events */
10621
    int ready;
10622
    do {
10623
        int to = -1;
10624
        if (has_timeout) {
10625
            JanetTimestamp now = ts_now();
10626
            to = now > timeout ? 0 : (int)(timeout - now);
10627
        }
10628
        ready = poll(janet_vm.fds, janet_vm.stream_count + 1, to);
10629
    } while (ready == -1 && errno == EINTR);
10630
    if (ready == -1) {
10631
        JANET_EXIT("failed to poll events");
10632
    }
10633
10634
    /* Undo negative hack */
10635
    for (size_t i = 0; i < janet_vm.stream_count; i++) {
10636
        struct pollfd *pfd = janet_vm.fds + i + 1;
10637
        if (pfd->fd < 0) {
10638
            pfd->fd = -pfd->fd;
10639
        }
10640
    }
10641
10642
    /* Check selfpipe */
10643
    if (janet_vm.fds[0].revents & POLLIN) {
10644
        janet_vm.fds[0].revents = 0;
10645
        janet_ev_handle_selfpipe();
10646
    }
10647
10648
    /* Step state machines */
10649
    for (size_t i = 0; i < janet_vm.stream_count; i++) {
10650
        struct pollfd *pfd = janet_vm.fds + i + 1;
10651
        JanetStream *stream = janet_vm.streams[i];
10652
        int mask = pfd->revents;
10653
        if (!mask) continue;
10654
        int has_err = mask & POLLERR;
10655
        int has_hup = mask & POLLHUP;
10656
        JanetFiber *rf = stream->read_fiber;
10657
        JanetFiber *wf = stream->write_fiber;
10658
        if (rf) {
10659
            if (rf->ev_callback && (mask & POLLIN)) {
10660
                rf->ev_callback(rf, JANET_ASYNC_EVENT_READ);
10661
            } else if (rf->ev_callback && has_hup) {
10662
                rf->ev_callback(rf, JANET_ASYNC_EVENT_HUP);
10663
            } else if (rf->ev_callback && has_err) {
10664
                rf->ev_callback(rf, JANET_ASYNC_EVENT_ERR);
10665
            }
10666
        }
10667
        if (wf) {
10668
            if (wf->ev_callback && (mask & POLLOUT)) {
10669
                wf->ev_callback(wf, JANET_ASYNC_EVENT_WRITE);
10670
            } else if (wf->ev_callback && has_hup) {
10671
                wf->ev_callback(wf, JANET_ASYNC_EVENT_HUP);
10672
            } else if (wf->ev_callback && has_err) {
10673
                wf->ev_callback(wf, JANET_ASYNC_EVENT_ERR);
10674
            }
10675
        }
10676
        janet_stream_checktoclose(stream);
10677
    }
10678
}
10679
10680
void janet_ev_init(void) {
10681
    janet_ev_init_common();
10682
    janet_vm.fds = NULL;
10683
    janet_ev_setup_selfpipe();
10684
    janet_vm.fds = janet_malloc(sizeof(struct pollfd));
10685
    if (NULL == janet_vm.fds) {
10686
        JANET_OUT_OF_MEMORY;
10687
    }
10688
    janet_vm.fds[0].fd = janet_vm.selfpipe[0];
10689
    janet_vm.fds[0].events = POLLIN;
10690
    janet_vm.fds[0].revents = 0;
10691
    janet_vm.streams = NULL;
10692
    janet_vm.stream_count = 0;
10693
    janet_vm.stream_capacity = 0;
10694
    return;
10695
}
10696
10697
void janet_ev_deinit(void) {
10698
    janet_ev_deinit_common();
10699
    janet_ev_cleanup_selfpipe();
10700
    janet_free(janet_vm.fds);
10701
    janet_free(janet_vm.streams);
10702
    janet_vm.fds = NULL;
10703
    janet_vm.streams = NULL;
10704
}
10705
10706
#endif
10707
10708
/*
10709
 * End poll implementation
10710
 */
10711
10712
/*
10713
 * Generic Callback system. Post a function pointer + data to the event loop (from another
10714
 * thread or even a signal handler). Allows posting events from another thread or signal handler.
10715
 */
10716
0
void janet_ev_post_event(JanetVM *vm, JanetCallback cb, JanetEVGenericMessage msg) {
10717
0
    vm = vm ? vm : &janet_vm;
10718
0
    janet_atomic_inc(&vm->listener_count);
10719
#ifdef JANET_WINDOWS
10720
    JanetHandle iocp = vm->iocp;
10721
    JanetSelfPipeEvent *event = janet_malloc(sizeof(JanetSelfPipeEvent));
10722
    if (NULL == event) {
10723
        JANET_OUT_OF_MEMORY;
10724
    }
10725
    event->msg = msg;
10726
    event->cb = cb;
10727
    janet_assert(PostQueuedCompletionStatus(iocp,
10728
                                            sizeof(JanetSelfPipeEvent),
10729
                                            0,
10730
                                            (LPOVERLAPPED) event),
10731
                 "failed to post completion event");
10732
#else
10733
0
    JanetSelfPipeEvent event;
10734
0
    memset(&event, 0, sizeof(event));
10735
0
    event.msg = msg;
10736
0
    event.cb = cb;
10737
0
    int fd = vm->selfpipe[1];
10738
    /* handle a bit of back pressure before giving up. */
10739
0
    int tries = 4;
10740
0
    while (tries > 0) {
10741
0
        int status;
10742
0
        do {
10743
0
            status = write(fd, &event, sizeof(event));
10744
0
        } while (status == -1 && errno == EINTR);
10745
0
        if (status > 0) break;
10746
0
        sleep(0);
10747
0
        tries--;
10748
0
    }
10749
0
    janet_assert(tries > 0, "failed to write event to self-pipe");
10750
0
#endif
10751
0
}
10752
10753
/*
10754
 * Threaded calls
10755
 */
10756
10757
#ifdef JANET_WINDOWS
10758
static DWORD WINAPI janet_thread_body(LPVOID ptr) {
10759
    JanetEVThreadInit *init = (JanetEVThreadInit *)ptr;
10760
    JanetEVGenericMessage msg = init->msg;
10761
    JanetThreadedSubroutine subr = init->subr;
10762
    JanetThreadedCallback cb = init->cb;
10763
    JanetHandle iocp = init->write_pipe;
10764
    /* Reuse memory from thread init for returning data */
10765
    init->msg = subr(msg);
10766
    init->cb = cb;
10767
    janet_assert(PostQueuedCompletionStatus(iocp,
10768
                                            sizeof(JanetSelfPipeEvent),
10769
                                            0,
10770
                                            (LPOVERLAPPED) init),
10771
                 "failed to post completion event");
10772
    return 0;
10773
}
10774
#else
10775
0
static void *janet_thread_body(void *ptr) {
10776
0
    JanetEVThreadInit *init = (JanetEVThreadInit *)ptr;
10777
0
    JanetEVGenericMessage msg = init->msg;
10778
0
    JanetThreadedSubroutine subr = init->subr;
10779
0
    JanetThreadedCallback cb = init->cb;
10780
0
    int fd = init->write_pipe;
10781
0
    janet_free(init);
10782
0
    JanetSelfPipeEvent response;
10783
0
    memset(&response, 0, sizeof(response));
10784
0
    response.msg = subr(msg);
10785
0
    response.cb = cb;
10786
    /* handle a bit of back pressure before giving up. */
10787
0
    int tries = 4;
10788
0
    while (tries > 0) {
10789
0
        int status;
10790
0
        do {
10791
0
            status = write(fd, &response, sizeof(response));
10792
0
        } while (status == -1 && errno == EINTR);
10793
0
        if (status > 0) break;
10794
0
        sleep(1);
10795
0
        tries--;
10796
0
    }
10797
0
    return NULL;
10798
0
}
10799
#endif
10800
10801
0
void janet_ev_threaded_call(JanetThreadedSubroutine fp, JanetEVGenericMessage arguments, JanetThreadedCallback cb) {
10802
0
    JanetEVThreadInit *init = janet_malloc(sizeof(JanetEVThreadInit));
10803
0
    if (NULL == init) {
10804
0
        JANET_OUT_OF_MEMORY;
10805
0
    }
10806
0
    init->msg = arguments;
10807
0
    init->subr = fp;
10808
0
    init->cb = cb;
10809
10810
#ifdef JANET_WINDOWS
10811
    init->write_pipe = janet_vm.iocp;
10812
    HANDLE thread_handle = CreateThread(NULL, 0, janet_thread_body, init, 0, NULL);
10813
    if (NULL == thread_handle) {
10814
        janet_free(init);
10815
        janet_panic("failed to create thread");
10816
    }
10817
    CloseHandle(thread_handle); /* detach from thread */
10818
#else
10819
0
    init->write_pipe = janet_vm.selfpipe[1];
10820
0
    pthread_t waiter_thread;
10821
0
    int err = pthread_create(&waiter_thread, &janet_vm.new_thread_attr, janet_thread_body, init);
10822
0
    if (err) {
10823
0
        janet_free(init);
10824
0
        janet_panicf("%s", janet_strerror(err));
10825
0
    }
10826
0
#endif
10827
10828
    /* Increment ev refcount so we don't quit while waiting for a subprocess */
10829
0
    janet_ev_inc_refcount();
10830
0
}
10831
10832
/* Default callback for janet_ev_threaded_await. */
10833
0
void janet_ev_default_threaded_callback(JanetEVGenericMessage return_value) {
10834
0
    if (return_value.fiber == NULL) {
10835
0
        return;
10836
0
    }
10837
0
    if (janet_fiber_can_resume(return_value.fiber)) {
10838
0
        switch (return_value.tag) {
10839
0
            default:
10840
0
            case JANET_EV_TCTAG_NIL:
10841
0
                janet_schedule(return_value.fiber, janet_wrap_nil());
10842
0
                break;
10843
0
            case JANET_EV_TCTAG_INTEGER:
10844
0
                janet_schedule(return_value.fiber, janet_wrap_integer(return_value.argi));
10845
0
                break;
10846
0
            case JANET_EV_TCTAG_STRING:
10847
0
            case JANET_EV_TCTAG_STRINGF:
10848
0
                janet_schedule(return_value.fiber, janet_cstringv((const char *) return_value.argp));
10849
0
                if (return_value.tag == JANET_EV_TCTAG_STRINGF) janet_free(return_value.argp);
10850
0
                break;
10851
0
            case JANET_EV_TCTAG_KEYWORD:
10852
0
                janet_schedule(return_value.fiber, janet_ckeywordv((const char *) return_value.argp));
10853
0
                break;
10854
0
            case JANET_EV_TCTAG_ERR_STRING:
10855
0
            case JANET_EV_TCTAG_ERR_STRINGF:
10856
0
                janet_cancel(return_value.fiber, janet_cstringv((const char *) return_value.argp));
10857
0
                if (return_value.tag == JANET_EV_TCTAG_STRINGF) janet_free(return_value.argp);
10858
0
                break;
10859
0
            case JANET_EV_TCTAG_ERR_KEYWORD:
10860
0
                janet_cancel(return_value.fiber, janet_ckeywordv((const char *) return_value.argp));
10861
0
                break;
10862
0
            case JANET_EV_TCTAG_BOOLEAN:
10863
0
                janet_schedule(return_value.fiber, janet_wrap_boolean(return_value.argi));
10864
0
                break;
10865
0
        }
10866
0
    }
10867
0
    janet_gcunroot(janet_wrap_fiber(return_value.fiber));
10868
0
}
10869
10870
/* Convenience method for common case */
10871
JANET_NO_RETURN
10872
0
void janet_ev_threaded_await(JanetThreadedSubroutine fp, int tag, int argi, void *argp) {
10873
0
    JanetEVGenericMessage arguments;
10874
0
    memset(&arguments, 0, sizeof(arguments));
10875
0
    arguments.tag = tag;
10876
0
    arguments.argi = argi;
10877
0
    arguments.argp = argp;
10878
0
    arguments.fiber = janet_root_fiber();
10879
0
    janet_gcroot(janet_wrap_fiber(arguments.fiber));
10880
0
    janet_ev_threaded_call(fp, arguments, janet_ev_default_threaded_callback);
10881
0
    janet_await();
10882
0
}
10883
10884
/*
10885
 * C API helpers for reading and writing from streams.
10886
 * There is some networking code in here as well as generic
10887
 * reading and writing primitives.
10888
 */
10889
10890
0
void janet_stream_flags(JanetStream *stream, uint32_t flags) {
10891
0
    if (stream->flags & JANET_STREAM_CLOSED) {
10892
0
        janet_panic("stream is closed");
10893
0
    }
10894
0
    if ((stream->flags & flags) != flags) {
10895
0
        const char *rmsg = "", *wmsg = "", *amsg = "", *dmsg = "", *smsg = "stream";
10896
0
        if (flags & JANET_STREAM_READABLE) rmsg = "readable ";
10897
0
        if (flags & JANET_STREAM_WRITABLE) wmsg = "writable ";
10898
0
        if (flags & JANET_STREAM_ACCEPTABLE) amsg = "server ";
10899
0
        if (flags & JANET_STREAM_UDPSERVER) dmsg = "datagram ";
10900
0
        if (flags & JANET_STREAM_SOCKET) smsg = "socket";
10901
0
        janet_panicf("bad stream, expected %s%s%s%s%s", rmsg, wmsg, amsg, dmsg, smsg);
10902
0
    }
10903
0
}
10904
10905
/* When there is an IO error, we need to be able to convert it to a Janet
10906
 * string to raise a Janet error. */
10907
#ifdef JANET_WINDOWS
10908
#define JANET_EV_CHUNKSIZE 4096
10909
Janet janet_ev_lasterr(void) {
10910
    int code = GetLastError();
10911
    char msgbuf[256];
10912
    msgbuf[0] = '\0';
10913
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
10914
                  NULL,
10915
                  code,
10916
                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
10917
                  msgbuf,
10918
                  sizeof(msgbuf),
10919
                  NULL);
10920
    if (!*msgbuf) sprintf(msgbuf, "%d", code);
10921
    char *c = msgbuf;
10922
    while (*c) {
10923
        if (*c == '\n' || *c == '\r') {
10924
            *c = '\0';
10925
            break;
10926
        }
10927
        c++;
10928
    }
10929
    return janet_cstringv(msgbuf);
10930
}
10931
#else
10932
0
Janet janet_ev_lasterr(void) {
10933
0
    return janet_cstringv(janet_strerror(errno));
10934
0
}
10935
#endif
10936
10937
/* State machine for read/recv/recvfrom */
10938
10939
typedef enum {
10940
    JANET_ASYNC_READMODE_READ,
10941
    JANET_ASYNC_READMODE_RECV,
10942
    JANET_ASYNC_READMODE_RECVFROM
10943
} JanetReadMode;
10944
10945
typedef struct {
10946
#ifdef JANET_WINDOWS
10947
    OVERLAPPED overlapped;
10948
    DWORD flags;
10949
#ifdef JANET_NET
10950
    WSABUF wbuf;
10951
    struct sockaddr from;
10952
    int fromlen;
10953
#endif
10954
    uint8_t chunk_buf[JANET_EV_CHUNKSIZE];
10955
#else
10956
    int flags;
10957
#endif
10958
    int32_t bytes_left;
10959
    int32_t bytes_read;
10960
    JanetBuffer *buf;
10961
    int is_chunk;
10962
    JanetReadMode mode;
10963
} StateRead;
10964
10965
0
void ev_callback_read(JanetFiber *fiber, JanetAsyncEvent event) {
10966
0
    JanetStream *stream = fiber->ev_stream;
10967
0
    StateRead *state = (StateRead *) fiber->ev_state;
10968
0
    switch (event) {
10969
0
        default:
10970
0
            break;
10971
0
        case JANET_ASYNC_EVENT_MARK:
10972
0
            janet_mark(janet_wrap_buffer(state->buf));
10973
0
            break;
10974
0
        case JANET_ASYNC_EVENT_CLOSE:
10975
0
            janet_schedule(fiber, janet_wrap_nil());
10976
0
            janet_async_end(fiber);
10977
0
            break;
10978
#ifdef JANET_WINDOWS
10979
        case JANET_ASYNC_EVENT_FAILED:
10980
        case JANET_ASYNC_EVENT_COMPLETE: {
10981
            /* Called when read finished */
10982
            uint32_t ev_bytes = (uint32_t) state->overlapped.InternalHigh;
10983
            state->bytes_read += ev_bytes;
10984
            if (state->bytes_read == 0 && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
10985
                janet_schedule(fiber, janet_wrap_nil());
10986
                janet_async_end(fiber);
10987
                return;
10988
            }
10989
10990
            janet_buffer_push_bytes(state->buf, state->chunk_buf, ev_bytes);
10991
            state->bytes_left -= ev_bytes;
10992
10993
            if (state->bytes_left == 0 || !state->is_chunk || ev_bytes == 0) {
10994
                Janet resume_val;
10995
#ifdef JANET_NET
10996
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
10997
                    void *abst = janet_abstract(&janet_address_type, state->fromlen);
10998
                    memcpy(abst, &state->from, state->fromlen);
10999
                    resume_val = janet_wrap_abstract(abst);
11000
                } else
11001
#endif
11002
                {
11003
                    resume_val = janet_wrap_buffer(state->buf);
11004
                }
11005
                janet_schedule(fiber, resume_val);
11006
                janet_async_end(fiber);
11007
                return;
11008
            }
11009
        }
11010
11011
        /* fallthrough */
11012
        case JANET_ASYNC_EVENT_INIT: {
11013
            int32_t chunk_size = state->bytes_left > JANET_EV_CHUNKSIZE ? JANET_EV_CHUNKSIZE : state->bytes_left;
11014
            memset(&(state->overlapped), 0, sizeof(OVERLAPPED));
11015
            int status;
11016
#ifdef JANET_NET
11017
            if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11018
                state->wbuf.len = (ULONG) chunk_size;
11019
                state->wbuf.buf = (char *) state->chunk_buf;
11020
                state->fromlen = sizeof(state->from);
11021
                status = WSARecvFrom((SOCKET) stream->handle, &state->wbuf, 1,
11022
                                     NULL, &state->flags, &state->from, &state->fromlen, &state->overlapped, NULL);
11023
                if (status && (WSA_IO_PENDING != WSAGetLastError())) {
11024
                    janet_cancel(fiber, janet_ev_lasterr());
11025
                    janet_async_end(fiber);
11026
                    return;
11027
                }
11028
            } else
11029
#endif
11030
            {
11031
                /* Some handles (not all) read from the offset in lpOverlapped
11032
                 * if its not set before calling `ReadFile` these streams will always read from offset 0 */
11033
                state->overlapped.Offset = (DWORD) state->bytes_read;
11034
11035
                status = ReadFile(stream->handle, state->chunk_buf, chunk_size, NULL, &state->overlapped);
11036
                if (!status && (ERROR_IO_PENDING != GetLastError())) {
11037
                    if (GetLastError() == ERROR_BROKEN_PIPE) {
11038
                        if (state->bytes_read) {
11039
                            janet_schedule(fiber, janet_wrap_buffer(state->buf));
11040
                        } else {
11041
                            janet_schedule(fiber, janet_wrap_nil());
11042
                        }
11043
                    } else {
11044
                        janet_cancel(fiber, janet_ev_lasterr());
11045
                    }
11046
                    janet_async_end(fiber);
11047
                    return;
11048
                }
11049
            }
11050
            janet_async_in_flight(fiber);
11051
        }
11052
        break;
11053
#else
11054
0
        case JANET_ASYNC_EVENT_ERR: {
11055
0
            if (state->bytes_read) {
11056
0
                janet_schedule(fiber, janet_wrap_buffer(state->buf));
11057
0
            } else {
11058
0
                janet_schedule(fiber, janet_wrap_nil());
11059
0
            }
11060
0
            stream->read_fiber = NULL;
11061
0
            janet_async_end(fiber);
11062
0
            break;
11063
0
        }
11064
11065
0
    read_more:
11066
0
        case JANET_ASYNC_EVENT_HUP:
11067
0
        case JANET_ASYNC_EVENT_INIT:
11068
0
        case JANET_ASYNC_EVENT_READ: {
11069
0
            JanetBuffer *buffer = state->buf;
11070
0
            int32_t bytes_left = state->bytes_left;
11071
0
            int32_t read_limit = state->is_chunk ? (bytes_left > 4096 ? 4096 : bytes_left) : bytes_left;
11072
0
            janet_buffer_extra(buffer, read_limit);
11073
0
            ssize_t nread;
11074
0
#ifdef JANET_NET
11075
0
            char saddr[256];
11076
0
            socklen_t socklen = sizeof(saddr);
11077
0
#endif
11078
0
            do {
11079
0
#ifdef JANET_NET
11080
0
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11081
0
                    nread = recvfrom(stream->handle, buffer->data + buffer->count, read_limit, state->flags,
11082
0
                                     (struct sockaddr *)&saddr, &socklen);
11083
0
                } else if (state->mode == JANET_ASYNC_READMODE_RECV) {
11084
0
                    nread = recv(stream->handle, buffer->data + buffer->count, read_limit, state->flags);
11085
0
                } else
11086
0
#endif
11087
0
                {
11088
0
                    nread = read(stream->handle, buffer->data + buffer->count, read_limit);
11089
0
                }
11090
0
            } while (nread == -1 && errno == EINTR);
11091
11092
            /* Check for errors - special case errors that can just be waited on to fix */
11093
0
            if (nread == -1) {
11094
0
                if (errno == EAGAIN || errno == EWOULDBLOCK) {
11095
0
                    break;
11096
0
                }
11097
                /* In stream protocols, a pipe error is end of stream */
11098
0
                if (errno == EPIPE && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
11099
0
                    nread = 0;
11100
0
                } else {
11101
0
                    janet_cancel(fiber, janet_ev_lasterr());
11102
0
                    janet_async_end(fiber);
11103
0
                    break;
11104
0
                }
11105
0
            }
11106
11107
            /* Only allow 0-length packets in recv-from. In stream protocols, a zero length packet is EOS. */
11108
0
            state->bytes_read += nread;
11109
0
            if (state->bytes_read == 0 && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
11110
0
                janet_schedule(fiber, janet_wrap_nil());
11111
0
                janet_async_end(fiber);
11112
0
                break;
11113
0
            }
11114
11115
            /* Increment buffer counts */
11116
0
            buffer->count += nread;
11117
0
            bytes_left -= nread;
11118
0
            state->bytes_left = bytes_left;
11119
11120
            /* Resume if done */
11121
0
            if (!state->is_chunk || bytes_left == 0 || nread == 0) {
11122
0
                Janet resume_val;
11123
0
#ifdef JANET_NET
11124
0
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11125
0
                    void *abst = janet_abstract(&janet_address_type, socklen);
11126
0
                    memcpy(abst, &saddr, socklen);
11127
0
                    resume_val = janet_wrap_abstract(abst);
11128
0
                } else
11129
0
#endif
11130
0
                {
11131
0
                    resume_val = janet_wrap_buffer(buffer);
11132
0
                }
11133
0
                janet_schedule(fiber, resume_val);
11134
0
                janet_async_end(fiber);
11135
0
                break;
11136
0
            }
11137
11138
            /* Read some more if possible */
11139
0
            goto read_more;
11140
0
        }
11141
0
        break;
11142
0
#endif
11143
0
    }
11144
0
}
11145
11146
0
static JANET_NO_RETURN void janet_ev_read_generic(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int is_chunked, JanetReadMode mode, int flags) {
11147
0
    StateRead *state = janet_malloc(sizeof(StateRead));
11148
0
    state->is_chunk = is_chunked;
11149
0
    state->buf = buf;
11150
0
    state->bytes_left = nbytes;
11151
0
    state->bytes_read = 0;
11152
0
    state->mode = mode;
11153
#ifdef JANET_WINDOWS
11154
    state->flags = (DWORD) flags;
11155
#else
11156
0
    state->flags = flags;
11157
0
#endif
11158
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_READ, ev_callback_read, state);
11159
0
}
11160
11161
0
JANET_NO_RETURN void janet_ev_read(JanetStream *stream, JanetBuffer *buf, int32_t nbytes) {
11162
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_READ, 0);
11163
0
}
11164
0
JANET_NO_RETURN void janet_ev_readchunk(JanetStream *stream, JanetBuffer *buf, int32_t nbytes) {
11165
0
    janet_ev_read_generic(stream, buf, nbytes, 1, JANET_ASYNC_READMODE_READ, 0);
11166
0
}
11167
#ifdef JANET_NET
11168
0
JANET_NO_RETURN void janet_ev_recv(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
11169
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_RECV, flags);
11170
0
}
11171
0
JANET_NO_RETURN void janet_ev_recvchunk(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
11172
0
    janet_ev_read_generic(stream, buf, nbytes, 1, JANET_ASYNC_READMODE_RECV, flags);
11173
0
}
11174
0
JANET_NO_RETURN void janet_ev_recvfrom(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
11175
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_RECVFROM, flags);
11176
0
}
11177
#endif
11178
11179
/*
11180
 * State machine for write/send/send-to
11181
 */
11182
11183
typedef enum {
11184
    JANET_ASYNC_WRITEMODE_WRITE,
11185
    JANET_ASYNC_WRITEMODE_SEND,
11186
    JANET_ASYNC_WRITEMODE_SENDTO
11187
} JanetWriteMode;
11188
11189
typedef struct {
11190
#ifdef JANET_WINDOWS
11191
    OVERLAPPED overlapped;
11192
    DWORD flags;
11193
#ifdef JANET_NET
11194
    WSABUF wbuf;
11195
#endif
11196
#else
11197
    int flags;
11198
    int32_t start;
11199
#endif
11200
    union {
11201
        JanetBuffer *buf;
11202
        const uint8_t *str;
11203
    } src;
11204
    int is_buffer;
11205
    JanetWriteMode mode;
11206
    void *dest_abst;
11207
} StateWrite;
11208
11209
0
void ev_callback_write(JanetFiber *fiber, JanetAsyncEvent event) {
11210
0
    JanetStream *stream = fiber->ev_stream;
11211
0
    StateWrite *state = (StateWrite *) fiber->ev_state;
11212
0
    switch (event) {
11213
0
        default:
11214
0
            break;
11215
0
        case JANET_ASYNC_EVENT_MARK: {
11216
0
            janet_mark(state->is_buffer
11217
0
                       ? janet_wrap_buffer(state->src.buf)
11218
0
                       : janet_wrap_string(state->src.str));
11219
0
            if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
11220
0
                janet_mark(janet_wrap_abstract(state->dest_abst));
11221
0
            }
11222
0
            break;
11223
0
        }
11224
0
        case JANET_ASYNC_EVENT_CLOSE:
11225
0
            janet_cancel(fiber, janet_cstringv("stream closed"));
11226
0
            janet_async_end(fiber);
11227
0
            break;
11228
#ifdef JANET_WINDOWS
11229
        case JANET_ASYNC_EVENT_FAILED:
11230
        case JANET_ASYNC_EVENT_COMPLETE: {
11231
            /* Called when write finished */
11232
            uint32_t ev_bytes = (uint32_t) state->overlapped.InternalHigh;
11233
            if (ev_bytes == 0 && (state->mode != JANET_ASYNC_WRITEMODE_SENDTO)) {
11234
                janet_cancel(fiber, janet_cstringv("disconnect"));
11235
                janet_async_end(fiber);
11236
                return;
11237
            }
11238
11239
            janet_schedule(fiber, janet_wrap_nil());
11240
            janet_async_end(fiber);
11241
            return;
11242
        }
11243
        break;
11244
        case JANET_ASYNC_EVENT_INIT: {
11245
            /* Begin write */
11246
            int32_t len;
11247
            const uint8_t *bytes;
11248
            if (state->is_buffer) {
11249
                /* If buffer, convert to string. */
11250
                /* TODO - be more efficient about this */
11251
                JanetBuffer *buffer = state->src.buf;
11252
                JanetString str = janet_string(buffer->data, buffer->count);
11253
                bytes = str;
11254
                len = buffer->count;
11255
                state->is_buffer = 0;
11256
                state->src.str = str;
11257
            } else {
11258
                bytes = state->src.str;
11259
                len = janet_string_length(bytes);
11260
            }
11261
            memset(&(state->overlapped), 0, sizeof(WSAOVERLAPPED));
11262
11263
            int status;
11264
#ifdef JANET_NET
11265
            if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
11266
                SOCKET sock = (SOCKET) stream->handle;
11267
                state->wbuf.buf = (char *) bytes;
11268
                state->wbuf.len = len;
11269
                const struct sockaddr *to = state->dest_abst;
11270
                int tolen = (int) janet_abstract_size((void *) to);
11271
                status = WSASendTo(sock, &state->wbuf, 1, NULL, state->flags, to, tolen, &state->overlapped, NULL);
11272
                if (status) {
11273
                    if (WSA_IO_PENDING == WSAGetLastError()) {
11274
                        janet_async_in_flight(fiber);
11275
                    } else {
11276
                        janet_cancel(fiber, janet_ev_lasterr());
11277
                        janet_async_end(fiber);
11278
                        return;
11279
                    }
11280
                }
11281
            } else
11282
#endif
11283
            {
11284
                /*
11285
                 * File handles in IOCP need to specify this if they are writing to the
11286
                 * ends of files, like how this is used here.
11287
                 * If the underlying resource doesn't support seeking
11288
                 * byte offsets, they will be ignored
11289
                 * but this otherwise writes to the end of the file in question
11290
                 * Right now, os/open streams aren't seekable, so this works.
11291
                 * for more details see the lpOverlapped parameter in
11292
                 * https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-writefile
11293
                 */
11294
                state->overlapped.Offset = (DWORD) 0xFFFFFFFF;
11295
                state->overlapped.OffsetHigh = (DWORD) 0xFFFFFFFF;
11296
                status = WriteFile(stream->handle, bytes, len, NULL, &state->overlapped);
11297
                if (!status) {
11298
                    if (ERROR_IO_PENDING == GetLastError()) {
11299
                        janet_async_in_flight(fiber);
11300
                    } else {
11301
                        janet_cancel(fiber, janet_ev_lasterr());
11302
                        janet_async_end(fiber);
11303
                        return;
11304
                    }
11305
                }
11306
            }
11307
        }
11308
        break;
11309
#else
11310
0
        case JANET_ASYNC_EVENT_ERR:
11311
0
            janet_cancel(fiber, janet_cstringv("stream err"));
11312
0
            janet_async_end(fiber);
11313
0
            break;
11314
0
        case JANET_ASYNC_EVENT_HUP:
11315
0
            janet_cancel(fiber, janet_cstringv("stream hup"));
11316
0
            janet_async_end(fiber);
11317
0
            break;
11318
0
        case JANET_ASYNC_EVENT_INIT:
11319
0
        case JANET_ASYNC_EVENT_WRITE: {
11320
0
            int32_t start, len;
11321
0
            const uint8_t *bytes;
11322
0
            start = state->start;
11323
0
            if (state->is_buffer) {
11324
0
                JanetBuffer *buffer = state->src.buf;
11325
0
                bytes = buffer->data;
11326
0
                len = buffer->count;
11327
0
            } else {
11328
0
                bytes = state->src.str;
11329
0
                len = janet_string_length(bytes);
11330
0
            }
11331
0
            ssize_t nwrote = 0;
11332
0
            if (start < len) {
11333
0
                int32_t nbytes = len - start;
11334
0
                void *dest_abst = state->dest_abst;
11335
0
                do {
11336
0
#ifdef JANET_NET
11337
0
                    if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
11338
0
                        nwrote = sendto(stream->handle, bytes + start, nbytes, state->flags,
11339
0
                                        (struct sockaddr *) dest_abst, janet_abstract_size(dest_abst));
11340
0
                    } else if (state->mode == JANET_ASYNC_WRITEMODE_SEND) {
11341
0
                        nwrote = send(stream->handle, bytes + start, nbytes, state->flags);
11342
0
                    } else
11343
0
#endif
11344
0
                    {
11345
0
                        nwrote = write(stream->handle, bytes + start, nbytes);
11346
0
                    }
11347
0
                } while (nwrote == -1 && errno == EINTR);
11348
11349
                /* Handle write errors */
11350
0
                if (nwrote == -1) {
11351
0
                    if (errno == EAGAIN || errno == EWOULDBLOCK) break;
11352
0
                    janet_cancel(fiber, janet_ev_lasterr());
11353
0
                    janet_async_end(fiber);
11354
0
                    break;
11355
0
                }
11356
11357
                /* Unless using datagrams, empty message is a disconnect */
11358
0
                if (nwrote == 0 && !dest_abst) {
11359
0
                    janet_cancel(fiber, janet_cstringv("disconnect"));
11360
0
                    janet_async_end(fiber);
11361
0
                    break;
11362
0
                }
11363
11364
0
                if (nwrote > 0) {
11365
0
                    start += nwrote;
11366
0
                } else {
11367
0
                    start = len;
11368
0
                }
11369
0
            }
11370
0
            state->start = start;
11371
0
            if (start >= len) {
11372
0
                janet_schedule(fiber, janet_wrap_nil());
11373
0
                janet_async_end(fiber);
11374
0
                break;
11375
0
            }
11376
0
            break;
11377
0
        }
11378
0
        break;
11379
0
#endif
11380
0
    }
11381
0
}
11382
11383
0
static JANET_NO_RETURN void janet_ev_write_generic(JanetStream *stream, void *buf, void *dest_abst, JanetWriteMode mode, int is_buffer, int flags) {
11384
0
    StateWrite *state = janet_malloc(sizeof(StateWrite));
11385
0
    state->is_buffer = is_buffer;
11386
0
    state->src.buf = buf;
11387
0
    state->dest_abst = dest_abst;
11388
0
    state->mode = mode;
11389
#ifdef JANET_WINDOWS
11390
    state->flags = (DWORD) flags;
11391
#else
11392
0
    state->flags = flags;
11393
0
    state->start = 0;
11394
0
#endif
11395
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_WRITE, ev_callback_write, state);
11396
0
}
11397
11398
0
JANET_NO_RETURN void janet_ev_write_buffer(JanetStream *stream, JanetBuffer *buf) {
11399
0
    janet_ev_write_generic(stream, buf, NULL, JANET_ASYNC_WRITEMODE_WRITE, 1, 0);
11400
0
}
11401
11402
0
JANET_NO_RETURN void janet_ev_write_string(JanetStream *stream, JanetString str) {
11403
0
    janet_ev_write_generic(stream, (void *) str, NULL, JANET_ASYNC_WRITEMODE_WRITE, 0, 0);
11404
0
}
11405
11406
#ifdef JANET_NET
11407
0
JANET_NO_RETURN void janet_ev_send_buffer(JanetStream *stream, JanetBuffer *buf, int flags) {
11408
0
    janet_ev_write_generic(stream, buf, NULL, JANET_ASYNC_WRITEMODE_SEND, 1, flags);
11409
0
}
11410
11411
0
JANET_NO_RETURN void janet_ev_send_string(JanetStream *stream, JanetString str, int flags) {
11412
0
    janet_ev_write_generic(stream, (void *) str, NULL, JANET_ASYNC_WRITEMODE_SEND, 0, flags);
11413
0
}
11414
11415
0
JANET_NO_RETURN void janet_ev_sendto_buffer(JanetStream *stream, JanetBuffer *buf, void *dest, int flags) {
11416
0
    janet_ev_write_generic(stream, buf, dest, JANET_ASYNC_WRITEMODE_SENDTO, 1, flags);
11417
0
}
11418
11419
0
JANET_NO_RETURN void janet_ev_sendto_string(JanetStream *stream, JanetString str, void *dest, int flags) {
11420
0
    janet_ev_write_generic(stream, (void *) str, dest, JANET_ASYNC_WRITEMODE_SENDTO, 0, flags);
11421
0
}
11422
#endif
11423
11424
/* For a pipe ID */
11425
#ifdef JANET_WINDOWS
11426
static volatile long PipeSerialNumber;
11427
#endif
11428
11429
/*
11430
 * mode = 0: both sides non-blocking.
11431
 * mode = 1: only read side non-blocking: write side sent to subprocess
11432
 * mode = 2: only write side non-blocking: read side sent to subprocess
11433
 * mode = 3: both sides blocking - for use in two subprocesses (making pipeline from external processes)
11434
 */
11435
6.23k
int janet_make_pipe(JanetHandle handles[2], int mode) {
11436
#ifdef JANET_WINDOWS
11437
    /*
11438
     * On windows, the built in CreatePipe function doesn't support overlapped IO
11439
     * so we lift from the windows source code and modify for our own version.
11440
     */
11441
    JanetHandle shandle, chandle;
11442
    CHAR PipeNameBuffer[MAX_PATH];
11443
    SECURITY_ATTRIBUTES saAttr;
11444
    memset(&saAttr, 0, sizeof(saAttr));
11445
    saAttr.nLength = sizeof(saAttr);
11446
    saAttr.bInheritHandle = TRUE;
11447
    if (mode == 3) {
11448
        /* No overlapped IO involved, just call CreatePipe */
11449
        if (!CreatePipe(handles, handles + 1, &saAttr, 0)) return -1;
11450
        return 0;
11451
    }
11452
    sprintf(PipeNameBuffer,
11453
            "\\\\.\\Pipe\\JanetPipeFile.%08x.%08x",
11454
            (unsigned int) GetCurrentProcessId(),
11455
            (unsigned int) InterlockedIncrement(&PipeSerialNumber));
11456
11457
    /* server handle goes to subprocess */
11458
    shandle = CreateNamedPipeA(
11459
                  PipeNameBuffer,
11460
                  (mode == 2 ? PIPE_ACCESS_INBOUND : PIPE_ACCESS_OUTBOUND) | FILE_FLAG_OVERLAPPED,
11461
                  PIPE_TYPE_BYTE | PIPE_WAIT,
11462
                  255,           /* Max number of pipes for duplication. */
11463
                  4096,          /* Out buffer size */
11464
                  4096,          /* In buffer size */
11465
                  120 * 1000,    /* Timeout in ms */
11466
                  &saAttr);
11467
    if (shandle == INVALID_HANDLE_VALUE) {
11468
        return -1;
11469
    }
11470
11471
    /* we keep client handle */
11472
    chandle = CreateFileA(
11473
                  PipeNameBuffer,
11474
                  (mode == 2 ? GENERIC_WRITE : GENERIC_READ),
11475
                  0,
11476
                  &saAttr,
11477
                  OPEN_EXISTING,
11478
                  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
11479
                  NULL);
11480
11481
    if (chandle == INVALID_HANDLE_VALUE) {
11482
        CloseHandle(shandle);
11483
        return -1;
11484
    }
11485
    if (mode == 2) {
11486
        handles[0] = shandle;
11487
        handles[1] = chandle;
11488
    } else {
11489
        handles[0] = chandle;
11490
        handles[1] = shandle;
11491
    }
11492
    return 0;
11493
#else
11494
6.23k
    if (pipe(handles)) return -1;
11495
6.23k
    if (mode != 2 && fcntl(handles[0], F_SETFD, FD_CLOEXEC)) goto error;
11496
6.23k
    if (mode != 1 && fcntl(handles[1], F_SETFD, FD_CLOEXEC)) goto error;
11497
6.23k
    if (mode != 2 && mode != 3 && fcntl(handles[0], F_SETFL, O_NONBLOCK)) goto error;
11498
6.23k
    if (mode != 1 && mode != 3 && fcntl(handles[1], F_SETFL, O_NONBLOCK)) goto error;
11499
6.23k
    return 0;
11500
0
error:
11501
0
    close(handles[0]);
11502
0
    close(handles[1]);
11503
0
    return -1;
11504
6.23k
#endif
11505
6.23k
}
11506
11507
/* C functions */
11508
11509
JANET_CORE_FN(cfun_ev_go,
11510
              "(ev/go fiber-or-fun &opt value supervisor)",
11511
              "Put a fiber on the event loop to be resumed later. If a function is used, it is wrapped "
11512
              "with `fiber/new` first. "
11513
              "Optionally pass a value to resume with, otherwise resumes with nil. Returns the fiber. "
11514
              "An optional `core/channel` can be provided as a supervisor. When various "
11515
              "events occur in the newly scheduled fiber, an event will be pushed to the supervisor. "
11516
0
              "If not provided, the new fiber will inherit the current supervisor.") {
11517
0
    janet_arity(argc, 1, 3);
11518
0
    Janet value = argc >= 2 ? argv[1] : janet_wrap_nil();
11519
0
    void *supervisor = janet_optabstract(argv, argc, 2, &janet_channel_type, janet_vm.root_fiber->supervisor_channel);
11520
0
    JanetFiber *fiber;
11521
0
    if (janet_checktype(argv[0], JANET_FUNCTION)) {
11522
        /* Create a fiber for the user */
11523
0
        JanetFunction *func = janet_unwrap_function(argv[0]);
11524
0
        if (func->def->min_arity > 1) {
11525
0
            janet_panicf("task function must accept 0 or 1 arguments");
11526
0
        }
11527
0
        fiber = janet_fiber(func, 64, func->def->min_arity, &value);
11528
0
        fiber->flags |=
11529
0
            JANET_FIBER_MASK_ERROR |
11530
0
            JANET_FIBER_MASK_USER0 |
11531
0
            JANET_FIBER_MASK_USER1 |
11532
0
            JANET_FIBER_MASK_USER2 |
11533
0
            JANET_FIBER_MASK_USER3 |
11534
0
            JANET_FIBER_MASK_USER4;
11535
0
        if (!janet_vm.fiber->env) {
11536
0
            janet_vm.fiber->env = janet_table(0);
11537
0
        }
11538
0
        fiber->env = janet_table(0);
11539
0
        fiber->env->proto = janet_vm.fiber->env;
11540
0
    } else {
11541
0
        fiber = janet_getfiber(argv, 0);
11542
0
    }
11543
0
    fiber->supervisor_channel = supervisor;
11544
0
    janet_schedule(fiber, value);
11545
0
    return janet_wrap_fiber(fiber);
11546
0
}
11547
11548
0
#define JANET_THREAD_SUPERVISOR_FLAG 0x100
11549
11550
/* For ev/thread - Run an interpreter in the new thread. */
11551
0
static JanetEVGenericMessage janet_go_thread_subr(JanetEVGenericMessage args) {
11552
0
    JanetBuffer *buffer = (JanetBuffer *) args.argp;
11553
0
    const uint8_t *nextbytes = buffer->data;
11554
0
    const uint8_t *endbytes = nextbytes + buffer->count;
11555
0
    uint32_t flags = args.tag;
11556
0
    args.tag = 0;
11557
0
    janet_init();
11558
0
    janet_vm.sandbox_flags = (uint32_t) args.argi;
11559
0
    JanetTryState tstate;
11560
0
    JanetSignal signal = janet_try(&tstate);
11561
0
    if (!signal) {
11562
11563
        /* Set abstract registry */
11564
0
        if (!(flags & 0x2)) {
11565
0
            Janet aregv = janet_unmarshal(nextbytes, endbytes - nextbytes,
11566
0
                                          JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11567
0
            if (!janet_checktype(aregv, JANET_TABLE)) janet_panic("expected table for abstract registry");
11568
0
            janet_vm.abstract_registry = janet_unwrap_table(aregv);
11569
0
            janet_gcroot(janet_wrap_table(janet_vm.abstract_registry));
11570
0
        }
11571
11572
        /* Get supervisor */
11573
0
        if (flags & JANET_THREAD_SUPERVISOR_FLAG) {
11574
0
            Janet sup =
11575
0
                janet_unmarshal(nextbytes, endbytes - nextbytes,
11576
0
                                JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11577
            /* Hack - use a global variable to avoid longjmp clobber */
11578
0
            janet_vm.user = janet_unwrap_pointer(sup);
11579
0
        }
11580
11581
        /* Set cfunction registry */
11582
0
        if (!(flags & 0x4)) {
11583
0
            uint32_t count1;
11584
0
            memcpy(&count1, nextbytes, sizeof(count1));
11585
0
            size_t count = (size_t) count1;
11586
            /* Use division to avoid overflowing size_t */
11587
0
            if (count > (endbytes - nextbytes - sizeof(count1)) / sizeof(JanetCFunRegistry)) {
11588
0
                janet_panic("thread message invalid");
11589
0
            }
11590
0
            janet_vm.registry_count = count;
11591
0
            janet_vm.registry_cap = count;
11592
0
            janet_vm.registry = janet_malloc(count * sizeof(JanetCFunRegistry));
11593
0
            if (janet_vm.registry == NULL) {
11594
0
                JANET_OUT_OF_MEMORY;
11595
0
            }
11596
0
            janet_vm.registry_dirty = 1;
11597
0
            nextbytes += sizeof(uint32_t);
11598
0
            memcpy(janet_vm.registry, nextbytes, count * sizeof(JanetCFunRegistry));
11599
0
            nextbytes += count * sizeof(JanetCFunRegistry);
11600
0
        }
11601
11602
0
        Janet fiberv = janet_unmarshal(nextbytes, endbytes - nextbytes,
11603
0
                                       JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11604
0
        Janet value = janet_unmarshal(nextbytes, endbytes - nextbytes,
11605
0
                                      JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11606
0
        JanetFiber *fiber;
11607
0
        if (!janet_checktype(fiberv, JANET_FIBER)) {
11608
0
            if (!janet_checktype(fiberv, JANET_FUNCTION)) {
11609
0
                janet_panicf("expected function or fiber, got %v", fiberv);
11610
0
            }
11611
0
            JanetFunction *func = janet_unwrap_function(fiberv);
11612
0
            fiber = janet_fiber(func, 64, func->def->min_arity, &value);
11613
0
            if (fiber == NULL) {
11614
0
                janet_panicf("thread function must accept 0 or 1 arguments");
11615
0
            }
11616
0
            fiber->flags |=
11617
0
                JANET_FIBER_MASK_ERROR |
11618
0
                JANET_FIBER_MASK_USER0 |
11619
0
                JANET_FIBER_MASK_USER1 |
11620
0
                JANET_FIBER_MASK_USER2 |
11621
0
                JANET_FIBER_MASK_USER3 |
11622
0
                JANET_FIBER_MASK_USER4;
11623
0
        } else {
11624
0
            fiber = janet_unwrap_fiber(fiberv);
11625
0
        }
11626
0
        if (flags & 0x8) {
11627
0
            if (NULL == fiber->env) fiber->env = janet_table(0);
11628
0
            janet_table_put(fiber->env, janet_ckeywordv("task-id"), value);
11629
0
        }
11630
0
        fiber->supervisor_channel = janet_vm.user;
11631
0
        janet_schedule(fiber, value);
11632
0
        janet_loop();
11633
0
        args.tag = JANET_EV_TCTAG_NIL;
11634
0
    } else {
11635
0
        void *supervisor = janet_vm.user;
11636
0
        if (NULL != supervisor) {
11637
            /* Got a supervisor, write error there */
11638
0
            Janet pair[] = {
11639
0
                janet_ckeywordv("error"),
11640
0
                tstate.payload
11641
0
            };
11642
0
            janet_channel_push((JanetChannel *)supervisor,
11643
0
                               janet_wrap_tuple(janet_tuple_n(pair, 2)), 2);
11644
0
        } else if (flags & 0x1) {
11645
            /* No wait, just print to stderr */
11646
0
            janet_eprintf("thread start failure: %v\n", tstate.payload);
11647
0
        } else {
11648
            /* Make ev/thread call from parent thread error */
11649
0
            if (janet_checktype(tstate.payload, JANET_STRING)) {
11650
0
                args.tag = JANET_EV_TCTAG_ERR_STRINGF;
11651
0
                args.argp = strdup((const char *) janet_unwrap_string(tstate.payload));
11652
0
            } else {
11653
0
                args.tag = JANET_EV_TCTAG_ERR_STRING;
11654
0
                args.argp = "failed to start thread";
11655
0
            }
11656
0
        }
11657
0
    }
11658
0
    janet_restore(&tstate);
11659
0
    janet_buffer_deinit(buffer);
11660
0
    janet_free(buffer);
11661
0
    janet_deinit();
11662
0
    return args;
11663
0
}
11664
11665
JANET_CORE_FN(cfun_ev_thread,
11666
              "(ev/thread main &opt value flags supervisor)",
11667
              "Run `main` in a new operating system thread, optionally passing `value` "
11668
              "to resume with. The parameter `main` can either be a fiber, or a function that accepts "
11669
              "0 or 1 arguments. "
11670
              "Unlike `ev/go`, this function will suspend the current fiber until the thread is complete. "
11671
              "If you want to run the thread without waiting for a result, pass the `:n` flag to return nil immediately. "
11672
              "Otherwise, returns nil. Available flags:\n\n"
11673
              "* `:n` - return immediately\n"
11674
              "* `:t` - set the task-id of the new thread to value. The task-id is passed in messages to the supervisor channel.\n"
11675
              "* `:a` - don't copy abstract registry to new thread (performance optimization)\n"
11676
0
              "* `:c` - don't copy cfunction registry to new thread (performance optimization)") {
11677
0
    janet_arity(argc, 1, 4);
11678
0
    Janet value = argc >= 2 ? argv[1] : janet_wrap_nil();
11679
0
    if (!janet_checktype(argv[0], JANET_FUNCTION)) janet_getfiber(argv, 0);
11680
0
    uint64_t flags = 0;
11681
0
    if (argc >= 3) {
11682
0
        flags = janet_getflags(argv, 2, "nact");
11683
0
    }
11684
0
    void *supervisor = janet_optabstract(argv, argc, 3, &janet_channel_type, janet_vm.root_fiber->supervisor_channel);
11685
0
    if (NULL != supervisor) flags |= JANET_THREAD_SUPERVISOR_FLAG;
11686
11687
    /* Marshal arguments for the new thread. */
11688
0
    JanetBuffer *buffer = janet_malloc(sizeof(JanetBuffer));
11689
0
    if (NULL == buffer) {
11690
0
        JANET_OUT_OF_MEMORY;
11691
0
    }
11692
0
    janet_buffer_init(buffer, 0);
11693
0
    if (!(flags & 0x2)) {
11694
0
        janet_marshal(buffer, janet_wrap_table(janet_vm.abstract_registry), NULL, JANET_MARSHAL_UNSAFE);
11695
0
    }
11696
0
    if (flags & JANET_THREAD_SUPERVISOR_FLAG) {
11697
0
        janet_marshal(buffer, janet_wrap_abstract(supervisor), NULL, JANET_MARSHAL_UNSAFE);
11698
0
    }
11699
0
    if (!(flags & 0x4)) {
11700
0
        janet_assert(janet_vm.registry_count <= INT32_MAX, "assert failed size check");
11701
0
        uint32_t temp = (uint32_t) janet_vm.registry_count;
11702
0
        janet_buffer_push_bytes(buffer, (uint8_t *) &temp, sizeof(temp));
11703
0
        janet_buffer_push_bytes(buffer, (uint8_t *) janet_vm.registry, (int32_t) janet_vm.registry_count * sizeof(JanetCFunRegistry));
11704
0
    }
11705
0
    janet_marshal(buffer, argv[0], NULL, JANET_MARSHAL_UNSAFE);
11706
0
    janet_marshal(buffer, value, NULL, JANET_MARSHAL_UNSAFE);
11707
0
    if (flags & 0x1) {
11708
        /* Return immediately */
11709
0
        JanetEVGenericMessage arguments;
11710
0
        memset(&arguments, 0, sizeof(arguments));
11711
0
        arguments.tag = (uint32_t) flags;
11712
0
        arguments.argi = (uint32_t) janet_vm.sandbox_flags;
11713
0
        arguments.argp = buffer;
11714
0
        arguments.fiber = NULL;
11715
0
        janet_ev_threaded_call(janet_go_thread_subr, arguments, janet_ev_default_threaded_callback);
11716
0
        return janet_wrap_nil();
11717
0
    } else {
11718
0
        janet_ev_threaded_await(janet_go_thread_subr, (uint32_t) flags, (uint32_t) janet_vm.sandbox_flags, buffer);
11719
0
    }
11720
0
}
11721
11722
JANET_CORE_FN(cfun_ev_give_supervisor,
11723
              "(ev/give-supervisor tag & payload)",
11724
              "Send a message to the current supervisor channel if there is one. The message will be a "
11725
              "tuple of all of the arguments combined into a single message, where the first element is tag. "
11726
0
              "By convention, tag should be a keyword indicating the type of message. Returns nil.") {
11727
0
    janet_arity(argc, 1, -1);
11728
0
    void *chanv = janet_vm.root_fiber->supervisor_channel;
11729
0
    if (NULL != chanv) {
11730
0
        JanetChannel *chan = janet_channel_unwrap(chanv);
11731
0
        if (janet_channel_push(chan, janet_wrap_tuple(janet_tuple_n(argv, argc)), 0)) {
11732
0
            janet_await();
11733
0
        }
11734
0
    }
11735
0
    return janet_wrap_nil();
11736
0
}
11737
11738
0
JANET_NO_RETURN void janet_sleep_await(double sec) {
11739
0
    JanetTimeout to;
11740
0
    to.when = ts_delta(ts_now(), sec);
11741
0
    to.fiber = janet_vm.root_fiber;
11742
0
    to.is_error = 0;
11743
0
    to.sched_id = to.fiber->sched_id;
11744
0
    to.curr_fiber = NULL;
11745
0
    to.has_worker = 0;
11746
0
    add_timeout(to);
11747
0
    janet_await();
11748
0
}
11749
11750
JANET_CORE_FN(cfun_ev_sleep,
11751
              "(ev/sleep sec)",
11752
0
              "Suspend the current fiber for sec seconds without blocking the event loop.") {
11753
0
    janet_fixarity(argc, 1);
11754
0
    double sec = janet_getnumber(argv, 0);
11755
0
    janet_sleep_await(sec);
11756
0
}
11757
11758
JANET_CORE_FN(cfun_ev_deadline,
11759
              "(ev/deadline sec &opt tocancel tocheck intr?)",
11760
              "Schedules the event loop to try to cancel the `tocancel` task as with `ev/cancel`. "
11761
              "After `sec` seconds, the event loop will attempt cancellation of `tocancel` if the "
11762
              "`tocheck` fiber is resumable. `sec` is a number that can have a fractional part. "
11763
              "`tocancel` defaults to `(fiber/root)`, but if specified, must be a task (root "
11764
              "fiber). `tocheck` defaults to `(fiber/current)`, but if specified, must be a fiber. "
11765
              "Returns `tocancel` immediately. If `interrupt?` is set to true, will create a "
11766
0
              "background thread to try to interrupt the VM if the timeout expires.") {
11767
0
    janet_arity(argc, 1, 4);
11768
0
    double sec = janet_getnumber(argv, 0);
11769
0
    sec = (sec < 0) ? 0 : sec;
11770
0
    JanetFiber *tocancel = janet_optfiber(argv, argc, 1, janet_vm.root_fiber);
11771
0
    JanetFiber *tocheck = janet_optfiber(argv, argc, 2, janet_vm.fiber);
11772
0
    int use_interrupt = janet_optboolean(argv, argc, 3, 0);
11773
0
    JanetTimeout to;
11774
0
    to.when = ts_delta(ts_now(), sec);
11775
0
    to.fiber = tocancel;
11776
0
    to.curr_fiber = tocheck;
11777
0
    to.is_error = 0;
11778
0
    to.sched_id = to.fiber->sched_id;
11779
0
    if (use_interrupt) {
11780
#ifdef JANET_ANDROID
11781
        janet_sandbox_assert(JANET_SANDBOX_SIGNAL);
11782
#endif
11783
0
        JanetThreadedTimeout *tto = janet_malloc(sizeof(JanetThreadedTimeout));
11784
0
        if (NULL == tto) {
11785
0
            JANET_OUT_OF_MEMORY;
11786
0
        }
11787
0
        tto->sec = sec;
11788
0
        tto->vm = &janet_vm;
11789
0
        tto->fiber = tocheck;
11790
#ifdef JANET_WINDOWS
11791
        HANDLE worker = CreateThread(NULL, 0, janet_timeout_body, tto, 0, NULL);
11792
        if (NULL == worker) {
11793
            janet_free(tto);
11794
            janet_panic("failed to create thread");
11795
        }
11796
#else
11797
0
        pthread_t worker;
11798
0
        int err = pthread_create(&worker, NULL, janet_timeout_body, tto);
11799
0
        if (err) {
11800
0
            janet_free(tto);
11801
0
            janet_panicf("%s", janet_strerror(err));
11802
0
        }
11803
0
#endif
11804
0
        to.has_worker = 1;
11805
0
        to.worker = worker;
11806
0
    } else {
11807
0
        to.has_worker = 0;
11808
0
    }
11809
0
    add_timeout(to);
11810
0
    return janet_wrap_fiber(tocancel);
11811
0
}
11812
11813
JANET_CORE_FN(cfun_ev_cancel,
11814
              "(ev/cancel fiber err)",
11815
0
              "Cancel a suspended fiber in the event loop. Differs from cancel in that it returns the canceled fiber immediately.") {
11816
0
    janet_fixarity(argc, 2);
11817
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
11818
0
    Janet err = argv[1];
11819
0
    janet_cancel(fiber, err);
11820
0
    return argv[0];
11821
0
}
11822
11823
JANET_CORE_FN(janet_cfun_stream_close,
11824
              "(ev/close stream)",
11825
0
              "Close a stream. This should be the same as calling (:close stream) for all streams.") {
11826
0
    janet_fixarity(argc, 1);
11827
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11828
0
    janet_stream_close(stream);
11829
0
    return argv[0];
11830
0
}
11831
11832
JANET_CORE_FN(janet_cfun_stream_read,
11833
              "(ev/read stream n &opt buffer timeout)",
11834
              "Read up to n bytes into a buffer asynchronously from a stream. `n` can also be the keyword "
11835
              "`:all` to read into the buffer until end of stream. "
11836
              "Optionally provide a buffer to write into "
11837
              "as well as a timeout in seconds after which to cancel the operation and raise an error. "
11838
              "Returns the buffer if the read was successful or nil if end-of-stream reached. Will raise an "
11839
0
              "error if there are problems with the IO operation.") {
11840
0
    janet_arity(argc, 2, 4);
11841
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11842
0
    janet_stream_flags(stream, JANET_STREAM_READABLE);
11843
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
11844
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
11845
0
    if (janet_keyeq(argv[1], "all")) {
11846
0
        if (to != INFINITY) janet_addtimeout(to);
11847
0
        janet_ev_readchunk(stream, buffer, INT32_MAX);
11848
0
    } else {
11849
0
        int32_t n = janet_getnat(argv, 1);
11850
0
        if (to != INFINITY) janet_addtimeout(to);
11851
0
        janet_ev_read(stream, buffer, n);
11852
0
    }
11853
0
}
11854
11855
JANET_CORE_FN(janet_cfun_stream_chunk,
11856
              "(ev/chunk stream n &opt buffer timeout)",
11857
              "Same as ev/read, but will not return early if less than n bytes are available. If an end of "
11858
0
              "stream is reached, will also return early with the collected bytes.") {
11859
0
    janet_arity(argc, 2, 4);
11860
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11861
0
    janet_stream_flags(stream, JANET_STREAM_READABLE);
11862
0
    int32_t n = janet_getnat(argv, 1);
11863
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
11864
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
11865
0
    if (to != INFINITY) janet_addtimeout(to);
11866
0
    janet_ev_readchunk(stream, buffer, n);
11867
0
}
11868
11869
JANET_CORE_FN(janet_cfun_stream_write,
11870
              "(ev/write stream data &opt timeout)",
11871
              "Write data to a stream, suspending the current fiber until the write "
11872
              "completes. Takes an optional timeout in seconds, after which will return nil. "
11873
0
              "Returns nil, or raises an error if the write failed.") {
11874
0
    janet_arity(argc, 2, 3);
11875
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11876
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE);
11877
0
    double to = janet_optnumber(argv, argc, 2, INFINITY);
11878
0
    if (janet_checktype(argv[1], JANET_BUFFER)) {
11879
0
        if (to != INFINITY) janet_addtimeout(to);
11880
0
        janet_ev_write_buffer(stream, janet_getbuffer(argv, 1));
11881
0
    } else {
11882
0
        JanetByteView bytes = janet_getbytes(argv, 1);
11883
0
        if (to != INFINITY) janet_addtimeout(to);
11884
0
        janet_ev_write_string(stream, bytes.bytes);
11885
0
    }
11886
0
}
11887
11888
0
static int mutexgc(void *p, size_t size) {
11889
0
    (void) size;
11890
0
    janet_os_mutex_deinit(p);
11891
0
    return 0;
11892
0
}
11893
11894
const JanetAbstractType janet_mutex_type = {
11895
    "core/lock",
11896
    mutexgc,
11897
    JANET_ATEND_GC
11898
};
11899
11900
JANET_CORE_FN(janet_cfun_mutex,
11901
              "(ev/lock)",
11902
0
              "Create a new lock to coordinate threads.") {
11903
0
    janet_fixarity(argc, 0);
11904
0
    (void) argv;
11905
0
    void *mutex = janet_abstract_threaded(&janet_mutex_type, janet_os_mutex_size());
11906
0
    janet_os_mutex_init(mutex);
11907
0
    return janet_wrap_abstract(mutex);
11908
0
}
11909
11910
JANET_CORE_FN(janet_cfun_mutex_acquire,
11911
              "(ev/acquire-lock lock)",
11912
              "Acquire a lock such that this operating system thread is the only thread with access to this resource."
11913
              " This will block this entire thread until the lock becomes available, and will not yield to other fibers "
11914
0
              "on this system thread.") {
11915
0
    janet_fixarity(argc, 1);
11916
0
    void *mutex = janet_getabstract(argv, 0, &janet_mutex_type);
11917
0
    janet_os_mutex_lock(mutex);
11918
0
    return argv[0];
11919
0
}
11920
11921
JANET_CORE_FN(janet_cfun_mutex_release,
11922
              "(ev/release-lock lock)",
11923
0
              "Release a lock such that other threads may acquire it.") {
11924
0
    janet_fixarity(argc, 1);
11925
0
    void *mutex = janet_getabstract(argv, 0, &janet_mutex_type);
11926
0
    janet_os_mutex_unlock(mutex);
11927
0
    return argv[0];
11928
0
}
11929
11930
0
static int rwlockgc(void *p, size_t size) {
11931
0
    (void) size;
11932
0
    janet_os_rwlock_deinit(p);
11933
0
    return 0;
11934
0
}
11935
11936
const JanetAbstractType janet_rwlock_type = {
11937
    "core/rwlock",
11938
    rwlockgc,
11939
    JANET_ATEND_GC
11940
};
11941
11942
JANET_CORE_FN(janet_cfun_rwlock,
11943
              "(ev/rwlock)",
11944
0
              "Create a new read-write lock to coordinate threads.") {
11945
0
    janet_fixarity(argc, 0);
11946
0
    (void) argv;
11947
0
    void *rwlock = janet_abstract_threaded(&janet_rwlock_type, janet_os_rwlock_size());
11948
0
    janet_os_rwlock_init(rwlock);
11949
0
    return janet_wrap_abstract(rwlock);
11950
0
}
11951
11952
JANET_CORE_FN(janet_cfun_rwlock_read_lock,
11953
              "(ev/acquire-rlock rwlock)",
11954
0
              "Acquire a read lock an a read-write lock.") {
11955
0
    janet_fixarity(argc, 1);
11956
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11957
0
    janet_os_rwlock_rlock(rwlock);
11958
0
    return argv[0];
11959
0
}
11960
11961
JANET_CORE_FN(janet_cfun_rwlock_write_lock,
11962
              "(ev/acquire-wlock rwlock)",
11963
0
              "Acquire a write lock on a read-write lock.") {
11964
0
    janet_fixarity(argc, 1);
11965
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11966
0
    janet_os_rwlock_wlock(rwlock);
11967
0
    return argv[0];
11968
0
}
11969
11970
JANET_CORE_FN(janet_cfun_rwlock_read_release,
11971
              "(ev/release-rlock rwlock)",
11972
0
              "Release a read lock on a read-write lock") {
11973
0
    janet_fixarity(argc, 1);
11974
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11975
0
    janet_os_rwlock_runlock(rwlock);
11976
0
    return argv[0];
11977
0
}
11978
11979
JANET_CORE_FN(janet_cfun_rwlock_write_release,
11980
              "(ev/release-wlock rwlock)",
11981
0
              "Release a write lock on a read-write lock") {
11982
0
    janet_fixarity(argc, 1);
11983
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11984
0
    janet_os_rwlock_wunlock(rwlock);
11985
0
    return argv[0];
11986
0
}
11987
11988
0
static JanetFile *get_file_for_stream(JanetStream *stream) {
11989
0
    int32_t flags = 0;
11990
0
    char fmt[4] = {0};
11991
0
    int index = 0;
11992
0
    if (stream->flags & JANET_STREAM_READABLE) {
11993
0
        flags |= JANET_FILE_READ;
11994
0
        janet_sandbox_assert(JANET_SANDBOX_FS_READ);
11995
0
        fmt[index++] = 'r';
11996
0
    }
11997
0
    if (stream->flags & JANET_STREAM_WRITABLE) {
11998
0
        flags |= JANET_FILE_WRITE;
11999
0
        janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
12000
0
        int currindex = index;
12001
0
        fmt[index++] = (currindex == 0) ? 'w' : '+';
12002
0
    }
12003
0
    if (index == 0) return NULL;
12004
    /* duplicate handle when converting stream to file */
12005
#ifdef JANET_WINDOWS
12006
    int htype = 0;
12007
    if (fmt[0] == 'r' && fmt[1] == '+') {
12008
        htype = _O_RDWR;
12009
    } else if (fmt[0] == 'r') {
12010
        htype = _O_RDONLY;
12011
    } else if (fmt[0] == 'w') {
12012
        htype = _O_WRONLY;
12013
    }
12014
    int fd = _open_osfhandle((intptr_t) stream->handle, htype);
12015
    if (fd < 0) return NULL;
12016
    int fd_dup = _dup(fd);
12017
    if (fd_dup < 0) return NULL;
12018
    FILE *f = _fdopen(fd_dup, fmt);
12019
    if (NULL == f) {
12020
        _close(fd_dup);
12021
        return NULL;
12022
    }
12023
#else
12024
0
    int fd_dup = dup(stream->handle);
12025
0
    if (fd_dup < 0) return NULL;
12026
0
    FILE *f = fdopen(fd_dup, fmt);
12027
0
    if (NULL == f) {
12028
0
        close(fd_dup);
12029
0
        return NULL;
12030
0
    }
12031
0
#endif
12032
0
    return janet_makejfile(f, flags);
12033
0
}
12034
12035
JANET_CORE_FN(janet_cfun_to_file,
12036
              "(ev/to-file)",
12037
              "Create core/file copy of the stream. This value can be used "
12038
0
              "when blocking IO behavior is needed.") {
12039
0
    janet_fixarity(argc, 1);
12040
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
12041
0
    JanetFile *iof = get_file_for_stream(stream);
12042
0
    if (iof == NULL) janet_panic("cannot make file from stream");
12043
0
    return janet_wrap_abstract(iof);
12044
0
}
12045
12046
JANET_CORE_FN(janet_cfun_ev_all_tasks,
12047
              "(ev/all-tasks)",
12048
0
              "Get an array of all active fibers that are being used by the scheduler.") {
12049
0
    janet_fixarity(argc, 0);
12050
0
    (void) argv;
12051
0
    JanetArray *array = janet_array(janet_vm.active_tasks.count);
12052
0
    for (int32_t i = 0; i < janet_vm.active_tasks.capacity; i++) {
12053
0
        if (!janet_checktype(janet_vm.active_tasks.data[i].key, JANET_NIL)) {
12054
0
            janet_array_push(array, janet_vm.active_tasks.data[i].key);
12055
0
        }
12056
0
    }
12057
0
    return janet_wrap_array(array);
12058
0
}
12059
12060
0
void janet_lib_ev(JanetTable *env) {
12061
0
    JanetRegExt ev_cfuns_ext[] = {
12062
0
        JANET_CORE_REG("ev/give", cfun_channel_push),
12063
0
        JANET_CORE_REG("ev/take", cfun_channel_pop),
12064
0
        JANET_CORE_REG("ev/full", cfun_channel_full),
12065
0
        JANET_CORE_REG("ev/capacity", cfun_channel_capacity),
12066
0
        JANET_CORE_REG("ev/count", cfun_channel_count),
12067
0
        JANET_CORE_REG("ev/select", cfun_channel_choice),
12068
0
        JANET_CORE_REG("ev/rselect", cfun_channel_rchoice),
12069
0
        JANET_CORE_REG("ev/chan", cfun_channel_new),
12070
0
        JANET_CORE_REG("ev/thread-chan", cfun_channel_new_threaded),
12071
0
        JANET_CORE_REG("ev/chan-close", cfun_channel_close),
12072
0
        JANET_CORE_REG("ev/go", cfun_ev_go),
12073
0
        JANET_CORE_REG("ev/thread", cfun_ev_thread),
12074
0
        JANET_CORE_REG("ev/give-supervisor", cfun_ev_give_supervisor),
12075
0
        JANET_CORE_REG("ev/sleep", cfun_ev_sleep),
12076
0
        JANET_CORE_REG("ev/deadline", cfun_ev_deadline),
12077
0
        JANET_CORE_REG("ev/cancel", cfun_ev_cancel),
12078
0
        JANET_CORE_REG("ev/close", janet_cfun_stream_close),
12079
0
        JANET_CORE_REG("ev/read", janet_cfun_stream_read),
12080
0
        JANET_CORE_REG("ev/chunk", janet_cfun_stream_chunk),
12081
0
        JANET_CORE_REG("ev/write", janet_cfun_stream_write),
12082
0
        JANET_CORE_REG("ev/lock", janet_cfun_mutex),
12083
0
        JANET_CORE_REG("ev/acquire-lock", janet_cfun_mutex_acquire),
12084
0
        JANET_CORE_REG("ev/release-lock", janet_cfun_mutex_release),
12085
0
        JANET_CORE_REG("ev/rwlock", janet_cfun_rwlock),
12086
0
        JANET_CORE_REG("ev/acquire-rlock", janet_cfun_rwlock_read_lock),
12087
0
        JANET_CORE_REG("ev/acquire-wlock", janet_cfun_rwlock_write_lock),
12088
0
        JANET_CORE_REG("ev/release-rlock", janet_cfun_rwlock_read_release),
12089
0
        JANET_CORE_REG("ev/release-wlock", janet_cfun_rwlock_write_release),
12090
0
        JANET_CORE_REG("ev/to-file", janet_cfun_to_file),
12091
0
        JANET_CORE_REG("ev/all-tasks", janet_cfun_ev_all_tasks),
12092
0
        JANET_REG_END
12093
0
    };
12094
12095
0
    janet_core_cfuns_ext(env, NULL, ev_cfuns_ext);
12096
0
    janet_register_abstract_type(&janet_stream_type);
12097
0
    janet_register_abstract_type(&janet_channel_type);
12098
0
    janet_register_abstract_type(&janet_mutex_type);
12099
0
    janet_register_abstract_type(&janet_rwlock_type);
12100
0
}
12101
12102
#endif
12103
12104
12105
/* src/core/ffi.c */
12106
#line 0 "src/core/ffi.c"
12107
12108
/*
12109
* Copyright (c) 2025 Calvin Rose
12110
*
12111
* Permission is hereby granted, free of charge, to any person obtaining a copy
12112
* of this software and associated documentation files (the "Software"), to
12113
* deal in the Software without restriction, including without limitation the
12114
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12115
* sell copies of the Software, and to permit persons to whom the Software is
12116
* furnished to do so, subject to the following conditions:
12117
*
12118
* The above copyright notice and this permission notice shall be included in
12119
* all copies or substantial portions of the Software.
12120
*
12121
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12122
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12123
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
12124
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
12125
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
12126
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
12127
* IN THE SOFTWARE.
12128
*/
12129
12130
#ifndef JANET_AMALG
12131
#include "features.h"
12132
#include <janet.h>
12133
#include "util.h"
12134
#include "gc.h"
12135
#endif
12136
12137
#ifdef JANET_FFI
12138
12139
#ifdef _MSC_VER
12140
#define alloca _alloca
12141
#elif defined(JANET_LINUX)
12142
#include <alloca.h>
12143
#elif !defined(alloca)
12144
/* Last ditch effort to get alloca - works for gcc and clang */
12145
#define alloca __builtin_alloca
12146
#endif
12147
12148
/* FFI jit includes */
12149
#ifdef JANET_FFI_JIT
12150
#ifndef JANET_WINDOWS
12151
#include <sys/mman.h>
12152
#endif
12153
#endif
12154
12155
0
#define JANET_FFI_MAX_RECUR 64
12156
12157
/* Compiler, OS, and arch detection. Used
12158
 * to enable a set of calling conventions. The
12159
 * :none calling convention is always enabled. */
12160
#if defined(JANET_WINDOWS) && (defined(__x86_64__) || defined(_M_X64))
12161
#define JANET_FFI_WIN64_ENABLED
12162
#endif
12163
#if (defined(__x86_64__) || defined(_M_X64)) && !defined(JANET_WINDOWS)
12164
#define JANET_FFI_SYSV64_ENABLED
12165
#endif
12166
#if (defined(__aarch64__) || defined(_M_ARM64)) && !defined(JANET_WINDOWS)
12167
#define JANET_FFI_AAPCS64_ENABLED
12168
#endif
12169
12170
typedef struct JanetFFIType JanetFFIType;
12171
typedef struct JanetFFIStruct JanetFFIStruct;
12172
12173
typedef enum {
12174
    JANET_FFI_TYPE_VOID,
12175
    JANET_FFI_TYPE_BOOL,
12176
    JANET_FFI_TYPE_PTR,
12177
    JANET_FFI_TYPE_STRING,
12178
    JANET_FFI_TYPE_FLOAT,
12179
    JANET_FFI_TYPE_DOUBLE,
12180
    JANET_FFI_TYPE_INT8,
12181
    JANET_FFI_TYPE_UINT8,
12182
    JANET_FFI_TYPE_INT16,
12183
    JANET_FFI_TYPE_UINT16,
12184
    JANET_FFI_TYPE_INT32,
12185
    JANET_FFI_TYPE_UINT32,
12186
    JANET_FFI_TYPE_INT64,
12187
    JANET_FFI_TYPE_UINT64,
12188
    JANET_FFI_TYPE_STRUCT
12189
} JanetFFIPrimType;
12190
12191
/* Custom alignof since alignof not in c99 standard */
12192
#define ALIGNOF(type) offsetof(struct { char c; type member; }, member)
12193
12194
typedef struct {
12195
    size_t size;
12196
    size_t align;
12197
} JanetFFIPrimInfo;
12198
12199
static const JanetFFIPrimInfo janet_ffi_type_info[] = {
12200
    {0, 0}, /* JANET_FFI_TYPE_VOID */
12201
    {sizeof(char), ALIGNOF(char)}, /* JANET_FFI_TYPE_BOOL */
12202
    {sizeof(void *), ALIGNOF(void *)}, /* JANET_FFI_TYPE_PTR */
12203
    {sizeof(char *), ALIGNOF(char *)}, /* JANET_FFI_TYPE_STRING */
12204
    {sizeof(float), ALIGNOF(float)}, /* JANET_FFI_TYPE_FLOAT */
12205
    {sizeof(double), ALIGNOF(double)}, /* JANET_FFI_TYPE_DOUBLE */
12206
    {sizeof(int8_t), ALIGNOF(int8_t)}, /* JANET_FFI_TYPE_INT8 */
12207
    {sizeof(uint8_t), ALIGNOF(uint8_t)}, /* JANET_FFI_TYPE_UINT8 */
12208
    {sizeof(int16_t), ALIGNOF(int16_t)}, /* JANET_FFI_TYPE_INT16 */
12209
    {sizeof(uint16_t), ALIGNOF(uint16_t)}, /* JANET_FFI_TYPE_UINT16 */
12210
    {sizeof(int32_t), ALIGNOF(int32_t)}, /* JANET_FFI_TYPE_INT32 */
12211
    {sizeof(uint32_t), ALIGNOF(uint32_t)}, /* JANET_FFI_TYPE_UINT32 */
12212
    {sizeof(int64_t), ALIGNOF(int64_t)}, /* JANET_FFI_TYPE_INT64 */
12213
    {sizeof(uint64_t), ALIGNOF(uint64_t)}, /* JANET_FFI_TYPE_UINT64 */
12214
    {0, ALIGNOF(uint64_t)} /* JANET_FFI_TYPE_STRUCT */
12215
};
12216
12217
struct JanetFFIType {
12218
    JanetFFIStruct *st;
12219
    JanetFFIPrimType prim;
12220
    int32_t array_count;
12221
};
12222
12223
typedef struct {
12224
    JanetFFIType type;
12225
    size_t offset;
12226
} JanetFFIStructMember;
12227
12228
/* Also used to store array types */
12229
struct JanetFFIStruct {
12230
    uint32_t size;
12231
    uint32_t align;
12232
    uint32_t field_count;
12233
    uint32_t is_aligned;
12234
    JanetFFIStructMember fields[];
12235
};
12236
12237
/* Specifies how the registers are classified. This is used
12238
 * to determine if a certain argument should be passed in a register,
12239
 * on the stack, special floating pointer register, etc. */
12240
typedef enum {
12241
    JANET_SYSV64_INTEGER,
12242
    JANET_SYSV64_SSE,
12243
    JANET_SYSV64_SSEUP,
12244
    JANET_SYSV64_PAIR_INTINT,
12245
    JANET_SYSV64_PAIR_INTSSE,
12246
    JANET_SYSV64_PAIR_SSEINT,
12247
    JANET_SYSV64_PAIR_SSESSE,
12248
    JANET_SYSV64_NO_CLASS,
12249
    JANET_SYSV64_MEMORY,
12250
    JANET_WIN64_REGISTER,
12251
    JANET_WIN64_STACK,
12252
    JANET_WIN64_REGISTER_REF,
12253
    JANET_WIN64_STACK_REF,
12254
    JANET_AAPCS64_GENERAL,
12255
    JANET_AAPCS64_SSE,
12256
    JANET_AAPCS64_GENERAL_REF,
12257
    JANET_AAPCS64_STACK,
12258
    JANET_AAPCS64_STACK_REF,
12259
    JANET_AAPCS64_NONE
12260
} JanetFFIWordSpec;
12261
12262
/* Describe how each Janet argument is interpreted in terms of machine words
12263
 * that will be mapped to registers/stack. */
12264
typedef struct {
12265
    JanetFFIType type;
12266
    JanetFFIWordSpec spec;
12267
    uint32_t offset; /* point to the exact register / stack offset depending on spec. */
12268
    uint32_t offset2; /* for reference passing apis (windows), use to allocate reference */
12269
} JanetFFIMapping;
12270
12271
typedef enum {
12272
    JANET_FFI_CC_NONE,
12273
    JANET_FFI_CC_SYSV_64,
12274
    JANET_FFI_CC_WIN_64,
12275
    JANET_FFI_CC_AAPCS64
12276
} JanetFFICallingConvention;
12277
12278
#ifdef JANET_FFI_WIN64_ENABLED
12279
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_WIN_64
12280
#elif defined(JANET_FFI_SYSV64_ENABLED)
12281
0
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_SYSV_64
12282
#elif defined(JANET_FFI_AAPCS64_ENABLED)
12283
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_AAPCS64
12284
#else
12285
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_NONE
12286
#endif
12287
12288
0
#define JANET_FFI_MAX_ARGS 32
12289
12290
typedef struct {
12291
    uint32_t frame_size;
12292
    uint32_t arg_count;
12293
    uint32_t word_count;
12294
    uint32_t variant;
12295
    uint32_t stack_count;
12296
    JanetFFICallingConvention cc;
12297
    JanetFFIMapping ret;
12298
    JanetFFIMapping args[JANET_FFI_MAX_ARGS];
12299
} JanetFFISignature;
12300
12301
0
int signature_mark(void *p, size_t s) {
12302
0
    (void) s;
12303
0
    JanetFFISignature *sig = p;
12304
0
    for (uint32_t i = 0; i < sig->arg_count; i++) {
12305
0
        JanetFFIType t = sig->args[i].type;
12306
0
        if (t.prim == JANET_FFI_TYPE_STRUCT) {
12307
0
            janet_mark(janet_wrap_abstract(t.st));
12308
0
        }
12309
0
    }
12310
0
    return 0;
12311
0
}
12312
12313
static const JanetAbstractType janet_signature_type = {
12314
    "core/ffi-signature",
12315
    NULL,
12316
    signature_mark,
12317
    JANET_ATEND_GCMARK
12318
};
12319
12320
0
int struct_mark(void *p, size_t s) {
12321
0
    (void) s;
12322
0
    JanetFFIStruct *st = p;
12323
0
    for (uint32_t i = 0; i < st->field_count; i++) {
12324
0
        JanetFFIType t = st->fields[i].type;
12325
0
        if (t.prim == JANET_FFI_TYPE_STRUCT) {
12326
0
            janet_mark(janet_wrap_abstract(t.st));
12327
0
        }
12328
0
    }
12329
0
    return 0;
12330
0
}
12331
12332
typedef struct {
12333
    void *function_pointer;
12334
    size_t size;
12335
} JanetFFIJittedFn;
12336
12337
static const JanetAbstractType janet_struct_type = {
12338
    "core/ffi-struct",
12339
    NULL,
12340
    struct_mark,
12341
    JANET_ATEND_GCMARK
12342
};
12343
12344
0
static int janet_ffijit_gc(void *p, size_t s) {
12345
0
    (void) s;
12346
0
    JanetFFIJittedFn *fn = p;
12347
0
    if (fn->function_pointer == NULL) return 0;
12348
0
#ifdef JANET_FFI_JIT
12349
#ifdef JANET_WINDOWS
12350
    VirtualFree(fn->function_pointer, fn->size, MEM_RELEASE);
12351
#else
12352
0
    munmap(fn->function_pointer, fn->size);
12353
0
#endif
12354
0
#endif
12355
0
    return 0;
12356
0
}
12357
12358
0
static JanetByteView janet_ffijit_getbytes(void *p, size_t s) {
12359
0
    (void) s;
12360
0
    JanetFFIJittedFn *fn = p;
12361
0
    JanetByteView bytes;
12362
0
    bytes.bytes = fn->function_pointer;
12363
0
    bytes.len = (int32_t) fn->size;
12364
0
    return bytes;
12365
0
}
12366
12367
0
static size_t janet_ffijit_length(void *p, size_t s) {
12368
0
    (void) s;
12369
0
    JanetFFIJittedFn *fn = p;
12370
0
    return fn->size;
12371
0
}
12372
12373
const JanetAbstractType janet_type_ffijit = {
12374
    .name = "ffi/jitfn",
12375
    .gc = janet_ffijit_gc,
12376
    .bytes = janet_ffijit_getbytes,
12377
    .length = janet_ffijit_length
12378
};
12379
12380
typedef struct {
12381
    Clib clib;
12382
    int closed;
12383
    int is_self;
12384
} JanetAbstractNative;
12385
12386
static const JanetAbstractType janet_native_type = {
12387
    "core/ffi-native",
12388
    JANET_ATEND_NAME
12389
};
12390
12391
0
static JanetFFIType prim_type(JanetFFIPrimType pt) {
12392
0
    JanetFFIType t;
12393
0
    t.prim = pt;
12394
0
    t.st = NULL;
12395
0
    t.array_count = -1;
12396
0
    return t;
12397
0
}
12398
12399
0
static size_t type_size(JanetFFIType t) {
12400
0
    size_t count = t.array_count < 0 ? 1 : (size_t) t.array_count;
12401
0
    if (t.prim == JANET_FFI_TYPE_STRUCT) {
12402
0
        return t.st->size * count;
12403
0
    } else {
12404
0
        return janet_ffi_type_info[t.prim].size * count;
12405
0
    }
12406
0
}
12407
12408
0
static size_t type_align(JanetFFIType t) {
12409
0
    if (t.prim == JANET_FFI_TYPE_STRUCT) {
12410
0
        return t.st->align;
12411
0
    } else {
12412
0
        return janet_ffi_type_info[t.prim].align;
12413
0
    }
12414
0
}
12415
12416
0
static JanetFFICallingConvention decode_ffi_cc(const uint8_t *name) {
12417
0
    if (!janet_cstrcmp(name, "none")) return JANET_FFI_CC_NONE;
12418
#ifdef JANET_FFI_WIN64_ENABLED
12419
    if (!janet_cstrcmp(name, "win64")) return JANET_FFI_CC_WIN_64;
12420
#endif
12421
0
#ifdef JANET_FFI_SYSV64_ENABLED
12422
0
    if (!janet_cstrcmp(name, "sysv64")) return JANET_FFI_CC_SYSV_64;
12423
0
#endif
12424
#ifdef JANET_FFI_AAPCS64_ENABLED
12425
    if (!janet_cstrcmp(name, "aapcs64")) return JANET_FFI_CC_AAPCS64;
12426
#endif
12427
0
    if (!janet_cstrcmp(name, "default")) return JANET_FFI_CC_DEFAULT;
12428
0
    janet_panicf("unknown calling convention %s", name);
12429
0
}
12430
12431
0
static JanetFFIPrimType decode_ffi_prim(const uint8_t *name) {
12432
0
    if (!janet_cstrcmp(name, "void")) return JANET_FFI_TYPE_VOID;
12433
0
    if (!janet_cstrcmp(name, "bool")) return JANET_FFI_TYPE_BOOL;
12434
0
    if (!janet_cstrcmp(name, "ptr")) return JANET_FFI_TYPE_PTR;
12435
0
    if (!janet_cstrcmp(name, "pointer")) return JANET_FFI_TYPE_PTR;
12436
0
    if (!janet_cstrcmp(name, "string")) return JANET_FFI_TYPE_STRING;
12437
0
    if (!janet_cstrcmp(name, "float")) return JANET_FFI_TYPE_FLOAT;
12438
0
    if (!janet_cstrcmp(name, "double")) return JANET_FFI_TYPE_DOUBLE;
12439
0
    if (!janet_cstrcmp(name, "int8")) return JANET_FFI_TYPE_INT8;
12440
0
    if (!janet_cstrcmp(name, "uint8")) return JANET_FFI_TYPE_UINT8;
12441
0
    if (!janet_cstrcmp(name, "int16")) return JANET_FFI_TYPE_INT16;
12442
0
    if (!janet_cstrcmp(name, "uint16")) return JANET_FFI_TYPE_UINT16;
12443
0
    if (!janet_cstrcmp(name, "int32")) return JANET_FFI_TYPE_INT32;
12444
0
    if (!janet_cstrcmp(name, "uint32")) return JANET_FFI_TYPE_UINT32;
12445
0
    if (!janet_cstrcmp(name, "int64")) return JANET_FFI_TYPE_INT64;
12446
0
    if (!janet_cstrcmp(name, "uint64")) return JANET_FFI_TYPE_UINT64;
12447
0
#ifdef JANET_64
12448
0
    if (!janet_cstrcmp(name, "size")) return JANET_FFI_TYPE_UINT64;
12449
0
    if (!janet_cstrcmp(name, "ssize")) return JANET_FFI_TYPE_INT64;
12450
#else
12451
    if (!janet_cstrcmp(name, "size")) return JANET_FFI_TYPE_UINT32;
12452
    if (!janet_cstrcmp(name, "ssize")) return JANET_FFI_TYPE_INT32;
12453
#endif
12454
    /* aliases */
12455
0
    if (!janet_cstrcmp(name, "r32")) return JANET_FFI_TYPE_FLOAT;
12456
0
    if (!janet_cstrcmp(name, "r64")) return JANET_FFI_TYPE_DOUBLE;
12457
0
    if (!janet_cstrcmp(name, "s8")) return JANET_FFI_TYPE_INT8;
12458
0
    if (!janet_cstrcmp(name, "u8")) return JANET_FFI_TYPE_UINT8;
12459
0
    if (!janet_cstrcmp(name, "s16")) return JANET_FFI_TYPE_INT16;
12460
0
    if (!janet_cstrcmp(name, "u16")) return JANET_FFI_TYPE_UINT16;
12461
0
    if (!janet_cstrcmp(name, "s32")) return JANET_FFI_TYPE_INT32;
12462
0
    if (!janet_cstrcmp(name, "u32")) return JANET_FFI_TYPE_UINT32;
12463
0
    if (!janet_cstrcmp(name, "s64")) return JANET_FFI_TYPE_INT64;
12464
0
    if (!janet_cstrcmp(name, "u64")) return JANET_FFI_TYPE_UINT64;
12465
0
    if (!janet_cstrcmp(name, "char")) return JANET_FFI_TYPE_INT8;
12466
0
    if (!janet_cstrcmp(name, "short")) return JANET_FFI_TYPE_INT16;
12467
0
    if (!janet_cstrcmp(name, "int")) return JANET_FFI_TYPE_INT32;
12468
0
    if (!janet_cstrcmp(name, "long")) return JANET_FFI_TYPE_INT64;
12469
0
    if (!janet_cstrcmp(name, "byte")) return JANET_FFI_TYPE_UINT8;
12470
0
    if (!janet_cstrcmp(name, "uchar")) return JANET_FFI_TYPE_UINT8;
12471
0
    if (!janet_cstrcmp(name, "ushort")) return JANET_FFI_TYPE_UINT16;
12472
0
    if (!janet_cstrcmp(name, "uint")) return JANET_FFI_TYPE_UINT32;
12473
0
    if (!janet_cstrcmp(name, "ulong")) return JANET_FFI_TYPE_UINT64;
12474
0
    janet_panicf("unknown machine type %s", name);
12475
0
}
12476
12477
/* A common callback function signature. To avoid runtime code generation, which is prohibited
12478
 * on many platforms, often buggy (see libffi), and generally complicated, instead provide
12479
 * a single (or small set of commonly used function signatures). All callbacks should
12480
 * eventually call this. */
12481
0
void janet_ffi_trampoline(void *ctx, void *userdata) {
12482
0
    if (NULL == userdata) {
12483
        /* Userdata not set. */
12484
0
        janet_eprintf("no userdata found for janet callback");
12485
0
        return;
12486
0
    }
12487
0
    Janet context = janet_wrap_pointer(ctx);
12488
0
    JanetFunction *fun = userdata;
12489
0
    janet_call(fun, 1, &context);
12490
0
}
12491
12492
static JanetFFIType decode_ffi_type(Janet x);
12493
12494
0
static JanetFFIStruct *build_struct_type(int32_t argc, const Janet *argv) {
12495
    /* Use :pack to indicate a single packed struct member and :pack-all
12496
     * to pack the remaining members */
12497
0
    int32_t member_count = argc;
12498
0
    int all_packed = 0;
12499
0
    for (int32_t i = 0; i < argc; i++) {
12500
0
        if (janet_keyeq(argv[i], "pack")) {
12501
0
            member_count--;
12502
0
        } else if (janet_keyeq(argv[i], "pack-all")) {
12503
0
            member_count--;
12504
0
            all_packed = 1;
12505
0
        }
12506
0
    }
12507
12508
0
    JanetFFIStruct *st = janet_abstract(&janet_struct_type,
12509
0
                                        sizeof(JanetFFIStruct) + argc * sizeof(JanetFFIStructMember));
12510
0
    st->field_count = 0;
12511
0
    st->size = 0;
12512
0
    st->align = 1;
12513
0
    if (argc == 0) {
12514
0
        janet_panic("invalid empty struct");
12515
0
    }
12516
0
    uint32_t is_aligned = 1;
12517
0
    int32_t i = 0;
12518
0
    for (int32_t j = 0; j < argc; j++) {
12519
0
        int pack_one = 0;
12520
0
        if (janet_keyeq(argv[j], "pack") || janet_keyeq(argv[j], "pack-all")) {
12521
0
            pack_one = 1;
12522
0
            j++;
12523
0
            if (j == argc) break;
12524
0
        }
12525
0
        st->fields[i].type = decode_ffi_type(argv[j]);
12526
0
        size_t el_size = type_size(st->fields[i].type);
12527
0
        size_t el_align = type_align(st->fields[i].type);
12528
0
        if (el_align <= 0) janet_panicf("bad field type %V", argv[j]);
12529
0
        if (all_packed || pack_one) {
12530
0
            if (st->size % el_align != 0) is_aligned = 0;
12531
0
            st->fields[i].offset = st->size;
12532
0
            st->size += (uint32_t) el_size;
12533
0
        } else {
12534
0
            if (el_align > st->align) st->align = (uint32_t) el_align;
12535
0
            st->fields[i].offset = (uint32_t)(((st->size + el_align - 1) / el_align) * el_align);
12536
0
            st->size = (uint32_t)(el_size + st->fields[i].offset);
12537
0
        }
12538
0
        i++;
12539
0
    }
12540
0
    st->is_aligned = is_aligned;
12541
0
    st->size += (st->align - 1);
12542
0
    st->size /= st->align;
12543
0
    st->size *= st->align;
12544
0
    st->field_count = member_count;
12545
0
    return st;
12546
0
}
12547
12548
0
static JanetFFIType decode_ffi_type(Janet x) {
12549
0
    if (janet_checktype(x, JANET_KEYWORD)) {
12550
0
        return prim_type(decode_ffi_prim(janet_unwrap_keyword(x)));
12551
0
    }
12552
0
    JanetFFIType ret;
12553
0
    ret.array_count = -1;
12554
0
    ret.prim = JANET_FFI_TYPE_STRUCT;
12555
0
    if (janet_checkabstract(x, &janet_struct_type)) {
12556
0
        ret.st = janet_unwrap_abstract(x);
12557
0
        return ret;
12558
0
    }
12559
0
    int32_t len;
12560
0
    const Janet *els;
12561
0
    if (janet_indexed_view(x, &els, &len)) {
12562
0
        if (janet_checktype(x, JANET_ARRAY)) {
12563
0
            if (len != 2 && len != 1) janet_panicf("array type must be of form @[type count], got %v", x);
12564
0
            ret = decode_ffi_type(els[0]);
12565
0
            int32_t array_count = len == 1 ? 0 : janet_getnat(els, 1);
12566
0
            ret.array_count = array_count;
12567
0
        } else {
12568
0
            ret.st = build_struct_type(len, els);
12569
0
        }
12570
0
        return ret;
12571
0
    } else {
12572
0
        janet_panicf("bad native type %v", x);
12573
0
    }
12574
0
}
12575
12576
JANET_CORE_FN(cfun_ffi_struct,
12577
              "(ffi/struct & types)",
12578
0
              "Create a struct type definition that can be used to pass structs into native functions. ") {
12579
0
    janet_arity(argc, 1, -1);
12580
0
    return janet_wrap_abstract(build_struct_type(argc, argv));
12581
0
}
12582
12583
JANET_CORE_FN(cfun_ffi_size,
12584
              "(ffi/size type)",
12585
0
              "Get the size of an ffi type in bytes.") {
12586
0
    janet_fixarity(argc, 1);
12587
0
    size_t size = type_size(decode_ffi_type(argv[0]));
12588
0
    return janet_wrap_number((double) size);
12589
0
}
12590
12591
JANET_CORE_FN(cfun_ffi_align,
12592
              "(ffi/align type)",
12593
0
              "Get the align of an ffi type in bytes.") {
12594
0
    janet_fixarity(argc, 1);
12595
0
    size_t size = type_align(decode_ffi_type(argv[0]));
12596
0
    return janet_wrap_number((double) size);
12597
0
}
12598
12599
0
static void *janet_ffi_getpointer(const Janet *argv, int32_t n) {
12600
0
    switch (janet_type(argv[n])) {
12601
0
        default:
12602
0
            janet_panicf("bad slot #%d, expected ffi pointer convertible type, got %v", n, argv[n]);
12603
0
        case JANET_POINTER:
12604
0
        case JANET_STRING:
12605
0
        case JANET_KEYWORD:
12606
0
        case JANET_SYMBOL:
12607
0
        case JANET_CFUNCTION:
12608
0
            return janet_unwrap_pointer(argv[n]);
12609
0
        case JANET_ABSTRACT:
12610
0
            return (void *) janet_getbytes(argv, n).bytes;
12611
0
        case JANET_BUFFER:
12612
0
            return janet_unwrap_buffer(argv[n])->data;
12613
0
        case JANET_FUNCTION:
12614
            /* Users may pass in a function. Any function passed is almost certainly
12615
             * being used as a callback, so we add it to the root set. */
12616
0
            janet_gcroot(argv[n]);
12617
0
            return janet_unwrap_pointer(argv[n]);
12618
0
        case JANET_NIL:
12619
0
            return NULL;
12620
0
    }
12621
0
}
12622
12623
0
static void *janet_ffi_get_callable_pointer(const Janet *argv, int32_t n) {
12624
0
    switch (janet_type(argv[n])) {
12625
0
        default:
12626
0
            break;
12627
0
        case JANET_POINTER:
12628
0
            return janet_unwrap_pointer(argv[n]);
12629
0
        case JANET_ABSTRACT:
12630
0
            if (!janet_checkabstract(argv[n], &janet_type_ffijit)) break;
12631
0
            return ((JanetFFIJittedFn *)janet_unwrap_abstract(argv[n]))->function_pointer;
12632
0
    }
12633
0
    janet_panicf("bad slot #%d, expected ffi callable pointer type, got %v", n, argv[n]);
12634
0
}
12635
12636
/* Write a value given by some Janet values and an FFI type as it would appear in memory.
12637
 * The alignment and space available is assumed to already be sufficient */
12638
0
static void janet_ffi_write_one(void *to, const Janet *argv, int32_t n, JanetFFIType type, int recur) {
12639
0
    if (recur == 0) janet_panic("recursion too deep");
12640
0
    if (type.array_count >= 0) {
12641
0
        JanetFFIType el_type = type;
12642
0
        el_type.array_count = -1;
12643
0
        size_t el_size = type_size(el_type);
12644
0
        JanetView els = janet_getindexed(argv, n);
12645
0
        if (els.len != type.array_count) {
12646
0
            janet_panicf("bad array length, expected %d, got %d", type.array_count, els.len);
12647
0
        }
12648
0
        char *cursor = to;
12649
0
        for (int32_t i = 0; i < els.len; i++) {
12650
0
            janet_ffi_write_one(cursor, els.items, i, el_type, recur - 1);
12651
0
            cursor += el_size;
12652
0
        }
12653
0
        return;
12654
0
    }
12655
0
    switch (type.prim) {
12656
0
        case JANET_FFI_TYPE_VOID:
12657
0
            if (!janet_checktype(argv[n], JANET_NIL)) {
12658
0
                janet_panicf("expected nil, got %v", argv[n]);
12659
0
            }
12660
0
            break;
12661
0
        case JANET_FFI_TYPE_STRUCT: {
12662
0
            JanetView els = janet_getindexed(argv, n);
12663
0
            JanetFFIStruct *st = type.st;
12664
0
            if ((uint32_t) els.len != st->field_count) {
12665
0
                janet_panicf("wrong number of fields in struct, expected %d, got %d",
12666
0
                             (int32_t) st->field_count, els.len);
12667
0
            }
12668
0
            for (int32_t i = 0; i < els.len; i++) {
12669
0
                JanetFFIType tp = st->fields[i].type;
12670
0
                janet_ffi_write_one((char *) to + st->fields[i].offset, els.items, i, tp, recur - 1);
12671
0
            }
12672
0
        }
12673
0
        break;
12674
0
        case JANET_FFI_TYPE_DOUBLE:
12675
0
            ((double *)(to))[0] = janet_getnumber(argv, n);
12676
0
            break;
12677
0
        case JANET_FFI_TYPE_FLOAT:
12678
0
            ((float *)(to))[0] = (float) janet_getnumber(argv, n);
12679
0
            break;
12680
0
        case JANET_FFI_TYPE_PTR:
12681
0
            ((void **)(to))[0] = janet_ffi_getpointer(argv, n);
12682
0
            break;
12683
0
        case JANET_FFI_TYPE_STRING:
12684
0
            ((const char **)(to))[0] = janet_getcstring(argv, n);
12685
0
            break;
12686
0
        case JANET_FFI_TYPE_BOOL:
12687
0
            ((bool *)(to))[0] = janet_getboolean(argv, n);
12688
0
            break;
12689
0
        case JANET_FFI_TYPE_INT8:
12690
0
            ((int8_t *)(to))[0] = janet_getinteger(argv, n);
12691
0
            break;
12692
0
        case JANET_FFI_TYPE_INT16:
12693
0
            ((int16_t *)(to))[0] = janet_getinteger(argv, n);
12694
0
            break;
12695
0
        case JANET_FFI_TYPE_INT32:
12696
0
            ((int32_t *)(to))[0] = janet_getinteger(argv, n);
12697
0
            break;
12698
0
        case JANET_FFI_TYPE_INT64:
12699
0
            ((int64_t *)(to))[0] = janet_getinteger64(argv, n);
12700
0
            break;
12701
0
        case JANET_FFI_TYPE_UINT8:
12702
0
            ((uint8_t *)(to))[0] = (uint8_t) janet_getuinteger64(argv, n);
12703
0
            break;
12704
0
        case JANET_FFI_TYPE_UINT16:
12705
0
            ((uint16_t *)(to))[0] = (uint16_t) janet_getuinteger64(argv, n);
12706
0
            break;
12707
0
        case JANET_FFI_TYPE_UINT32:
12708
0
            ((uint32_t *)(to))[0] = (uint32_t) janet_getuinteger64(argv, n);
12709
0
            break;
12710
0
        case JANET_FFI_TYPE_UINT64:
12711
0
            ((uint64_t *)(to))[0] = janet_getuinteger64(argv, n);
12712
0
            break;
12713
0
    }
12714
0
}
12715
12716
/* Read a value from memory and construct a Janet data structure that can be passed back into
12717
 * the interpreter. This should be the inverse to janet_ffi_write_one. It is assumed that the
12718
 * size of the data is correct. */
12719
0
static Janet janet_ffi_read_one(const uint8_t *from, JanetFFIType type, int recur) {
12720
0
    if (recur == 0) janet_panic("recursion too deep");
12721
0
    if (type.array_count >= 0) {
12722
0
        JanetFFIType el_type = type;
12723
0
        el_type.array_count = -1;
12724
0
        size_t el_size = type_size(el_type);
12725
0
        JanetArray *array = janet_array(type.array_count);
12726
0
        for (int32_t i = 0; i < type.array_count; i++) {
12727
0
            janet_array_push(array, janet_ffi_read_one(from, el_type, recur - 1));
12728
0
            from += el_size;
12729
0
        }
12730
0
        return janet_wrap_array(array);
12731
0
    }
12732
0
    switch (type.prim) {
12733
0
        default:
12734
0
        case JANET_FFI_TYPE_VOID:
12735
0
            return janet_wrap_nil();
12736
0
        case JANET_FFI_TYPE_STRUCT: {
12737
0
            JanetFFIStruct *st = type.st;
12738
0
            Janet *tup = janet_tuple_begin(st->field_count);
12739
0
            for (uint32_t i = 0; i < st->field_count; i++) {
12740
0
                JanetFFIType tp = st->fields[i].type;
12741
0
                tup[i] = janet_ffi_read_one(from + st->fields[i].offset, tp, recur - 1);
12742
0
            }
12743
0
            return janet_wrap_tuple(janet_tuple_end(tup));
12744
0
        }
12745
0
        case JANET_FFI_TYPE_DOUBLE:
12746
0
            return janet_wrap_number(((double *)(from))[0]);
12747
0
        case JANET_FFI_TYPE_FLOAT:
12748
0
            return janet_wrap_number(((float *)(from))[0]);
12749
0
        case JANET_FFI_TYPE_PTR: {
12750
0
            void *ptr = ((void **)(from))[0];
12751
0
            return (NULL == ptr) ? janet_wrap_nil() : janet_wrap_pointer(ptr);
12752
0
        }
12753
0
        case JANET_FFI_TYPE_STRING:
12754
0
            return janet_cstringv(((char **)(from))[0]);
12755
0
        case JANET_FFI_TYPE_BOOL:
12756
0
            return janet_wrap_boolean(((bool *)(from))[0]);
12757
0
        case JANET_FFI_TYPE_INT8:
12758
0
            return janet_wrap_number(((int8_t *)(from))[0]);
12759
0
        case JANET_FFI_TYPE_INT16:
12760
0
            return janet_wrap_number(((int16_t *)(from))[0]);
12761
0
        case JANET_FFI_TYPE_INT32:
12762
0
            return janet_wrap_number(((int32_t *)(from))[0]);
12763
0
        case JANET_FFI_TYPE_UINT8:
12764
0
            return janet_wrap_number(((uint8_t *)(from))[0]);
12765
0
        case JANET_FFI_TYPE_UINT16:
12766
0
            return janet_wrap_number(((uint16_t *)(from))[0]);
12767
0
        case JANET_FFI_TYPE_UINT32:
12768
0
            return janet_wrap_number(((uint32_t *)(from))[0]);
12769
0
#ifdef JANET_INT_TYPES
12770
0
        case JANET_FFI_TYPE_INT64:
12771
0
            return janet_wrap_s64(((int64_t *)(from))[0]);
12772
0
        case JANET_FFI_TYPE_UINT64:
12773
0
            return janet_wrap_u64(((uint64_t *)(from))[0]);
12774
#else
12775
        case JANET_FFI_TYPE_INT64:
12776
            return janet_wrap_number(((int64_t *)(from))[0]);
12777
        case JANET_FFI_TYPE_UINT64:
12778
            return janet_wrap_number(((uint64_t *)(from))[0]);
12779
#endif
12780
0
    }
12781
0
}
12782
12783
0
static JanetFFIMapping void_mapping(void) {
12784
0
    JanetFFIMapping m;
12785
0
    m.type = prim_type(JANET_FFI_TYPE_VOID);
12786
0
    m.spec = JANET_SYSV64_NO_CLASS;
12787
0
    m.offset = 0;
12788
0
    return m;
12789
0
}
12790
12791
#ifdef JANET_FFI_SYSV64_ENABLED
12792
/* AMD64 ABI Draft 0.99.7 – November 17, 2014 – 15:08
12793
 * See section 3.2.3 Parameter Passing */
12794
0
static JanetFFIWordSpec sysv64_classify_ext(JanetFFIType type, size_t shift) {
12795
0
    switch (type.prim) {
12796
0
        case JANET_FFI_TYPE_PTR:
12797
0
        case JANET_FFI_TYPE_STRING:
12798
0
        case JANET_FFI_TYPE_BOOL:
12799
0
        case JANET_FFI_TYPE_INT8:
12800
0
        case JANET_FFI_TYPE_INT16:
12801
0
        case JANET_FFI_TYPE_INT32:
12802
0
        case JANET_FFI_TYPE_INT64:
12803
0
        case JANET_FFI_TYPE_UINT8:
12804
0
        case JANET_FFI_TYPE_UINT16:
12805
0
        case JANET_FFI_TYPE_UINT32:
12806
0
        case JANET_FFI_TYPE_UINT64:
12807
0
            return JANET_SYSV64_INTEGER;
12808
0
        case JANET_FFI_TYPE_DOUBLE:
12809
0
        case JANET_FFI_TYPE_FLOAT:
12810
0
            return JANET_SYSV64_SSE;
12811
0
        case JANET_FFI_TYPE_STRUCT: {
12812
0
            JanetFFIStruct *st = type.st;
12813
0
            if (st->size > 16) return JANET_SYSV64_MEMORY;
12814
0
            if (!st->is_aligned) return JANET_SYSV64_MEMORY;
12815
0
            JanetFFIWordSpec clazz = JANET_SYSV64_NO_CLASS;
12816
0
            if (st->size > 8 && st->size <= 16) {
12817
                /* map to pair classification */
12818
0
                int has_int_lo = 0;
12819
0
                int has_int_hi = 0;
12820
0
                for (uint32_t i = 0; i < st->field_count; i++) {
12821
0
                    JanetFFIWordSpec next_class = sysv64_classify_ext(st->fields[i].type, shift + st->fields[i].offset);
12822
0
                    switch (next_class) {
12823
0
                        default:
12824
0
                            break;
12825
0
                        case JANET_SYSV64_INTEGER:
12826
0
                            if (shift + st->fields[i].offset + type_size(st->fields[i].type) <= 8) {
12827
0
                                has_int_lo = 1;
12828
0
                            } else {
12829
0
                                has_int_hi = 2;
12830
0
                            }
12831
0
                            break;
12832
0
                        case JANET_SYSV64_PAIR_INTINT:
12833
0
                            has_int_lo = 1;
12834
0
                            has_int_hi = 2;
12835
0
                            break;
12836
0
                        case JANET_SYSV64_PAIR_INTSSE:
12837
0
                            has_int_lo = 1;
12838
0
                            break;
12839
0
                        case JANET_SYSV64_PAIR_SSEINT:
12840
0
                            has_int_hi = 2;
12841
0
                            break;
12842
0
                            break;
12843
0
                    }
12844
0
                }
12845
0
                switch (has_int_hi + has_int_lo) {
12846
0
                    case 0:
12847
0
                        clazz = JANET_SYSV64_PAIR_SSESSE;
12848
0
                        break;
12849
0
                    case 1:
12850
0
                        clazz = JANET_SYSV64_PAIR_INTSSE;
12851
0
                        break;
12852
0
                    case 2:
12853
0
                        clazz = JANET_SYSV64_PAIR_SSEINT;
12854
0
                        break;
12855
0
                    case 3:
12856
0
                        clazz = JANET_SYSV64_PAIR_INTINT;
12857
0
                        break;
12858
0
                }
12859
0
            } else {
12860
                /* Normal struct classification */
12861
0
                for (uint32_t i = 0; i < st->field_count; i++) {
12862
0
                    JanetFFIWordSpec next_class = sysv64_classify_ext(st->fields[i].type, shift + st->fields[i].offset);
12863
0
                    if (next_class != clazz) {
12864
0
                        if (clazz == JANET_SYSV64_NO_CLASS) {
12865
0
                            clazz = next_class;
12866
0
                        } else if (clazz == JANET_SYSV64_MEMORY || next_class == JANET_SYSV64_MEMORY) {
12867
0
                            clazz = JANET_SYSV64_MEMORY;
12868
0
                        } else if (clazz == JANET_SYSV64_INTEGER || next_class == JANET_SYSV64_INTEGER) {
12869
0
                            clazz = JANET_SYSV64_INTEGER;
12870
0
                        } else {
12871
0
                            clazz = JANET_SYSV64_SSE;
12872
0
                        }
12873
0
                    }
12874
0
                }
12875
0
            }
12876
0
            return clazz;
12877
0
        }
12878
0
        case JANET_FFI_TYPE_VOID:
12879
0
            return JANET_SYSV64_NO_CLASS;
12880
0
        default:
12881
0
            janet_panic("nyi");
12882
0
            return JANET_SYSV64_NO_CLASS;
12883
0
    }
12884
0
}
12885
0
static JanetFFIWordSpec sysv64_classify(JanetFFIType type) {
12886
0
    return sysv64_classify_ext(type, 0);
12887
0
}
12888
#endif
12889
12890
#ifdef JANET_FFI_AAPCS64_ENABLED
12891
/* Procedure Call Standard for the Arm® 64-bit Architecture (AArch64) 2023Q3 – October 6, 2023
12892
 * See section 6.8.2 Parameter passing rules.
12893
 * https://github.com/ARM-software/abi-aa/releases/download/2023Q3/aapcs64.pdf
12894
 *
12895
 * Additional documentation needed for Apple platforms.
12896
 * https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms */
12897
12898
#define JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ptr, alignment) (ptr = ((ptr) + ((alignment) - 1)) & ~((alignment) - 1))
12899
#if !defined(JANET_APPLE)
12900
#define JANET_FFI_AAPCS64_STACK_ALIGN(ptr, alignment) ((void) alignment, JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ptr, 8))
12901
#else
12902
#define JANET_FFI_AAPCS64_STACK_ALIGN(ptr, alignment) JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ptr, alignment)
12903
#endif
12904
12905
typedef struct {
12906
    uint64_t a;
12907
    uint64_t b;
12908
} Aapcs64Variant1ReturnGeneral;
12909
12910
typedef struct {
12911
    double a;
12912
    double b;
12913
    double c;
12914
    double d;
12915
} Aapcs64Variant2ReturnSse;
12916
12917
/* Workaround for passing a return value pointer through x8.
12918
 * Limits struct returns to 128 bytes. */
12919
typedef struct {
12920
    uint64_t a;
12921
    uint64_t b;
12922
    uint64_t c;
12923
    uint64_t d;
12924
    uint64_t e;
12925
    uint64_t f;
12926
    uint64_t g;
12927
    uint64_t h;
12928
    uint64_t i;
12929
    uint64_t j;
12930
    uint64_t k;
12931
    uint64_t l;
12932
    uint64_t m;
12933
    uint64_t n;
12934
    uint64_t o;
12935
    uint64_t p;
12936
} Aapcs64Variant3ReturnPointer;
12937
12938
static JanetFFIWordSpec aapcs64_classify(JanetFFIType type) {
12939
    switch (type.prim) {
12940
        case JANET_FFI_TYPE_PTR:
12941
        case JANET_FFI_TYPE_STRING:
12942
        case JANET_FFI_TYPE_BOOL:
12943
        case JANET_FFI_TYPE_INT8:
12944
        case JANET_FFI_TYPE_INT16:
12945
        case JANET_FFI_TYPE_INT32:
12946
        case JANET_FFI_TYPE_INT64:
12947
        case JANET_FFI_TYPE_UINT8:
12948
        case JANET_FFI_TYPE_UINT16:
12949
        case JANET_FFI_TYPE_UINT32:
12950
        case JANET_FFI_TYPE_UINT64:
12951
            return JANET_AAPCS64_GENERAL;
12952
        case JANET_FFI_TYPE_DOUBLE:
12953
        case JANET_FFI_TYPE_FLOAT:
12954
            return JANET_AAPCS64_SSE;
12955
        case JANET_FFI_TYPE_STRUCT: {
12956
            JanetFFIStruct *st = type.st;
12957
            if (st->field_count <= 4 && aapcs64_classify(st->fields[0].type) == JANET_AAPCS64_SSE) {
12958
                bool is_hfa = true;
12959
                for (uint32_t i = 1; i < st->field_count; i++) {
12960
                    if (st->fields[0].type.prim != st->fields[i].type.prim) {
12961
                        is_hfa = false;
12962
                        break;
12963
                    }
12964
                }
12965
                if (is_hfa) {
12966
                    return JANET_AAPCS64_SSE;
12967
                }
12968
            }
12969
12970
            if (type_size(type) > 16) {
12971
                return JANET_AAPCS64_GENERAL_REF;
12972
            }
12973
12974
            return JANET_AAPCS64_GENERAL;
12975
        }
12976
        case JANET_FFI_TYPE_VOID:
12977
            return JANET_AAPCS64_NONE;
12978
        default:
12979
            janet_panic("nyi");
12980
            return JANET_AAPCS64_NONE;
12981
    }
12982
}
12983
#endif
12984
12985
JANET_CORE_FN(cfun_ffi_signature,
12986
              "(ffi/signature calling-convention ret-type & arg-types)",
12987
              "Create a function signature object that can be used to make calls "
12988
0
              "with raw function pointers.") {
12989
0
    janet_arity(argc, 2, -1);
12990
0
    uint32_t frame_size = 0;
12991
0
    uint32_t variant = 0;
12992
0
    uint32_t arg_count = argc - 2;
12993
0
    uint32_t stack_count = 0;
12994
0
    JanetFFICallingConvention cc = decode_ffi_cc(janet_getkeyword(argv, 0));
12995
0
    JanetFFIType ret_type = decode_ffi_type(argv[1]);
12996
0
    JanetFFIMapping ret = {
12997
0
        ret_type,
12998
0
        JANET_SYSV64_NO_CLASS,
12999
0
        0,
13000
0
        0
13001
0
    };
13002
0
    JanetFFIMapping mappings[JANET_FFI_MAX_ARGS];
13003
0
    for (int i = 0; i < JANET_FFI_MAX_ARGS; i++) mappings[i] = void_mapping();
13004
0
    switch (cc) {
13005
0
        default:
13006
0
        case JANET_FFI_CC_NONE: {
13007
            /* Even if unsupported, we can check that the signature is valid
13008
             * and error at runtime */
13009
0
            for (uint32_t i = 0; i < arg_count; i++) {
13010
0
                decode_ffi_type(argv[i + 2]);
13011
0
            }
13012
0
        }
13013
0
        break;
13014
13015
#ifdef JANET_FFI_WIN64_ENABLED
13016
        case JANET_FFI_CC_WIN_64: {
13017
            size_t ret_size = type_size(ret.type);
13018
            uint32_t ref_stack_count = 0;
13019
            ret.spec = JANET_WIN64_REGISTER;
13020
            uint32_t next_register = 0;
13021
            if (ret_size != 0 && ret_size != 1 && ret_size != 2 && ret_size != 4 && ret_size != 8) {
13022
                ret.spec = JANET_WIN64_REGISTER_REF;
13023
                next_register++;
13024
            } else if (ret.type.prim == JANET_FFI_TYPE_FLOAT ||
13025
                       ret.type.prim == JANET_FFI_TYPE_DOUBLE) {
13026
                variant += 16;
13027
            }
13028
            for (uint32_t i = 0; i < arg_count; i++) {
13029
                mappings[i].type = decode_ffi_type(argv[i + 2]);
13030
                size_t el_size = type_size(mappings[i].type);
13031
                int is_register_sized = (el_size == 1 || el_size == 2 || el_size == 4 || el_size == 8);
13032
                if (next_register < 4) {
13033
                    mappings[i].offset = next_register;
13034
                    if (is_register_sized) {
13035
                        mappings[i].spec = JANET_WIN64_REGISTER;
13036
                        if (mappings[i].type.prim == JANET_FFI_TYPE_FLOAT ||
13037
                                mappings[i].type.prim == JANET_FFI_TYPE_DOUBLE) {
13038
                            variant += 1 << (3 - next_register);
13039
                        }
13040
                    } else {
13041
                        mappings[i].spec = JANET_WIN64_REGISTER_REF;
13042
                        mappings[i].offset2 = ref_stack_count;
13043
                        ref_stack_count += (uint32_t)((el_size + 15) / 16);
13044
                    }
13045
                    next_register++;
13046
                } else {
13047
                    if (is_register_sized) {
13048
                        mappings[i].spec = JANET_WIN64_STACK;
13049
                        mappings[i].offset = stack_count;
13050
                        stack_count++;
13051
                    } else {
13052
                        mappings[i].spec = JANET_WIN64_STACK_REF;
13053
                        mappings[i].offset = stack_count;
13054
                        stack_count++;
13055
                        mappings[i].offset2 = ref_stack_count;
13056
                        ref_stack_count += (uint32_t)((el_size + 15) / 16);
13057
                    }
13058
                }
13059
            }
13060
13061
            /* Add reference items */
13062
            stack_count += 2 * ref_stack_count;
13063
            if (stack_count & 0x1) {
13064
                stack_count++;
13065
            }
13066
13067
            /* Invert stack
13068
             * Offsets are in units of 8-bytes */
13069
            for (uint32_t i = 0; i < arg_count; i++) {
13070
                if (mappings[i].spec == JANET_WIN64_STACK_REF || mappings[i].spec == JANET_WIN64_REGISTER_REF) {
13071
                    /* Align size to 16 bytes */
13072
                    size_t size = (type_size(mappings[i].type) + 15) & ~0xFUL;
13073
                    mappings[i].offset2 = (uint32_t)(stack_count - mappings[i].offset2 - (size / 8));
13074
                }
13075
            }
13076
13077
        }
13078
        break;
13079
#endif
13080
13081
0
#ifdef JANET_FFI_SYSV64_ENABLED
13082
0
        case JANET_FFI_CC_SYSV_64: {
13083
0
            JanetFFIWordSpec ret_spec = sysv64_classify(ret.type);
13084
0
            ret.spec = ret_spec;
13085
0
            if (ret_spec == JANET_SYSV64_SSE) variant = 1;
13086
0
            if (ret_spec == JANET_SYSV64_PAIR_INTSSE) variant = 2;
13087
0
            if (ret_spec == JANET_SYSV64_PAIR_SSEINT) variant = 3;
13088
            /* Spill register overflow to memory */
13089
0
            uint32_t next_register = 0;
13090
0
            uint32_t next_fp_register = 0;
13091
0
            const uint32_t max_regs = 6;
13092
0
            const uint32_t max_fp_regs = 8;
13093
0
            if (ret_spec == JANET_SYSV64_MEMORY) {
13094
                /* First integer reg is pointer. */
13095
0
                next_register = 1;
13096
0
            }
13097
0
            for (uint32_t i = 0; i < arg_count; i++) {
13098
0
                mappings[i].type = decode_ffi_type(argv[i + 2]);
13099
0
                mappings[i].offset = 0;
13100
0
                mappings[i].spec = sysv64_classify(mappings[i].type);
13101
0
                if (mappings[i].spec == JANET_SYSV64_NO_CLASS) {
13102
0
                    janet_panic("unexpected void parameter");
13103
0
                }
13104
0
                size_t el_size = (type_size(mappings[i].type) + 7) / 8;
13105
0
                switch (mappings[i].spec) {
13106
0
                    default:
13107
0
                        janet_panicf("nyi: %d", mappings[i].spec);
13108
0
                    case JANET_SYSV64_INTEGER: {
13109
0
                        if (next_register < max_regs) {
13110
0
                            mappings[i].offset = next_register++;
13111
0
                        } else {
13112
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13113
0
                            mappings[i].offset = stack_count;
13114
0
                            stack_count += el_size;
13115
0
                        }
13116
0
                    }
13117
0
                    break;
13118
0
                    case JANET_SYSV64_SSE: {
13119
0
                        if (next_fp_register < max_fp_regs) {
13120
0
                            mappings[i].offset = next_fp_register++;
13121
0
                        } else {
13122
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13123
0
                            mappings[i].offset = stack_count;
13124
0
                            stack_count += el_size;
13125
0
                        }
13126
0
                    }
13127
0
                    break;
13128
0
                    case JANET_SYSV64_MEMORY: {
13129
0
                        mappings[i].offset = stack_count;
13130
0
                        stack_count += el_size;
13131
0
                    }
13132
0
                    break;
13133
0
                    case JANET_SYSV64_PAIR_INTINT: {
13134
0
                        if (next_register + 1 < max_regs) {
13135
0
                            mappings[i].offset = next_register++;
13136
0
                            mappings[i].offset2 = next_register++;
13137
0
                        } else {
13138
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13139
0
                            mappings[i].offset = stack_count;
13140
0
                            stack_count += el_size;
13141
0
                        }
13142
0
                    }
13143
0
                    break;
13144
0
                    case JANET_SYSV64_PAIR_INTSSE: {
13145
0
                        if (next_register < max_regs && next_fp_register < max_fp_regs) {
13146
0
                            mappings[i].offset = next_register++;
13147
0
                            mappings[i].offset2 = next_fp_register++;
13148
0
                        } else {
13149
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13150
0
                            mappings[i].offset = stack_count;
13151
0
                            stack_count += el_size;
13152
0
                        }
13153
0
                    }
13154
0
                    break;
13155
0
                    case JANET_SYSV64_PAIR_SSEINT: {
13156
0
                        if (next_register < max_regs && next_fp_register < max_fp_regs) {
13157
0
                            mappings[i].offset = next_fp_register++;
13158
0
                            mappings[i].offset2 = next_register++;
13159
0
                        } else {
13160
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13161
0
                            mappings[i].offset = stack_count;
13162
0
                            stack_count += el_size;
13163
0
                        }
13164
0
                    }
13165
0
                    break;
13166
0
                    case JANET_SYSV64_PAIR_SSESSE: {
13167
0
                        if (next_fp_register < max_fp_regs) {
13168
0
                            mappings[i].offset = next_fp_register++;
13169
0
                            mappings[i].offset2 = next_fp_register++;
13170
0
                        } else {
13171
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13172
0
                            mappings[i].offset = stack_count;
13173
0
                            stack_count += el_size;
13174
0
                        }
13175
0
                    }
13176
0
                    break;
13177
0
                }
13178
0
            }
13179
0
        }
13180
0
        break;
13181
0
#endif
13182
13183
#ifdef JANET_FFI_AAPCS64_ENABLED
13184
        case JANET_FFI_CC_AAPCS64: {
13185
            uint32_t next_general_reg = 0;
13186
            uint32_t next_fp_reg = 0;
13187
            uint32_t stack_offset = 0;
13188
            uint32_t ref_stack_offset = 0;
13189
13190
            JanetFFIWordSpec ret_spec = aapcs64_classify(ret_type);
13191
            ret.spec = ret_spec;
13192
            if (ret_spec == JANET_AAPCS64_SSE) {
13193
                variant = 1;
13194
            } else if (ret_spec == JANET_AAPCS64_GENERAL_REF) {
13195
                if (type_size(ret_type) > sizeof(Aapcs64Variant3ReturnPointer)) {
13196
                    janet_panic("return value bigger than supported");
13197
                }
13198
                variant = 2;
13199
            } else {
13200
                variant = 0;
13201
            }
13202
13203
            for (uint32_t i = 0; i < arg_count; i++) {
13204
                mappings[i].type = decode_ffi_type(argv[i + 2]);
13205
                mappings[i].spec = aapcs64_classify(mappings[i].type);
13206
                size_t arg_size = type_size(mappings[i].type);
13207
13208
                switch (mappings[i].spec) {
13209
                    case JANET_AAPCS64_GENERAL: {
13210
                        bool arg_is_struct = mappings[i].type.prim == JANET_FFI_TYPE_STRUCT;
13211
                        uint32_t needed_registers = (arg_size + 7) / 8;
13212
                        if (next_general_reg + needed_registers <= 8) {
13213
                            mappings[i].offset = next_general_reg;
13214
                            next_general_reg += needed_registers;
13215
                        } else {
13216
                            size_t arg_align = arg_is_struct ? 8 : type_align(mappings[i].type);
13217
                            mappings[i].spec = JANET_AAPCS64_STACK;
13218
                            mappings[i].offset = JANET_FFI_AAPCS64_STACK_ALIGN(stack_offset, arg_align);
13219
#if !defined(JANET_APPLE)
13220
                            stack_offset += arg_size > 8 ? arg_size : 8;
13221
#else
13222
                            stack_offset += arg_size;
13223
#endif
13224
                            next_general_reg = 8;
13225
                        }
13226
                        break;
13227
                    }
13228
                    case JANET_AAPCS64_GENERAL_REF:
13229
                        if (next_general_reg < 8) {
13230
                            mappings[i].offset = next_general_reg++;
13231
                        } else {
13232
                            mappings[i].spec = JANET_AAPCS64_STACK_REF;
13233
                            mappings[i].offset = JANET_FFI_AAPCS64_STACK_ALIGN(stack_offset, 8);
13234
                            stack_offset += 8;
13235
                        }
13236
                        mappings[i].offset2 = JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ref_stack_offset, 8);
13237
                        ref_stack_offset += arg_size;
13238
                        break;
13239
                    case JANET_AAPCS64_SSE: {
13240
                        uint32_t needed_registers = (arg_size + 7) / 8;
13241
                        if (next_fp_reg + needed_registers <= 8) {
13242
                            mappings[i].offset = next_fp_reg;
13243
                            next_fp_reg += needed_registers;
13244
                        } else {
13245
                            mappings[i].spec = JANET_AAPCS64_STACK;
13246
                            mappings[i].offset = JANET_FFI_AAPCS64_STACK_ALIGN(stack_offset, 8);
13247
#if !defined(JANET_APPLE)
13248
                            stack_offset += 8;
13249
#else
13250
                            stack_offset += arg_size;
13251
#endif
13252
                        }
13253
                        break;
13254
                    }
13255
                    default:
13256
                        janet_panic("nyi");
13257
                }
13258
            }
13259
13260
            stack_offset = (stack_offset + 15) & ~0xFUL;
13261
            ref_stack_offset = (ref_stack_offset + 15) & ~0xFUL;
13262
            stack_count = stack_offset + ref_stack_offset;
13263
13264
            for (uint32_t i = 0; i < arg_count; i++) {
13265
                if (mappings[i].spec == JANET_AAPCS64_GENERAL_REF || mappings[i].spec == JANET_AAPCS64_STACK_REF) {
13266
                    mappings[i].offset2 = stack_offset + mappings[i].offset2;
13267
                }
13268
            }
13269
        }
13270
        break;
13271
#endif
13272
0
    }
13273
13274
    /* Create signature abstract value */
13275
0
    JanetFFISignature *abst = janet_abstract(&janet_signature_type, sizeof(JanetFFISignature));
13276
0
    abst->frame_size = frame_size;
13277
0
    abst->cc = cc;
13278
0
    abst->ret = ret;
13279
0
    abst->arg_count = arg_count;
13280
0
    abst->variant = variant;
13281
0
    abst->stack_count = stack_count;
13282
0
    memcpy(abst->args, mappings, sizeof(JanetFFIMapping) * JANET_FFI_MAX_ARGS);
13283
0
    return janet_wrap_abstract(abst);
13284
0
}
13285
13286
#ifdef JANET_FFI_SYSV64_ENABLED
13287
13288
0
static void janet_ffi_sysv64_standard_callback(void *ctx, void *userdata) {
13289
0
    janet_ffi_trampoline(ctx, userdata);
13290
0
}
13291
13292
/* Functions that set all argument registers. Two variants - one to read rax and rdx returns, another
13293
 * to read xmm0 and xmm1 returns. */
13294
typedef struct {
13295
    uint64_t x;
13296
    uint64_t y;
13297
} sysv64_int_return;
13298
typedef struct {
13299
    double x;
13300
    double y;
13301
} sysv64_sse_return;
13302
typedef struct {
13303
    uint64_t x;
13304
    double y;
13305
} sysv64_intsse_return;
13306
typedef struct {
13307
    double y;
13308
    uint64_t x;
13309
} sysv64_sseint_return;
13310
typedef sysv64_int_return janet_sysv64_variant_1(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13311
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13312
typedef sysv64_sse_return janet_sysv64_variant_2(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13313
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13314
typedef sysv64_intsse_return janet_sysv64_variant_3(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13315
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13316
typedef sysv64_sseint_return janet_sysv64_variant_4(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13317
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13318
13319
0
static Janet janet_ffi_sysv64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
13320
0
    union {
13321
0
        sysv64_int_return int_return;
13322
0
        sysv64_sse_return sse_return;
13323
0
        sysv64_sseint_return sseint_return;
13324
0
        sysv64_intsse_return intsse_return;
13325
0
    } retu;
13326
0
    uint64_t pair[2];
13327
0
    uint64_t regs[6];
13328
0
    double fp_regs[8];
13329
0
    JanetFFIWordSpec ret_spec = signature->ret.spec;
13330
0
    void *ret_mem = &retu.int_return;
13331
0
    if (ret_spec == JANET_SYSV64_MEMORY) {
13332
0
        ret_mem = alloca(type_size(signature->ret.type));
13333
0
        regs[0] = (uint64_t) ret_mem;
13334
0
    }
13335
0
    uint64_t *stack = alloca(sizeof(uint64_t) * signature->stack_count);
13336
0
    for (uint32_t i = 0; i < signature->arg_count; i++) {
13337
0
        uint64_t *to;
13338
0
        int32_t n = i + 2;
13339
0
        JanetFFIMapping arg = signature->args[i];
13340
0
        switch (arg.spec) {
13341
0
            default:
13342
0
                janet_panic("nyi");
13343
0
            case JANET_SYSV64_INTEGER:
13344
0
                to = regs + arg.offset;
13345
0
                break;
13346
0
            case JANET_SYSV64_SSE:
13347
0
                to = (uint64_t *)(fp_regs + arg.offset);
13348
0
                break;
13349
0
            case JANET_SYSV64_MEMORY:
13350
0
                to = stack + arg.offset;
13351
0
                break;
13352
0
            case JANET_SYSV64_PAIR_INTINT:
13353
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13354
0
                regs[arg.offset] = pair[0];
13355
0
                regs[arg.offset2] = pair[1];
13356
0
                continue;
13357
0
            case JANET_SYSV64_PAIR_INTSSE:
13358
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13359
0
                regs[arg.offset] = pair[0];
13360
0
                ((uint64_t *) fp_regs)[arg.offset2] = pair[1];
13361
0
                continue;
13362
0
            case JANET_SYSV64_PAIR_SSEINT:
13363
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13364
0
                ((uint64_t *) fp_regs)[arg.offset] = pair[0];
13365
0
                regs[arg.offset2] = pair[1];
13366
0
                continue;
13367
0
            case JANET_SYSV64_PAIR_SSESSE:
13368
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13369
0
                ((uint64_t *) fp_regs)[arg.offset] = pair[0];
13370
0
                ((uint64_t *) fp_regs)[arg.offset2] = pair[1];
13371
0
                continue;
13372
0
        }
13373
0
        janet_ffi_write_one(to, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13374
0
    }
13375
13376
0
    switch (signature->variant) {
13377
0
        case 0:
13378
0
            retu.int_return = ((janet_sysv64_variant_1 *)(function_pointer))(
13379
0
                                  regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13380
0
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13381
0
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13382
0
            break;
13383
0
        case 1:
13384
0
            retu.sse_return = ((janet_sysv64_variant_2 *)(function_pointer))(
13385
0
                                  regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13386
0
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13387
0
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13388
0
            break;
13389
0
        case 2:
13390
0
            retu.intsse_return = ((janet_sysv64_variant_3 *)(function_pointer))(
13391
0
                                     regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13392
0
                                     fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13393
0
                                     fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13394
0
            break;
13395
0
        case 3:
13396
0
            retu.sseint_return = ((janet_sysv64_variant_4 *)(function_pointer))(
13397
0
                                     regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13398
0
                                     fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13399
0
                                     fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13400
0
            break;
13401
0
    }
13402
13403
0
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
13404
0
}
13405
13406
#endif
13407
13408
#ifdef JANET_FFI_WIN64_ENABLED
13409
13410
static void janet_ffi_win64_standard_callback(void *ctx, void *userdata) {
13411
    janet_ffi_trampoline(ctx, userdata);
13412
}
13413
13414
/* Variants that allow setting all required registers for 64 bit windows calling convention.
13415
 * win64 calling convention has up to 4 arguments on registers, and one register for returns.
13416
 * Each register can either be an integer or floating point register, resulting in
13417
 * 2^5 = 32 variants. Unlike sysv, there are no function signatures that will fill
13418
 * all of the possible registers which is why we have so many variants. If you were using
13419
 * assembly, you could manually fill all of the registers and only have a single variant.
13420
 * And msvc does not support inline assembly on 64 bit targets, so yeah, we have this hackery. */
13421
typedef uint64_t (win64_variant_i_iiii)(uint64_t, uint64_t, uint64_t, uint64_t);
13422
typedef uint64_t (win64_variant_i_iiif)(uint64_t, uint64_t, uint64_t, double);
13423
typedef uint64_t (win64_variant_i_iifi)(uint64_t, uint64_t, double, uint64_t);
13424
typedef uint64_t (win64_variant_i_iiff)(uint64_t, uint64_t, double, double);
13425
typedef uint64_t (win64_variant_i_ifii)(uint64_t, double, uint64_t, uint64_t);
13426
typedef uint64_t (win64_variant_i_ifif)(uint64_t, double, uint64_t, double);
13427
typedef uint64_t (win64_variant_i_iffi)(uint64_t, double, double, uint64_t);
13428
typedef uint64_t (win64_variant_i_ifff)(uint64_t, double, double, double);
13429
typedef uint64_t (win64_variant_i_fiii)(double, uint64_t, uint64_t, uint64_t);
13430
typedef uint64_t (win64_variant_i_fiif)(double, uint64_t, uint64_t, double);
13431
typedef uint64_t (win64_variant_i_fifi)(double, uint64_t, double, uint64_t);
13432
typedef uint64_t (win64_variant_i_fiff)(double, uint64_t, double, double);
13433
typedef uint64_t (win64_variant_i_ffii)(double, double, uint64_t, uint64_t);
13434
typedef uint64_t (win64_variant_i_ffif)(double, double, uint64_t, double);
13435
typedef uint64_t (win64_variant_i_fffi)(double, double, double, uint64_t);
13436
typedef uint64_t (win64_variant_i_ffff)(double, double, double, double);
13437
typedef double (win64_variant_f_iiii)(uint64_t, uint64_t, uint64_t, uint64_t);
13438
typedef double (win64_variant_f_iiif)(uint64_t, uint64_t, uint64_t, double);
13439
typedef double (win64_variant_f_iifi)(uint64_t, uint64_t, double, uint64_t);
13440
typedef double (win64_variant_f_iiff)(uint64_t, uint64_t, double, double);
13441
typedef double (win64_variant_f_ifii)(uint64_t, double, uint64_t, uint64_t);
13442
typedef double (win64_variant_f_ifif)(uint64_t, double, uint64_t, double);
13443
typedef double (win64_variant_f_iffi)(uint64_t, double, double, uint64_t);
13444
typedef double (win64_variant_f_ifff)(uint64_t, double, double, double);
13445
typedef double (win64_variant_f_fiii)(double, uint64_t, uint64_t, uint64_t);
13446
typedef double (win64_variant_f_fiif)(double, uint64_t, uint64_t, double);
13447
typedef double (win64_variant_f_fifi)(double, uint64_t, double, uint64_t);
13448
typedef double (win64_variant_f_fiff)(double, uint64_t, double, double);
13449
typedef double (win64_variant_f_ffii)(double, double, uint64_t, uint64_t);
13450
typedef double (win64_variant_f_ffif)(double, double, uint64_t, double);
13451
typedef double (win64_variant_f_fffi)(double, double, double, uint64_t);
13452
typedef double (win64_variant_f_ffff)(double, double, double, double);
13453
13454
static Janet janet_ffi_win64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
13455
    union {
13456
        uint64_t integer;
13457
        double real;
13458
    } regs[4];
13459
    union {
13460
        uint64_t integer;
13461
        double real;
13462
    } ret_reg;
13463
    JanetFFIWordSpec ret_spec = signature->ret.spec;
13464
    void *ret_mem = &ret_reg.integer;
13465
    if (ret_spec == JANET_WIN64_REGISTER_REF) {
13466
        ret_mem = alloca(type_size(signature->ret.type));
13467
        regs[0].integer = (uint64_t) ret_mem;
13468
    }
13469
    size_t stack_size = signature->stack_count * 8;
13470
    size_t stack_shift = 2;
13471
    uint64_t *stack = alloca(stack_size);
13472
    for (uint32_t i = 0; i < signature->arg_count; i++) {
13473
        int32_t n = i + 2;
13474
        JanetFFIMapping arg = signature->args[i];
13475
        if (arg.spec == JANET_WIN64_STACK) {
13476
            janet_ffi_write_one(stack + arg.offset, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13477
        } else if (arg.spec == JANET_WIN64_STACK_REF) {
13478
            uint8_t *ptr = (uint8_t *)(stack + arg.offset2);
13479
            janet_ffi_write_one(ptr, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13480
            stack[arg.offset] = (uint64_t)(ptr - stack_shift * sizeof(uint64_t));
13481
        } else if (arg.spec == JANET_WIN64_REGISTER_REF) {
13482
            uint8_t *ptr = (uint8_t *)(stack + arg.offset2);
13483
            janet_ffi_write_one(ptr, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13484
            regs[arg.offset].integer = (uint64_t)(ptr - stack_shift * sizeof(uint64_t));
13485
        } else {
13486
            janet_ffi_write_one((uint8_t *) &regs[arg.offset].integer, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13487
        }
13488
    }
13489
13490
    /* hack to get proper stack placement and avoid clobbering from logic above - shift stack down, otherwise we have issues.
13491
     * Technically, this writes into 16 bytes of unallocated stack memory */
13492
#ifdef JANET_MINGW
13493
#pragma GCC diagnostic ignored "-Wstringop-overflow"
13494
#endif
13495
    if (stack_size) memmove(stack - stack_shift, stack, stack_size);
13496
#ifdef JANET_MINGW
13497
#pragma GCC diagnostic pop
13498
#endif
13499
13500
    switch (signature->variant) {
13501
        default:
13502
            janet_panicf("unknown variant %d", signature->variant);
13503
        case 0:
13504
            ret_reg.integer = ((win64_variant_i_iiii *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].integer);
13505
            break;
13506
        case 1:
13507
            ret_reg.integer = ((win64_variant_i_iiif *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].real);
13508
            break;
13509
        case 2:
13510
            ret_reg.integer = ((win64_variant_i_iifi *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].integer);
13511
            break;
13512
        case 3:
13513
            ret_reg.integer = ((win64_variant_i_iiff *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].real);
13514
            break;
13515
        case 4:
13516
            ret_reg.integer = ((win64_variant_i_ifii *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].integer);
13517
            break;
13518
        case 5:
13519
            ret_reg.integer = ((win64_variant_i_ifif *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].real);
13520
            break;
13521
        case 6:
13522
            ret_reg.integer = ((win64_variant_i_iffi *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].integer);
13523
            break;
13524
        case 7:
13525
            ret_reg.integer = ((win64_variant_i_ifff *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].real);
13526
            break;
13527
        case 8:
13528
            ret_reg.integer = ((win64_variant_i_fiii *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].integer);
13529
            break;
13530
        case 9:
13531
            ret_reg.integer = ((win64_variant_i_fiif *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].real);
13532
            break;
13533
        case 10:
13534
            ret_reg.integer = ((win64_variant_i_fifi *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].integer);
13535
            break;
13536
        case 11:
13537
            ret_reg.integer = ((win64_variant_i_fiff *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].real);
13538
            break;
13539
        case 12:
13540
            ret_reg.integer = ((win64_variant_i_ffii *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].integer);
13541
            break;
13542
        case 13:
13543
            ret_reg.integer = ((win64_variant_i_ffif *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].real);
13544
            break;
13545
        case 14:
13546
            ret_reg.integer = ((win64_variant_i_fffi *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].integer);
13547
            break;
13548
        case 15:
13549
            ret_reg.integer = ((win64_variant_i_ffff *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].real);
13550
            break;
13551
        case 16:
13552
            ret_reg.real = ((win64_variant_f_iiii *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].integer);
13553
            break;
13554
        case 17:
13555
            ret_reg.real = ((win64_variant_f_iiif *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].real);
13556
            break;
13557
        case 18:
13558
            ret_reg.real = ((win64_variant_f_iifi *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].integer);
13559
            break;
13560
        case 19:
13561
            ret_reg.real = ((win64_variant_f_iiff *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].real);
13562
            break;
13563
        case 20:
13564
            ret_reg.real = ((win64_variant_f_ifii *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].integer);
13565
            break;
13566
        case 21:
13567
            ret_reg.real = ((win64_variant_f_ifif *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].real);
13568
            break;
13569
        case 22:
13570
            ret_reg.real = ((win64_variant_f_iffi *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].integer);
13571
            break;
13572
        case 23:
13573
            ret_reg.real = ((win64_variant_f_ifff *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].real);
13574
            break;
13575
        case 24:
13576
            ret_reg.real = ((win64_variant_f_fiii *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].integer);
13577
            break;
13578
        case 25:
13579
            ret_reg.real = ((win64_variant_f_fiif *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].real);
13580
            break;
13581
        case 26:
13582
            ret_reg.real = ((win64_variant_f_fifi *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].integer);
13583
            break;
13584
        case 27:
13585
            ret_reg.real = ((win64_variant_f_fiff *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].real);
13586
            break;
13587
        case 28:
13588
            ret_reg.real = ((win64_variant_f_ffii *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].integer);
13589
            break;
13590
        case 29:
13591
            ret_reg.real = ((win64_variant_f_ffif *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].real);
13592
            break;
13593
        case 30:
13594
            ret_reg.real = ((win64_variant_f_fffi *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].integer);
13595
            break;
13596
        case 31:
13597
            ret_reg.real = ((win64_variant_f_ffff *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].real);
13598
            break;
13599
    }
13600
13601
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
13602
}
13603
13604
#endif
13605
13606
#ifdef JANET_FFI_AAPCS64_ENABLED
13607
13608
static void janet_ffi_aapcs64_standard_callback(void *ctx, void *userdata) {
13609
    janet_ffi_trampoline(ctx, userdata);
13610
}
13611
13612
typedef Aapcs64Variant1ReturnGeneral janet_aapcs64_variant_1(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7,
13613
        double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7);
13614
typedef Aapcs64Variant2ReturnSse janet_aapcs64_variant_2(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7,
13615
        double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7);
13616
typedef Aapcs64Variant3ReturnPointer janet_aapcs64_variant_3(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7,
13617
        double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7);
13618
13619
13620
static Janet janet_ffi_aapcs64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
13621
    union {
13622
        Aapcs64Variant1ReturnGeneral general_return;
13623
        Aapcs64Variant2ReturnSse sse_return;
13624
        Aapcs64Variant3ReturnPointer pointer_return;
13625
    } retu;
13626
    uint64_t regs[8];
13627
    double fp_regs[8];
13628
    void *ret_mem = &retu.general_return;
13629
13630
    /* Apple's stack values do not need to be 8-byte aligned,
13631
     * thus all stack offsets refer to actual byte positions. */
13632
    uint8_t *stack = alloca(signature->stack_count);
13633
#if defined(JANET_APPLE)
13634
    /* Values must be zero-extended by the caller instead of the callee. */
13635
    memset(stack, 0, signature->stack_count);
13636
#endif
13637
    for (uint32_t i = 0; i < signature->arg_count; i++) {
13638
        int32_t n = i + 2;
13639
        JanetFFIMapping arg = signature->args[i];
13640
        void *to = NULL;
13641
13642
        switch (arg.spec) {
13643
            case JANET_AAPCS64_GENERAL:
13644
                to = regs + arg.offset;
13645
                break;
13646
            case JANET_AAPCS64_GENERAL_REF:
13647
                to = stack + arg.offset2;
13648
                regs[arg.offset] = (uint64_t) to;
13649
                break;
13650
            case JANET_AAPCS64_SSE:
13651
                to = fp_regs + arg.offset;
13652
                break;
13653
            case JANET_AAPCS64_STACK:
13654
                to = stack + arg.offset;
13655
                break;
13656
            case JANET_AAPCS64_STACK_REF:
13657
                to = stack + arg.offset2;
13658
                uint64_t *ptr = (uint64_t *) stack + arg.offset;
13659
                *ptr = (uint64_t) to;
13660
                break;
13661
            default:
13662
                janet_panic("nyi");
13663
        }
13664
13665
        if (to) {
13666
            janet_ffi_write_one(to, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13667
        }
13668
    }
13669
13670
    switch (signature->variant) {
13671
        case 0:
13672
            retu.general_return = ((janet_aapcs64_variant_1 *)(function_pointer))(
13673
                                      regs[0], regs[1], regs[2], regs[3],
13674
                                      regs[4], regs[5], regs[6], regs[7],
13675
                                      fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13676
                                      fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13677
            break;
13678
        case 1:
13679
            retu.sse_return = ((janet_aapcs64_variant_2 *)(function_pointer))(
13680
                                  regs[0], regs[1], regs[2], regs[3],
13681
                                  regs[4], regs[5], regs[6], regs[7],
13682
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13683
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13684
            break;
13685
        case 2: {
13686
            retu.pointer_return = ((janet_aapcs64_variant_3 *)(function_pointer))(
13687
                                      regs[0], regs[1], regs[2], regs[3],
13688
                                      regs[4], regs[5], regs[6], regs[7],
13689
                                      fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13690
                                      fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13691
        }
13692
    }
13693
13694
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
13695
}
13696
13697
#endif
13698
13699
/* Allocate executable memory chunks in sizes of a page. Ideally we would keep
13700
 * an allocator around so that multiple JIT allocations would point to the same
13701
 * region but it isn't really worth it. */
13702
0
#define FFI_PAGE_MASK 0xFFF
13703
13704
JANET_CORE_FN(cfun_ffi_jitfn,
13705
              "(ffi/jitfn bytes)",
13706
              "Create an abstract type that can be used as the pointer argument to `ffi/call`. The content "
13707
0
              "of `bytes` is architecture specific machine code that will be copied into executable memory.") {
13708
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_JIT);
13709
0
    janet_fixarity(argc, 1);
13710
0
    JanetByteView bytes = janet_getbytes(argv, 0);
13711
13712
    /* Quick hack to align to page boundary, we should query OS. FIXME */
13713
0
    size_t alloc_size = ((size_t) bytes.len + FFI_PAGE_MASK) & ~FFI_PAGE_MASK;
13714
13715
0
#ifdef JANET_FFI_JIT
13716
0
#ifdef JANET_EV
13717
0
    JanetFFIJittedFn *fn = janet_abstract_threaded(&janet_type_ffijit, sizeof(JanetFFIJittedFn));
13718
#else
13719
    JanetFFIJittedFn *fn = janet_abstract(&janet_type_ffijit, sizeof(JanetFFIJittedFn));
13720
#endif
13721
0
    fn->function_pointer = NULL;
13722
0
    fn->size = 0;
13723
#ifdef JANET_WINDOWS
13724
    void *ptr = VirtualAlloc(NULL, alloc_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
13725
#elif defined(MAP_ANONYMOUS)
13726
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
13727
#elif defined(MAP_ANON)
13728
    /* macos doesn't have MAP_ANONYMOUS */
13729
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
13730
#else
13731
    /* -std=c99 gets in the way */
13732
    /* #define MAP_ANONYMOUS 0x20 should work, though. */
13733
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, -1, 0);
13734
#endif
13735
0
    if (!ptr) {
13736
0
        janet_panic("failed to memory map writable memory");
13737
0
    }
13738
0
    memcpy(ptr, bytes.bytes, bytes.len);
13739
#ifdef JANET_WINDOWS
13740
    DWORD old = 0;
13741
    if (!VirtualProtect(ptr, alloc_size, PAGE_EXECUTE_READ, &old)) {
13742
        janet_panic("failed to make mapped memory executable");
13743
    }
13744
#else
13745
0
    if (mprotect(ptr, alloc_size, PROT_READ | PROT_EXEC) == -1) {
13746
0
        janet_panic("failed to make mapped memory executable");
13747
0
    }
13748
0
#endif
13749
0
    fn->size = alloc_size;
13750
0
    fn->function_pointer = ptr;
13751
0
    return janet_wrap_abstract(fn);
13752
#else
13753
    janet_panic("ffi/jitfn not available on this platform");
13754
#endif
13755
0
}
13756
13757
JANET_CORE_FN(cfun_ffi_call,
13758
              "(ffi/call pointer signature & args)",
13759
              "Call a raw pointer as a function pointer. The function signature specifies "
13760
0
              "how Janet values in `args` are converted to native machine types.") {
13761
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13762
0
    janet_arity(argc, 2, -1);
13763
0
    void *function_pointer = janet_ffi_get_callable_pointer(argv, 0);
13764
0
    JanetFFISignature *signature = janet_getabstract(argv, 1, &janet_signature_type);
13765
0
    janet_fixarity(argc - 2, signature->arg_count);
13766
0
    switch (signature->cc) {
13767
0
        default:
13768
0
        case JANET_FFI_CC_NONE:
13769
0
            (void) function_pointer;
13770
0
            janet_panic("calling convention not supported");
13771
#ifdef JANET_FFI_WIN64_ENABLED
13772
        case JANET_FFI_CC_WIN_64:
13773
            return janet_ffi_win64(signature, function_pointer, argv);
13774
#endif
13775
0
#ifdef JANET_FFI_SYSV64_ENABLED
13776
0
        case JANET_FFI_CC_SYSV_64:
13777
0
            return janet_ffi_sysv64(signature, function_pointer, argv);
13778
0
#endif
13779
#ifdef JANET_FFI_AAPCS64_ENABLED
13780
        case JANET_FFI_CC_AAPCS64:
13781
            return janet_ffi_aapcs64(signature, function_pointer, argv);
13782
#endif
13783
0
    }
13784
0
}
13785
13786
JANET_CORE_FN(cfun_ffi_buffer_write,
13787
              "(ffi/write ffi-type data &opt buffer index)",
13788
              "Append a native type to a buffer such as it would appear in memory. This can be used "
13789
              "to pass pointers to structs in the ffi, or send C/C++/native structs over the network "
13790
0
              "or to files. Returns a modified buffer or a new buffer if one is not supplied.") {
13791
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13792
0
    janet_arity(argc, 2, 4);
13793
0
    JanetFFIType type = decode_ffi_type(argv[0]);
13794
0
    uint32_t el_size = (uint32_t) type_size(type);
13795
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, el_size);
13796
0
    int32_t index = janet_optnat(argv, argc, 3, buffer->count);
13797
0
    int32_t old_count = buffer->count;
13798
0
    if (index > old_count) janet_panic("index out of bounds");
13799
0
    buffer->count = index;
13800
0
    janet_buffer_extra(buffer, el_size);
13801
0
    buffer->count = old_count;
13802
0
    memset(buffer->data + index, 0, el_size);
13803
0
    janet_ffi_write_one(buffer->data + index, argv, 1, type, JANET_FFI_MAX_RECUR);
13804
0
    index += el_size;
13805
0
    if (buffer->count < index) buffer->count = index;
13806
0
    return janet_wrap_buffer(buffer);
13807
0
}
13808
13809
JANET_CORE_FN(cfun_ffi_buffer_read,
13810
              "(ffi/read ffi-type bytes &opt offset)",
13811
              "Parse a native struct out of a buffer and convert it to normal Janet data structures. "
13812
              "This function is the inverse of `ffi/write`. `bytes` can also be a raw pointer, although "
13813
0
              "this is unsafe.") {
13814
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13815
0
    janet_arity(argc, 2, 3);
13816
0
    JanetFFIType type = decode_ffi_type(argv[0]);
13817
0
    size_t offset = (size_t) janet_optnat(argv, argc, 2, 0);
13818
0
    if (janet_checktype(argv[1], JANET_POINTER)) {
13819
0
        uint8_t *ptr = janet_unwrap_pointer(argv[1]);
13820
0
        return janet_ffi_read_one(ptr + offset, type, JANET_FFI_MAX_RECUR);
13821
0
    } else {
13822
0
        size_t el_size = type_size(type);
13823
0
        JanetByteView bytes = janet_getbytes(argv, 1);
13824
0
        if ((size_t) bytes.len < offset + el_size) janet_panic("read out of range");
13825
0
        return janet_ffi_read_one(bytes.bytes + offset, type, JANET_FFI_MAX_RECUR);
13826
0
    }
13827
0
}
13828
13829
JANET_CORE_FN(cfun_ffi_get_callback_trampoline,
13830
              "(ffi/trampoline cc)",
13831
              "Get a native function pointer that can be used as a callback and passed to C libraries. "
13832
              "This callback trampoline has the signature `void trampoline(void \\*ctx, void \\*userdata)` in "
13833
              "the given calling convention. This is the only function signature supported. "
13834
              "It is up to the programmer to ensure that the `userdata` argument contains a janet function "
13835
              "the will be called with one argument, `ctx` which is an opaque pointer. This pointer can "
13836
0
              "be further inspected with `ffi/read`.") {
13837
0
    janet_arity(argc, 0, 1);
13838
0
    JanetFFICallingConvention cc = JANET_FFI_CC_DEFAULT;
13839
0
    if (argc >= 1) cc = decode_ffi_cc(janet_getkeyword(argv, 0));
13840
0
    switch (cc) {
13841
0
        default:
13842
0
        case JANET_FFI_CC_NONE:
13843
0
            janet_panic("calling convention not supported");
13844
#ifdef JANET_FFI_WIN64_ENABLED
13845
        case JANET_FFI_CC_WIN_64:
13846
            return janet_wrap_pointer(janet_ffi_win64_standard_callback);
13847
#endif
13848
0
#ifdef JANET_FFI_SYSV64_ENABLED
13849
0
        case JANET_FFI_CC_SYSV_64:
13850
0
            return janet_wrap_pointer(janet_ffi_sysv64_standard_callback);
13851
0
#endif
13852
#ifdef JANET_FFI_AAPCS64_ENABLED
13853
        case JANET_FFI_CC_AAPCS64:
13854
            return janet_wrap_pointer(janet_ffi_aapcs64_standard_callback);
13855
#endif
13856
0
    }
13857
0
}
13858
13859
JANET_CORE_FN(janet_core_raw_native,
13860
              "(ffi/native &opt path)",
13861
              "Load a shared object or dll from the given path, and do not extract"
13862
              " or run any code from it. This is different than `native`, which will "
13863
              "run initialization code to get a module table. If `path` is nil, opens the current running binary. "
13864
0
              "Returns a `core/native`.") {
13865
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
13866
0
    janet_arity(argc, 0, 1);
13867
0
    const char *path = janet_optcstring(argv, argc, 0, NULL);
13868
0
    Clib lib = load_clib(path);
13869
0
    if (!lib) janet_panic(error_clib());
13870
0
    JanetAbstractNative *anative = janet_abstract(&janet_native_type, sizeof(JanetAbstractNative));
13871
0
    anative->clib = lib;
13872
0
    anative->closed = 0;
13873
0
    anative->is_self = path == NULL;
13874
0
    return janet_wrap_abstract(anative);
13875
0
}
13876
13877
JANET_CORE_FN(janet_core_native_lookup,
13878
              "(ffi/lookup native symbol-name)",
13879
              "Lookup a symbol from a native object. All symbol lookups will return a raw pointer "
13880
0
              "if the symbol is found, else nil.") {
13881
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
13882
0
    janet_fixarity(argc, 2);
13883
0
    JanetAbstractNative *anative = janet_getabstract(argv, 0, &janet_native_type);
13884
0
    const char *sym = janet_getcstring(argv, 1);
13885
0
    if (anative->closed) janet_panic("native object already closed");
13886
0
    void *value = symbol_clib(anative->clib, sym);
13887
0
    if (NULL == value) return janet_wrap_nil();
13888
0
    return janet_wrap_pointer(value);
13889
0
}
13890
13891
JANET_CORE_FN(janet_core_native_close,
13892
              "(ffi/close native)",
13893
              "Free a native object. Dereferencing pointers to symbols in the object will have undefined "
13894
0
              "behavior after freeing.") {
13895
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
13896
0
    janet_fixarity(argc, 1);
13897
0
    JanetAbstractNative *anative = janet_getabstract(argv, 0, &janet_native_type);
13898
0
    if (anative->closed) janet_panic("native object already closed");
13899
0
    if (anative->is_self) janet_panic("cannot close self");
13900
0
    anative->closed = 1;
13901
0
    free_clib(anative->clib);
13902
0
    return janet_wrap_nil();
13903
0
}
13904
13905
JANET_CORE_FN(cfun_ffi_malloc,
13906
              "(ffi/malloc size)",
13907
0
              "Allocates memory directly using the janet memory allocator. Memory allocated in this way must be freed manually! Returns a raw pointer, or nil if size = 0.") {
13908
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13909
0
    janet_fixarity(argc, 1);
13910
0
    size_t size = janet_getsize(argv, 0);
13911
0
    if (size == 0) return janet_wrap_nil();
13912
0
    return janet_wrap_pointer(janet_malloc(size));
13913
0
}
13914
13915
JANET_CORE_FN(cfun_ffi_free,
13916
              "(ffi/free pointer)",
13917
0
              "Free memory allocated with `ffi/malloc`. Returns nil.") {
13918
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13919
0
    janet_fixarity(argc, 1);
13920
0
    if (janet_checktype(argv[0], JANET_NIL)) return janet_wrap_nil();
13921
0
    void *pointer = janet_getpointer(argv, 0);
13922
0
    janet_free(pointer);
13923
0
    return janet_wrap_nil();
13924
0
}
13925
13926
JANET_CORE_FN(cfun_ffi_pointer_buffer,
13927
              "(ffi/pointer-buffer pointer capacity &opt count offset)",
13928
              "Create a buffer from a pointer. The underlying memory of the buffer will not be "
13929
              "reallocated or freed by the garbage collector, allowing unmanaged, mutable memory "
13930
              "to be manipulated with buffer functions. Attempts to resize or extend the buffer "
13931
              "beyond its initial capacity will raise an error. As with many FFI functions, this is memory "
13932
0
              "unsafe and can potentially allow out of bounds memory access. Returns a new buffer.") {
13933
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13934
0
    janet_arity(argc, 2, 4);
13935
0
    void *pointer = janet_getpointer(argv, 0);
13936
0
    int32_t capacity = janet_getnat(argv, 1);
13937
0
    int32_t count = janet_optnat(argv, argc, 2, 0);
13938
0
    int64_t offset = janet_optinteger64(argv, argc, 3, 0);
13939
0
    uint8_t *offset_pointer = ((uint8_t *) pointer) + offset;
13940
0
    return janet_wrap_buffer(janet_pointer_buffer_unsafe(offset_pointer, capacity, count));
13941
0
}
13942
13943
JANET_CORE_FN(cfun_ffi_pointer_cfunction,
13944
              "(ffi/pointer-cfunction pointer &opt name source-file source-line)",
13945
              "Create a C Function from a raw pointer. Optionally give the cfunction a name and "
13946
0
              "source location for stack traces and debugging.") {
13947
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13948
0
    janet_arity(argc, 1, 4);
13949
0
    void *pointer = janet_getpointer(argv, 0);
13950
0
    const char *name = janet_optcstring(argv, argc, 1, NULL);
13951
0
    const char *source = janet_optcstring(argv, argc, 2, NULL);
13952
0
    int32_t line = janet_optinteger(argv, argc, 3, -1);
13953
0
    if ((name != NULL) || (source != NULL) || (line != -1)) {
13954
0
        janet_registry_put((JanetCFunction) pointer, name, NULL, source, line);
13955
0
    }
13956
0
    return janet_wrap_cfunction((JanetCFunction) pointer);
13957
0
}
13958
13959
JANET_CORE_FN(cfun_ffi_supported_calling_conventions,
13960
              "(ffi/calling-conventions)",
13961
              "Get an array of all supported calling conventions on the current architecture. Some architectures may have some FFI "
13962
              "functionality (ffi/malloc, ffi/free, ffi/read, ffi/write, etc.) but not support "
13963
              "any calling conventions. This function can be used to get all supported calling conventions "
13964
              "that can be used on this architecture. All architectures support the :none calling "
13965
0
              "convention which is a placeholder that cannot be used at runtime.") {
13966
0
    janet_fixarity(argc, 0);
13967
0
    (void) argv;
13968
0
    JanetArray *array = janet_array(4);
13969
#ifdef JANET_FFI_WIN64_ENABLED
13970
    janet_array_push(array, janet_ckeywordv("win64"));
13971
#endif
13972
0
#ifdef JANET_FFI_SYSV64_ENABLED
13973
0
    janet_array_push(array, janet_ckeywordv("sysv64"));
13974
0
#endif
13975
#ifdef JANET_FFI_AAPCS64_ENABLED
13976
    janet_array_push(array, janet_ckeywordv("aapcs64"));
13977
#endif
13978
0
    janet_array_push(array, janet_ckeywordv("none"));
13979
0
    return janet_wrap_array(array);
13980
0
}
13981
13982
0
void janet_lib_ffi(JanetTable *env) {
13983
0
    JanetRegExt ffi_cfuns[] = {
13984
0
        JANET_CORE_REG("ffi/native", janet_core_raw_native),
13985
0
        JANET_CORE_REG("ffi/lookup", janet_core_native_lookup),
13986
0
        JANET_CORE_REG("ffi/close", janet_core_native_close),
13987
0
        JANET_CORE_REG("ffi/signature", cfun_ffi_signature),
13988
0
        JANET_CORE_REG("ffi/call", cfun_ffi_call),
13989
0
        JANET_CORE_REG("ffi/struct", cfun_ffi_struct),
13990
0
        JANET_CORE_REG("ffi/write", cfun_ffi_buffer_write),
13991
0
        JANET_CORE_REG("ffi/read", cfun_ffi_buffer_read),
13992
0
        JANET_CORE_REG("ffi/size", cfun_ffi_size),
13993
0
        JANET_CORE_REG("ffi/align", cfun_ffi_align),
13994
0
        JANET_CORE_REG("ffi/trampoline", cfun_ffi_get_callback_trampoline),
13995
0
        JANET_CORE_REG("ffi/jitfn", cfun_ffi_jitfn),
13996
0
        JANET_CORE_REG("ffi/malloc", cfun_ffi_malloc),
13997
0
        JANET_CORE_REG("ffi/free", cfun_ffi_free),
13998
0
        JANET_CORE_REG("ffi/pointer-buffer", cfun_ffi_pointer_buffer),
13999
0
        JANET_CORE_REG("ffi/pointer-cfunction", cfun_ffi_pointer_cfunction),
14000
0
        JANET_CORE_REG("ffi/calling-conventions", cfun_ffi_supported_calling_conventions),
14001
0
        JANET_REG_END
14002
0
    };
14003
0
    janet_core_cfuns_ext(env, NULL, ffi_cfuns);
14004
0
}
14005
14006
#endif
14007
14008
14009
/* src/core/fiber.c */
14010
#line 0 "src/core/fiber.c"
14011
14012
/*
14013
* Copyright (c) 2025 Calvin Rose
14014
*
14015
* Permission is hereby granted, free of charge, to any person obtaining a copy
14016
* of this software and associated documentation files (the "Software"), to
14017
* deal in the Software without restriction, including without limitation the
14018
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14019
* sell copies of the Software, and to permit persons to whom the Software is
14020
* furnished to do so, subject to the following conditions:
14021
*
14022
* The above copyright notice and this permission notice shall be included in
14023
* all copies or substantial portions of the Software.
14024
*
14025
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14026
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14027
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14028
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14029
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14030
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
14031
* IN THE SOFTWARE.
14032
*/
14033
14034
#ifndef JANET_AMALG
14035
#include "features.h"
14036
#include <janet.h>
14037
#include "fiber.h"
14038
#include "state.h"
14039
#include "gc.h"
14040
#include "util.h"
14041
#endif
14042
14043
0
static void fiber_reset(JanetFiber *fiber) {
14044
0
    fiber->maxstack = JANET_STACK_MAX;
14045
0
    fiber->frame = 0;
14046
0
    fiber->stackstart = JANET_FRAME_SIZE;
14047
0
    fiber->stacktop = JANET_FRAME_SIZE;
14048
0
    fiber->child = NULL;
14049
0
    fiber->flags = JANET_FIBER_MASK_YIELD | JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
14050
0
    fiber->env = NULL;
14051
0
    fiber->last_value = janet_wrap_nil();
14052
0
#ifdef JANET_EV
14053
0
    fiber->sched_id = 0;
14054
0
    fiber->ev_callback = NULL;
14055
0
    fiber->ev_state = NULL;
14056
0
    fiber->ev_stream = NULL;
14057
0
    fiber->supervisor_channel = NULL;
14058
0
#endif
14059
0
    janet_fiber_set_status(fiber, JANET_STATUS_NEW);
14060
0
}
14061
14062
0
static JanetFiber *fiber_alloc(int32_t capacity) {
14063
0
    Janet *data;
14064
0
    JanetFiber *fiber = janet_gcalloc(JANET_MEMORY_FIBER, sizeof(JanetFiber));
14065
0
    if (capacity < 32) {
14066
0
        capacity = 32;
14067
0
    }
14068
0
    fiber->capacity = capacity;
14069
0
    data = janet_malloc(sizeof(Janet) * (size_t) capacity);
14070
0
    if (NULL == data) {
14071
0
        JANET_OUT_OF_MEMORY;
14072
0
    }
14073
0
    janet_vm.next_collection += sizeof(Janet) * capacity;
14074
0
    fiber->data = data;
14075
0
    return fiber;
14076
0
}
14077
14078
/* Create a new fiber with argn values on the stack by reusing a fiber. */
14079
0
JanetFiber *janet_fiber_reset(JanetFiber *fiber, JanetFunction *callee, int32_t argc, const Janet *argv) {
14080
0
    int32_t newstacktop;
14081
0
    fiber_reset(fiber);
14082
0
    if (argc) {
14083
0
        newstacktop = fiber->stacktop + argc;
14084
0
        if (newstacktop >= fiber->capacity) {
14085
0
            janet_fiber_setcapacity(fiber, 2 * newstacktop);
14086
0
        }
14087
0
        if (argv) {
14088
0
            memcpy(fiber->data + fiber->stacktop, argv, argc * sizeof(Janet));
14089
0
        } else {
14090
            /* If argv not given, fill with nil */
14091
0
            for (int32_t i = 0; i < argc; i++) {
14092
0
                fiber->data[fiber->stacktop + i] = janet_wrap_nil();
14093
0
            }
14094
0
        }
14095
0
        fiber->stacktop = newstacktop;
14096
0
    }
14097
    /* Don't panic on failure since we use this to implement janet_pcall */
14098
0
    if (janet_fiber_funcframe(fiber, callee)) return NULL;
14099
0
    janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
14100
0
#ifdef JANET_EV
14101
0
    fiber->supervisor_channel = NULL;
14102
0
#endif
14103
0
    return fiber;
14104
0
}
14105
14106
/* Create a new fiber with argn values on the stack. */
14107
0
JanetFiber *janet_fiber(JanetFunction *callee, int32_t capacity, int32_t argc, const Janet *argv) {
14108
0
    return janet_fiber_reset(fiber_alloc(capacity), callee, argc, argv);
14109
0
}
14110
14111
#ifdef JANET_DEBUG
14112
/* Test for memory issues by reallocating fiber every time we push a stack frame */
14113
static void janet_fiber_refresh_memory(JanetFiber *fiber) {
14114
    int32_t n = fiber->capacity;
14115
    if (n) {
14116
        Janet *newData = janet_malloc(sizeof(Janet) * n);
14117
        if (NULL == newData) {
14118
            JANET_OUT_OF_MEMORY;
14119
        }
14120
        memcpy(newData, fiber->data, fiber->capacity * sizeof(Janet));
14121
        janet_free(fiber->data);
14122
        fiber->data = newData;
14123
    }
14124
}
14125
#endif
14126
14127
/* Ensure that the fiber has enough extra capacity */
14128
0
void janet_fiber_setcapacity(JanetFiber *fiber, int32_t n) {
14129
0
    int32_t old_size = fiber->capacity;
14130
0
    int32_t diff = n - old_size;
14131
0
    Janet *newData = janet_realloc(fiber->data, sizeof(Janet) * n);
14132
0
    if (NULL == newData) {
14133
0
        JANET_OUT_OF_MEMORY;
14134
0
    }
14135
0
    fiber->data = newData;
14136
0
    fiber->capacity = n;
14137
0
    janet_vm.next_collection += sizeof(Janet) * diff;
14138
0
}
14139
14140
/* Grow fiber if needed */
14141
0
static void janet_fiber_grow(JanetFiber *fiber, int32_t needed) {
14142
0
    int32_t cap = needed > (INT32_MAX / 2) ? INT32_MAX : 2 * needed;
14143
0
    janet_fiber_setcapacity(fiber, cap);
14144
0
}
14145
14146
/* Push a value on the next stack frame */
14147
0
void janet_fiber_push(JanetFiber *fiber, Janet x) {
14148
0
    if (fiber->stacktop == INT32_MAX) janet_panic("stack overflow");
14149
0
    if (fiber->stacktop >= fiber->capacity) {
14150
0
        janet_fiber_grow(fiber, fiber->stacktop);
14151
0
    }
14152
0
    fiber->data[fiber->stacktop++] = x;
14153
0
}
14154
14155
/* Push 2 values on the next stack frame */
14156
0
void janet_fiber_push2(JanetFiber *fiber, Janet x, Janet y) {
14157
0
    if (fiber->stacktop >= INT32_MAX - 1) janet_panic("stack overflow");
14158
0
    int32_t newtop = fiber->stacktop + 2;
14159
0
    if (newtop > fiber->capacity) {
14160
0
        janet_fiber_grow(fiber, newtop);
14161
0
    }
14162
0
    fiber->data[fiber->stacktop] = x;
14163
0
    fiber->data[fiber->stacktop + 1] = y;
14164
0
    fiber->stacktop = newtop;
14165
0
}
14166
14167
/* Push 3 values on the next stack frame */
14168
0
void janet_fiber_push3(JanetFiber *fiber, Janet x, Janet y, Janet z) {
14169
0
    if (fiber->stacktop >= INT32_MAX - 2) janet_panic("stack overflow");
14170
0
    int32_t newtop = fiber->stacktop + 3;
14171
0
    if (newtop > fiber->capacity) {
14172
0
        janet_fiber_grow(fiber, newtop);
14173
0
    }
14174
0
    fiber->data[fiber->stacktop] = x;
14175
0
    fiber->data[fiber->stacktop + 1] = y;
14176
0
    fiber->data[fiber->stacktop + 2] = z;
14177
0
    fiber->stacktop = newtop;
14178
0
}
14179
14180
/* Push an array on the next stack frame */
14181
0
void janet_fiber_pushn(JanetFiber *fiber, const Janet *arr, int32_t n) {
14182
0
    if (fiber->stacktop > INT32_MAX - n) janet_panic("stack overflow");
14183
0
    int32_t newtop = fiber->stacktop + n;
14184
0
    if (newtop > fiber->capacity) {
14185
0
        janet_fiber_grow(fiber, newtop);
14186
0
    }
14187
0
    safe_memcpy(fiber->data + fiber->stacktop, arr, n * sizeof(Janet));
14188
0
    fiber->stacktop = newtop;
14189
0
}
14190
14191
/* Create a struct with n values. If n is odd, the last value is ignored. */
14192
0
static Janet make_struct_n(const Janet *args, int32_t n) {
14193
0
    int32_t i = 0;
14194
0
    JanetKV *st = janet_struct_begin(n & (~1));
14195
0
    for (; i < n; i += 2) {
14196
0
        janet_struct_put(st, args[i], args[i + 1]);
14197
0
    }
14198
0
    return janet_wrap_struct(janet_struct_end(st));
14199
0
}
14200
14201
/* Push a stack frame to a fiber */
14202
0
int janet_fiber_funcframe(JanetFiber *fiber, JanetFunction *func) {
14203
0
    JanetStackFrame *newframe;
14204
14205
0
    int32_t i;
14206
0
    int32_t oldtop = fiber->stacktop;
14207
0
    int32_t oldframe = fiber->frame;
14208
0
    int32_t nextframe = fiber->stackstart;
14209
0
    int32_t nextstacktop = nextframe + func->def->slotcount + JANET_FRAME_SIZE;
14210
0
    int32_t next_arity = fiber->stacktop - fiber->stackstart;
14211
14212
    /* Check strict arity before messing with state */
14213
0
    if (next_arity < func->def->min_arity) return 1;
14214
0
    if (next_arity > func->def->max_arity) return 1;
14215
14216
0
    if (fiber->capacity < nextstacktop) {
14217
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
14218
#ifdef JANET_DEBUG
14219
    } else {
14220
        janet_fiber_refresh_memory(fiber);
14221
#endif
14222
0
    }
14223
14224
    /* Nil unset stack arguments (Needed for gc correctness) */
14225
0
    for (i = fiber->stacktop; i < nextstacktop; ++i) {
14226
0
        fiber->data[i] = janet_wrap_nil();
14227
0
    }
14228
14229
    /* Set up the next frame */
14230
0
    fiber->frame = nextframe;
14231
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
14232
0
    newframe = janet_fiber_frame(fiber);
14233
0
    newframe->prevframe = oldframe;
14234
0
    newframe->pc = func->def->bytecode;
14235
0
    newframe->func = func;
14236
0
    newframe->env = NULL;
14237
0
    newframe->flags = 0;
14238
14239
    /* Check varargs */
14240
0
    if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
14241
0
        int32_t tuplehead = fiber->frame + func->def->arity;
14242
0
        int st = func->def->flags & JANET_FUNCDEF_FLAG_STRUCTARG;
14243
0
        if (tuplehead >= oldtop) {
14244
0
            fiber->data[tuplehead] = st
14245
0
                                     ? make_struct_n(NULL, 0)
14246
0
                                     : janet_wrap_tuple(janet_tuple_n(NULL, 0));
14247
0
        } else {
14248
0
            fiber->data[tuplehead] = st
14249
0
                                     ? make_struct_n(
14250
0
                                         fiber->data + tuplehead,
14251
0
                                         oldtop - tuplehead)
14252
0
                                     : janet_wrap_tuple(janet_tuple_n(
14253
0
                                             fiber->data + tuplehead,
14254
0
                                             oldtop - tuplehead));
14255
0
        }
14256
0
    }
14257
14258
    /* Good return */
14259
0
    return 0;
14260
0
}
14261
14262
/* If a frame has a closure environment, detach it from
14263
 * the stack and have it keep its own values */
14264
0
static void janet_env_detach(JanetFuncEnv *env) {
14265
    /* Check for closure environment */
14266
0
    if (env) {
14267
0
        janet_env_valid(env);
14268
0
        int32_t len = env->length;
14269
0
        size_t s = sizeof(Janet) * (size_t) len;
14270
0
        Janet *vmem = janet_malloc(s);
14271
0
        janet_vm.next_collection += (uint32_t) s;
14272
0
        if (NULL == vmem) {
14273
0
            JANET_OUT_OF_MEMORY;
14274
0
        }
14275
0
        Janet *values = env->as.fiber->data + env->offset;
14276
0
        safe_memcpy(vmem, values, s);
14277
0
        uint32_t *bitset = janet_stack_frame(values)->func->def->closure_bitset;
14278
0
        if (bitset) {
14279
            /* Clear unneeded references in closure environment */
14280
0
            for (int32_t i = 0; i < len; i += 32) {
14281
0
                uint32_t mask = ~(bitset[i >> 5]);
14282
0
                int32_t maxj = i + 32 > len ? len : i + 32;
14283
0
                for (int32_t j = i; j < maxj; j++) {
14284
0
                    if (mask & 1) vmem[j] = janet_wrap_nil();
14285
0
                    mask >>= 1;
14286
0
                }
14287
0
            }
14288
0
        }
14289
0
        env->offset = 0;
14290
0
        env->as.values = vmem;
14291
0
    }
14292
0
}
14293
14294
/* Validate potentially untrusted func env (unmarshalled envs are difficult to verify) */
14295
0
int janet_env_valid(JanetFuncEnv *env) {
14296
0
    if (env->offset < 0) {
14297
0
        int32_t real_offset = -(env->offset);
14298
0
        JanetFiber *fiber = env->as.fiber;
14299
0
        int32_t i = fiber->frame;
14300
0
        while (i > 0) {
14301
0
            JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
14302
0
            if (real_offset == i &&
14303
0
                    frame->env == env &&
14304
0
                    frame->func &&
14305
0
                    frame->func->def->slotcount == env->length) {
14306
0
                env->offset = real_offset;
14307
0
                return 1;
14308
0
            }
14309
0
            i = frame->prevframe;
14310
0
        }
14311
        /* Invalid, set to empty off-stack variant. */
14312
0
        env->offset = 0;
14313
0
        env->length = 0;
14314
0
        env->as.values = NULL;
14315
0
        return 0;
14316
0
    } else {
14317
0
        return 1;
14318
0
    }
14319
0
}
14320
14321
/* Detach a fiber from the env if the target fiber has stopped mutating */
14322
0
void janet_env_maybe_detach(JanetFuncEnv *env) {
14323
    /* Check for detachable closure envs */
14324
0
    janet_env_valid(env);
14325
0
    if (env->offset > 0) {
14326
0
        JanetFiberStatus s = janet_fiber_status(env->as.fiber);
14327
0
        int isFinished = s == JANET_STATUS_DEAD ||
14328
0
                         s == JANET_STATUS_ERROR ||
14329
0
                         s == JANET_STATUS_USER0 ||
14330
0
                         s == JANET_STATUS_USER1 ||
14331
0
                         s == JANET_STATUS_USER2 ||
14332
0
                         s == JANET_STATUS_USER3 ||
14333
0
                         s == JANET_STATUS_USER4;
14334
0
        if (isFinished) {
14335
0
            janet_env_detach(env);
14336
0
        }
14337
0
    }
14338
0
}
14339
14340
/* Create a tail frame for a function */
14341
0
int janet_fiber_funcframe_tail(JanetFiber *fiber, JanetFunction *func) {
14342
0
    int32_t i;
14343
0
    int32_t nextframetop = fiber->frame + func->def->slotcount;
14344
0
    int32_t nextstacktop = nextframetop + JANET_FRAME_SIZE;
14345
0
    int32_t next_arity = fiber->stacktop - fiber->stackstart;
14346
0
    int32_t stacksize;
14347
14348
    /* Check strict arity before messing with state */
14349
0
    if (next_arity < func->def->min_arity) return 1;
14350
0
    if (next_arity > func->def->max_arity) return 1;
14351
14352
0
    if (fiber->capacity < nextstacktop) {
14353
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
14354
#ifdef JANET_DEBUG
14355
    } else {
14356
        janet_fiber_refresh_memory(fiber);
14357
#endif
14358
0
    }
14359
14360
0
    Janet *stack = fiber->data + fiber->frame;
14361
0
    Janet *args = fiber->data + fiber->stackstart;
14362
14363
    /* Detach old function */
14364
0
    if (NULL != janet_fiber_frame(fiber)->func)
14365
0
        janet_env_detach(janet_fiber_frame(fiber)->env);
14366
0
    janet_fiber_frame(fiber)->env = NULL;
14367
14368
    /* Check varargs */
14369
0
    if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
14370
0
        int32_t tuplehead = fiber->stackstart + func->def->arity;
14371
0
        int st = func->def->flags & JANET_FUNCDEF_FLAG_STRUCTARG;
14372
0
        if (tuplehead >= fiber->stacktop) {
14373
0
            if (tuplehead >= fiber->capacity) janet_fiber_setcapacity(fiber, 2 * (tuplehead + 1));
14374
0
            for (i = fiber->stacktop; i < tuplehead; ++i) fiber->data[i] = janet_wrap_nil();
14375
0
            fiber->data[tuplehead] = st
14376
0
                                     ? make_struct_n(NULL, 0)
14377
0
                                     : janet_wrap_tuple(janet_tuple_n(NULL, 0));
14378
0
        } else {
14379
0
            fiber->data[tuplehead] = st
14380
0
                                     ? make_struct_n(
14381
0
                                         fiber->data + tuplehead,
14382
0
                                         fiber->stacktop - tuplehead)
14383
0
                                     : janet_wrap_tuple(janet_tuple_n(
14384
0
                                             fiber->data + tuplehead,
14385
0
                                             fiber->stacktop - tuplehead));
14386
0
        }
14387
0
        stacksize = tuplehead - fiber->stackstart + 1;
14388
0
    } else {
14389
0
        stacksize = fiber->stacktop - fiber->stackstart;
14390
0
    }
14391
14392
0
    if (stacksize) memmove(stack, args, stacksize * sizeof(Janet));
14393
14394
    /* Nil unset locals (Needed for functional correctness) */
14395
0
    for (i = fiber->frame + stacksize; i < nextframetop; ++i)
14396
0
        fiber->data[i] = janet_wrap_nil();
14397
14398
    /* Set stack stuff */
14399
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
14400
14401
    /* Set frame stuff */
14402
0
    janet_fiber_frame(fiber)->func = func;
14403
0
    janet_fiber_frame(fiber)->pc = func->def->bytecode;
14404
0
    janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_TAILCALL;
14405
14406
    /* Good return */
14407
0
    return 0;
14408
0
}
14409
14410
/* Push a stack frame to a fiber for a c function */
14411
0
void janet_fiber_cframe(JanetFiber *fiber, JanetCFunction cfun) {
14412
0
    JanetStackFrame *newframe;
14413
14414
0
    int32_t oldframe = fiber->frame;
14415
0
    int32_t nextframe = fiber->stackstart;
14416
0
    int32_t nextstacktop = fiber->stacktop + JANET_FRAME_SIZE;
14417
14418
0
    if (fiber->capacity < nextstacktop) {
14419
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
14420
#ifdef JANET_DEBUG
14421
    } else {
14422
        janet_fiber_refresh_memory(fiber);
14423
#endif
14424
0
    }
14425
14426
    /* Set the next frame */
14427
0
    fiber->frame = nextframe;
14428
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
14429
0
    newframe = janet_fiber_frame(fiber);
14430
14431
    /* Set up the new frame */
14432
0
    newframe->prevframe = oldframe;
14433
0
    newframe->pc = (uint32_t *) cfun;
14434
0
    newframe->func = NULL;
14435
0
    newframe->env = NULL;
14436
0
    newframe->flags = 0;
14437
0
}
14438
14439
/* Pop a stack frame from the fiber. */
14440
0
void janet_fiber_popframe(JanetFiber *fiber) {
14441
0
    JanetStackFrame *frame = janet_fiber_frame(fiber);
14442
0
    if (fiber->frame == 0) return;
14443
14444
    /* Clean up the frame (detach environments) */
14445
0
    if (NULL != frame->func)
14446
0
        janet_env_detach(frame->env);
14447
14448
    /* Shrink stack */
14449
0
    fiber->stacktop = fiber->stackstart = fiber->frame;
14450
0
    fiber->frame = frame->prevframe;
14451
0
}
14452
14453
0
JanetFiberStatus janet_fiber_status(JanetFiber *f) {
14454
0
    return ((f)->flags & JANET_FIBER_STATUS_MASK) >> JANET_FIBER_STATUS_OFFSET;
14455
0
}
14456
14457
0
JanetFiber *janet_current_fiber(void) {
14458
0
    return janet_vm.fiber;
14459
0
}
14460
14461
0
JanetFiber *janet_root_fiber(void) {
14462
0
    return janet_vm.root_fiber;
14463
0
}
14464
14465
/* CFuns */
14466
14467
JANET_CORE_FN(cfun_fiber_getenv,
14468
              "(fiber/getenv fiber)",
14469
              "Gets the environment for a fiber. Returns nil if no such table is "
14470
0
              "set yet.") {
14471
0
    janet_fixarity(argc, 1);
14472
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14473
0
    return fiber->env ?
14474
0
           janet_wrap_table(fiber->env) :
14475
0
           janet_wrap_nil();
14476
0
}
14477
14478
JANET_CORE_FN(cfun_fiber_setenv,
14479
              "(fiber/setenv fiber table)",
14480
              "Sets the environment table for a fiber. Set to nil to remove the current "
14481
0
              "environment.") {
14482
0
    janet_fixarity(argc, 2);
14483
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14484
0
    if (janet_checktype(argv[1], JANET_NIL)) {
14485
0
        fiber->env = NULL;
14486
0
    } else {
14487
0
        fiber->env = janet_gettable(argv, 1);
14488
0
    }
14489
0
    return argv[0];
14490
0
}
14491
14492
JANET_CORE_FN(cfun_fiber_new,
14493
              "(fiber/new func &opt sigmask env)",
14494
              "Create a new fiber with function body func. Can optionally "
14495
              "take a set of signals `sigmask` to capture from child fibers, "
14496
              "and an environment table `env`. The mask is specified as a keyword where each character "
14497
              "is used to indicate a signal to block. If the ev module is enabled, and "
14498
              "this fiber is used as an argument to `ev/go`, these \"blocked\" signals "
14499
              "will result in messages being sent to the supervisor channel. "
14500
              "The default sigmask is :y. "
14501
              "For example,\n\n"
14502
              "    (fiber/new myfun :e123)\n\n"
14503
              "blocks error signals and user signals 1, 2 and 3. The signals are "
14504
              "as follows:\n\n"
14505
              "* :a - block all signals\n"
14506
              "* :d - block debug signals\n"
14507
              "* :e - block error signals\n"
14508
              "* :t - block termination signals: error + user[0-4]\n"
14509
              "* :u - block user signals\n"
14510
              "* :y - block yield signals\n"
14511
              "* :w - block await signals (user9)\n"
14512
              "* :r - block interrupt signals (user8)\n"
14513
              "* :0-9 - block a specific user signal\n\n"
14514
              "The sigmask argument also can take environment flags. If any mutually "
14515
              "exclusive flags are present, the last flag takes precedence.\n\n"
14516
              "* :i - inherit the environment from the current fiber\n"
14517
0
              "* :p - the environment table's prototype is the current environment table") {
14518
0
    janet_arity(argc, 1, 3);
14519
0
    JanetFunction *func = janet_getfunction(argv, 0);
14520
0
    JanetFiber *fiber;
14521
0
    if (func->def->min_arity > 1) {
14522
0
        janet_panicf("fiber function must accept 0 or 1 arguments");
14523
0
    }
14524
0
    fiber = janet_fiber(func, 64, func->def->min_arity, NULL);
14525
0
    janet_assert(fiber != NULL, "bad fiber arity check");
14526
0
    if (argc == 3 && !janet_checktype(argv[2], JANET_NIL)) {
14527
0
        fiber->env = janet_gettable(argv, 2);
14528
0
    }
14529
0
    if (argc >= 2) {
14530
0
        int32_t i;
14531
0
        JanetByteView view = janet_getbytes(argv, 1);
14532
0
        fiber->flags = JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
14533
0
        janet_fiber_set_status(fiber, JANET_STATUS_NEW);
14534
0
        for (i = 0; i < view.len; i++) {
14535
0
            if (view.bytes[i] >= '0' && view.bytes[i] <= '9') {
14536
0
                fiber->flags |= JANET_FIBER_MASK_USERN(view.bytes[i] - '0');
14537
0
            } else {
14538
0
                switch (view.bytes[i]) {
14539
0
                    default:
14540
0
                        janet_panicf("invalid flag %c, expected a, t, d, e, u, y, w, r, i, or p", view.bytes[i]);
14541
0
                        break;
14542
0
                    case 'a':
14543
0
                        fiber->flags |=
14544
0
                            JANET_FIBER_MASK_DEBUG |
14545
0
                            JANET_FIBER_MASK_ERROR |
14546
0
                            JANET_FIBER_MASK_USER |
14547
0
                            JANET_FIBER_MASK_YIELD;
14548
0
                        break;
14549
0
                    case 't':
14550
0
                        fiber->flags |=
14551
0
                            JANET_FIBER_MASK_ERROR |
14552
0
                            JANET_FIBER_MASK_USER0 |
14553
0
                            JANET_FIBER_MASK_USER1 |
14554
0
                            JANET_FIBER_MASK_USER2 |
14555
0
                            JANET_FIBER_MASK_USER3 |
14556
0
                            JANET_FIBER_MASK_USER4;
14557
0
                        break;
14558
0
                    case 'd':
14559
0
                        fiber->flags |= JANET_FIBER_MASK_DEBUG;
14560
0
                        break;
14561
0
                    case 'e':
14562
0
                        fiber->flags |= JANET_FIBER_MASK_ERROR;
14563
0
                        break;
14564
0
                    case 'u':
14565
0
                        fiber->flags |= JANET_FIBER_MASK_USER;
14566
0
                        break;
14567
0
                    case 'y':
14568
0
                        fiber->flags |= JANET_FIBER_MASK_YIELD;
14569
0
                        break;
14570
0
                    case 'w':
14571
0
                        fiber->flags |= JANET_FIBER_MASK_USER9;
14572
0
                        break;
14573
0
                    case 'r':
14574
0
                        fiber->flags |= JANET_FIBER_MASK_USER8;
14575
0
                        break;
14576
0
                    case 'i':
14577
0
                        if (!janet_vm.fiber->env) {
14578
0
                            janet_vm.fiber->env = janet_table(0);
14579
0
                        }
14580
0
                        fiber->env = janet_vm.fiber->env;
14581
0
                        break;
14582
0
                    case 'p':
14583
0
                        if (!janet_vm.fiber->env) {
14584
0
                            janet_vm.fiber->env = janet_table(0);
14585
0
                        }
14586
0
                        fiber->env = janet_table(0);
14587
0
                        fiber->env->proto = janet_vm.fiber->env;
14588
0
                        break;
14589
0
                }
14590
0
            }
14591
0
        }
14592
0
    }
14593
0
    return janet_wrap_fiber(fiber);
14594
0
}
14595
14596
JANET_CORE_FN(cfun_fiber_status,
14597
              "(fiber/status fib)",
14598
              "Get the status of a fiber. The status will be one of:\n\n"
14599
              "* :dead - the fiber has finished\n"
14600
              "* :error - the fiber has errored out\n"
14601
              "* :debug - the fiber is suspended in debug mode\n"
14602
              "* :pending - the fiber has been yielded\n"
14603
              "* :user(0-7) - the fiber is suspended by a user signal\n"
14604
              "* :interrupted - the fiber was interrupted\n"
14605
              "* :suspended - the fiber is waiting to be resumed by the scheduler\n"
14606
              "* :alive - the fiber is currently running and cannot be resumed\n"
14607
0
              "* :new - the fiber has just been created and not yet run") {
14608
0
    janet_fixarity(argc, 1);
14609
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14610
0
    uint32_t s = janet_fiber_status(fiber);
14611
0
    return janet_ckeywordv(janet_status_names[s]);
14612
0
}
14613
14614
JANET_CORE_FN(cfun_fiber_current,
14615
              "(fiber/current)",
14616
0
              "Returns the currently running fiber.") {
14617
0
    (void) argv;
14618
0
    janet_fixarity(argc, 0);
14619
0
    return janet_wrap_fiber(janet_vm.fiber);
14620
0
}
14621
14622
JANET_CORE_FN(cfun_fiber_root,
14623
              "(fiber/root)",
14624
              "Returns the current root fiber. The root fiber is the oldest ancestor "
14625
0
              "that does not have a parent.") {
14626
0
    (void) argv;
14627
0
    janet_fixarity(argc, 0);
14628
0
    return janet_wrap_fiber(janet_vm.root_fiber);
14629
0
}
14630
14631
JANET_CORE_FN(cfun_fiber_maxstack,
14632
              "(fiber/maxstack fib)",
14633
              "Gets the maximum stack size in janet values allowed for a fiber. While memory for "
14634
              "the fiber's stack is not allocated up front, the fiber will not allocated more "
14635
0
              "than this amount and will throw a stack-overflow error if more memory is needed. ") {
14636
0
    janet_fixarity(argc, 1);
14637
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14638
0
    return janet_wrap_integer(fiber->maxstack);
14639
0
}
14640
14641
JANET_CORE_FN(cfun_fiber_setmaxstack,
14642
              "(fiber/setmaxstack fib maxstack)",
14643
              "Sets the maximum stack size in janet values for a fiber. By default, the "
14644
0
              "maximum stack size is usually 8192.") {
14645
0
    janet_fixarity(argc, 2);
14646
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14647
0
    int32_t maxs = janet_getinteger(argv, 1);
14648
0
    if (maxs < 0) {
14649
0
        janet_panic("expected positive integer");
14650
0
    }
14651
0
    fiber->maxstack = maxs;
14652
0
    return argv[0];
14653
0
}
14654
14655
0
int janet_fiber_can_resume(JanetFiber *fiber) {
14656
0
    JanetFiberStatus s = janet_fiber_status(fiber);
14657
0
    int isFinished = s == JANET_STATUS_DEAD ||
14658
0
                     s == JANET_STATUS_ERROR ||
14659
0
                     s == JANET_STATUS_USER0 ||
14660
0
                     s == JANET_STATUS_USER1 ||
14661
0
                     s == JANET_STATUS_USER2 ||
14662
0
                     s == JANET_STATUS_USER3 ||
14663
0
                     s == JANET_STATUS_USER4;
14664
0
    return !isFinished;
14665
0
}
14666
14667
JANET_CORE_FN(cfun_fiber_can_resume,
14668
              "(fiber/can-resume? fiber)",
14669
0
              "Check if a fiber is finished and cannot be resumed.") {
14670
0
    janet_fixarity(argc, 1);
14671
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14672
0
    return janet_wrap_boolean(janet_fiber_can_resume(fiber));
14673
0
}
14674
14675
JANET_CORE_FN(cfun_fiber_last_value,
14676
              "(fiber/last-value fiber)",
14677
0
              "Get the last value returned or signaled from the fiber.") {
14678
0
    janet_fixarity(argc, 1);
14679
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14680
0
    return fiber->last_value;
14681
0
}
14682
14683
/* Module entry point */
14684
0
void janet_lib_fiber(JanetTable *env) {
14685
0
    JanetRegExt fiber_cfuns[] = {
14686
0
        JANET_CORE_REG("fiber/new", cfun_fiber_new),
14687
0
        JANET_CORE_REG("fiber/status", cfun_fiber_status),
14688
0
        JANET_CORE_REG("fiber/root", cfun_fiber_root),
14689
0
        JANET_CORE_REG("fiber/current", cfun_fiber_current),
14690
0
        JANET_CORE_REG("fiber/maxstack", cfun_fiber_maxstack),
14691
0
        JANET_CORE_REG("fiber/setmaxstack", cfun_fiber_setmaxstack),
14692
0
        JANET_CORE_REG("fiber/getenv", cfun_fiber_getenv),
14693
0
        JANET_CORE_REG("fiber/setenv", cfun_fiber_setenv),
14694
0
        JANET_CORE_REG("fiber/can-resume?", cfun_fiber_can_resume),
14695
0
        JANET_CORE_REG("fiber/last-value", cfun_fiber_last_value),
14696
0
        JANET_REG_END
14697
0
    };
14698
0
    janet_core_cfuns_ext(env, NULL, fiber_cfuns);
14699
0
}
14700
14701
14702
/* src/core/filewatch.c */
14703
#line 0 "src/core/filewatch.c"
14704
14705
/*
14706
* Copyright (c) 2025 Calvin Rose
14707
*
14708
* Permission is hereby granted, free of charge, to any person obtaining a copy
14709
* of this software and associated documentation files (the "Software"), to
14710
* deal in the Software without restriction, including without limitation the
14711
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14712
* sell copies of the Software, and to permit persons to whom the Software is
14713
* furnished to do so, subject to the following conditions:
14714
*
14715
* The above copyright notice and this permission notice shall be included in
14716
* all copies or substantial portions of the Software.
14717
*
14718
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14719
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14720
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14721
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14722
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14723
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
14724
* IN THE SOFTWARE.
14725
*/
14726
14727
#ifndef JANET_AMALG
14728
#include "features.h"
14729
#include <janet.h>
14730
#include "util.h"
14731
#endif
14732
14733
#ifdef JANET_EV
14734
#ifdef JANET_FILEWATCH
14735
14736
#ifdef JANET_LINUX
14737
#include <sys/inotify.h>
14738
#include <unistd.h>
14739
#endif
14740
14741
#ifdef JANET_WINDOWS
14742
#include <windows.h>
14743
#endif
14744
14745
typedef struct {
14746
    const char *name;
14747
    uint32_t flag;
14748
} JanetWatchFlagName;
14749
14750
typedef struct {
14751
#ifndef JANET_WINDOWS
14752
    JanetStream *stream;
14753
#endif
14754
    JanetTable *watch_descriptors;
14755
    JanetChannel *channel;
14756
    uint32_t default_flags;
14757
    int is_watching;
14758
} JanetWatcher;
14759
14760
#ifdef JANET_LINUX
14761
14762
#include <sys/inotify.h>
14763
#include <unistd.h>
14764
14765
static const JanetWatchFlagName watcher_flags_linux[] = {
14766
    {"access", IN_ACCESS},
14767
    {"all", IN_ALL_EVENTS},
14768
    {"attrib", IN_ATTRIB},
14769
    {"close-nowrite", IN_CLOSE_NOWRITE},
14770
    {"close-write", IN_CLOSE_WRITE},
14771
    {"create", IN_CREATE},
14772
    {"delete", IN_DELETE},
14773
    {"delete-self", IN_DELETE_SELF},
14774
    {"ignored", IN_IGNORED},
14775
    {"modify", IN_MODIFY},
14776
    {"move-self", IN_MOVE_SELF},
14777
    {"moved-from", IN_MOVED_FROM},
14778
    {"moved-to", IN_MOVED_TO},
14779
    {"open", IN_OPEN},
14780
    {"q-overflow", IN_Q_OVERFLOW},
14781
    {"unmount", IN_UNMOUNT},
14782
};
14783
14784
0
static uint32_t decode_watch_flags(const Janet *options, int32_t n) {
14785
0
    uint32_t flags = 0;
14786
0
    for (int32_t i = 0; i < n; i++) {
14787
0
        if (!(janet_checktype(options[i], JANET_KEYWORD))) {
14788
0
            janet_panicf("expected keyword, got %v", options[i]);
14789
0
        }
14790
0
        JanetKeyword keyw = janet_unwrap_keyword(options[i]);
14791
0
        const JanetWatchFlagName *result = janet_strbinsearch(watcher_flags_linux,
14792
0
                                           sizeof(watcher_flags_linux) / sizeof(JanetWatchFlagName),
14793
0
                                           sizeof(JanetWatchFlagName),
14794
0
                                           keyw);
14795
0
        if (!result) {
14796
0
            janet_panicf("unknown inotify flag %v", options[i]);
14797
0
        }
14798
0
        flags |= result->flag;
14799
0
    }
14800
0
    return flags;
14801
0
}
14802
14803
0
static void janet_watcher_init(JanetWatcher *watcher, JanetChannel *channel, uint32_t default_flags) {
14804
0
    int fd;
14805
0
    do {
14806
0
        fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
14807
0
    } while (fd == -1 && errno == EINTR);
14808
0
    if (fd == -1) {
14809
0
        janet_panicv(janet_ev_lasterr());
14810
0
    }
14811
0
    watcher->watch_descriptors = janet_table(0);
14812
0
    watcher->channel = channel;
14813
0
    watcher->default_flags = default_flags;
14814
0
    watcher->is_watching = 0;
14815
0
    watcher->stream = janet_stream(fd, JANET_STREAM_READABLE, NULL);
14816
0
}
14817
14818
0
static void janet_watcher_add(JanetWatcher *watcher, const char *path, uint32_t flags) {
14819
0
    if (watcher->stream == NULL) janet_panic("watcher closed");
14820
0
    int result;
14821
0
    do {
14822
0
        result = inotify_add_watch(watcher->stream->handle, path, flags);
14823
0
    } while (result == -1 && errno == EINTR);
14824
0
    if (result == -1) {
14825
0
        janet_panicv(janet_ev_lasterr());
14826
0
    }
14827
0
    Janet name = janet_cstringv(path);
14828
0
    Janet wd = janet_wrap_integer(result);
14829
0
    janet_table_put(watcher->watch_descriptors, name, wd);
14830
0
    janet_table_put(watcher->watch_descriptors, wd, name);
14831
0
}
14832
14833
0
static void janet_watcher_remove(JanetWatcher *watcher, const char *path) {
14834
0
    if (watcher->stream == NULL) janet_panic("watcher closed");
14835
0
    Janet check = janet_table_get(watcher->watch_descriptors, janet_cstringv(path));
14836
0
    janet_assert(janet_checktype(check, JANET_NUMBER), "bad watch descriptor");
14837
0
    int watch_handle = janet_unwrap_integer(check);
14838
0
    int result;
14839
0
    do {
14840
0
        result = inotify_rm_watch(watcher->stream->handle, watch_handle);
14841
0
    } while (result != -1 && errno == EINTR);
14842
0
    if (result == -1) {
14843
0
        janet_panicv(janet_ev_lasterr());
14844
0
    }
14845
0
}
14846
14847
0
static void watcher_callback_read(JanetFiber *fiber, JanetAsyncEvent event) {
14848
0
    JanetStream *stream = fiber->ev_stream;
14849
0
    JanetWatcher *watcher = *((JanetWatcher **) fiber->ev_state);
14850
0
    char buf[1024];
14851
0
    switch (event) {
14852
0
        default:
14853
0
            break;
14854
0
        case JANET_ASYNC_EVENT_MARK:
14855
0
            janet_mark(janet_wrap_abstract(watcher));
14856
0
            break;
14857
0
        case JANET_ASYNC_EVENT_CLOSE:
14858
0
            janet_schedule(fiber, janet_wrap_nil());
14859
0
            janet_async_end(fiber);
14860
0
            break;
14861
0
        case JANET_ASYNC_EVENT_ERR: {
14862
0
            janet_schedule(fiber, janet_wrap_nil());
14863
0
            janet_async_end(fiber);
14864
0
            break;
14865
0
        }
14866
0
    read_more:
14867
0
        case JANET_ASYNC_EVENT_HUP:
14868
0
        case JANET_ASYNC_EVENT_INIT:
14869
0
        case JANET_ASYNC_EVENT_READ: {
14870
0
            Janet name = janet_wrap_nil();
14871
14872
            /* Assumption - read will never return partial events *
14873
             * From documentation:
14874
             *
14875
             * The behavior when the buffer given to read(2) is too small to
14876
             * return information about the next event depends on the kernel
14877
             * version: before Linux 2.6.21, read(2) returns 0; since Linux
14878
             * 2.6.21, read(2) fails with the error EINVAL.  Specifying a buffer
14879
             * of size
14880
             *
14881
             *     sizeof(struct inotify_event) + NAME_MAX + 1
14882
             *
14883
             * will be sufficient to read at least one event. */
14884
0
            ssize_t nread;
14885
0
            do {
14886
0
                nread = read(stream->handle, buf, sizeof(buf));
14887
0
            } while (nread == -1 && errno == EINTR);
14888
14889
            /* Check for errors - special case errors that can just be waited on to fix */
14890
0
            if (nread == -1) {
14891
0
                if (errno == EAGAIN || errno == EWOULDBLOCK) {
14892
0
                    break;
14893
0
                }
14894
0
                janet_cancel(fiber, janet_ev_lasterr());
14895
0
                fiber->ev_state = NULL;
14896
0
                janet_async_end(fiber);
14897
0
                break;
14898
0
            }
14899
0
            if (nread < (ssize_t) sizeof(struct inotify_event)) break;
14900
14901
            /* Iterate through all events read from the buffer */
14902
0
            char *cursor = buf;
14903
0
            while (cursor < buf + nread) {
14904
0
                struct inotify_event inevent;
14905
0
                memcpy(&inevent, cursor, sizeof(inevent));
14906
0
                cursor += sizeof(inevent);
14907
                /* Read path of inevent */
14908
0
                if (inevent.len) {
14909
0
                    name = janet_cstringv(cursor);
14910
0
                    cursor += inevent.len;
14911
0
                }
14912
14913
                /* Got an event */
14914
0
                Janet path = janet_table_get(watcher->watch_descriptors, janet_wrap_integer(inevent.wd));
14915
0
                JanetKV *event = janet_struct_begin(6);
14916
0
                janet_struct_put(event, janet_ckeywordv("wd"), janet_wrap_integer(inevent.wd));
14917
0
                janet_struct_put(event, janet_ckeywordv("wd-path"), path);
14918
0
                if (janet_checktype(name, JANET_NIL)) {
14919
                    /* We were watching a file directly, so path is the full path. Split into dirname / basename */
14920
0
                    JanetString spath = janet_unwrap_string(path);
14921
0
                    const uint8_t *cursor = spath + janet_string_length(spath);
14922
0
                    const uint8_t *cursor_end = cursor;
14923
0
                    while (cursor > spath && cursor[0] != '/') {
14924
0
                        cursor--;
14925
0
                    }
14926
0
                    if (cursor == spath) {
14927
0
                        janet_struct_put(event, janet_ckeywordv("dir-name"), path);
14928
0
                        janet_struct_put(event, janet_ckeywordv("file-name"), name);
14929
0
                    } else {
14930
0
                        janet_struct_put(event, janet_ckeywordv("dir-name"), janet_wrap_string(janet_string(spath, (cursor - spath))));
14931
0
                        janet_struct_put(event, janet_ckeywordv("file-name"), janet_wrap_string(janet_string(cursor + 1, (cursor_end - cursor - 1))));
14932
0
                    }
14933
0
                } else {
14934
0
                    janet_struct_put(event, janet_ckeywordv("dir-name"), path);
14935
0
                    janet_struct_put(event, janet_ckeywordv("file-name"), name);
14936
0
                }
14937
0
                janet_struct_put(event, janet_ckeywordv("cookie"), janet_wrap_integer(inevent.cookie));
14938
0
                Janet etype = janet_ckeywordv("type");
14939
0
                const JanetWatchFlagName *wfn_end = watcher_flags_linux + sizeof(watcher_flags_linux) / sizeof(watcher_flags_linux[0]);
14940
0
                for (const JanetWatchFlagName *wfn = watcher_flags_linux; wfn < wfn_end; wfn++) {
14941
0
                    if ((inevent.mask & wfn->flag) == wfn->flag) janet_struct_put(event, etype, janet_ckeywordv(wfn->name));
14942
0
                }
14943
0
                Janet eventv = janet_wrap_struct(janet_struct_end(event));
14944
14945
0
                janet_channel_give(watcher->channel, eventv);
14946
0
            }
14947
14948
            /* Read some more if possible */
14949
0
            goto read_more;
14950
0
        }
14951
0
        break;
14952
0
    }
14953
0
}
14954
14955
0
static void janet_watcher_listen(JanetWatcher *watcher) {
14956
0
    if (watcher->is_watching) janet_panic("already watching");
14957
0
    watcher->is_watching = 1;
14958
0
    JanetFunction *thunk = janet_thunk_delay(janet_wrap_nil());
14959
0
    JanetFiber *fiber = janet_fiber(thunk, 64, 0, NULL);
14960
0
    JanetWatcher **state = janet_malloc(sizeof(JanetWatcher *)); /* Gross */
14961
0
    *state = watcher;
14962
0
    janet_async_start_fiber(fiber, watcher->stream, JANET_ASYNC_LISTEN_READ, watcher_callback_read, state);
14963
0
    janet_gcroot(janet_wrap_abstract(watcher));
14964
0
}
14965
14966
0
static void janet_watcher_unlisten(JanetWatcher *watcher) {
14967
0
    if (!watcher->is_watching) return;
14968
0
    watcher->is_watching = 0;
14969
0
    janet_stream_close(watcher->stream);
14970
0
    janet_gcunroot(janet_wrap_abstract(watcher));
14971
0
}
14972
14973
#elif JANET_WINDOWS
14974
14975
#define WATCHFLAG_RECURSIVE 0x100000u
14976
14977
static const JanetWatchFlagName watcher_flags_windows[] = {
14978
    {
14979
        "all",
14980
        FILE_NOTIFY_CHANGE_ATTRIBUTES |
14981
        FILE_NOTIFY_CHANGE_CREATION |
14982
        FILE_NOTIFY_CHANGE_DIR_NAME |
14983
        FILE_NOTIFY_CHANGE_FILE_NAME |
14984
        FILE_NOTIFY_CHANGE_LAST_ACCESS |
14985
        FILE_NOTIFY_CHANGE_LAST_WRITE |
14986
        FILE_NOTIFY_CHANGE_SECURITY |
14987
        FILE_NOTIFY_CHANGE_SIZE |
14988
        WATCHFLAG_RECURSIVE
14989
    },
14990
    {"attributes", FILE_NOTIFY_CHANGE_ATTRIBUTES},
14991
    {"creation", FILE_NOTIFY_CHANGE_CREATION},
14992
    {"dir-name", FILE_NOTIFY_CHANGE_DIR_NAME},
14993
    {"file-name", FILE_NOTIFY_CHANGE_FILE_NAME},
14994
    {"last-access", FILE_NOTIFY_CHANGE_LAST_ACCESS},
14995
    {"last-write", FILE_NOTIFY_CHANGE_LAST_WRITE},
14996
    {"recursive", WATCHFLAG_RECURSIVE},
14997
    {"security", FILE_NOTIFY_CHANGE_SECURITY},
14998
    {"size", FILE_NOTIFY_CHANGE_SIZE},
14999
};
15000
15001
static uint32_t decode_watch_flags(const Janet *options, int32_t n) {
15002
    uint32_t flags = 0;
15003
    for (int32_t i = 0; i < n; i++) {
15004
        if (!(janet_checktype(options[i], JANET_KEYWORD))) {
15005
            janet_panicf("expected keyword, got %v", options[i]);
15006
        }
15007
        JanetKeyword keyw = janet_unwrap_keyword(options[i]);
15008
        const JanetWatchFlagName *result = janet_strbinsearch(watcher_flags_windows,
15009
                                           sizeof(watcher_flags_windows) / sizeof(JanetWatchFlagName),
15010
                                           sizeof(JanetWatchFlagName),
15011
                                           keyw);
15012
        if (!result) {
15013
            janet_panicf("unknown windows filewatch flag %v", options[i]);
15014
        }
15015
        flags |= result->flag;
15016
    }
15017
    return flags;
15018
}
15019
15020
static void janet_watcher_init(JanetWatcher *watcher, JanetChannel *channel, uint32_t default_flags) {
15021
    watcher->watch_descriptors = janet_table(0);
15022
    watcher->channel = channel;
15023
    watcher->default_flags = default_flags;
15024
    watcher->is_watching = 0;
15025
}
15026
15027
/* Since the file info padding includes embedded file names, we want to include more space for data.
15028
 * We also need to handle manually calculating changes if path names are too long, but ideally just avoid
15029
 * that scenario as much as possible */
15030
#define FILE_INFO_PADDING (4096 * 4)
15031
15032
typedef struct {
15033
    OVERLAPPED overlapped;
15034
    JanetStream *stream;
15035
    JanetWatcher *watcher;
15036
    JanetFiber *fiber;
15037
    JanetString dir_path;
15038
    uint32_t flags;
15039
    uint64_t buf[FILE_INFO_PADDING / sizeof(uint64_t)]; /* Ensure alignment */
15040
} OverlappedWatch;
15041
15042
#define NotifyChange FILE_NOTIFY_INFORMATION
15043
15044
static void read_dir_changes(OverlappedWatch *ow) {
15045
    BOOL result = ReadDirectoryChangesW(ow->stream->handle,
15046
                                        (NotifyChange *) ow->buf,
15047
                                        FILE_INFO_PADDING,
15048
                                        (ow->flags & WATCHFLAG_RECURSIVE) ? TRUE : FALSE,
15049
                                        ow->flags & ~WATCHFLAG_RECURSIVE,
15050
                                        NULL,
15051
                                        (OVERLAPPED *) ow,
15052
                                        NULL);
15053
    if (!result) {
15054
        janet_panicv(janet_ev_lasterr());
15055
    }
15056
}
15057
15058
static const char *watcher_actions_windows[] = {
15059
    "unknown",
15060
    "added",
15061
    "removed",
15062
    "modified",
15063
    "renamed-old",
15064
    "renamed-new",
15065
};
15066
15067
static void watcher_callback_read(JanetFiber *fiber, JanetAsyncEvent event) {
15068
    OverlappedWatch *ow = (OverlappedWatch *) fiber->ev_state;
15069
    JanetWatcher *watcher = ow->watcher;
15070
    switch (event) {
15071
        default:
15072
            break;
15073
        case JANET_ASYNC_EVENT_INIT:
15074
            janet_async_in_flight(fiber);
15075
            break;
15076
        case JANET_ASYNC_EVENT_MARK:
15077
            janet_mark(janet_wrap_abstract(ow->stream));
15078
            janet_mark(janet_wrap_fiber(ow->fiber));
15079
            janet_mark(janet_wrap_abstract(watcher));
15080
            janet_mark(janet_wrap_string(ow->dir_path));
15081
            break;
15082
        case JANET_ASYNC_EVENT_CLOSE:
15083
            janet_table_remove(ow->watcher->watch_descriptors, janet_wrap_string(ow->dir_path));
15084
            break;
15085
        case JANET_ASYNC_EVENT_ERR:
15086
        case JANET_ASYNC_EVENT_FAILED:
15087
            janet_stream_close(ow->stream);
15088
            break;
15089
        case JANET_ASYNC_EVENT_COMPLETE: {
15090
            if (!watcher->is_watching) {
15091
                janet_stream_close(ow->stream);
15092
                break;
15093
            }
15094
15095
            NotifyChange *fni = (NotifyChange *) ow->buf;
15096
15097
            while (1) {
15098
                /* Got an event */
15099
15100
                /* Extract name */
15101
                Janet filename;
15102
                if (fni->FileNameLength) {
15103
                    int32_t nbytes = (int32_t) WideCharToMultiByte(CP_UTF8, 0, fni->FileName, fni->FileNameLength / sizeof(wchar_t), NULL, 0, NULL, NULL);
15104
                    janet_assert(nbytes, "bad utf8 path");
15105
                    uint8_t *into = janet_string_begin(nbytes);
15106
                    WideCharToMultiByte(CP_UTF8, 0, fni->FileName, fni->FileNameLength / sizeof(wchar_t), (char *) into, nbytes, NULL, NULL);
15107
                    filename = janet_wrap_string(janet_string_end(into));
15108
                } else {
15109
                    filename = janet_cstringv("");
15110
                }
15111
15112
                JanetKV *event = janet_struct_begin(3);
15113
                janet_struct_put(event, janet_ckeywordv("type"), janet_ckeywordv(watcher_actions_windows[fni->Action]));
15114
                janet_struct_put(event, janet_ckeywordv("file-name"), filename);
15115
                janet_struct_put(event, janet_ckeywordv("dir-name"), janet_wrap_string(ow->dir_path));
15116
                Janet eventv = janet_wrap_struct(janet_struct_end(event));
15117
15118
                janet_channel_give(watcher->channel, eventv);
15119
15120
                /* Next event */
15121
                if (!fni->NextEntryOffset) break;
15122
                fni = (NotifyChange *)((char *)fni + fni->NextEntryOffset);
15123
            }
15124
15125
            /* Make another call to read directory changes */
15126
            read_dir_changes(ow);
15127
            janet_async_in_flight(fiber);
15128
        }
15129
        break;
15130
    }
15131
}
15132
15133
static void start_listening_ow(OverlappedWatch *ow) {
15134
    read_dir_changes(ow);
15135
    JanetStream *stream = ow->stream;
15136
    JanetFunction *thunk = janet_thunk_delay(janet_wrap_nil());
15137
    JanetFiber *fiber = janet_fiber(thunk, 64, 0, NULL);
15138
    fiber->supervisor_channel = janet_root_fiber()->supervisor_channel;
15139
    ow->fiber = fiber;
15140
    janet_async_start_fiber(fiber, stream, JANET_ASYNC_LISTEN_READ, watcher_callback_read, ow);
15141
}
15142
15143
static void janet_watcher_add(JanetWatcher *watcher, const char *path, uint32_t flags) {
15144
    HANDLE handle = CreateFileA(path,
15145
                                FILE_LIST_DIRECTORY | GENERIC_READ,
15146
                                FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
15147
                                NULL,
15148
                                OPEN_EXISTING,
15149
                                FILE_FLAG_OVERLAPPED | FILE_FLAG_BACKUP_SEMANTICS,
15150
                                NULL);
15151
    if (handle == INVALID_HANDLE_VALUE) {
15152
        janet_panicv(janet_ev_lasterr());
15153
    }
15154
    JanetStream *stream = janet_stream(handle, JANET_STREAM_READABLE, NULL);
15155
    OverlappedWatch *ow = janet_malloc(sizeof(OverlappedWatch));
15156
    memset(ow, 0, sizeof(OverlappedWatch));
15157
    ow->stream = stream;
15158
    ow->dir_path = janet_cstring(path);
15159
    ow->fiber = NULL;
15160
    Janet pathv = janet_wrap_string(ow->dir_path);
15161
    ow->flags = flags | watcher->default_flags;
15162
    ow->watcher = watcher;
15163
    ow->overlapped.hEvent = CreateEvent(NULL, FALSE, 0, NULL); /* Do we need this */
15164
    Janet streamv = janet_wrap_pointer(ow);
15165
    janet_table_put(watcher->watch_descriptors, pathv, streamv);
15166
    if (watcher->is_watching) {
15167
        start_listening_ow(ow);
15168
    }
15169
}
15170
15171
static void janet_watcher_remove(JanetWatcher *watcher, const char *path) {
15172
    Janet pathv = janet_cstringv(path);
15173
    Janet streamv = janet_table_get(watcher->watch_descriptors, pathv);
15174
    if (janet_checktype(streamv, JANET_NIL)) {
15175
        janet_panicf("path %v is not being watched", pathv);
15176
    }
15177
    janet_table_remove(watcher->watch_descriptors, pathv);
15178
    OverlappedWatch *ow = janet_unwrap_pointer(streamv);
15179
    janet_stream_close(ow->stream);
15180
}
15181
15182
static void janet_watcher_listen(JanetWatcher *watcher) {
15183
    if (watcher->is_watching) janet_panic("already watching");
15184
    watcher->is_watching = 1;
15185
    for (int32_t i = 0; i < watcher->watch_descriptors->capacity; i++) {
15186
        const JanetKV *kv = watcher->watch_descriptors->data + i;
15187
        if (!janet_checktype(kv->value, JANET_POINTER)) continue;
15188
        OverlappedWatch *ow = janet_unwrap_pointer(kv->value);
15189
        start_listening_ow(ow);
15190
    }
15191
    janet_gcroot(janet_wrap_abstract(watcher));
15192
}
15193
15194
static void janet_watcher_unlisten(JanetWatcher *watcher) {
15195
    if (!watcher->is_watching) return;
15196
    watcher->is_watching = 0;
15197
    for (int32_t i = 0; i < watcher->watch_descriptors->capacity; i++) {
15198
        const JanetKV *kv = watcher->watch_descriptors->data + i;
15199
        if (!janet_checktype(kv->value, JANET_POINTER)) continue;
15200
        OverlappedWatch *ow = janet_unwrap_pointer(kv->value);
15201
        janet_stream_close(ow->stream);
15202
    }
15203
    janet_table_clear(watcher->watch_descriptors);
15204
    janet_gcunroot(janet_wrap_abstract(watcher));
15205
}
15206
15207
#else
15208
15209
/* Default implementation */
15210
15211
static uint32_t decode_watch_flags(const Janet *options, int32_t n) {
15212
    (void) options;
15213
    (void) n;
15214
    return 0;
15215
}
15216
15217
static void janet_watcher_init(JanetWatcher *watcher, JanetChannel *channel, uint32_t default_flags) {
15218
    (void) watcher;
15219
    (void) channel;
15220
    (void) default_flags;
15221
    janet_panic("filewatch not supported on this platform");
15222
}
15223
15224
static void janet_watcher_add(JanetWatcher *watcher, const char *path, uint32_t flags) {
15225
    (void) watcher;
15226
    (void) flags;
15227
    (void) path;
15228
    janet_panic("nyi");
15229
}
15230
15231
static void janet_watcher_remove(JanetWatcher *watcher, const char *path) {
15232
    (void) watcher;
15233
    (void) path;
15234
    janet_panic("nyi");
15235
}
15236
15237
static void janet_watcher_listen(JanetWatcher *watcher) {
15238
    (void) watcher;
15239
    janet_panic("nyi");
15240
}
15241
15242
static void janet_watcher_unlisten(JanetWatcher *watcher) {
15243
    (void) watcher;
15244
    janet_panic("nyi");
15245
}
15246
15247
#endif
15248
15249
/* C Functions */
15250
15251
0
static int janet_filewatch_mark(void *p, size_t s) {
15252
0
    JanetWatcher *watcher = (JanetWatcher *) p;
15253
0
    (void) s;
15254
0
    if (watcher->channel == NULL) return 0; /* Incomplete initialization */
15255
#ifdef JANET_WINDOWS
15256
    for (int32_t i = 0; i < watcher->watch_descriptors->capacity; i++) {
15257
        const JanetKV *kv = watcher->watch_descriptors->data + i;
15258
        if (!janet_checktype(kv->value, JANET_POINTER)) continue;
15259
        OverlappedWatch *ow = janet_unwrap_pointer(kv->value);
15260
        janet_mark(janet_wrap_fiber(ow->fiber));
15261
        janet_mark(janet_wrap_abstract(ow->stream));
15262
        janet_mark(janet_wrap_string(ow->dir_path));
15263
    }
15264
#else
15265
0
    janet_mark(janet_wrap_abstract(watcher->stream));
15266
0
#endif
15267
0
    janet_mark(janet_wrap_abstract(watcher->channel));
15268
0
    janet_mark(janet_wrap_table(watcher->watch_descriptors));
15269
0
    return 0;
15270
0
}
15271
15272
static const JanetAbstractType janet_filewatch_at = {
15273
    "filewatch/watcher",
15274
    NULL,
15275
    janet_filewatch_mark,
15276
    JANET_ATEND_GCMARK
15277
};
15278
15279
JANET_CORE_FN(cfun_filewatch_make,
15280
              "(filewatch/new channel &opt default-flags)",
15281
              "Create a new filewatcher that will give events to a channel channel. See `filewatch/add` for available flags.\n\n"
15282
              "When an event is triggered by the filewatcher, a struct containing information will be given to channel as with `ev/give`. "
15283
              "The contents of the channel depend on the OS, but will contain some common keys:\n\n"
15284
              "* `:type` -- the type of the event that was raised.\n\n"
15285
              "* `:file-name` -- the base file name of the file that triggered the event.\n\n"
15286
              "* `:dir-name` -- the directory name of the file that triggered the event.\n\n"
15287
              "Events also will contain keys specific to the host OS.\n\n"
15288
              "Windows has no extra properties on events.\n\n"
15289
              "Linux has the following extra properties on events:\n\n"
15290
              "* `:wd` -- the integer key returned by `filewatch/add` for the path that triggered this.\n\n"
15291
              "* `:wd-path` -- the string path for watched directory of file. For files, will be the same as `:file-name`, and for directories, will be the same as `:dir-name`.\n\n"
15292
              "* `:cookie` -- a randomized integer used to associate related events, such as :moved-from and :moved-to events.\n\n"
15293
0
              "") {
15294
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
15295
0
    janet_arity(argc, 1, -1);
15296
0
    JanetChannel *channel = janet_getchannel(argv, 0);
15297
0
    JanetWatcher *watcher = janet_abstract(&janet_filewatch_at, sizeof(JanetWatcher));
15298
0
    uint32_t default_flags = decode_watch_flags(argv + 1, argc - 1);
15299
0
    janet_watcher_init(watcher, channel, default_flags);
15300
0
    return janet_wrap_abstract(watcher);
15301
0
}
15302
15303
JANET_CORE_FN(cfun_filewatch_add,
15304
              "(filewatch/add watcher path &opt flags)",
15305
              "Add a path to the watcher. Available flags depend on the current OS, and are as follows:\n\n"
15306
              "Windows/MINGW (flags correspond to `FILE_NOTIFY_CHANGE_*` flags in win32 documentation):\n\n"
15307
              "* `:all` - trigger an event for all of the below triggers.\n\n"
15308
              "* `:attributes` - `FILE_NOTIFY_CHANGE_ATTRIBUTES`\n\n"
15309
              "* `:creation` - `FILE_NOTIFY_CHANGE_CREATION`\n\n"
15310
              "* `:dir-name` - `FILE_NOTIFY_CHANGE_DIR_NAME`\n\n"
15311
              "* `:last-access` - `FILE_NOTIFY_CHANGE_LAST_ACCESS`\n\n"
15312
              "* `:last-write` - `FILE_NOTIFY_CHANGE_LAST_WRITE`\n\n"
15313
              "* `:security` - `FILE_NOTIFY_CHANGE_SECURITY`\n\n"
15314
              "* `:size` - `FILE_NOTIFY_CHANGE_SIZE`\n\n"
15315
              "* `:recursive` - watch subdirectories recursively\n\n"
15316
              "Linux (flags correspond to `IN_*` flags from <sys/inotify.h>):\n\n"
15317
              "* `:access` - `IN_ACCESS`\n\n"
15318
              "* `:all` - `IN_ALL_EVENTS`\n\n"
15319
              "* `:attrib` - `IN_ATTRIB`\n\n"
15320
              "* `:close-nowrite` - `IN_CLOSE_NOWRITE`\n\n"
15321
              "* `:close-write` - `IN_CLOSE_WRITE`\n\n"
15322
              "* `:create` - `IN_CREATE`\n\n"
15323
              "* `:delete` - `IN_DELETE`\n\n"
15324
              "* `:delete-self` - `IN_DELETE_SELF`\n\n"
15325
              "* `:ignored` - `IN_IGNORED`\n\n"
15326
              "* `:modify` - `IN_MODIFY`\n\n"
15327
              "* `:move-self` - `IN_MOVE_SELF`\n\n"
15328
              "* `:moved-from` - `IN_MOVED_FROM`\n\n"
15329
              "* `:moved-to` - `IN_MOVED_TO`\n\n"
15330
              "* `:open` - `IN_OPEN`\n\n"
15331
              "* `:q-overflow` - `IN_Q_OVERFLOW`\n\n"
15332
              "* `:unmount` - `IN_UNMOUNT`\n\n\n"
15333
              "On Windows, events will have the following possible types:\n\n"
15334
              "* `:unknown`\n\n"
15335
              "* `:added`\n\n"
15336
              "* `:removed`\n\n"
15337
              "* `:modified`\n\n"
15338
              "* `:renamed-old`\n\n"
15339
              "* `:renamed-new`\n\n"
15340
              "On Linux, events will a `:type` corresponding to the possible flags, excluding `:all`.\n"
15341
0
              "") {
15342
0
    janet_arity(argc, 2, -1);
15343
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15344
0
    const char *path = janet_getcstring(argv, 1);
15345
0
    uint32_t flags = watcher->default_flags | decode_watch_flags(argv + 2, argc - 2);
15346
0
    janet_watcher_add(watcher, path, flags);
15347
0
    return argv[0];
15348
0
}
15349
15350
JANET_CORE_FN(cfun_filewatch_remove,
15351
              "(filewatch/remove watcher path)",
15352
0
              "Remove a path from the watcher.") {
15353
0
    janet_fixarity(argc, 2);
15354
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15355
0
    const char *path = janet_getcstring(argv, 1);
15356
0
    janet_watcher_remove(watcher, path);
15357
0
    return argv[0];
15358
0
}
15359
15360
JANET_CORE_FN(cfun_filewatch_listen,
15361
              "(filewatch/listen watcher)",
15362
0
              "Listen for changes in the watcher.") {
15363
0
    janet_fixarity(argc, 1);
15364
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15365
0
    janet_watcher_listen(watcher);
15366
0
    return janet_wrap_nil();
15367
0
}
15368
15369
JANET_CORE_FN(cfun_filewatch_unlisten,
15370
              "(filewatch/unlisten watcher)",
15371
0
              "Stop listening for changes on a given watcher.") {
15372
0
    janet_fixarity(argc, 1);
15373
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15374
0
    janet_watcher_unlisten(watcher);
15375
0
    return janet_wrap_nil();
15376
0
}
15377
15378
/* Module entry point */
15379
0
void janet_lib_filewatch(JanetTable *env) {
15380
0
    JanetRegExt cfuns[] = {
15381
0
        JANET_CORE_REG("filewatch/new", cfun_filewatch_make),
15382
0
        JANET_CORE_REG("filewatch/add", cfun_filewatch_add),
15383
0
        JANET_CORE_REG("filewatch/remove", cfun_filewatch_remove),
15384
0
        JANET_CORE_REG("filewatch/listen", cfun_filewatch_listen),
15385
0
        JANET_CORE_REG("filewatch/unlisten", cfun_filewatch_unlisten),
15386
0
        JANET_REG_END
15387
0
    };
15388
0
    janet_core_cfuns_ext(env, NULL, cfuns);
15389
0
}
15390
15391
#endif
15392
#endif
15393
15394
15395
/* src/core/gc.c */
15396
#line 0 "src/core/gc.c"
15397
15398
/*
15399
* Copyright (c) 2025 Calvin Rose
15400
*
15401
* Permission is hereby granted, free of charge, to any person obtaining a copy
15402
* of this software and associated documentation files (the "Software"), to
15403
* deal in the Software without restriction, including without limitation the
15404
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15405
* sell copies of the Software, and to permit persons to whom the Software is
15406
* furnished to do so, subject to the following conditions:
15407
*
15408
* The above copyright notice and this permission notice shall be included in
15409
* all copies or substantial portions of the Software.
15410
*
15411
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15412
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15413
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15414
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15415
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
15416
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
15417
* IN THE SOFTWARE.
15418
*/
15419
15420
#ifndef JANET_AMALG
15421
#include "features.h"
15422
#include <janet.h>
15423
#include "state.h"
15424
#include "symcache.h"
15425
#include "gc.h"
15426
#include "util.h"
15427
#include "fiber.h"
15428
#include "vector.h"
15429
#endif
15430
15431
/* Helpers for marking the various gc types */
15432
static void janet_mark_funcenv(JanetFuncEnv *env);
15433
static void janet_mark_funcdef(JanetFuncDef *def);
15434
static void janet_mark_function(JanetFunction *func);
15435
static void janet_mark_array(JanetArray *array);
15436
static void janet_mark_table(JanetTable *table);
15437
static void janet_mark_struct(const JanetKV *st);
15438
static void janet_mark_tuple(const Janet *tuple);
15439
static void janet_mark_buffer(JanetBuffer *buffer);
15440
static void janet_mark_string(const uint8_t *str);
15441
static void janet_mark_fiber(JanetFiber *fiber);
15442
static void janet_mark_abstract(void *adata);
15443
15444
/* Local state that is only temporary for gc */
15445
static JANET_THREAD_LOCAL uint32_t depth = JANET_RECURSION_GUARD;
15446
static JANET_THREAD_LOCAL size_t orig_rootcount;
15447
15448
/* Hint to the GC that we may need to collect */
15449
1.31M
void janet_gcpressure(size_t s) {
15450
1.31M
    janet_vm.next_collection += s;
15451
1.31M
}
15452
15453
/* Mark a value */
15454
0
void janet_mark(Janet x) {
15455
0
    if (depth) {
15456
0
        depth--;
15457
0
        switch (janet_type(x)) {
15458
0
            default:
15459
0
                break;
15460
0
            case JANET_STRING:
15461
0
            case JANET_KEYWORD:
15462
0
            case JANET_SYMBOL:
15463
0
                janet_mark_string(janet_unwrap_string(x));
15464
0
                break;
15465
0
            case JANET_FUNCTION:
15466
0
                janet_mark_function(janet_unwrap_function(x));
15467
0
                break;
15468
0
            case JANET_ARRAY:
15469
0
                janet_mark_array(janet_unwrap_array(x));
15470
0
                break;
15471
0
            case JANET_TABLE:
15472
0
                janet_mark_table(janet_unwrap_table(x));
15473
0
                break;
15474
0
            case JANET_STRUCT:
15475
0
                janet_mark_struct(janet_unwrap_struct(x));
15476
0
                break;
15477
0
            case JANET_TUPLE:
15478
0
                janet_mark_tuple(janet_unwrap_tuple(x));
15479
0
                break;
15480
0
            case JANET_BUFFER:
15481
0
                janet_mark_buffer(janet_unwrap_buffer(x));
15482
0
                break;
15483
0
            case JANET_FIBER:
15484
0
                janet_mark_fiber(janet_unwrap_fiber(x));
15485
0
                break;
15486
0
            case JANET_ABSTRACT:
15487
0
                janet_mark_abstract(janet_unwrap_abstract(x));
15488
0
                break;
15489
0
        }
15490
0
        depth++;
15491
0
    } else {
15492
0
        janet_gcroot(x);
15493
0
    }
15494
0
}
15495
15496
0
static void janet_mark_string(const uint8_t *str) {
15497
0
    janet_gc_mark(janet_string_head(str));
15498
0
}
15499
15500
0
static void janet_mark_buffer(JanetBuffer *buffer) {
15501
0
    janet_gc_mark(buffer);
15502
0
}
15503
15504
0
static void janet_mark_abstract(void *adata) {
15505
0
#ifdef JANET_EV
15506
    /* Check if abstract type is a threaded abstract type. If it is, marking means
15507
     * updating the threaded_abstract table. */
15508
0
    if ((janet_abstract_head(adata)->gc.flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_THREADED_ABSTRACT) {
15509
0
        janet_table_put(&janet_vm.threaded_abstracts, janet_wrap_abstract(adata), janet_wrap_true());
15510
0
        return;
15511
0
    }
15512
0
#endif
15513
0
    if (janet_gc_reachable(janet_abstract_head(adata)))
15514
0
        return;
15515
0
    janet_gc_mark(janet_abstract_head(adata));
15516
0
    if (janet_abstract_head(adata)->type->gcmark) {
15517
0
        janet_abstract_head(adata)->type->gcmark(adata, janet_abstract_size(adata));
15518
0
    }
15519
0
}
15520
15521
/* Mark a bunch of items in memory */
15522
0
static void janet_mark_many(const Janet *values, int32_t n) {
15523
0
    if (values == NULL)
15524
0
        return;
15525
0
    const Janet *end = values + n;
15526
0
    while (values < end) {
15527
0
        janet_mark(*values);
15528
0
        values += 1;
15529
0
    }
15530
0
}
15531
15532
/* Mark a bunch of key values items in memory */
15533
0
static void janet_mark_keys(const JanetKV *kvs, int32_t n) {
15534
0
    const JanetKV *end = kvs + n;
15535
0
    while (kvs < end) {
15536
0
        janet_mark(kvs->key);
15537
0
        kvs++;
15538
0
    }
15539
0
}
15540
15541
/* Mark a bunch of key values items in memory */
15542
0
static void janet_mark_values(const JanetKV *kvs, int32_t n) {
15543
0
    const JanetKV *end = kvs + n;
15544
0
    while (kvs < end) {
15545
0
        janet_mark(kvs->value);
15546
0
        kvs++;
15547
0
    }
15548
0
}
15549
15550
/* Mark a bunch of key values items in memory */
15551
0
static void janet_mark_kvs(const JanetKV *kvs, int32_t n) {
15552
0
    const JanetKV *end = kvs + n;
15553
0
    while (kvs < end) {
15554
0
        janet_mark(kvs->key);
15555
0
        janet_mark(kvs->value);
15556
0
        kvs++;
15557
0
    }
15558
0
}
15559
15560
0
static void janet_mark_array(JanetArray *array) {
15561
0
    if (janet_gc_reachable(array))
15562
0
        return;
15563
0
    janet_gc_mark(array);
15564
0
    if (janet_gc_type((JanetGCObject *) array) == JANET_MEMORY_ARRAY) {
15565
0
        janet_mark_many(array->data, array->count);
15566
0
    }
15567
0
}
15568
15569
0
static void janet_mark_table(JanetTable *table) {
15570
0
recur: /* Manual tail recursion */
15571
0
    if (janet_gc_reachable(table))
15572
0
        return;
15573
0
    janet_gc_mark(table);
15574
0
    enum JanetMemoryType memtype = janet_gc_type(table);
15575
0
    if (memtype == JANET_MEMORY_TABLE_WEAKK) {
15576
0
        janet_mark_values(table->data, table->capacity);
15577
0
    } else if (memtype == JANET_MEMORY_TABLE_WEAKV) {
15578
0
        janet_mark_keys(table->data, table->capacity);
15579
0
    } else if (memtype == JANET_MEMORY_TABLE) {
15580
0
        janet_mark_kvs(table->data, table->capacity);
15581
0
    }
15582
    /* do nothing for JANET_MEMORY_TABLE_WEAKKV */
15583
0
    if (table->proto) {
15584
0
        table = table->proto;
15585
0
        goto recur;
15586
0
    }
15587
0
}
15588
15589
0
static void janet_mark_struct(const JanetKV *st) {
15590
0
recur:
15591
0
    if (janet_gc_reachable(janet_struct_head(st)))
15592
0
        return;
15593
0
    janet_gc_mark(janet_struct_head(st));
15594
0
    janet_mark_kvs(st, janet_struct_capacity(st));
15595
0
    st = janet_struct_proto(st);
15596
0
    if (st) goto recur;
15597
0
}
15598
15599
0
static void janet_mark_tuple(const Janet *tuple) {
15600
0
    if (janet_gc_reachable(janet_tuple_head(tuple)))
15601
0
        return;
15602
0
    janet_gc_mark(janet_tuple_head(tuple));
15603
0
    janet_mark_many(tuple, janet_tuple_length(tuple));
15604
0
}
15605
15606
/* Helper to mark function environments */
15607
0
static void janet_mark_funcenv(JanetFuncEnv *env) {
15608
0
    if (janet_gc_reachable(env))
15609
0
        return;
15610
0
    janet_gc_mark(env);
15611
    /* If closure env references a dead fiber, we can just copy out the stack frame we need so
15612
     * we don't need to keep around the whole dead fiber. */
15613
0
    janet_env_maybe_detach(env);
15614
0
    if (env->offset > 0) {
15615
        /* On stack */
15616
0
        janet_mark_fiber(env->as.fiber);
15617
0
    } else {
15618
        /* Not on stack */
15619
0
        janet_mark_many(env->as.values, env->length);
15620
0
    }
15621
0
}
15622
15623
/* GC helper to mark a FuncDef */
15624
0
static void janet_mark_funcdef(JanetFuncDef *def) {
15625
0
    int32_t i;
15626
0
    if (janet_gc_reachable(def))
15627
0
        return;
15628
0
    janet_gc_mark(def);
15629
0
    janet_mark_many(def->constants, def->constants_length);
15630
0
    for (i = 0; i < def->defs_length; ++i) {
15631
0
        janet_mark_funcdef(def->defs[i]);
15632
0
    }
15633
0
    if (def->source)
15634
0
        janet_mark_string(def->source);
15635
0
    if (def->name)
15636
0
        janet_mark_string(def->name);
15637
0
    if (def->symbolmap) {
15638
0
        for (int i = 0; i < def->symbolmap_length; i++) {
15639
0
            janet_mark_string(def->symbolmap[i].symbol);
15640
0
        }
15641
0
    }
15642
15643
0
}
15644
15645
0
static void janet_mark_function(JanetFunction *func) {
15646
0
    int32_t i;
15647
0
    int32_t numenvs;
15648
0
    if (janet_gc_reachable(func))
15649
0
        return;
15650
0
    janet_gc_mark(func);
15651
0
    if (NULL != func->def) {
15652
        /* this should always be true, except if function is only partially constructed */
15653
0
        numenvs = func->def->environments_length;
15654
0
        for (i = 0; i < numenvs; ++i) {
15655
0
            janet_mark_funcenv(func->envs[i]);
15656
0
        }
15657
0
        janet_mark_funcdef(func->def);
15658
0
    }
15659
0
}
15660
15661
0
static void janet_mark_fiber(JanetFiber *fiber) {
15662
0
    int32_t i, j;
15663
0
    JanetStackFrame *frame;
15664
0
recur:
15665
0
    if (janet_gc_reachable(fiber))
15666
0
        return;
15667
0
    janet_gc_mark(fiber);
15668
15669
0
    janet_mark(fiber->last_value);
15670
15671
    /* Mark values on the argument stack */
15672
0
    janet_mark_many(fiber->data + fiber->stackstart,
15673
0
                    fiber->stacktop - fiber->stackstart);
15674
15675
0
    i = fiber->frame;
15676
0
    j = fiber->stackstart - JANET_FRAME_SIZE;
15677
0
    while (i > 0) {
15678
0
        frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
15679
0
        if (NULL != frame->func)
15680
0
            janet_mark_function(frame->func);
15681
0
        if (NULL != frame->env)
15682
0
            janet_mark_funcenv(frame->env);
15683
        /* Mark all values in the stack frame */
15684
0
        janet_mark_many(fiber->data + i, j - i);
15685
0
        j = i - JANET_FRAME_SIZE;
15686
0
        i = frame->prevframe;
15687
0
    }
15688
15689
0
    if (fiber->env)
15690
0
        janet_mark_table(fiber->env);
15691
15692
0
#ifdef JANET_EV
15693
0
    if (fiber->supervisor_channel) {
15694
0
        janet_mark_abstract(fiber->supervisor_channel);
15695
0
    }
15696
0
    if (fiber->ev_stream) {
15697
0
        janet_mark_abstract(fiber->ev_stream);
15698
0
    }
15699
0
    if (fiber->ev_callback) {
15700
0
        fiber->ev_callback(fiber, JANET_ASYNC_EVENT_MARK);
15701
0
    }
15702
0
#endif
15703
15704
    /* Explicit tail recursion */
15705
0
    if (fiber->child) {
15706
0
        fiber = fiber->child;
15707
0
        goto recur;
15708
0
    }
15709
0
}
15710
15711
/* Deinitialize a block of memory */
15712
7.04M
static void janet_deinit_block(JanetGCObject *mem) {
15713
7.04M
    switch (mem->flags & JANET_MEM_TYPEBITS) {
15714
5.59M
        default:
15715
5.59M
        case JANET_MEMORY_FUNCTION:
15716
5.59M
            break; /* Do nothing for non gc types */
15717
19.9k
        case JANET_MEMORY_SYMBOL:
15718
19.9k
            janet_symbol_deinit(((JanetStringHead *) mem)->data);
15719
19.9k
            break;
15720
3.20k
        case JANET_MEMORY_ARRAY:
15721
3.20k
        case JANET_MEMORY_ARRAY_WEAK:
15722
3.20k
            janet_free(((JanetArray *) mem)->data);
15723
3.20k
            break;
15724
65.6k
        case JANET_MEMORY_TABLE:
15725
65.6k
        case JANET_MEMORY_TABLE_WEAKK:
15726
65.6k
        case JANET_MEMORY_TABLE_WEAKV:
15727
65.6k
        case JANET_MEMORY_TABLE_WEAKKV:
15728
65.6k
            janet_free(((JanetTable *) mem)->data);
15729
65.6k
            break;
15730
0
        case JANET_MEMORY_FIBER: {
15731
0
            JanetFiber *f = (JanetFiber *)mem;
15732
0
#ifdef JANET_EV
15733
0
            if (f->ev_state && !(f->flags & JANET_FIBER_EV_FLAG_IN_FLIGHT)) {
15734
0
                janet_ev_dec_refcount();
15735
0
                janet_free(f->ev_state);
15736
0
            }
15737
0
#endif
15738
0
            janet_free(f->data);
15739
0
        }
15740
0
        break;
15741
1.31M
        case JANET_MEMORY_BUFFER:
15742
1.31M
            janet_buffer_deinit((JanetBuffer *) mem);
15743
1.31M
            break;
15744
40.3k
        case JANET_MEMORY_ABSTRACT: {
15745
40.3k
            JanetAbstractHead *head = (JanetAbstractHead *)mem;
15746
40.3k
            if (head->type->gc) {
15747
0
                janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
15748
0
            }
15749
40.3k
        }
15750
40.3k
        break;
15751
40.3k
        case JANET_MEMORY_FUNCENV: {
15752
0
            JanetFuncEnv *env = (JanetFuncEnv *)mem;
15753
0
            if (0 == env->offset)
15754
0
                janet_free(env->as.values);
15755
0
        }
15756
0
        break;
15757
0
        case JANET_MEMORY_FUNCDEF: {
15758
0
            JanetFuncDef *def = (JanetFuncDef *)mem;
15759
            /* TODO - get this all with one alloc and one free */
15760
0
            janet_free(def->defs);
15761
0
            janet_free(def->environments);
15762
0
            janet_free(def->constants);
15763
0
            janet_free(def->bytecode);
15764
0
            janet_free(def->sourcemap);
15765
0
            janet_free(def->closure_bitset);
15766
0
            janet_free(def->symbolmap);
15767
0
        }
15768
0
        break;
15769
7.04M
    }
15770
7.04M
}
15771
15772
/* Check that a value x has been visited in the mark phase */
15773
0
static int janet_check_liveref(Janet x) {
15774
0
    switch (janet_type(x)) {
15775
0
        default:
15776
0
            return 1;
15777
0
        case JANET_ARRAY:
15778
0
        case JANET_TABLE:
15779
0
        case JANET_FUNCTION:
15780
0
        case JANET_BUFFER:
15781
0
        case JANET_FIBER:
15782
0
            return janet_gc_reachable(janet_unwrap_pointer(x));
15783
0
        case JANET_STRING:
15784
0
        case JANET_SYMBOL:
15785
0
        case JANET_KEYWORD:
15786
0
            return janet_gc_reachable(janet_string_head(janet_unwrap_string(x)));
15787
0
        case JANET_ABSTRACT:
15788
0
            return janet_gc_reachable(janet_abstract_head(janet_unwrap_abstract(x)));
15789
0
        case JANET_TUPLE:
15790
0
            return janet_gc_reachable(janet_tuple_head(janet_unwrap_tuple(x)));
15791
0
        case JANET_STRUCT:
15792
0
            return janet_gc_reachable(janet_struct_head(janet_unwrap_struct(x)));
15793
0
    }
15794
0
}
15795
15796
/* Iterate over all allocated memory, and free memory that is not
15797
 * marked as reachable. Flip the gc color flag for next sweep. */
15798
0
void janet_sweep() {
15799
0
    JanetGCObject *previous = NULL;
15800
0
    JanetGCObject *current = janet_vm.weak_blocks;
15801
0
    JanetGCObject *next;
15802
15803
    /* Sweep weak heap to drop weak refs */
15804
0
    while (NULL != current) {
15805
0
        next = current->data.next;
15806
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
15807
            /* Check for dead references */
15808
0
            enum JanetMemoryType type = janet_gc_type(current);
15809
0
            if (type == JANET_MEMORY_ARRAY_WEAK) {
15810
0
                JanetArray *array = (JanetArray *) current;
15811
0
                for (uint32_t i = 0; i < (uint32_t) array->count; i++) {
15812
0
                    if (!janet_check_liveref(array->data[i])) {
15813
0
                        array->data[i] = janet_wrap_nil();
15814
0
                    }
15815
0
                }
15816
0
            } else {
15817
0
                JanetTable *table = (JanetTable *) current;
15818
0
                int check_values = (type == JANET_MEMORY_TABLE_WEAKV) || (type == JANET_MEMORY_TABLE_WEAKKV);
15819
0
                int check_keys = (type == JANET_MEMORY_TABLE_WEAKK) || (type == JANET_MEMORY_TABLE_WEAKKV);
15820
0
                JanetKV *end = table->data + table->capacity;
15821
0
                JanetKV *kvs = table->data;
15822
0
                while (kvs < end) {
15823
0
                    int drop = 0;
15824
0
                    if (check_keys && !janet_check_liveref(kvs->key)) drop = 1;
15825
0
                    if (check_values && !janet_check_liveref(kvs->value)) drop = 1;
15826
0
                    if (drop) {
15827
                        /* Inlined from janet_table_remove without search */
15828
0
                        table->count--;
15829
0
                        table->deleted++;
15830
0
                        kvs->key = janet_wrap_nil();
15831
0
                        kvs->value = janet_wrap_false();
15832
0
                    }
15833
0
                    kvs++;
15834
0
                }
15835
0
            }
15836
0
        }
15837
0
        current = next;
15838
0
    }
15839
15840
    /* Sweep weak heap to free blocks */
15841
0
    previous = NULL;
15842
0
    current = janet_vm.weak_blocks;
15843
0
    while (NULL != current) {
15844
0
        next = current->data.next;
15845
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
15846
0
            previous = current;
15847
0
            current->flags &= ~JANET_MEM_REACHABLE;
15848
0
        } else {
15849
0
            janet_vm.block_count--;
15850
0
            janet_deinit_block(current);
15851
0
            if (NULL != previous) {
15852
0
                previous->data.next = next;
15853
0
            } else {
15854
0
                janet_vm.weak_blocks = next;
15855
0
            }
15856
0
            janet_free(current);
15857
0
        }
15858
0
        current = next;
15859
0
    }
15860
15861
    /* Sweep main heap to free blocks */
15862
0
    previous = NULL;
15863
0
    current = janet_vm.blocks;
15864
0
    while (NULL != current) {
15865
0
        next = current->data.next;
15866
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
15867
0
            previous = current;
15868
0
            current->flags &= ~JANET_MEM_REACHABLE;
15869
0
        } else {
15870
0
            janet_vm.block_count--;
15871
0
            janet_deinit_block(current);
15872
0
            if (NULL != previous) {
15873
0
                previous->data.next = next;
15874
0
            } else {
15875
0
                janet_vm.blocks = next;
15876
0
            }
15877
0
            janet_free(current);
15878
0
        }
15879
0
        current = next;
15880
0
    }
15881
15882
0
#ifdef JANET_EV
15883
    /* Sweep threaded abstract types for references to decrement */
15884
0
    JanetKV *items = janet_vm.threaded_abstracts.data;
15885
0
    for (int32_t i = 0; i < janet_vm.threaded_abstracts.capacity; i++) {
15886
0
        if (janet_checktype(items[i].key, JANET_ABSTRACT)) {
15887
15888
            /* If item was not visited during the mark phase, then this
15889
             * abstract type isn't present in the heap and needs its refcount
15890
             * decremented, and shouuld be removed from table. If the refcount is
15891
             * then 0, the item will be collected. This ensures that only one interpreter
15892
             * will clean up the threaded abstract. */
15893
15894
            /* If not visited... */
15895
0
            if (!janet_truthy(items[i].value)) {
15896
0
                void *abst = janet_unwrap_abstract(items[i].key);
15897
0
                if (0 == janet_abstract_decref(abst)) {
15898
                    /* Run finalizer */
15899
0
                    JanetAbstractHead *head = janet_abstract_head(abst);
15900
0
                    if (head->type->gc) {
15901
0
                        janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
15902
0
                    }
15903
                    /* Free memory */
15904
0
                    janet_free(janet_abstract_head(abst));
15905
0
                }
15906
15907
                /* Mark as tombstone in place */
15908
0
                items[i].key = janet_wrap_nil();
15909
0
                items[i].value = janet_wrap_false();
15910
0
                janet_vm.threaded_abstracts.deleted++;
15911
0
                janet_vm.threaded_abstracts.count--;
15912
0
            }
15913
15914
            /* Reset for next sweep */
15915
0
            items[i].value = janet_wrap_false();
15916
0
        }
15917
0
    }
15918
0
#endif
15919
0
}
15920
15921
/* Allocate some memory that is tracked for garbage collection */
15922
7.04M
void *janet_gcalloc(enum JanetMemoryType type, size_t size) {
15923
7.04M
    JanetGCObject *mem;
15924
15925
    /* Make sure everything is inited */
15926
7.04M
    janet_assert(NULL != janet_vm.cache, "please initialize janet before use");
15927
7.04M
    mem = janet_malloc(size);
15928
15929
    /* Check for bad malloc */
15930
7.04M
    if (NULL == mem) {
15931
0
        JANET_OUT_OF_MEMORY;
15932
0
    }
15933
15934
    /* Configure block */
15935
7.04M
    mem->flags = type;
15936
15937
    /* Prepend block to heap list */
15938
7.04M
    janet_vm.next_collection += size;
15939
7.04M
    if (type < JANET_MEMORY_TABLE_WEAKK) {
15940
        /* normal heap */
15941
7.04M
        mem->data.next = janet_vm.blocks;
15942
7.04M
        janet_vm.blocks = mem;
15943
7.04M
    } else {
15944
        /* weak heap */
15945
0
        mem->data.next = janet_vm.weak_blocks;
15946
0
        janet_vm.weak_blocks = mem;
15947
0
    }
15948
7.04M
    janet_vm.block_count++;
15949
15950
7.04M
    return (void *)mem;
15951
7.04M
}
15952
15953
0
static void free_one_scratch(JanetScratch *s) {
15954
0
    if (NULL != s->finalize) {
15955
0
        s->finalize((char *) s->mem);
15956
0
    }
15957
0
    janet_free(s);
15958
0
}
15959
15960
/* Free all allocated scratch memory */
15961
6.23k
static void janet_free_all_scratch(void) {
15962
6.23k
    for (size_t i = 0; i < janet_vm.scratch_len; i++) {
15963
0
        free_one_scratch(janet_vm.scratch_mem[i]);
15964
0
    }
15965
6.23k
    janet_vm.scratch_len = 0;
15966
6.23k
}
15967
15968
0
static JanetScratch *janet_mem2scratch(void *mem) {
15969
0
    JanetScratch *s = (JanetScratch *)mem;
15970
0
    return s - 1;
15971
0
}
15972
15973
/* Run garbage collection */
15974
0
void janet_collect(void) {
15975
0
    uint32_t i;
15976
0
    if (janet_vm.gc_suspend) return;
15977
0
    depth = JANET_RECURSION_GUARD;
15978
0
    janet_vm.gc_mark_phase = 1;
15979
    /* Try to prevent many major collections back to back.
15980
     * A full collection will take O(janet_vm.block_count) time.
15981
     * If we have a large heap, make sure our interval is not too
15982
     * small so we won't make many collections over it. This is just a
15983
     * heuristic for automatically changing the gc interval */
15984
0
    if (janet_vm.block_count * 8 > janet_vm.gc_interval) {
15985
0
        janet_vm.gc_interval = janet_vm.block_count * sizeof(JanetGCObject);
15986
0
    }
15987
0
    orig_rootcount = janet_vm.root_count;
15988
0
#ifdef JANET_EV
15989
0
    janet_ev_mark();
15990
0
#endif
15991
0
    janet_mark_fiber(janet_vm.root_fiber);
15992
0
    for (i = 0; i < orig_rootcount; i++)
15993
0
        janet_mark(janet_vm.roots[i]);
15994
0
    while (orig_rootcount < janet_vm.root_count) {
15995
0
        Janet x = janet_vm.roots[--janet_vm.root_count];
15996
0
        janet_mark(x);
15997
0
    }
15998
0
    janet_vm.gc_mark_phase = 0;
15999
0
    janet_sweep();
16000
0
    janet_vm.next_collection = 0;
16001
0
    janet_free_all_scratch();
16002
0
}
16003
16004
/* Add a root value to the GC. This prevents the GC from removing a value
16005
 * and all of its children. If gcroot is called on a value n times, unroot
16006
 * must also be called n times to remove it as a gc root. */
16007
6.23k
void janet_gcroot(Janet root) {
16008
6.23k
    size_t newcount = janet_vm.root_count + 1;
16009
6.23k
    if (newcount > janet_vm.root_capacity) {
16010
6.23k
        size_t newcap = 2 * newcount;
16011
6.23k
        janet_vm.roots = janet_realloc(janet_vm.roots, sizeof(Janet) * newcap);
16012
6.23k
        if (NULL == janet_vm.roots) {
16013
0
            JANET_OUT_OF_MEMORY;
16014
0
        }
16015
6.23k
        janet_vm.root_capacity = newcap;
16016
6.23k
    }
16017
6.23k
    janet_vm.roots[janet_vm.root_count] = root;
16018
6.23k
    janet_vm.root_count = newcount;
16019
6.23k
}
16020
16021
/* Identity equality for GC purposes */
16022
0
static int janet_gc_idequals(Janet lhs, Janet rhs) {
16023
0
    if (janet_type(lhs) != janet_type(rhs))
16024
0
        return 0;
16025
0
    switch (janet_type(lhs)) {
16026
0
        case JANET_BOOLEAN:
16027
0
        case JANET_NIL:
16028
0
        case JANET_NUMBER:
16029
            /* These values don't really matter to the gc so returning 1 all the time is fine. */
16030
0
            return 1;
16031
0
        default:
16032
0
            return janet_unwrap_pointer(lhs) == janet_unwrap_pointer(rhs);
16033
0
    }
16034
0
}
16035
16036
/* Remove a root value from the GC. This allows the gc to potentially reclaim
16037
 * a value and all its children. */
16038
0
int janet_gcunroot(Janet root) {
16039
0
    Janet *vtop = janet_vm.roots + janet_vm.root_count;
16040
    /* Search from top to bottom as access is most likely LIFO */
16041
0
    for (Janet *v = janet_vm.roots; v < vtop; v++) {
16042
0
        if (janet_gc_idequals(root, *v)) {
16043
0
            *v = janet_vm.roots[--janet_vm.root_count];
16044
0
            return 1;
16045
0
        }
16046
0
    }
16047
0
    return 0;
16048
0
}
16049
16050
/* Remove a root value from the GC. This sets the effective reference count to 0. */
16051
0
int janet_gcunrootall(Janet root) {
16052
0
    Janet *vtop = janet_vm.roots + janet_vm.root_count;
16053
0
    int ret = 0;
16054
    /* Search from top to bottom as access is most likely LIFO */
16055
0
    for (Janet *v = janet_vm.roots; v < vtop; v++) {
16056
0
        if (janet_gc_idequals(root, *v)) {
16057
0
            *v = janet_vm.roots[--janet_vm.root_count];
16058
0
            vtop--;
16059
0
            ret = 1;
16060
0
        }
16061
0
    }
16062
0
    return ret;
16063
0
}
16064
16065
/* Free all allocated memory */
16066
6.23k
void janet_clear_memory(void) {
16067
6.23k
#ifdef JANET_EV
16068
6.23k
    JanetKV *items = janet_vm.threaded_abstracts.data;
16069
12.4k
    for (int32_t i = 0; i < janet_vm.threaded_abstracts.capacity; i++) {
16070
6.23k
        if (janet_checktype(items[i].key, JANET_ABSTRACT)) {
16071
0
            void *abst = janet_unwrap_abstract(items[i].key);
16072
0
            if (0 == janet_abstract_decref(abst)) {
16073
0
                JanetAbstractHead *head = janet_abstract_head(abst);
16074
0
                if (head->type->gc) {
16075
0
                    janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
16076
0
                }
16077
0
                janet_free(janet_abstract_head(abst));
16078
0
            }
16079
0
        }
16080
6.23k
    }
16081
6.23k
#endif
16082
6.23k
    JanetGCObject *current = janet_vm.blocks;
16083
7.04M
    while (NULL != current) {
16084
7.04M
        janet_deinit_block(current);
16085
7.04M
        JanetGCObject *next = current->data.next;
16086
7.04M
        janet_free(current);
16087
7.04M
        current = next;
16088
7.04M
    }
16089
6.23k
    janet_vm.blocks = NULL;
16090
6.23k
    janet_free_all_scratch();
16091
6.23k
    janet_free(janet_vm.scratch_mem);
16092
6.23k
}
16093
16094
/* Primitives for suspending GC. */
16095
0
int janet_gclock(void) {
16096
0
    return janet_vm.gc_suspend++;
16097
0
}
16098
0
void janet_gcunlock(int handle) {
16099
0
    janet_vm.gc_suspend = handle;
16100
0
}
16101
16102
/* Scratch memory API
16103
 * Scratch memory allocations do not need to be free (but optionally can be), and will be automatically cleaned
16104
 * up in the next call to janet_collect. */
16105
16106
0
void *janet_smalloc(size_t size) {
16107
0
    JanetScratch *s = janet_malloc(sizeof(JanetScratch) + size);
16108
0
    if (NULL == s) {
16109
0
        JANET_OUT_OF_MEMORY;
16110
0
    }
16111
0
    s->finalize = NULL;
16112
0
    if (janet_vm.scratch_len == janet_vm.scratch_cap) {
16113
0
        size_t newcap = 2 * janet_vm.scratch_cap + 2;
16114
0
        JanetScratch **newmem = (JanetScratch **) janet_realloc(janet_vm.scratch_mem, newcap * sizeof(JanetScratch));
16115
0
        if (NULL == newmem) {
16116
0
            JANET_OUT_OF_MEMORY;
16117
0
        }
16118
0
        janet_vm.scratch_cap = newcap;
16119
0
        janet_vm.scratch_mem = newmem;
16120
0
    }
16121
0
    janet_vm.scratch_mem[janet_vm.scratch_len++] = s;
16122
0
    return (char *)(s->mem);
16123
0
}
16124
16125
0
void *janet_scalloc(size_t nmemb, size_t size) {
16126
0
    if (nmemb && size > SIZE_MAX / nmemb) {
16127
0
        JANET_OUT_OF_MEMORY;
16128
0
    }
16129
0
    size_t n = nmemb * size;
16130
0
    void *p = janet_smalloc(n);
16131
0
    memset(p, 0, n);
16132
0
    return p;
16133
0
}
16134
16135
0
void *janet_srealloc(void *mem, size_t size) {
16136
0
    if (NULL == mem) return janet_smalloc(size);
16137
0
    JanetScratch *s = janet_mem2scratch(mem);
16138
0
    if (janet_vm.scratch_len) {
16139
0
        for (size_t i = janet_vm.scratch_len - 1; ; i--) {
16140
0
            if (janet_vm.scratch_mem[i] == s) {
16141
0
                JanetScratch *news = janet_realloc(s, size + sizeof(JanetScratch));
16142
0
                if (NULL == news) {
16143
0
                    JANET_OUT_OF_MEMORY;
16144
0
                }
16145
0
                janet_vm.scratch_mem[i] = news;
16146
0
                return (char *)(news->mem);
16147
0
            }
16148
0
            if (i == 0) break;
16149
0
        }
16150
0
    }
16151
0
    JANET_EXIT("invalid janet_srealloc");
16152
0
}
16153
16154
0
void janet_sfinalizer(void *mem, JanetScratchFinalizer finalizer) {
16155
0
    JanetScratch *s = janet_mem2scratch(mem);
16156
0
    s->finalize = finalizer;
16157
0
}
16158
16159
0
void janet_sfree(void *mem) {
16160
0
    if (NULL == mem) return;
16161
0
    JanetScratch *s = janet_mem2scratch(mem);
16162
0
    if (janet_vm.scratch_len) {
16163
0
        for (size_t i = janet_vm.scratch_len - 1; ; i--) {
16164
0
            if (janet_vm.scratch_mem[i] == s) {
16165
0
                janet_vm.scratch_mem[i] = janet_vm.scratch_mem[--janet_vm.scratch_len];
16166
0
                free_one_scratch(s);
16167
0
                return;
16168
0
            }
16169
0
            if (i == 0) break;
16170
0
        }
16171
0
    }
16172
0
    JANET_EXIT("invalid janet_sfree");
16173
0
}
16174
16175
16176
/* src/core/inttypes.c */
16177
#line 0 "src/core/inttypes.c"
16178
16179
/*
16180
* Copyright (c) 2025 Calvin Rose & contributors
16181
*
16182
* Permission is hereby granted, free of charge, to any person obtaining a copy
16183
* of this software and associated documentation files (the "Software"), to
16184
* deal in the Software without restriction, including without limitation the
16185
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16186
* sell copies of the Software, and to permit persons to whom the Software is
16187
* furnished to do so, subject to the following conditions:
16188
*
16189
* The above copyright notice and this permission notice shall be included in
16190
* all copies or substantial portions of the Software.
16191
*
16192
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16193
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16194
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16195
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16196
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
16197
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
16198
* IN THE SOFTWARE.
16199
*/
16200
16201
#ifndef JANET_AMALG
16202
#include "features.h"
16203
#include <janet.h>
16204
#include "util.h"
16205
#endif
16206
16207
#include <errno.h>
16208
#include <stdlib.h>
16209
#include <limits.h>
16210
#include <inttypes.h>
16211
#include <math.h>
16212
16213
/* Conditional compilation */
16214
#ifdef JANET_INT_TYPES
16215
16216
#define MAX_INT_IN_DBL 9007199254740992ULL /* 2^53 */
16217
16218
static int it_s64_get(void *p, Janet key, Janet *out);
16219
static int it_u64_get(void *p, Janet key, Janet *out);
16220
static Janet janet_int64_next(void *p, Janet key);
16221
static Janet janet_uint64_next(void *p, Janet key);
16222
16223
16.2k
static int32_t janet_int64_hash(void *p1, size_t size) {
16224
16.2k
    (void) size;
16225
16.2k
    int32_t *words = p1;
16226
16.2k
    return words[0] ^ words[1];
16227
16.2k
}
16228
16229
8.27k
static int janet_int64_compare(void *p1, void *p2) {
16230
8.27k
    int64_t x = *((int64_t *)p1);
16231
8.27k
    int64_t y = *((int64_t *)p2);
16232
8.27k
    return x == y ? 0 : x < y ? -1 : 1;
16233
8.27k
}
16234
16235
888
static int janet_uint64_compare(void *p1, void *p2) {
16236
888
    uint64_t x = *((uint64_t *)p1);
16237
888
    uint64_t y = *((uint64_t *)p2);
16238
888
    return x == y ? 0 : x < y ? -1 : 1;
16239
888
}
16240
16241
0
static void int64_marshal(void *p, JanetMarshalContext *ctx) {
16242
0
    janet_marshal_abstract(ctx, p);
16243
0
    janet_marshal_int64(ctx, *((int64_t *)p));
16244
0
}
16245
16246
0
static void *int64_unmarshal(JanetMarshalContext *ctx) {
16247
0
    int64_t *p = janet_unmarshal_abstract(ctx, sizeof(int64_t));
16248
0
    p[0] = janet_unmarshal_int64(ctx);
16249
0
    return p;
16250
0
}
16251
16252
0
static void it_s64_tostring(void *p, JanetBuffer *buffer) {
16253
0
    char str[32];
16254
0
    snprintf(str, sizeof(str), "%" PRId64, *((int64_t *)p));
16255
0
    janet_buffer_push_cstring(buffer, str);
16256
0
}
16257
16258
0
static void it_u64_tostring(void *p, JanetBuffer *buffer) {
16259
0
    char str[32];
16260
0
    snprintf(str, sizeof(str), "%" PRIu64, *((uint64_t *)p));
16261
0
    janet_buffer_push_cstring(buffer, str);
16262
0
}
16263
16264
const JanetAbstractType janet_s64_type = {
16265
    "core/s64",
16266
    NULL,
16267
    NULL,
16268
    it_s64_get,
16269
    NULL,
16270
    int64_marshal,
16271
    int64_unmarshal,
16272
    it_s64_tostring,
16273
    janet_int64_compare,
16274
    janet_int64_hash,
16275
    janet_int64_next,
16276
    JANET_ATEND_NEXT
16277
};
16278
16279
const JanetAbstractType janet_u64_type = {
16280
    "core/u64",
16281
    NULL,
16282
    NULL,
16283
    it_u64_get,
16284
    NULL,
16285
    int64_marshal,
16286
    int64_unmarshal,
16287
    it_u64_tostring,
16288
    janet_uint64_compare,
16289
    janet_int64_hash,
16290
    janet_uint64_next,
16291
    JANET_ATEND_NEXT
16292
};
16293
16294
0
int64_t janet_unwrap_s64(Janet x) {
16295
0
    switch (janet_type(x)) {
16296
0
        default:
16297
0
            break;
16298
0
        case JANET_NUMBER : {
16299
0
            double d = janet_unwrap_number(x);
16300
0
            if (!janet_checkint64range(d)) break;
16301
0
            return (int64_t) d;
16302
0
        }
16303
0
        case JANET_STRING: {
16304
0
            int64_t value;
16305
0
            const uint8_t *str = janet_unwrap_string(x);
16306
0
            if (janet_scan_int64(str, janet_string_length(str), &value))
16307
0
                return value;
16308
0
            break;
16309
0
        }
16310
0
        case JANET_ABSTRACT: {
16311
0
            void *abst = janet_unwrap_abstract(x);
16312
0
            if (janet_abstract_type(abst) == &janet_s64_type ||
16313
0
                    (janet_abstract_type(abst) == &janet_u64_type))
16314
0
                return *(int64_t *)abst;
16315
0
            break;
16316
0
        }
16317
0
    }
16318
0
    janet_panicf("can not convert %t %q to 64 bit signed integer", x, x);
16319
0
    return 0;
16320
0
}
16321
16322
0
uint64_t janet_unwrap_u64(Janet x) {
16323
0
    switch (janet_type(x)) {
16324
0
        default:
16325
0
            break;
16326
0
        case JANET_NUMBER : {
16327
0
            double d = janet_unwrap_number(x);
16328
0
            if (!janet_checkuint64range(d)) break;
16329
0
            return (uint64_t) d;
16330
0
        }
16331
0
        case JANET_STRING: {
16332
0
            uint64_t value;
16333
0
            const uint8_t *str = janet_unwrap_string(x);
16334
0
            if (janet_scan_uint64(str, janet_string_length(str), &value))
16335
0
                return value;
16336
0
            break;
16337
0
        }
16338
0
        case JANET_ABSTRACT: {
16339
0
            void *abst = janet_unwrap_abstract(x);
16340
0
            if (janet_abstract_type(abst) == &janet_s64_type ||
16341
0
                    (janet_abstract_type(abst) == &janet_u64_type))
16342
0
                return *(uint64_t *)abst;
16343
0
            break;
16344
0
        }
16345
0
    }
16346
0
    janet_panicf("can not convert %t %q to a 64 bit unsigned integer", x, x);
16347
0
    return 0;
16348
0
}
16349
16350
0
JanetIntType janet_is_int(Janet x) {
16351
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return JANET_INT_NONE;
16352
0
    const JanetAbstractType *at = janet_abstract_type(janet_unwrap_abstract(x));
16353
0
    return (at == &janet_s64_type) ? JANET_INT_S64 :
16354
0
           ((at == &janet_u64_type) ? JANET_INT_U64 :
16355
0
            JANET_INT_NONE);
16356
0
}
16357
16358
33.3k
Janet janet_wrap_s64(int64_t x) {
16359
33.3k
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16360
33.3k
    *box = (int64_t)x;
16361
33.3k
    return janet_wrap_abstract(box);
16362
33.3k
}
16363
16364
6.98k
Janet janet_wrap_u64(uint64_t x) {
16365
6.98k
    uint64_t *box = janet_abstract(&janet_u64_type, sizeof(uint64_t));
16366
6.98k
    *box = (uint64_t)x;
16367
6.98k
    return janet_wrap_abstract(box);
16368
6.98k
}
16369
16370
JANET_CORE_FN(cfun_it_s64_new,
16371
              "(int/s64 value)",
16372
0
              "Create a boxed signed 64 bit integer from a string value or a number.") {
16373
0
    janet_fixarity(argc, 1);
16374
0
    return janet_wrap_s64(janet_unwrap_s64(argv[0]));
16375
0
}
16376
16377
JANET_CORE_FN(cfun_it_u64_new,
16378
              "(int/u64 value)",
16379
0
              "Create a boxed unsigned 64 bit integer from a string value or a number.") {
16380
0
    janet_fixarity(argc, 1);
16381
0
    return janet_wrap_u64(janet_unwrap_u64(argv[0]));
16382
0
}
16383
16384
JANET_CORE_FN(cfun_to_number,
16385
              "(int/to-number value)",
16386
0
              "Convert an int/u64 or int/s64 to a number. Fails if the number is out of range for an int64.") {
16387
0
    janet_fixarity(argc, 1);
16388
0
    if (janet_type(argv[0]) == JANET_ABSTRACT) {
16389
0
        void *abst = janet_unwrap_abstract(argv[0]);
16390
16391
0
        if (janet_abstract_type(abst) == &janet_s64_type) {
16392
0
            int64_t value = *((int64_t *)abst);
16393
0
            if (value > JANET_INTMAX_INT64) {
16394
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
16395
0
            }
16396
0
            if (value < -JANET_INTMAX_INT64) {
16397
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
16398
0
            }
16399
0
            return janet_wrap_number((double)value);
16400
0
        }
16401
16402
0
        if (janet_abstract_type(abst) == &janet_u64_type) {
16403
0
            uint64_t value = *((uint64_t *)abst);
16404
0
            if (value > JANET_INTMAX_INT64) {
16405
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
16406
0
            }
16407
16408
0
            return janet_wrap_number((double)value);
16409
0
        }
16410
0
    }
16411
16412
0
    janet_panicf("expected int/u64 or int/s64, got %q", argv[0]);
16413
0
}
16414
16415
JANET_CORE_FN(cfun_to_bytes,
16416
              "(int/to-bytes value &opt endianness buffer)",
16417
              "Write the bytes of an `int/s64` or `int/u64` into a buffer.\n"
16418
              "The `buffer` parameter specifies an existing buffer to write to, if unset a new buffer will be created.\n"
16419
              "Returns the modified buffer.\n"
16420
              "The `endianness` parameter indicates the byte order:\n"
16421
              "- `nil` (unset): system byte order\n"
16422
              "- `:le`: little-endian, least significant byte first\n"
16423
0
              "- `:be`: big-endian, most significant byte first\n") {
16424
0
    janet_arity(argc, 1, 3);
16425
0
    if (janet_is_int(argv[0]) == JANET_INT_NONE) {
16426
0
        janet_panicf("int/to-bytes: expected an int/s64 or int/u64, got %q", argv[0]);
16427
0
    }
16428
16429
0
    int reverse = 0;
16430
0
    if (argc > 1 && !janet_checktype(argv[1], JANET_NIL)) {
16431
0
        JanetKeyword endianness_kw = janet_getkeyword(argv, 1);
16432
0
        if (!janet_cstrcmp(endianness_kw, "le")) {
16433
#if JANET_BIG_ENDIAN
16434
            reverse = 1;
16435
#endif
16436
0
        } else if (!janet_cstrcmp(endianness_kw, "be")) {
16437
0
#if JANET_LITTLE_ENDIAN
16438
0
            reverse = 1;
16439
0
#endif
16440
0
        } else {
16441
0
            janet_panicf("int/to-bytes: expected endianness :le, :be or nil, got %v", argv[1]);
16442
0
        }
16443
0
    }
16444
16445
0
    JanetBuffer *buffer = NULL;
16446
0
    if (argc > 2 && !janet_checktype(argv[2], JANET_NIL)) {
16447
0
        if (!janet_checktype(argv[2], JANET_BUFFER)) {
16448
0
            janet_panicf("int/to-bytes: expected buffer or nil, got %q", argv[2]);
16449
0
        }
16450
16451
0
        buffer = janet_unwrap_buffer(argv[2]);
16452
0
        janet_buffer_extra(buffer, 8);
16453
0
    } else {
16454
0
        buffer = janet_buffer(8);
16455
0
    }
16456
16457
0
    uint8_t *bytes = janet_unwrap_abstract(argv[0]);
16458
0
    if (reverse) {
16459
0
        for (int i = 0; i < 8; ++i) {
16460
0
            buffer->data[buffer->count + 7 - i] = bytes[i];
16461
0
        }
16462
0
    } else {
16463
0
        memcpy(buffer->data + buffer->count, bytes, 8);
16464
0
    }
16465
0
    buffer->count += 8;
16466
16467
0
    return janet_wrap_buffer(buffer);
16468
0
}
16469
16470
/*
16471
 * Code to support polymorphic comparison.
16472
 * int/u64 and int/s64 support a "compare" method that allows
16473
 * comparison to each other, and to Janet numbers, using the
16474
 * "compare" "compare<" ... functions.
16475
 * In the following code explicit casts are sometimes used to help
16476
 * make it clear when int/float conversions are happening.
16477
 */
16478
0
static int compare_double_double(double x, double y) {
16479
0
    return (x < y) ? -1 : ((x > y) ? 1 : 0);
16480
0
}
16481
16482
0
static int compare_int64_double(int64_t x, double y) {
16483
0
    if (isnan(y)) {
16484
0
        return 0;
16485
0
    } else if ((y > JANET_INTMIN_DOUBLE) && (y < JANET_INTMAX_DOUBLE)) {
16486
0
        double dx = (double) x;
16487
0
        return compare_double_double(dx, y);
16488
0
    } else if (y > ((double) INT64_MAX)) {
16489
0
        return -1;
16490
0
    } else if (y < ((double) INT64_MIN)) {
16491
0
        return 1;
16492
0
    } else {
16493
0
        int64_t yi = (int64_t) y;
16494
0
        return (x < yi) ? -1 : ((x > yi) ? 1 : 0);
16495
0
    }
16496
0
}
16497
16498
0
static int compare_uint64_double(uint64_t x, double y) {
16499
0
    if (isnan(y)) {
16500
0
        return 0;
16501
0
    } else if (y < 0) {
16502
0
        return 1;
16503
0
    } else if ((y >= 0) && (y < JANET_INTMAX_DOUBLE)) {
16504
0
        double dx = (double) x;
16505
0
        return compare_double_double(dx, y);
16506
0
    } else if (y > ((double) UINT64_MAX)) {
16507
0
        return -1;
16508
0
    } else {
16509
0
        uint64_t yi = (uint64_t) y;
16510
0
        return (x < yi) ? -1 : ((x > yi) ? 1 : 0);
16511
0
    }
16512
0
}
16513
16514
0
static Janet cfun_it_s64_compare(int32_t argc, Janet *argv) {
16515
0
    janet_fixarity(argc, 2);
16516
0
    if (janet_is_int(argv[0]) != JANET_INT_S64) {
16517
0
        janet_panic("compare method requires int/s64 as first argument");
16518
0
    }
16519
0
    int64_t x = janet_unwrap_s64(argv[0]);
16520
0
    switch (janet_type(argv[1])) {
16521
0
        default:
16522
0
            break;
16523
0
        case JANET_NUMBER : {
16524
0
            double y = janet_unwrap_number(argv[1]);
16525
0
            return janet_wrap_number(compare_int64_double(x, y));
16526
0
        }
16527
0
        case JANET_ABSTRACT: {
16528
0
            void *abst = janet_unwrap_abstract(argv[1]);
16529
0
            if (janet_abstract_type(abst) == &janet_s64_type) {
16530
0
                int64_t y = *(int64_t *)abst;
16531
0
                return janet_wrap_number((x < y) ? -1 : (x > y ? 1 : 0));
16532
0
            } else if (janet_abstract_type(abst) == &janet_u64_type) {
16533
0
                uint64_t y = *(uint64_t *)abst;
16534
0
                if (x < 0) {
16535
0
                    return janet_wrap_number(-1);
16536
0
                } else if (y > INT64_MAX) {
16537
0
                    return janet_wrap_number(-1);
16538
0
                } else {
16539
0
                    int64_t y2 = (int64_t) y;
16540
0
                    return janet_wrap_number((x < y2) ? -1 : (x > y2 ? 1 : 0));
16541
0
                }
16542
0
            }
16543
0
            break;
16544
0
        }
16545
0
    }
16546
0
    return janet_wrap_nil();
16547
0
}
16548
16549
0
static Janet cfun_it_u64_compare(int32_t argc, Janet *argv) {
16550
0
    janet_fixarity(argc, 2);
16551
0
    if (janet_is_int(argv[0]) != JANET_INT_U64) {
16552
0
        janet_panic("compare method requires int/u64 as first argument");
16553
0
    }
16554
0
    uint64_t x = janet_unwrap_u64(argv[0]);
16555
0
    switch (janet_type(argv[1])) {
16556
0
        default:
16557
0
            break;
16558
0
        case JANET_NUMBER : {
16559
0
            double y = janet_unwrap_number(argv[1]);
16560
0
            return janet_wrap_number(compare_uint64_double(x, y));
16561
0
        }
16562
0
        case JANET_ABSTRACT: {
16563
0
            void *abst = janet_unwrap_abstract(argv[1]);
16564
0
            if (janet_abstract_type(abst) == &janet_u64_type) {
16565
0
                uint64_t y = *(uint64_t *)abst;
16566
0
                return janet_wrap_number((x < y) ? -1 : (x > y ? 1 : 0));
16567
0
            } else if (janet_abstract_type(abst) == &janet_s64_type) {
16568
0
                int64_t y = *(int64_t *)abst;
16569
0
                if (y < 0) {
16570
0
                    return janet_wrap_number(1);
16571
0
                } else if (x > INT64_MAX) {
16572
0
                    return janet_wrap_number(1);
16573
0
                } else {
16574
0
                    int64_t x2 = (int64_t) x;
16575
0
                    return janet_wrap_number((x2 < y) ? -1 : (x2 > y ? 1 : 0));
16576
0
                }
16577
0
            }
16578
0
            break;
16579
0
        }
16580
0
    }
16581
0
    return janet_wrap_nil();
16582
0
}
16583
16584
/*
16585
 * In C, signed arithmetic overflow is undefined behvior
16586
 * but unsigned arithmetic overflow is twos complement
16587
 *
16588
 * Reference:
16589
 * https://en.cppreference.com/w/cpp/language/ub
16590
 * http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
16591
 *
16592
 * This means OPMETHOD & OPMETHODINVERT must always use
16593
 * unsigned arithmetic internally, regardless of the true type.
16594
 * This will not affect the end result (property of twos complement).
16595
 */
16596
#define OPMETHOD(T, type, name, oper) \
16597
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16598
0
    janet_arity(argc, 2, -1); \
16599
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16600
0
    *box = janet_unwrap_##type(argv[0]); \
16601
0
    for (int32_t i = 1; i < argc; i++) \
16602
0
        /* This avoids undefined behavior. See above for why. */ \
16603
0
        *box = (T) ((uint64_t) (*box)) oper ((uint64_t) janet_unwrap_##type(argv[i])); \
16604
0
    return janet_wrap_abstract(box); \
16605
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_add
Unexecuted instantiation: janet.c:cfun_it_s64_sub
Unexecuted instantiation: janet.c:cfun_it_s64_mul
Unexecuted instantiation: janet.c:cfun_it_s64_and
Unexecuted instantiation: janet.c:cfun_it_s64_or
Unexecuted instantiation: janet.c:cfun_it_s64_xor
Unexecuted instantiation: janet.c:cfun_it_s64_lshift
Unexecuted instantiation: janet.c:cfun_it_s64_rshift
Unexecuted instantiation: janet.c:cfun_it_u64_add
Unexecuted instantiation: janet.c:cfun_it_u64_sub
Unexecuted instantiation: janet.c:cfun_it_u64_mul
Unexecuted instantiation: janet.c:cfun_it_u64_and
Unexecuted instantiation: janet.c:cfun_it_u64_or
Unexecuted instantiation: janet.c:cfun_it_u64_xor
Unexecuted instantiation: janet.c:cfun_it_u64_lshift
Unexecuted instantiation: janet.c:cfun_it_u64_rshift
16606
16607
#define OPMETHODINVERT(T, type, name, oper) \
16608
0
static Janet cfun_it_##type##_##name##i(int32_t argc, Janet *argv) { \
16609
0
    janet_fixarity(argc, 2); \
16610
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16611
0
    *box = janet_unwrap_##type(argv[1]); \
16612
0
    /* This avoids undefined behavior. See above for why. */ \
16613
0
    *box = (T) ((uint64_t) *box) oper ((uint64_t) janet_unwrap_##type(argv[0])); \
16614
0
    return janet_wrap_abstract(box); \
16615
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_subi
Unexecuted instantiation: janet.c:cfun_it_u64_subi
16616
16617
#define UNARYMETHOD(T, type, name, oper) \
16618
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16619
0
    janet_fixarity(argc, 1); \
16620
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16621
0
    *box = oper(janet_unwrap_##type(argv[0])); \
16622
0
    return janet_wrap_abstract(box); \
16623
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_not
Unexecuted instantiation: janet.c:cfun_it_u64_not
16624
16625
0
#define DIVZERO(name) DIVZERO_##name
16626
0
#define DIVZERO_div janet_panic("division by zero")
16627
0
#define DIVZERO_rem janet_panic("division by zero")
16628
0
#define DIVZERO_mod return janet_wrap_abstract(box)
16629
16630
#define DIVMETHOD(T, type, name, oper) \
16631
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16632
0
    janet_arity(argc, 2, -1);                       \
16633
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16634
0
    *box = janet_unwrap_##type(argv[0]); \
16635
0
    for (int32_t i = 1; i < argc; i++) { \
16636
0
      T value = janet_unwrap_##type(argv[i]); \
16637
0
      if (value == 0) DIVZERO(name); \
16638
0
      *box oper##= value; \
16639
0
    } \
16640
0
    return janet_wrap_abstract(box); \
16641
0
} \
Unexecuted instantiation: janet.c:cfun_it_u64_div
Unexecuted instantiation: janet.c:cfun_it_u64_mod
Unexecuted instantiation: janet.c:cfun_it_u64_rem
16642
16643
#define DIVMETHODINVERT(T, type, name, oper) \
16644
0
static Janet cfun_it_##type##_##name##i(int32_t argc, Janet *argv) { \
16645
0
    janet_fixarity(argc, 2);                       \
16646
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16647
0
    *box = janet_unwrap_##type(argv[1]); \
16648
0
    T value = janet_unwrap_##type(argv[0]); \
16649
0
    if (value == 0) DIVZERO(name); \
16650
0
    *box oper##= value; \
16651
0
    return janet_wrap_abstract(box); \
16652
0
} \
Unexecuted instantiation: janet.c:cfun_it_u64_divi
Unexecuted instantiation: janet.c:cfun_it_u64_modi
Unexecuted instantiation: janet.c:cfun_it_u64_remi
16653
16654
#define DIVMETHOD_SIGNED(T, type, name, oper) \
16655
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16656
0
    janet_arity(argc, 2, -1);                       \
16657
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16658
0
    *box = janet_unwrap_##type(argv[0]); \
16659
0
    for (int32_t i = 1; i < argc; i++) { \
16660
0
      T value = janet_unwrap_##type(argv[i]); \
16661
0
      if (value == 0) DIVZERO(name); \
16662
0
      if ((value == -1) && (*box == INT64_MIN)) janet_panic("INT64_MIN divided by -1"); \
16663
0
      *box oper##= value; \
16664
0
    } \
16665
0
    return janet_wrap_abstract(box); \
16666
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_div
Unexecuted instantiation: janet.c:cfun_it_s64_rem
16667
16668
#define DIVMETHODINVERT_SIGNED(T, type, name, oper) \
16669
0
static Janet cfun_it_##type##_##name##i(int32_t argc, Janet *argv) { \
16670
0
    janet_fixarity(argc, 2);                       \
16671
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16672
0
    *box = janet_unwrap_##type(argv[1]); \
16673
0
    T value = janet_unwrap_##type(argv[0]); \
16674
0
    if (value == 0) DIVZERO(name); \
16675
0
    if ((value == -1) && (*box == INT64_MIN)) janet_panic("INT64_MIN divided by -1"); \
16676
0
    *box oper##= value; \
16677
0
    return janet_wrap_abstract(box); \
16678
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_divi
Unexecuted instantiation: janet.c:cfun_it_s64_remi
16679
16680
0
static Janet cfun_it_s64_divf(int32_t argc, Janet *argv) {
16681
0
    janet_fixarity(argc, 2);
16682
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16683
0
    int64_t op1 = janet_unwrap_s64(argv[0]);
16684
0
    int64_t op2 = janet_unwrap_s64(argv[1]);
16685
0
    if (op2 == 0) janet_panic("division by zero");
16686
0
    int64_t x = op1 / op2;
16687
0
    *box = x - (((op1 ^ op2) < 0) && (x * op2 != op1));
16688
0
    return janet_wrap_abstract(box);
16689
0
}
16690
16691
0
static Janet cfun_it_s64_divfi(int32_t argc, Janet *argv) {
16692
0
    janet_fixarity(argc, 2);
16693
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16694
0
    int64_t op2 = janet_unwrap_s64(argv[0]);
16695
0
    int64_t op1 = janet_unwrap_s64(argv[1]);
16696
0
    if (op2 == 0) janet_panic("division by zero");
16697
0
    int64_t x = op1 / op2;
16698
0
    *box = x - (((op1 ^ op2) < 0) && (x * op2 != op1));
16699
0
    return janet_wrap_abstract(box);
16700
0
}
16701
16702
0
static Janet cfun_it_s64_mod(int32_t argc, Janet *argv) {
16703
0
    janet_fixarity(argc, 2);
16704
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16705
0
    int64_t op1 = janet_unwrap_s64(argv[0]);
16706
0
    int64_t op2 = janet_unwrap_s64(argv[1]);
16707
0
    if (op2 == 0) {
16708
0
        *box = op1;
16709
0
    } else {
16710
0
        int64_t x = op1 % op2;
16711
0
        *box = (((op1 ^ op2) < 0) && (x != 0)) ? x + op2 : x;
16712
0
    }
16713
0
    return janet_wrap_abstract(box);
16714
0
}
16715
16716
0
static Janet cfun_it_s64_modi(int32_t argc, Janet *argv) {
16717
0
    janet_fixarity(argc, 2);
16718
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16719
0
    int64_t op2 = janet_unwrap_s64(argv[0]);
16720
0
    int64_t op1 = janet_unwrap_s64(argv[1]);
16721
0
    if (op2 == 0) {
16722
0
        *box = op1;
16723
0
    } else {
16724
0
        int64_t x = op1 % op2;
16725
0
        *box = (((op1 ^ op2) < 0) && (x != 0)) ? x + op2 : x;
16726
0
    }
16727
0
    return janet_wrap_abstract(box);
16728
0
}
16729
16730
OPMETHOD(int64_t, s64, add, +)
16731
OPMETHOD(int64_t, s64, sub, -)
16732
OPMETHODINVERT(int64_t, s64, sub, -)
16733
OPMETHOD(int64_t, s64, mul, *)
16734
DIVMETHOD_SIGNED(int64_t, s64, div, /)
16735
DIVMETHOD_SIGNED(int64_t, s64, rem, %)
16736
DIVMETHODINVERT_SIGNED(int64_t, s64, div, /)
16737
DIVMETHODINVERT_SIGNED(int64_t, s64, rem, %)
16738
OPMETHOD(int64_t, s64, and, &)
16739
OPMETHOD(int64_t, s64, or, |)
16740
OPMETHOD(int64_t, s64, xor, ^)
16741
UNARYMETHOD(int64_t, s64, not, ~)
16742
OPMETHOD(int64_t, s64, lshift, <<)
16743
OPMETHOD(int64_t, s64, rshift, >>)
16744
OPMETHOD(uint64_t, u64, add, +)
16745
OPMETHOD(uint64_t, u64, sub, -)
16746
OPMETHODINVERT(uint64_t, u64, sub, -)
16747
OPMETHOD(uint64_t, u64, mul, *)
16748
DIVMETHOD(uint64_t, u64, div, /)
16749
DIVMETHOD(uint64_t, u64, rem, %)
16750
DIVMETHOD(uint64_t, u64, mod, %)
16751
DIVMETHODINVERT(uint64_t, u64, div, /)
16752
DIVMETHODINVERT(uint64_t, u64, rem, %)
16753
DIVMETHODINVERT(uint64_t, u64, mod, %)
16754
OPMETHOD(uint64_t, u64, and, &)
16755
OPMETHOD(uint64_t, u64, or, |)
16756
OPMETHOD(uint64_t, u64, xor, ^)
16757
UNARYMETHOD(uint64_t, u64, not, ~)
16758
OPMETHOD(uint64_t, u64, lshift, <<)
16759
OPMETHOD(uint64_t, u64, rshift, >>)
16760
16761
#undef OPMETHOD
16762
#undef DIVMETHOD
16763
#undef DIVMETHOD_SIGNED
16764
#undef COMPMETHOD
16765
16766
static JanetMethod it_s64_methods[] = {
16767
    {"+", cfun_it_s64_add},
16768
    {"r+", cfun_it_s64_add},
16769
    {"-", cfun_it_s64_sub},
16770
    {"r-", cfun_it_s64_subi},
16771
    {"*", cfun_it_s64_mul},
16772
    {"r*", cfun_it_s64_mul},
16773
    {"/", cfun_it_s64_div},
16774
    {"r/", cfun_it_s64_divi},
16775
    {"div", cfun_it_s64_divf},
16776
    {"rdiv", cfun_it_s64_divfi},
16777
    {"mod", cfun_it_s64_mod},
16778
    {"rmod", cfun_it_s64_modi},
16779
    {"%", cfun_it_s64_rem},
16780
    {"r%", cfun_it_s64_remi},
16781
    {"&", cfun_it_s64_and},
16782
    {"r&", cfun_it_s64_and},
16783
    {"|", cfun_it_s64_or},
16784
    {"r|", cfun_it_s64_or},
16785
    {"^", cfun_it_s64_xor},
16786
    {"r^", cfun_it_s64_xor},
16787
    {"~", cfun_it_s64_not},
16788
    {"<<", cfun_it_s64_lshift},
16789
    {">>", cfun_it_s64_rshift},
16790
    {"compare", cfun_it_s64_compare},
16791
    {NULL, NULL}
16792
};
16793
16794
static JanetMethod it_u64_methods[] = {
16795
    {"+", cfun_it_u64_add},
16796
    {"r+", cfun_it_u64_add},
16797
    {"-", cfun_it_u64_sub},
16798
    {"r-", cfun_it_u64_subi},
16799
    {"*", cfun_it_u64_mul},
16800
    {"r*", cfun_it_u64_mul},
16801
    {"/", cfun_it_u64_div},
16802
    {"r/", cfun_it_u64_divi},
16803
    {"div", cfun_it_u64_div},
16804
    {"rdiv", cfun_it_u64_divi},
16805
    {"mod", cfun_it_u64_mod},
16806
    {"rmod", cfun_it_u64_modi},
16807
    {"%", cfun_it_u64_rem},
16808
    {"r%", cfun_it_u64_remi},
16809
    {"&", cfun_it_u64_and},
16810
    {"r&", cfun_it_u64_and},
16811
    {"|", cfun_it_u64_or},
16812
    {"r|", cfun_it_u64_or},
16813
    {"^", cfun_it_u64_xor},
16814
    {"r^", cfun_it_u64_xor},
16815
    {"~", cfun_it_u64_not},
16816
    {"<<", cfun_it_u64_lshift},
16817
    {">>", cfun_it_u64_rshift},
16818
    {"compare", cfun_it_u64_compare},
16819
    {NULL, NULL}
16820
};
16821
16822
0
static Janet janet_int64_next(void *p, Janet key) {
16823
0
    (void) p;
16824
0
    return janet_nextmethod(it_s64_methods, key);
16825
0
}
16826
16827
0
static Janet janet_uint64_next(void *p, Janet key) {
16828
0
    (void) p;
16829
0
    return janet_nextmethod(it_u64_methods, key);
16830
0
}
16831
16832
0
static int it_s64_get(void *p, Janet key, Janet *out) {
16833
0
    (void) p;
16834
0
    if (!janet_checktype(key, JANET_KEYWORD))
16835
0
        return 0;
16836
0
    return janet_getmethod(janet_unwrap_keyword(key), it_s64_methods, out);
16837
0
}
16838
16839
0
static int it_u64_get(void *p, Janet key, Janet *out) {
16840
0
    (void) p;
16841
0
    if (!janet_checktype(key, JANET_KEYWORD))
16842
0
        return 0;
16843
0
    return janet_getmethod(janet_unwrap_keyword(key), it_u64_methods, out);
16844
0
}
16845
16846
/* Module entry point */
16847
0
void janet_lib_inttypes(JanetTable *env) {
16848
0
    JanetRegExt it_cfuns[] = {
16849
0
        JANET_CORE_REG("int/s64", cfun_it_s64_new),
16850
0
        JANET_CORE_REG("int/u64", cfun_it_u64_new),
16851
0
        JANET_CORE_REG("int/to-number", cfun_to_number),
16852
0
        JANET_CORE_REG("int/to-bytes", cfun_to_bytes),
16853
0
        JANET_REG_END
16854
0
    };
16855
0
    janet_core_cfuns_ext(env, NULL, it_cfuns);
16856
0
    janet_register_abstract_type(&janet_s64_type);
16857
0
    janet_register_abstract_type(&janet_u64_type);
16858
0
}
16859
16860
#endif
16861
16862
16863
/* src/core/io.c */
16864
#line 0 "src/core/io.c"
16865
16866
/*
16867
* Copyright (c) 2025 Calvin Rose
16868
*
16869
* Permission is hereby granted, free of charge, to any person obtaining a copy
16870
* of this software and associated documentation files (the "Software"), to
16871
* deal in the Software without restriction, including without limitation the
16872
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16873
* sell copies of the Software, and to permit persons to whom the Software is
16874
* furnished to do so, subject to the following conditions:
16875
*
16876
* The above copyright notice and this permission notice shall be included in
16877
* all copies or substantial portions of the Software.
16878
*
16879
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16880
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16881
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16882
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16883
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
16884
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
16885
* IN THE SOFTWARE.
16886
*/
16887
16888
#ifndef JANET_AMALG
16889
#include "features.h"
16890
#include <janet.h>
16891
#include "util.h"
16892
#endif
16893
16894
#include <stdio.h>
16895
#include <errno.h>
16896
16897
#ifndef JANET_WINDOWS
16898
#include <fcntl.h>
16899
#include <sys/stat.h>
16900
#include <sys/wait.h>
16901
#include <unistd.h>
16902
#endif
16903
16904
static int cfun_io_gc(void *p, size_t len);
16905
static int io_file_get(void *p, Janet key, Janet *out);
16906
static void io_file_marshal(void *p, JanetMarshalContext *ctx);
16907
static void *io_file_unmarshal(JanetMarshalContext *ctx);
16908
static Janet io_file_next(void *p, Janet key);
16909
16910
#ifdef JANET_WINDOWS
16911
#define ftell _ftelli64
16912
#define fseek _fseeki64
16913
#endif
16914
16915
const JanetAbstractType janet_file_type = {
16916
    "core/file",
16917
    cfun_io_gc,
16918
    NULL,
16919
    io_file_get,
16920
    NULL,
16921
    io_file_marshal,
16922
    io_file_unmarshal,
16923
    NULL, /* tostring */
16924
    NULL, /* compare */
16925
    NULL, /* hash */
16926
    io_file_next,
16927
    JANET_ATEND_NEXT
16928
};
16929
16930
/* Check arguments to fopen */
16931
0
static int32_t checkflags(const uint8_t *str) {
16932
0
    int32_t flags = 0;
16933
0
    int32_t i;
16934
0
    int32_t len = janet_string_length(str);
16935
0
    if (!len || len > 10)
16936
0
        janet_panic("file mode must have a length between 1 and 10");
16937
0
    switch (*str) {
16938
0
        default:
16939
0
            janet_panicf("invalid flag %c, expected w, a, or r", *str);
16940
0
            break;
16941
0
        case 'w':
16942
0
            flags |= JANET_FILE_WRITE;
16943
0
            janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
16944
0
            break;
16945
0
        case 'a':
16946
0
            flags |= JANET_FILE_APPEND;
16947
0
            janet_sandbox_assert(JANET_SANDBOX_FS);
16948
0
            break;
16949
0
        case 'r':
16950
0
            flags |= JANET_FILE_READ;
16951
0
            janet_sandbox_assert(JANET_SANDBOX_FS_READ);
16952
0
            break;
16953
0
    }
16954
0
    for (i = 1; i < len; i++) {
16955
0
        switch (str[i]) {
16956
0
            default:
16957
0
                janet_panicf("invalid flag %c, expected +, b, or n", str[i]);
16958
0
                break;
16959
0
            case '+':
16960
0
                if (flags & JANET_FILE_UPDATE) return -1;
16961
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
16962
0
                flags |= JANET_FILE_UPDATE;
16963
0
                break;
16964
0
            case 'b':
16965
0
                if (flags & JANET_FILE_BINARY) return -1;
16966
0
                flags |= JANET_FILE_BINARY;
16967
0
                break;
16968
0
            case 'n':
16969
0
                if (flags & JANET_FILE_NONIL) return -1;
16970
0
                flags |= JANET_FILE_NONIL;
16971
0
                break;
16972
0
        }
16973
0
    }
16974
0
    return flags;
16975
0
}
16976
16977
0
static void *makef(FILE *f, int32_t flags) {
16978
0
    JanetFile *iof = (JanetFile *) janet_abstract(&janet_file_type, sizeof(JanetFile));
16979
0
    iof->file = f;
16980
0
    iof->flags = flags;
16981
0
#ifndef JANET_WINDOWS
16982
    /* While we would like fopen to set cloexec by default (like O_CLOEXEC) with the e flag, that is
16983
     * not standard. */
16984
0
    if (!(flags & JANET_FILE_NOT_CLOSEABLE))
16985
0
        fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
16986
0
#endif
16987
0
    return iof;
16988
0
}
16989
16990
JANET_CORE_FN(cfun_io_temp,
16991
              "(file/temp)",
16992
              "Open an anonymous temporary file that is removed on close. "
16993
0
              "Raises an error on failure.") {
16994
0
    janet_sandbox_assert(JANET_SANDBOX_FS_TEMP);
16995
0
    (void)argv;
16996
0
    janet_fixarity(argc, 0);
16997
    // XXX use mkostemp when we can to avoid CLOEXEC race.
16998
0
    FILE *tmp = tmpfile();
16999
0
    if (!tmp)
17000
0
        janet_panicf("unable to create temporary file - %s", janet_strerror(errno));
17001
0
    return janet_makefile(tmp, JANET_FILE_WRITE | JANET_FILE_READ | JANET_FILE_BINARY);
17002
0
}
17003
17004
JANET_CORE_FN(cfun_io_fopen,
17005
              "(file/open path &opt mode buffer-size)",
17006
              "Open a file. `path` is an absolute or relative path, and "
17007
              "`mode` is a set of flags indicating the mode to open the file in. "
17008
              "`mode` is a keyword where each character represents a flag. If the file "
17009
              "cannot be opened, returns nil, otherwise returns the new file handle. "
17010
              "Mode flags:\n\n"
17011
              "* r - allow reading from the file\n\n"
17012
              "* w - allow writing to the file\n\n"
17013
              "* a - append to the file\n\n"
17014
              "Following one of the initial flags, 0 or more of the following flags can be appended:\n\n"
17015
              "* b - open the file in binary mode (rather than text mode)\n\n"
17016
              "* + - append to the file instead of overwriting it\n\n"
17017
              "* n - error if the file cannot be opened instead of returning nil\n\n"
17018
0
              "See fopen (<stdio.h>, C99) for further details.") {
17019
0
    janet_arity(argc, 1, 3);
17020
0
    const uint8_t *fname = janet_getstring(argv, 0);
17021
0
    const uint8_t *fmode;
17022
0
    int32_t flags;
17023
0
    if (argc == 2) {
17024
0
        fmode = janet_getkeyword(argv, 1);
17025
0
        flags = checkflags(fmode);
17026
0
    } else {
17027
0
        fmode = (const uint8_t *)"r";
17028
0
        janet_sandbox_assert(JANET_SANDBOX_FS_READ);
17029
0
        flags = JANET_FILE_READ;
17030
0
    }
17031
0
    FILE *f = fopen((const char *)fname, (const char *)fmode);
17032
0
    if (f != NULL) {
17033
0
#ifndef JANET_WINDOWS
17034
0
        struct stat st;
17035
0
        fstat(fileno(f), &st);
17036
0
        if (S_ISDIR(st.st_mode)) {
17037
0
            fclose(f);
17038
0
            janet_panicf("cannot open directory: %s", fname);
17039
0
        }
17040
0
#endif
17041
0
        size_t bufsize = janet_optsize(argv, argc, 2, BUFSIZ);
17042
0
        if (bufsize != BUFSIZ) {
17043
0
            int result = setvbuf(f, NULL, bufsize ? _IOFBF : _IONBF, bufsize);
17044
0
            if (result) {
17045
0
                janet_panic("failed to set buffer size for file");
17046
0
            }
17047
0
        }
17048
0
    }
17049
0
    return f ? janet_makefile(f, flags)
17050
0
           : (flags & JANET_FILE_NONIL) ? (janet_panicf("failed to open file %s: %s", fname, janet_strerror(errno)), janet_wrap_nil())
17051
0
           : janet_wrap_nil();
17052
0
}
17053
17054
/* Read up to n bytes into buffer. */
17055
0
static void read_chunk(JanetFile *iof, JanetBuffer *buffer, int32_t nBytesMax) {
17056
0
    if (!(iof->flags & (JANET_FILE_READ | JANET_FILE_UPDATE)))
17057
0
        janet_panic("file is not readable");
17058
0
    janet_buffer_extra(buffer, nBytesMax);
17059
0
    size_t ntoread = nBytesMax;
17060
0
    size_t nread = fread((char *)(buffer->data + buffer->count), 1, ntoread, iof->file);
17061
0
    if (nread != ntoread && ferror(iof->file))
17062
0
        janet_panic("could not read file");
17063
0
    buffer->count += (int32_t) nread;
17064
0
}
17065
17066
/* Read a certain number of bytes into memory */
17067
JANET_CORE_FN(cfun_io_fread,
17068
              "(file/read f what &opt buf)",
17069
              "Read a number of bytes from a file `f` into a buffer. A buffer `buf` can "
17070
              "be provided as an optional third argument, otherwise a new buffer "
17071
              "is created. `what` can either be an integer or a keyword. Returns the "
17072
              "buffer with file contents. "
17073
              "Values for `what`:\n\n"
17074
              "* :all - read the whole file\n\n"
17075
              "* :line - read up to and including the next newline character\n\n"
17076
0
              "* n (integer) - read up to n bytes from the file") {
17077
0
    janet_arity(argc, 2, 3);
17078
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17079
0
    if (iof->flags & JANET_FILE_CLOSED) janet_panic("file is closed");
17080
0
    JanetBuffer *buffer;
17081
0
    if (argc == 2) {
17082
0
        buffer = janet_buffer(0);
17083
0
    } else {
17084
0
        buffer = janet_getbuffer(argv, 2);
17085
0
    }
17086
0
    int32_t bufstart = buffer->count;
17087
0
    if (janet_checktype(argv[1], JANET_KEYWORD)) {
17088
0
        const uint8_t *sym = janet_unwrap_keyword(argv[1]);
17089
0
        if (!janet_cstrcmp(sym, "all")) {
17090
0
            int32_t sizeBefore;
17091
0
            do {
17092
0
                sizeBefore = buffer->count;
17093
0
                read_chunk(iof, buffer, 4096);
17094
0
            } while (sizeBefore < buffer->count);
17095
            /* Never return nil for :all */
17096
0
            return janet_wrap_buffer(buffer);
17097
0
        } else if (!janet_cstrcmp(sym, "line")) {
17098
0
            for (;;) {
17099
0
                int x = fgetc(iof->file);
17100
0
                if (x != EOF) janet_buffer_push_u8(buffer, (uint8_t)x);
17101
0
                if (x == EOF || x == '\n') break;
17102
0
            }
17103
0
        } else {
17104
0
            janet_panicf("expected one of :all, :line, got %v", argv[1]);
17105
0
        }
17106
0
    } else {
17107
0
        int32_t len = janet_getinteger(argv, 1);
17108
0
        if (len < 0) janet_panic("expected positive integer");
17109
0
        read_chunk(iof, buffer, len);
17110
0
    }
17111
0
    if (bufstart == buffer->count) return janet_wrap_nil();
17112
0
    return janet_wrap_buffer(buffer);
17113
0
}
17114
17115
/* Write bytes to a file */
17116
JANET_CORE_FN(cfun_io_fwrite,
17117
              "(file/write f bytes)",
17118
              "Writes to a file. 'bytes' must be string, buffer, or symbol. Returns the "
17119
0
              "file.") {
17120
0
    janet_arity(argc, 1, -1);
17121
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17122
0
    if (iof->flags & JANET_FILE_CLOSED)
17123
0
        janet_panic("file is closed");
17124
0
    if (!(iof->flags & (JANET_FILE_WRITE | JANET_FILE_APPEND | JANET_FILE_UPDATE)))
17125
0
        janet_panic("file is not writeable");
17126
0
    int32_t i;
17127
    /* Verify all arguments before writing to file */
17128
0
    for (i = 1; i < argc; i++)
17129
0
        janet_getbytes(argv, i);
17130
0
    for (i = 1; i < argc; i++) {
17131
0
        JanetByteView view = janet_getbytes(argv, i);
17132
0
        if (view.len) {
17133
0
            if (!fwrite(view.bytes, view.len, 1, iof->file)) {
17134
0
                janet_panic("error writing to file");
17135
0
            }
17136
0
        }
17137
0
    }
17138
0
    return argv[0];
17139
0
}
17140
17141
0
static void io_assert_writeable(JanetFile *iof) {
17142
0
    if (iof->flags & JANET_FILE_CLOSED)
17143
0
        janet_panic("file is closed");
17144
0
    if (!(iof->flags & (JANET_FILE_WRITE | JANET_FILE_APPEND | JANET_FILE_UPDATE)))
17145
0
        janet_panic("file is not writeable");
17146
0
}
17147
17148
/* Flush the bytes in the file */
17149
JANET_CORE_FN(cfun_io_fflush,
17150
              "(file/flush f)",
17151
              "Flush any buffered bytes to the file system. In most files, writes are "
17152
0
              "buffered for efficiency reasons. Returns the file handle.") {
17153
0
    janet_fixarity(argc, 1);
17154
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17155
0
    io_assert_writeable(iof);
17156
0
    if (fflush(iof->file))
17157
0
        janet_panic("could not flush file");
17158
0
    return argv[0];
17159
0
}
17160
17161
#ifdef JANET_WINDOWS
17162
#define WEXITSTATUS(x) x
17163
#endif
17164
17165
/* For closing files from C API */
17166
0
int janet_file_close(JanetFile *file) {
17167
0
    int ret = 0;
17168
0
    if (!(file->flags & (JANET_FILE_NOT_CLOSEABLE | JANET_FILE_CLOSED))) {
17169
0
        ret = fclose(file->file);
17170
0
        file->flags |= JANET_FILE_CLOSED;
17171
0
        file->file = NULL; /* NULL dereference is easier to debug then other problems */
17172
0
        return ret;
17173
0
    }
17174
0
    return 0;
17175
0
}
17176
17177
/* Cleanup a file */
17178
0
static int cfun_io_gc(void *p, size_t len) {
17179
0
    (void) len;
17180
0
    JanetFile *iof = (JanetFile *)p;
17181
0
    janet_file_close(iof);
17182
0
    return 0;
17183
0
}
17184
17185
/* Close a file */
17186
JANET_CORE_FN(cfun_io_fclose,
17187
              "(file/close f)",
17188
              "Close a file and release all related resources. When you are "
17189
              "done reading a file, close it to prevent a resource leak and let "
17190
0
              "other processes read the file.") {
17191
0
    janet_fixarity(argc, 1);
17192
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17193
0
    if (iof->flags & JANET_FILE_CLOSED)
17194
0
        return janet_wrap_nil();
17195
0
    if (iof->flags & (JANET_FILE_NOT_CLOSEABLE))
17196
0
        janet_panic("file not closable");
17197
0
    if (fclose(iof->file)) {
17198
0
        iof->flags |= JANET_FILE_NOT_CLOSEABLE;
17199
0
        janet_panic("could not close file");
17200
0
    }
17201
0
    iof->flags |= JANET_FILE_CLOSED;
17202
0
    return janet_wrap_nil();
17203
0
}
17204
17205
/* Seek a file */
17206
JANET_CORE_FN(cfun_io_fseek,
17207
              "(file/seek f &opt whence n)",
17208
              "Jump to a relative location in the file `f`. `whence` must be one of:\n\n"
17209
              "* :cur - jump relative to the current file location\n\n"
17210
              "* :set - jump relative to the beginning of the file\n\n"
17211
              "* :end - jump relative to the end of the file\n\n"
17212
              "By default, `whence` is :cur. Optionally a value `n` may be passed "
17213
              "for the relative number of bytes to seek in the file. `n` may be a real "
17214
0
              "number to handle large files of more than 4GB. Returns the file handle.") {
17215
0
    janet_arity(argc, 2, 3);
17216
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17217
0
    if (iof->flags & JANET_FILE_CLOSED)
17218
0
        janet_panic("file is closed");
17219
0
    int64_t offset = 0;
17220
0
    int whence = SEEK_CUR;
17221
0
    if (argc >= 2) {
17222
0
        const uint8_t *whence_sym = janet_getkeyword(argv, 1);
17223
0
        if (!janet_cstrcmp(whence_sym, "cur")) {
17224
0
            whence = SEEK_CUR;
17225
0
        } else if (!janet_cstrcmp(whence_sym, "set")) {
17226
0
            whence = SEEK_SET;
17227
0
        } else if (!janet_cstrcmp(whence_sym, "end")) {
17228
0
            whence = SEEK_END;
17229
0
        } else {
17230
0
            janet_panicf("expected one of :cur, :set, :end, got %v", argv[1]);
17231
0
        }
17232
0
        if (argc == 3) {
17233
0
            offset = (int64_t) janet_getinteger64(argv, 2);
17234
0
        }
17235
0
    }
17236
0
    if (fseek(iof->file, offset, whence)) janet_panic("error seeking file");
17237
0
    return argv[0];
17238
0
}
17239
17240
JANET_CORE_FN(cfun_io_ftell,
17241
              "(file/tell f)",
17242
0
              "Get the current value of the file position for file `f`.") {
17243
0
    janet_fixarity(argc, 1);
17244
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17245
0
    if (iof->flags & JANET_FILE_CLOSED)
17246
0
        janet_panic("file is closed");
17247
0
    int64_t pos = ftell(iof->file);
17248
0
    if (pos == -1) janet_panic("error getting position in file");
17249
0
    return janet_wrap_number((double)pos);
17250
0
}
17251
17252
static JanetMethod io_file_methods[] = {
17253
    {"close", cfun_io_fclose},
17254
    {"flush", cfun_io_fflush},
17255
    {"read", cfun_io_fread},
17256
    {"seek", cfun_io_fseek},
17257
    {"tell", cfun_io_ftell},
17258
    {"write", cfun_io_fwrite},
17259
    {NULL, NULL}
17260
};
17261
17262
0
static int io_file_get(void *p, Janet key, Janet *out) {
17263
0
    (void) p;
17264
0
    if (!janet_checktype(key, JANET_KEYWORD))
17265
0
        return 0;
17266
0
    return janet_getmethod(janet_unwrap_keyword(key), io_file_methods, out);
17267
0
}
17268
17269
0
static Janet io_file_next(void *p, Janet key) {
17270
0
    (void) p;
17271
0
    return janet_nextmethod(io_file_methods, key);
17272
0
}
17273
17274
0
static void io_file_marshal(void *p, JanetMarshalContext *ctx) {
17275
0
    JanetFile *iof = (JanetFile *)p;
17276
0
    if (ctx->flags & JANET_MARSHAL_UNSAFE) {
17277
0
        janet_marshal_abstract(ctx, p);
17278
#ifdef JANET_WINDOWS
17279
        janet_marshal_int(ctx, _fileno(iof->file));
17280
#else
17281
0
        janet_marshal_int(ctx, fileno(iof->file));
17282
0
#endif
17283
0
        janet_marshal_int(ctx, iof->flags);
17284
0
    } else {
17285
0
        janet_panic("cannot marshal file in safe mode");
17286
0
    }
17287
0
}
17288
17289
0
static void *io_file_unmarshal(JanetMarshalContext *ctx) {
17290
0
    if (ctx->flags & JANET_MARSHAL_UNSAFE) {
17291
0
        JanetFile *iof = janet_unmarshal_abstract(ctx, sizeof(JanetFile));
17292
0
        int32_t fd = janet_unmarshal_int(ctx);
17293
0
        int32_t flags = janet_unmarshal_int(ctx);
17294
0
        char fmt[4] = {0};
17295
0
        int index = 0;
17296
0
        if (flags & JANET_FILE_READ) fmt[index++] = 'r';
17297
0
        if (flags & JANET_FILE_APPEND) {
17298
0
            fmt[index++] = 'a';
17299
0
        } else if (flags & JANET_FILE_WRITE) {
17300
0
            fmt[index++] = 'w';
17301
0
        }
17302
#ifdef JANET_WINDOWS
17303
        iof->file = _fdopen(fd, fmt);
17304
#else
17305
0
        iof->file = fdopen(fd, fmt);
17306
0
#endif
17307
0
        if (iof->file == NULL) {
17308
0
            iof->flags = JANET_FILE_CLOSED;
17309
0
        } else {
17310
0
            iof->flags = flags;
17311
0
        }
17312
0
        return iof;
17313
0
    } else {
17314
0
        janet_panic("cannot unmarshal file in safe mode");
17315
0
    }
17316
0
}
17317
17318
0
FILE *janet_dynfile(const char *name, FILE *def) {
17319
0
    Janet x = janet_dyn(name);
17320
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return def;
17321
0
    void *abstract = janet_unwrap_abstract(x);
17322
0
    if (janet_abstract_type(abstract) != &janet_file_type) return def;
17323
0
    JanetFile *iofile = abstract;
17324
0
    return iofile->file;
17325
0
}
17326
17327
static Janet cfun_io_print_impl_x(int32_t argc, Janet *argv, int newline,
17328
0
                                  FILE *dflt_file, int32_t offset, Janet x) {
17329
0
    FILE *f;
17330
0
    switch (janet_type(x)) {
17331
0
        default:
17332
0
            janet_panicf("cannot print to %v", x);
17333
0
        case JANET_BUFFER: {
17334
            /* Special case buffer */
17335
0
            JanetBuffer *buf = janet_unwrap_buffer(x);
17336
0
            for (int32_t i = offset; i < argc; ++i) {
17337
0
                janet_to_string_b(buf, argv[i]);
17338
0
            }
17339
0
            if (newline)
17340
0
                janet_buffer_push_u8(buf, '\n');
17341
0
            return janet_wrap_nil();
17342
0
        }
17343
0
        case JANET_FUNCTION: {
17344
            /* Special case function */
17345
0
            JanetFunction *fun = janet_unwrap_function(x);
17346
0
            JanetBuffer *buf = janet_buffer(0);
17347
0
            for (int32_t i = offset; i < argc; ++i) {
17348
0
                janet_to_string_b(buf, argv[i]);
17349
0
            }
17350
0
            if (newline)
17351
0
                janet_buffer_push_u8(buf, '\n');
17352
0
            Janet args[1] = { janet_wrap_buffer(buf) };
17353
0
            janet_call(fun, 1, args);
17354
0
            return janet_wrap_nil();
17355
0
        }
17356
0
        case JANET_NIL:
17357
0
            f = dflt_file;
17358
0
            if (f == NULL) janet_panic("cannot print to nil");
17359
0
            break;
17360
0
        case JANET_ABSTRACT: {
17361
0
            void *abstract = janet_unwrap_abstract(x);
17362
0
            if (janet_abstract_type(abstract) != &janet_file_type)
17363
0
                return janet_wrap_nil();
17364
0
            JanetFile *iofile = abstract;
17365
0
            io_assert_writeable(iofile);
17366
0
            f = iofile->file;
17367
0
            break;
17368
0
        }
17369
0
    }
17370
0
    for (int32_t i = offset; i < argc; ++i) {
17371
0
        int32_t len;
17372
0
        const uint8_t *vstr;
17373
0
        if (janet_checktype(argv[i], JANET_BUFFER)) {
17374
0
            JanetBuffer *b = janet_unwrap_buffer(argv[i]);
17375
0
            vstr = b->data;
17376
0
            len = b->count;
17377
0
        } else {
17378
0
            vstr = janet_to_string(argv[i]);
17379
0
            len = janet_string_length(vstr);
17380
0
        }
17381
0
        if (len) {
17382
0
            if (1 != fwrite(vstr, len, 1, f)) {
17383
0
                if (f == dflt_file) {
17384
0
                    janet_panicf("cannot print %d bytes", len);
17385
0
                } else {
17386
0
                    janet_panicf("cannot print %d bytes to %v", len, x);
17387
0
                }
17388
0
            }
17389
0
        }
17390
0
    }
17391
0
    if (newline)
17392
0
        putc('\n', f);
17393
0
    return janet_wrap_nil();
17394
0
}
17395
17396
static Janet cfun_io_print_impl(int32_t argc, Janet *argv,
17397
0
                                int newline, const char *name, FILE *dflt_file) {
17398
0
    Janet x = janet_dyn(name);
17399
0
    return cfun_io_print_impl_x(argc, argv, newline, dflt_file, 0, x);
17400
0
}
17401
17402
JANET_CORE_FN(cfun_io_print,
17403
              "(print & xs)",
17404
              "Print values to the console (standard out). Value are converted "
17405
              "to strings if they are not already. After printing all values, a "
17406
              "newline character is printed. Use the value of `(dyn :out stdout)` to determine "
17407
              "what to push characters to. Expects `(dyn :out stdout)` to be either a core/file or "
17408
0
              "a buffer. Returns nil.") {
17409
0
    return cfun_io_print_impl(argc, argv, 1, "out", stdout);
17410
0
}
17411
17412
JANET_CORE_FN(cfun_io_prin,
17413
              "(prin & xs)",
17414
0
              "Same as `print`, but does not add trailing newline.") {
17415
0
    return cfun_io_print_impl(argc, argv, 0, "out", stdout);
17416
0
}
17417
17418
JANET_CORE_FN(cfun_io_eprint,
17419
              "(eprint & xs)",
17420
0
              "Same as `print`, but uses `(dyn :err stderr)` instead of `(dyn :out stdout)`.") {
17421
0
    return cfun_io_print_impl(argc, argv, 1, "err", stderr);
17422
0
}
17423
17424
JANET_CORE_FN(cfun_io_eprin,
17425
              "(eprin & xs)",
17426
0
              "Same as `prin`, but uses `(dyn :err stderr)` instead of `(dyn :out stdout)`.") {
17427
0
    return cfun_io_print_impl(argc, argv, 0, "err", stderr);
17428
0
}
17429
17430
JANET_CORE_FN(cfun_io_xprint,
17431
              "(xprint to & xs)",
17432
              "Print to a file or other value explicitly (no dynamic bindings) with a trailing "
17433
              "newline character. The value to print "
17434
0
              "to is the first argument, and is otherwise the same as `print`. Returns nil.") {
17435
0
    janet_arity(argc, 1, -1);
17436
0
    return cfun_io_print_impl_x(argc, argv, 1, NULL, 1, argv[0]);
17437
0
}
17438
17439
JANET_CORE_FN(cfun_io_xprin,
17440
              "(xprin to & xs)",
17441
              "Print to a file or other value explicitly (no dynamic bindings). The value to print "
17442
0
              "to is the first argument, and is otherwise the same as `prin`. Returns nil.") {
17443
0
    janet_arity(argc, 1, -1);
17444
0
    return cfun_io_print_impl_x(argc, argv, 0, NULL, 1, argv[0]);
17445
0
}
17446
17447
static Janet cfun_io_printf_impl_x(int32_t argc, Janet *argv, int newline,
17448
0
                                   FILE *dflt_file, int32_t offset, Janet x) {
17449
0
    FILE *f;
17450
0
    const char *fmt = janet_getcstring(argv, offset);
17451
0
    switch (janet_type(x)) {
17452
0
        default:
17453
0
            janet_panicf("cannot print to %v", x);
17454
0
        case JANET_BUFFER: {
17455
            /* Special case buffer */
17456
0
            JanetBuffer *buf = janet_unwrap_buffer(x);
17457
0
            janet_buffer_format(buf, fmt, offset, argc, argv);
17458
0
            if (newline) janet_buffer_push_u8(buf, '\n');
17459
0
            return janet_wrap_nil();
17460
0
        }
17461
0
        case JANET_FUNCTION: {
17462
            /* Special case function */
17463
0
            JanetFunction *fun = janet_unwrap_function(x);
17464
0
            JanetBuffer *buf = janet_buffer(0);
17465
0
            janet_buffer_format(buf, fmt, offset, argc, argv);
17466
0
            if (newline) janet_buffer_push_u8(buf, '\n');
17467
0
            Janet args[1] = { janet_wrap_buffer(buf) };
17468
0
            janet_call(fun, 1, args);
17469
0
            return janet_wrap_nil();
17470
0
        }
17471
0
        case JANET_NIL:
17472
0
            f = dflt_file;
17473
0
            if (f == NULL) janet_panic("cannot print to nil");
17474
0
            break;
17475
0
        case JANET_ABSTRACT: {
17476
0
            void *abstract = janet_unwrap_abstract(x);
17477
0
            if (janet_abstract_type(abstract) != &janet_file_type)
17478
0
                return janet_wrap_nil();
17479
0
            JanetFile *iofile = abstract;
17480
0
            if (iofile->flags & JANET_FILE_CLOSED) {
17481
0
                janet_panic("cannot print to closed file");
17482
0
            }
17483
0
            io_assert_writeable(iofile);
17484
0
            f = iofile->file;
17485
0
            break;
17486
0
        }
17487
0
    }
17488
0
    JanetBuffer *buf = janet_buffer(10);
17489
0
    janet_buffer_format(buf, fmt, offset, argc, argv);
17490
0
    if (newline) janet_buffer_push_u8(buf, '\n');
17491
0
    if (buf->count) {
17492
0
        if (1 != fwrite(buf->data, buf->count, 1, f)) {
17493
0
            janet_panicf("could not print %d bytes to file", buf->count);
17494
0
        }
17495
0
    }
17496
    /* Clear buffer to make things easier for GC */
17497
0
    buf->count = 0;
17498
0
    buf->capacity = 0;
17499
0
    janet_free(buf->data);
17500
0
    buf->data = NULL;
17501
0
    return janet_wrap_nil();
17502
0
}
17503
17504
static Janet cfun_io_printf_impl(int32_t argc, Janet *argv, int newline,
17505
0
                                 const char *name, FILE *dflt_file) {
17506
0
    janet_arity(argc, 1, -1);
17507
0
    Janet x = janet_dyn(name);
17508
0
    return cfun_io_printf_impl_x(argc, argv, newline, dflt_file, 0, x);
17509
17510
0
}
17511
17512
JANET_CORE_FN(cfun_io_printf,
17513
              "(printf fmt & xs)",
17514
0
              "Prints output formatted as if with `(string/format fmt ;xs)` to `(dyn :out stdout)` with a trailing newline.") {
17515
0
    return cfun_io_printf_impl(argc, argv, 1, "out", stdout);
17516
0
}
17517
17518
JANET_CORE_FN(cfun_io_prinf,
17519
              "(prinf fmt & xs)",
17520
0
              "Like `printf` but with no trailing newline.") {
17521
0
    return cfun_io_printf_impl(argc, argv, 0, "out", stdout);
17522
0
}
17523
17524
JANET_CORE_FN(cfun_io_eprintf,
17525
              "(eprintf fmt & xs)",
17526
0
              "Prints output formatted as if with `(string/format fmt ;xs)` to `(dyn :err stderr)` with a trailing newline.") {
17527
0
    return cfun_io_printf_impl(argc, argv, 1, "err", stderr);
17528
0
}
17529
17530
JANET_CORE_FN(cfun_io_eprinf,
17531
              "(eprinf fmt & xs)",
17532
0
              "Like `eprintf` but with no trailing newline.") {
17533
0
    return cfun_io_printf_impl(argc, argv, 0, "err", stderr);
17534
0
}
17535
17536
JANET_CORE_FN(cfun_io_xprintf,
17537
              "(xprintf to fmt & xs)",
17538
0
              "Like `printf` but prints to an explicit file or value `to`. Returns nil.") {
17539
0
    janet_arity(argc, 2, -1);
17540
0
    return cfun_io_printf_impl_x(argc, argv, 1, NULL, 1, argv[0]);
17541
0
}
17542
17543
JANET_CORE_FN(cfun_io_xprinf,
17544
              "(xprinf to fmt & xs)",
17545
0
              "Like `prinf` but prints to an explicit file or value `to`. Returns nil.") {
17546
0
    janet_arity(argc, 2, -1);
17547
0
    return cfun_io_printf_impl_x(argc, argv, 0, NULL, 1, argv[0]);
17548
0
}
17549
17550
0
static void janet_flusher(const char *name, FILE *dflt_file) {
17551
0
    Janet x = janet_dyn(name);
17552
0
    switch (janet_type(x)) {
17553
0
        default:
17554
0
            break;
17555
0
        case JANET_NIL:
17556
0
            fflush(dflt_file);
17557
0
            break;
17558
0
        case JANET_ABSTRACT: {
17559
0
            void *abstract = janet_unwrap_abstract(x);
17560
0
            if (janet_abstract_type(abstract) != &janet_file_type) break;
17561
0
            JanetFile *iofile = abstract;
17562
0
            fflush(iofile->file);
17563
0
            break;
17564
0
        }
17565
0
    }
17566
0
}
17567
17568
JANET_CORE_FN(cfun_io_flush,
17569
              "(flush)",
17570
0
              "Flush `(dyn :out stdout)` if it is a file, otherwise do nothing.") {
17571
0
    janet_fixarity(argc, 0);
17572
0
    (void) argv;
17573
0
    janet_flusher("out", stdout);
17574
0
    return janet_wrap_nil();
17575
0
}
17576
17577
JANET_CORE_FN(cfun_io_eflush,
17578
              "(eflush)",
17579
0
              "Flush `(dyn :err stderr)` if it is a file, otherwise do nothing.") {
17580
0
    janet_fixarity(argc, 0);
17581
0
    (void) argv;
17582
0
    janet_flusher("err", stderr);
17583
0
    return janet_wrap_nil();
17584
0
}
17585
17586
0
void janet_dynprintf(const char *name, FILE *dflt_file, const char *format, ...) {
17587
0
    va_list args;
17588
0
    va_start(args, format);
17589
0
    Janet x = janet_dyn(name);
17590
0
    JanetType xtype = janet_type(x);
17591
0
    switch (xtype) {
17592
0
        default:
17593
            /* Other values simply do nothing */
17594
0
            break;
17595
0
        case JANET_NIL:
17596
0
        case JANET_ABSTRACT: {
17597
0
            FILE *f = dflt_file;
17598
0
            JanetBuffer buffer;
17599
0
            int32_t len = 0;
17600
0
            while (format[len]) len++;
17601
0
            janet_buffer_init(&buffer, len);
17602
0
            janet_formatbv(&buffer, format, args);
17603
0
            if (xtype == JANET_ABSTRACT) {
17604
0
                void *abstract = janet_unwrap_abstract(x);
17605
0
                if (janet_abstract_type(abstract) != &janet_file_type)
17606
0
                    break;
17607
0
                JanetFile *iofile = abstract;
17608
0
                io_assert_writeable(iofile);
17609
0
                f = iofile->file;
17610
0
            }
17611
0
            fwrite(buffer.data, buffer.count, 1, f);
17612
0
            janet_buffer_deinit(&buffer);
17613
0
            break;
17614
0
        }
17615
0
        case JANET_FUNCTION: {
17616
0
            JanetFunction *fun = janet_unwrap_function(x);
17617
0
            int32_t len = 0;
17618
0
            while (format[len]) len++;
17619
0
            JanetBuffer *buf = janet_buffer(len);
17620
0
            janet_formatbv(buf, format, args);
17621
0
            Janet args[1] = { janet_wrap_buffer(buf) };
17622
0
            janet_call(fun, 1, args);
17623
0
            break;
17624
0
        }
17625
0
        case JANET_BUFFER:
17626
0
            janet_formatbv(janet_unwrap_buffer(x), format, args);
17627
0
            break;
17628
0
    }
17629
0
    va_end(args);
17630
0
    return;
17631
0
}
17632
17633
/* C API */
17634
17635
0
JanetFile *janet_getjfile(const Janet *argv, int32_t n) {
17636
0
    return janet_getabstract(argv, n, &janet_file_type);
17637
0
}
17638
17639
0
FILE *janet_getfile(const Janet *argv, int32_t n, int32_t *flags) {
17640
0
    JanetFile *iof = janet_getabstract(argv, n, &janet_file_type);
17641
0
    if (NULL != flags) *flags = iof->flags;
17642
0
    return iof->file;
17643
0
}
17644
17645
0
JanetFile *janet_makejfile(FILE *f, int32_t flags) {
17646
0
    return makef(f, flags);
17647
0
}
17648
17649
0
Janet janet_makefile(FILE *f, int32_t flags) {
17650
0
    return janet_wrap_abstract(makef(f, flags));
17651
0
}
17652
17653
0
JanetAbstract janet_checkfile(Janet j) {
17654
0
    return janet_checkabstract(j, &janet_file_type);
17655
0
}
17656
17657
0
FILE *janet_unwrapfile(Janet j, int32_t *flags) {
17658
0
    JanetFile *iof = janet_unwrap_abstract(j);
17659
0
    if (NULL != flags) *flags = iof->flags;
17660
0
    return iof->file;
17661
0
}
17662
17663
/* Module entry point */
17664
0
void janet_lib_io(JanetTable *env) {
17665
0
    JanetRegExt io_cfuns[] = {
17666
0
        JANET_CORE_REG("print", cfun_io_print),
17667
0
        JANET_CORE_REG("prin", cfun_io_prin),
17668
0
        JANET_CORE_REG("printf", cfun_io_printf),
17669
0
        JANET_CORE_REG("prinf", cfun_io_prinf),
17670
0
        JANET_CORE_REG("eprin", cfun_io_eprin),
17671
0
        JANET_CORE_REG("eprint", cfun_io_eprint),
17672
0
        JANET_CORE_REG("eprintf", cfun_io_eprintf),
17673
0
        JANET_CORE_REG("eprinf", cfun_io_eprinf),
17674
0
        JANET_CORE_REG("xprint", cfun_io_xprint),
17675
0
        JANET_CORE_REG("xprin", cfun_io_xprin),
17676
0
        JANET_CORE_REG("xprintf", cfun_io_xprintf),
17677
0
        JANET_CORE_REG("xprinf", cfun_io_xprinf),
17678
0
        JANET_CORE_REG("flush", cfun_io_flush),
17679
0
        JANET_CORE_REG("eflush", cfun_io_eflush),
17680
0
        JANET_CORE_REG("file/temp", cfun_io_temp),
17681
0
        JANET_CORE_REG("file/open", cfun_io_fopen),
17682
0
        JANET_CORE_REG("file/close", cfun_io_fclose),
17683
0
        JANET_CORE_REG("file/read", cfun_io_fread),
17684
0
        JANET_CORE_REG("file/write", cfun_io_fwrite),
17685
0
        JANET_CORE_REG("file/flush", cfun_io_fflush),
17686
0
        JANET_CORE_REG("file/seek", cfun_io_fseek),
17687
0
        JANET_CORE_REG("file/tell", cfun_io_ftell),
17688
0
        JANET_REG_END
17689
0
    };
17690
0
    janet_core_cfuns_ext(env, NULL, io_cfuns);
17691
0
    janet_register_abstract_type(&janet_file_type);
17692
0
    int default_flags = JANET_FILE_NOT_CLOSEABLE | JANET_FILE_SERIALIZABLE;
17693
    /* stdout */
17694
0
    JANET_CORE_DEF(env, "stdout",
17695
0
                   janet_makefile(stdout, JANET_FILE_APPEND | default_flags),
17696
0
                   "The standard output file.");
17697
    /* stderr */
17698
0
    JANET_CORE_DEF(env, "stderr",
17699
0
                   janet_makefile(stderr, JANET_FILE_APPEND | default_flags),
17700
0
                   "The standard error file.");
17701
    /* stdin */
17702
0
    JANET_CORE_DEF(env, "stdin",
17703
0
                   janet_makefile(stdin, JANET_FILE_READ | default_flags),
17704
0
                   "The standard input file.");
17705
17706
0
}
17707
17708
17709
/* src/core/marsh.c */
17710
#line 0 "src/core/marsh.c"
17711
17712
/*
17713
* Copyright (c) 2025 Calvin Rose
17714
*
17715
* Permission is hereby granted, free of charge, to any person obtaining a copy
17716
* of this software and associated documentation files (the "Software"), to
17717
* deal in the Software without restriction, including without limitation the
17718
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
17719
* sell copies of the Software, and to permit persons to whom the Software is
17720
* furnished to do so, subject to the following conditions:
17721
*
17722
* The above copyright notice and this permission notice shall be included in
17723
* all copies or substantial portions of the Software.
17724
*
17725
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17726
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17727
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17728
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17729
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17730
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
17731
* IN THE SOFTWARE.
17732
*/
17733
17734
#ifndef JANET_AMALG
17735
#include "features.h"
17736
#include <janet.h>
17737
#include "state.h"
17738
#include "vector.h"
17739
#include "gc.h"
17740
#include "fiber.h"
17741
#include "util.h"
17742
#endif
17743
17744
typedef struct {
17745
    JanetBuffer *buf;
17746
    JanetTable seen;
17747
    JanetTable *rreg;
17748
    JanetFuncEnv **seen_envs;
17749
    JanetFuncDef **seen_defs;
17750
    int32_t nextid;
17751
    int maybe_cycles;
17752
} MarshalState;
17753
17754
/* Lead bytes in marshaling protocol */
17755
enum {
17756
    LB_REAL = 200,
17757
    LB_NIL, /* 201 */
17758
    LB_FALSE, /* 202 */
17759
    LB_TRUE,  /* 203 */
17760
    LB_FIBER, /* 204 */
17761
    LB_INTEGER, /* 205 */
17762
    LB_STRING, /* 206 */
17763
    LB_SYMBOL, /* 207 */
17764
    LB_KEYWORD, /* 208 */
17765
    LB_ARRAY, /* 209 */
17766
    LB_TUPLE, /* 210 */
17767
    LB_TABLE, /* 211 */
17768
    LB_TABLE_PROTO, /* 212 */
17769
    LB_STRUCT, /* 213 */
17770
    LB_BUFFER, /* 214 */
17771
    LB_FUNCTION, /* 215 */
17772
    LB_REGISTRY, /* 216 */
17773
    LB_ABSTRACT, /* 217 */
17774
    LB_REFERENCE, /* 218 */
17775
    LB_FUNCENV_REF, /* 219 */
17776
    LB_FUNCDEF_REF, /* 220 */
17777
    LB_UNSAFE_CFUNCTION, /* 221 */
17778
    LB_UNSAFE_POINTER, /* 222 */
17779
    LB_STRUCT_PROTO, /* 223 */
17780
#ifdef JANET_EV
17781
    LB_THREADED_ABSTRACT, /* 224 */
17782
    LB_POINTER_BUFFER, /* 225 */
17783
#endif
17784
    LB_TABLE_WEAKK, /* 226 */
17785
    LB_TABLE_WEAKV, /* 227 */
17786
    LB_TABLE_WEAKKV, /* 228 */
17787
    LB_TABLE_WEAKK_PROTO, /* 229 */
17788
    LB_TABLE_WEAKV_PROTO, /* 230 */
17789
    LB_TABLE_WEAKKV_PROTO, /* 231 */
17790
    LB_ARRAY_WEAK, /* 232 */
17791
} LeadBytes;
17792
17793
/* Helper to look inside an entry in an environment */
17794
0
static Janet entry_getval(Janet env_entry) {
17795
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
17796
0
        JanetTable *entry = janet_unwrap_table(env_entry);
17797
0
        Janet checkval = janet_table_get(entry, janet_ckeywordv("value"));
17798
0
        if (janet_checktype(checkval, JANET_NIL)) {
17799
0
            checkval = janet_table_get(entry, janet_ckeywordv("ref"));
17800
0
        }
17801
0
        return checkval;
17802
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
17803
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
17804
0
        Janet checkval = janet_struct_get(entry, janet_ckeywordv("value"));
17805
0
        if (janet_checktype(checkval, JANET_NIL)) {
17806
0
            checkval = janet_struct_get(entry, janet_ckeywordv("ref"));
17807
0
        }
17808
0
        return checkval;
17809
0
    } else {
17810
0
        return janet_wrap_nil();
17811
0
    }
17812
0
}
17813
17814
/* Merge values from an environment into an existing lookup table. */
17815
0
void janet_env_lookup_into(JanetTable *renv, JanetTable *env, const char *prefix, int recurse) {
17816
0
    while (env) {
17817
0
        for (int32_t i = 0; i < env->capacity; i++) {
17818
0
            if (janet_checktype(env->data[i].key, JANET_SYMBOL)) {
17819
0
                if (prefix) {
17820
0
                    int32_t prelen = (int32_t) strlen(prefix);
17821
0
                    const uint8_t *oldsym = janet_unwrap_symbol(env->data[i].key);
17822
0
                    int32_t oldlen = janet_string_length(oldsym);
17823
0
                    uint8_t *symbuf = janet_smalloc(prelen + oldlen);
17824
0
                    safe_memcpy(symbuf, prefix, prelen);
17825
0
                    safe_memcpy(symbuf + prelen, oldsym, oldlen);
17826
0
                    Janet s = janet_symbolv(symbuf, prelen + oldlen);
17827
0
                    janet_sfree(symbuf);
17828
0
                    janet_table_put(renv, s, entry_getval(env->data[i].value));
17829
0
                } else {
17830
0
                    janet_table_put(renv,
17831
0
                                    env->data[i].key,
17832
0
                                    entry_getval(env->data[i].value));
17833
0
                }
17834
0
            }
17835
0
        }
17836
0
        env = recurse ? env->proto : NULL;
17837
0
    }
17838
0
}
17839
17840
/* Make a forward lookup table from an environment (for unmarshaling) */
17841
0
JanetTable *janet_env_lookup(JanetTable *env) {
17842
0
    JanetTable *renv = janet_table(env->count);
17843
0
    janet_env_lookup_into(renv, env, NULL, 1);
17844
0
    return renv;
17845
0
}
17846
17847
/* Marshal an integer onto the buffer */
17848
0
static void pushint(MarshalState *st, int32_t x) {
17849
0
    if (x >= 0 && x < 128) {
17850
0
        janet_buffer_push_u8(st->buf, x);
17851
0
    } else if (x <= 8191 && x >= -8192) {
17852
0
        uint8_t intbuf[2];
17853
0
        intbuf[0] = ((x >> 8) & 0x3F) | 0x80;
17854
0
        intbuf[1] = x & 0xFF;
17855
0
        janet_buffer_push_bytes(st->buf, intbuf, 2);
17856
0
    } else {
17857
0
        uint8_t intbuf[5];
17858
0
        intbuf[0] = LB_INTEGER;
17859
0
        intbuf[1] = (x >> 24) & 0xFF;
17860
0
        intbuf[2] = (x >> 16) & 0xFF;
17861
0
        intbuf[3] = (x >> 8) & 0xFF;
17862
0
        intbuf[4] = x & 0xFF;
17863
0
        janet_buffer_push_bytes(st->buf, intbuf, 5);
17864
0
    }
17865
0
}
17866
17867
0
static void pushbyte(MarshalState *st, uint8_t b) {
17868
0
    janet_buffer_push_u8(st->buf, b);
17869
0
}
17870
17871
0
static void pushbytes(MarshalState *st, const uint8_t *bytes, int32_t len) {
17872
0
    janet_buffer_push_bytes(st->buf, bytes, len);
17873
0
}
17874
17875
0
static void pushpointer(MarshalState *st, const void *ptr) {
17876
0
    janet_buffer_push_bytes(st->buf, (const uint8_t *) &ptr, sizeof(ptr));
17877
0
}
17878
17879
/* Marshal a size_t onto the buffer */
17880
0
static void push64(MarshalState *st, uint64_t x) {
17881
0
    if (x <= 0xF0) {
17882
        /* Single byte */
17883
0
        pushbyte(st, (uint8_t) x);
17884
0
    } else {
17885
        /* Multibyte, little endian */
17886
0
        uint8_t bytes[9];
17887
0
        int nbytes = 0;
17888
0
        while (x) {
17889
0
            bytes[++nbytes] = x & 0xFF;
17890
0
            x >>= 8;
17891
0
        }
17892
0
        bytes[0] = 0xF0 + nbytes;
17893
0
        pushbytes(st, bytes, nbytes + 1);
17894
0
    }
17895
0
}
17896
17897
/* Forward declaration to enable mutual recursion. */
17898
static void marshal_one(MarshalState *st, Janet x, int flags);
17899
static void marshal_one_fiber(MarshalState *st, JanetFiber *fiber, int flags);
17900
static void marshal_one_def(MarshalState *st, JanetFuncDef *def, int flags);
17901
static void marshal_one_env(MarshalState *st, JanetFuncEnv *env, int flags);
17902
17903
/* Prevent stack overflows */
17904
0
#define MARSH_STACKCHECK if ((flags & 0xFFFF) > JANET_RECURSION_GUARD) janet_panic("stack overflow")
17905
17906
/* Quick check if a fiber cannot be marshalled. This is will
17907
 * have no false positives, but may have false negatives. */
17908
0
static int fiber_cannot_be_marshalled(JanetFiber *fiber) {
17909
0
    if (janet_fiber_status(fiber) == JANET_STATUS_ALIVE) return 1;
17910
0
    int32_t i = fiber->frame;
17911
0
    while (i > 0) {
17912
0
        JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
17913
0
        if (!frame->func) return 1; /* has cfunction on stack */
17914
0
        i = frame->prevframe;
17915
0
    }
17916
0
    return 0;
17917
0
}
17918
17919
/* Marshal a function env */
17920
0
static void marshal_one_env(MarshalState *st, JanetFuncEnv *env, int flags) {
17921
0
    MARSH_STACKCHECK;
17922
0
    for (int32_t i = 0; i < janet_v_count(st->seen_envs); i++) {
17923
0
        if (st->seen_envs[i] == env) {
17924
0
            pushbyte(st, LB_FUNCENV_REF);
17925
0
            pushint(st, i);
17926
0
            return;
17927
0
        }
17928
0
    }
17929
0
    janet_env_valid(env);
17930
0
    janet_v_push(st->seen_envs, env);
17931
17932
    /* Special case for early detachment */
17933
0
    if (env->offset > 0 && fiber_cannot_be_marshalled(env->as.fiber)) {
17934
0
        pushint(st, 0);
17935
0
        pushint(st, env->length);
17936
0
        Janet *values = env->as.fiber->data + env->offset;
17937
0
        uint32_t *bitset = janet_stack_frame(values)->func->def->closure_bitset;
17938
0
        for (int32_t i = 0; i < env->length; i++) {
17939
0
            if (1 & (bitset[i >> 5] >> (i & 0x1F))) {
17940
0
                marshal_one(st, values[i], flags + 1);
17941
0
            } else {
17942
0
                pushbyte(st, LB_NIL);
17943
0
            }
17944
0
        }
17945
0
    } else {
17946
0
        janet_env_maybe_detach(env);
17947
0
        pushint(st, env->offset);
17948
0
        pushint(st, env->length);
17949
0
        if (env->offset > 0) {
17950
            /* On stack variant */
17951
0
            marshal_one(st, janet_wrap_fiber(env->as.fiber), flags + 1);
17952
0
        } else {
17953
            /* Off stack variant */
17954
0
            for (int32_t i = 0; i < env->length; i++)
17955
0
                marshal_one(st, env->as.values[i], flags + 1);
17956
0
        }
17957
0
    }
17958
0
}
17959
17960
/* Marshal a sequence of u32s */
17961
0
static void janet_marshal_u32s(MarshalState *st, const uint32_t *u32s, int32_t n) {
17962
0
    for (int32_t i = 0; i < n; i++) {
17963
0
        pushbyte(st, u32s[i] & 0xFF);
17964
0
        pushbyte(st, (u32s[i] >> 8) & 0xFF);
17965
0
        pushbyte(st, (u32s[i] >> 16) & 0xFF);
17966
0
        pushbyte(st, (u32s[i] >> 24) & 0xFF);
17967
0
    }
17968
0
}
17969
17970
/* Marshal a function def */
17971
0
static void marshal_one_def(MarshalState *st, JanetFuncDef *def, int flags) {
17972
0
    MARSH_STACKCHECK;
17973
0
    for (int32_t i = 0; i < janet_v_count(st->seen_defs); i++) {
17974
0
        if (st->seen_defs[i] == def) {
17975
0
            pushbyte(st, LB_FUNCDEF_REF);
17976
0
            pushint(st, i);
17977
0
            return;
17978
0
        }
17979
0
    }
17980
    /* Add to lookup */
17981
0
    janet_v_push(st->seen_defs, def);
17982
17983
0
    pushint(st, def->flags);
17984
0
    pushint(st, def->slotcount);
17985
0
    pushint(st, def->arity);
17986
0
    pushint(st, def->min_arity);
17987
0
    pushint(st, def->max_arity);
17988
0
    pushint(st, def->constants_length);
17989
0
    pushint(st, def->bytecode_length);
17990
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASENVS)
17991
0
        pushint(st, def->environments_length);
17992
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS)
17993
0
        pushint(st, def->defs_length);
17994
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP)
17995
0
        pushint(st, def->symbolmap_length);
17996
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASNAME)
17997
0
        marshal_one(st, janet_wrap_string(def->name), flags);
17998
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCE)
17999
0
        marshal_one(st, janet_wrap_string(def->source), flags);
18000
18001
    /* marshal constants */
18002
0
    for (int32_t i = 0; i < def->constants_length; i++)
18003
0
        marshal_one(st, def->constants[i], flags + 1);
18004
18005
    /* Marshal symbol map, if needed */
18006
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
18007
0
        pushint(st, (int32_t) def->symbolmap[i].birth_pc);
18008
0
        pushint(st, (int32_t) def->symbolmap[i].death_pc);
18009
0
        pushint(st, (int32_t) def->symbolmap[i].slot_index);
18010
0
        marshal_one(st, janet_wrap_symbol(def->symbolmap[i].symbol), flags + 1);
18011
0
    }
18012
18013
    /* marshal the bytecode */
18014
0
    janet_marshal_u32s(st, def->bytecode, def->bytecode_length);
18015
18016
    /* marshal the environments if needed */
18017
0
    for (int32_t i = 0; i < def->environments_length; i++)
18018
0
        pushint(st, def->environments[i]);
18019
18020
    /* marshal the sub funcdefs if needed */
18021
0
    for (int32_t i = 0; i < def->defs_length; i++)
18022
0
        marshal_one_def(st, def->defs[i], flags + 1);
18023
18024
    /* marshal source maps if needed */
18025
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCEMAP) {
18026
0
        int32_t current = 0;
18027
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
18028
0
            JanetSourceMapping map = def->sourcemap[i];
18029
0
            pushint(st, map.line - current);
18030
0
            pushint(st, map.column);
18031
0
            current = map.line;
18032
0
        }
18033
0
    }
18034
18035
    /* Marshal closure bitset, if needed */
18036
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASCLOBITSET) {
18037
0
        janet_marshal_u32s(st, def->closure_bitset, ((def->slotcount + 31) >> 5));
18038
0
    }
18039
0
}
18040
18041
0
#define JANET_FIBER_FLAG_HASCHILD (1 << 29)
18042
0
#define JANET_FIBER_FLAG_HASENV   (1 << 30)
18043
0
#define JANET_STACKFRAME_HASENV   (INT32_MIN)
18044
18045
/* Marshal a fiber */
18046
0
static void marshal_one_fiber(MarshalState *st, JanetFiber *fiber, int flags) {
18047
0
    MARSH_STACKCHECK;
18048
0
    int32_t fflags = fiber->flags;
18049
0
    if (fiber->child) fflags |= JANET_FIBER_FLAG_HASCHILD;
18050
0
    if (fiber->env) fflags |= JANET_FIBER_FLAG_HASENV;
18051
0
    if (janet_fiber_status(fiber) == JANET_STATUS_ALIVE)
18052
0
        janet_panic("cannot marshal alive fiber");
18053
0
    pushint(st, fflags);
18054
0
    pushint(st, fiber->frame);
18055
0
    pushint(st, fiber->stackstart);
18056
0
    pushint(st, fiber->stacktop);
18057
0
    pushint(st, fiber->maxstack);
18058
    /* Do frames */
18059
0
    int32_t i = fiber->frame;
18060
0
    int32_t j = fiber->stackstart - JANET_FRAME_SIZE;
18061
0
    while (i > 0) {
18062
0
        JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
18063
0
        if (frame->env) frame->flags |= JANET_STACKFRAME_HASENV;
18064
0
        if (!frame->func) janet_panicf("cannot marshal fiber with c stackframe (%v)", janet_wrap_cfunction((JanetCFunction) frame->pc));
18065
0
        pushint(st, frame->flags);
18066
0
        pushint(st, frame->prevframe);
18067
0
        int32_t pcdiff = (int32_t)(frame->pc - frame->func->def->bytecode);
18068
0
        pushint(st, pcdiff);
18069
0
        marshal_one(st, janet_wrap_function(frame->func), flags + 1);
18070
0
        if (frame->env) marshal_one_env(st, frame->env, flags + 1);
18071
        /* Marshal all values in the stack frame */
18072
0
        for (int32_t k = i; k < j; k++)
18073
0
            marshal_one(st, fiber->data[k], flags + 1);
18074
0
        j = i - JANET_FRAME_SIZE;
18075
0
        i = frame->prevframe;
18076
0
    }
18077
0
    if (fiber->env) {
18078
0
        marshal_one(st, janet_wrap_table(fiber->env), flags + 1);
18079
0
    }
18080
0
    if (fiber->child)
18081
0
        marshal_one(st, janet_wrap_fiber(fiber->child), flags + 1);
18082
0
    marshal_one(st, fiber->last_value, flags + 1);
18083
0
}
18084
18085
0
void janet_marshal_size(JanetMarshalContext *ctx, size_t value) {
18086
0
    janet_marshal_int64(ctx, (int64_t) value);
18087
0
}
18088
18089
0
void janet_marshal_int64(JanetMarshalContext *ctx, int64_t value) {
18090
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18091
0
    push64(st, (uint64_t) value);
18092
0
}
18093
18094
0
void janet_marshal_int(JanetMarshalContext *ctx, int32_t value) {
18095
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18096
0
    pushint(st, value);
18097
0
}
18098
18099
/* Only use in unsafe - don't marshal pointers otherwise */
18100
0
void janet_marshal_ptr(JanetMarshalContext *ctx, const void *ptr) {
18101
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
18102
0
        janet_panic("can only marshal pointers in unsafe mode");
18103
0
    }
18104
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18105
0
    pushpointer(st, ptr);
18106
0
}
18107
18108
0
void janet_marshal_byte(JanetMarshalContext *ctx, uint8_t value) {
18109
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18110
0
    pushbyte(st, value);
18111
0
}
18112
18113
0
void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, size_t len) {
18114
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18115
0
    if (len > INT32_MAX) janet_panic("size_t too large to fit in buffer");
18116
0
    pushbytes(st, bytes, (int32_t) len);
18117
0
}
18118
18119
0
void janet_marshal_janet(JanetMarshalContext *ctx, Janet x) {
18120
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18121
0
    marshal_one(st, x, ctx->flags + 1);
18122
0
}
18123
18124
#ifdef JANET_MARSHAL_DEBUG
18125
#define MARK_SEEN() \
18126
    do { if (st->maybe_cycles) { \
18127
        Janet _check = janet_table_get(&st->seen, x); \
18128
        if (!janet_checktype(_check, JANET_NIL)) janet_eprintf("double MARK_SEEN on %v\n", x); \
18129
        janet_eprintf("made reference %d (%t) to %v\n", st->nextid, x, x); \
18130
        janet_table_put(&st->seen, x, janet_wrap_integer(st->nextid++)); \
18131
    } } while (0)
18132
#else
18133
#define MARK_SEEN() \
18134
0
    do { if (st->maybe_cycles) { \
18135
0
        janet_table_put(&st->seen, x, janet_wrap_integer(st->nextid++)); \
18136
0
    } } while (0)
18137
#endif
18138
18139
0
void janet_marshal_abstract(JanetMarshalContext *ctx, void *abstract) {
18140
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18141
0
    Janet x = janet_wrap_abstract(abstract);
18142
0
    MARK_SEEN();
18143
0
}
18144
18145
0
static void marshal_one_abstract(MarshalState *st, Janet x, int flags) {
18146
0
    void *abstract = janet_unwrap_abstract(x);
18147
0
#ifdef JANET_EV
18148
    /* Threaded abstract types get passed through as pointers in the unsafe mode */
18149
0
    if ((flags & JANET_MARSHAL_UNSAFE) &&
18150
0
            (JANET_MEMORY_THREADED_ABSTRACT == (janet_abstract_head(abstract)->gc.flags & JANET_MEM_TYPEBITS))) {
18151
18152
        /* Increment refcount before sending message. This prevents a "death in transit" problem
18153
         * where a message is garbage collected while in transit between two threads - i.e., the sending threads
18154
         * loses the reference and runs a garbage collection before the receiving thread gets the message. */
18155
0
        janet_abstract_incref(abstract);
18156
0
        pushbyte(st, LB_THREADED_ABSTRACT);
18157
0
        pushbytes(st, (uint8_t *) &abstract, sizeof(abstract));
18158
0
        MARK_SEEN();
18159
0
        return;
18160
0
    }
18161
0
#endif
18162
0
    const JanetAbstractType *at = janet_abstract_type(abstract);
18163
0
    if (at->marshal) {
18164
0
        pushbyte(st, LB_ABSTRACT);
18165
0
        marshal_one(st, janet_csymbolv(at->name), flags + 1);
18166
0
        JanetMarshalContext context = {st, NULL, flags + 1, NULL, at};
18167
0
        at->marshal(abstract, &context);
18168
0
    } else {
18169
0
        janet_panicf("cannot marshal %p", x);
18170
0
    }
18171
0
}
18172
18173
/* The main body of the marshaling function. Is the main
18174
 * entry point for the mutually recursive functions. */
18175
0
static void marshal_one(MarshalState *st, Janet x, int flags) {
18176
0
    MARSH_STACKCHECK;
18177
0
    JanetType type = janet_type(x);
18178
18179
    /* Check simple primitives (non reference types, no benefit from memoization) */
18180
0
    switch (type) {
18181
0
        default:
18182
0
            break;
18183
0
        case JANET_NIL:
18184
0
            pushbyte(st, LB_NIL);
18185
0
            return;
18186
0
        case JANET_BOOLEAN:
18187
0
            pushbyte(st, janet_unwrap_boolean(x) ? LB_TRUE : LB_FALSE);
18188
0
            return;
18189
0
        case JANET_NUMBER: {
18190
0
            double xval = janet_unwrap_number(x);
18191
0
            if (janet_checkintrange(xval)) {
18192
0
                pushint(st, (int32_t) xval);
18193
0
                return;
18194
0
            }
18195
0
            break;
18196
0
        }
18197
0
    }
18198
18199
    /* Check reference and registry value */
18200
0
    {
18201
0
        Janet check;
18202
0
        if (st->maybe_cycles) {
18203
0
            check = janet_table_get(&st->seen, x);
18204
0
            if (janet_checkint(check)) {
18205
0
                pushbyte(st, LB_REFERENCE);
18206
0
                pushint(st, janet_unwrap_integer(check));
18207
0
                return;
18208
0
            }
18209
0
        }
18210
0
        if (st->rreg) {
18211
0
            check = janet_table_get(st->rreg, x);
18212
0
            if (janet_checktype(check, JANET_SYMBOL)) {
18213
0
                MARK_SEEN();
18214
0
                const uint8_t *regname = janet_unwrap_symbol(check);
18215
0
                pushbyte(st, LB_REGISTRY);
18216
0
                pushint(st, janet_string_length(regname));
18217
0
                pushbytes(st, regname, janet_string_length(regname));
18218
0
                return;
18219
0
            }
18220
0
        }
18221
0
    }
18222
18223
    /* Reference types */
18224
0
    switch (type) {
18225
0
        case JANET_NUMBER: {
18226
0
            union {
18227
0
                double d;
18228
0
                uint8_t bytes[8];
18229
0
            } u;
18230
0
            u.d = janet_unwrap_number(x);
18231
#ifdef JANET_BIG_ENDIAN
18232
            /* Swap byte order */
18233
            uint8_t temp;
18234
            temp = u.bytes[7];
18235
            u.bytes[7] = u.bytes[0];
18236
            u.bytes[0] = temp;
18237
            temp = u.bytes[6];
18238
            u.bytes[6] = u.bytes[1];
18239
            u.bytes[1] = temp;
18240
            temp = u.bytes[5];
18241
            u.bytes[5] = u.bytes[2];
18242
            u.bytes[2] = temp;
18243
            temp = u.bytes[4];
18244
            u.bytes[4] = u.bytes[3];
18245
            u.bytes[3] = temp;
18246
#endif
18247
0
            pushbyte(st, LB_REAL);
18248
0
            pushbytes(st, u.bytes, 8);
18249
0
            MARK_SEEN();
18250
0
            return;
18251
0
        }
18252
0
        case JANET_STRING:
18253
0
        case JANET_SYMBOL:
18254
0
        case JANET_KEYWORD: {
18255
0
            const uint8_t *str = janet_unwrap_string(x);
18256
0
            int32_t length = janet_string_length(str);
18257
            /* Record reference */
18258
0
            MARK_SEEN();
18259
0
            uint8_t lb = (type == JANET_STRING) ? LB_STRING :
18260
0
                         (type == JANET_SYMBOL) ? LB_SYMBOL :
18261
0
                         LB_KEYWORD;
18262
0
            pushbyte(st, lb);
18263
0
            pushint(st, length);
18264
0
            pushbytes(st, str, length);
18265
0
            return;
18266
0
        }
18267
0
        case JANET_BUFFER: {
18268
0
            JanetBuffer *buffer = janet_unwrap_buffer(x);
18269
            /* Record reference */
18270
0
            MARK_SEEN();
18271
0
#ifdef JANET_EV
18272
0
            if ((flags & JANET_MARSHAL_UNSAFE) &&
18273
0
                    (buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC)) {
18274
0
                pushbyte(st, LB_POINTER_BUFFER);
18275
0
                pushint(st, buffer->count);
18276
0
                pushint(st, buffer->capacity);
18277
0
                pushpointer(st, buffer->data);
18278
0
                return;
18279
0
            }
18280
0
#endif
18281
0
            pushbyte(st, LB_BUFFER);
18282
0
            pushint(st, buffer->count);
18283
0
            pushbytes(st, buffer->data, buffer->count);
18284
0
            return;
18285
0
        }
18286
0
        case JANET_ARRAY: {
18287
0
            int32_t i;
18288
0
            JanetArray *a = janet_unwrap_array(x);
18289
0
            MARK_SEEN();
18290
0
            enum JanetMemoryType memtype = janet_gc_type(a);
18291
0
            pushbyte(st, memtype == JANET_MEMORY_ARRAY_WEAK ? LB_ARRAY_WEAK : LB_ARRAY);
18292
0
            pushint(st, a->count);
18293
0
            for (i = 0; i < a->count; i++)
18294
0
                marshal_one(st, a->data[i], flags + 1);
18295
0
            return;
18296
0
        }
18297
0
        case JANET_TUPLE: {
18298
0
            int32_t i, count, flag;
18299
0
            const Janet *tup = janet_unwrap_tuple(x);
18300
0
            count = janet_tuple_length(tup);
18301
0
            flag = janet_tuple_flag(tup) >> 16;
18302
0
            pushbyte(st, LB_TUPLE);
18303
0
            pushint(st, count);
18304
0
            pushint(st, flag);
18305
0
            for (i = 0; i < count; i++)
18306
0
                marshal_one(st, tup[i], flags + 1);
18307
            /* Mark as seen AFTER marshaling */
18308
0
            MARK_SEEN();
18309
0
            return;
18310
0
        }
18311
0
        case JANET_TABLE: {
18312
0
            JanetTable *t = janet_unwrap_table(x);
18313
0
            MARK_SEEN();
18314
0
            enum JanetMemoryType memtype = janet_gc_type(t);
18315
0
            if (memtype == JANET_MEMORY_TABLE_WEAKK) {
18316
0
                pushbyte(st, t->proto ? LB_TABLE_WEAKK_PROTO : LB_TABLE_WEAKK);
18317
0
            } else if (memtype == JANET_MEMORY_TABLE_WEAKV) {
18318
0
                pushbyte(st, t->proto ? LB_TABLE_WEAKV_PROTO : LB_TABLE_WEAKV);
18319
0
            } else if (memtype == JANET_MEMORY_TABLE_WEAKKV) {
18320
0
                pushbyte(st, t->proto ? LB_TABLE_WEAKKV_PROTO : LB_TABLE_WEAKKV);
18321
0
            } else {
18322
0
                pushbyte(st, t->proto ? LB_TABLE_PROTO : LB_TABLE);
18323
0
            }
18324
0
            pushint(st, t->count);
18325
0
            if (t->proto)
18326
0
                marshal_one(st, janet_wrap_table(t->proto), flags + 1);
18327
0
            for (int32_t i = 0; i < t->capacity; i++) {
18328
0
                if (janet_checktype(t->data[i].key, JANET_NIL))
18329
0
                    continue;
18330
0
                marshal_one(st, t->data[i].key, flags + 1);
18331
0
                marshal_one(st, t->data[i].value, flags + 1);
18332
0
            }
18333
0
            return;
18334
0
        }
18335
0
        case JANET_STRUCT: {
18336
0
            int32_t count;
18337
0
            const JanetKV *struct_ = janet_unwrap_struct(x);
18338
0
            count = janet_struct_length(struct_);
18339
0
            pushbyte(st, janet_struct_proto(struct_) ? LB_STRUCT_PROTO : LB_STRUCT);
18340
0
            pushint(st, count);
18341
0
            if (janet_struct_proto(struct_))
18342
0
                marshal_one(st, janet_wrap_struct(janet_struct_proto(struct_)), flags + 1);
18343
0
            for (int32_t i = 0; i < janet_struct_capacity(struct_); i++) {
18344
0
                if (janet_checktype(struct_[i].key, JANET_NIL))
18345
0
                    continue;
18346
0
                marshal_one(st, struct_[i].key, flags + 1);
18347
0
                marshal_one(st, struct_[i].value, flags + 1);
18348
0
            }
18349
            /* Mark as seen AFTER marshaling */
18350
0
            MARK_SEEN();
18351
0
            return;
18352
0
        }
18353
0
        case JANET_ABSTRACT: {
18354
0
            marshal_one_abstract(st, x, flags);
18355
0
            return;
18356
0
        }
18357
0
        case JANET_FUNCTION: {
18358
0
            pushbyte(st, LB_FUNCTION);
18359
0
            JanetFunction *func = janet_unwrap_function(x);
18360
0
            pushint(st, func->def->environments_length);
18361
            /* Mark seen before reading def */
18362
0
            MARK_SEEN();
18363
0
            marshal_one_def(st, func->def, flags);
18364
0
            for (int32_t i = 0; i < func->def->environments_length; i++)
18365
0
                marshal_one_env(st, func->envs[i], flags + 1);
18366
0
            return;
18367
0
        }
18368
0
        case JANET_FIBER: {
18369
0
            MARK_SEEN();
18370
0
            pushbyte(st, LB_FIBER);
18371
0
            marshal_one_fiber(st, janet_unwrap_fiber(x), flags + 1);
18372
0
            return;
18373
0
        }
18374
0
        case JANET_CFUNCTION: {
18375
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) goto no_registry;
18376
0
            MARK_SEEN();
18377
0
            pushbyte(st, LB_UNSAFE_CFUNCTION);
18378
0
            JanetCFunction cfn = janet_unwrap_cfunction(x);
18379
0
            pushbytes(st, (uint8_t *) &cfn, sizeof(JanetCFunction));
18380
0
            return;
18381
0
        }
18382
0
        case JANET_POINTER: {
18383
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) goto no_registry;
18384
0
            MARK_SEEN();
18385
0
            pushbyte(st, LB_UNSAFE_POINTER);
18386
0
            pushpointer(st, janet_unwrap_pointer(x));
18387
0
            return;
18388
0
        }
18389
0
    no_registry:
18390
0
        default: {
18391
0
            janet_panicf("no registry value and cannot marshal %p", x);
18392
0
        }
18393
0
    }
18394
0
#undef MARK_SEEN
18395
0
}
18396
18397
void janet_marshal(
18398
    JanetBuffer *buf,
18399
    Janet x,
18400
    JanetTable *rreg,
18401
0
    int flags) {
18402
0
    MarshalState st;
18403
0
    st.buf = buf;
18404
0
    st.nextid = 0;
18405
0
    st.seen_defs = NULL;
18406
0
    st.seen_envs = NULL;
18407
0
    st.rreg = rreg;
18408
0
    st.maybe_cycles = !(flags & JANET_MARSHAL_NO_CYCLES);
18409
0
    janet_table_init(&st.seen, 0);
18410
0
    marshal_one(&st, x, flags);
18411
0
    janet_table_deinit(&st.seen);
18412
0
    janet_v_free(st.seen_envs);
18413
0
    janet_v_free(st.seen_defs);
18414
0
}
18415
18416
typedef struct {
18417
    jmp_buf err;
18418
    Janet *lookup;
18419
    JanetTable *reg;
18420
    JanetFuncEnv **lookup_envs;
18421
    JanetFuncDef **lookup_defs;
18422
    const uint8_t *start;
18423
    const uint8_t *end;
18424
} UnmarshalState;
18425
18426
0
#define MARSH_EOS(st, data) do { \
18427
0
    if ((data) >= (st)->end) janet_panic("unexpected end of source");\
18428
0
} while (0)
18429
18430
/* Helper to read a 32 bit integer from an unmarshal state */
18431
0
static int32_t readint(UnmarshalState *st, const uint8_t **atdata) {
18432
0
    const uint8_t *data = *atdata;
18433
0
    int32_t ret;
18434
0
    MARSH_EOS(st, data);
18435
0
    if (*data < 128) {
18436
0
        ret = *data++;
18437
0
    } else if (*data < 192) {
18438
0
        MARSH_EOS(st, data + 1);
18439
0
        uint32_t uret = ((data[0] & 0x3F) << 8) + data[1];
18440
        /* Sign extend 18 MSBs */
18441
0
        uret |= (uret >> 13) ? 0xFFFFC000 : 0;
18442
0
        ret = (int32_t)uret;
18443
0
        data += 2;
18444
0
    } else if (*data == LB_INTEGER) {
18445
0
        MARSH_EOS(st, data + 4);
18446
0
        uint32_t ui = ((uint32_t)(data[1]) << 24) |
18447
0
                      ((uint32_t)(data[2]) << 16) |
18448
0
                      ((uint32_t)(data[3]) << 8) |
18449
0
                      (uint32_t)(data[4]);
18450
0
        ret = (int32_t)ui;
18451
0
        data += 5;
18452
0
    } else {
18453
0
        janet_panicf("expected integer, got byte %x at index %d",
18454
0
                     *data,
18455
0
                     data - st->start);
18456
0
        ret = 0;
18457
0
    }
18458
0
    *atdata = data;
18459
0
    return ret;
18460
0
}
18461
18462
/* Helper to read a natural number (int >= 0). */
18463
0
static int32_t readnat(UnmarshalState *st, const uint8_t **atdata) {
18464
0
    int32_t ret = readint(st, atdata);
18465
0
    if (ret < 0) {
18466
0
        janet_panicf("expected integer >= 0, got %d", ret);
18467
0
    }
18468
0
    return ret;
18469
0
}
18470
18471
/* Helper to read a size_t (up to 8 bytes unsigned). */
18472
0
static uint64_t read64(UnmarshalState *st, const uint8_t **atdata) {
18473
0
    uint64_t ret;
18474
0
    const uint8_t *data = *atdata;
18475
0
    MARSH_EOS(st, data);
18476
0
    if (*data <= 0xF0) {
18477
        /* Single byte */
18478
0
        ret = *data;
18479
0
        *atdata = data + 1;
18480
0
    } else {
18481
        /* Multibyte, little endian */
18482
0
        int nbytes = *data - 0xF0;
18483
0
        ret = 0;
18484
0
        if (nbytes > 8) janet_panic("invalid 64 bit integer");
18485
0
        MARSH_EOS(st, data + nbytes);
18486
0
        for (int i = nbytes; i > 0; i--)
18487
0
            ret = (ret << 8) + data[i];
18488
0
        *atdata = data + nbytes + 1;
18489
0
    }
18490
0
    return ret;
18491
0
}
18492
18493
#ifdef JANET_MARSHAL_DEBUG
18494
static void dump_reference_table(UnmarshalState *st) {
18495
    for (int32_t i = 0; i < janet_v_count(st->lookup); i++) {
18496
        janet_eprintf("  reference %d (%t) = %v\n", i, st->lookup[i], st->lookup[i]);
18497
    }
18498
}
18499
#endif
18500
18501
/* Assert a janet type */
18502
0
static void janet_asserttype(Janet x, JanetType t, UnmarshalState *st) {
18503
0
    if (!janet_checktype(x, t)) {
18504
#ifdef JANET_MARSHAL_DEBUG
18505
        dump_reference_table(st);
18506
#else
18507
0
        (void) st;
18508
0
#endif
18509
0
        janet_panicf("expected type %T, got %v", 1 << t, x);
18510
0
    }
18511
0
}
18512
18513
/* Forward declarations for mutual recursion */
18514
static const uint8_t *unmarshal_one(
18515
    UnmarshalState *st,
18516
    const uint8_t *data,
18517
    Janet *out,
18518
    int flags);
18519
static const uint8_t *unmarshal_one_env(
18520
    UnmarshalState *st,
18521
    const uint8_t *data,
18522
    JanetFuncEnv **out,
18523
    int flags);
18524
static const uint8_t *unmarshal_one_def(
18525
    UnmarshalState *st,
18526
    const uint8_t *data,
18527
    JanetFuncDef **out,
18528
    int flags);
18529
static const uint8_t *unmarshal_one_fiber(
18530
    UnmarshalState *st,
18531
    const uint8_t *data,
18532
    JanetFiber **out,
18533
    int flags);
18534
18535
/* Unmarshal a funcenv */
18536
static const uint8_t *unmarshal_one_env(
18537
    UnmarshalState *st,
18538
    const uint8_t *data,
18539
    JanetFuncEnv **out,
18540
0
    int flags) {
18541
0
    MARSH_EOS(st, data);
18542
0
    if (*data == LB_FUNCENV_REF) {
18543
0
        data++;
18544
0
        int32_t index = readint(st, &data);
18545
0
        if (index < 0 || index >= janet_v_count(st->lookup_envs))
18546
0
            janet_panicf("invalid funcenv reference %d", index);
18547
0
        *out = st->lookup_envs[index];
18548
0
    } else {
18549
0
        JanetFuncEnv *env = janet_gcalloc(JANET_MEMORY_FUNCENV, sizeof(JanetFuncEnv));
18550
0
        env->length = 0;
18551
0
        env->offset = 0;
18552
0
        env->as.values = NULL;
18553
0
        janet_v_push(st->lookup_envs, env);
18554
0
        int32_t offset = readnat(st, &data);
18555
0
        int32_t length = readnat(st, &data);
18556
0
        if (offset > 0) {
18557
0
            Janet fiberv;
18558
            /* On stack variant */
18559
0
            data = unmarshal_one(st, data, &fiberv, flags);
18560
0
            janet_asserttype(fiberv, JANET_FIBER, st);
18561
0
            env->as.fiber = janet_unwrap_fiber(fiberv);
18562
            /* Negative offset indicates untrusted input */
18563
0
            env->offset = -offset;
18564
0
        } else {
18565
            /* Off stack variant */
18566
0
            if (length == 0) {
18567
0
                janet_panic("invalid funcenv length");
18568
0
            }
18569
0
            env->as.values = janet_malloc(sizeof(Janet) * (size_t) length);
18570
0
            if (!env->as.values) {
18571
0
                JANET_OUT_OF_MEMORY;
18572
0
            }
18573
0
            env->offset = 0;
18574
0
            for (int32_t i = 0; i < length; i++)
18575
0
                data = unmarshal_one(st, data, env->as.values + i, flags);
18576
0
        }
18577
0
        env->length = length;
18578
0
        *out = env;
18579
0
    }
18580
0
    return data;
18581
0
}
18582
18583
/* Unmarshal a series of u32s */
18584
0
static const uint8_t *janet_unmarshal_u32s(UnmarshalState *st, const uint8_t *data, uint32_t *into, int32_t n) {
18585
0
    for (int32_t i = 0; i < n; i++) {
18586
0
        MARSH_EOS(st, data + 3);
18587
0
        into[i] =
18588
0
            (uint32_t)(data[0]) |
18589
0
            ((uint32_t)(data[1]) << 8) |
18590
0
            ((uint32_t)(data[2]) << 16) |
18591
0
            ((uint32_t)(data[3]) << 24);
18592
0
        data += 4;
18593
0
    }
18594
0
    return data;
18595
0
}
18596
18597
/* Unmarshal a funcdef */
18598
static const uint8_t *unmarshal_one_def(
18599
    UnmarshalState *st,
18600
    const uint8_t *data,
18601
    JanetFuncDef **out,
18602
0
    int flags) {
18603
0
    MARSH_EOS(st, data);
18604
0
    if (*data == LB_FUNCDEF_REF) {
18605
0
        data++;
18606
0
        int32_t index = readint(st, &data);
18607
0
        if (index < 0 || index >= janet_v_count(st->lookup_defs))
18608
0
            janet_panicf("invalid funcdef reference %d", index);
18609
0
        *out = st->lookup_defs[index];
18610
0
    } else {
18611
        /* Initialize with values that will not break garbage collection
18612
         * if unmarshalling fails. */
18613
0
        JanetFuncDef *def = janet_gcalloc(JANET_MEMORY_FUNCDEF, sizeof(JanetFuncDef));
18614
0
        def->environments_length = 0;
18615
0
        def->defs_length = 0;
18616
0
        def->constants_length = 0;
18617
0
        def->bytecode_length = 0;
18618
0
        def->name = NULL;
18619
0
        def->source = NULL;
18620
0
        def->closure_bitset = NULL;
18621
0
        def->defs = NULL;
18622
0
        def->environments = NULL;
18623
0
        def->constants = NULL;
18624
0
        def->bytecode = NULL;
18625
0
        def->sourcemap = NULL;
18626
0
        def->symbolmap = NULL;
18627
0
        def->symbolmap_length = 0;
18628
0
        janet_v_push(st->lookup_defs, def);
18629
18630
        /* Set default lengths to zero */
18631
0
        int32_t bytecode_length = 0;
18632
0
        int32_t constants_length = 0;
18633
0
        int32_t environments_length = 0;
18634
0
        int32_t defs_length = 0;
18635
0
        int32_t symbolmap_length = 0;
18636
18637
        /* Read flags and other fixed values */
18638
0
        def->flags = readint(st, &data);
18639
0
        def->slotcount = readnat(st, &data);
18640
0
        def->arity = readnat(st, &data);
18641
0
        def->min_arity = readnat(st, &data);
18642
0
        def->max_arity = readnat(st, &data);
18643
18644
        /* Read some lengths */
18645
0
        constants_length = readnat(st, &data);
18646
0
        bytecode_length = readnat(st, &data);
18647
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASENVS)
18648
0
            environments_length = readnat(st, &data);
18649
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS)
18650
0
            defs_length = readnat(st, &data);
18651
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP)
18652
0
            symbolmap_length = readnat(st, &data);
18653
18654
        /* Check name and source (optional) */
18655
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASNAME) {
18656
0
            Janet x;
18657
0
            data = unmarshal_one(st, data, &x, flags + 1);
18658
0
            janet_asserttype(x, JANET_STRING, st);
18659
0
            def->name = janet_unwrap_string(x);
18660
0
        }
18661
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCE) {
18662
0
            Janet x;
18663
0
            data = unmarshal_one(st, data, &x, flags + 1);
18664
0
            janet_asserttype(x, JANET_STRING, st);
18665
0
            def->source = janet_unwrap_string(x);
18666
0
        }
18667
18668
        /* Unmarshal constants */
18669
0
        if (constants_length) {
18670
0
            def->constants = janet_malloc(sizeof(Janet) * constants_length);
18671
0
            if (!def->constants) {
18672
0
                JANET_OUT_OF_MEMORY;
18673
0
            }
18674
0
            for (int32_t i = 0; i < constants_length; i++)
18675
0
                data = unmarshal_one(st, data, def->constants + i, flags + 1);
18676
0
        } else {
18677
0
            def->constants = NULL;
18678
0
        }
18679
0
        def->constants_length = constants_length;
18680
18681
        /* Unmarshal symbol map, if needed */
18682
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP) {
18683
0
            size_t size = sizeof(JanetSymbolMap) * symbolmap_length;
18684
0
            def->symbolmap = janet_malloc(size);
18685
0
            if (def->symbolmap == NULL) {
18686
0
                JANET_OUT_OF_MEMORY;
18687
0
            }
18688
0
            for (int32_t i = 0; i < symbolmap_length; i++) {
18689
0
                def->symbolmap[i].birth_pc = (uint32_t) readint(st, &data);
18690
0
                def->symbolmap[i].death_pc = (uint32_t) readint(st, &data);
18691
0
                def->symbolmap[i].slot_index = (uint32_t) readint(st, &data);
18692
0
                Janet value;
18693
0
                data = unmarshal_one(st, data, &value, flags + 1);
18694
0
                if (!janet_checktype(value, JANET_SYMBOL)) {
18695
0
                    janet_panicf("corrupted symbolmap when unmarshalling debug info, got %v", value);
18696
0
                }
18697
0
                def->symbolmap[i].symbol = janet_unwrap_symbol(value);
18698
0
            }
18699
0
            def->symbolmap_length = (uint32_t) symbolmap_length;
18700
0
        }
18701
18702
        /* Unmarshal bytecode */
18703
0
        def->bytecode = janet_malloc(sizeof(uint32_t) * bytecode_length);
18704
0
        if (!def->bytecode) {
18705
0
            JANET_OUT_OF_MEMORY;
18706
0
        }
18707
0
        data = janet_unmarshal_u32s(st, data, def->bytecode, bytecode_length);
18708
0
        def->bytecode_length = bytecode_length;
18709
18710
        /* Unmarshal environments */
18711
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASENVS) {
18712
0
            def->environments = janet_calloc(1, sizeof(int32_t) * (size_t) environments_length);
18713
0
            if (!def->environments) {
18714
0
                JANET_OUT_OF_MEMORY;
18715
0
            }
18716
0
            for (int32_t i = 0; i < environments_length; i++) {
18717
0
                def->environments[i] = readint(st, &data);
18718
0
            }
18719
0
        } else {
18720
0
            def->environments = NULL;
18721
0
        }
18722
0
        def->environments_length = environments_length;
18723
18724
        /* Unmarshal sub funcdefs */
18725
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS) {
18726
0
            def->defs = janet_calloc(1, sizeof(JanetFuncDef *) * (size_t) defs_length);
18727
0
            if (!def->defs) {
18728
0
                JANET_OUT_OF_MEMORY;
18729
0
            }
18730
0
            for (int32_t i = 0; i < defs_length; i++) {
18731
0
                data = unmarshal_one_def(st, data, def->defs + i, flags + 1);
18732
0
            }
18733
0
        } else {
18734
0
            def->defs = NULL;
18735
0
        }
18736
0
        def->defs_length = defs_length;
18737
18738
        /* Unmarshal source maps if needed */
18739
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCEMAP) {
18740
0
            int32_t current = 0;
18741
0
            def->sourcemap = janet_malloc(sizeof(JanetSourceMapping) * (size_t) bytecode_length);
18742
0
            if (!def->sourcemap) {
18743
0
                JANET_OUT_OF_MEMORY;
18744
0
            }
18745
0
            for (int32_t i = 0; i < bytecode_length; i++) {
18746
0
                current += readint(st, &data);
18747
0
                def->sourcemap[i].line = current;
18748
0
                def->sourcemap[i].column = readint(st, &data);
18749
0
            }
18750
0
        } else {
18751
0
            def->sourcemap = NULL;
18752
0
        }
18753
18754
        /* Unmarshal closure bitset if needed */
18755
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASCLOBITSET) {
18756
0
            int32_t n = (def->slotcount + 31) >> 5;
18757
0
            def->closure_bitset = janet_malloc(sizeof(uint32_t) * (size_t) n);
18758
0
            if (NULL == def->closure_bitset) {
18759
0
                JANET_OUT_OF_MEMORY;
18760
0
            }
18761
0
            data = janet_unmarshal_u32s(st, data, def->closure_bitset, n);
18762
0
        }
18763
18764
        /* Validate */
18765
0
        if (janet_verify(def))
18766
0
            janet_panic("funcdef has invalid bytecode");
18767
18768
        /* Set def */
18769
0
        *out = def;
18770
0
    }
18771
0
    return data;
18772
0
}
18773
18774
/* Unmarshal a fiber */
18775
static const uint8_t *unmarshal_one_fiber(
18776
    UnmarshalState *st,
18777
    const uint8_t *data,
18778
    JanetFiber **out,
18779
0
    int flags) {
18780
18781
    /* Initialize a new fiber with gc friendly defaults */
18782
0
    JanetFiber *fiber = janet_gcalloc(JANET_MEMORY_FIBER, sizeof(JanetFiber));
18783
0
    fiber->flags = 0;
18784
0
    fiber->frame = 0;
18785
0
    fiber->stackstart = 0;
18786
0
    fiber->stacktop = 0;
18787
0
    fiber->capacity = 0;
18788
0
    fiber->maxstack = 0;
18789
0
    fiber->data = NULL;
18790
0
    fiber->child = NULL;
18791
0
    fiber->env = NULL;
18792
0
    fiber->last_value = janet_wrap_nil();
18793
0
#ifdef JANET_EV
18794
0
    fiber->sched_id = 0;
18795
0
    fiber->supervisor_channel = NULL;
18796
0
    fiber->ev_state = NULL;
18797
0
    fiber->ev_callback = NULL;
18798
0
    fiber->ev_stream = NULL;
18799
0
#endif
18800
18801
    /* Push fiber to seen stack */
18802
0
    janet_v_push(st->lookup, janet_wrap_fiber(fiber));
18803
18804
    /* Read ints */
18805
0
    int32_t fiber_flags = readint(st, &data);
18806
0
    int32_t frame = readnat(st, &data);
18807
0
    int32_t fiber_stackstart = readnat(st, &data);
18808
0
    int32_t fiber_stacktop = readnat(st, &data);
18809
0
    int32_t fiber_maxstack = readnat(st, &data);
18810
0
    JanetTable *fiber_env = NULL;
18811
18812
    /* Check for bad flags and ints */
18813
0
    if ((int32_t)(frame + JANET_FRAME_SIZE) > fiber_stackstart ||
18814
0
            fiber_stackstart > fiber_stacktop ||
18815
0
            fiber_stacktop > fiber_maxstack) {
18816
0
        janet_panic("fiber has incorrect stack setup");
18817
0
    }
18818
18819
    /* Allocate stack memory */
18820
0
    fiber->capacity = fiber_stacktop + 10;
18821
0
    fiber->data = janet_malloc(sizeof(Janet) * fiber->capacity);
18822
0
    if (!fiber->data) {
18823
0
        JANET_OUT_OF_MEMORY;
18824
0
    }
18825
0
    for (int32_t i = 0; i < fiber->capacity; i++) {
18826
0
        fiber->data[i] = janet_wrap_nil();
18827
0
    }
18828
18829
    /* get frames */
18830
0
    int32_t stack = frame;
18831
0
    int32_t stacktop = fiber_stackstart - JANET_FRAME_SIZE;
18832
0
    while (stack > 0) {
18833
0
        JanetFunction *func = NULL;
18834
0
        JanetFuncDef *def = NULL;
18835
0
        JanetFuncEnv *env = NULL;
18836
0
        int32_t frameflags = readint(st, &data);
18837
0
        int32_t prevframe = readnat(st, &data);
18838
0
        int32_t pcdiff = readnat(st, &data);
18839
18840
        /* Get frame items */
18841
0
        Janet *framestack = fiber->data + stack;
18842
0
        JanetStackFrame *framep = janet_stack_frame(framestack);
18843
18844
        /* Get function */
18845
0
        Janet funcv;
18846
0
        data = unmarshal_one(st, data, &funcv, flags + 1);
18847
0
        janet_asserttype(funcv, JANET_FUNCTION, st);
18848
0
        func = janet_unwrap_function(funcv);
18849
0
        def = func->def;
18850
18851
        /* Check env */
18852
0
        if (frameflags & JANET_STACKFRAME_HASENV) {
18853
0
            frameflags &= ~JANET_STACKFRAME_HASENV;
18854
0
            data = unmarshal_one_env(st, data, &env, flags + 1);
18855
0
        }
18856
18857
        /* Error checking */
18858
0
        int32_t expected_framesize = def->slotcount;
18859
0
        if (expected_framesize != stacktop - stack) {
18860
0
            janet_panic("fiber stackframe size mismatch");
18861
0
        }
18862
0
        if (pcdiff >= def->bytecode_length) {
18863
0
            janet_panic("fiber stackframe has invalid pc");
18864
0
        }
18865
0
        if ((int32_t)(prevframe + JANET_FRAME_SIZE) > stack) {
18866
0
            janet_panic("fiber stackframe does not align with previous frame");
18867
0
        }
18868
18869
        /* Get stack items */
18870
0
        for (int32_t i = stack; i < stacktop; i++)
18871
0
            data = unmarshal_one(st, data, fiber->data + i, flags + 1);
18872
18873
        /* Set frame */
18874
0
        framep->env = env;
18875
0
        framep->pc = def->bytecode + pcdiff;
18876
0
        framep->prevframe = prevframe;
18877
0
        framep->flags = frameflags;
18878
0
        framep->func = func;
18879
18880
        /* Goto previous frame */
18881
0
        stacktop = stack - JANET_FRAME_SIZE;
18882
0
        stack = prevframe;
18883
0
    }
18884
0
    if (stack < 0) {
18885
0
        janet_panic("fiber has too many stackframes");
18886
0
    }
18887
18888
    /* Check for fiber env */
18889
0
    if (fiber_flags & JANET_FIBER_FLAG_HASENV) {
18890
0
        Janet envv;
18891
0
        fiber_flags &= ~JANET_FIBER_FLAG_HASENV;
18892
0
        data = unmarshal_one(st, data, &envv, flags + 1);
18893
0
        janet_asserttype(envv, JANET_TABLE, st);
18894
0
        fiber_env = janet_unwrap_table(envv);
18895
0
    }
18896
18897
    /* Check for child fiber */
18898
0
    if (fiber_flags & JANET_FIBER_FLAG_HASCHILD) {
18899
0
        Janet fiberv;
18900
0
        fiber_flags &= ~JANET_FIBER_FLAG_HASCHILD;
18901
0
        data = unmarshal_one(st, data, &fiberv, flags + 1);
18902
0
        janet_asserttype(fiberv, JANET_FIBER, st);
18903
0
        fiber->child = janet_unwrap_fiber(fiberv);
18904
0
    }
18905
18906
    /* Get the fiber last value */
18907
0
    data = unmarshal_one(st, data, &fiber->last_value, flags + 1);
18908
18909
    /* We have valid fiber, finally construct remaining fields. */
18910
0
    fiber->frame = frame;
18911
0
    fiber->flags = fiber_flags;
18912
0
    fiber->stackstart = fiber_stackstart;
18913
0
    fiber->stacktop = fiber_stacktop;
18914
0
    fiber->maxstack = fiber_maxstack;
18915
0
    fiber->env = fiber_env;
18916
18917
0
    int status = janet_fiber_status(fiber);
18918
0
    if (status < 0 || status > JANET_STATUS_ALIVE) {
18919
0
        janet_panic("invalid fiber status");
18920
0
    }
18921
18922
    /* Return data */
18923
0
    *out = fiber;
18924
0
    return data;
18925
0
}
18926
18927
0
void janet_unmarshal_ensure(JanetMarshalContext *ctx, size_t size) {
18928
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18929
0
    MARSH_EOS(st, ctx->data + size);
18930
0
}
18931
18932
0
int32_t janet_unmarshal_int(JanetMarshalContext *ctx) {
18933
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18934
0
    return readint(st, &(ctx->data));
18935
0
}
18936
18937
0
size_t janet_unmarshal_size(JanetMarshalContext *ctx) {
18938
0
    return (size_t) janet_unmarshal_int64(ctx);
18939
0
}
18940
18941
0
int64_t janet_unmarshal_int64(JanetMarshalContext *ctx) {
18942
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18943
0
    return read64(st, &(ctx->data));
18944
0
}
18945
18946
0
void *janet_unmarshal_ptr(JanetMarshalContext *ctx) {
18947
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
18948
0
        janet_panic("can only unmarshal pointers in unsafe mode");
18949
0
    }
18950
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18951
0
    void *ptr;
18952
0
    MARSH_EOS(st, ctx->data + sizeof(void *) - 1);
18953
0
    memcpy((char *) &ptr, ctx->data, sizeof(void *));
18954
0
    ctx->data += sizeof(void *);
18955
0
    return ptr;
18956
0
}
18957
18958
0
uint8_t janet_unmarshal_byte(JanetMarshalContext *ctx) {
18959
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18960
0
    MARSH_EOS(st, ctx->data);
18961
0
    return *(ctx->data++);
18962
0
}
18963
18964
0
void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, size_t len) {
18965
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18966
0
    MARSH_EOS(st, ctx->data + len - 1);
18967
0
    safe_memcpy(dest, ctx->data, len);
18968
0
    ctx->data += len;
18969
0
}
18970
18971
0
Janet janet_unmarshal_janet(JanetMarshalContext *ctx) {
18972
0
    Janet ret;
18973
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18974
0
    ctx->data = unmarshal_one(st, ctx->data, &ret, ctx->flags);
18975
0
    return ret;
18976
0
}
18977
18978
0
void janet_unmarshal_abstract_reuse(JanetMarshalContext *ctx, void *p) {
18979
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
18980
0
    if (ctx->at == NULL) {
18981
0
        janet_panicf("janet_unmarshal_abstract called more than once");
18982
0
    }
18983
0
    janet_v_push(st->lookup, janet_wrap_abstract(p));
18984
0
    ctx->at = NULL;
18985
0
}
18986
18987
0
void *janet_unmarshal_abstract(JanetMarshalContext *ctx, size_t size) {
18988
0
    void *p = janet_abstract(ctx->at, size);
18989
0
    janet_unmarshal_abstract_reuse(ctx, p);
18990
0
    return p;
18991
0
}
18992
18993
0
void *janet_unmarshal_abstract_threaded(JanetMarshalContext *ctx, size_t size) {
18994
#ifdef JANET_THREADS
18995
    void *p = janet_abstract_threaded(ctx->at, size);
18996
    janet_unmarshal_abstract_reuse(ctx, p);
18997
    return p;
18998
#else
18999
0
    (void) ctx;
19000
0
    (void) size;
19001
0
    janet_panic("threaded abstracts not supported");
19002
0
#endif
19003
0
}
19004
19005
0
static const uint8_t *unmarshal_one_abstract(UnmarshalState *st, const uint8_t *data, Janet *out, int flags) {
19006
0
    Janet key;
19007
0
    data = unmarshal_one(st, data, &key, flags + 1);
19008
0
    const JanetAbstractType *at = janet_get_abstract_type(key);
19009
0
    if (at == NULL) janet_panic("unknown abstract type");
19010
0
    if (at->unmarshal) {
19011
0
        JanetMarshalContext context = {NULL, st, flags, data, at};
19012
0
        void *abst = at->unmarshal(&context);
19013
0
        janet_assert(abst != NULL, "null pointer abstract");
19014
0
        *out = janet_wrap_abstract(abst);
19015
0
        if (context.at != NULL) {
19016
0
            janet_panic("janet_unmarshal_abstract not called");
19017
0
        }
19018
0
        return context.data;
19019
0
    }
19020
0
    janet_panic("invalid abstract type - no unmarshal function pointer");
19021
0
}
19022
19023
static const uint8_t *unmarshal_one(
19024
    UnmarshalState *st,
19025
    const uint8_t *data,
19026
    Janet *out,
19027
0
    int flags) {
19028
0
    uint8_t lead;
19029
0
    MARSH_STACKCHECK;
19030
0
    MARSH_EOS(st, data);
19031
0
    lead = data[0];
19032
0
    if (lead < LB_REAL) {
19033
0
        *out = janet_wrap_integer(readint(st, &data));
19034
0
        return data;
19035
0
    }
19036
0
    switch (lead) {
19037
0
        case LB_NIL:
19038
0
            *out = janet_wrap_nil();
19039
0
            return data + 1;
19040
0
        case LB_FALSE:
19041
0
            *out = janet_wrap_false();
19042
0
            return data + 1;
19043
0
        case LB_TRUE:
19044
0
            *out = janet_wrap_true();
19045
0
            return data + 1;
19046
0
        case LB_INTEGER:
19047
            /* Long integer */
19048
0
            MARSH_EOS(st, data + 4);
19049
0
            uint32_t ui = ((uint32_t)(data[4])) |
19050
0
                          ((uint32_t)(data[3]) << 8) |
19051
0
                          ((uint32_t)(data[2]) << 16) |
19052
0
                          ((uint32_t)(data[1]) << 24);
19053
0
            int32_t si = (int32_t)ui;
19054
0
            *out = janet_wrap_integer(si);
19055
0
            return data + 5;
19056
0
        case LB_REAL:
19057
            /* Real */
19058
0
        {
19059
0
            union {
19060
0
                double d;
19061
0
                uint8_t bytes[8];
19062
0
            } u;
19063
0
            MARSH_EOS(st, data + 8);
19064
#ifdef JANET_BIG_ENDIAN
19065
            u.bytes[0] = data[8];
19066
            u.bytes[1] = data[7];
19067
            u.bytes[2] = data[6];
19068
            u.bytes[3] = data[5];
19069
            u.bytes[4] = data[4];
19070
            u.bytes[5] = data[3];
19071
            u.bytes[6] = data[2];
19072
            u.bytes[7] = data[1];
19073
#else
19074
0
            memcpy(&u.bytes, data + 1, sizeof(double));
19075
0
#endif
19076
0
            *out = janet_wrap_number_safe(u.d);
19077
0
            janet_v_push(st->lookup, *out);
19078
0
            return data + 9;
19079
0
        }
19080
0
        case LB_STRING:
19081
0
        case LB_SYMBOL:
19082
0
        case LB_BUFFER:
19083
0
        case LB_KEYWORD:
19084
0
        case LB_REGISTRY: {
19085
0
            data++;
19086
0
            int32_t len = readnat(st, &data);
19087
0
            MARSH_EOS(st, data - 1 + len);
19088
0
            if (lead == LB_STRING) {
19089
0
                const uint8_t *str = janet_string(data, len);
19090
0
                *out = janet_wrap_string(str);
19091
0
            } else if (lead == LB_SYMBOL) {
19092
0
                const uint8_t *str = janet_symbol(data, len);
19093
0
                *out = janet_wrap_symbol(str);
19094
0
            } else if (lead == LB_KEYWORD) {
19095
0
                const uint8_t *str = janet_keyword(data, len);
19096
0
                *out = janet_wrap_keyword(str);
19097
0
            } else if (lead == LB_REGISTRY) {
19098
0
                if (st->reg) {
19099
0
                    Janet regkey = janet_symbolv(data, len);
19100
0
                    *out = janet_table_get(st->reg, regkey);
19101
0
                } else {
19102
0
                    *out = janet_wrap_nil();
19103
0
                }
19104
0
            } else { /* (lead == LB_BUFFER) */
19105
0
                JanetBuffer *buffer = janet_buffer(len);
19106
0
                buffer->count = len;
19107
0
                safe_memcpy(buffer->data, data, len);
19108
0
                *out = janet_wrap_buffer(buffer);
19109
0
            }
19110
0
            janet_v_push(st->lookup, *out);
19111
0
            return data + len;
19112
0
        }
19113
0
        case LB_FIBER: {
19114
0
            JanetFiber *fiber;
19115
0
            data = unmarshal_one_fiber(st, data + 1, &fiber, flags + 1);
19116
0
            *out = janet_wrap_fiber(fiber);
19117
0
            return data;
19118
0
        }
19119
0
        case LB_FUNCTION: {
19120
0
            JanetFunction *func;
19121
0
            JanetFuncDef *def;
19122
0
            data++;
19123
0
            int32_t len = readnat(st, &data);
19124
0
            if (len > 255) {
19125
0
                janet_panicf("invalid function - too many environments (%d)", len);
19126
0
            }
19127
0
            func = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction) +
19128
0
                                 len * sizeof(JanetFuncEnv));
19129
0
            func->def = NULL;
19130
0
            for (int32_t i = 0; i < len; i++) {
19131
0
                func->envs[i] = NULL;
19132
0
            }
19133
0
            *out = janet_wrap_function(func);
19134
0
            janet_v_push(st->lookup, *out);
19135
0
            data = unmarshal_one_def(st, data, &def, flags + 1);
19136
0
            func->def = def;
19137
0
            for (int32_t i = 0; i < len; i++) {
19138
0
                data = unmarshal_one_env(st, data, &(func->envs[i]), flags + 1);
19139
0
            }
19140
0
            return data;
19141
0
        }
19142
0
        case LB_ABSTRACT: {
19143
0
            data++;
19144
0
            return unmarshal_one_abstract(st, data, out, flags);
19145
0
        }
19146
0
        case LB_REFERENCE:
19147
0
        case LB_ARRAY:
19148
0
        case LB_ARRAY_WEAK:
19149
0
        case LB_TUPLE:
19150
0
        case LB_STRUCT:
19151
0
        case LB_STRUCT_PROTO:
19152
0
        case LB_TABLE:
19153
0
        case LB_TABLE_PROTO:
19154
0
        case LB_TABLE_WEAKK:
19155
0
        case LB_TABLE_WEAKV:
19156
0
        case LB_TABLE_WEAKKV:
19157
0
        case LB_TABLE_WEAKK_PROTO:
19158
0
        case LB_TABLE_WEAKV_PROTO:
19159
0
        case LB_TABLE_WEAKKV_PROTO:
19160
            /* Things that open with integers */
19161
0
        {
19162
0
            data++;
19163
0
            int32_t len = readnat(st, &data);
19164
            /* DOS check */
19165
0
            if (lead != LB_REFERENCE) {
19166
0
                MARSH_EOS(st, data - 1 + len);
19167
0
            }
19168
0
            if (lead == LB_ARRAY || lead == LB_ARRAY_WEAK) {
19169
                /* Array */
19170
0
                JanetArray *array = (lead == LB_ARRAY_WEAK) ? janet_array_weak(len) : janet_array(len);
19171
0
                array->count = len;
19172
0
                *out = janet_wrap_array(array);
19173
0
                janet_v_push(st->lookup, *out);
19174
0
                for (int32_t i = 0; i < len; i++) {
19175
0
                    data = unmarshal_one(st, data, array->data + i, flags + 1);
19176
0
                }
19177
0
            } else if (lead == LB_TUPLE) {
19178
                /* Tuple */
19179
0
                Janet *tup = janet_tuple_begin(len);
19180
0
                int32_t flag = readint(st, &data);
19181
0
                janet_tuple_flag(tup) |= flag << 16;
19182
0
                for (int32_t i = 0; i < len; i++) {
19183
0
                    data = unmarshal_one(st, data, tup + i, flags + 1);
19184
0
                }
19185
0
                *out = janet_wrap_tuple(janet_tuple_end(tup));
19186
0
                janet_v_push(st->lookup, *out);
19187
0
            } else if (lead == LB_STRUCT || lead == LB_STRUCT_PROTO) {
19188
                /* Struct */
19189
0
                JanetKV *struct_ = janet_struct_begin(len);
19190
0
                if (lead == LB_STRUCT_PROTO) {
19191
0
                    Janet proto;
19192
0
                    data = unmarshal_one(st, data, &proto, flags + 1);
19193
0
                    janet_asserttype(proto, JANET_STRUCT, st);
19194
0
                    janet_struct_proto(struct_) = janet_unwrap_struct(proto);
19195
0
                }
19196
0
                for (int32_t i = 0; i < len; i++) {
19197
0
                    Janet key, value;
19198
0
                    data = unmarshal_one(st, data, &key, flags + 1);
19199
0
                    data = unmarshal_one(st, data, &value, flags + 1);
19200
0
                    janet_struct_put(struct_, key, value);
19201
0
                }
19202
0
                *out = janet_wrap_struct(janet_struct_end(struct_));
19203
0
                janet_v_push(st->lookup, *out);
19204
0
            } else if (lead == LB_REFERENCE) {
19205
0
                if (len >= janet_v_count(st->lookup))
19206
0
                    janet_panicf("invalid reference %d", len);
19207
0
                *out = st->lookup[len];
19208
0
            } else {
19209
                /* Table */
19210
0
                JanetTable *t;
19211
0
                if (lead == LB_TABLE_WEAKK_PROTO || lead == LB_TABLE_WEAKK) {
19212
0
                    t = janet_table_weakk(len);
19213
0
                } else if (lead == LB_TABLE_WEAKV_PROTO || lead == LB_TABLE_WEAKV) {
19214
0
                    t = janet_table_weakv(len);
19215
0
                } else if (lead == LB_TABLE_WEAKKV_PROTO || lead == LB_TABLE_WEAKKV) {
19216
0
                    t = janet_table_weakkv(len);
19217
0
                } else {
19218
0
                    t = janet_table(len);
19219
0
                }
19220
0
                *out = janet_wrap_table(t);
19221
0
                janet_v_push(st->lookup, *out);
19222
0
                if (lead == LB_TABLE_PROTO || lead == LB_TABLE_WEAKK_PROTO || lead == LB_TABLE_WEAKV_PROTO || lead == LB_TABLE_WEAKKV_PROTO) {
19223
0
                    Janet proto;
19224
0
                    data = unmarshal_one(st, data, &proto, flags + 1);
19225
0
                    janet_asserttype(proto, JANET_TABLE, st);
19226
0
                    t->proto = janet_unwrap_table(proto);
19227
0
                }
19228
0
                for (int32_t i = 0; i < len; i++) {
19229
0
                    Janet key, value;
19230
0
                    data = unmarshal_one(st, data, &key, flags + 1);
19231
0
                    data = unmarshal_one(st, data, &value, flags + 1);
19232
0
                    janet_table_put(t, key, value);
19233
0
                }
19234
0
            }
19235
0
            return data;
19236
0
        }
19237
0
        case LB_UNSAFE_POINTER: {
19238
0
            MARSH_EOS(st, data + sizeof(void *));
19239
0
            data++;
19240
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19241
0
                janet_panicf("unsafe flag not given, "
19242
0
                             "will not unmarshal raw pointer at index %d",
19243
0
                             (int)(data - st->start));
19244
0
            }
19245
0
            union {
19246
0
                void *ptr;
19247
0
                uint8_t bytes[sizeof(void *)];
19248
0
            } u;
19249
0
            memcpy(u.bytes, data, sizeof(void *));
19250
0
            data += sizeof(void *);
19251
0
            *out = janet_wrap_pointer(u.ptr);
19252
0
            janet_v_push(st->lookup, *out);
19253
0
            return data;
19254
0
        }
19255
0
#ifdef JANET_EV
19256
0
        case LB_POINTER_BUFFER: {
19257
0
            data++;
19258
0
            int32_t count = readnat(st, &data);
19259
0
            int32_t capacity = readnat(st, &data);
19260
0
            MARSH_EOS(st, data + sizeof(void *));
19261
0
            union {
19262
0
                void *ptr;
19263
0
                uint8_t bytes[sizeof(void *)];
19264
0
            } u;
19265
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19266
0
                janet_panicf("unsafe flag not given, "
19267
0
                             "will not unmarshal raw pointer at index %d",
19268
0
                             (int)(data - st->start));
19269
0
            }
19270
0
            memcpy(u.bytes, data, sizeof(void *));
19271
0
            data += sizeof(void *);
19272
0
            JanetBuffer *buffer = janet_pointer_buffer_unsafe(u.ptr, capacity, count);
19273
0
            *out = janet_wrap_buffer(buffer);
19274
0
            janet_v_push(st->lookup, *out);
19275
0
            return data;
19276
0
        }
19277
0
#endif
19278
0
        case LB_UNSAFE_CFUNCTION: {
19279
0
            MARSH_EOS(st, data + sizeof(JanetCFunction));
19280
0
            data++;
19281
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19282
0
                janet_panicf("unsafe flag not given, "
19283
0
                             "will not unmarshal function pointer at index %d",
19284
0
                             (int)(data - st->start));
19285
0
            }
19286
0
            union {
19287
0
                JanetCFunction ptr;
19288
0
                uint8_t bytes[sizeof(JanetCFunction)];
19289
0
            } u;
19290
0
            memcpy(u.bytes, data, sizeof(JanetCFunction));
19291
0
            data += sizeof(JanetCFunction);
19292
0
            *out = janet_wrap_cfunction(u.ptr);
19293
0
            janet_v_push(st->lookup, *out);
19294
0
            return data;
19295
0
        }
19296
0
#ifdef JANET_EV
19297
0
        case LB_THREADED_ABSTRACT: {
19298
0
            MARSH_EOS(st, data + sizeof(void *));
19299
0
            data++;
19300
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19301
0
                janet_panicf("unsafe flag not given, "
19302
0
                             "will not unmarshal threaded abstract pointer at index %d",
19303
0
                             (int)(data - st->start));
19304
0
            }
19305
0
            union {
19306
0
                void *ptr;
19307
0
                uint8_t bytes[sizeof(void *)];
19308
0
            } u;
19309
0
            memcpy(u.bytes, data, sizeof(void *));
19310
0
            data += sizeof(void *);
19311
19312
0
            if (flags & JANET_MARSHAL_DECREF) {
19313
                /* Decrement immediately and don't bother putting into heap */
19314
0
                janet_abstract_decref(u.ptr);
19315
0
                *out = janet_wrap_nil();
19316
0
            } else {
19317
0
                *out = janet_wrap_abstract(u.ptr);
19318
0
                Janet check = janet_table_get(&janet_vm.threaded_abstracts, *out);
19319
0
                if (janet_checktype(check, JANET_NIL)) {
19320
                    /* Transfers reference from threaded channel buffer to current heap */
19321
0
                    janet_table_put(&janet_vm.threaded_abstracts, *out, janet_wrap_false());
19322
0
                } else {
19323
                    /* Heap reference already accounted for, remove threaded channel reference. */
19324
0
                    janet_abstract_decref(u.ptr);
19325
0
                }
19326
0
            }
19327
19328
0
            janet_v_push(st->lookup, *out);
19329
0
            return data;
19330
0
        }
19331
0
#endif
19332
0
        default: {
19333
0
            janet_panicf("unknown byte %x at index %d",
19334
0
                         *data,
19335
0
                         (int)(data - st->start));
19336
0
            return NULL;
19337
0
        }
19338
0
    }
19339
0
}
19340
19341
Janet janet_unmarshal(
19342
    const uint8_t *bytes,
19343
    size_t len,
19344
    int flags,
19345
    JanetTable *reg,
19346
0
    const uint8_t **next) {
19347
0
    UnmarshalState st;
19348
0
    st.start = bytes;
19349
0
    st.end = bytes + len;
19350
0
    st.lookup_defs = NULL;
19351
0
    st.lookup_envs = NULL;
19352
0
    st.lookup = NULL;
19353
0
    st.reg = reg;
19354
0
    Janet out;
19355
0
    const uint8_t *nextbytes = unmarshal_one(&st, bytes, &out, flags);
19356
0
    if (next) *next = nextbytes;
19357
0
    janet_v_free(st.lookup_defs);
19358
0
    janet_v_free(st.lookup_envs);
19359
0
    janet_v_free(st.lookup);
19360
0
    return out;
19361
0
}
19362
19363
/* C functions */
19364
19365
JANET_CORE_FN(cfun_env_lookup,
19366
              "(env-lookup env)",
19367
              "Creates a forward lookup table for unmarshalling from an environment. "
19368
              "To create a reverse lookup table, use the invert function to swap keys "
19369
0
              "and values in the returned table.") {
19370
0
    janet_fixarity(argc, 1);
19371
0
    JanetTable *env = janet_gettable(argv, 0);
19372
0
    return janet_wrap_table(janet_env_lookup(env));
19373
0
}
19374
19375
JANET_CORE_FN(cfun_marshal,
19376
              "(marshal x &opt reverse-lookup buffer no-cycles)",
19377
              "Marshal a value into a buffer and return the buffer. The buffer "
19378
              "can then later be unmarshalled to reconstruct the initial value. "
19379
              "Optionally, one can pass in a reverse lookup table to not marshal "
19380
              "aliased values that are found in the table. Then a forward "
19381
              "lookup table can be used to recover the original value when "
19382
0
              "unmarshalling.") {
19383
0
    janet_arity(argc, 1, 4);
19384
0
    JanetBuffer *buffer;
19385
0
    JanetTable *rreg = NULL;
19386
0
    uint32_t flags = 0;
19387
0
    if (argc > 1) {
19388
0
        rreg = janet_gettable(argv, 1);
19389
0
    }
19390
0
    if (argc > 2) {
19391
0
        buffer = janet_getbuffer(argv, 2);
19392
0
    } else {
19393
0
        buffer = janet_buffer(10);
19394
0
    }
19395
0
    if (argc > 3 && janet_truthy(argv[3])) {
19396
0
        flags |= JANET_MARSHAL_NO_CYCLES;
19397
0
    }
19398
0
    janet_marshal(buffer, argv[0], rreg, flags);
19399
0
    return janet_wrap_buffer(buffer);
19400
0
}
19401
19402
JANET_CORE_FN(cfun_unmarshal,
19403
              "(unmarshal buffer &opt lookup)",
19404
              "Unmarshal a value from a buffer. An optional lookup table "
19405
              "can be provided to allow for aliases to be resolved. Returns the value "
19406
0
              "unmarshalled from the buffer.") {
19407
0
    janet_arity(argc, 1, 2);
19408
0
    JanetByteView view = janet_getbytes(argv, 0);
19409
0
    JanetTable *reg = NULL;
19410
0
    if (argc > 1) {
19411
0
        reg = janet_gettable(argv, 1);
19412
0
    }
19413
0
    return janet_unmarshal(view.bytes, (size_t) view.len, 0, reg, NULL);
19414
0
}
19415
19416
/* Module entry point */
19417
0
void janet_lib_marsh(JanetTable *env) {
19418
0
    JanetRegExt marsh_cfuns[] = {
19419
0
        JANET_CORE_REG("marshal", cfun_marshal),
19420
0
        JANET_CORE_REG("unmarshal", cfun_unmarshal),
19421
0
        JANET_CORE_REG("env-lookup", cfun_env_lookup),
19422
0
        JANET_REG_END
19423
0
    };
19424
0
    janet_core_cfuns_ext(env, NULL, marsh_cfuns);
19425
0
}
19426
19427
19428
/* src/core/math.c */
19429
#line 0 "src/core/math.c"
19430
19431
/*
19432
* Copyright (c) 2025 Calvin Rose
19433
*
19434
* Permission is hereby granted, free of charge, to any person obtaining a copy
19435
* of this software and associated documentation files (the "Software"), to
19436
* deal in the Software without restriction, including without limitation the
19437
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
19438
* sell copies of the Software, and to permit persons to whom the Software is
19439
* furnished to do so, subject to the following conditions:
19440
*
19441
* The above copyright notice and this permission notice shall be included in
19442
* all copies or substantial portions of the Software.
19443
*
19444
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19445
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19446
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19447
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19448
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19449
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19450
* IN THE SOFTWARE.
19451
*/
19452
19453
#ifndef JANET_AMALG
19454
#include "features.h"
19455
#include <janet.h>
19456
#include "state.h"
19457
#include "util.h"
19458
#endif
19459
19460
#include <math.h>
19461
19462
static int janet_rng_get(void *p, Janet key, Janet *out);
19463
static Janet janet_rng_next(void *p, Janet key);
19464
19465
0
static void janet_rng_marshal(void *p, JanetMarshalContext *ctx) {
19466
0
    JanetRNG *rng = (JanetRNG *)p;
19467
0
    janet_marshal_abstract(ctx, p);
19468
0
    janet_marshal_int(ctx, (int32_t) rng->a);
19469
0
    janet_marshal_int(ctx, (int32_t) rng->b);
19470
0
    janet_marshal_int(ctx, (int32_t) rng->c);
19471
0
    janet_marshal_int(ctx, (int32_t) rng->d);
19472
0
    janet_marshal_int(ctx, (int32_t) rng->counter);
19473
0
}
19474
19475
0
static void *janet_rng_unmarshal(JanetMarshalContext *ctx) {
19476
0
    JanetRNG *rng = janet_unmarshal_abstract(ctx, sizeof(JanetRNG));
19477
0
    rng->a = (uint32_t) janet_unmarshal_int(ctx);
19478
0
    rng->b = (uint32_t) janet_unmarshal_int(ctx);
19479
0
    rng->c = (uint32_t) janet_unmarshal_int(ctx);
19480
0
    rng->d = (uint32_t) janet_unmarshal_int(ctx);
19481
0
    rng->counter = (uint32_t) janet_unmarshal_int(ctx);
19482
0
    return rng;
19483
0
}
19484
19485
const JanetAbstractType janet_rng_type = {
19486
    "core/rng",
19487
    NULL,
19488
    NULL,
19489
    janet_rng_get,
19490
    NULL,
19491
    janet_rng_marshal,
19492
    janet_rng_unmarshal,
19493
    NULL, /* tostring */
19494
    NULL, /* compare */
19495
    NULL, /* hash */
19496
    janet_rng_next,
19497
    JANET_ATEND_NEXT
19498
};
19499
19500
6.23k
JanetRNG *janet_default_rng(void) {
19501
6.23k
    return &janet_vm.rng;
19502
6.23k
}
19503
19504
12.4k
void janet_rng_seed(JanetRNG *rng, uint32_t seed) {
19505
12.4k
    rng->a = seed;
19506
12.4k
    rng->b = 0x97654321u;
19507
12.4k
    rng->c = 123871873u;
19508
12.4k
    rng->d = 0xf23f56c8u;
19509
12.4k
    rng->counter = 0u;
19510
    /* First several numbers aren't that random. */
19511
211k
    for (int i = 0; i < 16; i++) janet_rng_u32(rng);
19512
12.4k
}
19513
19514
0
void janet_rng_longseed(JanetRNG *rng, const uint8_t *bytes, int32_t len) {
19515
0
    uint8_t state[16] = {0};
19516
0
    for (int32_t i = 0; i < len; i++)
19517
0
        state[i & 0xF] ^= bytes[i];
19518
0
    rng->a = state[0] + ((uint32_t) state[1] << 8) + ((uint32_t) state[2] << 16) + ((uint32_t) state[3] << 24);
19519
0
    rng->b = state[4] + ((uint32_t) state[5] << 8) + ((uint32_t) state[6] << 16) + ((uint32_t) state[7] << 24);
19520
0
    rng->c = state[8] + ((uint32_t) state[9] << 8) + ((uint32_t) state[10] << 16) + ((uint32_t) state[11] << 24);
19521
0
    rng->d = state[12] + ((uint32_t) state[13] << 8) + ((uint32_t) state[14] << 16) + ((uint32_t) state[15] << 24);
19522
0
    rng->counter = 0u;
19523
    /* a, b, c, d can't all be 0 */
19524
0
    if (rng->a == 0) rng->a = 1u;
19525
0
    for (int i = 0; i < 16; i++) janet_rng_u32(rng);
19526
0
}
19527
19528
199k
uint32_t janet_rng_u32(JanetRNG *rng) {
19529
    /* Algorithm "xorwow" from p. 5 of Marsaglia, "Xorshift RNGs" */
19530
199k
    uint32_t t = rng->d;
19531
199k
    uint32_t const s = rng->a;
19532
199k
    rng->d = rng->c;
19533
199k
    rng->c = rng->b;
19534
199k
    rng->b = s;
19535
199k
    t ^= t >> 2;
19536
199k
    t ^= t << 1;
19537
199k
    t ^= s ^ (s << 4);
19538
199k
    rng->a = t;
19539
199k
    rng->counter += 362437;
19540
199k
    return t + rng->counter;
19541
199k
}
19542
19543
0
double janet_rng_double(JanetRNG *rng) {
19544
0
    uint32_t hi = janet_rng_u32(rng);
19545
0
    uint32_t lo = janet_rng_u32(rng);
19546
0
    uint64_t big = (uint64_t)(lo) | (((uint64_t) hi) << 32);
19547
0
    return ldexp((double)(big >> (64 - 52)), -52);
19548
0
}
19549
19550
JANET_CORE_FN(cfun_rng_make,
19551
              "(math/rng &opt seed)",
19552
              "Creates a Pseudo-Random number generator, with an optional seed. "
19553
              "The seed should be an unsigned 32 bit integer or a buffer. "
19554
              "Do not use this for cryptography. Returns a core/rng abstract type."
19555
0
             ) {
19556
0
    janet_arity(argc, 0, 1);
19557
0
    JanetRNG *rng = janet_abstract(&janet_rng_type, sizeof(JanetRNG));
19558
0
    if (argc == 1) {
19559
0
        if (janet_checkint(argv[0])) {
19560
0
            uint32_t seed = (uint32_t)(janet_getinteger(argv, 0));
19561
0
            janet_rng_seed(rng, seed);
19562
0
        } else {
19563
0
            JanetByteView bytes = janet_getbytes(argv, 0);
19564
0
            janet_rng_longseed(rng, bytes.bytes, bytes.len);
19565
0
        }
19566
0
    } else {
19567
0
        janet_rng_seed(rng, 0);
19568
0
    }
19569
0
    return janet_wrap_abstract(rng);
19570
0
}
19571
19572
JANET_CORE_FN(cfun_rng_uniform,
19573
              "(math/rng-uniform rng)",
19574
              "Extract a random number in the range [0, 1) from the RNG."
19575
0
             ) {
19576
0
    janet_fixarity(argc, 1);
19577
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
19578
0
    return janet_wrap_number(janet_rng_double(rng));
19579
0
}
19580
19581
JANET_CORE_FN(cfun_rng_int,
19582
              "(math/rng-int rng &opt max)",
19583
              "Extract a random integer in the range [0, max) for max > 0 from the RNG.  "
19584
              "If max is 0, return 0.  If no max is given, the default is 2^31 - 1."
19585
0
             ) {
19586
0
    janet_arity(argc, 1, 2);
19587
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
19588
0
    if (argc == 1) {
19589
0
        uint32_t word = janet_rng_u32(rng) >> 1;
19590
0
        return janet_wrap_integer(word);
19591
0
    } else {
19592
0
        int32_t max = janet_optnat(argv, argc, 1, INT32_MAX);
19593
0
        if (max == 0) return janet_wrap_number(0.0);
19594
0
        uint32_t modulo = (uint32_t) max;
19595
0
        uint32_t maxgen = INT32_MAX;
19596
0
        uint32_t maxword = maxgen - (maxgen % modulo);
19597
0
        uint32_t word;
19598
0
        do {
19599
0
            word = janet_rng_u32(rng) >> 1;
19600
0
        } while (word > maxword);
19601
0
        return janet_wrap_integer(word % modulo);
19602
0
    }
19603
0
}
19604
19605
0
static void rng_get_4bytes(JanetRNG *rng, uint8_t *buf) {
19606
0
    uint32_t word = janet_rng_u32(rng);
19607
0
    buf[0] = word & 0xFF;
19608
0
    buf[1] = (word >> 8) & 0xFF;
19609
0
    buf[2] = (word >> 16) & 0xFF;
19610
0
    buf[3] = (word >> 24) & 0xFF;
19611
0
}
19612
19613
JANET_CORE_FN(cfun_rng_buffer,
19614
              "(math/rng-buffer rng n &opt buf)",
19615
              "Get n random bytes and put them in a buffer. Creates a new buffer if no buffer is "
19616
              "provided, otherwise appends to the given buffer. Returns the buffer."
19617
0
             ) {
19618
0
    janet_arity(argc, 2, 3);
19619
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
19620
0
    int32_t n = janet_getnat(argv, 1);
19621
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, n);
19622
19623
    /* Split into first part (that is divisible by 4), and rest */
19624
0
    int32_t first_part = n & ~3;
19625
0
    int32_t second_part = n - first_part;
19626
19627
    /* Get first part in chunks of 4 bytes */
19628
0
    janet_buffer_extra(buffer, n);
19629
0
    uint8_t *buf = buffer->data + buffer->count;
19630
0
    for (int32_t i = 0; i < first_part; i += 4) rng_get_4bytes(rng, buf + i);
19631
0
    buffer->count += first_part;
19632
19633
    /* Get remaining 0 - 3 bytes */
19634
0
    if (second_part) {
19635
0
        uint8_t wordbuf[4] = {0};
19636
0
        rng_get_4bytes(rng, wordbuf);
19637
0
        janet_buffer_push_bytes(buffer, wordbuf, second_part);
19638
0
    }
19639
19640
0
    return janet_wrap_buffer(buffer);
19641
0
}
19642
19643
static const JanetMethod rng_methods[] = {
19644
    {"uniform", cfun_rng_uniform},
19645
    {"int", cfun_rng_int},
19646
    {"buffer", cfun_rng_buffer},
19647
    {NULL, NULL}
19648
};
19649
19650
0
static int janet_rng_get(void *p, Janet key, Janet *out) {
19651
0
    (void) p;
19652
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
19653
0
    return janet_getmethod(janet_unwrap_keyword(key), rng_methods, out);
19654
0
}
19655
19656
0
static Janet janet_rng_next(void *p, Janet key) {
19657
0
    (void) p;
19658
0
    return janet_nextmethod(rng_methods, key);
19659
0
}
19660
19661
/* Get a random number */
19662
JANET_CORE_FN(janet_rand,
19663
              "(math/random)",
19664
0
              "Returns a uniformly distributed random number between 0 and 1.") {
19665
0
    (void) argv;
19666
0
    janet_fixarity(argc, 0);
19667
0
    return janet_wrap_number(janet_rng_double(&janet_vm.rng));
19668
0
}
19669
19670
/* Seed the random number generator */
19671
JANET_CORE_FN(janet_srand,
19672
              "(math/seedrandom seed)",
19673
              "Set the seed for the random number generator. `seed` should be "
19674
              "an integer or a buffer."
19675
0
             ) {
19676
0
    janet_fixarity(argc, 1);
19677
0
    if (janet_checkint(argv[0])) {
19678
0
        uint32_t seed = (uint32_t)(janet_getinteger(argv, 0));
19679
0
        janet_rng_seed(&janet_vm.rng, seed);
19680
0
    } else {
19681
0
        JanetByteView bytes = janet_getbytes(argv, 0);
19682
0
        janet_rng_longseed(&janet_vm.rng, bytes.bytes, bytes.len);
19683
0
    }
19684
0
    return janet_wrap_nil();
19685
0
}
19686
19687
#define JANET_DEFINE_NAMED_MATHOP(janet_name, fop, doc)\
19688
0
JANET_CORE_FN(janet_##fop, "(math/" janet_name " x)", doc) {\
19689
0
    janet_fixarity(argc, 1); \
19690
0
    double x = janet_getnumber(argv, 0); \
19691
0
    return janet_wrap_number(fop(x)); \
19692
0
}
Unexecuted instantiation: janet_acos
Unexecuted instantiation: janet_asin
Unexecuted instantiation: janet_atan
Unexecuted instantiation: janet_cos
Unexecuted instantiation: janet_cosh
Unexecuted instantiation: janet_acosh
Unexecuted instantiation: janet_sin
Unexecuted instantiation: janet_sinh
Unexecuted instantiation: janet_asinh
Unexecuted instantiation: janet_tan
Unexecuted instantiation: janet_tanh
Unexecuted instantiation: janet_atanh
Unexecuted instantiation: janet_exp
Unexecuted instantiation: janet_exp2
Unexecuted instantiation: janet_expm1
Unexecuted instantiation: janet_log
Unexecuted instantiation: janet_log10
Unexecuted instantiation: janet_log2
Unexecuted instantiation: janet_sqrt
Unexecuted instantiation: janet_cbrt
Unexecuted instantiation: janet_ceil
Unexecuted instantiation: janet_floor
Unexecuted instantiation: janet_trunc
Unexecuted instantiation: janet_round
Unexecuted instantiation: janet_log1p
Unexecuted instantiation: janet_erf
Unexecuted instantiation: janet_erfc
Unexecuted instantiation: janet_lgamma
Unexecuted instantiation: janet_fabs
Unexecuted instantiation: janet_tgamma
19693
19694
#define JANET_DEFINE_MATHOP(fop, doc) JANET_DEFINE_NAMED_MATHOP(#fop, fop, doc)
19695
19696
JANET_DEFINE_MATHOP(acos, "Returns the arccosine of x.")
19697
JANET_DEFINE_MATHOP(asin, "Returns the arcsin of x.")
19698
JANET_DEFINE_MATHOP(atan, "Returns the arctangent of x.")
19699
JANET_DEFINE_MATHOP(cos, "Returns the cosine of x.")
19700
JANET_DEFINE_MATHOP(cosh, "Returns the hyperbolic cosine of x.")
19701
JANET_DEFINE_MATHOP(acosh, "Returns the hyperbolic arccosine of x.")
19702
JANET_DEFINE_MATHOP(sin, "Returns the sine of x.")
19703
JANET_DEFINE_MATHOP(sinh, "Returns the hyperbolic sine of x.")
19704
JANET_DEFINE_MATHOP(asinh, "Returns the hyperbolic arcsine of x.")
19705
JANET_DEFINE_MATHOP(tan, "Returns the tangent of x.")
19706
JANET_DEFINE_MATHOP(tanh, "Returns the hyperbolic tangent of x.")
19707
JANET_DEFINE_MATHOP(atanh, "Returns the hyperbolic arctangent of x.")
19708
JANET_DEFINE_MATHOP(exp, "Returns e to the power of x.")
19709
JANET_DEFINE_MATHOP(exp2, "Returns 2 to the power of x.")
19710
JANET_DEFINE_MATHOP(expm1, "Returns e to the power of x minus 1.")
19711
JANET_DEFINE_MATHOP(log, "Returns the natural logarithm of x.")
19712
JANET_DEFINE_MATHOP(log10, "Returns the log base 10 of x.")
19713
JANET_DEFINE_MATHOP(log2, "Returns the log base 2 of x.")
19714
JANET_DEFINE_MATHOP(sqrt, "Returns the square root of x.")
19715
JANET_DEFINE_MATHOP(cbrt, "Returns the cube root of x.")
19716
JANET_DEFINE_MATHOP(ceil, "Returns the smallest integer value number that is not less than x.")
19717
JANET_DEFINE_MATHOP(floor, "Returns the largest integer value number that is not greater than x.")
19718
JANET_DEFINE_MATHOP(trunc, "Returns the integer between x and 0 nearest to x.")
19719
JANET_DEFINE_MATHOP(round, "Returns the integer nearest to x.")
19720
JANET_DEFINE_MATHOP(log1p, "Returns (log base e of x) + 1 more accurately than (+ (math/log x) 1)")
19721
JANET_DEFINE_MATHOP(erf, "Returns the error function of x.")
19722
JANET_DEFINE_MATHOP(erfc, "Returns the complementary error function of x.")
19723
JANET_DEFINE_NAMED_MATHOP("log-gamma", lgamma, "Returns log-gamma(x).")
19724
JANET_DEFINE_NAMED_MATHOP("abs", fabs, "Return the absolute value of x.")
19725
JANET_DEFINE_NAMED_MATHOP("gamma", tgamma, "Returns gamma(x).")
19726
19727
#define JANET_DEFINE_MATH2OP(name, fop, signature, doc)\
19728
0
JANET_CORE_FN(janet_##name, signature, doc) {\
19729
0
    janet_fixarity(argc, 2); \
19730
0
    double lhs = janet_getnumber(argv, 0); \
19731
0
    double rhs = janet_getnumber(argv, 1); \
19732
0
    return janet_wrap_number(fop(lhs, rhs)); \
19733
0
}
Unexecuted instantiation: janet_atan2
Unexecuted instantiation: janet_pow
Unexecuted instantiation: janet_hypot
Unexecuted instantiation: janet_nextafter
19734
19735
JANET_DEFINE_MATH2OP(atan2, atan2, "(math/atan2 y x)", "Returns the arctangent of y/x. Works even when x is 0.")
19736
JANET_DEFINE_MATH2OP(pow, pow, "(math/pow a x)", "Returns a to the power of x.")
19737
JANET_DEFINE_MATH2OP(hypot, hypot, "(math/hypot a b)", "Returns c from the equation c^2 = a^2 + b^2.")
19738
JANET_DEFINE_MATH2OP(nextafter, nextafter,  "(math/next x y)", "Returns the next representable floating point value after x in the direction of y.")
19739
19740
0
JANET_CORE_FN(janet_not, "(not x)", "Returns the boolean inverse of x.") {
19741
0
    janet_fixarity(argc, 1);
19742
0
    return janet_wrap_boolean(!janet_truthy(argv[0]));
19743
0
}
19744
19745
0
static double janet_gcd(double x, double y) {
19746
0
    if (isnan(x) || isnan(y)) {
19747
0
#ifdef NAN
19748
0
        return NAN;
19749
#else
19750
        return 0.0 / 0.0;
19751
#endif
19752
0
    }
19753
0
    if (isinf(x) || isinf(y)) return INFINITY;
19754
0
    while (y != 0) {
19755
0
        double temp = y;
19756
0
        y = fmod(x, y);
19757
0
        x = temp;
19758
0
    }
19759
0
    return x;
19760
0
}
19761
19762
0
static double janet_lcm(double x, double y) {
19763
0
    return (x / janet_gcd(x, y)) * y;
19764
0
}
19765
19766
JANET_CORE_FN(janet_cfun_gcd, "(math/gcd x y)",
19767
0
              "Returns the greatest common divisor between x and y.") {
19768
0
    janet_fixarity(argc, 2);
19769
0
    double x = janet_getnumber(argv, 0);
19770
0
    double y = janet_getnumber(argv, 1);
19771
0
    return janet_wrap_number(janet_gcd(x, y));
19772
0
}
19773
19774
JANET_CORE_FN(janet_cfun_lcm, "(math/lcm x y)",
19775
0
              "Returns the least common multiple of x and y.") {
19776
0
    janet_fixarity(argc, 2);
19777
0
    double x = janet_getnumber(argv, 0);
19778
0
    double y = janet_getnumber(argv, 1);
19779
0
    return janet_wrap_number(janet_lcm(x, y));
19780
0
}
19781
19782
JANET_CORE_FN(janet_cfun_frexp, "(math/frexp x)",
19783
0
              "Returns a tuple of (mantissa, exponent) from number.") {
19784
0
    janet_fixarity(argc, 1);
19785
0
    double x = janet_getnumber(argv, 0);
19786
0
    int exp;
19787
0
    x = frexp(x, &exp);
19788
0
    Janet *result = janet_tuple_begin(2);
19789
0
    result[0] = janet_wrap_number(x);
19790
0
    result[1] = janet_wrap_number((double) exp);
19791
0
    return janet_wrap_tuple(janet_tuple_end(result));
19792
0
}
19793
19794
JANET_CORE_FN(janet_cfun_ldexp, "(math/ldexp m e)",
19795
0
              "Creates a new number from a mantissa and an exponent.") {
19796
0
    janet_fixarity(argc, 2);
19797
0
    double x = janet_getnumber(argv, 0);
19798
0
    int32_t y = janet_getinteger(argv, 1);
19799
0
    return janet_wrap_number(ldexp(x, y));
19800
0
}
19801
19802
/* Module entry point */
19803
0
void janet_lib_math(JanetTable *env) {
19804
0
    JanetRegExt math_cfuns[] = {
19805
0
        JANET_CORE_REG("not", janet_not),
19806
0
        JANET_CORE_REG("math/random", janet_rand),
19807
0
        JANET_CORE_REG("math/seedrandom", janet_srand),
19808
0
        JANET_CORE_REG("math/cos", janet_cos),
19809
0
        JANET_CORE_REG("math/sin", janet_sin),
19810
0
        JANET_CORE_REG("math/tan", janet_tan),
19811
0
        JANET_CORE_REG("math/acos", janet_acos),
19812
0
        JANET_CORE_REG("math/asin", janet_asin),
19813
0
        JANET_CORE_REG("math/atan", janet_atan),
19814
0
        JANET_CORE_REG("math/exp", janet_exp),
19815
0
        JANET_CORE_REG("math/log", janet_log),
19816
0
        JANET_CORE_REG("math/log10", janet_log10),
19817
0
        JANET_CORE_REG("math/log2", janet_log2),
19818
0
        JANET_CORE_REG("math/sqrt", janet_sqrt),
19819
0
        JANET_CORE_REG("math/cbrt", janet_cbrt),
19820
0
        JANET_CORE_REG("math/floor", janet_floor),
19821
0
        JANET_CORE_REG("math/ceil", janet_ceil),
19822
0
        JANET_CORE_REG("math/pow", janet_pow),
19823
0
        JANET_CORE_REG("math/abs", janet_fabs),
19824
0
        JANET_CORE_REG("math/sinh", janet_sinh),
19825
0
        JANET_CORE_REG("math/cosh", janet_cosh),
19826
0
        JANET_CORE_REG("math/tanh", janet_tanh),
19827
0
        JANET_CORE_REG("math/atanh", janet_atanh),
19828
0
        JANET_CORE_REG("math/asinh", janet_asinh),
19829
0
        JANET_CORE_REG("math/acosh", janet_acosh),
19830
0
        JANET_CORE_REG("math/atan2", janet_atan2),
19831
0
        JANET_CORE_REG("math/rng", cfun_rng_make),
19832
0
        JANET_CORE_REG("math/rng-uniform", cfun_rng_uniform),
19833
0
        JANET_CORE_REG("math/rng-int", cfun_rng_int),
19834
0
        JANET_CORE_REG("math/rng-buffer", cfun_rng_buffer),
19835
0
        JANET_CORE_REG("math/hypot", janet_hypot),
19836
0
        JANET_CORE_REG("math/exp2", janet_exp2),
19837
0
        JANET_CORE_REG("math/log1p", janet_log1p),
19838
0
        JANET_CORE_REG("math/gamma", janet_tgamma),
19839
0
        JANET_CORE_REG("math/log-gamma", janet_lgamma),
19840
0
        JANET_CORE_REG("math/erfc", janet_erfc),
19841
0
        JANET_CORE_REG("math/erf", janet_erf),
19842
0
        JANET_CORE_REG("math/expm1", janet_expm1),
19843
0
        JANET_CORE_REG("math/trunc", janet_trunc),
19844
0
        JANET_CORE_REG("math/round", janet_round),
19845
0
        JANET_CORE_REG("math/next", janet_nextafter),
19846
0
        JANET_CORE_REG("math/gcd", janet_cfun_gcd),
19847
0
        JANET_CORE_REG("math/lcm", janet_cfun_lcm),
19848
0
        JANET_CORE_REG("math/frexp", janet_cfun_frexp),
19849
0
        JANET_CORE_REG("math/ldexp", janet_cfun_ldexp),
19850
0
        JANET_REG_END
19851
0
    };
19852
0
    janet_core_cfuns_ext(env, NULL, math_cfuns);
19853
0
    janet_register_abstract_type(&janet_rng_type);
19854
#ifdef JANET_BOOTSTRAP
19855
    JANET_CORE_DEF(env, "math/pi", janet_wrap_number(3.1415926535897931),
19856
                   "The value pi.");
19857
    JANET_CORE_DEF(env, "math/e", janet_wrap_number(2.7182818284590451),
19858
                   "The base of the natural log.");
19859
    JANET_CORE_DEF(env, "math/inf", janet_wrap_number(INFINITY),
19860
                   "The number representing positive infinity");
19861
    JANET_CORE_DEF(env, "math/-inf", janet_wrap_number(-INFINITY),
19862
                   "The number representing negative infinity");
19863
    JANET_CORE_DEF(env, "math/int32-min", janet_wrap_number(INT32_MIN),
19864
                   "The minimum contiguous integer representable by a 32 bit signed integer");
19865
    JANET_CORE_DEF(env, "math/int32-max", janet_wrap_number(INT32_MAX),
19866
                   "The maximum contiguous integer representable by a 32 bit signed integer");
19867
    JANET_CORE_DEF(env, "math/int-min", janet_wrap_number(JANET_INTMIN_DOUBLE),
19868
                   "The minimum contiguous integer representable by a double (2^53)");
19869
    JANET_CORE_DEF(env, "math/int-max", janet_wrap_number(JANET_INTMAX_DOUBLE),
19870
                   "The maximum contiguous integer representable by a double (-(2^53))");
19871
#ifdef NAN
19872
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(NAN), "Not a number (IEEE-754 NaN)");
19873
#else
19874
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(0.0 / 0.0), "Not a number (IEEE-754 NaN)");
19875
#endif
19876
#endif
19877
0
}
19878
19879
19880
/* src/core/net.c */
19881
#line 0 "src/core/net.c"
19882
19883
/*
19884
* Copyright (c) 2025 Calvin Rose and contributors.
19885
*
19886
* Permission is hereby granted, free of charge, to any person obtaining a copy
19887
* of this software and associated documentation files (the "Software"), to
19888
* deal in the Software without restriction, including without limitation the
19889
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
19890
* sell copies of the Software, and to permit persons to whom the Software is
19891
* furnished to do so, subject to the following conditions:
19892
*
19893
* The above copyright notice and this permission notice shall be included in
19894
* all copies or substantial portions of the Software.
19895
*
19896
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19897
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19898
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19899
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19900
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19901
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19902
* IN THE SOFTWARE.
19903
*/
19904
19905
#ifndef JANET_AMALG
19906
#include "features.h"
19907
#include <janet.h>
19908
#include "util.h"
19909
#include "fiber.h"
19910
#endif
19911
19912
#ifdef JANET_NET
19913
19914
#include <math.h>
19915
#ifdef JANET_WINDOWS
19916
#include <winsock2.h>
19917
#include <windows.h>
19918
#include <ws2tcpip.h>
19919
#include <mswsock.h>
19920
#ifdef JANET_MSVC
19921
#pragma comment (lib, "Ws2_32.lib")
19922
#pragma comment (lib, "Mswsock.lib")
19923
#pragma comment (lib, "Advapi32.lib")
19924
#endif
19925
#else
19926
#include <arpa/inet.h>
19927
#include <unistd.h>
19928
#include <signal.h>
19929
#include <sys/ioctl.h>
19930
#include <sys/types.h>
19931
#include <sys/socket.h>
19932
#include <sys/un.h>
19933
#include <netinet/in.h>
19934
#include <netinet/tcp.h>
19935
#include <netdb.h>
19936
#include <fcntl.h>
19937
#endif
19938
19939
const JanetAbstractType janet_address_type = {
19940
    "core/socket-address",
19941
    JANET_ATEND_NAME
19942
};
19943
19944
#ifdef JANET_WINDOWS
19945
#define JSOCKCLOSE(x) closesocket((SOCKET) x)
19946
#define JSOCKDEFAULT INVALID_SOCKET
19947
#define JSOCKVALID(x) ((x) != INVALID_SOCKET)
19948
#define JSock SOCKET
19949
#define JSOCKFLAGS 0
19950
#else
19951
0
#define JSOCKCLOSE(x) close(x)
19952
0
#define JSOCKDEFAULT 0
19953
0
#define JSOCKVALID(x) ((x) >= 0)
19954
0
#define JSock int
19955
#ifdef SOCK_CLOEXEC
19956
0
#define JSOCKFLAGS SOCK_CLOEXEC
19957
#else
19958
#define JSOCKFLAGS 0
19959
#endif
19960
#endif
19961
19962
/* maximum number of bytes in a socket address host (post name resolution) */
19963
#ifdef JANET_WINDOWS
19964
#ifdef JANET_NO_IPV6
19965
#define SA_ADDRSTRLEN (INET_ADDRSTRLEN + 1)
19966
#else
19967
#define SA_ADDRSTRLEN (INET6_ADDRSTRLEN + 1)
19968
#endif
19969
typedef unsigned short in_port_t;
19970
#else
19971
#define JANET_SA_MAX(a, b) (((a) > (b))? (a) : (b))
19972
#ifdef JANET_NO_IPV6
19973
#define SA_ADDRSTRLEN JANET_SA_MAX(INET_ADDRSTRLEN + 1, (sizeof ((struct sockaddr_un *)0)->sun_path) + 1)
19974
#else
19975
#define SA_ADDRSTRLEN JANET_SA_MAX(INET6_ADDRSTRLEN + 1, (sizeof ((struct sockaddr_un *)0)->sun_path) + 1)
19976
#endif
19977
#endif
19978
19979
static JanetStream *make_stream(JSock handle, uint32_t flags);
19980
19981
/* We pass this flag to all send calls to prevent sigpipe */
19982
#ifndef MSG_NOSIGNAL
19983
#define MSG_NOSIGNAL 0
19984
#endif
19985
19986
/* Make sure a socket doesn't block */
19987
0
static void janet_net_socknoblock(JSock s) {
19988
#ifdef JANET_WINDOWS
19989
    unsigned long arg = 1;
19990
    ioctlsocket(s, FIONBIO, &arg);
19991
#else
19992
#if !defined(SOCK_CLOEXEC) && defined(O_CLOEXEC)
19993
    int extra = O_CLOEXEC;
19994
#else
19995
0
    int extra = 0;
19996
0
#endif
19997
0
    fcntl(s, F_SETFL, fcntl(s, F_GETFL, 0) | O_NONBLOCK | extra);
19998
#ifdef SO_NOSIGPIPE
19999
    int enable = 1;
20000
    setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, &enable, sizeof(int));
20001
#endif
20002
0
#endif
20003
0
}
20004
20005
/* State machine for async connect */
20006
20007
0
void net_callback_connect(JanetFiber *fiber, JanetAsyncEvent event) {
20008
0
    JanetStream *stream = fiber->ev_stream;
20009
0
    switch (event) {
20010
0
        default:
20011
0
            break;
20012
0
#ifndef JANET_WINDOWS
20013
        /* Wait until we have an actual event before checking.
20014
         * Windows doesn't support async connect with this, just try immediately.*/
20015
0
        case JANET_ASYNC_EVENT_INIT:
20016
0
#endif
20017
0
        case JANET_ASYNC_EVENT_DEINIT:
20018
0
            return;
20019
0
        case JANET_ASYNC_EVENT_CLOSE:
20020
0
            janet_cancel(fiber, janet_cstringv("stream closed"));
20021
0
            janet_async_end(fiber);
20022
0
            return;
20023
0
    }
20024
#ifdef JANET_WINDOWS
20025
    int res = 0;
20026
    int size = sizeof(res);
20027
    int r = getsockopt((SOCKET)stream->handle, SOL_SOCKET, SO_ERROR, (char *)&res, &size);
20028
#else
20029
0
    int res = 0;
20030
0
    socklen_t size = sizeof res;
20031
0
    int r = getsockopt(stream->handle, SOL_SOCKET, SO_ERROR, &res, &size);
20032
0
#endif
20033
0
    if (r == 0) {
20034
0
        if (res == 0) {
20035
0
            janet_schedule(fiber, janet_wrap_abstract(stream));
20036
0
        } else {
20037
0
            janet_cancel(fiber, janet_cstringv(janet_strerror(res)));
20038
0
            stream->flags |= JANET_STREAM_TOCLOSE;
20039
0
        }
20040
0
    } else {
20041
0
        janet_cancel(fiber, janet_ev_lasterr());
20042
0
        stream->flags |= JANET_STREAM_TOCLOSE;
20043
0
    }
20044
0
    janet_async_end(fiber);
20045
0
}
20046
20047
0
static JANET_NO_RETURN void net_sched_connect(JanetStream *stream) {
20048
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_WRITE, net_callback_connect, NULL);
20049
0
}
20050
20051
/* State machine for accepting connections. */
20052
20053
#ifdef JANET_WINDOWS
20054
20055
typedef struct {
20056
    WSAOVERLAPPED overlapped;
20057
    JanetFunction *function;
20058
    JanetStream *lstream;
20059
    JanetStream *astream;
20060
    char buf[1024];
20061
} NetStateAccept;
20062
20063
static int net_sched_accept_impl(NetStateAccept *state, JanetFiber *fiber, Janet *err);
20064
20065
void net_callback_accept(JanetFiber *fiber, JanetAsyncEvent event) {
20066
    NetStateAccept *state = (NetStateAccept *)fiber->ev_state;
20067
    switch (event) {
20068
        default:
20069
            break;
20070
        case JANET_ASYNC_EVENT_MARK: {
20071
            if (state->lstream) janet_mark(janet_wrap_abstract(state->lstream));
20072
            if (state->astream) janet_mark(janet_wrap_abstract(state->astream));
20073
            if (state->function) janet_mark(janet_wrap_function(state->function));
20074
            break;
20075
        }
20076
        case JANET_ASYNC_EVENT_CLOSE:
20077
            janet_schedule(fiber, janet_wrap_nil());
20078
            janet_async_end(fiber);
20079
            return;
20080
        case JANET_ASYNC_EVENT_COMPLETE: {
20081
            if (state->astream->flags & JANET_STREAM_CLOSED) {
20082
                janet_cancel(fiber, janet_cstringv("failed to accept connection"));
20083
                janet_async_end(fiber);
20084
                return;
20085
            }
20086
            SOCKET lsock = (SOCKET) state->lstream->handle;
20087
            if (NO_ERROR != setsockopt((SOCKET) state->astream->handle, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
20088
                                       (char *) &lsock, sizeof(lsock))) {
20089
                janet_cancel(fiber, janet_cstringv("failed to accept connection"));
20090
                janet_async_end(fiber);
20091
                return;
20092
            }
20093
20094
            Janet streamv = janet_wrap_abstract(state->astream);
20095
            if (state->function) {
20096
                /* Schedule worker */
20097
                JanetFiber *sub_fiber = janet_fiber(state->function, 64, 1, &streamv);
20098
                sub_fiber->supervisor_channel = fiber->supervisor_channel;
20099
                janet_schedule(sub_fiber, janet_wrap_nil());
20100
                /* Now listen again for next connection */
20101
                Janet err;
20102
                if (net_sched_accept_impl(state, fiber, &err)) {
20103
                    janet_cancel(fiber, err);
20104
                    janet_async_end(fiber);
20105
                    return;
20106
                }
20107
            } else {
20108
                janet_schedule(fiber, streamv);
20109
                janet_async_end(fiber);
20110
                return;
20111
            }
20112
        }
20113
    }
20114
}
20115
20116
JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunction *fun) {
20117
    Janet err;
20118
    NetStateAccept *state = janet_malloc(sizeof(NetStateAccept));
20119
    memset(&state->overlapped, 0, sizeof(WSAOVERLAPPED));
20120
    memset(&state->buf, 0, 1024);
20121
    state->function = fun;
20122
    state->lstream = stream;
20123
    if (net_sched_accept_impl(state, janet_root_fiber(), &err)) {
20124
        janet_free(state);
20125
        janet_panicv(err);
20126
    }
20127
    janet_async_start(stream, JANET_ASYNC_LISTEN_READ, net_callback_accept, state);
20128
}
20129
20130
static int net_sched_accept_impl(NetStateAccept *state, JanetFiber *fiber, Janet *err) {
20131
    SOCKET lsock = (SOCKET) state->lstream->handle;
20132
    SOCKET asock = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
20133
    if (asock == INVALID_SOCKET) {
20134
        *err = janet_ev_lasterr();
20135
        return 1;
20136
    }
20137
    JanetStream *astream = make_stream(asock, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
20138
    state->astream = astream;
20139
    int socksize = sizeof(SOCKADDR_STORAGE) + 16;
20140
    if (FALSE == AcceptEx(lsock, asock, state->buf, 0, socksize, socksize, NULL, &state->overlapped)) {
20141
        int code = WSAGetLastError();
20142
        if (code == WSA_IO_PENDING) {
20143
            /* indicates io is happening async */
20144
            janet_async_in_flight(fiber);
20145
            return 0;
20146
        }
20147
        *err = janet_ev_lasterr();
20148
        return 1;
20149
    }
20150
    return 0;
20151
}
20152
20153
#else
20154
20155
typedef struct {
20156
    JanetFunction *function;
20157
} NetStateAccept;
20158
20159
0
void net_callback_accept(JanetFiber *fiber, JanetAsyncEvent event) {
20160
0
    JanetStream *stream = fiber->ev_stream;
20161
0
    NetStateAccept *state = (NetStateAccept *)fiber->ev_state;
20162
0
    switch (event) {
20163
0
        default:
20164
0
            break;
20165
0
        case JANET_ASYNC_EVENT_MARK: {
20166
0
            if (state->function) janet_mark(janet_wrap_function(state->function));
20167
0
            break;
20168
0
        }
20169
0
        case JANET_ASYNC_EVENT_CLOSE:
20170
0
            janet_schedule(fiber, janet_wrap_nil());
20171
0
            janet_async_end(fiber);
20172
0
            return;
20173
0
        case JANET_ASYNC_EVENT_INIT:
20174
0
        case JANET_ASYNC_EVENT_READ: {
20175
0
#if defined(JANET_LINUX)
20176
0
            JSock connfd = accept4(stream->handle, NULL, NULL, SOCK_CLOEXEC);
20177
#else
20178
            /* On BSDs, CLOEXEC should be inherited from server socket */
20179
            JSock connfd = accept(stream->handle, NULL, NULL);
20180
#endif
20181
0
            if (JSOCKVALID(connfd)) {
20182
0
                janet_net_socknoblock(connfd);
20183
0
                JanetStream *stream = make_stream(connfd, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
20184
0
                Janet streamv = janet_wrap_abstract(stream);
20185
0
                if (state->function) {
20186
0
                    JanetFiber *sub_fiber = janet_fiber(state->function, 64, 1, &streamv);
20187
0
                    sub_fiber->supervisor_channel = fiber->supervisor_channel;
20188
0
                    janet_schedule(sub_fiber, janet_wrap_nil());
20189
0
                } else {
20190
0
                    janet_schedule(fiber, streamv);
20191
0
                    janet_async_end(fiber);
20192
0
                    return;
20193
0
                }
20194
0
            }
20195
0
            break;
20196
0
        }
20197
0
    }
20198
0
}
20199
20200
0
JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunction *fun) {
20201
0
    NetStateAccept *state = janet_malloc(sizeof(NetStateAccept));
20202
0
    memset(state, 0, sizeof(NetStateAccept));
20203
0
    state->function = fun;
20204
0
    if (fun) janet_stream_level_triggered(stream);
20205
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_READ, net_callback_accept, state);
20206
0
}
20207
20208
#endif
20209
20210
/* Address info */
20211
20212
0
static int janet_get_sockettype(Janet *argv, int32_t argc, int32_t n) {
20213
0
    JanetKeyword stype = janet_optkeyword(argv, argc, n, NULL);
20214
0
    int socktype = SOCK_DGRAM;
20215
0
    if ((NULL == stype) || !janet_cstrcmp(stype, "stream")) {
20216
0
        socktype = SOCK_STREAM;
20217
0
    } else if (janet_cstrcmp(stype, "datagram")) {
20218
0
        janet_panicf("expected socket type as :stream or :datagram, got %v", argv[n]);
20219
0
    }
20220
0
    return socktype;
20221
0
}
20222
20223
/* Needs argc >= offset + 2 */
20224
/* For unix paths, just rertuns a single sockaddr and sets *is_unix to 1,
20225
 * otherwise 0. Also, ignores is_bind when is a unix socket. */
20226
0
static struct addrinfo *janet_get_addrinfo(Janet *argv, int32_t offset, int socktype, int passive, int *is_unix) {
20227
    /* Unix socket support - not yet supported on windows. */
20228
0
#ifndef JANET_WINDOWS
20229
0
    if (janet_keyeq(argv[offset], "unix")) {
20230
0
        const char *path = janet_getcstring(argv, offset + 1);
20231
0
        struct sockaddr_un *saddr = janet_calloc(1, sizeof(struct sockaddr_un));
20232
0
        if (saddr == NULL) {
20233
0
            JANET_OUT_OF_MEMORY;
20234
0
        }
20235
0
        saddr->sun_family = AF_UNIX;
20236
0
        size_t path_size = sizeof(saddr->sun_path);
20237
0
#ifdef JANET_LINUX
20238
0
        if (path[0] == '@') {
20239
0
            saddr->sun_path[0] = '\0';
20240
0
            snprintf(saddr->sun_path + 1, path_size - 1, "%s", path + 1);
20241
0
        } else
20242
0
#endif
20243
0
        {
20244
0
            snprintf(saddr->sun_path, path_size, "%s", path);
20245
0
        }
20246
0
        *is_unix = 1;
20247
0
        return (struct addrinfo *) saddr;
20248
0
    }
20249
0
#endif
20250
    /* Get host and port */
20251
0
    char *host = (char *)janet_getcstring(argv, offset);
20252
0
    char *port = NULL;
20253
0
    if (janet_checkint(argv[offset + 1])) {
20254
0
        port = (char *)janet_to_string(argv[offset + 1]);
20255
0
    } else {
20256
0
        port = (char *)janet_optcstring(argv, offset + 2, offset + 1, NULL);
20257
0
    }
20258
    /* getaddrinfo */
20259
0
    struct addrinfo *ai = NULL;
20260
0
    struct addrinfo hints;
20261
0
    memset(&hints, 0, sizeof(hints));
20262
0
    hints.ai_family = AF_UNSPEC;
20263
0
    hints.ai_socktype = socktype;
20264
0
    hints.ai_flags = passive ? AI_PASSIVE : 0;
20265
0
    int status = getaddrinfo(host, port, &hints, &ai);
20266
0
    if (status) {
20267
0
        janet_panicf("could not get address info: %s", gai_strerror(status));
20268
0
    }
20269
0
    *is_unix = 0;
20270
0
    return ai;
20271
0
}
20272
20273
/*
20274
 * C Funs
20275
 */
20276
20277
JANET_CORE_FN(cfun_net_sockaddr,
20278
              "(net/address host port &opt type multi)",
20279
              "Look up the connection information for a given hostname, port, and connection type. Returns "
20280
              "a handle that can be used to send datagrams over network without establishing a connection. "
20281
              "On Posix platforms, you can use :unix for host to connect to a unix domain socket, where the name is "
20282
              "given in the port argument. On Linux, abstract "
20283
              "unix domain sockets are specified with a leading '@' character in port. If `multi` is truthy, will "
20284
0
              "return all address that match in an array instead of just the first.") {
20285
0
    janet_sandbox_assert(JANET_SANDBOX_NET_CONNECT); /* connect OR listen */
20286
0
    janet_arity(argc, 2, 4);
20287
0
    int socktype = janet_get_sockettype(argv, argc, 2);
20288
0
    int is_unix = 0;
20289
0
    int make_arr = (argc >= 3 && janet_truthy(argv[3]));
20290
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 0, &is_unix);
20291
0
#ifndef JANET_WINDOWS
20292
    /* no unix domain socket support on windows yet */
20293
0
    if (is_unix) {
20294
0
        void *abst = janet_abstract(&janet_address_type, sizeof(struct sockaddr_un));
20295
0
        memcpy(abst, ai, sizeof(struct sockaddr_un));
20296
0
        Janet ret = janet_wrap_abstract(abst);
20297
0
        return make_arr ? janet_wrap_array(janet_array_n(&ret, 1)) : ret;
20298
0
    }
20299
0
#endif
20300
0
    if (make_arr) {
20301
        /* Select all */
20302
0
        JanetArray *arr = janet_array(10);
20303
0
        struct addrinfo *iter = ai;
20304
0
        while (NULL != iter) {
20305
0
            void *abst = janet_abstract(&janet_address_type, iter->ai_addrlen);
20306
0
            memcpy(abst, iter->ai_addr, iter->ai_addrlen);
20307
0
            janet_array_push(arr, janet_wrap_abstract(abst));
20308
0
            iter = iter->ai_next;
20309
0
        }
20310
0
        freeaddrinfo(ai);
20311
0
        return janet_wrap_array(arr);
20312
0
    } else {
20313
        /* Select first */
20314
0
        if (NULL == ai) {
20315
0
            janet_panic("no data for given address");
20316
0
        }
20317
0
        void *abst = janet_abstract(&janet_address_type, ai->ai_addrlen);
20318
0
        memcpy(abst, ai->ai_addr, ai->ai_addrlen);
20319
0
        freeaddrinfo(ai);
20320
0
        return janet_wrap_abstract(abst);
20321
0
    }
20322
0
}
20323
20324
JANET_CORE_FN(cfun_net_connect,
20325
              "(net/connect host port &opt type bindhost bindport)",
20326
              "Open a connection to communicate with a server. Returns a duplex stream "
20327
              "that can be used to communicate with the server. Type is an optional keyword "
20328
              "to specify a connection type, either :stream or :datagram. The default is :stream. "
20329
              "Bindhost is an optional string to select from what address to make the outgoing "
20330
0
              "connection, with the default being the same as using the OS's preferred address. ") {
20331
0
    janet_sandbox_assert(JANET_SANDBOX_NET_CONNECT);
20332
0
    janet_arity(argc, 2, 5);
20333
20334
    /* Check arguments */
20335
0
    int socktype = janet_get_sockettype(argv, argc, 2);
20336
0
    int is_unix = 0;
20337
0
    char *bindhost = (char *) janet_optcstring(argv, argc, 3, NULL);
20338
0
    char *bindport = NULL;
20339
0
    if (argc >= 5 && janet_checkint(argv[4])) {
20340
0
        bindport = (char *)janet_to_string(argv[4]);
20341
0
    } else {
20342
0
        bindport = (char *)janet_optcstring(argv, argc, 4, NULL);
20343
0
    }
20344
20345
    /* Where we're connecting to */
20346
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 0, &is_unix);
20347
20348
    /* Check if we're binding address */
20349
0
    struct addrinfo *binding = NULL;
20350
0
    if (bindhost != NULL) {
20351
0
        if (is_unix) {
20352
0
            freeaddrinfo(ai);
20353
0
            janet_panic("bindhost not supported for unix domain sockets");
20354
0
        }
20355
        /* getaddrinfo */
20356
0
        struct addrinfo hints;
20357
0
        memset(&hints, 0, sizeof(hints));
20358
0
        hints.ai_family = AF_UNSPEC;
20359
0
        hints.ai_socktype = socktype;
20360
0
        hints.ai_flags = 0;
20361
0
        int status = getaddrinfo(bindhost, bindport, &hints, &binding);
20362
0
        if (status) {
20363
0
            freeaddrinfo(ai);
20364
0
            janet_panicf("could not get address info for bindhost: %s", gai_strerror(status));
20365
0
        }
20366
0
    }
20367
20368
    /* Create socket */
20369
0
    JSock sock = JSOCKDEFAULT;
20370
0
    void *addr = NULL;
20371
0
    socklen_t addrlen = 0;
20372
0
#ifndef JANET_WINDOWS
20373
0
    if (is_unix) {
20374
0
        sock = socket(AF_UNIX, socktype | JSOCKFLAGS, 0);
20375
0
        if (!JSOCKVALID(sock)) {
20376
0
            Janet v = janet_ev_lasterr();
20377
0
            janet_free(ai);
20378
0
            janet_panicf("could not create socket: %V", v);
20379
0
        }
20380
0
        addr = (void *) ai;
20381
0
        addrlen = sizeof(struct sockaddr_un);
20382
0
    } else
20383
0
#endif
20384
0
    {
20385
0
        struct addrinfo *rp = NULL;
20386
0
        for (rp = ai; rp != NULL; rp = rp->ai_next) {
20387
#ifdef JANET_WINDOWS
20388
            sock = WSASocketW(rp->ai_family, rp->ai_socktype, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
20389
#else
20390
0
            sock = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
20391
0
#endif
20392
0
            if (JSOCKVALID(sock)) {
20393
0
                addr = rp->ai_addr;
20394
0
                addrlen = (socklen_t) rp->ai_addrlen;
20395
0
                break;
20396
0
            }
20397
0
        }
20398
0
        if (NULL == addr) {
20399
0
            Janet v = janet_ev_lasterr();
20400
0
            if (binding) freeaddrinfo(binding);
20401
0
            freeaddrinfo(ai);
20402
0
            janet_panicf("could not create socket: %V", v);
20403
0
        }
20404
0
    }
20405
20406
    /* Bind to bindhost and bindport if given */
20407
0
    if (binding) {
20408
0
        struct addrinfo *rp = NULL;
20409
0
        int did_bind = 0;
20410
0
        for (rp = binding; rp != NULL; rp = rp->ai_next) {
20411
0
            if (bind(sock, rp->ai_addr, (int) rp->ai_addrlen) == 0) {
20412
0
                did_bind = 1;
20413
0
                break;
20414
0
            }
20415
0
        }
20416
0
        if (!did_bind) {
20417
0
            Janet v = janet_ev_lasterr();
20418
0
            freeaddrinfo(binding);
20419
0
            freeaddrinfo(ai);
20420
0
            JSOCKCLOSE(sock);
20421
0
            janet_panicf("could not bind outgoing address: %V", v);
20422
0
        } else {
20423
0
            freeaddrinfo(binding);
20424
0
        }
20425
0
    }
20426
20427
    /* Wrap socket in abstract type JanetStream */
20428
0
    JanetStream *stream = make_stream(sock, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
20429
20430
    /* Set up the socket for non-blocking IO before connecting */
20431
0
    janet_net_socknoblock(sock);
20432
20433
    /* Connect to socket */
20434
#ifdef JANET_WINDOWS
20435
    int status = WSAConnect(sock, addr, addrlen, NULL, NULL, NULL, NULL);
20436
    int err = WSAGetLastError();
20437
    freeaddrinfo(ai);
20438
#else
20439
0
    int status;
20440
0
    do {
20441
0
        status = connect(sock, addr, addrlen);
20442
0
    } while (status == -1 && errno == EINTR);
20443
0
    int err = errno;
20444
0
    if (is_unix) {
20445
0
        janet_free(ai);
20446
0
    } else {
20447
0
        freeaddrinfo(ai);
20448
0
    }
20449
0
#endif
20450
20451
0
    if (status) {
20452
#ifdef JANET_WINDOWS
20453
        if (err != WSAEWOULDBLOCK) {
20454
#else
20455
0
        if (err != EINPROGRESS) {
20456
0
#endif
20457
0
            JSOCKCLOSE(sock);
20458
0
            Janet lasterr = janet_ev_lasterr();
20459
0
            janet_panicf("could not connect socket: %V", lasterr);
20460
0
        }
20461
0
    }
20462
20463
0
    net_sched_connect(stream);
20464
0
}
20465
20466
0
static const char *serverify_socket(JSock sfd, int reuse_addr, int reuse_port) {
20467
    /* Set various socket options */
20468
0
    int enable = 1;
20469
0
    if (reuse_addr) {
20470
0
        if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *) &enable, sizeof(int)) < 0) {
20471
0
            return "setsockopt(SO_REUSEADDR) failed";
20472
0
        }
20473
0
    }
20474
0
    if (reuse_port) {
20475
0
#ifdef SO_REUSEPORT
20476
0
        if (setsockopt(sfd, SOL_SOCKET, SO_REUSEPORT, &enable, sizeof(int)) < 0) {
20477
0
            return "setsockopt(SO_REUSEPORT) failed";
20478
0
        }
20479
#else
20480
        (void) reuse_port;
20481
#endif
20482
0
    }
20483
0
    janet_net_socknoblock(sfd);
20484
0
    return NULL;
20485
0
}
20486
20487
#ifdef JANET_WINDOWS
20488
#define JANET_SHUTDOWN_RW SD_BOTH
20489
#define JANET_SHUTDOWN_R SD_RECEIVE
20490
#define JANET_SHUTDOWN_W SD_SEND
20491
#else
20492
0
#define JANET_SHUTDOWN_RW SHUT_RDWR
20493
0
#define JANET_SHUTDOWN_R SHUT_RD
20494
0
#define JANET_SHUTDOWN_W SHUT_WR
20495
#endif
20496
20497
JANET_CORE_FN(cfun_net_shutdown,
20498
              "(net/shutdown stream &opt mode)",
20499
              "Stop communication on this socket in a graceful manner, either in both directions or just "
20500
              "reading/writing from the stream. The `mode` parameter controls which communication to stop on the socket. "
20501
              "\n\n* `:wr` is the default and prevents both reading new data from the socket and writing new data to the socket.\n"
20502
              "* `:r` disables reading new data from the socket.\n"
20503
              "* `:w` disable writing data to the socket.\n\n"
20504
0
              "Returns the original socket.") {
20505
0
    janet_arity(argc, 1, 2);
20506
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20507
0
    janet_stream_flags(stream, JANET_STREAM_SOCKET);
20508
0
    int shutdown_type = JANET_SHUTDOWN_RW;
20509
0
    if (argc == 2) {
20510
0
        const uint8_t *kw = janet_getkeyword(argv, 1);
20511
0
        if (0 == janet_cstrcmp(kw, "rw")) {
20512
0
            shutdown_type = JANET_SHUTDOWN_RW;
20513
0
        } else if (0 == janet_cstrcmp(kw, "r")) {
20514
0
            shutdown_type = JANET_SHUTDOWN_R;
20515
0
        } else if (0 == janet_cstrcmp(kw, "w")) {
20516
0
            shutdown_type = JANET_SHUTDOWN_W;
20517
0
        } else {
20518
0
            janet_panicf("unexpected keyword %v", argv[1]);
20519
0
        }
20520
0
    }
20521
0
    int status;
20522
#ifdef JANET_WINDOWS
20523
    status = shutdown((SOCKET) stream->handle, shutdown_type);
20524
#else
20525
0
    do {
20526
0
        status = shutdown(stream->handle, shutdown_type);
20527
0
    } while (status == -1 && errno == EINTR);
20528
0
#endif
20529
0
    if (status) {
20530
0
        janet_panicf("could not shutdown socket: %V", janet_ev_lasterr());
20531
0
    }
20532
0
    return argv[0];
20533
0
}
20534
20535
JANET_CORE_FN(cfun_net_listen,
20536
              "(net/listen host port &opt type no-reuse)",
20537
              "Creates a server. Returns a new stream that is neither readable nor "
20538
              "writeable. Use net/accept or net/accept-loop be to handle connections and start the server. "
20539
              "The type parameter specifies the type of network connection, either "
20540
              "a :stream (usually tcp), or :datagram (usually udp). If not specified, the default is "
20541
              ":stream. The host and port arguments are the same as in net/address. The last boolean parameter `no-reuse` will "
20542
0
              "disable the use of `SO_REUSEADDR` and `SO_REUSEPORT` when creating a server on some operating systems.") {
20543
0
    janet_sandbox_assert(JANET_SANDBOX_NET_LISTEN);
20544
0
    janet_arity(argc, 2, 4);
20545
20546
    /* Get host, port, and handler*/
20547
0
    int socktype = janet_get_sockettype(argv, argc, 2);
20548
0
    int is_unix = 0;
20549
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 1, &is_unix);
20550
0
    int reuse = !(argc >= 4 && janet_truthy(argv[3]));
20551
20552
0
    JSock sfd = JSOCKDEFAULT;
20553
0
#ifndef JANET_WINDOWS
20554
0
    if (is_unix) {
20555
0
        sfd = socket(AF_UNIX, socktype | JSOCKFLAGS, 0);
20556
0
        if (!JSOCKVALID(sfd)) {
20557
0
            janet_free(ai);
20558
0
            janet_panicf("could not create socket: %V", janet_ev_lasterr());
20559
0
        }
20560
0
        const char *err = serverify_socket(sfd, reuse, 0);
20561
0
        if (NULL != err || bind(sfd, (struct sockaddr *)ai, sizeof(struct sockaddr_un))) {
20562
0
            JSOCKCLOSE(sfd);
20563
0
            janet_free(ai);
20564
0
            if (err) {
20565
0
                janet_panic(err);
20566
0
            } else {
20567
0
                janet_panicf("could not bind socket: %V", janet_ev_lasterr());
20568
0
            }
20569
0
        }
20570
0
        janet_free(ai);
20571
0
    } else
20572
0
#endif
20573
0
    {
20574
        /* Check all addrinfos in a loop for the first that we can bind to. */
20575
0
        struct addrinfo *rp = NULL;
20576
0
        for (rp = ai; rp != NULL; rp = rp->ai_next) {
20577
#ifdef JANET_WINDOWS
20578
            sfd = WSASocketW(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
20579
#else
20580
0
            sfd = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
20581
0
#endif
20582
0
            if (!JSOCKVALID(sfd)) continue;
20583
0
            const char *err = serverify_socket(sfd, reuse, reuse);
20584
0
            if (NULL != err) {
20585
0
                JSOCKCLOSE(sfd);
20586
0
                continue;
20587
0
            }
20588
            /* Bind */
20589
0
            if (bind(sfd, rp->ai_addr, (int) rp->ai_addrlen) == 0) break;
20590
0
            JSOCKCLOSE(sfd);
20591
0
        }
20592
0
        freeaddrinfo(ai);
20593
0
        if (NULL == rp) {
20594
0
            janet_panic("could not bind to any sockets");
20595
0
        }
20596
0
    }
20597
20598
0
    if (socktype == SOCK_DGRAM) {
20599
        /* Datagram server (UDP) */
20600
0
        JanetStream *stream = make_stream(sfd, JANET_STREAM_UDPSERVER | JANET_STREAM_READABLE);
20601
0
        return janet_wrap_abstract(stream);
20602
0
    } else {
20603
        /* Stream server (TCP) */
20604
20605
        /* listen */
20606
0
        int status = listen(sfd, 1024);
20607
0
        if (status) {
20608
0
            JSOCKCLOSE(sfd);
20609
0
            janet_panicf("could not listen on file descriptor: %V", janet_ev_lasterr());
20610
0
        }
20611
20612
        /* Put sfd on our loop */
20613
0
        JanetStream *stream = make_stream(sfd, JANET_STREAM_ACCEPTABLE);
20614
0
        return janet_wrap_abstract(stream);
20615
0
    }
20616
0
}
20617
20618
/* Types of socket's we need to deal with - relevant type puns below.
20619
struct sockaddr *sa;           // Common base structure
20620
struct sockaddr_storage *ss;   // Size of largest socket address type
20621
struct sockaddr_in *sin;       // IPv4 address + port
20622
struct sockaddr_in6 *sin6;     // IPv6 address + port
20623
struct sockaddr_un *sun;       // Unix Domain Socket Address
20624
*/
20625
20626
/* Turn a socket address into a host, port pair.
20627
 * For unix domain sockets, returned tuple will have only a single element, the path string. */
20628
0
static Janet janet_so_getname(const void *sa_any) {
20629
0
    const struct sockaddr *sa = sa_any;
20630
0
    char buffer[SA_ADDRSTRLEN];
20631
0
    switch (sa->sa_family) {
20632
0
        default:
20633
0
            janet_panic("unknown address family");
20634
0
        case AF_INET: {
20635
0
            const struct sockaddr_in *sai = sa_any;
20636
0
            if (!inet_ntop(AF_INET, &(sai->sin_addr), buffer, sizeof(buffer))) {
20637
0
                janet_panic("unable to decode ipv4 host address");
20638
0
            }
20639
0
            Janet pair[2] = {janet_cstringv(buffer), janet_wrap_integer(ntohs(sai->sin_port))};
20640
0
            return janet_wrap_tuple(janet_tuple_n(pair, 2));
20641
0
        }
20642
0
#ifndef JANET_NO_IPV6
20643
0
        case AF_INET6: {
20644
0
            const struct sockaddr_in6 *sai6 = sa_any;
20645
0
            if (!inet_ntop(AF_INET6, &(sai6->sin6_addr), buffer, sizeof(buffer))) {
20646
0
                janet_panic("unable to decode ipv4 host address");
20647
0
            }
20648
0
            Janet pair[2] = {janet_cstringv(buffer), janet_wrap_integer(ntohs(sai6->sin6_port))};
20649
0
            return janet_wrap_tuple(janet_tuple_n(pair, 2));
20650
0
        }
20651
0
#endif
20652
0
#ifndef JANET_WINDOWS
20653
0
        case AF_UNIX: {
20654
0
            const struct sockaddr_un *sun = sa_any;
20655
0
            Janet pathname;
20656
0
            if (sun->sun_path[0] == '\0') {
20657
0
                memcpy(buffer, sun->sun_path, sizeof(sun->sun_path));
20658
0
                buffer[0] = '@';
20659
0
                pathname = janet_cstringv(buffer);
20660
0
            } else {
20661
0
                pathname = janet_cstringv(sun->sun_path);
20662
0
            }
20663
0
            return janet_wrap_tuple(janet_tuple_n(&pathname, 1));
20664
0
        }
20665
0
#endif
20666
0
    }
20667
0
}
20668
20669
JANET_CORE_FN(cfun_net_getsockname,
20670
              "(net/localname stream)",
20671
0
              "Gets the local address and port in a tuple in that order.") {
20672
0
    janet_fixarity(argc, 1);
20673
0
    JanetStream *js = janet_getabstract(argv, 0, &janet_stream_type);
20674
0
    if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed");
20675
0
    struct sockaddr_storage ss;
20676
0
    socklen_t slen = sizeof(ss);
20677
0
    memset(&ss, 0, slen);
20678
0
    if (getsockname((JSock)js->handle, (struct sockaddr *) &ss, &slen)) {
20679
0
        janet_panicf("Failed to get localname on %v: %V", argv[0], janet_ev_lasterr());
20680
0
    }
20681
0
    janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated");
20682
0
    return janet_so_getname(&ss);
20683
0
}
20684
20685
JANET_CORE_FN(cfun_net_getpeername,
20686
              "(net/peername stream)",
20687
0
              "Gets the remote peer's address and port in a tuple in that order.") {
20688
0
    janet_fixarity(argc, 1);
20689
0
    JanetStream *js = janet_getabstract(argv, 0, &janet_stream_type);
20690
0
    if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed");
20691
0
    struct sockaddr_storage ss;
20692
0
    socklen_t slen = sizeof(ss);
20693
0
    memset(&ss, 0, slen);
20694
0
    if (getpeername((JSock)js->handle, (struct sockaddr *)&ss, &slen)) {
20695
0
        janet_panicf("Failed to get peername on %v: %V", argv[0], janet_ev_lasterr());
20696
0
    }
20697
0
    janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated");
20698
0
    return janet_so_getname(&ss);
20699
0
}
20700
20701
JANET_CORE_FN(cfun_net_address_unpack,
20702
              "(net/address-unpack address)",
20703
              "Given an address returned by net/address, return a host, port pair. Unix domain sockets "
20704
0
              "will have only the path in the returned tuple.") {
20705
0
    janet_fixarity(argc, 1);
20706
0
    struct sockaddr *sa = janet_getabstract(argv, 0, &janet_address_type);
20707
0
    return janet_so_getname(sa);
20708
0
}
20709
20710
JANET_CORE_FN(cfun_stream_accept_loop,
20711
              "(net/accept-loop stream handler)",
20712
              "Shorthand for running a server stream that will continuously accept new connections. "
20713
0
              "Blocks the current fiber until the stream is closed, and will return the stream.") {
20714
0
    janet_fixarity(argc, 2);
20715
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20716
0
    janet_stream_flags(stream, JANET_STREAM_ACCEPTABLE | JANET_STREAM_SOCKET);
20717
0
    JanetFunction *fun = janet_getfunction(argv, 1);
20718
0
    if (fun->def->min_arity < 1) janet_panic("handler function must take at least 1 argument");
20719
0
    janet_sched_accept(stream, fun);
20720
0
}
20721
20722
JANET_CORE_FN(cfun_stream_accept,
20723
              "(net/accept stream &opt timeout)",
20724
              "Get the next connection on a server stream. This would usually be called in a loop in a dedicated fiber. "
20725
              "Takes an optional timeout in seconds, after which will raise an error. "
20726
0
              "Returns a new duplex stream which represents a connection to the client.") {
20727
0
    janet_arity(argc, 1, 2);
20728
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20729
0
    janet_stream_flags(stream, JANET_STREAM_ACCEPTABLE | JANET_STREAM_SOCKET);
20730
0
    double to = janet_optnumber(argv, argc, 1, INFINITY);
20731
0
    if (to != INFINITY) janet_addtimeout(to);
20732
0
    janet_sched_accept(stream, NULL);
20733
0
}
20734
20735
JANET_CORE_FN(cfun_stream_read,
20736
              "(net/read stream nbytes &opt buf timeout)",
20737
              "Read up to n bytes from a stream, suspending the current fiber until the bytes are available. "
20738
              "`n` can also be the keyword `:all` to read into the buffer until end of stream. "
20739
              "If less than n bytes are available (and more than 0), will push those bytes and return early. "
20740
              "Takes an optional timeout in seconds, after which will raise an error. "
20741
0
              "Returns a buffer with up to n more bytes in it, or raises an error if the read failed.") {
20742
0
    janet_arity(argc, 2, 4);
20743
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20744
0
    janet_stream_flags(stream, JANET_STREAM_READABLE | JANET_STREAM_SOCKET);
20745
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
20746
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20747
0
    if (janet_keyeq(argv[1], "all")) {
20748
0
        if (to != INFINITY) janet_addtimeout(to);
20749
0
        janet_ev_recvchunk(stream, buffer, INT32_MAX, MSG_NOSIGNAL);
20750
0
    } else {
20751
0
        int32_t n = janet_getnat(argv, 1);
20752
0
        if (to != INFINITY) janet_addtimeout(to);
20753
0
        janet_ev_recv(stream, buffer, n, MSG_NOSIGNAL);
20754
0
    }
20755
0
}
20756
20757
JANET_CORE_FN(cfun_stream_chunk,
20758
              "(net/chunk stream nbytes &opt buf timeout)",
20759
              "Same a net/read, but will wait for all n bytes to arrive rather than return early. "
20760
0
              "Takes an optional timeout in seconds, after which will raise an error.") {
20761
0
    janet_arity(argc, 2, 4);
20762
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20763
0
    janet_stream_flags(stream, JANET_STREAM_READABLE | JANET_STREAM_SOCKET);
20764
0
    int32_t n = janet_getnat(argv, 1);
20765
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
20766
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20767
0
    if (to != INFINITY) janet_addtimeout(to);
20768
0
    janet_ev_recvchunk(stream, buffer, n, MSG_NOSIGNAL);
20769
0
}
20770
20771
JANET_CORE_FN(cfun_stream_recv_from,
20772
              "(net/recv-from stream nbytes buf &opt timeout)",
20773
              "Receives data from a server stream and puts it into a buffer. Returns the socket-address the "
20774
0
              "packet came from. Takes an optional timeout in seconds, after which will raise an error.") {
20775
0
    janet_arity(argc, 3, 4);
20776
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20777
0
    janet_stream_flags(stream, JANET_STREAM_UDPSERVER | JANET_STREAM_SOCKET);
20778
0
    int32_t n = janet_getnat(argv, 1);
20779
0
    JanetBuffer *buffer = janet_getbuffer(argv, 2);
20780
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20781
0
    if (to != INFINITY) janet_addtimeout(to);
20782
0
    janet_ev_recvfrom(stream, buffer, n, MSG_NOSIGNAL);
20783
0
}
20784
20785
JANET_CORE_FN(cfun_stream_write,
20786
              "(net/write stream data &opt timeout)",
20787
              "Write data to a stream, suspending the current fiber until the write "
20788
              "completes. Takes an optional timeout in seconds, after which will raise an error. "
20789
0
              "Returns nil, or raises an error if the write failed.") {
20790
0
    janet_arity(argc, 2, 3);
20791
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20792
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE | JANET_STREAM_SOCKET);
20793
0
    double to = janet_optnumber(argv, argc, 2, INFINITY);
20794
0
    if (janet_checktype(argv[1], JANET_BUFFER)) {
20795
0
        if (to != INFINITY) janet_addtimeout(to);
20796
0
        janet_ev_send_buffer(stream, janet_getbuffer(argv, 1), MSG_NOSIGNAL);
20797
0
    } else {
20798
0
        JanetByteView bytes = janet_getbytes(argv, 1);
20799
0
        if (to != INFINITY) janet_addtimeout(to);
20800
0
        janet_ev_send_string(stream, bytes.bytes, MSG_NOSIGNAL);
20801
0
    }
20802
0
}
20803
20804
JANET_CORE_FN(cfun_stream_send_to,
20805
              "(net/send-to stream dest data &opt timeout)",
20806
              "Writes a datagram to a server stream. dest is a the destination address of the packet. "
20807
              "Takes an optional timeout in seconds, after which will raise an error. "
20808
0
              "Returns stream.") {
20809
0
    janet_arity(argc, 3, 4);
20810
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20811
0
    janet_stream_flags(stream, JANET_STREAM_UDPSERVER | JANET_STREAM_SOCKET);
20812
0
    void *dest = janet_getabstract(argv, 1, &janet_address_type);
20813
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20814
0
    if (janet_checktype(argv[2], JANET_BUFFER)) {
20815
0
        if (to != INFINITY) janet_addtimeout(to);
20816
0
        janet_ev_sendto_buffer(stream, janet_getbuffer(argv, 2), dest, MSG_NOSIGNAL);
20817
0
    } else {
20818
0
        JanetByteView bytes = janet_getbytes(argv, 2);
20819
0
        if (to != INFINITY) janet_addtimeout(to);
20820
0
        janet_ev_sendto_string(stream, bytes.bytes, dest, MSG_NOSIGNAL);
20821
0
    }
20822
0
}
20823
20824
JANET_CORE_FN(cfun_stream_flush,
20825
              "(net/flush stream)",
20826
              "Make sure that a stream is not buffering any data. This temporarily disables Nagle's algorithm. "
20827
0
              "Use this to make sure data is sent without delay. Returns stream.") {
20828
0
    janet_fixarity(argc, 1);
20829
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20830
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE | JANET_STREAM_SOCKET);
20831
    /* Toggle no delay flag */
20832
0
    int flag = 1;
20833
0
    setsockopt((JSock) stream->handle, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
20834
0
    flag = 0;
20835
0
    setsockopt((JSock) stream->handle, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
20836
0
    return argv[0];
20837
0
}
20838
20839
struct sockopt_type {
20840
    const char *name;
20841
    int level;
20842
    int optname;
20843
    enum JanetType type;
20844
};
20845
20846
/* List of supported socket options; The type JANET_POINTER is used
20847
 * for options that require special handling depending on the type. */
20848
static const struct sockopt_type sockopt_type_list[] = {
20849
    { "so-broadcast", SOL_SOCKET, SO_BROADCAST, JANET_BOOLEAN },
20850
    { "so-reuseaddr", SOL_SOCKET, SO_REUSEADDR, JANET_BOOLEAN },
20851
    { "so-keepalive", SOL_SOCKET, SO_KEEPALIVE, JANET_BOOLEAN },
20852
    { "ip-multicast-ttl", IPPROTO_IP, IP_MULTICAST_TTL, JANET_NUMBER },
20853
    { "ip-add-membership", IPPROTO_IP, IP_ADD_MEMBERSHIP, JANET_POINTER },
20854
    { "ip-drop-membership", IPPROTO_IP, IP_DROP_MEMBERSHIP, JANET_POINTER },
20855
#ifndef JANET_NO_IPV6
20856
    { "ipv6-join-group", IPPROTO_IPV6, IPV6_JOIN_GROUP, JANET_POINTER },
20857
    { "ipv6-leave-group", IPPROTO_IPV6, IPV6_LEAVE_GROUP, JANET_POINTER },
20858
#endif
20859
    { NULL, 0, 0, JANET_POINTER }
20860
};
20861
20862
JANET_CORE_FN(cfun_net_setsockopt,
20863
              "(net/setsockopt stream option value)",
20864
              "set socket options.\n"
20865
              "\n"
20866
              "supported options and associated value types:\n"
20867
              "- :so-broadcast boolean\n"
20868
              "- :so-reuseaddr boolean\n"
20869
              "- :so-keepalive boolean\n"
20870
              "- :ip-multicast-ttl number\n"
20871
              "- :ip-add-membership string\n"
20872
              "- :ip-drop-membership string\n"
20873
              "- :ipv6-join-group string\n"
20874
0
              "- :ipv6-leave-group string\n") {
20875
0
    janet_arity(argc, 3, 3);
20876
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20877
0
    janet_stream_flags(stream, JANET_STREAM_SOCKET);
20878
0
    JanetKeyword optstr = janet_getkeyword(argv, 1);
20879
20880
0
    const struct sockopt_type *st = sockopt_type_list;
20881
0
    while (st->name) {
20882
0
        if (janet_cstrcmp(optstr, st->name) == 0) {
20883
0
            break;
20884
0
        }
20885
0
        st++;
20886
0
    }
20887
20888
0
    if (st->name == NULL) {
20889
0
        janet_panicf("unknown socket option %q", argv[1]);
20890
0
    }
20891
20892
0
    union {
20893
0
        int v_int;
20894
0
        struct ip_mreq v_mreq;
20895
0
#ifndef JANET_NO_IPV6
20896
0
        struct ipv6_mreq v_mreq6;
20897
0
#endif
20898
0
    } val;
20899
20900
0
    void *optval = (void *)&val;
20901
0
    socklen_t optlen = 0;
20902
20903
0
    if (st->type == JANET_BOOLEAN) {
20904
0
        val.v_int = janet_getboolean(argv, 2);
20905
0
        optlen = sizeof(val.v_int);
20906
0
    } else if (st->type == JANET_NUMBER) {
20907
0
        val.v_int = janet_getinteger(argv, 2);
20908
0
        optlen = sizeof(val.v_int);
20909
0
    } else if (st->optname == IP_ADD_MEMBERSHIP || st->optname == IP_DROP_MEMBERSHIP) {
20910
0
        const char *addr = janet_getcstring(argv, 2);
20911
0
        memset(&val.v_mreq, 0, sizeof val.v_mreq);
20912
0
        val.v_mreq.imr_interface.s_addr = htonl(INADDR_ANY);
20913
0
        inet_pton(AF_INET, addr, &val.v_mreq.imr_multiaddr.s_addr);
20914
0
        optlen = sizeof(val.v_mreq);
20915
0
#ifndef JANET_NO_IPV6
20916
0
    } else if (st->optname == IPV6_JOIN_GROUP || st->optname == IPV6_LEAVE_GROUP) {
20917
0
        const char *addr = janet_getcstring(argv, 2);
20918
0
        memset(&val.v_mreq6, 0, sizeof val.v_mreq6);
20919
0
        val.v_mreq6.ipv6mr_interface = 0;
20920
0
        inet_pton(AF_INET6, addr, &val.v_mreq6.ipv6mr_multiaddr);
20921
0
        optlen = sizeof(val.v_mreq6);
20922
0
#endif
20923
0
    } else {
20924
0
        janet_panicf("invalid socket option type");
20925
0
    }
20926
20927
0
    janet_assert(optlen != 0, "invalid socket option value");
20928
20929
0
    int r = setsockopt((JSock) stream->handle, st->level, st->optname, optval, optlen);
20930
0
    if (r == -1) {
20931
0
        janet_panicf("setsockopt(%q): %s", argv[1], janet_strerror(errno));
20932
0
    }
20933
20934
0
    return janet_wrap_nil();
20935
0
}
20936
20937
static const JanetMethod net_stream_methods[] = {
20938
    {"chunk", cfun_stream_chunk},
20939
    {"close", janet_cfun_stream_close},
20940
    {"read", cfun_stream_read},
20941
    {"write", cfun_stream_write},
20942
    {"flush", cfun_stream_flush},
20943
    {"accept", cfun_stream_accept},
20944
    {"accept-loop", cfun_stream_accept_loop},
20945
    {"send-to", cfun_stream_send_to},
20946
    {"recv-from", cfun_stream_recv_from},
20947
    {"evread", janet_cfun_stream_read},
20948
    {"evchunk", janet_cfun_stream_chunk},
20949
    {"evwrite", janet_cfun_stream_write},
20950
    {"shutdown", cfun_net_shutdown},
20951
    {"setsockopt", cfun_net_setsockopt},
20952
    {NULL, NULL}
20953
};
20954
20955
0
static JanetStream *make_stream(JSock handle, uint32_t flags) {
20956
0
    return janet_stream((JanetHandle) handle, flags | JANET_STREAM_SOCKET, net_stream_methods);
20957
0
}
20958
20959
0
void janet_lib_net(JanetTable *env) {
20960
0
    JanetRegExt net_cfuns[] = {
20961
0
        JANET_CORE_REG("net/address", cfun_net_sockaddr),
20962
0
        JANET_CORE_REG("net/listen", cfun_net_listen),
20963
0
        JANET_CORE_REG("net/accept", cfun_stream_accept),
20964
0
        JANET_CORE_REG("net/accept-loop", cfun_stream_accept_loop),
20965
0
        JANET_CORE_REG("net/read", cfun_stream_read),
20966
0
        JANET_CORE_REG("net/chunk", cfun_stream_chunk),
20967
0
        JANET_CORE_REG("net/write", cfun_stream_write),
20968
0
        JANET_CORE_REG("net/send-to", cfun_stream_send_to),
20969
0
        JANET_CORE_REG("net/recv-from", cfun_stream_recv_from),
20970
0
        JANET_CORE_REG("net/flush", cfun_stream_flush),
20971
0
        JANET_CORE_REG("net/connect", cfun_net_connect),
20972
0
        JANET_CORE_REG("net/shutdown", cfun_net_shutdown),
20973
0
        JANET_CORE_REG("net/peername", cfun_net_getpeername),
20974
0
        JANET_CORE_REG("net/localname", cfun_net_getsockname),
20975
0
        JANET_CORE_REG("net/address-unpack", cfun_net_address_unpack),
20976
0
        JANET_CORE_REG("net/setsockopt", cfun_net_setsockopt),
20977
0
        JANET_REG_END
20978
0
    };
20979
0
    janet_core_cfuns_ext(env, NULL, net_cfuns);
20980
0
}
20981
20982
6.23k
void janet_net_init(void) {
20983
#ifdef JANET_WINDOWS
20984
    WSADATA wsaData;
20985
    janet_assert(!WSAStartup(MAKEWORD(2, 2), &wsaData), "could not start winsock");
20986
#endif
20987
6.23k
}
20988
20989
6.23k
void janet_net_deinit(void) {
20990
#ifdef JANET_WINDOWS
20991
    WSACleanup();
20992
#endif
20993
6.23k
}
20994
20995
#endif
20996
20997
20998
/* src/core/os.c */
20999
#line 0 "src/core/os.c"
21000
21001
/*
21002
* Copyright (c) 2025 Calvin Rose and contributors.
21003
*
21004
* Permission is hereby granted, free of charge, to any person obtaining a copy
21005
* of this software and associated documentation files (the "Software"), to
21006
* deal in the Software without restriction, including without limitation the
21007
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
21008
* sell copies of the Software, and to permit persons to whom the Software is
21009
* furnished to do so, subject to the following conditions:
21010
*
21011
* The above copyright notice and this permission notice shall be included in
21012
* all copies or substantial portions of the Software.
21013
*
21014
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21015
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21016
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21017
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21018
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21019
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21020
* IN THE SOFTWARE.
21021
*/
21022
21023
#ifndef JANET_AMALG
21024
#include "features.h"
21025
#include <janet.h>
21026
#include "util.h"
21027
#include "gc.h"
21028
#endif
21029
21030
#include <stdlib.h>
21031
21032
#ifndef JANET_REDUCED_OS
21033
21034
#include <time.h>
21035
#include <fcntl.h>
21036
#include <errno.h>
21037
#include <limits.h>
21038
#include <stdio.h>
21039
#include <string.h>
21040
#include <sys/stat.h>
21041
#include <signal.h>
21042
#include <locale.h>
21043
21044
#ifdef JANET_BSD
21045
#include <sys/sysctl.h>
21046
#endif
21047
21048
#ifdef JANET_LINUX
21049
#include <sched.h>
21050
#endif
21051
21052
#ifdef JANET_WINDOWS
21053
#include <windows.h>
21054
#include <direct.h>
21055
#include <sys/utime.h>
21056
#include <io.h>
21057
#include <process.h>
21058
#define JANET_SPAWN_CHDIR
21059
#else
21060
#include <spawn.h>
21061
#include <utime.h>
21062
#include <unistd.h>
21063
#include <dirent.h>
21064
#include <sys/types.h>
21065
#include <sys/wait.h>
21066
#ifdef JANET_APPLE
21067
#include <crt_externs.h>
21068
#define environ (*_NSGetEnviron())
21069
#else
21070
extern char **environ;
21071
#endif
21072
#ifdef JANET_THREADS
21073
#include <pthread.h>
21074
#endif
21075
#endif
21076
21077
/* Detect availability of posix_spawn_file_actions_addchdir_np. Since
21078
 * this doesn't seem to follow any standard, just a common extension, we
21079
 * must enumerate supported systems for availability. Define JANET_SPAWN_NO_CHDIR
21080
 * to disable this. */
21081
#ifndef JANET_SPAWN_NO_CHDIR
21082
#ifdef __GLIBC__
21083
#define JANET_SPAWN_CHDIR
21084
#elif defined(JANET_APPLE) /* Some older versions may not work here. */
21085
#define JANET_SPAWN_CHDIR
21086
#elif defined(__FreeBSD__) /* Not all BSDs work, for example openBSD doesn't seem to support this */
21087
#define JANET_SPAWN_CHDIR
21088
#endif
21089
#endif
21090
21091
/* Not POSIX, but all Unixes but Solaris have this function. */
21092
#if defined(JANET_POSIX) && !defined(__sun)
21093
time_t timegm(struct tm *tm);
21094
#elif defined(JANET_WINDOWS)
21095
#define timegm _mkgmtime
21096
#endif
21097
21098
/* Access to some global variables should be synchronized if not in single threaded mode, as
21099
 * setenv/getenv are not thread safe. */
21100
#ifdef JANET_THREADS
21101
# ifdef JANET_WINDOWS
21102
static CRITICAL_SECTION env_lock;
21103
static void janet_lock_environ(void) {
21104
    EnterCriticalSection(&env_lock);
21105
}
21106
static void janet_unlock_environ(void) {
21107
    LeaveCriticalSection(&env_lock);
21108
}
21109
# else
21110
static pthread_mutex_t env_lock = PTHREAD_MUTEX_INITIALIZER;
21111
static void janet_lock_environ(void) {
21112
    pthread_mutex_lock(&env_lock);
21113
}
21114
static void janet_unlock_environ(void) {
21115
    pthread_mutex_unlock(&env_lock);
21116
}
21117
# endif
21118
#else
21119
0
static void janet_lock_environ(void) {
21120
0
}
21121
0
static void janet_unlock_environ(void) {
21122
0
}
21123
#endif
21124
21125
#endif /* JANET_REDCUED_OS */
21126
21127
/* Core OS functions */
21128
21129
/* Full OS functions */
21130
21131
#define janet_stringify1(x) #x
21132
#define janet_stringify(x) janet_stringify1(x)
21133
21134
JANET_CORE_FN(os_which,
21135
              "(os/which)",
21136
              "Check the current operating system. Returns one of:\n\n"
21137
              "* :windows\n\n"
21138
              "* :mingw\n\n"
21139
              "* :cygwin\n\n"
21140
              "* :macos\n\n"
21141
              "* :web - Web assembly (emscripten)\n\n"
21142
              "* :linux\n\n"
21143
              "* :freebsd\n\n"
21144
              "* :openbsd\n\n"
21145
              "* :netbsd\n\n"
21146
              "* :dragonfly\n\n"
21147
              "* :bsd\n\n"
21148
              "* :posix - A POSIX compatible system (default)\n\n"
21149
0
              "May also return a custom keyword specified at build time.") {
21150
0
    janet_fixarity(argc, 0);
21151
0
    (void) argv;
21152
#if defined(JANET_OS_NAME)
21153
    return janet_ckeywordv(janet_stringify(JANET_OS_NAME));
21154
#elif defined(JANET_MINGW)
21155
    return janet_ckeywordv("mingw");
21156
#elif defined(JANET_CYGWIN)
21157
    return janet_ckeywordv("cygwin");
21158
#elif defined(JANET_WINDOWS)
21159
    return janet_ckeywordv("windows");
21160
#elif defined(JANET_APPLE)
21161
    return janet_ckeywordv("macos");
21162
#elif defined(__EMSCRIPTEN__)
21163
    return janet_ckeywordv("web");
21164
#elif defined(JANET_LINUX)
21165
0
    return janet_ckeywordv("linux");
21166
#elif defined(__FreeBSD__)
21167
    return janet_ckeywordv("freebsd");
21168
#elif defined(__NetBSD__)
21169
    return janet_ckeywordv("netbsd");
21170
#elif defined(__OpenBSD__)
21171
    return janet_ckeywordv("openbsd");
21172
#elif defined(__DragonFly__)
21173
    return janet_ckeywordv("dragonfly");
21174
#elif defined(JANET_BSD)
21175
    return janet_ckeywordv("bsd");
21176
#else
21177
    return janet_ckeywordv("posix");
21178
#endif
21179
0
}
21180
21181
/* Detect the ISA we are compiled for */
21182
JANET_CORE_FN(os_arch,
21183
              "(os/arch)",
21184
              "Check the ISA that janet was compiled for. Returns one of:\n\n"
21185
              "* :x86\n\n"
21186
              "* :x64\n\n"
21187
              "* :arm\n\n"
21188
              "* :aarch64\n\n"
21189
              "* :riscv32\n\n"
21190
              "* :riscv64\n\n"
21191
              "* :sparc\n\n"
21192
              "* :wasm\n\n"
21193
              "* :s390\n\n"
21194
              "* :s390x\n\n"
21195
0
              "* :unknown\n") {
21196
0
    janet_fixarity(argc, 0);
21197
0
    (void) argv;
21198
    /* Check 64-bit vs 32-bit */
21199
#if defined(JANET_ARCH_NAME)
21200
    return janet_ckeywordv(janet_stringify(JANET_ARCH_NAME));
21201
#elif defined(__EMSCRIPTEN__)
21202
    return janet_ckeywordv("wasm");
21203
#elif (defined(__x86_64__) || defined(_M_X64))
21204
0
    return janet_ckeywordv("x64");
21205
#elif defined(__i386) || defined(_M_IX86)
21206
    return janet_ckeywordv("x86");
21207
#elif defined(_M_ARM64) || defined(__aarch64__)
21208
    return janet_ckeywordv("aarch64");
21209
#elif defined(_M_ARM) || defined(__arm__)
21210
    return janet_ckeywordv("arm");
21211
#elif (defined(__riscv) && (__riscv_xlen == 64))
21212
    return janet_ckeywordv("riscv64");
21213
#elif (defined(__riscv) && (__riscv_xlen == 32))
21214
    return janet_ckeywordv("riscv32");
21215
#elif (defined(__sparc__))
21216
    return janet_ckeywordv("sparc");
21217
#elif (defined(__ppc__))
21218
    return janet_ckeywordv("ppc");
21219
#elif (defined(__ppc64__) || defined(_ARCH_PPC64) || defined(_M_PPC))
21220
    return janet_ckeywordv("ppc64");
21221
#elif (defined(__s390x__))
21222
    return janet_ckeywordv("s390x");
21223
#elif (defined(__s390__))
21224
    return janet_ckeywordv("s390");
21225
#else
21226
    return janet_ckeywordv("unknown");
21227
#endif
21228
0
}
21229
21230
/* Detect the compiler used to build the interpreter */
21231
JANET_CORE_FN(os_compiler,
21232
              "(os/compiler)",
21233
              "Get the compiler used to compile the interpreter. Returns one of:\n\n"
21234
              "* :gcc\n\n"
21235
              "* :clang\n\n"
21236
              "* :msvc\n\n"
21237
0
              "* :unknown\n\n") {
21238
0
    janet_fixarity(argc, 0);
21239
0
    (void) argv;
21240
#if defined(_MSC_VER)
21241
    return janet_ckeywordv("msvc");
21242
#elif defined(__clang__)
21243
0
    return janet_ckeywordv("clang");
21244
#elif defined(__GNUC__)
21245
    return janet_ckeywordv("gcc");
21246
#else
21247
    return janet_ckeywordv("unknown");
21248
#endif
21249
0
}
21250
21251
#undef janet_stringify1
21252
#undef janet_stringify
21253
21254
JANET_CORE_FN(os_exit,
21255
              "(os/exit &opt x force)",
21256
              "Exit from janet with an exit code equal to x. If x is not an integer, "
21257
              "the exit with status equal the hash of x. If `force` is truthy will exit immediately and "
21258
0
              "skip cleanup code.") {
21259
0
    janet_arity(argc, 0, 2);
21260
0
    int status;
21261
0
    if (argc == 0) {
21262
0
        status = EXIT_SUCCESS;
21263
0
    } else if (janet_checkint(argv[0])) {
21264
0
        status = janet_unwrap_integer(argv[0]);
21265
0
    } else {
21266
0
        status = EXIT_FAILURE;
21267
0
    }
21268
0
    janet_deinit();
21269
0
    if (argc >= 2 && janet_truthy(argv[1])) {
21270
0
        _Exit(status);
21271
0
    } else {
21272
0
        exit(status);
21273
0
    }
21274
0
    return janet_wrap_nil();
21275
0
}
21276
21277
#ifndef JANET_REDUCED_OS
21278
21279
JANET_CORE_FN(os_cpu_count,
21280
              "(os/cpu-count &opt dflt)",
21281
              "Get an approximate number of CPUs available on for this process to use. If "
21282
0
              "unable to get an approximation, will return a default value dflt.") {
21283
0
    janet_arity(argc, 0, 1);
21284
0
    Janet dflt = argc > 0 ? argv[0] : janet_wrap_nil();
21285
#ifdef JANET_WINDOWS
21286
    (void) dflt;
21287
    SYSTEM_INFO info;
21288
    GetSystemInfo(&info);
21289
    return janet_wrap_integer(info.dwNumberOfProcessors);
21290
#elif defined(JANET_LINUX)
21291
    (void) dflt;
21292
0
    cpu_set_t cs;
21293
0
    CPU_ZERO(&cs);
21294
0
    sched_getaffinity(0, sizeof(cs), &cs);
21295
0
    int count = CPU_COUNT(&cs);
21296
0
    return janet_wrap_integer(count);
21297
#elif defined(JANET_BSD) && defined(HW_NCPUONLINE)
21298
    (void) dflt;
21299
    const int name[2] = {CTL_HW, HW_NCPUONLINE};
21300
    int result = 0;
21301
    size_t len = sizeof(int);
21302
    if (-1 == sysctl(name, 2, &result, &len, NULL, 0)) {
21303
        return dflt;
21304
    }
21305
    return janet_wrap_integer(result);
21306
#elif defined(JANET_BSD) && defined(HW_NCPU)
21307
    (void) dflt;
21308
    const int name[2] = {CTL_HW, HW_NCPU};
21309
    int result = 0;
21310
    size_t len = sizeof(int);
21311
    if (-1 == sysctl(name, 2, &result, &len, NULL, 0)) {
21312
        return dflt;
21313
    }
21314
    return janet_wrap_integer(result);
21315
#else
21316
    return dflt;
21317
#endif
21318
0
}
21319
21320
#ifndef JANET_NO_PROCESSES
21321
21322
/* Get env for os_execute */
21323
#ifdef JANET_WINDOWS
21324
typedef char *EnvBlock;
21325
#else
21326
typedef char **EnvBlock;
21327
#endif
21328
21329
/* Get env for os_execute */
21330
0
static EnvBlock os_execute_env(int32_t argc, const Janet *argv) {
21331
0
    if (argc <= 2) return NULL;
21332
0
    JanetDictView dict = janet_getdictionary(argv, 2);
21333
#ifdef JANET_WINDOWS
21334
    JanetBuffer *temp = janet_buffer(10);
21335
    for (int32_t i = 0; i < dict.cap; i++) {
21336
        const JanetKV *kv = dict.kvs + i;
21337
        if (!janet_checktype(kv->key, JANET_STRING)) continue;
21338
        if (!janet_checktype(kv->value, JANET_STRING)) continue;
21339
        const uint8_t *keys = janet_unwrap_string(kv->key);
21340
        const uint8_t *vals = janet_unwrap_string(kv->value);
21341
        janet_buffer_push_bytes(temp, keys, janet_string_length(keys));
21342
        janet_buffer_push_u8(temp, '=');
21343
        janet_buffer_push_bytes(temp, vals, janet_string_length(vals));
21344
        janet_buffer_push_u8(temp, '\0');
21345
    }
21346
    janet_buffer_push_u8(temp, '\0');
21347
    char *ret = janet_smalloc(temp->count);
21348
    memcpy(ret, temp->data, temp->count);
21349
    return ret;
21350
#else
21351
0
    char **envp = janet_smalloc(sizeof(char *) * ((size_t)dict.len + 1));
21352
0
    int32_t j = 0;
21353
0
    for (int32_t i = 0; i < dict.cap; i++) {
21354
0
        const JanetKV *kv = dict.kvs + i;
21355
0
        if (!janet_checktype(kv->key, JANET_STRING)) continue;
21356
0
        if (!janet_checktype(kv->value, JANET_STRING)) continue;
21357
0
        const uint8_t *keys = janet_unwrap_string(kv->key);
21358
0
        const uint8_t *vals = janet_unwrap_string(kv->value);
21359
0
        int32_t klen = janet_string_length(keys);
21360
0
        int32_t vlen = janet_string_length(vals);
21361
        /* Check keys has no embedded 0s or =s. */
21362
0
        int skip = 0;
21363
0
        for (int32_t k = 0; k < klen; k++) {
21364
0
            if (keys[k] == '\0' || keys[k] == '=') {
21365
0
                skip = 1;
21366
0
                break;
21367
0
            }
21368
0
        }
21369
0
        if (skip) continue;
21370
0
        char *envitem = janet_smalloc((size_t) klen + (size_t) vlen + 2);
21371
0
        memcpy(envitem, keys, klen);
21372
0
        envitem[klen] = '=';
21373
0
        memcpy(envitem + klen + 1, vals, vlen);
21374
0
        envitem[klen + vlen + 1] = 0;
21375
0
        envp[j++] = envitem;
21376
0
    }
21377
0
    envp[j] = NULL;
21378
0
    return envp;
21379
0
#endif
21380
0
}
21381
21382
0
static void os_execute_cleanup(EnvBlock envp, const char **child_argv) {
21383
#ifdef JANET_WINDOWS
21384
    (void) child_argv;
21385
    if (NULL != envp) janet_sfree(envp);
21386
#else
21387
0
    janet_sfree((void *)child_argv);
21388
0
    if (NULL != envp) {
21389
0
        char **envitem = envp;
21390
0
        while (*envitem != NULL) {
21391
0
            janet_sfree(*envitem);
21392
0
            envitem++;
21393
0
        }
21394
0
    }
21395
0
    janet_sfree(envp);
21396
0
#endif
21397
0
}
21398
21399
#ifdef JANET_WINDOWS
21400
/* Windows processes created via CreateProcess get only one command line argument string, and
21401
 * must parse this themselves. Each processes is free to do this however they like, but the
21402
 * standard parsing method is CommandLineToArgvW. We need to properly escape arguments into
21403
 * a single string of this format. Returns a buffer that can be cast into a c string. */
21404
static JanetBuffer *os_exec_escape(JanetView args) {
21405
    JanetBuffer *b = janet_buffer(0);
21406
    for (int32_t i = 0; i < args.len; i++) {
21407
        const char *arg = janet_getcstring(args.items, i);
21408
21409
        /* Push leading space if not first */
21410
        if (i) janet_buffer_push_u8(b, ' ');
21411
21412
        /* Find first special character */
21413
        const char *first_spec = arg;
21414
        while (*first_spec) {
21415
            switch (*first_spec) {
21416
                case ' ':
21417
                case '\t':
21418
                case '\v':
21419
                case '\n':
21420
                case '"':
21421
                    goto found;
21422
                case '\0':
21423
                    janet_panic("embedded 0 not allowed in command line string");
21424
                default:
21425
                    first_spec++;
21426
                    break;
21427
            }
21428
        }
21429
    found:
21430
21431
        /* Check if needs escape */
21432
        if (*first_spec == '\0') {
21433
            /* No escape needed */
21434
            janet_buffer_push_cstring(b, arg);
21435
        } else {
21436
            /* Escape */
21437
            janet_buffer_push_u8(b, '"');
21438
            for (const char *c = arg; ; c++) {
21439
                unsigned numBackSlashes = 0;
21440
                while (*c == '\\') {
21441
                    c++;
21442
                    numBackSlashes++;
21443
                }
21444
                if (*c == '"') {
21445
                    /* Escape all backslashes and double quote mark */
21446
                    int32_t n = 2 * numBackSlashes + 1;
21447
                    janet_buffer_extra(b, n + 1);
21448
                    memset(b->data + b->count, '\\', n);
21449
                    b->count += n;
21450
                    janet_buffer_push_u8(b, '"');
21451
                } else if (*c) {
21452
                    /* Don't escape backslashes. */
21453
                    int32_t n = numBackSlashes;
21454
                    janet_buffer_extra(b, n + 1);
21455
                    memset(b->data + b->count, '\\', n);
21456
                    b->count += n;
21457
                    janet_buffer_push_u8(b, *c);
21458
                } else {
21459
                    /* we finished Escape all backslashes */
21460
                    int32_t n = 2 * numBackSlashes;
21461
                    janet_buffer_extra(b, n + 1);
21462
                    memset(b->data + b->count, '\\', n);
21463
                    b->count += n;
21464
                    break;
21465
                }
21466
            }
21467
            janet_buffer_push_u8(b, '"');
21468
        }
21469
    }
21470
    janet_buffer_push_u8(b, 0);
21471
    return b;
21472
}
21473
#endif
21474
21475
/* Process type for when running a subprocess and not immediately waiting */
21476
static const JanetAbstractType ProcAT;
21477
#define JANET_PROC_CLOSED 1
21478
0
#define JANET_PROC_WAITED 2
21479
0
#define JANET_PROC_WAITING 4
21480
0
#define JANET_PROC_ERROR_NONZERO 8
21481
0
#define JANET_PROC_OWNS_STDIN 16
21482
0
#define JANET_PROC_OWNS_STDOUT 32
21483
0
#define JANET_PROC_OWNS_STDERR 64
21484
0
#define JANET_PROC_ALLOW_ZOMBIE 128
21485
typedef struct {
21486
    int flags;
21487
#ifdef JANET_WINDOWS
21488
    HANDLE pHandle;
21489
    HANDLE tHandle;
21490
#else
21491
    pid_t pid;
21492
#endif
21493
    int return_code;
21494
#ifdef JANET_EV
21495
    JanetStream *in;
21496
    JanetStream *out;
21497
    JanetStream *err;
21498
#else
21499
    JanetFile *in;
21500
    JanetFile *out;
21501
    JanetFile *err;
21502
#endif
21503
} JanetProc;
21504
21505
#ifdef JANET_EV
21506
21507
#ifdef JANET_WINDOWS
21508
21509
static JanetEVGenericMessage janet_proc_wait_subr(JanetEVGenericMessage args) {
21510
    JanetProc *proc = (JanetProc *) args.argp;
21511
    WaitForSingleObject(proc->pHandle, INFINITE);
21512
    DWORD exitcode = 0;
21513
    GetExitCodeProcess(proc->pHandle, &exitcode);
21514
    args.tag = (int32_t) exitcode;
21515
    return args;
21516
}
21517
21518
#else /* windows check */
21519
21520
0
static int proc_get_status(JanetProc *proc) {
21521
    /* Use POSIX shell semantics for interpreting signals */
21522
0
    int status = 0;
21523
0
    pid_t result;
21524
0
    do {
21525
0
        result = waitpid(proc->pid, &status, 0);
21526
0
    } while (result == -1 && errno == EINTR);
21527
0
    if (WIFEXITED(status)) {
21528
0
        status = WEXITSTATUS(status);
21529
0
    } else if (WIFSTOPPED(status)) {
21530
0
        status = WSTOPSIG(status) + 128;
21531
0
    } else if (WIFSIGNALED(status)) {
21532
0
        status = WTERMSIG(status) + 128;
21533
0
    } else {
21534
        /* Could possibly return -1 but for now, just panic */
21535
0
        janet_panicf("Undefined status code for process termination, %d.", status);
21536
0
    }
21537
0
    return status;
21538
0
}
21539
21540
/* Function that is called in separate thread to wait on a pid */
21541
0
static JanetEVGenericMessage janet_proc_wait_subr(JanetEVGenericMessage args) {
21542
0
    JanetProc *proc = (JanetProc *) args.argp;
21543
0
    args.tag = proc_get_status(proc);
21544
0
    return args;
21545
0
}
21546
21547
#endif /* End windows check */
21548
21549
/* Callback that is called in main thread when subroutine completes. */
21550
0
static void janet_proc_wait_cb(JanetEVGenericMessage args) {
21551
0
    JanetProc *proc = (JanetProc *) args.argp;
21552
0
    if (NULL != proc) {
21553
0
        int status = args.tag;
21554
0
        proc->return_code = (int32_t) status;
21555
0
        proc->flags |= JANET_PROC_WAITED;
21556
0
        proc->flags &= ~JANET_PROC_WAITING;
21557
0
        janet_gcunroot(janet_wrap_abstract(proc));
21558
0
        janet_gcunroot(janet_wrap_fiber(args.fiber));
21559
0
        uint32_t sched_id = (uint32_t) args.argi;
21560
0
        if (janet_fiber_can_resume(args.fiber) && args.fiber->sched_id == sched_id) {
21561
0
            if ((status != 0) && (proc->flags & JANET_PROC_ERROR_NONZERO)) {
21562
0
                JanetString s = janet_formatc("command failed with non-zero exit code %d", status);
21563
0
                janet_cancel(args.fiber, janet_wrap_string(s));
21564
0
            } else {
21565
0
                janet_schedule(args.fiber, janet_wrap_integer(status));
21566
0
            }
21567
0
        }
21568
0
    }
21569
0
}
21570
21571
#endif /* End ev check */
21572
21573
0
static int janet_proc_gc(void *p, size_t s) {
21574
0
    (void) s;
21575
0
    JanetProc *proc = (JanetProc *) p;
21576
#ifdef JANET_WINDOWS
21577
    if (!(proc->flags & JANET_PROC_CLOSED)) {
21578
        if (!(proc->flags & JANET_PROC_ALLOW_ZOMBIE)) {
21579
            TerminateProcess(proc->pHandle, 1);
21580
        }
21581
        CloseHandle(proc->pHandle);
21582
        CloseHandle(proc->tHandle);
21583
    }
21584
#else
21585
0
    if (!(proc->flags & (JANET_PROC_WAITED | JANET_PROC_ALLOW_ZOMBIE))) {
21586
        /* Kill and wait to prevent zombies */
21587
0
        kill(proc->pid, SIGKILL);
21588
0
        int status;
21589
0
        if (!(proc->flags & JANET_PROC_WAITING)) {
21590
0
            waitpid(proc->pid, &status, 0);
21591
0
        }
21592
0
    }
21593
0
#endif
21594
0
    return 0;
21595
0
}
21596
21597
0
static int janet_proc_mark(void *p, size_t s) {
21598
0
    (void) s;
21599
0
    JanetProc *proc = (JanetProc *)p;
21600
0
    if (NULL != proc->in) janet_mark(janet_wrap_abstract(proc->in));
21601
0
    if (NULL != proc->out) janet_mark(janet_wrap_abstract(proc->out));
21602
0
    if (NULL != proc->err) janet_mark(janet_wrap_abstract(proc->err));
21603
0
    return 0;
21604
0
}
21605
21606
#ifdef JANET_EV
21607
static JANET_NO_RETURN void
21608
#else
21609
static Janet
21610
#endif
21611
0
os_proc_wait_impl(JanetProc *proc) {
21612
0
    if (proc->flags & (JANET_PROC_WAITED | JANET_PROC_WAITING)) {
21613
0
        janet_panicf("cannot wait twice on a process");
21614
0
    }
21615
0
#ifdef JANET_EV
21616
    /* Event loop implementation - threaded call */
21617
0
    proc->flags |= JANET_PROC_WAITING;
21618
0
    JanetEVGenericMessage targs;
21619
0
    memset(&targs, 0, sizeof(targs));
21620
0
    targs.argp = proc;
21621
0
    targs.fiber = janet_root_fiber();
21622
0
    targs.argi = (uint32_t) targs.fiber->sched_id;
21623
0
    janet_gcroot(janet_wrap_abstract(proc));
21624
0
    janet_gcroot(janet_wrap_fiber(targs.fiber));
21625
0
    janet_ev_threaded_call(janet_proc_wait_subr, targs, janet_proc_wait_cb);
21626
0
    janet_await();
21627
#else
21628
    /* Non evented implementation */
21629
    proc->flags |= JANET_PROC_WAITED;
21630
    int status = 0;
21631
#ifdef JANET_WINDOWS
21632
    WaitForSingleObject(proc->pHandle, INFINITE);
21633
    GetExitCodeProcess(proc->pHandle, &status);
21634
    if (!(proc->flags & JANET_PROC_CLOSED)) {
21635
        proc->flags |= JANET_PROC_CLOSED;
21636
        CloseHandle(proc->pHandle);
21637
        CloseHandle(proc->tHandle);
21638
    }
21639
#else
21640
    waitpid(proc->pid, &status, 0);
21641
#endif
21642
    proc->return_code = (int32_t) status;
21643
    return janet_wrap_integer(proc->return_code);
21644
#endif
21645
0
}
21646
21647
JANET_CORE_FN(os_proc_wait,
21648
              "(os/proc-wait proc)",
21649
              "Suspend the current fiber until the subprocess `proc` completes. Once `proc` "
21650
              "completes, return the exit code of `proc`. If called more than once on the same "
21651
              "core/process value, will raise an error. When creating subprocesses using "
21652
              "`os/spawn`, this function should be called on the returned value to avoid zombie "
21653
0
              "processes.") {
21654
0
    janet_fixarity(argc, 1);
21655
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
21656
0
#ifdef JANET_EV
21657
0
    os_proc_wait_impl(proc);
21658
#else
21659
    return os_proc_wait_impl(proc);
21660
#endif
21661
0
}
21662
21663
struct keyword_signal {
21664
    const char *keyword;
21665
    int signal;
21666
};
21667
21668
#ifndef JANET_WINDOWS
21669
static const struct keyword_signal signal_keywords[] = {
21670
#ifdef SIGKILL
21671
    {"kill", SIGKILL},
21672
#endif
21673
    {"int", SIGINT},
21674
    {"abrt", SIGABRT},
21675
    {"fpe", SIGFPE},
21676
    {"ill", SIGILL},
21677
    {"segv", SIGSEGV},
21678
#ifdef SIGTERM
21679
    {"term", SIGTERM},
21680
#endif
21681
#ifdef SIGALRM
21682
    {"alrm", SIGALRM},
21683
#endif
21684
#ifdef SIGHUP
21685
    {"hup", SIGHUP},
21686
#endif
21687
#ifdef SIGPIPE
21688
    {"pipe", SIGPIPE},
21689
#endif
21690
#ifdef SIGQUIT
21691
    {"quit", SIGQUIT},
21692
#endif
21693
#ifdef SIGUSR1
21694
    {"usr1", SIGUSR1},
21695
#endif
21696
#ifdef SIGUSR2
21697
    {"usr2", SIGUSR2},
21698
#endif
21699
#ifdef SIGCHLD
21700
    {"chld", SIGCHLD},
21701
#endif
21702
#ifdef SIGCONT
21703
    {"cont", SIGCONT},
21704
#endif
21705
#ifdef SIGSTOP
21706
    {"stop", SIGSTOP},
21707
#endif
21708
#ifdef SIGTSTP
21709
    {"tstp", SIGTSTP},
21710
#endif
21711
#ifdef SIGTTIN
21712
    {"ttin", SIGTTIN},
21713
#endif
21714
#ifdef SIGTTOU
21715
    {"ttou", SIGTTOU},
21716
#endif
21717
#ifdef SIGBUS
21718
    {"bus", SIGBUS},
21719
#endif
21720
#ifdef SIGPOLL
21721
    {"poll", SIGPOLL},
21722
#endif
21723
#ifdef SIGPROF
21724
    {"prof", SIGPROF},
21725
#endif
21726
#ifdef SIGSYS
21727
    {"sys", SIGSYS},
21728
#endif
21729
#ifdef SIGTRAP
21730
    {"trap", SIGTRAP},
21731
#endif
21732
#ifdef SIGURG
21733
    {"urg", SIGURG},
21734
#endif
21735
#ifdef SIGVTALRM
21736
    {"vtlarm", SIGVTALRM},
21737
#endif
21738
#ifdef SIGXCPU
21739
    {"xcpu", SIGXCPU},
21740
#endif
21741
#ifdef SIGXFSZ
21742
    {"xfsz", SIGXFSZ},
21743
#endif
21744
    {NULL, 0},
21745
};
21746
21747
0
static int get_signal_kw(const Janet *argv, int32_t n) {
21748
0
    JanetKeyword signal_kw = janet_getkeyword(argv, n);
21749
0
    const struct keyword_signal *ptr = signal_keywords;
21750
0
    while (ptr->keyword) {
21751
0
        if (!janet_cstrcmp(signal_kw, ptr->keyword)) {
21752
0
            return ptr->signal;
21753
0
        }
21754
0
        ptr++;
21755
0
    }
21756
0
    janet_panicf("undefined signal %v", argv[n]);
21757
0
}
21758
#endif
21759
21760
JANET_CORE_FN(os_proc_kill,
21761
              "(os/proc-kill proc &opt wait signal)",
21762
              "Kill the subprocess `proc` by sending SIGKILL to it on POSIX systems, or by closing "
21763
              "the process handle on Windows. If `proc` has already completed, raise an error. If "
21764
              "`wait` is truthy, will wait for `proc` to complete and return the exit code (this "
21765
              "will raise an error if `proc` is being waited for). Otherwise, return `proc`. If "
21766
              "`signal` is provided, send it instead of SIGKILL. Signal keywords are named after "
21767
              "their C counterparts but in lowercase with the leading SIG stripped. `signal` is "
21768
0
              "ignored on Windows.") {
21769
0
    janet_arity(argc, 1, 3);
21770
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
21771
0
    if (proc->flags & JANET_PROC_WAITED) {
21772
0
        janet_panicf("cannot kill process that has already finished");
21773
0
    }
21774
#ifdef JANET_WINDOWS
21775
    if (proc->flags & JANET_PROC_CLOSED) {
21776
        janet_panicf("cannot close process handle that is already closed");
21777
    }
21778
    proc->flags |= JANET_PROC_CLOSED;
21779
    TerminateProcess(proc->pHandle, 1);
21780
    CloseHandle(proc->pHandle);
21781
    CloseHandle(proc->tHandle);
21782
#else
21783
0
    int signal = -1;
21784
0
    if (argc == 3) {
21785
0
        signal = get_signal_kw(argv, 2);
21786
0
    }
21787
0
    int status = kill(proc->pid, signal == -1 ? SIGKILL : signal);
21788
0
    if (status) {
21789
0
        janet_panic(janet_strerror(errno));
21790
0
    }
21791
0
#endif
21792
    /* After killing process we wait on it. */
21793
0
    if (argc > 1 && janet_truthy(argv[1])) {
21794
0
#ifdef JANET_EV
21795
0
        os_proc_wait_impl(proc);
21796
#else
21797
        return os_proc_wait_impl(proc);
21798
#endif
21799
0
    } else {
21800
0
        return argv[0];
21801
0
    }
21802
0
}
21803
21804
JANET_CORE_FN(os_proc_close,
21805
              "(os/proc-close proc)",
21806
              "Close pipes created for subprocess `proc` by `os/spawn` if they have not been "
21807
              "closed. Then, if `proc` is not being waited for, wait. If this function waits, when "
21808
0
              "`proc` completes, return the exit code of `proc`. Otherwise, return nil.") {
21809
0
    janet_fixarity(argc, 1);
21810
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
21811
0
#ifdef JANET_EV
21812
0
    if (proc->flags & JANET_PROC_OWNS_STDIN) janet_stream_close(proc->in);
21813
0
    if (proc->flags & JANET_PROC_OWNS_STDOUT) janet_stream_close(proc->out);
21814
0
    if (proc->flags & JANET_PROC_OWNS_STDERR) janet_stream_close(proc->err);
21815
#else
21816
    if (proc->flags & JANET_PROC_OWNS_STDIN) janet_file_close(proc->in);
21817
    if (proc->flags & JANET_PROC_OWNS_STDOUT) janet_file_close(proc->out);
21818
    if (proc->flags & JANET_PROC_OWNS_STDERR) janet_file_close(proc->err);
21819
#endif
21820
0
    proc->flags &= ~(JANET_PROC_OWNS_STDIN | JANET_PROC_OWNS_STDOUT | JANET_PROC_OWNS_STDERR);
21821
0
    if (proc->flags & (JANET_PROC_WAITED | JANET_PROC_WAITING)) {
21822
0
        return janet_wrap_nil();
21823
0
    }
21824
0
#ifdef JANET_EV
21825
0
    os_proc_wait_impl(proc);
21826
#else
21827
    return os_proc_wait_impl(proc);
21828
#endif
21829
0
}
21830
21831
JANET_CORE_FN(os_proc_getpid,
21832
              "(os/getpid)",
21833
0
              "Get the process ID of the current process.") {
21834
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
21835
0
    janet_fixarity(argc, 0);
21836
0
    (void) argv;
21837
#ifdef JANET_WINDOWS
21838
    return janet_wrap_number((double) _getpid());
21839
#else
21840
0
    return janet_wrap_number((double) getpid());
21841
0
#endif
21842
0
}
21843
21844
0
static void swap_handles(JanetHandle *handles) {
21845
0
    JanetHandle temp = handles[0];
21846
0
    handles[0] = handles[1];
21847
0
    handles[1] = temp;
21848
0
}
21849
21850
0
static void close_handle(JanetHandle handle) {
21851
#ifdef JANET_WINDOWS
21852
    CloseHandle(handle);
21853
#else
21854
0
    close(handle);
21855
0
#endif
21856
0
}
21857
21858
#ifdef JANET_EV
21859
21860
#ifndef JANET_WINDOWS
21861
0
static void janet_signal_callback(JanetEVGenericMessage msg) {
21862
0
    int sig = msg.tag;
21863
0
    if (msg.argi) janet_interpreter_interrupt_handled(NULL);
21864
0
    Janet handlerv = janet_table_get(&janet_vm.signal_handlers, janet_wrap_integer(sig));
21865
0
    if (!janet_checktype(handlerv, JANET_FUNCTION)) {
21866
        /* Let another thread/process try to handle this */
21867
0
        sigset_t set;
21868
0
        sigemptyset(&set);
21869
0
        sigaddset(&set, sig);
21870
#ifdef JANET_THREADS
21871
        pthread_sigmask(SIG_BLOCK, &set, NULL);
21872
#else
21873
0
        sigprocmask(SIG_BLOCK, &set, NULL);
21874
0
#endif
21875
0
        raise(sig);
21876
0
        return;
21877
0
    }
21878
0
    JanetFunction *handler = janet_unwrap_function(handlerv);
21879
0
    JanetFiber *fiber = janet_fiber(handler, 64, 0, NULL);
21880
0
    janet_schedule_soon(fiber, janet_wrap_nil(), JANET_SIGNAL_OK);
21881
0
}
21882
21883
0
static void janet_signal_trampoline_no_interrupt(int sig) {
21884
    /* Do not interact with global janet state here except for janet_ev_post_event, unsafe! */
21885
0
    JanetEVGenericMessage msg;
21886
0
    memset(&msg, 0, sizeof(msg));
21887
0
    msg.tag = sig;
21888
0
    janet_ev_post_event(&janet_vm, janet_signal_callback, msg);
21889
0
}
21890
21891
0
static void janet_signal_trampoline(int sig) {
21892
    /* Do not interact with global janet state here except for janet_ev_post_event, unsafe! */
21893
0
    JanetEVGenericMessage msg;
21894
0
    memset(&msg, 0, sizeof(msg));
21895
0
    msg.tag = sig;
21896
0
    msg.argi = 1;
21897
0
    janet_interpreter_interrupt(NULL);
21898
0
    janet_ev_post_event(&janet_vm, janet_signal_callback, msg);
21899
0
}
21900
#endif
21901
21902
JANET_CORE_FN(os_sigaction,
21903
              "(os/sigaction which &opt handler interrupt-interpreter)",
21904
              "Add a signal handler for a given action. Use nil for the `handler` argument to remove a signal handler. "
21905
0
              "All signal handlers are the same as supported by `os/proc-kill`.") {
21906
0
    janet_sandbox_assert(JANET_SANDBOX_SIGNAL);
21907
0
    janet_arity(argc, 1, 3);
21908
#ifdef JANET_WINDOWS
21909
    (void) argv;
21910
    janet_panic("unsupported on this platform");
21911
#else
21912
    /* TODO - per thread signal masks */
21913
0
    int rc;
21914
0
    int sig = get_signal_kw(argv, 0);
21915
0
    JanetFunction *handler = janet_optfunction(argv, argc, 1, NULL);
21916
0
    int can_interrupt = janet_optboolean(argv, argc, 2, 0);
21917
0
    Janet oldhandler = janet_table_get(&janet_vm.signal_handlers, janet_wrap_integer(sig));
21918
0
    if (!janet_checktype(oldhandler, JANET_NIL)) {
21919
0
        janet_gcunroot(oldhandler);
21920
0
    }
21921
0
    if (NULL != handler) {
21922
0
        Janet handlerv = janet_wrap_function(handler);
21923
0
        janet_gcroot(handlerv);
21924
0
        janet_table_put(&janet_vm.signal_handlers, janet_wrap_integer(sig), handlerv);
21925
0
    } else {
21926
0
        janet_table_put(&janet_vm.signal_handlers, janet_wrap_integer(sig), janet_wrap_nil());
21927
0
    }
21928
0
    struct sigaction action;
21929
0
    sigset_t mask;
21930
0
    sigaddset(&mask, sig);
21931
0
    memset(&action, 0, sizeof(action));
21932
0
    action.sa_flags |= SA_RESTART;
21933
0
    if (can_interrupt) {
21934
#ifdef JANET_NO_INTERPRETER_INTERRUPT
21935
        janet_panic("interpreter interrupt not enabled");
21936
#else
21937
0
        action.sa_handler = janet_signal_trampoline;
21938
0
#endif
21939
0
    } else {
21940
0
        action.sa_handler = janet_signal_trampoline_no_interrupt;
21941
0
    }
21942
0
    action.sa_mask = mask;
21943
0
    RETRY_EINTR(rc, sigaction(sig, &action, NULL));
21944
0
    sigset_t set;
21945
0
    sigemptyset(&set);
21946
0
    sigaddset(&set, sig);
21947
#ifdef JANET_THREADS
21948
    pthread_sigmask(SIG_UNBLOCK, &set, NULL);
21949
#else
21950
0
    sigprocmask(SIG_UNBLOCK, &set, NULL);
21951
0
#endif
21952
0
    return janet_wrap_nil();
21953
0
#endif
21954
0
}
21955
21956
#endif
21957
21958
/* Create piped file for os/execute and os/spawn. Need to be careful that we mark
21959
   the error flag if we can't create pipe and don't leak handles. *handle will be cleaned
21960
   up by the calling function. If everything goes well, *handle is owned by the calling function,
21961
   (if it is set) and the returned handle owns the other end of the pipe, which will be closed
21962
   on GC or fclose. */
21963
0
static JanetHandle make_pipes(JanetHandle *handle, int reverse, int *errflag) {
21964
0
    JanetHandle handles[2];
21965
0
#ifdef JANET_EV
21966
21967
    /* non-blocking pipes */
21968
0
    if (janet_make_pipe(handles, reverse ? 2 : 1)) goto error;
21969
0
    if (reverse) swap_handles(handles);
21970
#ifdef JANET_WINDOWS
21971
    if (!SetHandleInformation(handles[0], HANDLE_FLAG_INHERIT, 0)) goto error;
21972
#endif
21973
0
    *handle = handles[1];
21974
0
    return handles[0];
21975
21976
#else
21977
21978
    /* Normal blocking pipes */
21979
#ifdef JANET_WINDOWS
21980
    SECURITY_ATTRIBUTES saAttr;
21981
    memset(&saAttr, 0, sizeof(saAttr));
21982
    saAttr.nLength = sizeof(saAttr);
21983
    saAttr.bInheritHandle = TRUE;
21984
    if (!CreatePipe(handles, handles + 1, &saAttr, 0)) goto error;
21985
    if (reverse) swap_handles(handles);
21986
    /* Don't inherit the side of the pipe owned by this process */
21987
    if (!SetHandleInformation(handles[0], HANDLE_FLAG_INHERIT, 0)) goto error;
21988
    *handle = handles[1];
21989
    return handles[0];
21990
#else
21991
    if (pipe(handles)) goto error;
21992
    if (reverse) swap_handles(handles);
21993
    *handle = handles[1];
21994
    return handles[0];
21995
#endif
21996
21997
#endif
21998
0
error:
21999
0
    *errflag = 1;
22000
0
    return JANET_HANDLE_NONE;
22001
0
}
22002
22003
static const JanetMethod proc_methods[] = {
22004
    {"wait", os_proc_wait},
22005
    {"kill", os_proc_kill},
22006
    {"close", os_proc_close},
22007
    /* dud methods for janet_proc_next */
22008
    {"in", NULL},
22009
    {"out", NULL},
22010
    {"err", NULL},
22011
    {NULL, NULL}
22012
};
22013
22014
0
static int janet_proc_get(void *p, Janet key, Janet *out) {
22015
0
    JanetProc *proc = (JanetProc *)p;
22016
0
    if (janet_keyeq(key, "in")) {
22017
0
        *out = (NULL == proc->in) ? janet_wrap_nil() : janet_wrap_abstract(proc->in);
22018
0
        return 1;
22019
0
    }
22020
0
    if (janet_keyeq(key, "out")) {
22021
0
        *out = (NULL == proc->out) ? janet_wrap_nil() : janet_wrap_abstract(proc->out);
22022
0
        return 1;
22023
0
    }
22024
0
    if (janet_keyeq(key, "err")) {
22025
0
        *out = (NULL == proc->err) ? janet_wrap_nil() : janet_wrap_abstract(proc->err);
22026
0
        return 1;
22027
0
    }
22028
0
#ifndef JANET_WINDOWS
22029
0
    if (janet_keyeq(key, "pid")) {
22030
0
        *out = janet_wrap_number(proc->pid);
22031
0
        return 1;
22032
0
    }
22033
0
#endif
22034
0
    if ((-1 != proc->return_code) && janet_keyeq(key, "return-code")) {
22035
0
        *out = janet_wrap_integer(proc->return_code);
22036
0
        return 1;
22037
0
    }
22038
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
22039
0
    return janet_getmethod(janet_unwrap_keyword(key), proc_methods, out);
22040
0
}
22041
22042
0
static Janet janet_proc_next(void *p, Janet key) {
22043
0
    (void) p;
22044
0
    return janet_nextmethod(proc_methods, key);
22045
0
}
22046
22047
static const JanetAbstractType ProcAT = {
22048
    "core/process",
22049
    janet_proc_gc,
22050
    janet_proc_mark,
22051
    janet_proc_get,
22052
    NULL, /* put */
22053
    NULL, /* marshal */
22054
    NULL, /* unmarshal */
22055
    NULL, /* tostring */
22056
    NULL, /* compare */
22057
    NULL, /* hash */
22058
    janet_proc_next,
22059
    JANET_ATEND_NEXT
22060
};
22061
22062
0
static JanetHandle janet_getjstream(Janet *argv, int32_t n, void **orig) {
22063
0
#ifdef JANET_EV
22064
0
    JanetStream *stream = janet_checkabstract(argv[n], &janet_stream_type);
22065
0
    if (stream != NULL) {
22066
0
        if (stream->flags & JANET_STREAM_CLOSED)
22067
0
            janet_panic("stream is closed");
22068
0
        *orig = stream;
22069
0
        return stream->handle;
22070
0
    }
22071
0
#endif
22072
0
    JanetFile *f = janet_checkabstract(argv[n], &janet_file_type);
22073
0
    if (f != NULL) {
22074
0
        if (f->flags & JANET_FILE_CLOSED) {
22075
0
            janet_panic("file is closed");
22076
0
        }
22077
0
        *orig = f;
22078
#ifdef JANET_WINDOWS
22079
        return (HANDLE) _get_osfhandle(_fileno(f->file));
22080
#else
22081
0
        return fileno(f->file);
22082
0
#endif
22083
0
    }
22084
0
    janet_panicf("expected file|stream, got %v", argv[n]);
22085
0
}
22086
22087
#ifdef JANET_EV
22088
0
static JanetStream *get_stdio_for_handle(JanetHandle handle, void *orig, int iswrite) {
22089
0
    if (orig == NULL) {
22090
0
        return janet_stream(handle, iswrite ? JANET_STREAM_WRITABLE : JANET_STREAM_READABLE, NULL);
22091
0
    } else if (janet_abstract_type(orig) == &janet_file_type) {
22092
0
        JanetFile *jf = (JanetFile *)orig;
22093
0
        uint32_t flags = 0;
22094
0
        if (jf->flags & JANET_FILE_WRITE) {
22095
0
            flags |= JANET_STREAM_WRITABLE;
22096
0
        }
22097
0
        if (jf->flags & JANET_FILE_READ) {
22098
0
            flags |= JANET_STREAM_READABLE;
22099
0
        }
22100
        /* duplicate handle when converting file to stream */
22101
#ifdef JANET_WINDOWS
22102
        HANDLE prochandle = GetCurrentProcess();
22103
        HANDLE newHandle = INVALID_HANDLE_VALUE;
22104
        if (!DuplicateHandle(prochandle, handle, prochandle, &newHandle, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
22105
            return NULL;
22106
        }
22107
#else
22108
0
        int newHandle = dup(handle);
22109
0
        if (newHandle < 0) {
22110
0
            return NULL;
22111
0
        }
22112
0
#endif
22113
0
        return janet_stream(newHandle, flags, NULL);
22114
0
    } else {
22115
0
        return orig;
22116
0
    }
22117
0
}
22118
#else
22119
static JanetFile *get_stdio_for_handle(JanetHandle handle, void *orig, int iswrite) {
22120
    if (NULL != orig) return (JanetFile *) orig;
22121
#ifdef JANET_WINDOWS
22122
    int fd = _open_osfhandle((intptr_t) handle, iswrite ? _O_WRONLY : _O_RDONLY);
22123
    if (-1 == fd) return NULL;
22124
    FILE *f = _fdopen(fd, iswrite ? "w" : "r");
22125
    if (NULL == f) {
22126
        _close(fd);
22127
        return NULL;
22128
    }
22129
#else
22130
    FILE *f = fdopen(handle, iswrite ? "w" : "r");
22131
    if (NULL == f) return NULL;
22132
#endif
22133
    return janet_makejfile(f, iswrite ? JANET_FILE_WRITE : JANET_FILE_READ);
22134
}
22135
#endif
22136
22137
typedef enum {
22138
    JANET_EXECUTE_EXECUTE,
22139
    JANET_EXECUTE_SPAWN,
22140
    JANET_EXECUTE_EXEC
22141
} JanetExecuteMode;
22142
22143
0
static Janet os_execute_impl(int32_t argc, Janet *argv, JanetExecuteMode mode) {
22144
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
22145
0
    janet_arity(argc, 1, 3);
22146
22147
    /* Get flags */
22148
0
    int is_spawn = mode == JANET_EXECUTE_SPAWN;
22149
0
    uint64_t flags = 0;
22150
0
    if (argc > 1) {
22151
0
        flags = janet_getflags(argv, 1, "epxd");
22152
0
    }
22153
22154
    /* Get environment */
22155
0
    int use_environ = !janet_flag_at(flags, 0);
22156
0
    EnvBlock envp = os_execute_env(argc, argv);
22157
22158
    /* Get arguments */
22159
0
    JanetView exargs = janet_getindexed(argv, 0);
22160
0
    if (exargs.len < 1) {
22161
0
        janet_panic("expected at least 1 command line argument");
22162
0
    }
22163
22164
    /* Optional stdio redirections */
22165
0
    JanetAbstract orig_in = NULL, orig_out = NULL, orig_err = NULL;
22166
0
    JanetHandle new_in = JANET_HANDLE_NONE, new_out = JANET_HANDLE_NONE, new_err = JANET_HANDLE_NONE;
22167
0
    JanetHandle pipe_in = JANET_HANDLE_NONE, pipe_out = JANET_HANDLE_NONE, pipe_err = JANET_HANDLE_NONE;
22168
0
    int stderr_is_stdout = 0;
22169
0
    int pipe_errflag = 0; /* Track errors setting up pipes */
22170
0
    int pipe_owner_flags = (is_spawn && (flags & 0x8)) ? JANET_PROC_ALLOW_ZOMBIE : 0;
22171
22172
    /* Get optional redirections */
22173
0
    if (argc > 2 && (mode != JANET_EXECUTE_EXEC)) {
22174
0
        JanetDictView tab = janet_getdictionary(argv, 2);
22175
0
        Janet maybe_stdin = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("in"));
22176
0
        Janet maybe_stdout = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("out"));
22177
0
        Janet maybe_stderr = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("err"));
22178
0
        if (is_spawn && janet_keyeq(maybe_stdin, "pipe")) {
22179
0
            new_in = make_pipes(&pipe_in, 1, &pipe_errflag);
22180
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDIN;
22181
0
        } else if (!janet_checktype(maybe_stdin, JANET_NIL)) {
22182
0
            new_in = janet_getjstream(&maybe_stdin, 0, &orig_in);
22183
0
        }
22184
0
        if (is_spawn && janet_keyeq(maybe_stdout, "pipe")) {
22185
0
            new_out = make_pipes(&pipe_out, 0, &pipe_errflag);
22186
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDOUT;
22187
0
        } else if (!janet_checktype(maybe_stdout, JANET_NIL)) {
22188
0
            new_out = janet_getjstream(&maybe_stdout, 0, &orig_out);
22189
0
        }
22190
0
        if (is_spawn && janet_keyeq(maybe_stderr, "pipe")) {
22191
0
            new_err = make_pipes(&pipe_err, 0, &pipe_errflag);
22192
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDERR;
22193
0
        } else if (is_spawn && janet_keyeq(maybe_stderr, "out")) {
22194
0
            stderr_is_stdout = 1;
22195
0
        } else if (!janet_checktype(maybe_stderr, JANET_NIL)) {
22196
0
            new_err = janet_getjstream(&maybe_stderr, 0, &orig_err);
22197
0
        }
22198
0
    }
22199
22200
    /* Optional working directory. Available for both os/execute and os/spawn. */
22201
0
    const char *chdir_path = NULL;
22202
0
    if (argc > 2) {
22203
0
        JanetDictView tab = janet_getdictionary(argv, 2);
22204
0
        Janet workdir = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("cd"));
22205
0
        if (janet_checktype(workdir, JANET_STRING)) {
22206
0
            chdir_path = (const char *) janet_unwrap_string(workdir);
22207
#ifndef JANET_SPAWN_CHDIR
22208
            janet_panicf(":cd argument not supported on this system - %s", chdir_path);
22209
#endif
22210
0
        } else if (!janet_checktype(workdir, JANET_NIL)) {
22211
0
            janet_panicf("expected string for :cd argumnet, got %v", workdir);
22212
0
        }
22213
0
    }
22214
22215
    /* Clean up if any of the pipes have any issues */
22216
0
    if (pipe_errflag) {
22217
0
        if (pipe_in != JANET_HANDLE_NONE) close_handle(pipe_in);
22218
0
        if (pipe_out != JANET_HANDLE_NONE) close_handle(pipe_out);
22219
0
        if (pipe_err != JANET_HANDLE_NONE) close_handle(pipe_err);
22220
0
        janet_panic("failed to create pipes");
22221
0
    }
22222
22223
#ifdef JANET_WINDOWS
22224
22225
    HANDLE pHandle, tHandle;
22226
    SECURITY_ATTRIBUTES saAttr;
22227
    PROCESS_INFORMATION processInfo;
22228
    STARTUPINFO startupInfo;
22229
    LPCSTR lpCurrentDirectory = NULL;
22230
    memset(&saAttr, 0, sizeof(saAttr));
22231
    memset(&processInfo, 0, sizeof(processInfo));
22232
    memset(&startupInfo, 0, sizeof(startupInfo));
22233
    startupInfo.cb = sizeof(startupInfo);
22234
    startupInfo.dwFlags |= STARTF_USESTDHANDLES;
22235
    saAttr.nLength = sizeof(saAttr);
22236
22237
    JanetBuffer *buf = os_exec_escape(exargs);
22238
    if (buf->count > 8191) {
22239
        if (pipe_in != JANET_HANDLE_NONE) CloseHandle(pipe_in);
22240
        if (pipe_out != JANET_HANDLE_NONE) CloseHandle(pipe_out);
22241
        if (pipe_err != JANET_HANDLE_NONE) CloseHandle(pipe_err);
22242
        janet_panic("command line string too long (max 8191 characters)");
22243
    }
22244
    const char *path = (const char *) janet_unwrap_string(exargs.items[0]);
22245
22246
    if (chdir_path != NULL) {
22247
        lpCurrentDirectory = chdir_path;
22248
    }
22249
22250
    /* Do IO redirection */
22251
22252
    if (pipe_in != JANET_HANDLE_NONE) {
22253
        startupInfo.hStdInput = pipe_in;
22254
    } else if (new_in != JANET_HANDLE_NONE) {
22255
        startupInfo.hStdInput = new_in;
22256
    } else {
22257
        startupInfo.hStdInput = (HANDLE) _get_osfhandle(_fileno(stdin));
22258
    }
22259
22260
    if (pipe_out != JANET_HANDLE_NONE) {
22261
        startupInfo.hStdOutput = pipe_out;
22262
    } else if (new_out != JANET_HANDLE_NONE) {
22263
        startupInfo.hStdOutput = new_out;
22264
    } else {
22265
        startupInfo.hStdOutput = (HANDLE) _get_osfhandle(_fileno(stdout));
22266
    }
22267
22268
    if (pipe_err != JANET_HANDLE_NONE) {
22269
        startupInfo.hStdError = pipe_err;
22270
    } else if (new_err != NULL) {
22271
        startupInfo.hStdError = new_err;
22272
    } else if (stderr_is_stdout) {
22273
        startupInfo.hStdError = startupInfo.hStdOutput;
22274
    } else {
22275
        startupInfo.hStdError = (HANDLE) _get_osfhandle(_fileno(stderr));
22276
    }
22277
22278
    int cp_failed = 0;
22279
    if (!CreateProcess(janet_flag_at(flags, 1) ? NULL : path,
22280
                       (char *) buf->data, /* Single CLI argument */
22281
                       &saAttr, /* no proc inheritance */
22282
                       &saAttr, /* no thread inheritance */
22283
                       TRUE, /* handle inheritance */
22284
                       0, /* flags */
22285
                       use_environ ? NULL : envp, /* pass in environment */
22286
                       lpCurrentDirectory,
22287
                       &startupInfo,
22288
                       &processInfo)) {
22289
        cp_failed = 1;
22290
    }
22291
22292
    if (pipe_in != JANET_HANDLE_NONE) CloseHandle(pipe_in);
22293
    if (pipe_out != JANET_HANDLE_NONE) CloseHandle(pipe_out);
22294
    if (pipe_err != JANET_HANDLE_NONE) CloseHandle(pipe_err);
22295
22296
    os_execute_cleanup(envp, NULL);
22297
22298
    if (cp_failed)  {
22299
        janet_panic("failed to create process");
22300
    }
22301
22302
    pHandle = processInfo.hProcess;
22303
    tHandle = processInfo.hThread;
22304
22305
#else
22306
22307
    /* Result */
22308
0
    int status = 0;
22309
22310
0
    const char **child_argv = janet_smalloc(sizeof(char *) * ((size_t) exargs.len + 1));
22311
0
    for (int32_t i = 0; i < exargs.len; i++)
22312
0
        child_argv[i] = janet_getcstring(exargs.items, i);
22313
0
    child_argv[exargs.len] = NULL;
22314
    /* Coerce to form that works for spawn. I'm fairly confident no implementation
22315
     * of posix_spawn would modify the argv array passed in. */
22316
0
    char *const *cargv = (char *const *)child_argv;
22317
22318
0
    if (use_environ) {
22319
0
        janet_lock_environ();
22320
0
    }
22321
22322
    /* exec mode */
22323
0
    if (mode == JANET_EXECUTE_EXEC) {
22324
0
        int status;
22325
0
        if (!use_environ) {
22326
0
            environ = envp;
22327
0
        }
22328
0
        do {
22329
0
            if (janet_flag_at(flags, 1)) {
22330
0
                status = execvp(cargv[0], cargv);
22331
0
            } else {
22332
0
                status = execv(cargv[0], cargv);
22333
0
            }
22334
0
        } while (status == -1 && errno == EINTR);
22335
0
        janet_panicf("%p: %s", cargv[0], janet_strerror(errno ? errno : ENOENT));
22336
0
    }
22337
22338
    /* Use posix_spawn to spawn new process */
22339
22340
    /* Posix spawn setup */
22341
0
    posix_spawn_file_actions_t actions;
22342
0
    posix_spawn_file_actions_init(&actions);
22343
0
#ifdef JANET_SPAWN_CHDIR
22344
0
    if (chdir_path != NULL) {
22345
#ifdef JANET_SPAWN_CHDIR_NO_NP
22346
        posix_spawn_file_actions_addchdir(&actions, chdir_path);
22347
#else
22348
0
        posix_spawn_file_actions_addchdir_np(&actions, chdir_path);
22349
0
#endif
22350
0
    }
22351
0
#endif
22352
0
    if (pipe_in != JANET_HANDLE_NONE) {
22353
0
        posix_spawn_file_actions_adddup2(&actions, pipe_in, 0);
22354
0
        posix_spawn_file_actions_addclose(&actions, pipe_in);
22355
0
    } else if (new_in != JANET_HANDLE_NONE && new_in != 0) {
22356
0
        posix_spawn_file_actions_adddup2(&actions, new_in, 0);
22357
0
        if (new_in != new_out && new_in != new_err)
22358
0
            posix_spawn_file_actions_addclose(&actions, new_in);
22359
0
    }
22360
0
    if (pipe_out != JANET_HANDLE_NONE) {
22361
0
        posix_spawn_file_actions_adddup2(&actions, pipe_out, 1);
22362
0
        posix_spawn_file_actions_addclose(&actions, pipe_out);
22363
0
    } else if (new_out != JANET_HANDLE_NONE && new_out != 1) {
22364
0
        posix_spawn_file_actions_adddup2(&actions, new_out, 1);
22365
0
        if (new_out != new_err)
22366
0
            posix_spawn_file_actions_addclose(&actions, new_out);
22367
0
    }
22368
0
    if (pipe_err != JANET_HANDLE_NONE) {
22369
0
        posix_spawn_file_actions_adddup2(&actions, pipe_err, 2);
22370
0
        posix_spawn_file_actions_addclose(&actions, pipe_err);
22371
0
    } else if (new_err != JANET_HANDLE_NONE && new_err != 2) {
22372
0
        posix_spawn_file_actions_adddup2(&actions, new_err, 2);
22373
0
        posix_spawn_file_actions_addclose(&actions, new_err);
22374
0
    } else if (stderr_is_stdout) {
22375
0
        posix_spawn_file_actions_adddup2(&actions, 1, 2);
22376
0
    }
22377
22378
0
    pid_t pid;
22379
0
    if (janet_flag_at(flags, 1)) {
22380
0
        status = posix_spawnp(&pid,
22381
0
                              child_argv[0], &actions, NULL, cargv,
22382
0
                              use_environ ? environ : envp);
22383
0
    } else {
22384
0
        status = posix_spawn(&pid,
22385
0
                             child_argv[0], &actions, NULL, cargv,
22386
0
                             use_environ ? environ : envp);
22387
0
    }
22388
22389
0
    posix_spawn_file_actions_destroy(&actions);
22390
22391
0
    if (pipe_in != JANET_HANDLE_NONE) close(pipe_in);
22392
0
    if (pipe_out != JANET_HANDLE_NONE) close(pipe_out);
22393
0
    if (pipe_err != JANET_HANDLE_NONE) close(pipe_err);
22394
22395
0
    if (use_environ) {
22396
0
        janet_unlock_environ();
22397
0
    }
22398
22399
0
    os_execute_cleanup(envp, child_argv);
22400
0
    if (status) {
22401
        /* correct for macos bug where errno is not set */
22402
0
        janet_panicf("%p: %s", argv[0], janet_strerror(errno ? errno : ENOENT));
22403
0
    }
22404
22405
0
#endif
22406
0
    JanetProc *proc = janet_abstract(&ProcAT, sizeof(JanetProc));
22407
0
    proc->return_code = -1;
22408
#ifdef JANET_WINDOWS
22409
    proc->pHandle = pHandle;
22410
    proc->tHandle = tHandle;
22411
#else
22412
0
    proc->pid = pid;
22413
0
#endif
22414
0
    proc->in = NULL;
22415
0
    proc->out = NULL;
22416
0
    proc->err = NULL;
22417
0
    proc->flags = pipe_owner_flags;
22418
0
    if (janet_flag_at(flags, 2)) {
22419
0
        proc->flags |= JANET_PROC_ERROR_NONZERO;
22420
0
    }
22421
0
    if (is_spawn) {
22422
        /* Only set up pointers to stdin, stdout, and stderr if os/spawn. */
22423
0
        if (new_in != JANET_HANDLE_NONE) {
22424
0
            proc->in = get_stdio_for_handle(new_in, orig_in, 1);
22425
0
            if (NULL == proc->in) janet_panic("failed to construct proc");
22426
0
        }
22427
0
        if (new_out != JANET_HANDLE_NONE) {
22428
0
            proc->out = get_stdio_for_handle(new_out, orig_out, 0);
22429
0
            if (NULL == proc->out) janet_panic("failed to construct proc");
22430
0
        }
22431
0
        if (new_err != JANET_HANDLE_NONE) {
22432
0
            proc->err = get_stdio_for_handle(new_err, orig_err, 0);
22433
0
            if (NULL == proc->err) janet_panic("failed to construct proc");
22434
0
        }
22435
0
        return janet_wrap_abstract(proc);
22436
0
    } else {
22437
0
#ifdef JANET_EV
22438
0
        os_proc_wait_impl(proc);
22439
#else
22440
        return os_proc_wait_impl(proc);
22441
#endif
22442
0
    }
22443
0
}
22444
22445
JANET_CORE_FN(os_execute,
22446
              "(os/execute args &opt flags env)",
22447
              "Execute a program on the system and return the exit code. `args` is an array/tuple "
22448
              "of strings. The first string is the name of the program and the remainder are "
22449
              "arguments passed to the program. `flags` is a keyword made from the following "
22450
              "characters that modifies how the program executes:\n"
22451
              "* :e - enables passing an environment to the program. Without 'e', the "
22452
              "current environment is inherited.\n"
22453
              "* :p - allows searching the current PATH for the program to execute. "
22454
              "Without this flag, the first element of `args` must be an absolute path.\n"
22455
              "* :x - raises error if exit code is non-zero.\n"
22456
              "* :d - prevents the garbage collector terminating the program (if still running) "
22457
              "and calling the equivalent of `os/proc-wait` (allows zombie processes).\n"
22458
              "`env` is a table/struct mapping environment variables to values. It can also "
22459
              "contain the keys :in, :out, and :err, which allow redirecting stdio in the "
22460
              "subprocess. :in, :out, and :err should be core/file or core/stream values. "
22461
              "If core/stream values are used, the caller is responsible for ensuring pipes do not "
22462
0
              "cause the program to block and deadlock.") {
22463
0
    return os_execute_impl(argc, argv, JANET_EXECUTE_EXECUTE);
22464
0
}
22465
22466
JANET_CORE_FN(os_spawn,
22467
              "(os/spawn args &opt flags env)",
22468
              "Execute a program on the system and return a core/process value representing the "
22469
              "spawned subprocess. Takes the same arguments as `os/execute` but does not wait for "
22470
              "the subprocess to complete. Unlike `os/execute`, the value `:pipe` can be used for "
22471
              ":in, :out and :err keys in `env`. If used, the returned core/process will have a "
22472
              "writable stream in the :in field and readable streams in the :out and :err fields. "
22473
              "On non-Windows systems, the subprocess PID will be in the :pid field. The caller is "
22474
              "responsible for waiting on the process (e.g. by calling `os/proc-wait` on the "
22475
              "returned core/process value) to avoid creating zombie process. After the subprocess "
22476
              "completes, the exit value is in the :return-code field. If `flags` includes 'x', a "
22477
              "non-zero exit code will cause a waiting fiber to raise an error. The use of "
22478
              "`:pipe` may fail if there are too many active file descriptors. The caller is "
22479
              "responsible for closing pipes created by `:pipe` (either individually or using "
22480
              "`os/proc-close`). Similar to `os/execute`, the caller is responsible for ensuring "
22481
              "pipes do not cause the program to block and deadlock. As a special case, the stream passed to `:err` "
22482
0
              "can be the keyword `:out` to redirect stderr to stdout in the subprocess.") {
22483
0
    return os_execute_impl(argc, argv, JANET_EXECUTE_SPAWN);
22484
0
}
22485
22486
JANET_CORE_FN(os_posix_exec,
22487
              "(os/posix-exec args &opt flags env)",
22488
              "Use the execvpe or execve system calls to replace the current process with an interface similar to os/execute. "
22489
              "However, instead of creating a subprocess, the current process is replaced. Is not supported on Windows, and "
22490
0
              "does not allow redirection of stdio.") {
22491
#ifdef JANET_WINDOWS
22492
    (void) argc;
22493
    (void) argv;
22494
    janet_panic("not supported on Windows");
22495
#else
22496
0
    return os_execute_impl(argc, argv, JANET_EXECUTE_EXEC);
22497
0
#endif
22498
0
}
22499
22500
JANET_CORE_FN(os_posix_fork,
22501
              "(os/posix-fork)",
22502
              "Make a `fork` system call and create a new process. Return nil if in the new process, otherwise a core/process object (as returned by os/spawn). "
22503
0
              "Not supported on all systems (POSIX only).") {
22504
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
22505
0
    janet_fixarity(argc, 0);
22506
0
    (void) argv;
22507
#ifdef JANET_WINDOWS
22508
    janet_panic("not supported on Windows");
22509
#else
22510
0
    pid_t result;
22511
0
    do {
22512
0
        result = fork();
22513
0
    } while (result == -1 && errno == EINTR);
22514
0
    if (result == -1) {
22515
0
        janet_panic(janet_strerror(errno));
22516
0
    }
22517
0
    if (result) {
22518
0
        JanetProc *proc = janet_abstract(&ProcAT, sizeof(JanetProc));
22519
0
        memset(proc, 0, sizeof(JanetProc));
22520
0
        proc->pid = result;
22521
0
        proc->flags = JANET_PROC_ALLOW_ZOMBIE;
22522
0
        return janet_wrap_abstract(proc);
22523
0
    }
22524
0
    return janet_wrap_nil();
22525
0
#endif
22526
0
}
22527
22528
#ifdef JANET_EV
22529
/* Runs in a separate thread */
22530
0
static JanetEVGenericMessage os_shell_subr(JanetEVGenericMessage args) {
22531
0
    int stat = system((const char *) args.argp);
22532
0
    janet_free(args.argp);
22533
0
    if (args.argi) {
22534
0
        args.tag = JANET_EV_TCTAG_INTEGER;
22535
0
    } else {
22536
0
        args.tag = JANET_EV_TCTAG_BOOLEAN;
22537
0
    }
22538
0
    args.argi = stat;
22539
0
    return args;
22540
0
}
22541
#endif
22542
22543
JANET_CORE_FN(os_shell,
22544
              "(os/shell str)",
22545
0
              "Pass a command string str directly to the system shell.") {
22546
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
22547
0
    janet_arity(argc, 0, 1);
22548
0
    const char *cmd = argc
22549
0
                      ? janet_getcstring(argv, 0)
22550
0
                      : NULL;
22551
0
#ifdef JANET_EV
22552
0
    janet_ev_threaded_await(os_shell_subr, 0, argc, cmd ? strdup(cmd) : NULL);
22553
#else
22554
    int stat = system(cmd);
22555
    return argc
22556
           ? janet_wrap_integer(stat)
22557
           : janet_wrap_boolean(stat);
22558
#endif
22559
0
}
22560
22561
#endif /* JANET_NO_PROCESSES */
22562
22563
JANET_CORE_FN(os_environ,
22564
              "(os/environ)",
22565
0
              "Get a copy of the OS environment table.") {
22566
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
22567
0
    (void) argv;
22568
0
    janet_fixarity(argc, 0);
22569
0
    int32_t nenv = 0;
22570
0
    janet_lock_environ();
22571
0
    char **env = environ;
22572
0
    while (*env++)
22573
0
        nenv += 1;
22574
0
    JanetTable *t = janet_table(nenv);
22575
0
    for (int32_t i = 0; i < nenv; i++) {
22576
0
        char *e = environ[i];
22577
0
        char *eq = strchr(e, '=');
22578
0
        if (!eq) {
22579
0
            janet_unlock_environ();
22580
0
            janet_panic("no '=' in environ");
22581
0
        }
22582
0
        char *v = eq + 1;
22583
0
        int32_t full_len = (int32_t) strlen(e);
22584
0
        int32_t val_len = (int32_t) strlen(v);
22585
0
        janet_table_put(
22586
0
            t,
22587
0
            janet_stringv((const uint8_t *)e, full_len - val_len - 1),
22588
0
            janet_stringv((const uint8_t *)v, val_len)
22589
0
        );
22590
0
    }
22591
0
    janet_unlock_environ();
22592
0
    return janet_wrap_table(t);
22593
0
}
22594
22595
JANET_CORE_FN(os_getenv,
22596
              "(os/getenv variable &opt dflt)",
22597
0
              "Get the string value of an environment variable.") {
22598
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
22599
0
    janet_arity(argc, 1, 2);
22600
0
    const char *cstr = janet_getcstring(argv, 0);
22601
0
    janet_lock_environ();
22602
0
    const char *res = getenv(cstr);
22603
0
    Janet ret = res
22604
0
                ? janet_cstringv(res)
22605
0
                : argc == 2
22606
0
                ? argv[1]
22607
0
                : janet_wrap_nil();
22608
0
    janet_unlock_environ();
22609
0
    return ret;
22610
0
}
22611
22612
JANET_CORE_FN(os_setenv,
22613
              "(os/setenv variable value)",
22614
0
              "Set an environment variable.") {
22615
#ifdef JANET_WINDOWS
22616
#define SETENV(K,V) _putenv_s(K, V)
22617
#define UNSETENV(K) _putenv_s(K, "")
22618
#else
22619
0
#define SETENV(K,V) setenv(K, V, 1)
22620
0
#define UNSETENV(K) unsetenv(K)
22621
0
#endif
22622
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
22623
0
    janet_arity(argc, 1, 2);
22624
0
    const char *ks = janet_getcstring(argv, 0);
22625
0
    const char *vs = janet_optcstring(argv, argc, 1, NULL);
22626
0
    janet_lock_environ();
22627
0
    if (NULL == vs) {
22628
0
        UNSETENV(ks);
22629
0
    } else {
22630
0
        SETENV(ks, vs);
22631
0
    }
22632
0
    janet_unlock_environ();
22633
0
    return janet_wrap_nil();
22634
0
}
22635
22636
JANET_CORE_FN(os_time,
22637
              "(os/time)",
22638
              "Get the current time expressed as the number of whole seconds since "
22639
0
              "January 1, 1970, the Unix epoch. Returns a real number.") {
22640
0
    janet_fixarity(argc, 0);
22641
0
    (void) argv;
22642
0
    double dtime = (double)(time(NULL));
22643
0
    return janet_wrap_number(dtime);
22644
0
}
22645
22646
JANET_CORE_FN(os_clock,
22647
              "(os/clock &opt source format)",
22648
              "Return the current time of the requested clock source.\n\n"
22649
              "The `source` argument selects the clock source to use, when not specified the default "
22650
              "is `:realtime`:\n"
22651
              "- :realtime: Return the real (i.e., wall-clock) time. This clock is affected by discontinuous "
22652
              "  jumps in the system time\n"
22653
              "- :monotonic: Return the number of whole + fractional seconds since some fixed point in "
22654
              "  time. The clock is guaranteed to be non-decreasing in real time.\n"
22655
              "- :cputime: Return the CPU time consumed by this process  (i.e. all threads in the process)\n"
22656
              "The `format` argument selects the type of output, when not specified the default is `:double`:\n"
22657
              "- :double: Return the number of seconds + fractional seconds as a double\n"
22658
              "- :int: Return the number of seconds as an integer\n"
22659
0
              "- :tuple: Return a 2 integer tuple [seconds, nanoseconds]\n") {
22660
0
    enum JanetTimeSource source;
22661
0
    janet_sandbox_assert(JANET_SANDBOX_HRTIME);
22662
0
    janet_arity(argc, 0, 2);
22663
22664
0
    JanetKeyword sourcestr = janet_optkeyword(argv, argc, 0, NULL);
22665
0
    if (sourcestr == NULL || janet_cstrcmp(sourcestr, "realtime") == 0) {
22666
0
        source = JANET_TIME_REALTIME;
22667
0
    } else if (janet_cstrcmp(sourcestr, "monotonic") == 0) {
22668
0
        source = JANET_TIME_MONOTONIC;
22669
0
    } else if (janet_cstrcmp(sourcestr, "cputime") == 0) {
22670
0
        source = JANET_TIME_CPUTIME;
22671
0
    } else {
22672
0
        janet_panicf("expected :realtime, :monotonic, or :cputime, got %v", argv[0]);
22673
0
    }
22674
22675
0
    struct timespec tv;
22676
0
    if (janet_gettime(&tv, source)) janet_panic("could not get time");
22677
22678
0
    JanetKeyword formatstr = janet_optkeyword(argv, argc, 1, NULL);
22679
0
    if (formatstr == NULL || janet_cstrcmp(formatstr, "double") == 0) {
22680
0
        double dtime = (double)(tv.tv_sec + (tv.tv_nsec / 1E9));
22681
0
        return janet_wrap_number(dtime);
22682
0
    } else if (janet_cstrcmp(formatstr, "int") == 0) {
22683
0
        return janet_wrap_number((double)(tv.tv_sec));
22684
0
    } else if (janet_cstrcmp(formatstr, "tuple") == 0) {
22685
0
        Janet tup[2] = {janet_wrap_number((double)tv.tv_sec),
22686
0
                        janet_wrap_number((double)tv.tv_nsec)
22687
0
                       };
22688
0
        return janet_wrap_tuple(janet_tuple_n(tup, 2));
22689
0
    } else {
22690
0
        janet_panicf("expected :double, :int, or :tuple, got %v", argv[1]);
22691
0
    }
22692
0
}
22693
22694
JANET_CORE_FN(os_sleep,
22695
              "(os/sleep n)",
22696
              "Suspend the program for `n` seconds. `n` can be a real number. Returns "
22697
0
              "nil.") {
22698
0
    janet_fixarity(argc, 1);
22699
0
    double delay = janet_getnumber(argv, 0);
22700
0
    if (delay < 0) janet_panic("invalid argument to sleep");
22701
#ifdef JANET_WINDOWS
22702
    Sleep((DWORD)(delay * 1000));
22703
#else
22704
0
    int rc;
22705
0
    struct timespec ts;
22706
0
    ts.tv_sec = (time_t) delay;
22707
0
    ts.tv_nsec = (delay <= UINT32_MAX)
22708
0
                 ? (long)((delay - ((uint32_t)delay)) * 1000000000)
22709
0
                 : 0;
22710
0
    RETRY_EINTR(rc, nanosleep(&ts, &ts));
22711
0
#endif
22712
0
    return janet_wrap_nil();
22713
0
}
22714
22715
JANET_CORE_FN(os_isatty,
22716
              "(os/isatty &opt file)",
22717
              "Returns true if `file` is a terminal. If `file` is not specified, "
22718
0
              "it will default to standard output.") {
22719
0
    janet_arity(argc, 0, 1);
22720
0
    FILE *f = (argc == 1) ? janet_getfile(argv, 0, NULL) : stdout;
22721
#ifdef JANET_WINDOWS
22722
    int fd = _fileno(f);
22723
    if (fd == -1) janet_panic("not a valid stream");
22724
    return janet_wrap_boolean(_isatty(fd));
22725
#else
22726
0
    int fd = fileno(f);
22727
0
    if (fd == -1) janet_panic(janet_strerror(errno));
22728
0
    return janet_wrap_boolean(isatty(fd));
22729
0
#endif
22730
0
}
22731
22732
JANET_CORE_FN(os_cwd,
22733
              "(os/cwd)",
22734
0
              "Returns the current working directory.") {
22735
0
    janet_fixarity(argc, 0);
22736
0
    (void) argv;
22737
0
    char buf[FILENAME_MAX];
22738
0
    char *ptr;
22739
#ifdef JANET_WINDOWS
22740
    ptr = _getcwd(buf, FILENAME_MAX);
22741
#else
22742
0
    ptr = getcwd(buf, FILENAME_MAX);
22743
0
#endif
22744
0
    if (NULL == ptr) janet_panic("could not get current directory");
22745
0
    return janet_cstringv(ptr);
22746
0
}
22747
22748
JANET_CORE_FN(os_cryptorand,
22749
              "(os/cryptorand n &opt buf)",
22750
0
              "Get or append `n` bytes of good quality random data provided by the OS. Returns a new buffer or `buf`.") {
22751
0
    JanetBuffer *buffer;
22752
0
    janet_arity(argc, 1, 2);
22753
0
    int32_t offset;
22754
0
    int32_t n = janet_getinteger(argv, 0);
22755
0
    if (n < 0) janet_panic("expected positive integer");
22756
0
    if (argc == 2) {
22757
0
        buffer = janet_getbuffer(argv, 1);
22758
0
        offset = buffer->count;
22759
0
    } else {
22760
0
        offset = 0;
22761
0
        buffer = janet_buffer(n);
22762
0
    }
22763
    /* We could optimize here by adding setcount_uninit */
22764
0
    janet_buffer_setcount(buffer, offset + n);
22765
22766
0
    if (janet_cryptorand(buffer->data + offset, n) != 0)
22767
0
        janet_panic("unable to get sufficient random data");
22768
22769
0
    return janet_wrap_buffer(buffer);
22770
0
}
22771
22772
/* Helper function to get given or current time as local or UTC struct tm.
22773
 * - arg n+0: optional time_t to be converted, uses current time if not given
22774
 * - arg n+1: optional truthy to indicate the convnersion uses local time */
22775
0
static struct tm *time_to_tm(const Janet *argv, int32_t argc, int32_t n, struct tm *t_infos) {
22776
0
    time_t t;
22777
0
    if (argc > n && !janet_checktype(argv[n], JANET_NIL)) {
22778
0
        int64_t integer = janet_getinteger64(argv, n);
22779
0
        t = (time_t) integer;
22780
0
    } else {
22781
0
        time(&t);
22782
0
    }
22783
0
    struct tm *t_info = NULL;
22784
0
    if (argc > n + 1 && janet_truthy(argv[n + 1])) {
22785
        /* local time */
22786
#ifdef JANET_WINDOWS
22787
        _tzset();
22788
        localtime_s(t_infos, &t);
22789
        t_info = t_infos;
22790
#else
22791
0
        tzset();
22792
0
        t_info = localtime_r(&t, t_infos);
22793
0
#endif
22794
0
    } else {
22795
        /* utc time */
22796
#ifdef JANET_WINDOWS
22797
        gmtime_s(t_infos, &t);
22798
        t_info = t_infos;
22799
#else
22800
0
        t_info = gmtime_r(&t, t_infos);
22801
0
#endif
22802
0
    }
22803
0
    return t_info;
22804
0
}
22805
22806
JANET_CORE_FN(os_date,
22807
              "(os/date &opt time local)",
22808
              "Returns the given time as a date struct, or the current time if `time` is not given. "
22809
              "Returns a struct with following key values. Note that all numbers are 0-indexed. "
22810
              "Date is given in UTC unless `local` is truthy, in which case the date is formatted for "
22811
              "the local timezone.\n\n"
22812
              "* :seconds - number of seconds [0-61]\n\n"
22813
              "* :minutes - number of minutes [0-59]\n\n"
22814
              "* :hours - number of hours [0-23]\n\n"
22815
              "* :month-day - day of month [0-30]\n\n"
22816
              "* :month - month of year [0, 11]\n\n"
22817
              "* :year - years since year 0 (e.g. 2019)\n\n"
22818
              "* :week-day - day of the week [0-6]\n\n"
22819
              "* :year-day - day of the year [0-365]\n\n"
22820
0
              "* :dst - if Day Light Savings is in effect") {
22821
0
    janet_arity(argc, 0, 2);
22822
0
    (void) argv;
22823
0
    struct tm t_infos;
22824
0
    struct tm *t_info = time_to_tm(argv, argc, 0, &t_infos);
22825
0
    JanetKV *st = janet_struct_begin(9);
22826
0
    janet_struct_put(st, janet_ckeywordv("seconds"), janet_wrap_number(t_info->tm_sec));
22827
0
    janet_struct_put(st, janet_ckeywordv("minutes"), janet_wrap_number(t_info->tm_min));
22828
0
    janet_struct_put(st, janet_ckeywordv("hours"), janet_wrap_number(t_info->tm_hour));
22829
0
    janet_struct_put(st, janet_ckeywordv("month-day"), janet_wrap_number(t_info->tm_mday - 1));
22830
0
    janet_struct_put(st, janet_ckeywordv("month"), janet_wrap_number(t_info->tm_mon));
22831
0
    janet_struct_put(st, janet_ckeywordv("year"), janet_wrap_number(t_info->tm_year + 1900));
22832
0
    janet_struct_put(st, janet_ckeywordv("week-day"), janet_wrap_number(t_info->tm_wday));
22833
0
    janet_struct_put(st, janet_ckeywordv("year-day"), janet_wrap_number(t_info->tm_yday));
22834
0
    janet_struct_put(st, janet_ckeywordv("dst"), janet_wrap_boolean(t_info->tm_isdst));
22835
0
    return janet_wrap_struct(janet_struct_end(st));
22836
0
}
22837
22838
0
#define SIZETIMEFMT     250
22839
22840
JANET_CORE_FN(os_strftime,
22841
              "(os/strftime fmt &opt time local)",
22842
              "Format the given time as a string, or the current time if `time` is not given. "
22843
              "The time is formatted according to the same rules as the ISO C89 function strftime(). "
22844
              "The time is formatted in UTC unless `local` is truthy, in which case the date is formatted for "
22845
0
              "the local timezone.") {
22846
0
    janet_arity(argc, 1, 3);
22847
0
    const char *fmt = janet_getcstring(argv, 0);
22848
    /* ANSI X3.159-1989, section 4.12.3.5 "The strftime function" */
22849
0
    static const char *valid = "aAbBcdHIjmMpSUwWxXyYZ%";
22850
0
    const char *p = fmt;
22851
0
    while (*p) {
22852
0
        if (*p++ == '%') {
22853
0
            if (!strchr(valid, *p)) {
22854
0
                janet_panicf("invalid conversion specifier '%%%c'", *p);
22855
0
            }
22856
0
            p++;
22857
0
        }
22858
0
    }
22859
0
    struct tm t_infos;
22860
0
    struct tm *t_info = time_to_tm(argv, argc, 1, &t_infos);
22861
0
    char buf[SIZETIMEFMT];
22862
0
    (void)strftime(buf, SIZETIMEFMT, fmt, t_info);
22863
0
    return janet_cstringv(buf);
22864
0
}
22865
22866
0
static int entry_getdst(Janet env_entry) {
22867
0
    Janet v;
22868
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
22869
0
        JanetTable *entry = janet_unwrap_table(env_entry);
22870
0
        v = janet_table_get(entry, janet_ckeywordv("dst"));
22871
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
22872
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
22873
0
        v = janet_struct_get(entry, janet_ckeywordv("dst"));
22874
0
    } else {
22875
0
        v = janet_wrap_nil();
22876
0
    }
22877
0
    if (janet_checktype(v, JANET_NIL)) {
22878
0
        return -1;
22879
0
    } else {
22880
0
        return janet_truthy(v);
22881
0
    }
22882
0
}
22883
22884
#ifdef JANET_WINDOWS
22885
typedef int32_t timeint_t;
22886
#else
22887
typedef int64_t timeint_t;
22888
#endif
22889
22890
0
static timeint_t entry_getint(Janet env_entry, char *field) {
22891
0
    Janet i;
22892
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
22893
0
        JanetTable *entry = janet_unwrap_table(env_entry);
22894
0
        i = janet_table_get(entry, janet_ckeywordv(field));
22895
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
22896
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
22897
0
        i = janet_struct_get(entry, janet_ckeywordv(field));
22898
0
    } else {
22899
0
        return 0;
22900
0
    }
22901
22902
0
    if (janet_checktype(i, JANET_NIL)) {
22903
0
        return 0;
22904
0
    }
22905
22906
#ifdef JANET_WINDOWS
22907
    if (!janet_checkint(i)) {
22908
        janet_panicf("bad slot #%s, expected 32 bit signed integer, got %v",
22909
                     field, i);
22910
    }
22911
#else
22912
0
    if (!janet_checkint64(i)) {
22913
0
        janet_panicf("bad slot #%s, expected 64 bit signed integer, got %v",
22914
0
                     field, i);
22915
0
    }
22916
0
#endif
22917
22918
0
    return (timeint_t)janet_unwrap_number(i);
22919
0
}
22920
22921
JANET_CORE_FN(os_mktime,
22922
              "(os/mktime date-struct &opt local)",
22923
              "Get the broken down date-struct time expressed as the number "
22924
              "of seconds since January 1, 1970, the Unix epoch. "
22925
              "Returns a real number. "
22926
              "Date is given in UTC unless `local` is truthy, in which case the "
22927
              "date is computed for the local timezone.\n\n"
22928
0
              "Inverse function to os/date.") {
22929
0
    janet_arity(argc, 1, 2);
22930
0
    time_t t;
22931
0
    struct tm t_info;
22932
22933
    /* Use memset instead of = {0} to silence paranoid warning in macos */
22934
0
    memset(&t_info, 0, sizeof(t_info));
22935
22936
0
    if (!janet_checktype(argv[0], JANET_TABLE) &&
22937
0
            !janet_checktype(argv[0], JANET_STRUCT))
22938
0
        janet_panic_type(argv[0], 0, JANET_TFLAG_DICTIONARY);
22939
22940
0
    t_info.tm_sec = entry_getint(argv[0], "seconds");
22941
0
    t_info.tm_min = entry_getint(argv[0], "minutes");
22942
0
    t_info.tm_hour = entry_getint(argv[0], "hours");
22943
0
    t_info.tm_mday = entry_getint(argv[0], "month-day") + 1;
22944
0
    t_info.tm_mon = entry_getint(argv[0], "month");
22945
0
    t_info.tm_year = entry_getint(argv[0], "year") - 1900;
22946
0
    t_info.tm_isdst = entry_getdst(argv[0]);
22947
22948
0
    if (argc >= 2 && janet_truthy(argv[1])) {
22949
        /* local time */
22950
0
        t = mktime(&t_info);
22951
0
    } else {
22952
        /* utc time */
22953
#ifdef JANET_NO_UTC_MKTIME
22954
        janet_panic("os/mktime UTC not supported on this platform");
22955
#else
22956
0
        t = timegm(&t_info);
22957
0
#endif
22958
0
    }
22959
22960
0
    if (t == (time_t) -1) {
22961
0
        janet_panicf("%s", janet_strerror(errno));
22962
0
    }
22963
22964
0
    return janet_wrap_number((double)t);
22965
0
}
22966
22967
#ifdef JANET_NO_SYMLINKS
22968
#define j_symlink link
22969
#else
22970
0
#define j_symlink symlink
22971
#endif
22972
22973
JANET_CORE_FN(os_setlocale,
22974
              "(os/setlocale &opt locale category)",
22975
              "Set the system locale, which affects how dates and numbers are formatted. "
22976
              "Passing nil to locale will return the current locale. Category can be one of:\n\n"
22977
              " * :all (default)\n"
22978
              " * :collate\n"
22979
              " * :ctype\n"
22980
              " * :monetary\n"
22981
              " * :numeric\n"
22982
              " * :time\n\n"
22983
              "Returns the new locale if set successfully, otherwise nil. Note that this will affect "
22984
0
              "other functions such as `os/strftime` and even `printf`.") {
22985
0
    janet_arity(argc, 0, 2);
22986
0
    const char *locale_name = janet_optcstring(argv, argc, 0, NULL);
22987
0
    int category_int = LC_ALL;
22988
0
    if (argc > 1 && !janet_checktype(argv[1], JANET_NIL)) {
22989
0
        if (janet_keyeq(argv[1], "all")) {
22990
0
            category_int = LC_ALL;
22991
0
        } else if (janet_keyeq(argv[1], "collate")) {
22992
0
            category_int = LC_COLLATE;
22993
0
        } else if (janet_keyeq(argv[1], "ctype")) {
22994
0
            category_int = LC_CTYPE;
22995
0
        } else if (janet_keyeq(argv[1], "monetary")) {
22996
0
            category_int = LC_MONETARY;
22997
0
        } else if (janet_keyeq(argv[1], "numeric")) {
22998
0
            category_int = LC_NUMERIC;
22999
0
        } else if (janet_keyeq(argv[1], "time")) {
23000
0
            category_int = LC_TIME;
23001
0
        } else {
23002
0
            janet_panicf("expected one of :all, :collate, :ctype, :monetary, :numeric, or :time, got %v", argv[1]);
23003
0
        }
23004
0
    }
23005
0
    const char *old = setlocale(category_int, locale_name);
23006
0
    if (old == NULL) return janet_wrap_nil();
23007
0
    return janet_cstringv(old);
23008
0
}
23009
23010
JANET_CORE_FN(os_link,
23011
              "(os/link oldpath newpath &opt symlink)",
23012
              "Create a link at newpath that points to oldpath and returns nil. "
23013
              "Iff symlink is truthy, creates a symlink. "
23014
              "Iff symlink is falsey or not provided, "
23015
0
              "creates a hard link. Does not work on Windows.") {
23016
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23017
0
    janet_arity(argc, 2, 3);
23018
#ifdef JANET_WINDOWS
23019
    (void) argc;
23020
    (void) argv;
23021
    janet_panic("not supported on Windows");
23022
#else
23023
0
    const char *oldpath = janet_getcstring(argv, 0);
23024
0
    const char *newpath = janet_getcstring(argv, 1);
23025
0
    int res = ((argc == 3 && janet_truthy(argv[2])) ? j_symlink : link)(oldpath, newpath);
23026
0
    if (-1 == res) janet_panicf("%s: %s -> %s", janet_strerror(errno), oldpath, newpath);
23027
0
    return janet_wrap_nil();
23028
0
#endif
23029
0
}
23030
23031
JANET_CORE_FN(os_symlink,
23032
              "(os/symlink oldpath newpath)",
23033
0
              "Create a symlink from oldpath to newpath, returning nil. Same as `(os/link oldpath newpath true)`.") {
23034
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23035
0
    janet_fixarity(argc, 2);
23036
#ifdef JANET_WINDOWS
23037
    (void) argc;
23038
    (void) argv;
23039
    janet_panic("not supported on Windows");
23040
#else
23041
0
    const char *oldpath = janet_getcstring(argv, 0);
23042
0
    const char *newpath = janet_getcstring(argv, 1);
23043
0
    int res = j_symlink(oldpath, newpath);
23044
0
    if (-1 == res) janet_panicf("%s: %s -> %s", janet_strerror(errno), oldpath, newpath);
23045
0
    return janet_wrap_nil();
23046
0
#endif
23047
0
}
23048
23049
#undef j_symlink
23050
23051
JANET_CORE_FN(os_mkdir,
23052
              "(os/mkdir path)",
23053
              "Create a new directory. The path will be relative to the current directory if relative, otherwise "
23054
              "it will be an absolute path. Returns true if the directory was created, false if the directory already exists, and "
23055
0
              "errors otherwise.") {
23056
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23057
0
    janet_fixarity(argc, 1);
23058
0
    const char *path = janet_getcstring(argv, 0);
23059
#ifdef JANET_WINDOWS
23060
    int res = _mkdir(path);
23061
#else
23062
0
    int res = mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH);
23063
0
#endif
23064
0
    if (res == 0) return janet_wrap_true();
23065
0
    if (errno == EEXIST) return janet_wrap_false();
23066
0
    janet_panicf("%s: %s", janet_strerror(errno), path);
23067
0
}
23068
23069
JANET_CORE_FN(os_rmdir,
23070
              "(os/rmdir path)",
23071
0
              "Delete a directory. The directory must be empty to succeed.") {
23072
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23073
0
    janet_fixarity(argc, 1);
23074
0
    const char *path = janet_getcstring(argv, 0);
23075
#ifdef JANET_WINDOWS
23076
    int res = _rmdir(path);
23077
#else
23078
0
    int res = rmdir(path);
23079
0
#endif
23080
0
    if (-1 == res) janet_panicf("%s: %s", janet_strerror(errno), path);
23081
0
    return janet_wrap_nil();
23082
0
}
23083
23084
JANET_CORE_FN(os_cd,
23085
              "(os/cd path)",
23086
0
              "Change current directory to path. Returns nil on success, errors on failure.") {
23087
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23088
0
    janet_fixarity(argc, 1);
23089
0
    const char *path = janet_getcstring(argv, 0);
23090
#ifdef JANET_WINDOWS
23091
    int res = _chdir(path);
23092
#else
23093
0
    int res = chdir(path);
23094
0
#endif
23095
0
    if (-1 == res) janet_panicf("%s: %s", janet_strerror(errno), path);
23096
0
    return janet_wrap_nil();
23097
0
}
23098
23099
JANET_CORE_FN(os_touch,
23100
              "(os/touch path &opt actime modtime)",
23101
              "Update the access time and modification times for a file. By default, sets "
23102
0
              "times to the current time.") {
23103
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23104
0
    janet_arity(argc, 1, 3);
23105
0
    const char *path = janet_getcstring(argv, 0);
23106
0
    struct utimbuf timebuf, *bufp;
23107
0
    if (argc >= 2) {
23108
0
        bufp = &timebuf;
23109
0
        timebuf.actime = (time_t) janet_getnumber(argv, 1);
23110
0
        if (argc >= 3) {
23111
0
            timebuf.modtime = (time_t) janet_getnumber(argv, 2);
23112
0
        } else {
23113
0
            timebuf.modtime = timebuf.actime;
23114
0
        }
23115
0
    } else {
23116
0
        bufp = NULL;
23117
0
    }
23118
0
    int res = utime(path, bufp);
23119
0
    if (-1 == res) janet_panic(janet_strerror(errno));
23120
0
    return janet_wrap_nil();
23121
0
}
23122
23123
JANET_CORE_FN(os_remove,
23124
              "(os/rm path)",
23125
0
              "Delete a file. Returns nil.") {
23126
0
    janet_fixarity(argc, 1);
23127
0
    const char *path = janet_getcstring(argv, 0);
23128
0
    int status = remove(path);
23129
0
    if (-1 == status) janet_panicf("%s: %s", janet_strerror(errno), path);
23130
0
    return janet_wrap_nil();
23131
0
}
23132
23133
#ifndef JANET_NO_SYMLINKS
23134
JANET_CORE_FN(os_readlink,
23135
              "(os/readlink path)",
23136
0
              "Read the contents of a symbolic link. Does not work on Windows.\n") {
23137
0
    janet_fixarity(argc, 1);
23138
#ifdef JANET_WINDOWS
23139
    (void) argc;
23140
    (void) argv;
23141
    janet_panic("not supported on Windows");
23142
#else
23143
0
    static char buffer[PATH_MAX];
23144
0
    const char *path = janet_getcstring(argv, 0);
23145
0
    ssize_t len = readlink(path, buffer, sizeof buffer);
23146
0
    if (len < 0 || (size_t)len >= sizeof buffer)
23147
0
        janet_panicf("%s: %s", janet_strerror(errno), path);
23148
0
    return janet_stringv((const uint8_t *)buffer, len);
23149
0
#endif
23150
0
}
23151
#endif
23152
23153
#ifdef JANET_WINDOWS
23154
23155
typedef struct _stat jstat_t;
23156
typedef unsigned short jmode_t;
23157
23158
static int32_t janet_perm_to_unix(unsigned short m) {
23159
    int32_t ret = 0;
23160
    if (m & S_IEXEC) ret |= 0111;
23161
    if (m & S_IWRITE) ret |= 0222;
23162
    if (m & S_IREAD) ret |= 0444;
23163
    return ret;
23164
}
23165
23166
static unsigned short janet_perm_from_unix(int32_t x) {
23167
    unsigned short m = 0;
23168
    if (x & 111) m |= S_IEXEC;
23169
    if (x & 222) m |= S_IWRITE;
23170
    if (x & 444) m |= S_IREAD;
23171
    return m;
23172
}
23173
23174
static const uint8_t *janet_decode_mode(unsigned short m) {
23175
    const char *str = "other";
23176
    if (m & _S_IFREG) str = "file";
23177
    else if (m & _S_IFDIR) str = "directory";
23178
    else if (m & _S_IFCHR) str = "character";
23179
    return janet_ckeyword(str);
23180
}
23181
23182
static int32_t janet_decode_permissions(jmode_t mode) {
23183
    return (int32_t)(mode & (S_IEXEC | S_IWRITE | S_IREAD));
23184
}
23185
23186
#else
23187
23188
typedef struct stat jstat_t;
23189
typedef mode_t jmode_t;
23190
23191
0
static int32_t janet_perm_to_unix(mode_t m) {
23192
0
    return (int32_t) m;
23193
0
}
23194
23195
0
static mode_t janet_perm_from_unix(int32_t x) {
23196
0
    return (mode_t) x;
23197
0
}
23198
23199
0
static const uint8_t *janet_decode_mode(mode_t m) {
23200
0
    const char *str = "other";
23201
0
    if (S_ISREG(m)) str = "file";
23202
0
    else if (S_ISDIR(m)) str = "directory";
23203
0
    else if (S_ISFIFO(m)) str = "fifo";
23204
0
    else if (S_ISBLK(m)) str = "block";
23205
0
    else if (S_ISSOCK(m)) str = "socket";
23206
0
    else if (S_ISLNK(m)) str = "link";
23207
0
    else if (S_ISCHR(m)) str = "character";
23208
0
    return janet_ckeyword(str);
23209
0
}
23210
23211
0
static int32_t janet_decode_permissions(jmode_t mode) {
23212
0
    return (int32_t)(mode & 0777);
23213
0
}
23214
23215
#endif
23216
23217
0
static int32_t os_parse_permstring(const uint8_t *perm) {
23218
0
    int32_t m = 0;
23219
0
    if (perm[0] == 'r') m |= 0400;
23220
0
    if (perm[1] == 'w') m |= 0200;
23221
0
    if (perm[2] == 'x') m |= 0100;
23222
0
    if (perm[3] == 'r') m |= 0040;
23223
0
    if (perm[4] == 'w') m |= 0020;
23224
0
    if (perm[5] == 'x') m |= 0010;
23225
0
    if (perm[6] == 'r') m |= 0004;
23226
0
    if (perm[7] == 'w') m |= 0002;
23227
0
    if (perm[8] == 'x') m |= 0001;
23228
0
    return m;
23229
0
}
23230
23231
0
static Janet os_make_permstring(int32_t permissions) {
23232
0
    uint8_t bytes[9] = {0};
23233
0
    bytes[0] = (permissions & 0400) ? 'r' : '-';
23234
0
    bytes[1] = (permissions & 0200) ? 'w' : '-';
23235
0
    bytes[2] = (permissions & 0100) ? 'x' : '-';
23236
0
    bytes[3] = (permissions & 0040) ? 'r' : '-';
23237
0
    bytes[4] = (permissions & 0020) ? 'w' : '-';
23238
0
    bytes[5] = (permissions & 0010) ? 'x' : '-';
23239
0
    bytes[6] = (permissions & 0004) ? 'r' : '-';
23240
0
    bytes[7] = (permissions & 0002) ? 'w' : '-';
23241
0
    bytes[8] = (permissions & 0001) ? 'x' : '-';
23242
0
    return janet_stringv(bytes, sizeof(bytes));
23243
0
}
23244
23245
0
static int32_t os_get_unix_mode(const Janet *argv, int32_t n) {
23246
0
    int32_t unix_mode;
23247
0
    if (janet_checkint(argv[n])) {
23248
        /* Integer mode */
23249
0
        int32_t x = janet_unwrap_integer(argv[n]);
23250
0
        if (x < 0 || x > 0777) {
23251
0
            janet_panicf("bad slot #%d, expected integer in range [0, 8r777], got %v", n, argv[n]);
23252
0
        }
23253
0
        unix_mode = x;
23254
0
    } else {
23255
        /* Bytes mode */
23256
0
        JanetByteView bytes = janet_getbytes(argv, n);
23257
0
        if (bytes.len != 9) {
23258
0
            janet_panicf("bad slot #%d: expected byte sequence of length 9, got %v", n, argv[n]);
23259
0
        }
23260
0
        unix_mode = os_parse_permstring(bytes.bytes);
23261
0
    }
23262
0
    return unix_mode;
23263
0
}
23264
23265
0
static jmode_t os_getmode(const Janet *argv, int32_t n) {
23266
0
    return janet_perm_from_unix(os_get_unix_mode(argv, n));
23267
0
}
23268
23269
/* Getters */
23270
0
static Janet os_stat_dev(jstat_t *st) {
23271
0
    return janet_wrap_number(st->st_dev);
23272
0
}
23273
0
static Janet os_stat_inode(jstat_t *st) {
23274
0
    return janet_wrap_number(st->st_ino);
23275
0
}
23276
0
static Janet os_stat_mode(jstat_t *st) {
23277
0
    return janet_wrap_keyword(janet_decode_mode(st->st_mode));
23278
0
}
23279
0
static Janet os_stat_int_permissions(jstat_t *st) {
23280
0
    return janet_wrap_integer(janet_perm_to_unix(janet_decode_permissions(st->st_mode)));
23281
0
}
23282
0
static Janet os_stat_permissions(jstat_t *st) {
23283
0
    return os_make_permstring(janet_perm_to_unix(janet_decode_permissions(st->st_mode)));
23284
0
}
23285
0
static Janet os_stat_uid(jstat_t *st) {
23286
0
    return janet_wrap_number(st->st_uid);
23287
0
}
23288
0
static Janet os_stat_gid(jstat_t *st) {
23289
0
    return janet_wrap_number(st->st_gid);
23290
0
}
23291
0
static Janet os_stat_nlink(jstat_t *st) {
23292
0
    return janet_wrap_number(st->st_nlink);
23293
0
}
23294
0
static Janet os_stat_rdev(jstat_t *st) {
23295
0
    return janet_wrap_number(st->st_rdev);
23296
0
}
23297
0
static Janet os_stat_size(jstat_t *st) {
23298
0
    return janet_wrap_number(st->st_size);
23299
0
}
23300
0
static Janet os_stat_accessed(jstat_t *st) {
23301
0
    return janet_wrap_number((double) st->st_atime);
23302
0
}
23303
0
static Janet os_stat_modified(jstat_t *st) {
23304
0
    return janet_wrap_number((double) st->st_mtime);
23305
0
}
23306
0
static Janet os_stat_changed(jstat_t *st) {
23307
0
    return janet_wrap_number((double) st->st_ctime);
23308
0
}
23309
#ifdef JANET_WINDOWS
23310
static Janet os_stat_blocks(jstat_t *st) {
23311
    (void) st;
23312
    return janet_wrap_number(0);
23313
}
23314
static Janet os_stat_blocksize(jstat_t *st) {
23315
    (void) st;
23316
    return janet_wrap_number(0);
23317
}
23318
#else
23319
0
static Janet os_stat_blocks(jstat_t *st) {
23320
0
    return janet_wrap_number(st->st_blocks);
23321
0
}
23322
0
static Janet os_stat_blocksize(jstat_t *st) {
23323
0
    return janet_wrap_number(st->st_blksize);
23324
0
}
23325
#endif
23326
23327
struct OsStatGetter {
23328
    const char *name;
23329
    Janet(*fn)(jstat_t *st);
23330
};
23331
23332
static const struct OsStatGetter os_stat_getters[] = {
23333
    {"dev", os_stat_dev},
23334
    {"inode", os_stat_inode},
23335
    {"mode", os_stat_mode},
23336
    {"int-permissions", os_stat_int_permissions},
23337
    {"permissions", os_stat_permissions},
23338
    {"uid", os_stat_uid},
23339
    {"gid", os_stat_gid},
23340
    {"nlink", os_stat_nlink},
23341
    {"rdev", os_stat_rdev},
23342
    {"size", os_stat_size},
23343
    {"blocks", os_stat_blocks},
23344
    {"blocksize", os_stat_blocksize},
23345
    {"accessed", os_stat_accessed},
23346
    {"modified", os_stat_modified},
23347
    {"changed", os_stat_changed},
23348
    {NULL, NULL}
23349
};
23350
23351
0
static Janet os_stat_or_lstat(int do_lstat, int32_t argc, Janet *argv) {
23352
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23353
0
    janet_arity(argc, 1, 2);
23354
0
    const char *path = janet_getcstring(argv, 0);
23355
0
    JanetTable *tab = NULL;
23356
0
    const uint8_t *key = NULL;
23357
0
    if (argc == 2) {
23358
0
        if (janet_checktype(argv[1], JANET_KEYWORD)) {
23359
0
            key = janet_getkeyword(argv, 1);
23360
0
        } else {
23361
0
            tab = janet_gettable(argv, 1);
23362
0
        }
23363
0
    } else {
23364
0
        tab = janet_table(0);
23365
0
    }
23366
23367
    /* Build result */
23368
0
    jstat_t st;
23369
#ifdef JANET_WINDOWS
23370
    (void) do_lstat;
23371
    int res = _stat(path, &st);
23372
#else
23373
0
    int res;
23374
0
    if (do_lstat) {
23375
0
        res = lstat(path, &st);
23376
0
    } else {
23377
0
        res = stat(path, &st);
23378
0
    }
23379
0
#endif
23380
0
    if (-1 == res) {
23381
0
        return janet_wrap_nil();
23382
0
    }
23383
23384
0
    if (NULL == key) {
23385
        /* Put results in table */
23386
0
        for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) {
23387
0
            janet_table_put(tab, janet_ckeywordv(sg->name), sg->fn(&st));
23388
0
        }
23389
0
        return janet_wrap_table(tab);
23390
0
    } else {
23391
        /* Get one result */
23392
0
        for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) {
23393
0
            if (janet_cstrcmp(key, sg->name)) continue;
23394
0
            return sg->fn(&st);
23395
0
        }
23396
0
        janet_panicf("unexpected keyword %v", janet_wrap_keyword(key));
23397
0
    }
23398
0
}
23399
23400
JANET_CORE_FN(os_stat,
23401
              "(os/stat path &opt tab|key)",
23402
              "Gets information about a file or directory. Returns a table if the second argument is a keyword, returns "
23403
              "only that information from stat. If the file or directory does not exist, returns nil. The keys are:\n\n"
23404
              "* :dev - the device that the file is on\n\n"
23405
              "* :mode - the type of file, one of :file, :directory, :block, :character, :fifo, :socket, :link, or :other\n\n"
23406
              "* :int-permissions - A Unix permission integer like 8r744\n\n"
23407
              "* :permissions - A Unix permission string like \"rwxr--r--\"\n\n"
23408
              "* :uid - File uid\n\n"
23409
              "* :gid - File gid\n\n"
23410
              "* :nlink - number of links to file\n\n"
23411
              "* :rdev - Real device of file. 0 on Windows\n\n"
23412
              "* :size - size of file in bytes\n\n"
23413
              "* :blocks - number of blocks in file. 0 on Windows\n\n"
23414
              "* :blocksize - size of blocks in file. 0 on Windows\n\n"
23415
              "* :accessed - timestamp when file last accessed\n\n"
23416
              "* :changed - timestamp when file last changed (permissions changed)\n\n"
23417
0
              "* :modified - timestamp when file last modified (content changed)\n") {
23418
0
    return os_stat_or_lstat(0, argc, argv);
23419
0
}
23420
23421
JANET_CORE_FN(os_lstat,
23422
              "(os/lstat path &opt tab|key)",
23423
0
              "Like os/stat, but don't follow symlinks.\n") {
23424
0
    return os_stat_or_lstat(1, argc, argv);
23425
0
}
23426
23427
JANET_CORE_FN(os_chmod,
23428
              "(os/chmod path mode)",
23429
              "Change file permissions, where `mode` is a permission string as returned by "
23430
              "`os/perm-string`, or an integer as returned by `os/perm-int`. "
23431
              "When `mode` is an integer, it is interpreted as a Unix permission value, best specified in octal, like "
23432
0
              "8r666 or 8r400. Windows will not differentiate between user, group, and other permissions, and thus will combine all of these permissions. Returns nil.") {
23433
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23434
0
    janet_fixarity(argc, 2);
23435
0
    const char *path = janet_getcstring(argv, 0);
23436
#ifdef JANET_WINDOWS
23437
    int res = _chmod(path, os_getmode(argv, 1));
23438
#else
23439
0
    int res = chmod(path, os_getmode(argv, 1));
23440
0
#endif
23441
0
    if (-1 == res) janet_panicf("%s: %s", janet_strerror(errno), path);
23442
0
    return janet_wrap_nil();
23443
0
}
23444
23445
#ifndef JANET_NO_UMASK
23446
JANET_CORE_FN(os_umask,
23447
              "(os/umask mask)",
23448
0
              "Set a new umask, returns the old umask.") {
23449
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23450
0
    janet_fixarity(argc, 1);
23451
0
    int mask = (int) os_getmode(argv, 0);
23452
#ifdef JANET_WINDOWS
23453
    int res = _umask(mask);
23454
#else
23455
0
    int res = umask(mask);
23456
0
#endif
23457
0
    return janet_wrap_integer(janet_perm_to_unix(res));
23458
0
}
23459
#endif
23460
23461
JANET_CORE_FN(os_dir,
23462
              "(os/dir dir &opt array)",
23463
              "Iterate over files and subdirectories in a directory. Returns an array of paths parts, "
23464
0
              "with only the file name or directory name and no prefix.") {
23465
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23466
0
    janet_arity(argc, 1, 2);
23467
0
    const char *dir = janet_getcstring(argv, 0);
23468
0
    JanetArray *paths = (argc == 2) ? janet_getarray(argv, 1) : janet_array(0);
23469
#ifdef JANET_WINDOWS
23470
    /* Read directory items with FindFirstFile / FindNextFile / FindClose */
23471
    struct _finddata_t afile;
23472
    char pattern[MAX_PATH + 1];
23473
    if (strlen(dir) > (sizeof(pattern) - 3))
23474
        janet_panicf("path too long: %s", dir);
23475
    sprintf(pattern, "%s/*", dir);
23476
    intptr_t res = _findfirst(pattern, &afile);
23477
    if (-1 == res) janet_panicv(janet_cstringv(janet_strerror(errno)));
23478
    do {
23479
        if (strcmp(".", afile.name) && strcmp("..", afile.name)) {
23480
            janet_array_push(paths, janet_cstringv(afile.name));
23481
        }
23482
    } while (_findnext(res, &afile) != -1);
23483
    _findclose(res);
23484
#else
23485
    /* Read directory items with opendir / readdir / closedir */
23486
0
    struct dirent *dp;
23487
0
    DIR *dfd = opendir(dir);
23488
0
    if (dfd == NULL) janet_panicf("cannot open directory %s: %s", dir, janet_strerror(errno));
23489
0
    for (;;) {
23490
0
        errno = 0;
23491
0
        dp = readdir(dfd);
23492
0
        if (dp == NULL) {
23493
0
            if (errno) {
23494
0
                int olderr = errno;
23495
0
                closedir(dfd);
23496
0
                janet_panicf("failed to read directory %s: %s", dir, janet_strerror(olderr));
23497
0
            }
23498
0
            break;
23499
0
        }
23500
0
        if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) {
23501
0
            continue;
23502
0
        }
23503
0
        janet_array_push(paths, janet_cstringv(dp->d_name));
23504
0
    }
23505
0
    closedir(dfd);
23506
0
#endif
23507
0
    return janet_wrap_array(paths);
23508
0
}
23509
23510
JANET_CORE_FN(os_rename,
23511
              "(os/rename oldname newname)",
23512
0
              "Rename a file on disk to a new path. Returns nil.") {
23513
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23514
0
    janet_fixarity(argc, 2);
23515
0
    const char *src = janet_getcstring(argv, 0);
23516
0
    const char *dest = janet_getcstring(argv, 1);
23517
0
    int status = rename(src, dest);
23518
0
    if (status) {
23519
0
        janet_panic(janet_strerror(errno));
23520
0
    }
23521
0
    return janet_wrap_nil();
23522
0
}
23523
23524
JANET_CORE_FN(os_realpath,
23525
              "(os/realpath path)",
23526
              "Get the absolute path for a given path, following ../, ./, and symlinks. "
23527
0
              "Returns an absolute path as a string.") {
23528
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23529
0
    janet_fixarity(argc, 1);
23530
0
    const char *src = janet_getcstring(argv, 0);
23531
#ifdef JANET_NO_REALPATH
23532
    janet_panic("os/realpath not enabled for this platform");
23533
#else
23534
#ifdef JANET_WINDOWS
23535
    char *dest = _fullpath(NULL, src, _MAX_PATH);
23536
#else
23537
0
    char *dest = realpath(src, NULL);
23538
0
#endif
23539
0
    if (NULL == dest) janet_panicf("%s: %s", janet_strerror(errno), src);
23540
0
    Janet ret = janet_cstringv(dest);
23541
0
    janet_free(dest);
23542
0
    return ret;
23543
0
#endif
23544
0
}
23545
23546
JANET_CORE_FN(os_permission_string,
23547
              "(os/perm-string int)",
23548
              "Convert a Unix octal permission value from a permission integer as returned by `os/stat` "
23549
              "to a human readable string, that follows the formatting "
23550
              "of Unix tools like `ls`. Returns the string as a 9-character string of r, w, x and - characters. Does not "
23551
0
              "include the file/directory/symlink character as rendered by `ls`.") {
23552
0
    janet_fixarity(argc, 1);
23553
0
    return os_make_permstring(os_get_unix_mode(argv, 0));
23554
0
}
23555
23556
JANET_CORE_FN(os_permission_int,
23557
              "(os/perm-int bytes)",
23558
0
              "Parse a 9-character permission string and return an integer that can be used by chmod.") {
23559
0
    janet_fixarity(argc, 1);
23560
0
    return janet_wrap_integer(os_get_unix_mode(argv, 0));
23561
0
}
23562
23563
#ifdef JANET_EV
23564
23565
/*
23566
 * Define a few functions on streams the require JANET_EV to be defined.
23567
 */
23568
23569
0
static jmode_t os_optmode(int32_t argc, const Janet *argv, int32_t n, int32_t dflt) {
23570
0
    if (argc > n) return os_getmode(argv, n);
23571
0
    return janet_perm_from_unix(dflt);
23572
0
}
23573
23574
JANET_CORE_FN(os_open,
23575
              "(os/open path &opt flags mode)",
23576
              "Create a stream from a file, like the POSIX open system call. Returns a new stream. "
23577
              "`mode` should be a file mode as passed to `os/chmod`, but only if the create flag is given. "
23578
              "The default mode is 8r666. "
23579
              "Allowed flags are as follows:\n\n"
23580
              "  * :r - open this file for reading\n"
23581
              "  * :w - open this file for writing\n"
23582
              "  * :c - create a new file (O\\_CREATE)\n"
23583
              "  * :e - fail if the file exists (O\\_EXCL)\n"
23584
              "  * :t - shorten an existing file to length 0 (O\\_TRUNC)\n\n"
23585
              "Posix-only flags:\n\n"
23586
              "  * :a - append to a file (O\\_APPEND)\n"
23587
              "  * :x - O\\_SYNC\n"
23588
              "  * :C - O\\_NOCTTY\n\n"
23589
              "Windows-only flags:\n\n"
23590
              "  * :R - share reads (FILE\\_SHARE\\_READ)\n"
23591
              "  * :W - share writes (FILE\\_SHARE\\_WRITE)\n"
23592
              "  * :D - share deletes (FILE\\_SHARE\\_DELETE)\n"
23593
              "  * :H - FILE\\_ATTRIBUTE\\_HIDDEN\n"
23594
              "  * :O - FILE\\_ATTRIBUTE\\_READONLY\n"
23595
              "  * :F - FILE\\_ATTRIBUTE\\_OFFLINE\n"
23596
              "  * :T - FILE\\_ATTRIBUTE\\_TEMPORARY\n"
23597
              "  * :d - FILE\\_FLAG\\_DELETE\\_ON\\_CLOSE\n"
23598
0
              "  * :b - FILE\\_FLAG\\_NO\\_BUFFERING\n") {
23599
0
    janet_arity(argc, 1, 3);
23600
0
    const char *path = janet_getcstring(argv, 0);
23601
0
    const uint8_t *opt_flags = janet_optkeyword(argv, argc, 1, (const uint8_t *) "r");
23602
0
    jmode_t mode = os_optmode(argc, argv, 2, 0666);
23603
0
    uint32_t stream_flags = 0;
23604
0
    JanetHandle fd;
23605
#ifdef JANET_WINDOWS
23606
    (void) mode;
23607
    DWORD desiredAccess = 0;
23608
    DWORD shareMode = 0;
23609
    DWORD creationDisp = 0;
23610
    DWORD flagsAndAttributes = FILE_FLAG_OVERLAPPED;
23611
    /* We map unix-like open flags to the creationDisp parameter */
23612
    int creatUnix = 0;
23613
#define OCREAT 1
23614
#define OEXCL 2
23615
#define OTRUNC 4
23616
    for (const uint8_t *c = opt_flags; *c; c++) {
23617
        switch (*c) {
23618
            default:
23619
                break;
23620
            case 'r':
23621
                desiredAccess |= GENERIC_READ;
23622
                stream_flags |= JANET_STREAM_READABLE;
23623
                janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23624
                break;
23625
            case 'w':
23626
                desiredAccess |= GENERIC_WRITE;
23627
                stream_flags |= JANET_STREAM_WRITABLE;
23628
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23629
                break;
23630
            case 'c':
23631
                creatUnix |= OCREAT;
23632
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23633
                break;
23634
            case 'e':
23635
                creatUnix |= OEXCL;
23636
                break;
23637
            case 't':
23638
                creatUnix |= OTRUNC;
23639
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23640
                break;
23641
            /* Windows only flags */
23642
            case 'D':
23643
                shareMode |= FILE_SHARE_DELETE;
23644
                break;
23645
            case 'R':
23646
                shareMode |= FILE_SHARE_READ;
23647
                break;
23648
            case 'W':
23649
                shareMode |= FILE_SHARE_WRITE;
23650
                break;
23651
            case 'H':
23652
                flagsAndAttributes |= FILE_ATTRIBUTE_HIDDEN;
23653
                break;
23654
            case 'O':
23655
                flagsAndAttributes |= FILE_ATTRIBUTE_READONLY;
23656
                break;
23657
            case 'F':
23658
                flagsAndAttributes |= FILE_ATTRIBUTE_OFFLINE;
23659
                break;
23660
            case 'T':
23661
                flagsAndAttributes |= FILE_ATTRIBUTE_TEMPORARY;
23662
                break;
23663
            case 'd':
23664
                flagsAndAttributes |= FILE_FLAG_DELETE_ON_CLOSE;
23665
                break;
23666
            case 'b':
23667
                flagsAndAttributes |= FILE_FLAG_NO_BUFFERING;
23668
                break;
23669
                /* we could potentially add more here -
23670
                 * https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
23671
                 */
23672
        }
23673
    }
23674
    switch (creatUnix) {
23675
        default:
23676
            janet_panic("invalid creation flags");
23677
        case 0:
23678
            creationDisp = OPEN_EXISTING;
23679
            break;
23680
        case OCREAT:
23681
            creationDisp = OPEN_ALWAYS;
23682
            break;
23683
        case OCREAT + OEXCL:
23684
            creationDisp = CREATE_NEW;
23685
            break;
23686
        case OCREAT + OTRUNC:
23687
            creationDisp = CREATE_ALWAYS;
23688
            break;
23689
        case OTRUNC:
23690
            creationDisp = TRUNCATE_EXISTING;
23691
            break;
23692
    }
23693
    fd = CreateFileA(path, desiredAccess, shareMode, NULL, creationDisp, flagsAndAttributes, NULL);
23694
    if (fd == INVALID_HANDLE_VALUE) janet_panicv(janet_ev_lasterr());
23695
#else
23696
0
    int open_flags = O_NONBLOCK;
23697
0
#ifdef JANET_LINUX
23698
0
    open_flags |= O_CLOEXEC;
23699
0
#endif
23700
0
    int read_flag = 0;
23701
0
    int write_flag = 0;
23702
0
    for (const uint8_t *c = opt_flags; *c; c++) {
23703
0
        switch (*c) {
23704
0
            default:
23705
0
                break;
23706
0
            case 'r':
23707
0
                read_flag = 1;
23708
0
                stream_flags |= JANET_STREAM_READABLE;
23709
0
                janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23710
0
                break;
23711
0
            case 'w':
23712
0
                write_flag = 1;
23713
0
                stream_flags |= JANET_STREAM_WRITABLE;
23714
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23715
0
                break;
23716
0
            case 'c':
23717
0
                open_flags |= O_CREAT;
23718
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23719
0
                break;
23720
0
            case 'e':
23721
0
                open_flags |= O_EXCL;
23722
0
                break;
23723
0
            case 't':
23724
0
                open_flags |= O_TRUNC;
23725
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23726
0
                break;
23727
            /* posix only */
23728
0
            case 'x':
23729
0
                open_flags |= O_SYNC;
23730
0
                break;
23731
0
            case 'C':
23732
0
                open_flags |= O_NOCTTY;
23733
0
                break;
23734
0
            case 'a':
23735
0
                open_flags |= O_APPEND;
23736
0
                break;
23737
0
        }
23738
0
    }
23739
    /* If both read and write, fix up to O_RDWR */
23740
0
    if (read_flag && !write_flag) {
23741
0
        open_flags |= O_RDONLY;
23742
0
    } else if (write_flag && !read_flag) {
23743
0
        open_flags |= O_WRONLY;
23744
0
    } else {
23745
0
        open_flags |= O_RDWR;
23746
0
    }
23747
23748
0
    do {
23749
0
        fd = open(path, open_flags, mode);
23750
0
    } while (fd == -1 && errno == EINTR);
23751
0
    if (fd == -1) janet_panicv(janet_ev_lasterr());
23752
0
#endif
23753
0
    return janet_wrap_abstract(janet_stream(fd, stream_flags, NULL));
23754
0
}
23755
23756
JANET_CORE_FN(os_pipe,
23757
              "(os/pipe &opt flags)",
23758
              "Create a readable stream and a writable stream that are connected. Returns a two-element "
23759
              "tuple where the first element is a readable stream and the second element is the writable "
23760
              "stream. `flags` is a keyword set of flags to disable non-blocking settings on the ends of the pipe. "
23761
              "This may be desired if passing the pipe to a subprocess with `os/spawn`.\n\n"
23762
              "* :W - sets the writable end of the pipe to a blocking stream.\n"
23763
              "* :R - sets the readable end of the pipe to a blocking stream.\n\n"
23764
0
              "By default, both ends of the pipe are non-blocking for use with the `ev` module.") {
23765
0
    (void) argv;
23766
0
    janet_arity(argc, 0, 1);
23767
0
    JanetHandle fds[2];
23768
0
    int flags = 0;
23769
0
    if (argc > 0 && !janet_checktype(argv[0], JANET_NIL)) {
23770
0
        flags = (int) janet_getflags(argv, 0, "WR");
23771
0
    }
23772
0
    if (janet_make_pipe(fds, flags)) janet_panicv(janet_ev_lasterr());
23773
0
    JanetStream *reader = janet_stream(fds[0], (flags & 2) ? 0 : JANET_STREAM_READABLE, NULL);
23774
0
    JanetStream *writer = janet_stream(fds[1], (flags & 1) ? 0 : JANET_STREAM_WRITABLE, NULL);
23775
0
    Janet tup[2] = {janet_wrap_abstract(reader), janet_wrap_abstract(writer)};
23776
0
    return janet_wrap_tuple(janet_tuple_n(tup, 2));
23777
0
}
23778
23779
#endif
23780
23781
#endif /* JANET_REDUCED_OS */
23782
23783
/* Module entry point */
23784
0
void janet_lib_os(JanetTable *env) {
23785
#if !defined(JANET_REDUCED_OS) && defined(JANET_WINDOWS) && defined(JANET_THREADS)
23786
    /* During start up, the top-most abstract machine (thread)
23787
     * in the thread tree sets up the critical section. */
23788
    static volatile long env_lock_initializing = 0;
23789
    static volatile long env_lock_initialized = 0;
23790
    if (!InterlockedExchange(&env_lock_initializing, 1)) {
23791
        InitializeCriticalSection(&env_lock);
23792
        InterlockedOr(&env_lock_initialized, 1);
23793
    } else {
23794
        while (!InterlockedOr(&env_lock_initialized, 0)) {
23795
            Sleep(0);
23796
        }
23797
    }
23798
23799
#endif
23800
0
#ifndef JANET_NO_PROCESSES
23801
0
#endif
23802
0
    JanetRegExt os_cfuns[] = {
23803
0
        JANET_CORE_REG("os/exit", os_exit),
23804
0
        JANET_CORE_REG("os/which", os_which),
23805
0
        JANET_CORE_REG("os/arch", os_arch),
23806
0
        JANET_CORE_REG("os/compiler", os_compiler),
23807
0
#ifndef JANET_REDUCED_OS
23808
23809
        /* misc (un-sandboxed) */
23810
0
        JANET_CORE_REG("os/cpu-count", os_cpu_count),
23811
0
        JANET_CORE_REG("os/cwd", os_cwd),
23812
0
        JANET_CORE_REG("os/cryptorand", os_cryptorand),
23813
0
        JANET_CORE_REG("os/perm-string", os_permission_string),
23814
0
        JANET_CORE_REG("os/perm-int", os_permission_int),
23815
0
        JANET_CORE_REG("os/mktime", os_mktime),
23816
0
        JANET_CORE_REG("os/time", os_time), /* not high resolution */
23817
0
        JANET_CORE_REG("os/date", os_date), /* not high resolution */
23818
0
        JANET_CORE_REG("os/strftime", os_strftime),
23819
0
        JANET_CORE_REG("os/sleep", os_sleep),
23820
0
        JANET_CORE_REG("os/isatty", os_isatty),
23821
0
        JANET_CORE_REG("os/setlocale", os_setlocale),
23822
23823
        /* env functions */
23824
0
        JANET_CORE_REG("os/environ", os_environ),
23825
0
        JANET_CORE_REG("os/getenv", os_getenv),
23826
0
        JANET_CORE_REG("os/setenv", os_setenv),
23827
23828
        /* fs read */
23829
0
        JANET_CORE_REG("os/dir", os_dir),
23830
0
        JANET_CORE_REG("os/stat", os_stat),
23831
0
        JANET_CORE_REG("os/lstat", os_lstat),
23832
0
        JANET_CORE_REG("os/chmod", os_chmod),
23833
0
        JANET_CORE_REG("os/touch", os_touch),
23834
0
        JANET_CORE_REG("os/realpath", os_realpath),
23835
0
        JANET_CORE_REG("os/cd", os_cd),
23836
0
#ifndef JANET_NO_UMASK
23837
0
        JANET_CORE_REG("os/umask", os_umask),
23838
0
#endif
23839
0
#ifndef JANET_NO_SYMLINKS
23840
0
        JANET_CORE_REG("os/readlink", os_readlink),
23841
0
#endif
23842
23843
        /* fs write */
23844
0
        JANET_CORE_REG("os/mkdir", os_mkdir),
23845
0
        JANET_CORE_REG("os/rmdir", os_rmdir),
23846
0
        JANET_CORE_REG("os/rm", os_remove),
23847
0
        JANET_CORE_REG("os/link", os_link),
23848
0
        JANET_CORE_REG("os/rename", os_rename),
23849
0
#ifndef JANET_NO_SYMLINKS
23850
0
        JANET_CORE_REG("os/symlink", os_symlink),
23851
0
#endif
23852
23853
        /* processes */
23854
0
#ifndef JANET_NO_PROCESSES
23855
0
        JANET_CORE_REG("os/execute", os_execute),
23856
0
        JANET_CORE_REG("os/spawn", os_spawn),
23857
0
        JANET_CORE_REG("os/shell", os_shell),
23858
0
        JANET_CORE_REG("os/posix-fork", os_posix_fork),
23859
0
        JANET_CORE_REG("os/posix-exec", os_posix_exec),
23860
        /* no need to sandbox process management if you can't create processes
23861
         * (allows for limited functionality if use exposes C-functions to create specific processes) */
23862
0
        JANET_CORE_REG("os/proc-wait", os_proc_wait),
23863
0
        JANET_CORE_REG("os/proc-kill", os_proc_kill),
23864
0
        JANET_CORE_REG("os/proc-close", os_proc_close),
23865
0
        JANET_CORE_REG("os/getpid", os_proc_getpid),
23866
0
        JANET_CORE_REG("os/sigaction", os_sigaction),
23867
0
#endif
23868
23869
        /* high resolution timers */
23870
0
        JANET_CORE_REG("os/clock", os_clock),
23871
23872
0
#ifdef JANET_EV
23873
0
        JANET_CORE_REG("os/open", os_open), /* fs read and write */
23874
0
        JANET_CORE_REG("os/pipe", os_pipe),
23875
0
#endif
23876
0
#endif
23877
0
        JANET_REG_END
23878
0
    };
23879
0
    janet_core_cfuns_ext(env, NULL, os_cfuns);
23880
0
}
23881
23882
23883
/* src/core/parse.c */
23884
#line 0 "src/core/parse.c"
23885
23886
/*
23887
* Copyright (c) 2025 Calvin Rose
23888
*
23889
* Permission is hereby granted, free of charge, to any person obtaining a copy
23890
* of this software and associated documentation files (the "Software"), to
23891
* deal in the Software without restriction, including without limitation the
23892
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
23893
* sell copies of the Software, and to permit persons to whom the Software is
23894
* furnished to do so, subject to the following conditions:
23895
*
23896
* The above copyright notice and this permission notice shall be included in
23897
* all copies or substantial portions of the Software.
23898
*
23899
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23900
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23901
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23902
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23903
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23904
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
23905
* IN THE SOFTWARE.
23906
*/
23907
23908
#ifndef JANET_AMALG
23909
#include "features.h"
23910
#include <janet.h>
23911
#include "util.h"
23912
#endif
23913
23914
0
#define JANET_PARSER_DEAD 0x1
23915
251
#define JANET_PARSER_GENERATED_ERROR 0x2
23916
23917
/* Check if a character is whitespace */
23918
3.45M
static int is_whitespace(uint8_t c) {
23919
3.45M
    return c == ' '
23920
3.45M
           || c == '\t'
23921
3.45M
           || c == '\n'
23922
3.45M
           || c == '\r'
23923
3.45M
           || c == '\0'
23924
3.45M
           || c == '\v'
23925
3.45M
           || c == '\f';
23926
3.45M
}
23927
23928
/* Code generated by tools/symcharsgen.c.
23929
 * The table contains 256 bits, where each bit is 1
23930
 * if the corresponding ascii code is a symbol char, and 0
23931
 * if not. The upper characters are also considered symbol
23932
 * chars and are then checked for utf-8 compliance. */
23933
static const uint32_t symchars[8] = {
23934
    0x00000000, 0xf7ffec72, 0xc7ffffff, 0x07fffffe,
23935
    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
23936
};
23937
23938
/* Check if a character is a valid symbol character
23939
 * symbol chars are A-Z, a-z, 0-9, or one of !$&*+-./:<=>@\^_| */
23940
27.8M
int janet_is_symbol_char(uint8_t c) {
23941
27.8M
    return symchars[c >> 5] & ((uint32_t)1 << (c & 0x1F));
23942
27.8M
}
23943
23944
/* Validate some utf8. Useful for identifiers. Only validates
23945
 * the encoding, does not check for valid code points (they
23946
 * are less well defined than the encoding). */
23947
2.97k
int janet_valid_utf8(const uint8_t *str, int32_t len) {
23948
2.97k
    int32_t i = 0;
23949
2.97k
    int32_t j;
23950
3.93M
    while (i < len) {
23951
3.93M
        int32_t nexti;
23952
3.93M
        uint8_t c = str[i];
23953
23954
        /* Check the number of bytes in code point */
23955
3.93M
        if (c < 0x80) nexti = i + 1;
23956
7.84k
        else if ((c >> 5) == 0x06) nexti = i + 2;
23957
5.80k
        else if ((c >> 4) == 0x0E) nexti = i + 3;
23958
3.53k
        else if ((c >> 3) == 0x1E) nexti = i + 4;
23959
        /* Don't allow 5 or 6 byte code points */
23960
95
        else return 0;
23961
23962
        /* No overflow */
23963
3.93M
        if (nexti > len) return 0;
23964
23965
        /* Ensure trailing bytes are well formed (10XX XXXX) */
23966
3.95M
        for (j = i + 1; j < nexti; j++) {
23967
16.7k
            if ((str[j] >> 6) != 2) return 0;
23968
16.7k
        }
23969
23970
        /* Check for overlong encoding */
23971
3.93M
        if ((nexti == i + 2) && str[i] < 0xC2) return 0;
23972
3.93M
        if ((str[i] == 0xE0) && str[i + 1] < 0xA0) return 0;
23973
3.93M
        if ((str[i] == 0xF0) && str[i + 1] < 0x90) return 0;
23974
23975
3.93M
        i = nexti;
23976
3.93M
    }
23977
2.74k
    return 1;
23978
2.97k
}
23979
23980
/* Get hex digit from a letter */
23981
39.4k
static int to_hex(uint8_t c) {
23982
39.4k
    if (c >= '0' && c <= '9') {
23983
23.5k
        return c - '0';
23984
23.5k
    } else if (c >= 'A' && c <= 'F') {
23985
1.90k
        return 10 + c - 'A';
23986
13.9k
    } else if (c >= 'a' && c <= 'f') {
23987
13.9k
        return 10 + c - 'a';
23988
13.9k
    } else {
23989
75
        return -1;
23990
75
    }
23991
39.4k
}
23992
23993
typedef int (*Consumer)(JanetParser *p, JanetParseState *state, uint8_t c);
23994
struct JanetParseState {
23995
    int32_t counter;
23996
    int32_t argn;
23997
    int flags;
23998
    size_t line;
23999
    size_t column;
24000
    Consumer consumer;
24001
};
24002
24003
/* Define a stack on the main parser struct */
24004
#define DEF_PARSER_STACK(NAME, T, STACK, STACKCOUNT, STACKCAP) \
24005
72.0M
static void NAME(JanetParser *p, T x) { \
24006
72.0M
    size_t oldcount = p->STACKCOUNT; \
24007
72.0M
    size_t newcount = oldcount + 1; \
24008
72.0M
    if (newcount > p->STACKCAP) { \
24009
41.2k
        T *next; \
24010
41.2k
        size_t newcap = 2 * newcount; \
24011
41.2k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
24012
41.2k
        if (NULL == next) { \
24013
0
            JANET_OUT_OF_MEMORY; \
24014
0
        } \
24015
41.2k
        p->STACK = next; \
24016
41.2k
        p->STACKCAP = newcap; \
24017
41.2k
    } \
24018
72.0M
    p->STACK[oldcount] = x; \
24019
72.0M
    p->STACKCOUNT = newcount; \
24020
72.0M
}
janet.c:_pushstate
Line
Count
Source
24005
17.8M
static void NAME(JanetParser *p, T x) { \
24006
17.8M
    size_t oldcount = p->STACKCOUNT; \
24007
17.8M
    size_t newcount = oldcount + 1; \
24008
17.8M
    if (newcount > p->STACKCAP) { \
24009
11.3k
        T *next; \
24010
11.3k
        size_t newcap = 2 * newcount; \
24011
11.3k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
24012
11.3k
        if (NULL == next) { \
24013
0
            JANET_OUT_OF_MEMORY; \
24014
0
        } \
24015
11.3k
        p->STACK = next; \
24016
11.3k
        p->STACKCAP = newcap; \
24017
11.3k
    } \
24018
17.8M
    p->STACK[oldcount] = x; \
24019
17.8M
    p->STACKCOUNT = newcount; \
24020
17.8M
}
janet.c:push_buf
Line
Count
Source
24005
45.2M
static void NAME(JanetParser *p, T x) { \
24006
45.2M
    size_t oldcount = p->STACKCOUNT; \
24007
45.2M
    size_t newcount = oldcount + 1; \
24008
45.2M
    if (newcount > p->STACKCAP) { \
24009
18.5k
        T *next; \
24010
18.5k
        size_t newcap = 2 * newcount; \
24011
18.5k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
24012
18.5k
        if (NULL == next) { \
24013
0
            JANET_OUT_OF_MEMORY; \
24014
0
        } \
24015
18.5k
        p->STACK = next; \
24016
18.5k
        p->STACKCAP = newcap; \
24017
18.5k
    } \
24018
45.2M
    p->STACK[oldcount] = x; \
24019
45.2M
    p->STACKCOUNT = newcount; \
24020
45.2M
}
janet.c:push_arg
Line
Count
Source
24005
9.03M
static void NAME(JanetParser *p, T x) { \
24006
9.03M
    size_t oldcount = p->STACKCOUNT; \
24007
9.03M
    size_t newcount = oldcount + 1; \
24008
9.03M
    if (newcount > p->STACKCAP) { \
24009
11.3k
        T *next; \
24010
11.3k
        size_t newcap = 2 * newcount; \
24011
11.3k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
24012
11.3k
        if (NULL == next) { \
24013
0
            JANET_OUT_OF_MEMORY; \
24014
0
        } \
24015
11.3k
        p->STACK = next; \
24016
11.3k
        p->STACKCAP = newcap; \
24017
11.3k
    } \
24018
9.03M
    p->STACK[oldcount] = x; \
24019
9.03M
    p->STACKCOUNT = newcount; \
24020
9.03M
}
24021
24022
DEF_PARSER_STACK(push_buf, uint8_t, buf, bufcount, bufcap)
24023
DEF_PARSER_STACK(push_arg, Janet, args, argcount, argcap)
24024
DEF_PARSER_STACK(_pushstate, JanetParseState, states, statecount, statecap)
24025
24026
#undef DEF_PARSER_STACK
24027
24028
19.1M
#define PFLAG_CONTAINER 0x100
24029
4.12M
#define PFLAG_BUFFER 0x200
24030
2.81M
#define PFLAG_PARENS 0x400
24031
1.20M
#define PFLAG_SQRBRACKETS 0x800
24032
7.97M
#define PFLAG_CURLYBRACKETS 0x1000
24033
2.80M
#define PFLAG_STRING 0x2000
24034
2.81M
#define PFLAG_LONGSTRING 0x4000
24035
2.50M
#define PFLAG_READERMAC 0x8000
24036
4.52M
#define PFLAG_ATSYM 0x10000
24037
402
#define PFLAG_COMMENT 0x20000
24038
3.21M
#define PFLAG_TOKEN 0x40000
24039
24040
17.8M
static void pushstate(JanetParser *p, Consumer consumer, int flags) {
24041
17.8M
    JanetParseState s;
24042
17.8M
    s.counter = 0;
24043
17.8M
    s.argn = 0;
24044
17.8M
    s.flags = flags;
24045
17.8M
    s.consumer = consumer;
24046
17.8M
    s.line = p->line;
24047
17.8M
    s.column = p->column;
24048
17.8M
    _pushstate(p, s);
24049
17.8M
}
24050
24051
9.03M
static void popstate(JanetParser *p, Janet val) {
24052
10.1M
    for (;;) {
24053
10.1M
        JanetParseState top = p->states[--p->statecount];
24054
10.1M
        JanetParseState *newtop = p->states + p->statecount - 1;
24055
        /* Source mapping info */
24056
10.1M
        if (janet_checktype(val, JANET_TUPLE)) {
24057
1.14M
            janet_tuple_sm_line(janet_unwrap_tuple(val)) = (int32_t) top.line;
24058
1.14M
            janet_tuple_sm_column(janet_unwrap_tuple(val)) = (int32_t) top.column;
24059
1.14M
        }
24060
10.1M
        if (newtop->flags & PFLAG_CONTAINER) {
24061
9.03M
            newtop->argn++;
24062
            /* Keep track of number of values in the root state */
24063
9.03M
            if (p->statecount == 1) {
24064
23.3k
                p->pending++;
24065
                /* Root items are always wrapped in a tuple for source map info. */
24066
23.3k
                const Janet *tup = janet_tuple_n(&val, 1);
24067
23.3k
                janet_tuple_sm_line(tup) = (int32_t) top.line;
24068
23.3k
                janet_tuple_sm_column(tup) = (int32_t) top.column;
24069
23.3k
                val = janet_wrap_tuple(tup);
24070
23.3k
            }
24071
9.03M
            push_arg(p, val);
24072
9.03M
            return;
24073
9.03M
        } else if (newtop->flags & PFLAG_READERMAC) {
24074
1.12M
            Janet *t = janet_tuple_begin(2);
24075
1.12M
            int c = newtop->flags & 0xFF;
24076
1.12M
            const char *which =
24077
1.12M
                (c == '\'') ? "quote" :
24078
1.12M
                (c == ',') ? "unquote" :
24079
1.11M
                (c == ';') ? "splice" :
24080
18.3k
                (c == '|') ? "short-fn" :
24081
7.09k
                (c == '~') ? "quasiquote" : "<unknown>";
24082
1.12M
            t[0] = janet_csymbolv(which);
24083
1.12M
            t[1] = val;
24084
            /* Quote source mapping info */
24085
1.12M
            janet_tuple_sm_line(t) = (int32_t) newtop->line;
24086
1.12M
            janet_tuple_sm_column(t) = (int32_t) newtop->column;
24087
1.12M
            val = janet_wrap_tuple(janet_tuple_end(t));
24088
1.12M
        } else {
24089
0
            return;
24090
0
        }
24091
10.1M
    }
24092
9.03M
}
24093
24094
251
static void delim_error(JanetParser *parser, size_t stack_index, char c, const char *msg) {
24095
251
    JanetParseState *s = parser->states + stack_index;
24096
251
    JanetBuffer *buffer = janet_buffer(40);
24097
251
    if (msg) {
24098
251
        janet_buffer_push_cstring(buffer, msg);
24099
251
    }
24100
251
    if (c) {
24101
251
        janet_buffer_push_u8(buffer, c);
24102
251
    }
24103
251
    if (stack_index > 0) {
24104
60
        janet_buffer_push_cstring(buffer, ", ");
24105
60
        if (s->flags & PFLAG_PARENS) {
24106
25
            janet_buffer_push_u8(buffer, '(');
24107
35
        } else if (s->flags & PFLAG_SQRBRACKETS) {
24108
8
            janet_buffer_push_u8(buffer, '[');
24109
27
        } else if (s->flags & PFLAG_CURLYBRACKETS) {
24110
10
            janet_buffer_push_u8(buffer, '{');
24111
17
        } else if (s->flags & PFLAG_STRING) {
24112
0
            janet_buffer_push_u8(buffer, '"');
24113
17
        } else if (s->flags & PFLAG_LONGSTRING) {
24114
0
            int32_t i;
24115
0
            for (i = 0; i < s->argn; i++) {
24116
0
                janet_buffer_push_u8(buffer, '`');
24117
0
            }
24118
0
        }
24119
60
        janet_formatb(buffer, " opened at line %d, column %d", (int32_t) s->line, (int32_t) s->column);
24120
60
    }
24121
251
    parser->error = (const char *) janet_string(buffer->data, buffer->count);
24122
251
    parser->flag |= JANET_PARSER_GENERATED_ERROR;
24123
251
}
24124
24125
23.5k
static int checkescape(uint8_t c) {
24126
23.5k
    switch (c) {
24127
10
        default:
24128
10
            return -1;
24129
781
        case 'x':
24130
5.57k
        case 'u':
24131
8.75k
        case 'U':
24132
8.75k
            return 1;
24133
521
        case 'n':
24134
521
            return '\n';
24135
263
        case 't':
24136
263
            return '\t';
24137
9.88k
        case 'r':
24138
9.88k
            return '\r';
24139
245
        case '0':
24140
245
            return '\0';
24141
279
        case 'z':
24142
279
            return '\0';
24143
350
        case 'f':
24144
350
            return '\f';
24145
600
        case 'v':
24146
600
            return '\v';
24147
202
        case 'a':
24148
202
            return '\a';
24149
233
        case 'b':
24150
233
            return '\b';
24151
209
        case '\'':
24152
209
            return '\'';
24153
350
        case '?':
24154
350
            return '?';
24155
344
        case 'e':
24156
344
            return 27;
24157
624
        case '"':
24158
624
            return '"';
24159
697
        case '\\':
24160
697
            return '\\';
24161
23.5k
    }
24162
23.5k
}
24163
24164
/* Forward declare */
24165
static int stringchar(JanetParser *p, JanetParseState *state, uint8_t c);
24166
24167
7.88k
static void write_codepoint(JanetParser *p, int32_t codepoint) {
24168
7.88k
    if (codepoint <= 0x7F) {
24169
2.84k
        push_buf(p, (uint8_t) codepoint);
24170
5.04k
    } else if (codepoint <= 0x7FF) {
24171
689
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x1F) | 0xC0);
24172
689
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
24173
4.35k
    } else if (codepoint <= 0xFFFF) {
24174
1.28k
        push_buf(p, (uint8_t)((codepoint >> 12) & 0x0F) | 0xE0);
24175
1.28k
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x3F) | 0x80);
24176
1.28k
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
24177
3.06k
    } else {
24178
3.06k
        push_buf(p, (uint8_t)((codepoint >> 18) & 0x07) | 0xF0);
24179
3.06k
        push_buf(p, (uint8_t)((codepoint >> 12) & 0x3F) | 0x80);
24180
3.06k
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x3F) | 0x80);
24181
3.06k
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
24182
3.06k
    }
24183
7.88k
}
24184
24185
1.49k
static int escapeh(JanetParser *p, JanetParseState *state, uint8_t c) {
24186
1.49k
    int digit = to_hex(c);
24187
1.49k
    if (digit < 0) {
24188
35
        p->error = "invalid hex digit in hex escape";
24189
35
        return 1;
24190
35
    }
24191
1.46k
    state->argn = (state->argn << 4) + digit;
24192
1.46k
    state->counter--;
24193
1.46k
    if (!state->counter) {
24194
721
        push_buf(p, (uint8_t)(state->argn & 0xFF));
24195
721
        state->argn = 0;
24196
721
        state->consumer = stringchar;
24197
721
    }
24198
1.46k
    return 1;
24199
1.49k
}
24200
24201
37.9k
static int escapeu(JanetParser *p, JanetParseState *state, uint8_t c) {
24202
37.9k
    int digit = to_hex(c);
24203
37.9k
    if (digit < 0) {
24204
40
        p->error = "invalid hex digit in unicode escape";
24205
40
        return 1;
24206
40
    }
24207
37.9k
    state->argn = (state->argn << 4) + digit;
24208
37.9k
    state->counter--;
24209
37.9k
    if (!state->counter) {
24210
7.89k
        if (state->argn > 0x10FFFF) {
24211
6
            p->error = "invalid unicode codepoint";
24212
6
            return 1;
24213
6
        }
24214
7.88k
        write_codepoint(p, state->argn);
24215
7.88k
        state->argn = 0;
24216
7.88k
        state->consumer = stringchar;
24217
7.88k
    }
24218
37.9k
    return 1;
24219
37.9k
}
24220
24221
23.5k
static int escape1(JanetParser *p, JanetParseState *state, uint8_t c) {
24222
23.5k
    int e = checkescape(c);
24223
23.5k
    if (e < 0) {
24224
10
        p->error = "invalid string escape sequence";
24225
10
        return 1;
24226
10
    }
24227
23.5k
    if (c == 'x') {
24228
781
        state->counter = 2;
24229
781
        state->argn = 0;
24230
781
        state->consumer = escapeh;
24231
22.7k
    } else if (c == 'u' || c == 'U') {
24232
7.97k
        state->counter = c == 'u' ? 4 : 6;
24233
7.97k
        state->argn = 0;
24234
7.97k
        state->consumer = escapeu;
24235
14.8k
    } else {
24236
14.8k
        push_buf(p, (uint8_t) e);
24237
14.8k
        state->consumer = stringchar;
24238
14.8k
    }
24239
23.5k
    return 1;
24240
23.5k
}
24241
24242
2.81M
static int stringend(JanetParser *p, JanetParseState *state) {
24243
2.81M
    Janet ret;
24244
2.81M
    uint8_t *bufstart = p->buf;
24245
2.81M
    int32_t buflen = (int32_t) p->bufcount;
24246
2.81M
    if (state->flags & PFLAG_LONGSTRING) {
24247
        /* Post process to remove leading whitespace */
24248
4.46k
        JanetParseState top = p->states[p->statecount - 1];
24249
4.46k
        int32_t indent_col = (int32_t) top.column - 1;
24250
4.46k
        uint8_t *r = bufstart, *end = r + buflen;
24251
        /* Unless there are only spaces before EOLs, disable reindenting */
24252
4.46k
        int reindent = 1;
24253
10.9M
        while (reindent && (r < end)) {
24254
10.9M
            if (*r++ == '\n') {
24255
21.4k
                for (int32_t j = 0; (r < end) && (*r != '\n') && (j < indent_col); j++, r++) {
24256
1.20k
                    if (*r != ' ') {
24257
872
                        reindent = 0;
24258
872
                        break;
24259
872
                    }
24260
1.20k
                }
24261
21.1k
                if ((r + 1) < end && *r == '\r' && *(r + 1) == '\n') reindent = 1;
24262
21.1k
            }
24263
10.9M
        }
24264
        /* Now reindent if able */
24265
4.46k
        if (reindent) {
24266
3.79k
            uint8_t *w = bufstart;
24267
3.79k
            r = bufstart;
24268
10.4M
            while (r < end) {
24269
10.4M
                if (*r == '\n') {
24270
20.1k
                    *w++ = *r++;
24271
20.4k
                    for (int32_t j = 0; (r < end) && (*r != '\n') && (j < indent_col); j++, r++);
24272
20.1k
                    if ((r + 1) < end && *r == '\r' && *(r + 1) == '\n') *w++ = *r++;
24273
10.4M
                } else {
24274
10.4M
                    *w++ = *r++;
24275
10.4M
                }
24276
10.4M
            }
24277
3.79k
            buflen = (int32_t)(w - bufstart);
24278
3.79k
        }
24279
        /* Check for leading EOL so we can remove it */
24280
4.46k
        if (buflen > 1 && bufstart[0] == '\r' && bufstart[1] == '\n') { /* Windows EOL */
24281
258
            buflen = buflen - 2;
24282
258
            bufstart = bufstart + 2;
24283
4.20k
        } else if (buflen > 0 && bufstart[0] == '\n') { /* Unix EOL */
24284
1.17k
            buflen--;
24285
1.17k
            bufstart++;
24286
1.17k
        }
24287
        /* Check for trailing EOL so we can remove it */
24288
4.46k
        if (buflen > 1 && bufstart[buflen - 2] == '\r' && bufstart[buflen - 1] == '\n') { /* Windows EOL */
24289
1.14k
            buflen = buflen - 2;
24290
3.32k
        } else if (buflen > 0 && bufstart[buflen - 1] == '\n') { /* Unix EOL */
24291
816
            buflen--;
24292
816
        }
24293
4.46k
    }
24294
2.81M
    if (state->flags & PFLAG_BUFFER) {
24295
1.31M
        JanetBuffer *b = janet_buffer(buflen);
24296
1.31M
        janet_buffer_push_bytes(b, bufstart, buflen);
24297
1.31M
        ret = janet_wrap_buffer(b);
24298
1.50M
    } else {
24299
1.50M
        ret = janet_wrap_string(janet_string(bufstart, buflen));
24300
1.50M
    }
24301
2.81M
    p->bufcount = 0;
24302
2.81M
    popstate(p, ret);
24303
2.81M
    return 1;
24304
2.81M
}
24305
24306
14.0M
static int stringchar(JanetParser *p, JanetParseState *state, uint8_t c) {
24307
    /* Enter escape */
24308
14.0M
    if (c == '\\') {
24309
23.5k
        state->consumer = escape1;
24310
23.5k
        return 1;
24311
23.5k
    }
24312
    /* String end */
24313
14.0M
    if (c == '"') {
24314
2.80M
        return stringend(p, state);
24315
2.80M
    }
24316
    /* normal char */
24317
11.2M
    if (c != '\n' && c != '\r')
24318
11.2M
        push_buf(p, c);
24319
11.2M
    return 1;
24320
14.0M
}
24321
24322
/* Check for string equality in the buffer */
24323
9.43M
static int check_str_const(const char *cstr, const uint8_t *str, int32_t len) {
24324
9.43M
    int32_t index;
24325
9.65M
    for (index = 0; index < len; index++) {
24326
9.59M
        uint8_t c = str[index];
24327
9.59M
        uint8_t k = ((const uint8_t *)cstr)[index];
24328
9.59M
        if (c < k) return -1;
24329
1.01M
        if (c > k) return 1;
24330
219k
        if (k == '\0') break;
24331
219k
    }
24332
59.8k
    return (cstr[index] == '\0') ? 0 : -1;
24333
9.43M
}
24334
24335
24.6M
static int tokenchar(JanetParser *p, JanetParseState *state, uint8_t c) {
24336
24.6M
    Janet ret;
24337
24.6M
    double numval;
24338
24.6M
    int32_t blen;
24339
24.6M
    if (janet_is_symbol_char(c)) {
24340
21.3M
        push_buf(p, (uint8_t) c);
24341
21.3M
        if (c > 127) state->argn = 1; /* Use to indicate non ascii */
24342
21.3M
        return 1;
24343
21.3M
    }
24344
    /* Token finished */
24345
3.21M
    blen = (int32_t) p->bufcount;
24346
3.21M
    int start_dig = p->buf[0] >= '0' && p->buf[0] <= '9';
24347
3.21M
    int start_num = start_dig || p->buf[0] == '-' || p->buf[0] == '+' || p->buf[0] == '.';
24348
3.21M
    if (p->buf[0] == ':') {
24349
        /* Don't do full utf-8 check unless we have seen non ascii characters. */
24350
6.33k
        int valid = (!state->argn) || janet_valid_utf8(p->buf + 1, blen - 1);
24351
6.33k
        if (!valid) {
24352
57
            p->error = "invalid utf-8 in keyword";
24353
57
            return 0;
24354
57
        }
24355
6.27k
        ret = janet_keywordv(p->buf + 1, blen - 1);
24356
6.27k
#ifdef JANET_INT_TYPES
24357
3.20M
    } else if (start_num && !janet_scan_numeric(p->buf, blen, &ret)) {
24358
49.8k
        (void) numval;
24359
#else
24360
    } else if (start_num && !janet_scan_number(p->buf, blen, &numval)) {
24361
        ret = janet_wrap_number(numval);
24362
#endif
24363
3.15M
    } else if (!check_str_const("nil", p->buf, blen)) {
24364
20.5k
        ret = janet_wrap_nil();
24365
3.13M
    } else if (!check_str_const("false", p->buf, blen)) {
24366
360
        ret = janet_wrap_false();
24367
3.13M
    } else if (!check_str_const("true", p->buf, blen)) {
24368
33.9k
        ret = janet_wrap_true();
24369
3.10M
    } else {
24370
3.10M
        if (start_dig) {
24371
473
            p->error = "symbol literal cannot start with a digit";
24372
473
            return 0;
24373
3.10M
        } else {
24374
            /* Don't do full utf-8 check unless we have seen non ascii characters. */
24375
3.10M
            int valid = (!state->argn) || janet_valid_utf8(p->buf, blen);
24376
3.10M
            if (!valid) {
24377
178
                p->error = "invalid utf-8 in symbol";
24378
178
                return 0;
24379
178
            }
24380
3.10M
            ret = janet_symbolv(p->buf, blen);
24381
3.10M
        }
24382
3.10M
    }
24383
3.21M
    p->bufcount = 0;
24384
3.21M
    popstate(p, ret);
24385
3.21M
    return 0;
24386
3.21M
}
24387
24388
119k
static int comment(JanetParser *p, JanetParseState *state, uint8_t c) {
24389
119k
    (void) state;
24390
119k
    if (c == '\n') {
24391
307
        p->statecount--;
24392
307
        p->bufcount = 0;
24393
119k
    } else {
24394
119k
        push_buf(p, c);
24395
119k
    }
24396
119k
    return 1;
24397
119k
}
24398
24399
21.7k
static Janet close_tuple(JanetParser *p, JanetParseState *state, int32_t flag) {
24400
21.7k
    Janet *ret = janet_tuple_begin(state->argn);
24401
21.7k
    janet_tuple_flag(ret) |= flag;
24402
867k
    for (int32_t i = state->argn - 1; i >= 0; i--)
24403
845k
        ret[i] = p->args[--p->argcount];
24404
21.7k
    return janet_wrap_tuple(janet_tuple_end(ret));
24405
21.7k
}
24406
24407
3.20k
static Janet close_array(JanetParser *p, JanetParseState *state) {
24408
3.20k
    JanetArray *array = janet_array(state->argn);
24409
1.38M
    for (int32_t i = state->argn - 1; i >= 0; i--)
24410
1.38M
        array->data[i] = p->args[--p->argcount];
24411
3.20k
    array->count = state->argn;
24412
3.20k
    return janet_wrap_array(array);
24413
3.20k
}
24414
24415
2.92M
static Janet close_struct(JanetParser *p, JanetParseState *state) {
24416
2.92M
    JanetKV *st = janet_struct_begin(state->argn >> 1);
24417
4.94M
    for (size_t i = p->argcount - state->argn; i < p->argcount; i += 2) {
24418
2.01M
        Janet key = p->args[i];
24419
2.01M
        Janet value = p->args[i + 1];
24420
2.01M
        janet_struct_put(st, key, value);
24421
2.01M
    }
24422
2.92M
    p->argcount -= state->argn;
24423
2.92M
    return janet_wrap_struct(janet_struct_end(st));
24424
2.92M
}
24425
24426
59.3k
static Janet close_table(JanetParser *p, JanetParseState *state) {
24427
59.3k
    JanetTable *table = janet_table(state->argn >> 1);
24428
1.00M
    for (size_t i = p->argcount - state->argn; i < p->argcount; i += 2) {
24429
947k
        Janet key = p->args[i];
24430
947k
        Janet value = p->args[i + 1];
24431
947k
        janet_table_put(table, key, value);
24432
947k
    }
24433
59.3k
    p->argcount -= state->argn;
24434
59.3k
    return janet_wrap_table(table);
24435
59.3k
}
24436
24437
13.1M
#define PFLAG_INSTRING 0x100000
24438
1.27M
#define PFLAG_END_CANDIDATE 0x200000
24439
13.1M
static int longstring(JanetParser *p, JanetParseState *state, uint8_t c) {
24440
13.1M
    if (state->flags & PFLAG_INSTRING) {
24441
        /* We are inside the long string */
24442
11.8M
        if (c == '`') {
24443
7.64k
            state->flags |= PFLAG_END_CANDIDATE;
24444
7.64k
            state->flags &= ~PFLAG_INSTRING;
24445
7.64k
            state->counter = 1; /* Use counter to keep track of number of '=' seen */
24446
7.64k
            return 1;
24447
7.64k
        }
24448
11.8M
        push_buf(p, c);
24449
11.8M
        return 1;
24450
11.8M
    } else if (state->flags & PFLAG_END_CANDIDATE) {
24451
574k
        int i;
24452
        /* We are checking a potential end of the string */
24453
574k
        if (state->counter == state->argn) {
24454
4.46k
            stringend(p, state);
24455
4.46k
            return 0;
24456
4.46k
        }
24457
570k
        if (c == '`' && state->counter < state->argn) {
24458
566k
            state->counter++;
24459
566k
            return 1;
24460
566k
        }
24461
        /* Failed end candidate */
24462
546k
        for (i = 0; i < state->counter; i++) {
24463
543k
            push_buf(p, '`');
24464
543k
        }
24465
3.15k
        push_buf(p, c);
24466
3.15k
        state->counter = 0;
24467
3.15k
        state->flags &= ~PFLAG_END_CANDIDATE;
24468
3.15k
        state->flags |= PFLAG_INSTRING;
24469
3.15k
        return 1;
24470
685k
    } else {
24471
        /* We are at beginning of string */
24472
685k
        state->argn++;
24473
685k
        if (c != '`') {
24474
4.62k
            state->flags |= PFLAG_INSTRING;
24475
4.62k
            push_buf(p, c);
24476
4.62k
        }
24477
685k
        return 1;
24478
685k
    }
24479
13.1M
}
24480
24481
static int root(JanetParser *p, JanetParseState *state, uint8_t c);
24482
24483
1.42M
static int atsign(JanetParser *p, JanetParseState *state, uint8_t c) {
24484
1.42M
    (void) state;
24485
1.42M
    p->statecount--;
24486
1.42M
    switch (c) {
24487
60.4k
        case '{':
24488
60.4k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_CURLYBRACKETS | PFLAG_ATSYM);
24489
60.4k
            return 1;
24490
1.31M
        case '"':
24491
1.31M
            pushstate(p, stringchar, PFLAG_BUFFER | PFLAG_STRING);
24492
1.31M
            return 1;
24493
1.22k
        case '`':
24494
1.22k
            pushstate(p, longstring, PFLAG_BUFFER | PFLAG_LONGSTRING);
24495
1.22k
            return 1;
24496
27.4k
        case '[':
24497
27.4k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_SQRBRACKETS | PFLAG_ATSYM);
24498
27.4k
            return 1;
24499
451
        case '(':
24500
451
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_PARENS | PFLAG_ATSYM);
24501
451
            return 1;
24502
23.3k
        default:
24503
23.3k
            break;
24504
1.42M
    }
24505
23.3k
    pushstate(p, tokenchar, PFLAG_TOKEN);
24506
23.3k
    push_buf(p, '@'); /* Push the leading at-sign that was dropped */
24507
23.3k
    return 0;
24508
1.42M
}
24509
24510
/* The root state of the parser */
24511
19.6M
static int root(JanetParser *p, JanetParseState *state, uint8_t c) {
24512
19.6M
    switch (c) {
24513
3.45M
        default:
24514
3.45M
            if (is_whitespace(c)) return 1;
24515
3.19M
            if (!janet_is_symbol_char(c)) {
24516
425
                p->error = "unexpected character";
24517
425
                return 1;
24518
425
            }
24519
3.19M
            pushstate(p, tokenchar, PFLAG_TOKEN);
24520
3.19M
            return 0;
24521
222k
        case '\'':
24522
1.34M
        case ',':
24523
1.36M
        case ';':
24524
1.37M
        case '~':
24525
1.37M
        case '|':
24526
1.37M
            pushstate(p, root, PFLAG_READERMAC | c);
24527
1.37M
            return 1;
24528
1.49M
        case '"':
24529
1.49M
            pushstate(p, stringchar, PFLAG_STRING);
24530
1.49M
            return 1;
24531
402
        case '#':
24532
402
            pushstate(p, comment, PFLAG_COMMENT);
24533
402
            return 1;
24534
1.42M
        case '@':
24535
1.42M
            pushstate(p, atsign, PFLAG_ATSYM);
24536
1.42M
            return 1;
24537
3.51k
        case '`':
24538
3.51k
            pushstate(p, longstring, PFLAG_LONGSTRING);
24539
3.51k
            return 1;
24540
1.33k
        case ')':
24541
25.0k
        case ']':
24542
3.01M
        case '}': {
24543
3.01M
            Janet ds;
24544
3.01M
            if (p->statecount == 1) {
24545
191
                delim_error(p, 0, c, "unexpected closing delimiter ");
24546
191
                return 1;
24547
191
            }
24548
3.00M
            if ((c == ')' && (state->flags & PFLAG_PARENS)) ||
24549
3.00M
                    (c == ']' && (state->flags & PFLAG_SQRBRACKETS))) {
24550
24.9k
                if (state->flags & PFLAG_ATSYM) {
24551
3.20k
                    ds = close_array(p, state);
24552
21.7k
                } else {
24553
21.7k
                    ds = close_tuple(p, state, c == ']' ? JANET_TUPLE_FLAG_BRACKETCTOR : 0);
24554
21.7k
                }
24555
2.98M
            } else if (c == '}' && (state->flags & PFLAG_CURLYBRACKETS)) {
24556
2.98M
                if (state->argn & 1) {
24557
32
                    p->error = "struct and table literals expect even number of arguments";
24558
32
                    return 1;
24559
32
                }
24560
2.98M
                if (state->flags & PFLAG_ATSYM) {
24561
59.3k
                    ds = close_table(p, state);
24562
2.92M
                } else {
24563
2.92M
                    ds = close_struct(p, state);
24564
2.92M
                }
24565
2.98M
            } else {
24566
60
                delim_error(p, p->statecount - 1, c, "mismatched delimiter ");
24567
60
                return 1;
24568
60
            }
24569
3.00M
            popstate(p, ds);
24570
3.00M
        }
24571
0
        return 1;
24572
2.81M
        case '(':
24573
2.81M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_PARENS);
24574
2.81M
            return 1;
24575
1.15M
        case '[':
24576
1.15M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_SQRBRACKETS);
24577
1.15M
            return 1;
24578
4.92M
        case '{':
24579
4.92M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_CURLYBRACKETS);
24580
4.92M
            return 1;
24581
19.6M
    }
24582
19.6M
}
24583
24584
66.6M
static void janet_parser_checkdead(JanetParser *parser) {
24585
66.6M
    if (parser->flag) janet_panic("parser is dead, cannot consume");
24586
66.6M
    if (parser->error) janet_panic("parser has unchecked error, cannot consume");
24587
66.6M
}
24588
24589
/* Public API */
24590
24591
66.6M
void janet_parser_consume(JanetParser *parser, uint8_t c) {
24592
66.6M
    int consumed = 0;
24593
66.6M
    janet_parser_checkdead(parser);
24594
66.6M
    if (c == '\r') {
24595
14.6k
        parser->line++;
24596
14.6k
        parser->column = 0;
24597
66.6M
    } else if (c == '\n') {
24598
28.6k
        parser->column = 0;
24599
28.6k
        if (parser->lookback != '\r')
24600
22.9k
            parser->line++;
24601
66.6M
    } else {
24602
66.6M
        parser->column++;
24603
66.6M
    }
24604
139M
    while (!consumed && !parser->error) {
24605
73.0M
        JanetParseState *state = parser->states + parser->statecount - 1;
24606
73.0M
        consumed = state->consumer(parser, state, c);
24607
73.0M
    }
24608
66.6M
    parser->lookback = c;
24609
66.6M
}
24610
24611
0
void janet_parser_eof(JanetParser *parser) {
24612
0
    janet_parser_checkdead(parser);
24613
0
    size_t oldcolumn = parser->column;
24614
0
    size_t oldline = parser->line;
24615
0
    janet_parser_consume(parser, '\n');
24616
0
    if (parser->statecount > 1) {
24617
0
        delim_error(parser, parser->statecount - 1, 0, "unexpected end of source");
24618
0
    }
24619
0
    parser->line = oldline;
24620
0
    parser->column = oldcolumn;
24621
0
    parser->flag |= JANET_PARSER_DEAD;
24622
0
}
24623
24624
66.6M
enum JanetParserStatus janet_parser_status(JanetParser *parser) {
24625
66.6M
    if (parser->error) return JANET_PARSE_ERROR;
24626
66.6M
    if (parser->flag) return JANET_PARSE_DEAD;
24627
66.6M
    if (parser->statecount > 1) return JANET_PARSE_PENDING;
24628
48.5k
    return JANET_PARSE_ROOT;
24629
66.6M
}
24630
24631
0
void janet_parser_flush(JanetParser *parser) {
24632
0
    parser->argcount = 0;
24633
0
    parser->statecount = 1;
24634
0
    parser->bufcount = 0;
24635
0
    parser->pending = 0;
24636
0
}
24637
24638
0
const char *janet_parser_error(JanetParser *parser) {
24639
0
    enum JanetParserStatus status = janet_parser_status(parser);
24640
0
    if (status == JANET_PARSE_ERROR) {
24641
0
        const char *e = parser->error;
24642
0
        parser->error = NULL;
24643
0
        parser->flag &= ~JANET_PARSER_GENERATED_ERROR;
24644
0
        janet_parser_flush(parser);
24645
0
        return e;
24646
0
    }
24647
0
    return NULL;
24648
0
}
24649
24650
0
Janet janet_parser_produce(JanetParser *parser) {
24651
0
    Janet ret;
24652
0
    size_t i;
24653
0
    if (parser->pending == 0) return janet_wrap_nil();
24654
0
    ret = janet_unwrap_tuple(parser->args[0])[0];
24655
0
    for (i = 1; i < parser->argcount; i++) {
24656
0
        parser->args[i - 1] = parser->args[i];
24657
0
    }
24658
0
    parser->pending--;
24659
0
    parser->argcount--;
24660
0
    parser->states[0].argn--;
24661
0
    return ret;
24662
0
}
24663
24664
0
Janet janet_parser_produce_wrapped(JanetParser *parser) {
24665
0
    Janet ret;
24666
0
    size_t i;
24667
0
    if (parser->pending == 0) return janet_wrap_nil();
24668
0
    ret = parser->args[0];
24669
0
    for (i = 1; i < parser->argcount; i++) {
24670
0
        parser->args[i - 1] = parser->args[i];
24671
0
    }
24672
0
    parser->pending--;
24673
0
    parser->argcount--;
24674
0
    parser->states[0].argn--;
24675
0
    return ret;
24676
0
}
24677
24678
6.23k
void janet_parser_init(JanetParser *parser) {
24679
6.23k
    parser->args = NULL;
24680
6.23k
    parser->states = NULL;
24681
6.23k
    parser->buf = NULL;
24682
6.23k
    parser->argcount = 0;
24683
6.23k
    parser->argcap = 0;
24684
6.23k
    parser->bufcount = 0;
24685
6.23k
    parser->bufcap = 0;
24686
6.23k
    parser->statecount = 0;
24687
6.23k
    parser->statecap = 0;
24688
6.23k
    parser->error = NULL;
24689
6.23k
    parser->lookback = -1;
24690
6.23k
    parser->line = 1;
24691
6.23k
    parser->column = 0;
24692
6.23k
    parser->pending = 0;
24693
6.23k
    parser->flag = 0;
24694
24695
6.23k
    pushstate(parser, root, PFLAG_CONTAINER);
24696
6.23k
}
24697
24698
6.23k
void janet_parser_deinit(JanetParser *parser) {
24699
6.23k
    janet_free(parser->args);
24700
6.23k
    janet_free(parser->buf);
24701
6.23k
    janet_free(parser->states);
24702
6.23k
}
24703
24704
0
void janet_parser_clone(const JanetParser *src, JanetParser *dest) {
24705
    /* Misc fields */
24706
0
    dest->flag = src->flag;
24707
0
    dest->pending = src->pending;
24708
0
    dest->lookback = src->lookback;
24709
0
    dest->line = src->line;
24710
0
    dest->column = src->column;
24711
0
    dest->error = src->error;
24712
24713
    /* Keep counts */
24714
0
    dest->argcount = src->argcount;
24715
0
    dest->bufcount = src->bufcount;
24716
0
    dest->statecount = src->statecount;
24717
24718
    /* Capacities are equal to counts */
24719
0
    dest->bufcap = dest->bufcount;
24720
0
    dest->statecap = dest->statecount;
24721
0
    dest->argcap = dest->argcount;
24722
24723
    /* Deep cloned fields */
24724
0
    dest->args = NULL;
24725
0
    dest->states = NULL;
24726
0
    dest->buf = NULL;
24727
0
    if (dest->bufcap) {
24728
0
        dest->buf = janet_malloc(dest->bufcap);
24729
0
        if (!dest->buf) goto nomem;
24730
0
        memcpy(dest->buf, src->buf, dest->bufcap);
24731
0
    }
24732
0
    if (dest->argcap) {
24733
0
        dest->args = janet_malloc(sizeof(Janet) * dest->argcap);
24734
0
        if (!dest->args) goto nomem;
24735
0
        memcpy(dest->args, src->args, dest->argcap * sizeof(Janet));
24736
0
    }
24737
0
    if (dest->statecap) {
24738
0
        dest->states = janet_malloc(sizeof(JanetParseState) * dest->statecap);
24739
0
        if (!dest->states) goto nomem;
24740
0
        memcpy(dest->states, src->states, dest->statecap * sizeof(JanetParseState));
24741
0
    }
24742
24743
0
    return;
24744
24745
0
nomem:
24746
0
    JANET_OUT_OF_MEMORY;
24747
0
}
24748
24749
0
int janet_parser_has_more(JanetParser *parser) {
24750
0
    return !!parser->pending;
24751
0
}
24752
24753
/* C functions */
24754
24755
0
static int parsermark(void *p, size_t size) {
24756
0
    size_t i;
24757
0
    JanetParser *parser = (JanetParser *)p;
24758
0
    (void) size;
24759
0
    for (i = 0; i < parser->argcount; i++) {
24760
0
        janet_mark(parser->args[i]);
24761
0
    }
24762
0
    if (parser->flag & JANET_PARSER_GENERATED_ERROR) {
24763
0
        janet_mark(janet_wrap_string((const uint8_t *) parser->error));
24764
0
    }
24765
0
    return 0;
24766
0
}
24767
24768
0
static int parsergc(void *p, size_t size) {
24769
0
    JanetParser *parser = (JanetParser *)p;
24770
0
    (void) size;
24771
0
    janet_parser_deinit(parser);
24772
0
    return 0;
24773
0
}
24774
24775
static int parserget(void *p, Janet key, Janet *out);
24776
static Janet parsernext(void *p, Janet key);
24777
24778
const JanetAbstractType janet_parser_type = {
24779
    "core/parser",
24780
    parsergc,
24781
    parsermark,
24782
    parserget,
24783
    NULL, /* put */
24784
    NULL, /* marshal */
24785
    NULL, /* unmarshal */
24786
    NULL, /* tostring */
24787
    NULL, /* compare */
24788
    NULL, /* hash */
24789
    parsernext,
24790
    JANET_ATEND_NEXT
24791
};
24792
24793
/* C Function parser */
24794
JANET_CORE_FN(cfun_parse_parser,
24795
              "(parser/new)",
24796
              "Creates and returns a new parser object. Parsers are state machines "
24797
0
              "that can receive bytes and generate a stream of values.") {
24798
0
    (void) argv;
24799
0
    janet_fixarity(argc, 0);
24800
0
    JanetParser *p = janet_abstract(&janet_parser_type, sizeof(JanetParser));
24801
0
    janet_parser_init(p);
24802
0
    return janet_wrap_abstract(p);
24803
0
}
24804
24805
JANET_CORE_FN(cfun_parse_consume,
24806
              "(parser/consume parser bytes &opt index)",
24807
              "Input bytes into the parser and parse them. Will not throw errors "
24808
              "if there is a parse error. Starts at the byte index given by `index`. Returns "
24809
0
              "the number of bytes read.") {
24810
0
    janet_arity(argc, 2, 3);
24811
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24812
0
    JanetByteView view = janet_getbytes(argv, 1);
24813
0
    if (argc == 3) {
24814
0
        int32_t offset = janet_getinteger(argv, 2);
24815
0
        if (offset < 0 || offset > view.len)
24816
0
            janet_panicf("invalid offset %d out of range [0,%d]", offset, view.len);
24817
0
        view.len -= offset;
24818
0
        view.bytes += offset;
24819
0
    }
24820
0
    int32_t i;
24821
0
    for (i = 0; i < view.len; i++) {
24822
0
        janet_parser_consume(p, view.bytes[i]);
24823
0
        switch (janet_parser_status(p)) {
24824
0
            case JANET_PARSE_ROOT:
24825
0
            case JANET_PARSE_PENDING:
24826
0
                break;
24827
0
            default:
24828
0
                return janet_wrap_integer(i + 1);
24829
0
        }
24830
0
    }
24831
0
    return janet_wrap_integer(i);
24832
0
}
24833
24834
JANET_CORE_FN(cfun_parse_eof,
24835
              "(parser/eof parser)",
24836
0
              "Indicate to the parser that the end of file was reached. This puts the parser in the :dead state.") {
24837
0
    janet_fixarity(argc, 1);
24838
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24839
0
    janet_parser_eof(p);
24840
0
    return argv[0];
24841
0
}
24842
24843
JANET_CORE_FN(cfun_parse_insert,
24844
              "(parser/insert parser value)",
24845
              "Insert a value into the parser. This means that the parser state can be manipulated "
24846
              "in between chunks of bytes. This would allow a user to add extra elements to arrays "
24847
0
              "and tuples, for example. Returns the parser.") {
24848
0
    janet_fixarity(argc, 2);
24849
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24850
0
    JanetParseState *s = p->states + p->statecount - 1;
24851
0
    if (s->consumer == tokenchar) {
24852
0
        janet_parser_consume(p, ' ');
24853
0
        p->column--;
24854
0
        s = p->states + p->statecount - 1;
24855
0
    }
24856
0
    if (s->flags & PFLAG_COMMENT) s--;
24857
0
    if (s->flags & PFLAG_CONTAINER) {
24858
0
        s->argn++;
24859
0
        if (p->statecount == 1) {
24860
0
            p->pending++;
24861
0
            Janet tup = janet_wrap_tuple(janet_tuple_n(argv + 1, 1));
24862
0
            push_arg(p, tup);
24863
0
        } else {
24864
0
            push_arg(p, argv[1]);
24865
0
        }
24866
0
    } else if (s->flags & (PFLAG_STRING | PFLAG_LONGSTRING)) {
24867
0
        const uint8_t *str = janet_to_string(argv[1]);
24868
0
        int32_t slen = janet_string_length(str);
24869
0
        size_t newcount = p->bufcount + slen;
24870
0
        if (p->bufcap < newcount) {
24871
0
            size_t newcap = 2 * newcount;
24872
0
            p->buf = janet_realloc(p->buf, newcap);
24873
0
            if (p->buf == NULL) {
24874
0
                JANET_OUT_OF_MEMORY;
24875
0
            }
24876
0
            p->bufcap = newcap;
24877
0
        }
24878
0
        safe_memcpy(p->buf + p->bufcount, str, slen);
24879
0
        p->bufcount = newcount;
24880
0
    } else {
24881
0
        janet_panic("cannot insert value into parser");
24882
0
    }
24883
0
    return argv[0];
24884
0
}
24885
24886
JANET_CORE_FN(cfun_parse_has_more,
24887
              "(parser/has-more parser)",
24888
0
              "Check if the parser has more values in the value queue.") {
24889
0
    janet_fixarity(argc, 1);
24890
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24891
0
    return janet_wrap_boolean(janet_parser_has_more(p));
24892
0
}
24893
24894
JANET_CORE_FN(cfun_parse_byte,
24895
              "(parser/byte parser b)",
24896
0
              "Input a single byte `b` into the parser byte stream. Returns the parser.") {
24897
0
    janet_fixarity(argc, 2);
24898
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24899
0
    int32_t i = janet_getinteger(argv, 1);
24900
0
    janet_parser_consume(p, 0xFF & i);
24901
0
    return argv[0];
24902
0
}
24903
24904
JANET_CORE_FN(cfun_parse_status,
24905
              "(parser/status parser)",
24906
              "Gets the current status of the parser state machine. The status will "
24907
              "be one of:\n\n"
24908
              "* :pending - a value is being parsed.\n\n"
24909
              "* :error - a parsing error was encountered.\n\n"
24910
0
              "* :root - the parser can either read more values or safely terminate.") {
24911
0
    janet_fixarity(argc, 1);
24912
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24913
0
    const char *stat = NULL;
24914
0
    switch (janet_parser_status(p)) {
24915
0
        case JANET_PARSE_PENDING:
24916
0
            stat = "pending";
24917
0
            break;
24918
0
        case JANET_PARSE_ERROR:
24919
0
            stat = "error";
24920
0
            break;
24921
0
        case JANET_PARSE_ROOT:
24922
0
            stat = "root";
24923
0
            break;
24924
0
        case JANET_PARSE_DEAD:
24925
0
            stat = "dead";
24926
0
            break;
24927
0
    }
24928
0
    return janet_ckeywordv(stat);
24929
0
}
24930
24931
JANET_CORE_FN(cfun_parse_error,
24932
              "(parser/error parser)",
24933
              "If the parser is in the error state, returns the message associated with "
24934
              "that error. Otherwise, returns nil. Also flushes the parser state and parser "
24935
              "queue, so be sure to handle everything in the queue before calling "
24936
0
              "`parser/error`.") {
24937
0
    janet_fixarity(argc, 1);
24938
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24939
0
    const char *err = janet_parser_error(p);
24940
0
    if (err) {
24941
0
        return (p->flag & JANET_PARSER_GENERATED_ERROR)
24942
0
               ? janet_wrap_string((const uint8_t *) err)
24943
0
               : janet_cstringv(err);
24944
0
    }
24945
0
    return janet_wrap_nil();
24946
0
}
24947
24948
JANET_CORE_FN(cfun_parse_produce,
24949
              "(parser/produce parser &opt wrap)",
24950
              "Dequeue the next value in the parse queue. Will return nil if "
24951
              "no parsed values are in the queue, otherwise will dequeue the "
24952
              "next value. If `wrap` is truthy, will return a 1-element tuple that "
24953
              "wraps the result. This tuple can be used for source-mapping "
24954
0
              "purposes.") {
24955
0
    janet_arity(argc, 1, 2);
24956
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24957
0
    if (argc == 2 && janet_truthy(argv[1])) {
24958
0
        return janet_parser_produce_wrapped(p);
24959
0
    } else {
24960
0
        return janet_parser_produce(p);
24961
0
    }
24962
0
}
24963
24964
JANET_CORE_FN(cfun_parse_flush,
24965
              "(parser/flush parser)",
24966
              "Clears the parser state and parse queue. Can be used to reset the parser "
24967
              "if an error was encountered. Does not reset the line and column counter, so "
24968
0
              "to begin parsing in a new context, create a new parser.") {
24969
0
    janet_fixarity(argc, 1);
24970
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24971
0
    janet_parser_flush(p);
24972
0
    return argv[0];
24973
0
}
24974
24975
JANET_CORE_FN(cfun_parse_where,
24976
              "(parser/where parser &opt line col)",
24977
              "Returns the current line number and column of the parser's internal state. If line is "
24978
              "provided, the current line number of the parser is first set to that value. If column is "
24979
0
              "also provided, the current column number of the parser is also first set to that value.") {
24980
0
    janet_arity(argc, 1, 3);
24981
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24982
0
    if (argc > 1) {
24983
0
        int32_t line = janet_getinteger(argv, 1);
24984
0
        if (line < 1)
24985
0
            janet_panicf("invalid line number %d", line);
24986
0
        p->line = (size_t) line;
24987
0
    }
24988
0
    if (argc > 2) {
24989
0
        int32_t column = janet_getinteger(argv, 2);
24990
0
        if (column < 0)
24991
0
            janet_panicf("invalid column number %d", column);
24992
0
        p->column = (size_t) column;
24993
0
    }
24994
0
    Janet *tup = janet_tuple_begin(2);
24995
0
    tup[0] = janet_wrap_integer(p->line);
24996
0
    tup[1] = janet_wrap_integer(p->column);
24997
0
    return janet_wrap_tuple(janet_tuple_end(tup));
24998
0
}
24999
25000
static Janet janet_wrap_parse_state(JanetParseState *s, Janet *args,
25001
0
                                    uint8_t *buff, uint32_t bufcount) {
25002
0
    JanetTable *state = janet_table(0);
25003
0
    const uint8_t *buffer;
25004
0
    int add_buffer = 0;
25005
0
    const char *type = NULL;
25006
25007
0
    if (s->flags & PFLAG_CONTAINER) {
25008
0
        JanetArray *container_args = janet_array(s->argn);
25009
0
        for (int32_t i = 0; i < s->argn; i++) {
25010
0
            janet_array_push(container_args, args[i]);
25011
0
        }
25012
0
        janet_table_put(state, janet_ckeywordv("args"),
25013
0
                        janet_wrap_array(container_args));
25014
0
    }
25015
25016
0
    if (s->flags & PFLAG_PARENS || s->flags & PFLAG_SQRBRACKETS) {
25017
0
        if (s->flags & PFLAG_ATSYM) {
25018
0
            type = "array";
25019
0
        } else {
25020
0
            type = "tuple";
25021
0
        }
25022
0
    } else if (s->flags & PFLAG_CURLYBRACKETS) {
25023
0
        if (s->flags & PFLAG_ATSYM) {
25024
0
            type = "table";
25025
0
        } else {
25026
0
            type = "struct";
25027
0
        }
25028
0
    } else if (s->flags & PFLAG_STRING || s->flags & PFLAG_LONGSTRING) {
25029
0
        if (s->flags & PFLAG_BUFFER) {
25030
0
            type = "buffer";
25031
0
        } else {
25032
0
            type = "string";
25033
0
        }
25034
0
        add_buffer = 1;
25035
0
    } else if (s->flags & PFLAG_COMMENT) {
25036
0
        type = "comment";
25037
0
        add_buffer = 1;
25038
0
    } else if (s->flags & PFLAG_TOKEN) {
25039
0
        type = "token";
25040
0
        add_buffer = 1;
25041
0
    } else if (s->flags & PFLAG_ATSYM) {
25042
0
        type = "at";
25043
0
    } else if (s->flags & PFLAG_READERMAC) {
25044
0
        int c = s->flags & 0xFF;
25045
0
        type = (c == '\'') ? "quote" :
25046
0
               (c == ',') ? "unquote" :
25047
0
               (c == ';') ? "splice" :
25048
0
               (c == '~') ? "quasiquote" : "<reader>";
25049
0
    } else {
25050
0
        type = "root";
25051
0
    }
25052
25053
0
    if (type) {
25054
0
        janet_table_put(state, janet_ckeywordv("type"),
25055
0
                        janet_ckeywordv(type));
25056
0
    }
25057
25058
0
    if (add_buffer) {
25059
0
        buffer = janet_string(buff, bufcount);
25060
0
        janet_table_put(state, janet_ckeywordv("buffer"), janet_wrap_string(buffer));
25061
0
    }
25062
25063
0
    janet_table_put(state, janet_ckeywordv("line"), janet_wrap_integer(s->line));
25064
0
    janet_table_put(state, janet_ckeywordv("column"), janet_wrap_integer(s->column));
25065
0
    return janet_wrap_table(state);
25066
0
}
25067
25068
struct ParserStateGetter {
25069
    const char *name;
25070
    Janet(*fn)(const JanetParser *p);
25071
};
25072
25073
0
static Janet parser_state_delimiters(const JanetParser *_p) {
25074
0
    JanetParser *p = (JanetParser *)_p;
25075
0
    size_t i;
25076
0
    const uint8_t *str;
25077
0
    size_t oldcount;
25078
0
    oldcount = p->bufcount;
25079
0
    for (i = 0; i < p->statecount; i++) {
25080
0
        JanetParseState *s = p->states + i;
25081
0
        if (s->flags & PFLAG_PARENS) {
25082
0
            push_buf(p, '(');
25083
0
        } else if (s->flags & PFLAG_SQRBRACKETS) {
25084
0
            push_buf(p, '[');
25085
0
        } else if (s->flags & PFLAG_CURLYBRACKETS) {
25086
0
            push_buf(p, '{');
25087
0
        } else if (s->flags & PFLAG_STRING) {
25088
0
            push_buf(p, '"');
25089
0
        } else if (s->flags & PFLAG_LONGSTRING) {
25090
0
            int32_t i;
25091
0
            for (i = 0; i < s->argn; i++) {
25092
0
                push_buf(p, '`');
25093
0
            }
25094
0
        }
25095
0
    }
25096
    /* avoid ptr arithmetic on NULL */
25097
0
    str = janet_string(oldcount ? p->buf + oldcount : p->buf, (int32_t)(p->bufcount - oldcount));
25098
0
    p->bufcount = oldcount;
25099
0
    return janet_wrap_string(str);
25100
0
}
25101
25102
0
static Janet parser_state_frames(const JanetParser *p) {
25103
0
    int32_t count = (int32_t) p->statecount;
25104
0
    JanetArray *states = janet_array(count);
25105
0
    states->count = count;
25106
0
    uint8_t *buf = p->buf;
25107
    /* Iterate arg stack backwards */
25108
0
    Janet *args = p->argcount ? p->args + p->argcount : p->args; /* avoid ptr arithmetic on NULL */
25109
0
    for (int32_t i = count - 1; i >= 0; --i) {
25110
0
        JanetParseState *s = p->states + i;
25111
        /* avoid ptr arithmetic on args if NULL */
25112
0
        if ((s->flags & PFLAG_CONTAINER) && s->argn) {
25113
0
            args -= s->argn;
25114
0
        }
25115
0
        states->data[i] = janet_wrap_parse_state(s, args, buf, (uint32_t) p->bufcount);
25116
0
    }
25117
0
    return janet_wrap_array(states);
25118
0
}
25119
25120
static const struct ParserStateGetter parser_state_getters[] = {
25121
    {"frames", parser_state_frames},
25122
    {"delimiters", parser_state_delimiters},
25123
    {NULL, NULL}
25124
};
25125
25126
JANET_CORE_FN(cfun_parse_state,
25127
              "(parser/state parser &opt key)",
25128
              "Returns a representation of the internal state of the parser. If a key is passed, "
25129
              "only that information about the state is returned. Allowed keys are:\n\n"
25130
              "* :delimiters - Each byte in the string represents a nested data structure. For example, "
25131
              "if the parser state is '([\"', then the parser is in the middle of parsing a "
25132
              "string inside of square brackets inside parentheses. Can be used to augment a REPL prompt.\n\n"
25133
              "* :frames - Each table in the array represents a 'frame' in the parser state. Frames "
25134
              "contain information about the start of the expression being parsed as well as the "
25135
0
              "type of that expression and some type-specific information.") {
25136
0
    janet_arity(argc, 1, 2);
25137
0
    const uint8_t *key = NULL;
25138
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25139
0
    if (argc == 2) {
25140
0
        key = janet_getkeyword(argv, 1);
25141
0
    }
25142
25143
0
    if (key) {
25144
        /* Get one result */
25145
0
        for (const struct ParserStateGetter *sg = parser_state_getters;
25146
0
                sg->name != NULL; sg++) {
25147
0
            if (janet_cstrcmp(key, sg->name)) continue;
25148
0
            return sg->fn(p);
25149
0
        }
25150
0
        janet_panicf("unexpected keyword %v", janet_wrap_keyword(key));
25151
0
        return janet_wrap_nil();
25152
0
    } else {
25153
        /* Put results in table */
25154
0
        JanetTable *tab = janet_table(0);
25155
0
        for (const struct ParserStateGetter *sg = parser_state_getters;
25156
0
                sg->name != NULL; sg++) {
25157
0
            janet_table_put(tab, janet_ckeywordv(sg->name), sg->fn(p));
25158
0
        }
25159
0
        return janet_wrap_table(tab);
25160
0
    }
25161
0
}
25162
25163
JANET_CORE_FN(cfun_parse_clone,
25164
              "(parser/clone p)",
25165
              "Creates a deep clone of a parser that is identical to the input parser. "
25166
              "This cloned parser can be used to continue parsing from a good checkpoint "
25167
0
              "if parsing later fails. Returns a new parser.") {
25168
0
    janet_fixarity(argc, 1);
25169
0
    JanetParser *src = janet_getabstract(argv, 0, &janet_parser_type);
25170
0
    JanetParser *dest = janet_abstract(&janet_parser_type, sizeof(JanetParser));
25171
0
    janet_parser_clone(src, dest);
25172
0
    return janet_wrap_abstract(dest);
25173
0
}
25174
25175
static const JanetMethod parser_methods[] = {
25176
    {"byte", cfun_parse_byte},
25177
    {"clone", cfun_parse_clone},
25178
    {"consume", cfun_parse_consume},
25179
    {"eof", cfun_parse_eof},
25180
    {"error", cfun_parse_error},
25181
    {"flush", cfun_parse_flush},
25182
    {"has-more", cfun_parse_has_more},
25183
    {"insert", cfun_parse_insert},
25184
    {"produce", cfun_parse_produce},
25185
    {"state", cfun_parse_state},
25186
    {"status", cfun_parse_status},
25187
    {"where", cfun_parse_where},
25188
    {NULL, NULL}
25189
};
25190
25191
0
static int parserget(void *p, Janet key, Janet *out) {
25192
0
    (void) p;
25193
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
25194
0
    return janet_getmethod(janet_unwrap_keyword(key), parser_methods, out);
25195
0
}
25196
25197
0
static Janet parsernext(void *p, Janet key) {
25198
0
    (void) p;
25199
0
    return janet_nextmethod(parser_methods, key);
25200
0
}
25201
25202
/* Load the library */
25203
0
void janet_lib_parse(JanetTable *env) {
25204
0
    JanetRegExt parse_cfuns[] = {
25205
0
        JANET_CORE_REG("parser/new", cfun_parse_parser),
25206
0
        JANET_CORE_REG("parser/clone", cfun_parse_clone),
25207
0
        JANET_CORE_REG("parser/has-more", cfun_parse_has_more),
25208
0
        JANET_CORE_REG("parser/produce", cfun_parse_produce),
25209
0
        JANET_CORE_REG("parser/consume", cfun_parse_consume),
25210
0
        JANET_CORE_REG("parser/byte", cfun_parse_byte),
25211
0
        JANET_CORE_REG("parser/error", cfun_parse_error),
25212
0
        JANET_CORE_REG("parser/status", cfun_parse_status),
25213
0
        JANET_CORE_REG("parser/flush", cfun_parse_flush),
25214
0
        JANET_CORE_REG("parser/state", cfun_parse_state),
25215
0
        JANET_CORE_REG("parser/where", cfun_parse_where),
25216
0
        JANET_CORE_REG("parser/eof", cfun_parse_eof),
25217
0
        JANET_CORE_REG("parser/insert", cfun_parse_insert),
25218
0
        JANET_REG_END
25219
0
    };
25220
0
    janet_core_cfuns_ext(env, NULL, parse_cfuns);
25221
0
}
25222
25223
25224
/* src/core/peg.c */
25225
#line 0 "src/core/peg.c"
25226
25227
/*
25228
* Copyright (c) 2025 Calvin Rose
25229
*
25230
* Permission is hereby granted, free of charge, to any person obtaining a copy
25231
* of this software and associated documentation files (the "Software"), to
25232
* deal in the Software without restriction, including without limitation the
25233
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
25234
* sell copies of the Software, and to permit persons to whom the Software is
25235
* furnished to do so, subject to the following conditions:
25236
*
25237
* The above copyright notice and this permission notice shall be included in
25238
* all copies or substantial portions of the Software.
25239
*
25240
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25241
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25242
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25243
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25244
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25245
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25246
* IN THE SOFTWARE.
25247
*/
25248
25249
#ifndef JANET_AMALG
25250
#include "features.h"
25251
#include <janet.h>
25252
#include <string.h>
25253
#include "util.h"
25254
#include "vector.h"
25255
#include "util.h"
25256
#endif
25257
25258
#ifdef JANET_PEG
25259
25260
/*
25261
 * Runtime
25262
 */
25263
25264
/* Hold captured patterns and match state */
25265
typedef struct {
25266
    const uint8_t *text_start;
25267
    const uint8_t *text_end;
25268
    /* text_end can be restricted by some rules, but
25269
       outer_text_end will always contain the real end of
25270
       input, which we need to generate a line mapping */
25271
    const uint8_t *outer_text_end;
25272
    const uint32_t *bytecode;
25273
    const Janet *constants;
25274
    JanetArray *captures;
25275
    JanetBuffer *scratch;
25276
    JanetBuffer *tags;
25277
    JanetArray *tagged_captures;
25278
    const Janet *extrav;
25279
    int32_t *linemap;
25280
    int32_t extrac;
25281
    int32_t depth;
25282
    int32_t linemaplen;
25283
    int32_t has_backref;
25284
    enum {
25285
        PEG_MODE_NORMAL,
25286
        PEG_MODE_ACCUMULATE
25287
    } mode;
25288
} PegState;
25289
25290
/* Allow backtrack with captures. We need
25291
 * to save state at branches, and then reload
25292
 * if one branch fails and try a new branch. */
25293
typedef struct {
25294
    int32_t cap;
25295
    int32_t tcap;
25296
    int32_t scratch;
25297
} CapState;
25298
25299
/* Save the current capture state */
25300
0
static CapState cap_save(PegState *s) {
25301
0
    CapState cs;
25302
0
    cs.scratch = s->scratch->count;
25303
0
    cs.cap = s->captures->count;
25304
0
    cs.tcap = s->tagged_captures->count;
25305
0
    return cs;
25306
0
}
25307
25308
/* Load a saved capture state in the case of failure */
25309
0
static void cap_load(PegState *s, CapState cs) {
25310
0
    s->scratch->count = cs.scratch;
25311
0
    s->captures->count = cs.cap;
25312
0
    s->tags->count = cs.tcap;
25313
0
    s->tagged_captures->count = cs.tcap;
25314
0
}
25315
25316
/* Load a saved capture state in the case of success. Keeps
25317
 * tagged captures around for backref. */
25318
0
static void cap_load_keept(PegState *s, CapState cs) {
25319
0
    s->scratch->count = cs.scratch;
25320
0
    s->captures->count = cs.cap;
25321
0
}
25322
25323
/* Add a capture */
25324
0
static void pushcap(PegState *s, Janet capture, uint32_t tag) {
25325
0
    if (s->mode == PEG_MODE_ACCUMULATE) {
25326
0
        janet_to_string_b(s->scratch, capture);
25327
0
    }
25328
0
    if (s->mode == PEG_MODE_NORMAL) {
25329
0
        janet_array_push(s->captures, capture);
25330
0
    }
25331
0
    if (s->has_backref) {
25332
0
        janet_array_push(s->tagged_captures, capture);
25333
0
        janet_buffer_push_u8(s->tags, tag);
25334
0
    }
25335
0
}
25336
25337
/* Lazily generate line map to get line and column information for PegState.
25338
 * line and column are 1-indexed. */
25339
typedef struct {
25340
    int32_t line;
25341
    int32_t col;
25342
} LineCol;
25343
0
static LineCol get_linecol_from_position(PegState *s, int32_t position) {
25344
    /* Generate if not made yet */
25345
0
    if (s->linemaplen < 0) {
25346
0
        int32_t newline_count = 0;
25347
0
        for (const uint8_t *c = s->text_start; c < s->outer_text_end; c++) {
25348
0
            if (*c == '\n') newline_count++;
25349
0
        }
25350
0
        int32_t *mem = janet_smalloc(sizeof(int32_t) * newline_count);
25351
0
        size_t index = 0;
25352
0
        for (const uint8_t *c = s->text_start; c < s->outer_text_end; c++) {
25353
0
            if (*c == '\n') mem[index++] = (int32_t)(c - s->text_start);
25354
0
        }
25355
0
        s->linemaplen = newline_count;
25356
0
        s->linemap = mem;
25357
0
    }
25358
    /* Do binary search for line. Slightly modified from classic binary search:
25359
     * - if we find that our current character is a line break, just return immediately.
25360
     *   a newline character is consider to be on the same line as the character before
25361
     *   (\n is line terminator, not line separator).
25362
     * - in the not-found case, we still want to find the greatest-indexed newline that
25363
     *   is before position. we use that to calculate the line and column.
25364
     * - in the case that lo = 0 and s->linemap[0] is still greater than position, we
25365
     *   are on the first line and our column is position + 1. */
25366
0
    int32_t hi = s->linemaplen; /* hi is greater than the actual line */
25367
0
    int32_t lo = 0; /* lo is less than or equal to the actual line */
25368
0
    LineCol ret;
25369
0
    while (lo + 1 < hi) {
25370
0
        int32_t mid = lo + (hi - lo) / 2;
25371
0
        if (s->linemap[mid] >= position) {
25372
0
            hi = mid;
25373
0
        } else {
25374
0
            lo = mid;
25375
0
        }
25376
0
    }
25377
    /* first line case */
25378
0
    if (s->linemaplen == 0 || (lo == 0 && s->linemap[0] >= position)) {
25379
0
        ret.line = 1;
25380
0
        ret.col = position + 1;
25381
0
    } else {
25382
0
        ret.line = lo + 2;
25383
0
        ret.col = position - s->linemap[lo];
25384
0
    }
25385
0
    return ret;
25386
0
}
25387
25388
/* Convert a uint64_t to a int64_t by wrapping to a maximum number of bytes */
25389
0
static int64_t peg_convert_u64_s64(uint64_t from, int width) {
25390
0
    int shift = 8 * (8 - width);
25391
0
    return ((int64_t)(from << shift)) >> shift;
25392
0
}
25393
25394
/* Prevent stack overflow */
25395
0
#define down1(s) do { \
25396
0
    if (0 == --((s)->depth)) janet_panic("peg/match recursed too deeply"); \
25397
0
} while (0)
25398
0
#define up1(s) ((s)->depth++)
25399
25400
/* Evaluate a peg rule
25401
 * Pre-conditions: s is in a valid state
25402
 * Post-conditions: If there is a match, returns a pointer to the next text.
25403
 * All captures on the capture stack are valid. If there is no match,
25404
 * returns NULL. Extra captures from successful child expressions can be
25405
 * left on the capture stack.
25406
 */
25407
static const uint8_t *peg_rule(
25408
    PegState *s,
25409
    const uint32_t *rule,
25410
0
    const uint8_t *text) {
25411
0
tail:
25412
0
    switch (*rule) {
25413
0
        default:
25414
0
            janet_panic("unexpected opcode");
25415
0
            return NULL;
25416
25417
0
        case RULE_LITERAL: {
25418
0
            uint32_t len = rule[1];
25419
0
            if (text + len > s->text_end) return NULL;
25420
0
            return memcmp(text, rule + 2, len) ? NULL : text + len;
25421
0
        }
25422
25423
0
        case RULE_NCHAR: {
25424
0
            uint32_t n = rule[1];
25425
0
            return (text + n > s->text_end) ? NULL : text + n;
25426
0
        }
25427
25428
0
        case RULE_NOTNCHAR: {
25429
0
            uint32_t n = rule[1];
25430
0
            return (text + n > s->text_end) ? text : NULL;
25431
0
        }
25432
25433
0
        case RULE_RANGE: {
25434
0
            uint8_t lo = rule[1] & 0xFF;
25435
0
            uint8_t hi = (rule[1] >> 16) & 0xFF;
25436
0
            return (text < s->text_end &&
25437
0
                    text[0] >= lo &&
25438
0
                    text[0] <= hi)
25439
0
                   ? text + 1
25440
0
                   : NULL;
25441
0
        }
25442
25443
0
        case RULE_SET: {
25444
0
            if (text >= s->text_end) return NULL;
25445
0
            uint32_t word = rule[1 + (text[0] >> 5)];
25446
0
            uint32_t mask = (uint32_t)1 << (text[0] & 0x1F);
25447
0
            return (word & mask)
25448
0
                   ? text + 1
25449
0
                   : NULL;
25450
0
        }
25451
25452
0
        case RULE_LOOK: {
25453
0
            text += ((int32_t *)rule)[1];
25454
0
            if (text < s->text_start || text > s->text_end) return NULL;
25455
0
            down1(s);
25456
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[2], text);
25457
0
            up1(s);
25458
0
            text -= ((int32_t *)rule)[1];
25459
0
            return result ? text : NULL;
25460
0
        }
25461
25462
0
        case RULE_CHOICE: {
25463
0
            uint32_t len = rule[1];
25464
0
            const uint32_t *args = rule + 2;
25465
0
            if (len == 0) return NULL;
25466
0
            down1(s);
25467
0
            CapState cs = cap_save(s);
25468
0
            for (uint32_t i = 0; i < len - 1; i++) {
25469
0
                const uint8_t *result = peg_rule(s, s->bytecode + args[i], text);
25470
0
                if (result) {
25471
0
                    up1(s);
25472
0
                    return result;
25473
0
                }
25474
0
                cap_load(s, cs);
25475
0
            }
25476
0
            up1(s);
25477
0
            rule = s->bytecode + args[len - 1];
25478
0
            goto tail;
25479
0
        }
25480
25481
0
        case RULE_SEQUENCE: {
25482
0
            uint32_t len = rule[1];
25483
0
            const uint32_t *args = rule + 2;
25484
0
            if (len == 0) return text;
25485
0
            down1(s);
25486
0
            for (uint32_t i = 0; text && i < len - 1; i++)
25487
0
                text = peg_rule(s, s->bytecode + args[i], text);
25488
0
            up1(s);
25489
0
            if (!text) return NULL;
25490
0
            rule = s->bytecode + args[len - 1];
25491
0
            goto tail;
25492
0
        }
25493
25494
0
        case RULE_IF: {
25495
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25496
0
            const uint32_t *rule_b = s->bytecode + rule[2];
25497
0
            down1(s);
25498
0
            const uint8_t *result = peg_rule(s, rule_a, text);
25499
0
            up1(s);
25500
0
            if (!result) return NULL;
25501
0
            rule = rule_b;
25502
0
            goto tail;
25503
0
        }
25504
0
        case RULE_IFNOT: {
25505
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25506
0
            const uint32_t *rule_b = s->bytecode + rule[2];
25507
0
            down1(s);
25508
0
            CapState cs = cap_save(s);
25509
0
            const uint8_t *result = peg_rule(s, rule_a, text);
25510
0
            if (!!result) {
25511
0
                up1(s);
25512
0
                return NULL;
25513
0
            } else {
25514
0
                cap_load(s, cs);
25515
0
                up1(s);
25516
0
                rule = rule_b;
25517
0
                goto tail;
25518
0
            }
25519
0
        }
25520
25521
0
        case RULE_NOT: {
25522
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25523
0
            down1(s);
25524
0
            CapState cs = cap_save(s);
25525
0
            const uint8_t *result = peg_rule(s, rule_a, text);
25526
0
            if (result) {
25527
0
                up1(s);
25528
0
                return NULL;
25529
0
            } else {
25530
0
                cap_load(s, cs);
25531
0
                up1(s);
25532
0
                return text;
25533
0
            }
25534
0
        }
25535
25536
0
        case RULE_THRU:
25537
0
        case RULE_TO: {
25538
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25539
0
            const uint8_t *next_text = NULL;
25540
0
            CapState cs = cap_save(s);
25541
0
            down1(s);
25542
0
            while (text <= s->text_end) {
25543
0
                CapState cs2 = cap_save(s);
25544
0
                next_text = peg_rule(s, rule_a, text);
25545
0
                if (next_text) {
25546
0
                    if (rule[0] == RULE_TO) cap_load(s, cs2);
25547
0
                    break;
25548
0
                }
25549
0
                cap_load(s, cs2);
25550
0
                text++;
25551
0
            }
25552
0
            up1(s);
25553
0
            if (text > s->text_end) {
25554
0
                cap_load(s, cs);
25555
0
                return NULL;
25556
0
            }
25557
0
            return rule[0] == RULE_TO ? text : next_text;
25558
0
        }
25559
25560
0
        case RULE_BETWEEN: {
25561
0
            uint32_t lo = rule[1];
25562
0
            uint32_t hi = rule[2];
25563
0
            const uint32_t *rule_a = s->bytecode + rule[3];
25564
0
            uint32_t captured = 0;
25565
0
            const uint8_t *next_text;
25566
0
            CapState cs = cap_save(s);
25567
0
            down1(s);
25568
0
            while (captured < hi) {
25569
0
                CapState cs2 = cap_save(s);
25570
0
                next_text = peg_rule(s, rule_a, text);
25571
0
                if (!next_text || ((next_text == text) && (hi == UINT32_MAX))) {
25572
0
                    cap_load(s, cs2);
25573
0
                    break;
25574
0
                }
25575
0
                captured++;
25576
0
                text = next_text;
25577
0
            }
25578
0
            up1(s);
25579
0
            if (captured < lo) {
25580
0
                cap_load(s, cs);
25581
0
                return NULL;
25582
0
            }
25583
0
            return text;
25584
0
        }
25585
25586
        /* Capturing rules */
25587
25588
0
        case RULE_GETTAG: {
25589
0
            uint32_t search = rule[1];
25590
0
            uint32_t tag = rule[2];
25591
0
            for (int32_t i = s->tags->count - 1; i >= 0; i--) {
25592
0
                if (s->tags->data[i] == search) {
25593
0
                    pushcap(s, s->tagged_captures->data[i], tag);
25594
0
                    return text;
25595
0
                }
25596
0
            }
25597
0
            return NULL;
25598
0
        }
25599
25600
0
        case RULE_POSITION: {
25601
0
            pushcap(s, janet_wrap_number((double)(text - s->text_start)), rule[1]);
25602
0
            return text;
25603
0
        }
25604
25605
0
        case RULE_LINE: {
25606
0
            LineCol lc = get_linecol_from_position(s, (int32_t)(text - s->text_start));
25607
0
            pushcap(s, janet_wrap_number((double)(lc.line)), rule[1]);
25608
0
            return text;
25609
0
        }
25610
25611
0
        case RULE_COLUMN: {
25612
0
            LineCol lc = get_linecol_from_position(s, (int32_t)(text - s->text_start));
25613
0
            pushcap(s, janet_wrap_number((double)(lc.col)), rule[1]);
25614
0
            return text;
25615
0
        }
25616
25617
0
        case RULE_ARGUMENT: {
25618
0
            int32_t index = ((int32_t *)rule)[1];
25619
0
            Janet capture = (index >= s->extrac) ? janet_wrap_nil() : s->extrav[index];
25620
0
            pushcap(s, capture, rule[2]);
25621
0
            return text;
25622
0
        }
25623
25624
0
        case RULE_CONSTANT: {
25625
0
            pushcap(s, s->constants[rule[1]], rule[2]);
25626
0
            return text;
25627
0
        }
25628
25629
0
        case RULE_CAPTURE: {
25630
0
            down1(s);
25631
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25632
0
            up1(s);
25633
0
            if (!result) return NULL;
25634
            /* Specialized pushcap - avoid intermediate string creation */
25635
0
            if (!s->has_backref && s->mode == PEG_MODE_ACCUMULATE) {
25636
0
                janet_buffer_push_bytes(s->scratch, text, (int32_t)(result - text));
25637
0
            } else {
25638
0
                uint32_t tag = rule[2];
25639
0
                pushcap(s, janet_stringv(text, (int32_t)(result - text)), tag);
25640
0
            }
25641
0
            return result;
25642
0
        }
25643
25644
0
        case RULE_CAPTURE_NUM: {
25645
0
            down1(s);
25646
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25647
0
            up1(s);
25648
0
            if (!result) return NULL;
25649
            /* check number parsing */
25650
0
            double x = 0.0;
25651
0
            int32_t base = (int32_t) rule[2];
25652
0
            if (janet_scan_number_base(text, (int32_t)(result - text), base, &x)) return NULL;
25653
            /* Specialized pushcap - avoid intermediate string creation */
25654
0
            if (!s->has_backref && s->mode == PEG_MODE_ACCUMULATE) {
25655
0
                janet_buffer_push_bytes(s->scratch, text, (int32_t)(result - text));
25656
0
            } else {
25657
0
                uint32_t tag = rule[3];
25658
0
                pushcap(s, janet_wrap_number(x), tag);
25659
0
            }
25660
0
            return result;
25661
0
        }
25662
25663
0
        case RULE_ACCUMULATE: {
25664
0
            uint32_t tag = rule[2];
25665
0
            int oldmode = s->mode;
25666
0
            if (!tag && oldmode == PEG_MODE_ACCUMULATE) {
25667
0
                rule = s->bytecode + rule[1];
25668
0
                goto tail;
25669
0
            }
25670
0
            CapState cs = cap_save(s);
25671
0
            s->mode = PEG_MODE_ACCUMULATE;
25672
0
            down1(s);
25673
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25674
0
            up1(s);
25675
0
            s->mode = oldmode;
25676
0
            if (!result) return NULL;
25677
0
            Janet cap = janet_stringv(s->scratch->data + cs.scratch,
25678
0
                                      s->scratch->count - cs.scratch);
25679
0
            cap_load_keept(s, cs);
25680
0
            pushcap(s, cap, tag);
25681
0
            return result;
25682
0
        }
25683
25684
0
        case RULE_DROP: {
25685
0
            CapState cs = cap_save(s);
25686
0
            down1(s);
25687
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25688
0
            up1(s);
25689
0
            if (!result) return NULL;
25690
0
            cap_load(s, cs);
25691
0
            return result;
25692
0
        }
25693
25694
0
        case RULE_ONLY_TAGS: {
25695
0
            CapState cs = cap_save(s);
25696
0
            down1(s);
25697
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25698
0
            up1(s);
25699
0
            if (!result) return NULL;
25700
0
            cap_load_keept(s, cs);
25701
0
            return result;
25702
0
        }
25703
25704
0
        case RULE_GROUP: {
25705
0
            uint32_t tag = rule[2];
25706
0
            int oldmode = s->mode;
25707
0
            CapState cs = cap_save(s);
25708
0
            s->mode = PEG_MODE_NORMAL;
25709
0
            down1(s);
25710
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25711
0
            up1(s);
25712
0
            s->mode = oldmode;
25713
0
            if (!result) return NULL;
25714
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
25715
0
            JanetArray *sub_captures = janet_array(num_sub_captures);
25716
0
            safe_memcpy(sub_captures->data,
25717
0
                        s->captures->data + cs.cap,
25718
0
                        sizeof(Janet) * num_sub_captures);
25719
0
            sub_captures->count = num_sub_captures;
25720
0
            cap_load_keept(s, cs);
25721
0
            pushcap(s, janet_wrap_array(sub_captures), tag);
25722
0
            return result;
25723
0
        }
25724
25725
0
        case RULE_NTH: {
25726
0
            uint32_t nth = rule[1];
25727
0
            if (nth > INT32_MAX) nth = INT32_MAX;
25728
0
            uint32_t tag = rule[3];
25729
0
            int oldmode = s->mode;
25730
0
            CapState cs = cap_save(s);
25731
0
            s->mode = PEG_MODE_NORMAL;
25732
0
            down1(s);
25733
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[2], text);
25734
0
            up1(s);
25735
0
            s->mode = oldmode;
25736
0
            if (!result) return NULL;
25737
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
25738
0
            Janet cap;
25739
0
            if (num_sub_captures > (int32_t) nth) {
25740
0
                cap = s->captures->data[cs.cap + nth];
25741
0
            } else {
25742
0
                return NULL;
25743
0
            }
25744
0
            cap_load_keept(s, cs);
25745
0
            pushcap(s, cap, tag);
25746
0
            return result;
25747
0
        }
25748
25749
0
        case RULE_SUB: {
25750
0
            const uint8_t *text_start = text;
25751
0
            const uint32_t *rule_window = s->bytecode + rule[1];
25752
0
            const uint32_t *rule_subpattern = s->bytecode + rule[2];
25753
0
            down1(s);
25754
0
            const uint8_t *window_end = peg_rule(s, rule_window, text);
25755
0
            up1(s);
25756
0
            if (!window_end) {
25757
0
                return NULL;
25758
0
            }
25759
0
            const uint8_t *saved_end = s->text_end;
25760
0
            s->text_end = window_end;
25761
0
            down1(s);
25762
0
            const uint8_t *next_text = peg_rule(s, rule_subpattern, text_start);
25763
0
            up1(s);
25764
0
            s->text_end = saved_end;
25765
25766
0
            if (!next_text) {
25767
0
                return NULL;
25768
0
            }
25769
25770
0
            return window_end;
25771
0
        }
25772
25773
0
        case RULE_TIL: {
25774
0
            const uint32_t *rule_terminus = s->bytecode + rule[1];
25775
0
            const uint32_t *rule_subpattern = s->bytecode + rule[2];
25776
25777
0
            const uint8_t *terminus_start = text;
25778
0
            const uint8_t *terminus_end = NULL;
25779
0
            down1(s);
25780
0
            while (terminus_start <= s->text_end) {
25781
0
                CapState cs2 = cap_save(s);
25782
0
                terminus_end = peg_rule(s, rule_terminus, terminus_start);
25783
0
                cap_load(s, cs2);
25784
0
                if (terminus_end) {
25785
0
                    break;
25786
0
                }
25787
0
                terminus_start++;
25788
0
            }
25789
0
            up1(s);
25790
25791
0
            if (!terminus_end) {
25792
0
                return NULL;
25793
0
            }
25794
25795
0
            const uint8_t *saved_end = s->text_end;
25796
0
            s->text_end = terminus_start;
25797
0
            down1(s);
25798
0
            const uint8_t *matched = peg_rule(s, rule_subpattern, text);
25799
0
            up1(s);
25800
0
            s->text_end = saved_end;
25801
25802
0
            if (!matched) {
25803
0
                return NULL;
25804
0
            }
25805
25806
0
            return terminus_end;
25807
0
        }
25808
25809
0
        case RULE_SPLIT: {
25810
0
            const uint8_t *saved_end = s->text_end;
25811
0
            const uint32_t *rule_separator = s->bytecode + rule[1];
25812
0
            const uint32_t *rule_subpattern = s->bytecode + rule[2];
25813
25814
0
            const uint8_t *chunk_start = text;
25815
0
            const uint8_t *chunk_end = NULL;
25816
25817
0
            while (text <= saved_end) {
25818
                /* Find next split (or end of text) */
25819
0
                CapState cs = cap_save(s);
25820
0
                down1(s);
25821
0
                while (text <= saved_end) {
25822
0
                    chunk_end = text;
25823
0
                    const uint8_t *check = peg_rule(s, rule_separator, text);
25824
0
                    cap_load(s, cs);
25825
0
                    if (check) {
25826
0
                        text = check;
25827
0
                        break;
25828
0
                    }
25829
0
                    text++;
25830
0
                }
25831
0
                up1(s);
25832
25833
                /* Match between splits */
25834
0
                s->text_end = chunk_end;
25835
0
                down1(s);
25836
0
                const uint8_t *subpattern_end = peg_rule(s, rule_subpattern, chunk_start);
25837
0
                up1(s);
25838
0
                s->text_end = saved_end;
25839
0
                if (!subpattern_end) return NULL; /* Don't match anything */
25840
25841
                /* Ensure forward progress */
25842
0
                if (text == chunk_start) return NULL;
25843
0
                chunk_start = text;
25844
0
            }
25845
25846
0
            s->text_end = saved_end;
25847
0
            return s->text_end;
25848
0
        }
25849
25850
0
        case RULE_REPLACE:
25851
0
        case RULE_MATCHTIME: {
25852
0
            uint32_t tag = rule[3];
25853
0
            int oldmode = s->mode;
25854
0
            CapState cs = cap_save(s);
25855
0
            s->mode = PEG_MODE_NORMAL;
25856
0
            down1(s);
25857
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25858
0
            up1(s);
25859
0
            s->mode = oldmode;
25860
0
            if (!result) return NULL;
25861
25862
0
            Janet cap = janet_wrap_nil();
25863
0
            Janet constant = s->constants[rule[2]];
25864
0
            switch (janet_type(constant)) {
25865
0
                default:
25866
0
                    cap = constant;
25867
0
                    break;
25868
0
                case JANET_STRUCT:
25869
0
                    if (s->captures->count) {
25870
0
                        cap = janet_struct_get(janet_unwrap_struct(constant),
25871
0
                                               s->captures->data[s->captures->count - 1]);
25872
0
                    }
25873
0
                    break;
25874
0
                case JANET_TABLE:
25875
0
                    if (s->captures->count) {
25876
0
                        cap = janet_table_get(janet_unwrap_table(constant),
25877
0
                                              s->captures->data[s->captures->count - 1]);
25878
0
                    }
25879
0
                    break;
25880
0
                case JANET_CFUNCTION:
25881
0
                    cap = janet_unwrap_cfunction(constant)(s->captures->count - cs.cap,
25882
0
                                                           s->captures->data + cs.cap);
25883
0
                    break;
25884
0
                case JANET_FUNCTION:
25885
0
                    cap = janet_call(janet_unwrap_function(constant),
25886
0
                                     s->captures->count - cs.cap,
25887
0
                                     s->captures->data + cs.cap);
25888
0
                    break;
25889
0
            }
25890
0
            cap_load_keept(s, cs);
25891
0
            if (rule[0] == RULE_MATCHTIME && !janet_truthy(cap)) return NULL;
25892
0
            pushcap(s, cap, tag);
25893
0
            return result;
25894
0
        }
25895
25896
0
        case RULE_ERROR: {
25897
0
            int oldmode = s->mode;
25898
0
            s->mode = PEG_MODE_NORMAL;
25899
0
            int32_t old_cap = s->captures->count;
25900
0
            down1(s);
25901
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25902
0
            up1(s);
25903
0
            s->mode = oldmode;
25904
0
            if (!result) return NULL;
25905
0
            if (s->captures->count > old_cap) {
25906
                /* Throw last capture */
25907
0
                janet_panicv(s->captures->data[s->captures->count - 1]);
25908
0
            } else {
25909
                /* Throw generic error */
25910
0
                int32_t start = (int32_t)(text - s->text_start);
25911
0
                LineCol lc = get_linecol_from_position(s, start);
25912
0
                janet_panicf("match error at line %d, column %d", lc.line, lc.col);
25913
0
            }
25914
0
            return NULL;
25915
0
        }
25916
25917
0
        case RULE_BACKMATCH: {
25918
0
            uint32_t search = rule[1];
25919
0
            for (int32_t i = s->tags->count - 1; i >= 0; i--) {
25920
0
                if (s->tags->data[i] == search) {
25921
0
                    Janet capture = s->tagged_captures->data[i];
25922
0
                    if (!janet_checktype(capture, JANET_STRING))
25923
0
                        return NULL;
25924
0
                    const uint8_t *bytes = janet_unwrap_string(capture);
25925
0
                    int32_t len = janet_string_length(bytes);
25926
0
                    if (text + len > s->text_end)
25927
0
                        return NULL;
25928
0
                    return memcmp(text, bytes, len) ? NULL : text + len;
25929
0
                }
25930
0
            }
25931
0
            return NULL;
25932
0
        }
25933
25934
0
        case RULE_LENPREFIX: {
25935
0
            int oldmode = s->mode;
25936
0
            s->mode = PEG_MODE_NORMAL;
25937
0
            const uint8_t *next_text;
25938
0
            CapState cs = cap_save(s);
25939
0
            down1(s);
25940
0
            next_text = peg_rule(s, s->bytecode + rule[1], text);
25941
0
            up1(s);
25942
0
            if (NULL == next_text) return NULL;
25943
0
            s->mode = oldmode;
25944
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
25945
0
            Janet lencap;
25946
0
            if (num_sub_captures <= 0 ||
25947
0
                    (lencap = s->captures->data[cs.cap], !janet_checkint(lencap))) {
25948
0
                cap_load(s, cs);
25949
0
                return NULL;
25950
0
            }
25951
0
            int32_t nrep = janet_unwrap_integer(lencap);
25952
            /* drop captures from len pattern */
25953
0
            cap_load(s, cs);
25954
0
            for (int32_t i = 0; i < nrep; i++) {
25955
0
                down1(s);
25956
0
                next_text = peg_rule(s, s->bytecode + rule[2], next_text);
25957
0
                up1(s);
25958
0
                if (NULL == next_text) {
25959
0
                    cap_load(s, cs);
25960
0
                    return NULL;
25961
0
                }
25962
0
            }
25963
0
            return next_text;
25964
0
        }
25965
25966
0
        case RULE_READINT: {
25967
0
            uint32_t tag = rule[2];
25968
0
            uint32_t signedness = rule[1] & 0x10;
25969
0
            uint32_t endianness = rule[1] & 0x20;
25970
0
            int width = (int)(rule[1] & 0xF);
25971
0
            if (text + width > s->text_end) return NULL;
25972
0
            uint64_t accum = 0;
25973
0
            if (endianness) {
25974
                /* BE */
25975
0
                for (int i = 0; i < width; i++) accum = (accum << 8) | text[i];
25976
0
            } else {
25977
                /* LE */
25978
0
                for (int i = width - 1; i >= 0; i--) accum = (accum << 8) | text[i];
25979
0
            }
25980
25981
0
            Janet capture_value;
25982
            /* We can only parse integeres of greater than 6 bytes reliable if int-types are enabled.
25983
             * Otherwise, we may lose precision, so 6 is the maximum size when int-types are disabled. */
25984
0
#ifdef JANET_INT_TYPES
25985
0
            if (width > 6) {
25986
0
                if (signedness) {
25987
0
                    capture_value = janet_wrap_s64(peg_convert_u64_s64(accum, width));
25988
0
                } else {
25989
0
                    capture_value = janet_wrap_u64(accum);
25990
0
                }
25991
0
            } else
25992
0
#endif
25993
0
            {
25994
0
                double double_value;
25995
0
                if (signedness) {
25996
0
                    double_value = (double)(peg_convert_u64_s64(accum, width));
25997
0
                } else {
25998
0
                    double_value = (double)accum;
25999
0
                }
26000
0
                capture_value = janet_wrap_number(double_value);
26001
0
            }
26002
26003
0
            pushcap(s, capture_value, tag);
26004
0
            return text + width;
26005
0
        }
26006
26007
0
        case RULE_UNREF: {
26008
0
            int32_t tcap = s->tags->count;
26009
0
            down1(s);
26010
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
26011
0
            up1(s);
26012
0
            if (!result) return NULL;
26013
0
            int32_t final_tcap = s->tags->count;
26014
            /* Truncate tagged captures to not include items of the given tag */
26015
0
            int32_t w = tcap;
26016
            /* If no tag is given, drop ALL tagged captures */
26017
0
            if (rule[2]) {
26018
0
                for (int32_t i = tcap; i < final_tcap; i++) {
26019
0
                    if (s->tags->data[i] != (0xFF & rule[2])) {
26020
0
                        s->tags->data[w] = s->tags->data[i];
26021
0
                        s->tagged_captures->data[w] = s->tagged_captures->data[i];
26022
0
                        w++;
26023
0
                    }
26024
0
                }
26025
0
            }
26026
0
            s->tags->count = w;
26027
0
            s->tagged_captures->count = w;
26028
0
            return result;
26029
0
        }
26030
26031
0
    }
26032
0
}
26033
26034
/*
26035
 * Compilation
26036
 */
26037
26038
typedef struct {
26039
    JanetTable *grammar;
26040
    JanetTable *default_grammar;
26041
    JanetTable *tags;
26042
    Janet *constants;
26043
    uint32_t *bytecode;
26044
    Janet form;
26045
    int depth;
26046
    uint32_t nexttag;
26047
    int has_backref;
26048
} Builder;
26049
26050
/* Forward declaration to allow recursion */
26051
static uint32_t peg_compile1(Builder *b, Janet peg);
26052
26053
/*
26054
 * Errors
26055
 */
26056
26057
0
static void builder_cleanup(Builder *b) {
26058
0
    janet_v_free(b->constants);
26059
0
    janet_v_free(b->bytecode);
26060
0
}
26061
26062
0
JANET_NO_RETURN static void peg_panic(Builder *b, const char *msg) {
26063
0
    builder_cleanup(b);
26064
0
    janet_panicf("grammar error in %p, %s", b->form, msg);
26065
0
}
26066
26067
0
#define peg_panicf(b,...) peg_panic((b), (const char *) janet_formatc(__VA_ARGS__))
26068
26069
0
static void peg_fixarity(Builder *b, int32_t argc, int32_t arity) {
26070
0
    if (argc != arity) {
26071
0
        peg_panicf(b, "expected %d argument%s, got %d",
26072
0
                   arity,
26073
0
                   arity == 1 ? "" : "s",
26074
0
                   argc);
26075
0
    }
26076
0
}
26077
26078
0
static void peg_arity(Builder *b, int32_t arity, int32_t min, int32_t max) {
26079
0
    if (min >= 0 && arity < min)
26080
0
        peg_panicf(b, "arity mismatch, expected at least %d, got %d", min, arity);
26081
0
    if (max >= 0 && arity > max)
26082
0
        peg_panicf(b, "arity mismatch, expected at most %d, got %d", max, arity);
26083
0
}
26084
26085
0
static const uint8_t *peg_getset(Builder *b, Janet x) {
26086
0
    if (!janet_checktype(x, JANET_STRING))
26087
0
        peg_panic(b, "expected string for character set");
26088
0
    const uint8_t *str = janet_unwrap_string(x);
26089
0
    return str;
26090
0
}
26091
26092
0
static const uint8_t *peg_getrange(Builder *b, Janet x) {
26093
0
    if (!janet_checktype(x, JANET_STRING))
26094
0
        peg_panic(b, "expected string for character range");
26095
0
    const uint8_t *str = janet_unwrap_string(x);
26096
0
    if (janet_string_length(str) != 2)
26097
0
        peg_panicf(b, "expected string to have length 2, got %v", x);
26098
0
    if (str[1] < str[0])
26099
0
        peg_panicf(b, "range %v is empty", x);
26100
0
    return str;
26101
0
}
26102
26103
0
static int32_t peg_getinteger(Builder *b, Janet x) {
26104
0
    if (!janet_checkint(x))
26105
0
        peg_panicf(b, "expected integer, got %v", x);
26106
0
    return janet_unwrap_integer(x);
26107
0
}
26108
26109
0
static int32_t peg_getnat(Builder *b, Janet x) {
26110
0
    int32_t i = peg_getinteger(b, x);
26111
0
    if (i < 0)
26112
0
        peg_panicf(b, "expected non-negative integer, got %v", x);
26113
0
    return i;
26114
0
}
26115
26116
/*
26117
 * Emission
26118
 */
26119
26120
0
static uint32_t emit_constant(Builder *b, Janet c) {
26121
0
    uint32_t cindex = (uint32_t) janet_v_count(b->constants);
26122
0
    janet_v_push(b->constants, c);
26123
0
    return cindex;
26124
0
}
26125
26126
0
static uint32_t emit_tag(Builder *b, Janet t) {
26127
0
    if (!janet_checktype(t, JANET_KEYWORD))
26128
0
        peg_panicf(b, "expected keyword for capture tag, got %v", t);
26129
0
    Janet check = janet_table_get(b->tags, t);
26130
0
    if (janet_checktype(check, JANET_NIL)) {
26131
0
        uint32_t tag = b->nexttag++;
26132
0
        if (tag > 255) {
26133
0
            peg_panic(b, "too many tags - up to 255 tags are supported per peg");
26134
0
        }
26135
0
        Janet val = janet_wrap_number(tag);
26136
0
        janet_table_put(b->tags, t, val);
26137
0
        return tag;
26138
0
    } else {
26139
0
        return (uint32_t) janet_unwrap_number(check);
26140
0
    }
26141
0
}
26142
26143
/* Reserve space in bytecode for a rule. When a special emits a rule,
26144
 * it must place that rule immediately on the bytecode stack. This lets
26145
 * the compiler know where the rule is going to be before it is complete,
26146
 * allowing recursive rules. */
26147
typedef struct {
26148
    Builder *builder;
26149
    uint32_t index;
26150
    int32_t size;
26151
} Reserve;
26152
26153
0
static Reserve reserve(Builder *b, int32_t size) {
26154
0
    Reserve r;
26155
0
    r.index = janet_v_count(b->bytecode);
26156
0
    r.builder = b;
26157
0
    r.size = size;
26158
0
    for (int32_t i = 0; i < size; i++)
26159
0
        janet_v_push(b->bytecode, 0);
26160
0
    return r;
26161
0
}
26162
26163
/* Emit a rule in the builder. Returns the index of the new rule */
26164
0
static void emit_rule(Reserve r, int32_t op, int32_t n, const uint32_t *body) {
26165
0
    janet_assert(r.size == n + 1, "bad reserve");
26166
0
    r.builder->bytecode[r.index] = op;
26167
0
    memcpy(r.builder->bytecode + r.index + 1, body, n * sizeof(uint32_t));
26168
0
}
26169
26170
/* For RULE_LITERAL */
26171
0
static void emit_bytes(Builder *b, uint32_t op, int32_t len, const uint8_t *bytes) {
26172
0
    uint32_t next_rule = janet_v_count(b->bytecode);
26173
0
    janet_v_push(b->bytecode, op);
26174
0
    janet_v_push(b->bytecode, len);
26175
0
    int32_t words = ((len + 3) >> 2);
26176
0
    for (int32_t i = 0; i < words; i++)
26177
0
        janet_v_push(b->bytecode, 0);
26178
0
    memcpy(b->bytecode + next_rule + 2, bytes, len);
26179
0
}
26180
26181
/* For fixed arity rules of arities 1, 2, and 3 */
26182
0
static void emit_1(Reserve r, uint32_t op, uint32_t arg) {
26183
0
    emit_rule(r, op, 1, &arg);
26184
0
}
26185
0
static void emit_2(Reserve r, uint32_t op, uint32_t arg1, uint32_t arg2) {
26186
0
    uint32_t arr[2] = {arg1, arg2};
26187
0
    emit_rule(r, op, 2, arr);
26188
0
}
26189
0
static void emit_3(Reserve r, uint32_t op, uint32_t arg1, uint32_t arg2, uint32_t arg3) {
26190
0
    uint32_t arr[3] = {arg1, arg2, arg3};
26191
0
    emit_rule(r, op, 3, arr);
26192
0
}
26193
26194
/*
26195
 * Specials
26196
 */
26197
26198
0
static void bitmap_set(uint32_t *bitmap, uint8_t c) {
26199
0
    bitmap[c >> 5] |= ((uint32_t)1) << (c & 0x1F);
26200
0
}
26201
26202
0
static void spec_range(Builder *b, int32_t argc, const Janet *argv) {
26203
0
    peg_arity(b, argc, 1, -1);
26204
0
    if (argc == 1) {
26205
0
        Reserve r = reserve(b, 2);
26206
0
        const uint8_t *str = peg_getrange(b, argv[0]);
26207
0
        uint32_t arg = str[0] | (str[1] << 16);
26208
0
        emit_1(r, RULE_RANGE, arg);
26209
0
    } else {
26210
        /* Compile as a set */
26211
0
        Reserve r = reserve(b, 9);
26212
0
        uint32_t bitmap[8] = {0};
26213
0
        for (int32_t i = 0; i < argc; i++) {
26214
0
            const uint8_t *str = peg_getrange(b, argv[i]);
26215
0
            for (uint32_t c = str[0]; c <= str[1]; c++)
26216
0
                bitmap_set(bitmap, c);
26217
0
        }
26218
0
        emit_rule(r, RULE_SET, 8, bitmap);
26219
0
    }
26220
0
}
26221
26222
0
static void spec_set(Builder *b, int32_t argc, const Janet *argv) {
26223
0
    peg_fixarity(b, argc, 1);
26224
0
    Reserve r = reserve(b, 9);
26225
0
    const uint8_t *str = peg_getset(b, argv[0]);
26226
0
    uint32_t bitmap[8] = {0};
26227
0
    for (int32_t i = 0; i < janet_string_length(str); i++)
26228
0
        bitmap_set(bitmap, str[i]);
26229
0
    emit_rule(r, RULE_SET, 8, bitmap);
26230
0
}
26231
26232
0
static void spec_look(Builder *b, int32_t argc, const Janet *argv) {
26233
0
    peg_arity(b, argc, 1, 2);
26234
0
    Reserve r = reserve(b, 3);
26235
0
    int32_t rulearg = argc == 2 ? 1 : 0;
26236
0
    int32_t offset = argc == 2 ? peg_getinteger(b, argv[0]) : 0;
26237
0
    uint32_t subrule = peg_compile1(b, argv[rulearg]);
26238
0
    emit_2(r, RULE_LOOK, (uint32_t) offset, subrule);
26239
0
}
26240
26241
/* Rule of the form [len, rules...] */
26242
0
static void spec_variadic(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26243
0
    uint32_t rule = janet_v_count(b->bytecode);
26244
0
    janet_v_push(b->bytecode, op);
26245
0
    janet_v_push(b->bytecode, argc);
26246
0
    for (int32_t i = 0; i < argc; i++)
26247
0
        janet_v_push(b->bytecode, 0);
26248
0
    for (int32_t i = 0; i < argc; i++) {
26249
0
        uint32_t rulei = peg_compile1(b, argv[i]);
26250
0
        b->bytecode[rule + 2 + i] = rulei;
26251
0
    }
26252
0
}
26253
26254
0
static void spec_choice(Builder *b, int32_t argc, const Janet *argv) {
26255
0
    spec_variadic(b, argc, argv, RULE_CHOICE);
26256
0
}
26257
0
static void spec_sequence(Builder *b, int32_t argc, const Janet *argv) {
26258
0
    spec_variadic(b, argc, argv, RULE_SEQUENCE);
26259
0
}
26260
26261
/* For (if a b) and (if-not a b) */
26262
0
static void spec_branch(Builder *b, int32_t argc, const Janet *argv, uint32_t rule) {
26263
0
    peg_fixarity(b, argc, 2);
26264
0
    Reserve r = reserve(b, 3);
26265
0
    uint32_t rule_a = peg_compile1(b, argv[0]);
26266
0
    uint32_t rule_b = peg_compile1(b, argv[1]);
26267
0
    emit_2(r, rule, rule_a, rule_b);
26268
0
}
26269
26270
0
static void spec_if(Builder *b, int32_t argc, const Janet *argv) {
26271
0
    spec_branch(b, argc, argv, RULE_IF);
26272
0
}
26273
0
static void spec_ifnot(Builder *b, int32_t argc, const Janet *argv) {
26274
0
    spec_branch(b, argc, argv, RULE_IFNOT);
26275
0
}
26276
0
static void spec_lenprefix(Builder *b, int32_t argc, const Janet *argv) {
26277
0
    spec_branch(b, argc, argv, RULE_LENPREFIX);
26278
0
}
26279
26280
0
static void spec_between(Builder *b, int32_t argc, const Janet *argv) {
26281
0
    peg_fixarity(b, argc, 3);
26282
0
    Reserve r = reserve(b, 4);
26283
0
    int32_t lo = peg_getnat(b, argv[0]);
26284
0
    int32_t hi = peg_getnat(b, argv[1]);
26285
0
    uint32_t subrule = peg_compile1(b, argv[2]);
26286
0
    emit_3(r, RULE_BETWEEN, lo, hi, subrule);
26287
0
}
26288
26289
0
static void spec_repeater(Builder *b, int32_t argc, const Janet *argv, int32_t min) {
26290
0
    peg_fixarity(b, argc, 1);
26291
0
    Reserve r = reserve(b, 4);
26292
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26293
0
    emit_3(r, RULE_BETWEEN, min, UINT32_MAX, subrule);
26294
0
}
26295
26296
0
static void spec_some(Builder *b, int32_t argc, const Janet *argv) {
26297
0
    spec_repeater(b, argc, argv, 1);
26298
0
}
26299
0
static void spec_any(Builder *b, int32_t argc, const Janet *argv) {
26300
0
    spec_repeater(b, argc, argv, 0);
26301
0
}
26302
26303
0
static void spec_atleast(Builder *b, int32_t argc, const Janet *argv) {
26304
0
    peg_fixarity(b, argc, 2);
26305
0
    Reserve r = reserve(b, 4);
26306
0
    int32_t n = peg_getnat(b, argv[0]);
26307
0
    uint32_t subrule = peg_compile1(b, argv[1]);
26308
0
    emit_3(r, RULE_BETWEEN, n, UINT32_MAX, subrule);
26309
0
}
26310
26311
0
static void spec_atmost(Builder *b, int32_t argc, const Janet *argv) {
26312
0
    peg_fixarity(b, argc, 2);
26313
0
    Reserve r = reserve(b, 4);
26314
0
    int32_t n = peg_getnat(b, argv[0]);
26315
0
    uint32_t subrule = peg_compile1(b, argv[1]);
26316
0
    emit_3(r, RULE_BETWEEN, 0, n, subrule);
26317
0
}
26318
26319
0
static void spec_opt(Builder *b, int32_t argc, const Janet *argv) {
26320
0
    peg_fixarity(b, argc, 1);
26321
0
    Reserve r = reserve(b, 4);
26322
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26323
0
    emit_3(r, RULE_BETWEEN, 0, 1, subrule);
26324
0
}
26325
26326
0
static void spec_repeat(Builder *b, int32_t argc, const Janet *argv) {
26327
0
    peg_fixarity(b, argc, 2);
26328
0
    Reserve r = reserve(b, 4);
26329
0
    int32_t n = peg_getnat(b, argv[0]);
26330
0
    uint32_t subrule = peg_compile1(b, argv[1]);
26331
0
    emit_3(r, RULE_BETWEEN, n, n, subrule);
26332
0
}
26333
26334
/* Rule of the form [rule] */
26335
0
static void spec_onerule(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26336
0
    peg_fixarity(b, argc, 1);
26337
0
    Reserve r = reserve(b, 2);
26338
0
    uint32_t rule = peg_compile1(b, argv[0]);
26339
0
    emit_1(r, op, rule);
26340
0
}
26341
26342
0
static void spec_not(Builder *b, int32_t argc, const Janet *argv) {
26343
0
    spec_onerule(b, argc, argv, RULE_NOT);
26344
0
}
26345
0
static void spec_error(Builder *b, int32_t argc, const Janet *argv) {
26346
0
    if (argc == 0) {
26347
0
        Reserve r = reserve(b, 2);
26348
0
        uint32_t rule = peg_compile1(b, janet_wrap_number(0));
26349
0
        emit_1(r, RULE_ERROR, rule);
26350
0
    } else {
26351
0
        spec_onerule(b, argc, argv, RULE_ERROR);
26352
0
    }
26353
0
}
26354
0
static void spec_to(Builder *b, int32_t argc, const Janet *argv) {
26355
0
    spec_onerule(b, argc, argv, RULE_TO);
26356
0
}
26357
0
static void spec_thru(Builder *b, int32_t argc, const Janet *argv) {
26358
0
    spec_onerule(b, argc, argv, RULE_THRU);
26359
0
}
26360
0
static void spec_drop(Builder *b, int32_t argc, const Janet *argv) {
26361
0
    spec_onerule(b, argc, argv, RULE_DROP);
26362
0
}
26363
0
static void spec_only_tags(Builder *b, int32_t argc, const Janet *argv) {
26364
0
    spec_onerule(b, argc, argv, RULE_ONLY_TAGS);
26365
0
}
26366
26367
/* Rule of the form [rule, tag] */
26368
0
static void spec_cap1(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26369
0
    peg_arity(b, argc, 1, 2);
26370
0
    Reserve r = reserve(b, 3);
26371
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26372
0
    uint32_t rule = peg_compile1(b, argv[0]);
26373
0
    emit_2(r, op, rule, tag);
26374
0
}
26375
26376
0
static void spec_capture(Builder *b, int32_t argc, const Janet *argv) {
26377
0
    spec_cap1(b, argc, argv, RULE_CAPTURE);
26378
0
}
26379
0
static void spec_accumulate(Builder *b, int32_t argc, const Janet *argv) {
26380
0
    spec_cap1(b, argc, argv, RULE_ACCUMULATE);
26381
0
}
26382
0
static void spec_group(Builder *b, int32_t argc, const Janet *argv) {
26383
0
    spec_cap1(b, argc, argv, RULE_GROUP);
26384
0
}
26385
0
static void spec_unref(Builder *b, int32_t argc, const Janet *argv) {
26386
0
    spec_cap1(b, argc, argv, RULE_UNREF);
26387
0
}
26388
26389
0
static void spec_nth(Builder *b, int32_t argc, const Janet *argv) {
26390
0
    peg_arity(b, argc, 2, 3);
26391
0
    Reserve r = reserve(b, 4);
26392
0
    uint32_t nth = peg_getnat(b, argv[0]);
26393
0
    uint32_t rule = peg_compile1(b, argv[1]);
26394
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26395
0
    emit_3(r, RULE_NTH, nth, rule, tag);
26396
0
}
26397
26398
0
static void spec_capture_number(Builder *b, int32_t argc, const Janet *argv) {
26399
0
    peg_arity(b, argc, 1, 3);
26400
0
    Reserve r = reserve(b, 4);
26401
0
    uint32_t base = 0;
26402
0
    if (argc >= 2) {
26403
0
        if (!janet_checktype(argv[1], JANET_NIL)) {
26404
0
            if (!janet_checkint(argv[1])) goto error;
26405
0
            base = (uint32_t) janet_unwrap_integer(argv[1]);
26406
0
            if (base < 2 || base > 36) goto error;
26407
0
        }
26408
0
    }
26409
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26410
0
    uint32_t rule = peg_compile1(b, argv[0]);
26411
0
    emit_3(r, RULE_CAPTURE_NUM, rule, base, tag);
26412
0
    return;
26413
0
error:
26414
0
    peg_panicf(b, "expected integer between 2 and 36, got %v", argv[1]);
26415
0
}
26416
26417
0
static void spec_reference(Builder *b, int32_t argc, const Janet *argv) {
26418
0
    peg_arity(b, argc, 1, 2);
26419
0
    Reserve r = reserve(b, 3);
26420
0
    uint32_t search = emit_tag(b, argv[0]);
26421
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26422
0
    b->has_backref = 1;
26423
0
    emit_2(r, RULE_GETTAG, search, tag);
26424
0
}
26425
26426
0
static void spec_tag1(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26427
0
    peg_arity(b, argc, 0, 1);
26428
0
    Reserve r = reserve(b, 2);
26429
0
    uint32_t tag = (argc) ? emit_tag(b, argv[0]) : 0;
26430
0
    (void) argv;
26431
0
    emit_1(r, op, tag);
26432
0
}
26433
26434
0
static void spec_position(Builder *b, int32_t argc, const Janet *argv) {
26435
0
    spec_tag1(b, argc, argv, RULE_POSITION);
26436
0
}
26437
0
static void spec_line(Builder *b, int32_t argc, const Janet *argv) {
26438
0
    spec_tag1(b, argc, argv, RULE_LINE);
26439
0
}
26440
0
static void spec_column(Builder *b, int32_t argc, const Janet *argv) {
26441
0
    spec_tag1(b, argc, argv, RULE_COLUMN);
26442
0
}
26443
26444
0
static void spec_backmatch(Builder *b, int32_t argc, const Janet *argv) {
26445
0
    b->has_backref = 1;
26446
0
    spec_tag1(b, argc, argv, RULE_BACKMATCH);
26447
0
}
26448
26449
0
static void spec_argument(Builder *b, int32_t argc, const Janet *argv) {
26450
0
    peg_arity(b, argc, 1, 2);
26451
0
    Reserve r = reserve(b, 3);
26452
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26453
0
    int32_t index = peg_getnat(b, argv[0]);
26454
0
    emit_2(r, RULE_ARGUMENT, index, tag);
26455
0
}
26456
26457
0
static void spec_constant(Builder *b, int32_t argc, const Janet *argv) {
26458
0
    janet_arity(argc, 1, 2);
26459
0
    Reserve r = reserve(b, 3);
26460
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26461
0
    emit_2(r, RULE_CONSTANT, emit_constant(b, argv[0]), tag);
26462
0
}
26463
26464
0
static void spec_replace(Builder *b, int32_t argc, const Janet *argv) {
26465
0
    peg_arity(b, argc, 2, 3);
26466
0
    Reserve r = reserve(b, 4);
26467
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26468
0
    uint32_t constant = emit_constant(b, argv[1]);
26469
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26470
0
    emit_3(r, RULE_REPLACE, subrule, constant, tag);
26471
0
}
26472
26473
0
static void spec_matchtime(Builder *b, int32_t argc, const Janet *argv) {
26474
0
    peg_arity(b, argc, 2, 3);
26475
0
    Reserve r = reserve(b, 4);
26476
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26477
0
    Janet fun = argv[1];
26478
0
    if (!janet_checktype(fun, JANET_FUNCTION) &&
26479
0
            !janet_checktype(fun, JANET_CFUNCTION)) {
26480
0
        peg_panicf(b, "expected function or cfunction, got %v", fun);
26481
0
    }
26482
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26483
0
    uint32_t cindex = emit_constant(b, fun);
26484
0
    emit_3(r, RULE_MATCHTIME, subrule, cindex, tag);
26485
0
}
26486
26487
0
static void spec_sub(Builder *b, int32_t argc, const Janet *argv) {
26488
0
    peg_fixarity(b, argc, 2);
26489
0
    Reserve r = reserve(b, 3);
26490
0
    uint32_t subrule1 = peg_compile1(b, argv[0]);
26491
0
    uint32_t subrule2 = peg_compile1(b, argv[1]);
26492
0
    emit_2(r, RULE_SUB, subrule1, subrule2);
26493
0
}
26494
26495
0
static void spec_til(Builder *b, int32_t argc, const Janet *argv) {
26496
0
    peg_fixarity(b, argc, 2);
26497
0
    Reserve r = reserve(b, 3);
26498
0
    uint32_t subrule1 = peg_compile1(b, argv[0]);
26499
0
    uint32_t subrule2 = peg_compile1(b, argv[1]);
26500
0
    emit_2(r, RULE_TIL, subrule1, subrule2);
26501
0
}
26502
26503
0
static void spec_split(Builder *b, int32_t argc, const Janet *argv) {
26504
0
    peg_fixarity(b, argc, 2);
26505
0
    Reserve r = reserve(b, 3);
26506
0
    uint32_t subrule1 = peg_compile1(b, argv[0]);
26507
0
    uint32_t subrule2 = peg_compile1(b, argv[1]);
26508
0
    emit_2(r, RULE_SPLIT, subrule1, subrule2);
26509
0
}
26510
26511
#ifdef JANET_INT_TYPES
26512
0
#define JANET_MAX_READINT_WIDTH 8
26513
#else
26514
#define JANET_MAX_READINT_WIDTH 6
26515
#endif
26516
26517
0
static void spec_readint(Builder *b, int32_t argc, const Janet *argv, uint32_t mask) {
26518
0
    peg_arity(b, argc, 1, 2);
26519
0
    Reserve r = reserve(b, 3);
26520
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26521
0
    int32_t width = peg_getnat(b, argv[0]);
26522
0
    if ((width < 0) || (width > JANET_MAX_READINT_WIDTH)) {
26523
0
        peg_panicf(b, "width must be between 0 and %d, got %d", JANET_MAX_READINT_WIDTH, width);
26524
0
    }
26525
0
    emit_2(r, RULE_READINT, mask | ((uint32_t) width), tag);
26526
0
}
26527
26528
0
static void spec_uint_le(Builder *b, int32_t argc, const Janet *argv) {
26529
0
    spec_readint(b, argc, argv, 0x0u);
26530
0
}
26531
0
static void spec_int_le(Builder *b, int32_t argc, const Janet *argv) {
26532
0
    spec_readint(b, argc, argv, 0x10u);
26533
0
}
26534
0
static void spec_uint_be(Builder *b, int32_t argc, const Janet *argv) {
26535
0
    spec_readint(b, argc, argv, 0x20u);
26536
0
}
26537
0
static void spec_int_be(Builder *b, int32_t argc, const Janet *argv) {
26538
0
    spec_readint(b, argc, argv, 0x30u);
26539
0
}
26540
26541
/* Special compiler form */
26542
typedef void (*Special)(Builder *b, int32_t argc, const Janet *argv);
26543
typedef struct {
26544
    const char *name;
26545
    Special special;
26546
} SpecialPair;
26547
26548
/* Keep in lexical order (vim :sort works well) */
26549
static const SpecialPair peg_specials[] = {
26550
    {"!", spec_not},
26551
    {"$", spec_position},
26552
    {"%", spec_accumulate},
26553
    {"*", spec_sequence},
26554
    {"+", spec_choice},
26555
    {"->", spec_reference},
26556
    {"/", spec_replace},
26557
    {"<-", spec_capture},
26558
    {">", spec_look},
26559
    {"?", spec_opt},
26560
    {"accumulate", spec_accumulate},
26561
    {"any", spec_any},
26562
    {"argument", spec_argument},
26563
    {"at-least", spec_atleast},
26564
    {"at-most", spec_atmost},
26565
    {"backmatch", spec_backmatch},
26566
    {"backref", spec_reference},
26567
    {"between", spec_between},
26568
    {"capture", spec_capture},
26569
    {"choice", spec_choice},
26570
    {"cmt", spec_matchtime},
26571
    {"column", spec_column},
26572
    {"constant", spec_constant},
26573
    {"drop", spec_drop},
26574
    {"error", spec_error},
26575
    {"group", spec_group},
26576
    {"if", spec_if},
26577
    {"if-not", spec_ifnot},
26578
    {"int", spec_int_le},
26579
    {"int-be", spec_int_be},
26580
    {"lenprefix", spec_lenprefix},
26581
    {"line", spec_line},
26582
    {"look", spec_look},
26583
    {"not", spec_not},
26584
    {"nth", spec_nth},
26585
    {"number", spec_capture_number},
26586
    {"only-tags", spec_only_tags},
26587
    {"opt", spec_opt},
26588
    {"position", spec_position},
26589
    {"quote", spec_capture},
26590
    {"range", spec_range},
26591
    {"repeat", spec_repeat},
26592
    {"replace", spec_replace},
26593
    {"sequence", spec_sequence},
26594
    {"set", spec_set},
26595
    {"some", spec_some},
26596
    {"split", spec_split},
26597
    {"sub", spec_sub},
26598
    {"thru", spec_thru},
26599
    {"til", spec_til},
26600
    {"to", spec_to},
26601
    {"uint", spec_uint_le},
26602
    {"uint-be", spec_uint_be},
26603
    {"unref", spec_unref},
26604
};
26605
26606
/* Compile a janet value into a rule and return the rule index. */
26607
0
static uint32_t peg_compile1(Builder *b, Janet peg) {
26608
26609
    /* Keep track of the form being compiled for error purposes */
26610
0
    Janet old_form = b->form;
26611
0
    JanetTable *old_grammar = b->grammar;
26612
0
    b->form = peg;
26613
26614
    /* Resolve keyword references */
26615
0
    int i = JANET_RECURSION_GUARD;
26616
0
    JanetTable *grammar = old_grammar;
26617
0
    for (; i > 0 && janet_checktype(peg, JANET_KEYWORD); --i) {
26618
0
        Janet nextPeg = janet_table_get_ex(grammar, peg, &grammar);
26619
0
        if (!grammar || janet_checktype(nextPeg, JANET_NIL)) {
26620
0
            nextPeg = (b->default_grammar == NULL)
26621
0
                      ? janet_wrap_nil()
26622
0
                      : janet_table_get(b->default_grammar, peg);
26623
0
            if (janet_checktype(nextPeg, JANET_NIL)) {
26624
0
                peg_panic(b, "unknown rule");
26625
0
            }
26626
0
        }
26627
0
        peg = nextPeg;
26628
0
        b->form = peg;
26629
0
        b->grammar = grammar;
26630
0
    }
26631
0
    if (i == 0)
26632
0
        peg_panic(b, "reference chain too deep");
26633
26634
    /* Check cache - for tuples we check only the local cache, as
26635
     * in a different grammar, the same tuple can compile to a different
26636
     * rule - for example, (+ :a :b) depends on whatever :a and :b are bound to. */
26637
0
    Janet check = janet_checktype(peg, JANET_TUPLE)
26638
0
                  ? janet_table_rawget(grammar, peg)
26639
0
                  : janet_table_get(grammar, peg);
26640
0
    if (!janet_checktype(check, JANET_NIL)) {
26641
0
        b->form = old_form;
26642
0
        b->grammar = old_grammar;
26643
0
        return (uint32_t) janet_unwrap_number(check);
26644
0
    }
26645
26646
    /* Check depth */
26647
0
    if (b->depth-- == 0)
26648
0
        peg_panic(b, "peg grammar recursed too deeply");
26649
26650
    /* The final rule to return */
26651
0
    uint32_t rule = janet_v_count(b->bytecode);
26652
26653
    /* Add to cache. Do not cache structs, as we don't yet know
26654
     * what rule they will return! We can just as effectively cache
26655
     * the structs main rule. */
26656
0
    if (!janet_checktype(peg, JANET_STRUCT)) {
26657
0
        JanetTable *which_grammar = grammar;
26658
        /* If we are a primitive pattern, add to the global cache (root grammar table) */
26659
0
        if (!janet_checktype(peg, JANET_TUPLE)) {
26660
0
            while (which_grammar->proto)
26661
0
                which_grammar = which_grammar->proto;
26662
0
        }
26663
0
        janet_table_put(which_grammar, peg, janet_wrap_number(rule));
26664
0
    }
26665
26666
0
    switch (janet_type(peg)) {
26667
0
        default:
26668
0
            peg_panic(b, "unexpected peg source");
26669
0
            return 0;
26670
26671
0
        case JANET_BOOLEAN: {
26672
0
            int n = janet_unwrap_boolean(peg);
26673
0
            Reserve r = reserve(b, 2);
26674
0
            emit_1(r, n ? RULE_NCHAR : RULE_NOTNCHAR, 0);
26675
0
            break;
26676
0
        }
26677
0
        case JANET_NUMBER: {
26678
0
            int32_t n = peg_getinteger(b, peg);
26679
0
            Reserve r = reserve(b, 2);
26680
0
            if (n < 0) {
26681
0
                emit_1(r, RULE_NOTNCHAR, -n);
26682
0
            } else {
26683
0
                emit_1(r, RULE_NCHAR, n);
26684
0
            }
26685
0
            break;
26686
0
        }
26687
0
        case JANET_STRING: {
26688
0
            const uint8_t *str = janet_unwrap_string(peg);
26689
0
            int32_t len = janet_string_length(str);
26690
0
            emit_bytes(b, RULE_LITERAL, len, str);
26691
0
            break;
26692
0
        }
26693
0
        case JANET_BUFFER: {
26694
0
            const JanetBuffer *buf = janet_unwrap_buffer(peg);
26695
0
            emit_bytes(b, RULE_LITERAL, buf->count, buf->data);
26696
0
            break;
26697
0
        }
26698
0
        case JANET_TABLE: {
26699
            /* Build grammar table */
26700
0
            JanetTable *new_grammar = janet_table_clone(janet_unwrap_table(peg));
26701
0
            new_grammar->proto = grammar;
26702
0
            b->grammar = grammar = new_grammar;
26703
            /* Run the main rule */
26704
0
            Janet main_rule = janet_table_rawget(grammar, janet_ckeywordv("main"));
26705
0
            if (janet_checktype(main_rule, JANET_NIL))
26706
0
                peg_panic(b, "grammar requires :main rule");
26707
0
            rule = peg_compile1(b, main_rule);
26708
0
            break;
26709
0
        }
26710
0
        case JANET_STRUCT: {
26711
            /* Build grammar table */
26712
0
            const JanetKV *st = janet_unwrap_struct(peg);
26713
0
            JanetTable *new_grammar = janet_table(2 * janet_struct_capacity(st));
26714
0
            for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
26715
0
                if (janet_checktype(st[i].key, JANET_KEYWORD)) {
26716
0
                    janet_table_put(new_grammar, st[i].key, st[i].value);
26717
0
                }
26718
0
            }
26719
0
            new_grammar->proto = grammar;
26720
0
            b->grammar = grammar = new_grammar;
26721
            /* Run the main rule */
26722
0
            Janet main_rule = janet_table_rawget(grammar, janet_ckeywordv("main"));
26723
0
            if (janet_checktype(main_rule, JANET_NIL))
26724
0
                peg_panic(b, "grammar requires :main rule");
26725
0
            rule = peg_compile1(b, main_rule);
26726
0
            break;
26727
0
        }
26728
0
        case JANET_TUPLE: {
26729
0
            const Janet *tup = janet_unwrap_tuple(peg);
26730
0
            int32_t len = janet_tuple_length(tup);
26731
0
            if (len == 0) peg_panic(b, "tuple in grammar must have non-zero length");
26732
0
            if (janet_checkint(tup[0])) {
26733
0
                int32_t n = janet_unwrap_integer(tup[0]);
26734
0
                if (n < 0) {
26735
0
                    peg_panicf(b, "expected non-negative integer, got %d", n);
26736
0
                }
26737
0
                spec_repeat(b, len, tup);
26738
0
                break;
26739
0
            }
26740
0
            if (!janet_checktype(tup[0], JANET_SYMBOL))
26741
0
                peg_panicf(b, "expected grammar command, found %v", tup[0]);
26742
0
            const uint8_t *sym = janet_unwrap_symbol(tup[0]);
26743
0
            const SpecialPair *sp = janet_strbinsearch(
26744
0
                                        &peg_specials,
26745
0
                                        sizeof(peg_specials) / sizeof(SpecialPair),
26746
0
                                        sizeof(SpecialPair),
26747
0
                                        sym);
26748
0
            if (sp) {
26749
0
                sp->special(b, len - 1, tup + 1);
26750
0
            } else {
26751
0
                peg_panicf(b, "unknown special %S", sym);
26752
0
            }
26753
0
            break;
26754
0
        }
26755
0
    }
26756
26757
    /* Increase depth again */
26758
0
    b->depth++;
26759
0
    b->form = old_form;
26760
0
    b->grammar = old_grammar;
26761
0
    return rule;
26762
0
}
26763
26764
/*
26765
 * Post-Compilation
26766
 */
26767
26768
0
static int peg_mark(void *p, size_t size) {
26769
0
    (void) size;
26770
0
    JanetPeg *peg = (JanetPeg *)p;
26771
0
    if (NULL != peg->constants)
26772
0
        for (uint32_t i = 0; i < peg->num_constants; i++)
26773
0
            janet_mark(peg->constants[i]);
26774
0
    return 0;
26775
0
}
26776
26777
0
static void peg_marshal(void *p, JanetMarshalContext *ctx) {
26778
0
    JanetPeg *peg = (JanetPeg *)p;
26779
0
    janet_marshal_size(ctx, peg->bytecode_len);
26780
0
    janet_marshal_int(ctx, (int32_t)peg->num_constants);
26781
0
    janet_marshal_abstract(ctx, p);
26782
0
    for (size_t i = 0; i < peg->bytecode_len; i++)
26783
0
        janet_marshal_int(ctx, (int32_t) peg->bytecode[i]);
26784
0
    for (uint32_t j = 0; j < peg->num_constants; j++)
26785
0
        janet_marshal_janet(ctx, peg->constants[j]);
26786
0
}
26787
26788
/* Used to ensure that if we place several arrays in one memory chunk, each
26789
 * array will be correctly aligned */
26790
0
static size_t size_padded(size_t offset, size_t size) {
26791
0
    size_t x = size + offset - 1;
26792
0
    return x - (x % size);
26793
0
}
26794
26795
0
static void *peg_unmarshal(JanetMarshalContext *ctx) {
26796
0
    size_t bytecode_len = janet_unmarshal_size(ctx);
26797
0
    uint32_t num_constants = (uint32_t) janet_unmarshal_int(ctx);
26798
26799
    /* Calculate offsets. Should match those in make_peg */
26800
0
    size_t bytecode_start = size_padded(sizeof(JanetPeg), sizeof(uint32_t));
26801
0
    size_t bytecode_size = bytecode_len * sizeof(uint32_t);
26802
0
    size_t constants_start = size_padded(bytecode_start + bytecode_size, sizeof(Janet));
26803
0
    size_t total_size = constants_start + sizeof(Janet) * (size_t) num_constants;
26804
26805
    /* DOS prevention? I.E. we could read bytecode and constants before
26806
     * hand so we don't allocated a ton of memory on bad, short input */
26807
26808
    /* Allocate PEG */
26809
0
    char *mem = janet_unmarshal_abstract(ctx, total_size);
26810
0
    JanetPeg *peg = (JanetPeg *)mem;
26811
0
    uint32_t *bytecode = (uint32_t *)(mem + bytecode_start);
26812
0
    Janet *constants = (Janet *)(mem + constants_start);
26813
0
    peg->bytecode = NULL;
26814
0
    peg->constants = NULL;
26815
0
    peg->bytecode_len = bytecode_len;
26816
0
    peg->num_constants = num_constants;
26817
26818
0
    for (size_t i = 0; i < peg->bytecode_len; i++)
26819
0
        bytecode[i] = (uint32_t) janet_unmarshal_int(ctx);
26820
0
    for (uint32_t j = 0; j < peg->num_constants; j++)
26821
0
        constants[j] = janet_unmarshal_janet(ctx);
26822
26823
    /* After here, no panics except for the bad: label. */
26824
26825
    /* Keep track at each index if an instruction was
26826
     * reference (0x01) or is in a main bytecode position
26827
     * (0x02). This lets us do a linear scan and not
26828
     * need to a depth first traversal. It is stricter
26829
     * than a dfs by not allowing certain kinds of unused
26830
     * bytecode. */
26831
0
    uint32_t blen = (int32_t) peg->bytecode_len;
26832
0
    uint32_t clen = peg->num_constants;
26833
0
    uint8_t *op_flags = janet_calloc(1, blen);
26834
0
    if (NULL == op_flags) {
26835
0
        JANET_OUT_OF_MEMORY;
26836
0
    }
26837
26838
    /* verify peg bytecode */
26839
0
    int32_t has_backref = 0;
26840
0
    uint32_t i = 0;
26841
0
    while (i < blen) {
26842
0
        uint32_t instr = bytecode[i];
26843
0
        uint32_t *rule = bytecode + i;
26844
0
        op_flags[i] |= 0x02;
26845
0
        switch (instr) {
26846
0
            case RULE_LITERAL:
26847
0
                i += 2 + ((rule[1] + 3) >> 2);
26848
0
                break;
26849
0
            case RULE_NCHAR:
26850
0
            case RULE_NOTNCHAR:
26851
0
            case RULE_RANGE:
26852
0
            case RULE_POSITION:
26853
0
            case RULE_LINE:
26854
0
            case RULE_COLUMN:
26855
                /* [1 word] */
26856
0
                i += 2;
26857
0
                break;
26858
0
            case RULE_BACKMATCH:
26859
                /* [1 word] */
26860
0
                i += 2;
26861
0
                has_backref = 1;
26862
0
                break;
26863
0
            case RULE_SET:
26864
                /* [8 words] */
26865
0
                i += 9;
26866
0
                break;
26867
0
            case RULE_LOOK:
26868
                /* [offset, rule] */
26869
0
                if (rule[2] >= blen) goto bad;
26870
0
                op_flags[rule[2]] |= 0x1;
26871
0
                i += 3;
26872
0
                break;
26873
0
            case RULE_CHOICE:
26874
0
            case RULE_SEQUENCE:
26875
                /* [len, rules...] */
26876
0
            {
26877
0
                uint32_t len = rule[1];
26878
0
                for (uint32_t j = 0; j < len; j++) {
26879
0
                    if (rule[2 + j] >= blen) goto bad;
26880
0
                    op_flags[rule[2 + j]] |= 0x1;
26881
0
                }
26882
0
                i += 2 + len;
26883
0
            }
26884
0
            break;
26885
0
            case RULE_IF:
26886
0
            case RULE_IFNOT:
26887
0
            case RULE_LENPREFIX:
26888
                /* [rule_a, rule_b (b if not a)] */
26889
0
                if (rule[1] >= blen) goto bad;
26890
0
                if (rule[2] >= blen) goto bad;
26891
0
                op_flags[rule[1]] |= 0x01;
26892
0
                op_flags[rule[2]] |= 0x01;
26893
0
                i += 3;
26894
0
                break;
26895
0
            case RULE_BETWEEN:
26896
                /* [lo, hi, rule] */
26897
0
                if (rule[3] >= blen) goto bad;
26898
0
                op_flags[rule[3]] |= 0x01;
26899
0
                i += 4;
26900
0
                break;
26901
0
            case RULE_ARGUMENT:
26902
                /* [searchtag, tag] */
26903
0
                i += 3;
26904
0
                break;
26905
0
            case RULE_GETTAG:
26906
                /* [searchtag, tag] */
26907
0
                i += 3;
26908
0
                has_backref = 1;
26909
0
                break;
26910
0
            case RULE_CONSTANT:
26911
                /* [constant, tag] */
26912
0
                if (rule[1] >= clen) goto bad;
26913
0
                i += 3;
26914
0
                break;
26915
0
            case RULE_CAPTURE_NUM:
26916
                /* [rule, base, tag] */
26917
0
                if (rule[1] >= blen) goto bad;
26918
0
                op_flags[rule[1]] |= 0x01;
26919
0
                i += 4;
26920
0
                break;
26921
0
            case RULE_ACCUMULATE:
26922
0
            case RULE_GROUP:
26923
0
            case RULE_CAPTURE:
26924
0
            case RULE_UNREF:
26925
                /* [rule, tag] */
26926
0
                if (rule[1] >= blen) goto bad;
26927
0
                op_flags[rule[1]] |= 0x01;
26928
0
                i += 3;
26929
0
                break;
26930
0
            case RULE_REPLACE:
26931
0
            case RULE_MATCHTIME:
26932
                /* [rule, constant, tag] */
26933
0
                if (rule[1] >= blen) goto bad;
26934
0
                if (rule[2] >= clen) goto bad;
26935
0
                op_flags[rule[1]] |= 0x01;
26936
0
                i += 4;
26937
0
                break;
26938
0
            case RULE_SUB:
26939
0
            case RULE_TIL:
26940
0
            case RULE_SPLIT:
26941
                /* [rule, rule] */
26942
0
                if (rule[1] >= blen) goto bad;
26943
0
                if (rule[2] >= blen) goto bad;
26944
0
                op_flags[rule[1]] |= 0x01;
26945
0
                op_flags[rule[2]] |= 0x01;
26946
0
                i += 3;
26947
0
                break;
26948
0
            case RULE_ERROR:
26949
0
            case RULE_DROP:
26950
0
            case RULE_ONLY_TAGS:
26951
0
            case RULE_NOT:
26952
0
            case RULE_TO:
26953
0
            case RULE_THRU:
26954
                /* [rule] */
26955
0
                if (rule[1] >= blen) goto bad;
26956
0
                op_flags[rule[1]] |= 0x01;
26957
0
                i += 2;
26958
0
                break;
26959
0
            case RULE_READINT:
26960
                /* [ width | (endianness << 5) | (signedness << 6), tag ] */
26961
0
                if (rule[1] > JANET_MAX_READINT_WIDTH) goto bad;
26962
0
                i += 3;
26963
0
                break;
26964
0
            case RULE_NTH:
26965
                /* [nth, rule, tag] */
26966
0
                if (rule[2] >= blen) goto bad;
26967
0
                op_flags[rule[2]] |= 0x01;
26968
0
                i += 4;
26969
0
                break;
26970
0
            default:
26971
0
                goto bad;
26972
0
        }
26973
0
    }
26974
26975
    /* last instruction cannot overflow */
26976
0
    if (i != blen) goto bad;
26977
26978
    /* Make sure all referenced instructions are actually
26979
     * in instruction positions. */
26980
0
    for (i = 0; i < blen; i++)
26981
0
        if (op_flags[i] == 0x01) goto bad;
26982
26983
    /* Good return */
26984
0
    peg->bytecode = bytecode;
26985
0
    peg->constants = constants;
26986
0
    peg->has_backref = has_backref;
26987
0
    janet_free(op_flags);
26988
0
    return peg;
26989
26990
0
bad:
26991
0
    janet_free(op_flags);
26992
0
    janet_panic("invalid peg bytecode");
26993
0
}
26994
26995
static int cfun_peg_getter(JanetAbstract a, Janet key, Janet *out);
26996
static Janet peg_next(void *p, Janet key);
26997
26998
const JanetAbstractType janet_peg_type = {
26999
    "core/peg",
27000
    NULL,
27001
    peg_mark,
27002
    cfun_peg_getter,
27003
    NULL, /* put */
27004
    peg_marshal,
27005
    peg_unmarshal,
27006
    NULL, /* tostring */
27007
    NULL, /* compare */
27008
    NULL, /* hash */
27009
    peg_next,
27010
    JANET_ATEND_NEXT
27011
};
27012
27013
/* Convert Builder to JanetPeg (Janet Abstract Value) */
27014
0
static JanetPeg *make_peg(Builder *b) {
27015
0
    size_t bytecode_start = size_padded(sizeof(JanetPeg), sizeof(uint32_t));
27016
0
    size_t bytecode_size = janet_v_count(b->bytecode) * sizeof(uint32_t);
27017
0
    size_t constants_start = size_padded(bytecode_start + bytecode_size, sizeof(Janet));
27018
0
    size_t constants_size = janet_v_count(b->constants) * sizeof(Janet);
27019
0
    size_t total_size = constants_start + constants_size;
27020
0
    char *mem = janet_abstract(&janet_peg_type, total_size);
27021
0
    JanetPeg *peg = (JanetPeg *)mem;
27022
0
    peg->bytecode = (uint32_t *)(mem + bytecode_start);
27023
0
    peg->constants = (Janet *)(mem + constants_start);
27024
0
    peg->num_constants = janet_v_count(b->constants);
27025
0
    safe_memcpy(peg->bytecode, b->bytecode, bytecode_size);
27026
0
    safe_memcpy(peg->constants, b->constants, constants_size);
27027
0
    peg->bytecode_len = janet_v_count(b->bytecode);
27028
0
    peg->has_backref = b->has_backref;
27029
0
    return peg;
27030
0
}
27031
27032
/* Compiler entry point */
27033
0
static JanetPeg *compile_peg(Janet x) {
27034
0
    Builder builder;
27035
0
    builder.grammar = janet_table(0);
27036
0
    builder.default_grammar = NULL;
27037
0
    {
27038
0
        Janet default_grammarv = janet_dyn("peg-grammar");
27039
0
        if (janet_checktype(default_grammarv, JANET_TABLE)) {
27040
0
            builder.default_grammar = janet_unwrap_table(default_grammarv);
27041
0
        }
27042
0
    }
27043
0
    builder.tags = janet_table(0);
27044
0
    builder.constants = NULL;
27045
0
    builder.bytecode = NULL;
27046
0
    builder.nexttag = 1;
27047
0
    builder.form = x;
27048
0
    builder.depth = JANET_RECURSION_GUARD;
27049
0
    builder.has_backref = 0;
27050
0
    peg_compile1(&builder, x);
27051
0
    JanetPeg *peg = make_peg(&builder);
27052
0
    builder_cleanup(&builder);
27053
0
    return peg;
27054
0
}
27055
27056
/*
27057
 * C Functions
27058
 */
27059
27060
JANET_CORE_FN(cfun_peg_compile,
27061
              "(peg/compile peg)",
27062
              "Compiles a peg source data structure into a <core/peg>. This will speed up matching "
27063
              "if the same peg will be used multiple times. Will also use `(dyn :peg-grammar)` to supplement "
27064
0
              "the grammar of the peg for otherwise undefined peg keywords.") {
27065
0
    janet_fixarity(argc, 1);
27066
0
    JanetPeg *peg = compile_peg(argv[0]);
27067
0
    return janet_wrap_abstract(peg);
27068
0
}
27069
27070
/* Common data for peg cfunctions */
27071
typedef struct {
27072
    JanetPeg *peg;
27073
    PegState s;
27074
    JanetByteView bytes;
27075
    Janet subst;
27076
    int32_t start;
27077
} PegCall;
27078
27079
/* Initialize state for peg cfunctions */
27080
0
static PegCall peg_cfun_init(int32_t argc, Janet *argv, int get_replace) {
27081
0
    PegCall ret;
27082
0
    int32_t min = get_replace ? 3 : 2;
27083
0
    janet_arity(argc, min, -1);
27084
0
    if (janet_checktype(argv[0], JANET_ABSTRACT) &&
27085
0
            janet_abstract_type(janet_unwrap_abstract(argv[0])) == &janet_peg_type) {
27086
0
        ret.peg = janet_unwrap_abstract(argv[0]);
27087
0
    } else {
27088
0
        ret.peg = compile_peg(argv[0]);
27089
0
    }
27090
0
    if (get_replace) {
27091
0
        ret.subst = argv[1];
27092
0
        ret.bytes = janet_getbytes(argv, 2);
27093
0
    } else {
27094
0
        ret.bytes = janet_getbytes(argv, 1);
27095
0
    }
27096
0
    if (argc > min) {
27097
0
        ret.start = janet_gethalfrange(argv, min, ret.bytes.len, "offset");
27098
0
        ret.s.extrac = argc - min - 1;
27099
0
        ret.s.extrav = janet_tuple_n(argv + min + 1, argc - min - 1);
27100
0
    } else {
27101
0
        ret.start = 0;
27102
0
        ret.s.extrac = 0;
27103
0
        ret.s.extrav = NULL;
27104
0
    }
27105
0
    ret.s.mode = PEG_MODE_NORMAL;
27106
0
    ret.s.text_start = ret.bytes.bytes;
27107
0
    ret.s.text_end = ret.bytes.bytes + ret.bytes.len;
27108
0
    ret.s.outer_text_end = ret.s.text_end;
27109
0
    ret.s.depth = JANET_RECURSION_GUARD;
27110
0
    ret.s.captures = janet_array(0);
27111
0
    ret.s.tagged_captures = janet_array(0);
27112
0
    ret.s.scratch = janet_buffer(10);
27113
0
    ret.s.tags = janet_buffer(10);
27114
0
    ret.s.constants = ret.peg->constants;
27115
0
    ret.s.bytecode = ret.peg->bytecode;
27116
0
    ret.s.linemap = NULL;
27117
0
    ret.s.linemaplen = -1;
27118
0
    ret.s.has_backref = ret.peg->has_backref;
27119
0
    return ret;
27120
0
}
27121
27122
0
static void peg_call_reset(PegCall *c) {
27123
0
    c->s.depth = JANET_RECURSION_GUARD;
27124
0
    c->s.captures->count = 0;
27125
0
    c->s.tagged_captures->count = 0;
27126
0
    c->s.scratch->count = 0;
27127
0
    c->s.tags->count = 0;
27128
0
}
27129
27130
JANET_CORE_FN(cfun_peg_match,
27131
              "(peg/match peg text &opt start & args)",
27132
              "Match a Parsing Expression Grammar to a byte string and return an array of captured values. "
27133
0
              "Returns nil if text does not match the language defined by peg. The syntax of PEGs is documented on the Janet website.") {
27134
0
    PegCall c = peg_cfun_init(argc, argv, 0);
27135
0
    const uint8_t *result = peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + c.start);
27136
0
    return result ? janet_wrap_array(c.s.captures) : janet_wrap_nil();
27137
0
}
27138
27139
JANET_CORE_FN(cfun_peg_find,
27140
              "(peg/find peg text &opt start & args)",
27141
0
              "Find first index where the peg matches in text. Returns an integer, or nil if not found.") {
27142
0
    PegCall c = peg_cfun_init(argc, argv, 0);
27143
0
    for (int32_t i = c.start; i < c.bytes.len; i++) {
27144
0
        peg_call_reset(&c);
27145
0
        if (peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i))
27146
0
            return janet_wrap_integer(i);
27147
0
    }
27148
0
    return janet_wrap_nil();
27149
0
}
27150
27151
JANET_CORE_FN(cfun_peg_find_all,
27152
              "(peg/find-all peg text &opt start & args)",
27153
0
              "Find all indexes where the peg matches in text. Returns an array of integers.") {
27154
0
    PegCall c = peg_cfun_init(argc, argv, 0);
27155
0
    JanetArray *ret = janet_array(0);
27156
0
    for (int32_t i = c.start; i < c.bytes.len; i++) {
27157
0
        peg_call_reset(&c);
27158
0
        if (peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i))
27159
0
            janet_array_push(ret, janet_wrap_integer(i));
27160
0
    }
27161
0
    return janet_wrap_array(ret);
27162
0
}
27163
27164
0
static Janet cfun_peg_replace_generic(int32_t argc, Janet *argv, int only_one) {
27165
0
    PegCall c = peg_cfun_init(argc, argv, 1);
27166
0
    JanetBuffer *ret = janet_buffer(0);
27167
0
    int32_t trail = 0;
27168
0
    for (int32_t i = c.start; i < c.bytes.len;) {
27169
0
        peg_call_reset(&c);
27170
0
        const uint8_t *result = peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i);
27171
0
        if (NULL != result) {
27172
0
            if (trail < i) {
27173
0
                janet_buffer_push_bytes(ret, c.bytes.bytes + trail, (i - trail));
27174
0
                trail = i;
27175
0
            }
27176
0
            int32_t nexti = (int32_t)(result - c.bytes.bytes);
27177
0
            JanetByteView subst = janet_text_substitution(&c.subst, c.bytes.bytes + i, nexti - i, c.s.captures);
27178
0
            janet_buffer_push_bytes(ret, subst.bytes, subst.len);
27179
0
            trail = nexti;
27180
0
            if (nexti == i) nexti++;
27181
0
            i = nexti;
27182
0
            if (only_one) break;
27183
0
        } else {
27184
0
            i++;
27185
0
        }
27186
0
    }
27187
0
    if (trail < c.bytes.len) {
27188
0
        janet_buffer_push_bytes(ret, c.bytes.bytes + trail, (c.bytes.len - trail));
27189
0
    }
27190
0
    return janet_wrap_buffer(ret);
27191
0
}
27192
27193
JANET_CORE_FN(cfun_peg_replace_all,
27194
              "(peg/replace-all peg subst text &opt start & args)",
27195
              "Replace all matches of `peg` in `text` with `subst`, returning a new buffer. "
27196
              "The peg does not need to make captures to do replacement. "
27197
              "If `subst` is a function, it will be called with the "
27198
0
              "matching text followed by any captures.") {
27199
0
    return cfun_peg_replace_generic(argc, argv, 0);
27200
0
}
27201
27202
JANET_CORE_FN(cfun_peg_replace,
27203
              "(peg/replace peg subst text &opt start & args)",
27204
              "Replace first match of `peg` in `text` with `subst`, returning a new buffer. "
27205
              "The peg does not need to make captures to do replacement. "
27206
              "If `subst` is a function, it will be called with the "
27207
              "matching text followed by any captures. "
27208
0
              "If no matches are found, returns the input string in a new buffer.") {
27209
0
    return cfun_peg_replace_generic(argc, argv, 1);
27210
0
}
27211
27212
static JanetMethod peg_methods[] = {
27213
    {"match", cfun_peg_match},
27214
    {"find", cfun_peg_find},
27215
    {"find-all", cfun_peg_find_all},
27216
    {"replace", cfun_peg_replace},
27217
    {"replace-all", cfun_peg_replace_all},
27218
    {NULL, NULL}
27219
};
27220
27221
0
static int cfun_peg_getter(JanetAbstract a, Janet key, Janet *out) {
27222
0
    (void) a;
27223
0
    if (!janet_checktype(key, JANET_KEYWORD))
27224
0
        return 0;
27225
0
    return janet_getmethod(janet_unwrap_keyword(key), peg_methods, out);
27226
0
}
27227
27228
0
static Janet peg_next(void *p, Janet key) {
27229
0
    (void) p;
27230
0
    return janet_nextmethod(peg_methods, key);
27231
0
}
27232
27233
/* Load the peg module */
27234
0
void janet_lib_peg(JanetTable *env) {
27235
0
    JanetRegExt cfuns[] = {
27236
0
        JANET_CORE_REG("peg/compile", cfun_peg_compile),
27237
0
        JANET_CORE_REG("peg/match", cfun_peg_match),
27238
0
        JANET_CORE_REG("peg/find", cfun_peg_find),
27239
0
        JANET_CORE_REG("peg/find-all", cfun_peg_find_all),
27240
0
        JANET_CORE_REG("peg/replace", cfun_peg_replace),
27241
0
        JANET_CORE_REG("peg/replace-all", cfun_peg_replace_all),
27242
0
        JANET_REG_END
27243
0
    };
27244
0
    janet_core_cfuns_ext(env, NULL, cfuns);
27245
0
    janet_register_abstract_type(&janet_peg_type);
27246
0
}
27247
27248
#endif /* ifdef JANET_PEG */
27249
27250
27251
/* src/core/pp.c */
27252
#line 0 "src/core/pp.c"
27253
27254
/*
27255
* Copyright (c) 2025 Calvin Rose
27256
*
27257
* Permission is hereby granted, free of charge, to any person obtaining a copy
27258
* of this software and associated documentation files (the "Software"), to
27259
* deal in the Software without restriction, including without limitation the
27260
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
27261
* sell copies of the Software, and to permit persons to whom the Software is
27262
* furnished to do so, subject to the following conditions:
27263
*
27264
* The above copyright notice and this permission notice shall be included in
27265
* all copies or substantial portions of the Software.
27266
*
27267
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27268
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27269
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27270
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27271
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27272
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27273
* IN THE SOFTWARE.
27274
*/
27275
27276
#ifndef JANET_AMALG
27277
#include "features.h"
27278
#include <janet.h>
27279
#include "util.h"
27280
#include "state.h"
27281
#include <math.h>
27282
#endif
27283
27284
#include <string.h>
27285
#include <ctype.h>
27286
#include <inttypes.h>
27287
#include <float.h>
27288
27289
/* Implements a pretty printer for Janet. The pretty printer
27290
 * is simple and not that flexible, but fast. */
27291
27292
/* Temporary buffer size */
27293
0
#define BUFSIZE 64
27294
27295
/* Preprocessor hacks */
27296
#define STR_HELPER(x) #x
27297
#define STR(x) STR_HELPER(x)
27298
27299
0
static void number_to_string_b(JanetBuffer *buffer, double x) {
27300
0
    janet_buffer_ensure(buffer, buffer->count + BUFSIZE, 2);
27301
0
    const char *fmt = (x == floor(x) &&
27302
0
                       x <= JANET_INTMAX_DOUBLE &&
27303
0
                       x >= JANET_INTMIN_DOUBLE) ? "%.0f" : ("%." STR(DBL_DIG) "g");
27304
0
    int count;
27305
0
    if (x == 0.0) {
27306
        /* Prevent printing of '-0' */
27307
0
        count = 1;
27308
0
        buffer->data[buffer->count] = '0';
27309
0
    } else {
27310
0
        count = snprintf((char *) buffer->data + buffer->count, BUFSIZE, fmt, x);
27311
0
    }
27312
0
    buffer->count += count;
27313
0
}
27314
27315
/* expects non positive x */
27316
0
static int count_dig10(int32_t x) {
27317
0
    int result = 1;
27318
0
    for (;;) {
27319
0
        if (x > -10) return result;
27320
0
        if (x > -100) return result + 1;
27321
0
        if (x > -1000) return result + 2;
27322
0
        if (x > -10000) return result + 3;
27323
0
        x /= 10000;
27324
0
        result += 4;
27325
0
    }
27326
0
}
27327
27328
0
static void integer_to_string_b(JanetBuffer *buffer, int32_t x) {
27329
0
    janet_buffer_extra(buffer, BUFSIZE);
27330
0
    uint8_t *buf = buffer->data + buffer->count;
27331
0
    int32_t neg = 0;
27332
0
    int32_t len = 0;
27333
0
    if (x == 0) {
27334
0
        buf[0] = '0';
27335
0
        buffer->count++;
27336
0
        return;
27337
0
    }
27338
0
    if (x > 0) {
27339
0
        x = -x;
27340
0
    } else {
27341
0
        neg = 1;
27342
0
        *buf++ = '-';
27343
0
    }
27344
0
    len = count_dig10(x);
27345
0
    buf += len;
27346
0
    while (x) {
27347
0
        uint8_t digit = (uint8_t) - (x % 10);
27348
0
        *(--buf) = '0' + digit;
27349
0
        x /= 10;
27350
0
    }
27351
0
    buffer->count += len + neg;
27352
0
}
27353
27354
0
#define HEX(i) (((uint8_t *) janet_base64)[(i)])
27355
27356
/* Returns a string description for a pointer. Truncates
27357
 * title to 32 characters */
27358
0
static void string_description_b(JanetBuffer *buffer, const char *title, void *pointer) {
27359
0
    janet_buffer_ensure(buffer, buffer->count + BUFSIZE, 2);
27360
0
    uint8_t *c = buffer->data + buffer->count;
27361
0
    int32_t i;
27362
0
    union {
27363
0
        uint8_t bytes[sizeof(void *)];
27364
0
        void *p;
27365
0
    } pbuf;
27366
27367
0
    pbuf.p = pointer;
27368
0
    *c++ = '<';
27369
    /* Maximum of 32 bytes for abstract type name */
27370
0
    for (i = 0; i < 32 && title[i]; ++i)
27371
0
        *c++ = ((uint8_t *)title) [i];
27372
0
    *c++ = ' ';
27373
0
    *c++ = '0';
27374
0
    *c++ = 'x';
27375
0
#if defined(JANET_64)
27376
0
#define POINTSIZE 6
27377
#else
27378
#define POINTSIZE (sizeof(void *))
27379
#endif
27380
0
    for (i = POINTSIZE; i > 0; --i) {
27381
0
        uint8_t byte = pbuf.bytes[i - 1];
27382
0
        *c++ = HEX(byte >> 4);
27383
0
        *c++ = HEX(byte & 0xF);
27384
0
    }
27385
0
    *c++ = '>';
27386
0
    buffer->count = (int32_t)(c - buffer->data);
27387
0
#undef POINTSIZE
27388
0
}
27389
27390
0
static void janet_escape_string_impl(JanetBuffer *buffer, const uint8_t *str, int32_t len) {
27391
0
    janet_buffer_push_u8(buffer, '"');
27392
0
    for (int32_t i = 0; i < len; ++i) {
27393
0
        uint8_t c = str[i];
27394
0
        switch (c) {
27395
0
            case '"':
27396
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\"", 2);
27397
0
                break;
27398
0
            case '\n':
27399
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\n", 2);
27400
0
                break;
27401
0
            case '\r':
27402
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\r", 2);
27403
0
                break;
27404
0
            case '\0':
27405
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\0", 2);
27406
0
                break;
27407
0
            case '\f':
27408
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\f", 2);
27409
0
                break;
27410
0
            case '\v':
27411
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\v", 2);
27412
0
                break;
27413
0
            case '\a':
27414
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\a", 2);
27415
0
                break;
27416
0
            case '\b':
27417
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\b", 2);
27418
0
                break;
27419
0
            case 27:
27420
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\e", 2);
27421
0
                break;
27422
0
            case '\\':
27423
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\\", 2);
27424
0
                break;
27425
0
            case '\t':
27426
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\t", 2);
27427
0
                break;
27428
0
            default:
27429
0
                if (c < 32 || c > 126) {
27430
0
                    uint8_t buf[4];
27431
0
                    buf[0] = '\\';
27432
0
                    buf[1] = 'x';
27433
0
                    buf[2] = janet_base64[(c >> 4) & 0xF];
27434
0
                    buf[3] = janet_base64[c & 0xF];
27435
0
                    janet_buffer_push_bytes(buffer, buf, 4);
27436
0
                } else {
27437
0
                    janet_buffer_push_u8(buffer, c);
27438
0
                }
27439
0
                break;
27440
0
        }
27441
0
    }
27442
0
    janet_buffer_push_u8(buffer, '"');
27443
0
}
27444
27445
0
static void janet_escape_string_b(JanetBuffer *buffer, const uint8_t *str) {
27446
0
    janet_escape_string_impl(buffer, str, janet_string_length(str));
27447
0
}
27448
27449
0
static void janet_escape_buffer_b(JanetBuffer *buffer, JanetBuffer *bx) {
27450
0
    if (bx == buffer) {
27451
        /* Ensures buffer won't resize while escaping */
27452
0
        janet_buffer_ensure(bx, bx->count + 5 * bx->count + 3, 1);
27453
0
    }
27454
0
    janet_buffer_push_u8(buffer, '@');
27455
0
    janet_escape_string_impl(buffer, bx->data, bx->count);
27456
0
}
27457
27458
0
void janet_to_string_b(JanetBuffer *buffer, Janet x) {
27459
0
    switch (janet_type(x)) {
27460
0
        case JANET_NIL:
27461
0
            janet_buffer_push_cstring(buffer, "");
27462
0
            break;
27463
0
        case JANET_BOOLEAN:
27464
0
            janet_buffer_push_cstring(buffer,
27465
0
                                      janet_unwrap_boolean(x) ? "true" : "false");
27466
0
            break;
27467
0
        case JANET_NUMBER:
27468
0
            number_to_string_b(buffer, janet_unwrap_number(x));
27469
0
            break;
27470
0
        case JANET_STRING:
27471
0
        case JANET_SYMBOL:
27472
0
        case JANET_KEYWORD:
27473
0
            janet_buffer_push_bytes(buffer,
27474
0
                                    janet_unwrap_string(x),
27475
0
                                    janet_string_length(janet_unwrap_string(x)));
27476
0
            break;
27477
0
        case JANET_BUFFER: {
27478
0
            JanetBuffer *to = janet_unwrap_buffer(x);
27479
            /* Prevent resizing buffer while appending */
27480
0
            if (buffer == to) janet_buffer_extra(buffer, to->count);
27481
0
            janet_buffer_push_bytes(buffer, to->data, to->count);
27482
0
            break;
27483
0
        }
27484
0
        case JANET_ABSTRACT: {
27485
0
            JanetAbstract p = janet_unwrap_abstract(x);
27486
0
            const JanetAbstractType *t = janet_abstract_type(p);
27487
0
            if (t->tostring != NULL) {
27488
0
                t->tostring(p, buffer);
27489
0
            } else {
27490
0
                string_description_b(buffer, t->name, p);
27491
0
            }
27492
0
        }
27493
0
        return;
27494
0
        case JANET_CFUNCTION: {
27495
0
            JanetCFunRegistry *reg = janet_registry_get(janet_unwrap_cfunction(x));
27496
0
            if (NULL != reg) {
27497
0
                janet_buffer_push_cstring(buffer, "<cfunction ");
27498
0
                if (NULL != reg->name_prefix) {
27499
0
                    janet_buffer_push_cstring(buffer, reg->name_prefix);
27500
0
                    janet_buffer_push_u8(buffer, '/');
27501
0
                }
27502
0
                janet_buffer_push_cstring(buffer, reg->name);
27503
0
                janet_buffer_push_u8(buffer, '>');
27504
0
                break;
27505
0
            }
27506
0
            goto fallthrough;
27507
0
        }
27508
0
        case JANET_FUNCTION: {
27509
0
            JanetFunction *fun = janet_unwrap_function(x);
27510
0
            JanetFuncDef *def = fun->def;
27511
0
            if (def == NULL) {
27512
0
                janet_buffer_push_cstring(buffer, "<incomplete function>");
27513
0
                break;
27514
0
            }
27515
0
            if (def->name) {
27516
0
                const uint8_t *n = def->name;
27517
0
                janet_buffer_push_cstring(buffer, "<function ");
27518
0
                janet_buffer_push_bytes(buffer, n, janet_string_length(n));
27519
0
                janet_buffer_push_u8(buffer, '>');
27520
0
                break;
27521
0
            }
27522
0
            goto fallthrough;
27523
0
        }
27524
0
    fallthrough:
27525
0
        default:
27526
0
            string_description_b(buffer, janet_type_names[janet_type(x)], janet_unwrap_pointer(x));
27527
0
            break;
27528
0
    }
27529
0
}
27530
27531
/* See parse.c for full table */
27532
27533
/* Check if a symbol or keyword contains no symbol characters */
27534
0
static int contains_bad_chars(const uint8_t *sym, int issym) {
27535
0
    int32_t len = janet_string_length(sym);
27536
0
    if (len && issym && sym[0] >= '0' && sym[0] <= '9') return 1;
27537
0
    if (!janet_valid_utf8(sym, len)) return 1;
27538
0
    for (int32_t i = 0; i < len; i++) {
27539
0
        if (!janet_is_symbol_char(sym[i])) return 1;
27540
0
    }
27541
0
    return 0;
27542
0
}
27543
27544
0
void janet_description_b(JanetBuffer *buffer, Janet x) {
27545
0
    switch (janet_type(x)) {
27546
0
        default:
27547
0
            break;
27548
0
        case JANET_NIL:
27549
0
            janet_buffer_push_cstring(buffer, "nil");
27550
0
            return;
27551
0
        case JANET_KEYWORD:
27552
0
            janet_buffer_push_u8(buffer, ':');
27553
0
            break;
27554
0
        case JANET_STRING:
27555
0
            janet_escape_string_b(buffer, janet_unwrap_string(x));
27556
0
            return;
27557
0
        case JANET_BUFFER: {
27558
0
            JanetBuffer *b = janet_unwrap_buffer(x);
27559
0
            janet_escape_buffer_b(buffer, b);
27560
0
            return;
27561
0
        }
27562
0
        case JANET_ABSTRACT: {
27563
0
            JanetAbstract p = janet_unwrap_abstract(x);
27564
0
            const JanetAbstractType *t = janet_abstract_type(p);
27565
0
            if (t->tostring != NULL) {
27566
0
                janet_buffer_push_cstring(buffer, "<");
27567
0
                janet_buffer_push_cstring(buffer, t->name);
27568
0
                janet_buffer_push_cstring(buffer, " ");
27569
0
                t->tostring(p, buffer);
27570
0
                janet_buffer_push_cstring(buffer, ">");
27571
0
            } else {
27572
0
                string_description_b(buffer, t->name, p);
27573
0
            }
27574
0
            return;
27575
0
        }
27576
0
    }
27577
0
    janet_to_string_b(buffer, x);
27578
0
}
27579
27580
0
const uint8_t *janet_description(Janet x) {
27581
0
    JanetBuffer b;
27582
0
    janet_buffer_init(&b, 10);
27583
0
    janet_description_b(&b, x);
27584
0
    const uint8_t *ret = janet_string(b.data, b.count);
27585
0
    janet_buffer_deinit(&b);
27586
0
    return ret;
27587
0
}
27588
27589
/* Convert any value to a janet string. Similar to description, but
27590
 * strings, symbols, and buffers will return their content. */
27591
0
const uint8_t *janet_to_string(Janet x) {
27592
0
    switch (janet_type(x)) {
27593
0
        default: {
27594
0
            JanetBuffer b;
27595
0
            janet_buffer_init(&b, 10);
27596
0
            janet_to_string_b(&b, x);
27597
0
            const uint8_t *ret = janet_string(b.data, b.count);
27598
0
            janet_buffer_deinit(&b);
27599
0
            return ret;
27600
0
        }
27601
0
        case JANET_BUFFER:
27602
0
            return janet_string(janet_unwrap_buffer(x)->data, janet_unwrap_buffer(x)->count);
27603
0
        case JANET_STRING:
27604
0
        case JANET_SYMBOL:
27605
0
        case JANET_KEYWORD:
27606
0
            return janet_unwrap_string(x);
27607
0
    }
27608
0
}
27609
27610
/* Hold state for pretty printer. */
27611
struct pretty {
27612
    JanetBuffer *buffer;
27613
    int depth;
27614
    int indent;
27615
    int flags;
27616
    int32_t bufstartlen;
27617
    int32_t *keysort_buffer;
27618
    int32_t keysort_capacity;
27619
    int32_t keysort_start;
27620
    JanetTable seen;
27621
};
27622
27623
/* Print jdn format */
27624
0
static int print_jdn_one(struct pretty *S, Janet x, int depth) {
27625
0
    if (depth == 0) return 1;
27626
0
    switch (janet_type(x)) {
27627
0
        case JANET_NIL:
27628
0
        case JANET_BOOLEAN:
27629
0
        case JANET_BUFFER:
27630
0
        case JANET_STRING:
27631
0
            janet_description_b(S->buffer, x);
27632
0
            break;
27633
0
        case JANET_NUMBER:
27634
0
            janet_buffer_ensure(S->buffer, S->buffer->count + BUFSIZE, 2);
27635
0
            double num = janet_unwrap_number(x);
27636
0
            if (isnan(num)) return 1;
27637
0
            if (isinf(num)) return 1;
27638
0
            janet_buffer_dtostr(S->buffer, num);
27639
0
            break;
27640
0
        case JANET_SYMBOL:
27641
0
        case JANET_KEYWORD:
27642
0
            if (contains_bad_chars(janet_unwrap_keyword(x), janet_type(x) == JANET_SYMBOL)) return 1;
27643
0
            janet_description_b(S->buffer, x);
27644
0
            break;
27645
0
        case JANET_TUPLE: {
27646
0
            JanetTuple t = janet_unwrap_tuple(x);
27647
0
            int isb = janet_tuple_flag(t) & JANET_TUPLE_FLAG_BRACKETCTOR;
27648
0
            janet_buffer_push_u8(S->buffer, isb ? '[' : '(');
27649
0
            for (int32_t i = 0; i < janet_tuple_length(t); i++) {
27650
0
                if (i) janet_buffer_push_u8(S->buffer, ' ');
27651
0
                if (print_jdn_one(S, t[i], depth - 1)) return 1;
27652
0
            }
27653
0
            janet_buffer_push_u8(S->buffer, isb ? ']' : ')');
27654
0
        }
27655
0
        break;
27656
0
        case JANET_ARRAY: {
27657
0
            janet_table_put(&S->seen, x, janet_wrap_true());
27658
0
            JanetArray *a = janet_unwrap_array(x);
27659
0
            janet_buffer_push_cstring(S->buffer, "@[");
27660
0
            for (int32_t i = 0; i < a->count; i++) {
27661
0
                if (i) janet_buffer_push_u8(S->buffer, ' ');
27662
0
                if (print_jdn_one(S, a->data[i], depth - 1)) return 1;
27663
0
            }
27664
0
            janet_buffer_push_u8(S->buffer, ']');
27665
0
        }
27666
0
        break;
27667
0
        case JANET_TABLE: {
27668
0
            janet_table_put(&S->seen, x, janet_wrap_true());
27669
0
            JanetTable *tab = janet_unwrap_table(x);
27670
0
            janet_buffer_push_cstring(S->buffer, "@{");
27671
0
            int isFirst = 1;
27672
0
            for (int32_t i = 0; i < tab->capacity; i++) {
27673
0
                const JanetKV *kv = tab->data + i;
27674
0
                if (janet_checktype(kv->key, JANET_NIL)) continue;
27675
0
                if (!isFirst) janet_buffer_push_u8(S->buffer, ' ');
27676
0
                isFirst = 0;
27677
0
                if (print_jdn_one(S, kv->key, depth - 1)) return 1;
27678
0
                janet_buffer_push_u8(S->buffer, ' ');
27679
0
                if (print_jdn_one(S, kv->value, depth - 1)) return 1;
27680
0
            }
27681
0
            janet_buffer_push_u8(S->buffer, '}');
27682
0
        }
27683
0
        break;
27684
0
        case JANET_STRUCT: {
27685
0
            JanetStruct st = janet_unwrap_struct(x);
27686
0
            janet_buffer_push_u8(S->buffer, '{');
27687
0
            int isFirst = 1;
27688
0
            for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
27689
0
                const JanetKV *kv = st + i;
27690
0
                if (janet_checktype(kv->key, JANET_NIL)) continue;
27691
0
                if (!isFirst) janet_buffer_push_u8(S->buffer, ' ');
27692
0
                isFirst = 0;
27693
0
                if (print_jdn_one(S, kv->key, depth - 1)) return 1;
27694
0
                janet_buffer_push_u8(S->buffer, ' ');
27695
0
                if (print_jdn_one(S, kv->value, depth - 1)) return 1;
27696
0
            }
27697
0
            janet_buffer_push_u8(S->buffer, '}');
27698
0
        }
27699
0
        break;
27700
0
        default:
27701
0
            return 1;
27702
0
    }
27703
0
    return 0;
27704
0
}
27705
27706
0
static void print_newline(struct pretty *S, int just_a_space) {
27707
0
    int i;
27708
0
    if (just_a_space || (S->flags & JANET_PRETTY_ONELINE)) {
27709
0
        janet_buffer_push_u8(S->buffer, ' ');
27710
0
        return;
27711
0
    }
27712
0
    janet_buffer_push_u8(S->buffer, '\n');
27713
0
    for (i = 0; i < S->indent; i++) {
27714
0
        janet_buffer_push_u8(S->buffer, ' ');
27715
0
    }
27716
0
}
27717
27718
/* Color coding for types */
27719
static const char janet_cycle_color[] = "\x1B[36m";
27720
static const char janet_class_color[] = "\x1B[34m";
27721
static const char *janet_pretty_colors[] = {
27722
    "\x1B[32m",
27723
    "\x1B[36m",
27724
    "\x1B[36m",
27725
    "\x1B[36m",
27726
    "\x1B[35m",
27727
    "\x1B[34m",
27728
    "\x1B[33m",
27729
    "\x1B[36m",
27730
    "\x1B[36m",
27731
    "\x1B[36m",
27732
    "\x1B[36m",
27733
    "\x1B[35m",
27734
    "\x1B[36m",
27735
    "\x1B[36m",
27736
    "\x1B[36m",
27737
    "\x1B[36m"
27738
};
27739
27740
0
#define JANET_PRETTY_DICT_ONELINE 4
27741
0
#define JANET_PRETTY_IND_ONELINE 10
27742
0
#define JANET_PRETTY_DICT_LIMIT 30
27743
0
#define JANET_PRETTY_ARRAY_LIMIT 160
27744
27745
/* Helper for pretty printing */
27746
0
static void janet_pretty_one(struct pretty *S, Janet x, int is_dict_value) {
27747
    /* Add to seen */
27748
0
    switch (janet_type(x)) {
27749
0
        case JANET_NIL:
27750
0
        case JANET_NUMBER:
27751
0
        case JANET_SYMBOL:
27752
0
        case JANET_BOOLEAN:
27753
0
            break;
27754
0
        default: {
27755
0
            Janet seenid = janet_table_get(&S->seen, x);
27756
0
            if (janet_checktype(seenid, JANET_NUMBER)) {
27757
0
                if (S->flags & JANET_PRETTY_COLOR) {
27758
0
                    janet_buffer_push_cstring(S->buffer, janet_cycle_color);
27759
0
                }
27760
0
                janet_buffer_push_cstring(S->buffer, "<cycle ");
27761
0
                integer_to_string_b(S->buffer, janet_unwrap_integer(seenid));
27762
0
                janet_buffer_push_u8(S->buffer, '>');
27763
0
                if (S->flags & JANET_PRETTY_COLOR) {
27764
0
                    janet_buffer_push_cstring(S->buffer, "\x1B[0m");
27765
0
                }
27766
0
                return;
27767
0
            } else {
27768
0
                janet_table_put(&S->seen, x, janet_wrap_integer(S->seen.count));
27769
0
                break;
27770
0
            }
27771
0
        }
27772
0
    }
27773
27774
0
    switch (janet_type(x)) {
27775
0
        default: {
27776
0
            const char *color = janet_pretty_colors[janet_type(x)];
27777
0
            if (color && (S->flags & JANET_PRETTY_COLOR)) {
27778
0
                janet_buffer_push_cstring(S->buffer, color);
27779
0
            }
27780
0
            if (janet_checktype(x, JANET_BUFFER) && janet_unwrap_buffer(x) == S->buffer) {
27781
0
                janet_buffer_ensure(S->buffer, S->buffer->count + S->bufstartlen * 4 + 3, 1);
27782
0
                janet_buffer_push_u8(S->buffer, '@');
27783
0
                janet_escape_string_impl(S->buffer, S->buffer->data, S->bufstartlen);
27784
0
            } else {
27785
0
                janet_description_b(S->buffer, x);
27786
0
            }
27787
0
            if (color && (S->flags & JANET_PRETTY_COLOR)) {
27788
0
                janet_buffer_push_cstring(S->buffer, "\x1B[0m");
27789
0
            }
27790
0
            break;
27791
0
        }
27792
0
        case JANET_ARRAY:
27793
0
        case JANET_TUPLE: {
27794
0
            int32_t i = 0, len = 0;
27795
0
            const Janet *arr = NULL;
27796
0
            int isarray = janet_checktype(x, JANET_ARRAY);
27797
0
            janet_indexed_view(x, &arr, &len);
27798
0
            int hasbrackets = !isarray && (janet_tuple_flag(arr) & JANET_TUPLE_FLAG_BRACKETCTOR);
27799
0
            const char *startstr = isarray ? "@[" : hasbrackets ? "[" : "(";
27800
0
            const char endchar = isarray ? ']' : hasbrackets ? ']' : ')';
27801
0
            janet_buffer_push_cstring(S->buffer, startstr);
27802
0
            S->depth--;
27803
0
            S->indent += 2;
27804
0
            if (S->depth == 0) {
27805
0
                janet_buffer_push_cstring(S->buffer, "...");
27806
0
            } else {
27807
0
                if (!isarray && !(S->flags & JANET_PRETTY_ONELINE) && len >= JANET_PRETTY_IND_ONELINE)
27808
0
                    janet_buffer_push_u8(S->buffer, ' ');
27809
0
                if (is_dict_value && len >= JANET_PRETTY_IND_ONELINE) print_newline(S, 0);
27810
0
                if (len > JANET_PRETTY_ARRAY_LIMIT && !(S->flags & JANET_PRETTY_NOTRUNC)) {
27811
0
                    for (i = 0; i < 3; i++) {
27812
0
                        if (i) print_newline(S, 0);
27813
0
                        janet_pretty_one(S, arr[i], 0);
27814
0
                    }
27815
0
                    print_newline(S, 0);
27816
0
                    janet_buffer_push_cstring(S->buffer, "...");
27817
0
                    for (i = 0; i < 3; i++) {
27818
0
                        print_newline(S, 0);
27819
0
                        janet_pretty_one(S, arr[len - 3 + i], 0);
27820
0
                    }
27821
0
                } else {
27822
0
                    for (i = 0; i < len; i++) {
27823
0
                        if (i) print_newline(S, len < JANET_PRETTY_IND_ONELINE);
27824
0
                        janet_pretty_one(S, arr[i], 0);
27825
0
                    }
27826
0
                }
27827
0
            }
27828
0
            S->indent -= 2;
27829
0
            S->depth++;
27830
0
            janet_buffer_push_u8(S->buffer, endchar);
27831
0
            break;
27832
0
        }
27833
0
        case JANET_STRUCT:
27834
0
        case JANET_TABLE: {
27835
0
            int istable = janet_checktype(x, JANET_TABLE);
27836
27837
            /* For object-like tables, print class name */
27838
0
            if (istable) {
27839
0
                JanetTable *t = janet_unwrap_table(x);
27840
0
                JanetTable *proto = t->proto;
27841
0
                janet_buffer_push_cstring(S->buffer, "@");
27842
0
                if (NULL != proto) {
27843
0
                    Janet name = janet_table_get(proto, janet_ckeywordv("_name"));
27844
0
                    const uint8_t *n;
27845
0
                    int32_t len;
27846
0
                    if (janet_bytes_view(name, &n, &len)) {
27847
0
                        if (S->flags & JANET_PRETTY_COLOR) {
27848
0
                            janet_buffer_push_cstring(S->buffer, janet_class_color);
27849
0
                        }
27850
0
                        janet_buffer_push_bytes(S->buffer, n, len);
27851
0
                        if (S->flags & JANET_PRETTY_COLOR) {
27852
0
                            janet_buffer_push_cstring(S->buffer, "\x1B[0m");
27853
0
                        }
27854
0
                    }
27855
0
                }
27856
0
            } else {
27857
0
                JanetStruct st = janet_unwrap_struct(x);
27858
0
                JanetStruct proto = janet_struct_proto(st);
27859
0
                if (NULL != proto) {
27860
0
                    Janet name = janet_struct_get(proto, janet_ckeywordv("_name"));
27861
0
                    const uint8_t *n;
27862
0
                    int32_t len;
27863
0
                    if (janet_bytes_view(name, &n, &len)) {
27864
0
                        if (S->flags & JANET_PRETTY_COLOR) {
27865
0
                            janet_buffer_push_cstring(S->buffer, janet_class_color);
27866
0
                        }
27867
0
                        janet_buffer_push_bytes(S->buffer, n, len);
27868
0
                        if (S->flags & JANET_PRETTY_COLOR) {
27869
0
                            janet_buffer_push_cstring(S->buffer, "\x1B[0m");
27870
0
                        }
27871
0
                    }
27872
0
                }
27873
0
            }
27874
0
            janet_buffer_push_cstring(S->buffer, "{");
27875
27876
0
            S->depth--;
27877
0
            S->indent += 2;
27878
0
            if (S->depth == 0) {
27879
0
                janet_buffer_push_cstring(S->buffer, "...");
27880
0
            } else {
27881
0
                int32_t i = 0, len = 0, cap = 0;
27882
0
                const JanetKV *kvs = NULL;
27883
0
                janet_dictionary_view(x, &kvs, &len, &cap);
27884
0
                if (!istable && !(S->flags & JANET_PRETTY_ONELINE) && len >= JANET_PRETTY_DICT_ONELINE)
27885
0
                    janet_buffer_push_u8(S->buffer, ' ');
27886
0
                if (is_dict_value && len >= JANET_PRETTY_DICT_ONELINE) print_newline(S, 0);
27887
0
                int32_t ks_start = S->keysort_start;
27888
27889
                /* Ensure buffer is large enough to sort keys. */
27890
0
                int truncated = 0;
27891
0
                int64_t mincap = (int64_t) len + (int64_t) ks_start;
27892
0
                if (mincap > INT32_MAX) {
27893
0
                    truncated = 1;
27894
0
                    len = 0;
27895
0
                    mincap = ks_start;
27896
0
                }
27897
27898
0
                if (S->keysort_capacity < mincap) {
27899
0
                    if (mincap >= INT32_MAX / 2) {
27900
0
                        S->keysort_capacity = INT32_MAX;
27901
0
                    } else {
27902
0
                        S->keysort_capacity = (int32_t)(mincap * 2);
27903
0
                    }
27904
0
                    S->keysort_buffer = janet_srealloc(S->keysort_buffer, sizeof(int32_t) * S->keysort_capacity);
27905
0
                    if (NULL == S->keysort_buffer) {
27906
0
                        JANET_OUT_OF_MEMORY;
27907
0
                    }
27908
0
                }
27909
27910
0
                janet_sorted_keys(kvs, cap, S->keysort_buffer == NULL ? NULL : S->keysort_buffer + ks_start);
27911
0
                S->keysort_start += len;
27912
0
                if (!(S->flags & JANET_PRETTY_NOTRUNC) && (len > JANET_PRETTY_DICT_LIMIT)) {
27913
0
                    len = JANET_PRETTY_DICT_LIMIT;
27914
0
                    truncated = 1;
27915
0
                }
27916
27917
0
                for (i = 0; i < len; i++) {
27918
0
                    if (i) print_newline(S, len < JANET_PRETTY_DICT_ONELINE);
27919
0
                    int32_t j = S->keysort_buffer[i + ks_start];
27920
0
                    janet_pretty_one(S, kvs[j].key, 0);
27921
0
                    janet_buffer_push_u8(S->buffer, ' ');
27922
0
                    janet_pretty_one(S, kvs[j].value, 1);
27923
0
                }
27924
27925
0
                if (truncated) {
27926
0
                    print_newline(S, 0);
27927
0
                    janet_buffer_push_cstring(S->buffer, "...");
27928
0
                }
27929
27930
0
                S->keysort_start = ks_start;
27931
0
            }
27932
0
            S->indent -= 2;
27933
0
            S->depth++;
27934
0
            janet_buffer_push_u8(S->buffer, '}');
27935
0
            break;
27936
0
        }
27937
0
    }
27938
    /* Remove from seen */
27939
0
    janet_table_remove(&S->seen, x);
27940
0
    return;
27941
0
}
27942
27943
0
static JanetBuffer *janet_pretty_(JanetBuffer *buffer, int depth, int flags, Janet x, int32_t startlen) {
27944
0
    struct pretty S;
27945
0
    if (NULL == buffer) {
27946
0
        buffer = janet_buffer(0);
27947
0
    }
27948
0
    S.buffer = buffer;
27949
0
    S.depth = depth;
27950
0
    S.indent = 0;
27951
0
    S.flags = flags;
27952
0
    S.bufstartlen = startlen;
27953
0
    S.keysort_capacity = 0;
27954
0
    S.keysort_buffer = NULL;
27955
0
    S.keysort_start = 0;
27956
0
    janet_table_init(&S.seen, 10);
27957
0
    janet_pretty_one(&S, x, 0);
27958
0
    janet_table_deinit(&S.seen);
27959
0
    return S.buffer;
27960
0
}
27961
27962
/* Helper for printing a janet value in a pretty form. Not meant to be used
27963
 * for serialization or anything like that. */
27964
0
JanetBuffer *janet_pretty(JanetBuffer *buffer, int depth, int flags, Janet x) {
27965
0
    return janet_pretty_(buffer, depth, flags, x, buffer ? buffer->count : 0);
27966
0
}
27967
27968
0
static JanetBuffer *janet_jdn_(JanetBuffer *buffer, int depth, Janet x, int32_t startlen) {
27969
0
    struct pretty S;
27970
0
    if (NULL == buffer) {
27971
0
        buffer = janet_buffer(0);
27972
0
    }
27973
0
    S.buffer = buffer;
27974
0
    S.depth = depth;
27975
0
    S.indent = 0;
27976
0
    S.flags = 0;
27977
0
    S.bufstartlen = startlen;
27978
0
    S.keysort_capacity = 0;
27979
0
    S.keysort_buffer = NULL;
27980
0
    S.keysort_start = 0;
27981
0
    janet_table_init(&S.seen, 10);
27982
0
    int res = print_jdn_one(&S, x, depth);
27983
0
    janet_table_deinit(&S.seen);
27984
0
    if (res) {
27985
0
        janet_panic("could not print to jdn format");
27986
0
    }
27987
0
    return S.buffer;
27988
0
}
27989
27990
0
JanetBuffer *janet_jdn(JanetBuffer *buffer, int depth, Janet x) {
27991
0
    return janet_jdn_(buffer, depth, x, buffer ? buffer->count : 0);
27992
0
}
27993
27994
0
static const char *typestr(Janet x) {
27995
0
    JanetType t = janet_type(x);
27996
0
    return (t == JANET_ABSTRACT)
27997
0
           ? janet_abstract_type(janet_unwrap_abstract(x))->name
27998
0
           : janet_type_names[t];
27999
0
}
28000
28001
0
static void pushtypes(JanetBuffer *buffer, int types) {
28002
0
    int first = 1;
28003
0
    int i = 0;
28004
0
    while (types) {
28005
0
        if (1 & types) {
28006
0
            if (first) {
28007
0
                first = 0;
28008
0
            } else {
28009
0
                janet_buffer_push_cstring(buffer, (types == 1) ? " or " : ", ");
28010
0
            }
28011
0
            janet_buffer_push_cstring(buffer, janet_type_names[i]);
28012
0
        }
28013
0
        i++;
28014
0
        types >>= 1;
28015
0
    }
28016
0
}
28017
28018
/*
28019
 * code adapted from lua/lstrlib.c http://lua.org
28020
 */
28021
28022
240
#define MAX_ITEM  256
28023
240
#define FMT_FLAGS "-+ #0"
28024
120
#define FMT_REPLACE_INTTYPES "diouxX"
28025
#define MAX_FORMAT 32
28026
28027
struct FmtMapping {
28028
    char c;
28029
    const char *mapping;
28030
};
28031
28032
/* Janet uses fixed width integer types for most things, so map
28033
 * format specifiers to these fixed sizes */
28034
static const struct FmtMapping format_mappings[] = {
28035
    {'D', PRId64},
28036
    {'I', PRIi64},
28037
    {'d', PRId64},
28038
    {'i', PRIi64},
28039
    {'o', PRIo64},
28040
    {'u', PRIu64},
28041
    {'x', PRIx64},
28042
    {'X', PRIX64},
28043
};
28044
28045
120
static const char *get_fmt_mapping(char c) {
28046
360
    for (size_t i = 0; i < (sizeof(format_mappings) / sizeof(struct FmtMapping)); i++) {
28047
360
        if (format_mappings[i].c == c)
28048
120
            return format_mappings[i].mapping;
28049
360
    }
28050
0
    janet_assert(0, "bad format mapping");
28051
0
}
28052
28053
static const char *scanformat(
28054
    const char *strfrmt,
28055
    char *form,
28056
    char width[3],
28057
120
    char precision[3]) {
28058
120
    const char *p = strfrmt;
28059
28060
    /* Parse strfrmt */
28061
120
    memset(width, '\0', 3);
28062
120
    memset(precision, '\0', 3);
28063
120
    while (*p != '\0' && strchr(FMT_FLAGS, *p) != NULL)
28064
0
        p++; /* skip flags */
28065
120
    if ((size_t)(p - strfrmt) >= sizeof(FMT_FLAGS)) janet_panic("invalid format (repeated flags)");
28066
120
    if (isdigit((int)(*p)))
28067
0
        width[0] = *p++; /* skip width */
28068
120
    if (isdigit((int)(*p)))
28069
0
        width[1] = *p++; /* (2 digits at most) */
28070
120
    if (*p == '.') {
28071
0
        p++;
28072
0
        if (isdigit((int)(*p)))
28073
0
            precision[0] = *p++; /* skip precision */
28074
0
        if (isdigit((int)(*p)))
28075
0
            precision[1] = *p++; /* (2 digits at most) */
28076
0
    }
28077
120
    if (isdigit((int)(*p)))
28078
0
        janet_panic("invalid format (width or precision too long)");
28079
28080
    /* Write to form - replace characters with fixed size stuff */
28081
120
    *(form++) = '%';
28082
120
    const char *p2 = strfrmt;
28083
240
    while (p2 <= p) {
28084
120
        char *loc = strchr(FMT_REPLACE_INTTYPES, *p2);
28085
120
        if (loc != NULL && *loc != '\0') {
28086
120
            const char *mapping = get_fmt_mapping(*p2++);
28087
120
            size_t len = strlen(mapping);
28088
120
            memcpy(form, mapping, len);
28089
120
            form += len;
28090
120
        } else {
28091
0
            *(form++) = *(p2++);
28092
0
        }
28093
120
    }
28094
120
    *form = '\0';
28095
28096
120
    return p;
28097
120
}
28098
28099
60
void janet_formatbv(JanetBuffer *b, const char *format, va_list args) {
28100
60
    const char *format_end = format + strlen(format);
28101
60
    const char *c = format;
28102
60
    int32_t startlen = b->count;
28103
1.68k
    while (c < format_end) {
28104
1.62k
        if (*c != '%') {
28105
1.50k
            janet_buffer_push_u8(b, (uint8_t) *c++);
28106
1.50k
        } else if (*++c == '%') {
28107
0
            janet_buffer_push_u8(b, (uint8_t) *c++);
28108
120
        } else {
28109
120
            char form[MAX_FORMAT], item[MAX_ITEM];
28110
120
            char width[3], precision[3];
28111
120
            int nb = 0; /* number of bytes in added item */
28112
120
            c = scanformat(c, form, width, precision);
28113
120
            switch (*c++) {
28114
0
                case 'c': {
28115
0
                    int n = va_arg(args, int);
28116
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28117
0
                    break;
28118
0
                }
28119
120
                case 'd':
28120
120
                case 'i': {
28121
120
                    int64_t n = (int64_t) va_arg(args, int32_t);
28122
120
                    nb = snprintf(item, MAX_ITEM, form, n);
28123
120
                    break;
28124
120
                }
28125
0
                case 'D':
28126
0
                case 'I': {
28127
0
                    int64_t n = va_arg(args, int64_t);
28128
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28129
0
                    break;
28130
0
                }
28131
0
                case 'x':
28132
0
                case 'X':
28133
0
                case 'o':
28134
0
                case 'u': {
28135
0
                    uint64_t n = va_arg(args, uint64_t);
28136
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28137
0
                    break;
28138
0
                }
28139
0
                case 'a':
28140
0
                case 'A':
28141
0
                case 'e':
28142
0
                case 'E':
28143
0
                case 'f':
28144
0
                case 'g':
28145
0
                case 'G': {
28146
0
                    double d = va_arg(args, double);
28147
0
                    nb = snprintf(item, MAX_ITEM, form, d);
28148
0
                    break;
28149
0
                }
28150
0
                case 's':
28151
0
                case 'S': {
28152
0
                    const char *str = va_arg(args, const char *);
28153
0
                    int32_t len = c[-1] == 's'
28154
0
                                  ? (int32_t) strlen(str)
28155
0
                                  : janet_string_length((JanetString) str);
28156
0
                    if (form[2] == '\0')
28157
0
                        janet_buffer_push_bytes(b, (const uint8_t *) str, len);
28158
0
                    else {
28159
0
                        if (len != (int32_t) strlen((const char *) str))
28160
0
                            janet_panic("string contains zeros");
28161
0
                        if (!strchr(form, '.') && len >= 100) {
28162
0
                            janet_panic("no precision and string is too long to be formatted");
28163
0
                        } else {
28164
0
                            nb = snprintf(item, MAX_ITEM, form, str);
28165
0
                        }
28166
0
                    }
28167
0
                    break;
28168
0
                }
28169
0
                case 'V':
28170
0
                    janet_to_string_b(b, va_arg(args, Janet));
28171
0
                    break;
28172
0
                case 'v':
28173
0
                    janet_description_b(b, va_arg(args, Janet));
28174
0
                    break;
28175
0
                case 't':
28176
0
                    janet_buffer_push_cstring(b, typestr(va_arg(args, Janet)));
28177
0
                    break;
28178
0
                case 'T': {
28179
0
                    int types = va_arg(args, int);
28180
0
                    pushtypes(b, types);
28181
0
                    break;
28182
0
                }
28183
0
                case 'M':
28184
0
                case 'm':
28185
0
                case 'N':
28186
0
                case 'n':
28187
0
                case 'Q':
28188
0
                case 'q':
28189
0
                case 'P':
28190
0
                case 'p': { /* janet pretty , precision = depth */
28191
0
                    int depth = atoi(precision);
28192
0
                    if (depth < 1) depth = JANET_RECURSION_GUARD;
28193
0
                    char d = c[-1];
28194
0
                    int has_color = (d == 'P') || (d == 'Q') || (d == 'M') || (d == 'N');
28195
0
                    int has_oneline = (d == 'Q') || (d == 'q') || (d == 'N') || (d == 'n');
28196
0
                    int has_notrunc = (d == 'M') || (d == 'm') || (d == 'N') || (d == 'n');
28197
0
                    int flags = 0;
28198
0
                    flags |= has_color ? JANET_PRETTY_COLOR : 0;
28199
0
                    flags |= has_oneline ? JANET_PRETTY_ONELINE : 0;
28200
0
                    flags |= has_notrunc ? JANET_PRETTY_NOTRUNC : 0;
28201
0
                    janet_pretty_(b, depth, flags, va_arg(args, Janet), startlen);
28202
0
                    break;
28203
0
                }
28204
0
                case 'j': {
28205
0
                    int depth = atoi(precision);
28206
0
                    if (depth < 1)
28207
0
                        depth = JANET_RECURSION_GUARD;
28208
0
                    janet_jdn_(b, depth, va_arg(args, Janet), startlen);
28209
0
                    break;
28210
0
                }
28211
0
                default: {
28212
                    /* also treat cases 'nLlh' */
28213
0
                    janet_panicf("invalid conversion '%s' to 'format'",
28214
0
                                 form);
28215
0
                }
28216
120
            }
28217
120
            if (nb >= MAX_ITEM)
28218
0
                janet_panic("format buffer overflow");
28219
120
            if (nb > 0)
28220
120
                janet_buffer_push_bytes(b, (uint8_t *) item, nb);
28221
120
        }
28222
28223
1.62k
    }
28224
60
}
28225
28226
/* Helper function for formatting strings. Useful for generating error messages and the like.
28227
 * Similar to printf, but specialized for operating with janet. */
28228
0
const uint8_t *janet_formatc(const char *format, ...) {
28229
0
    va_list args;
28230
0
    const uint8_t *ret;
28231
0
    JanetBuffer buffer;
28232
0
    int32_t len = 0;
28233
28234
    /* Calculate length, init buffer and args */
28235
0
    while (format[len]) len++;
28236
0
    janet_buffer_init(&buffer, len);
28237
0
    va_start(args, format);
28238
28239
    /* Run format */
28240
0
    janet_formatbv(&buffer, format, args);
28241
28242
    /* Iterate length */
28243
0
    va_end(args);
28244
28245
0
    ret = janet_string(buffer.data, buffer.count);
28246
0
    janet_buffer_deinit(&buffer);
28247
0
    return ret;
28248
0
}
28249
28250
60
JanetBuffer *janet_formatb(JanetBuffer *buffer, const char *format, ...) {
28251
60
    va_list args;
28252
60
    va_start(args, format);
28253
60
    janet_formatbv(buffer, format, args);
28254
60
    va_end(args);
28255
60
    return buffer;
28256
60
}
28257
28258
/* Shared implementation between string/format and
28259
 * buffer/format */
28260
void janet_buffer_format(
28261
    JanetBuffer *b,
28262
    const char *strfrmt,
28263
    int32_t argstart,
28264
    int32_t argc,
28265
0
    Janet *argv) {
28266
0
    size_t sfl = strlen(strfrmt);
28267
0
    const char *strfrmt_end = strfrmt + sfl;
28268
0
    int32_t arg = argstart;
28269
0
    int32_t startlen = b->count;
28270
0
    while (strfrmt < strfrmt_end) {
28271
0
        if (*strfrmt != '%')
28272
0
            janet_buffer_push_u8(b, (uint8_t) * strfrmt++);
28273
0
        else if (*++strfrmt == '%')
28274
0
            janet_buffer_push_u8(b, (uint8_t) * strfrmt++); /* %% */
28275
0
        else { /* format item */
28276
0
            char form[MAX_FORMAT], item[MAX_ITEM];
28277
0
            char width[3], precision[3];
28278
0
            int nb = 0; /* number of bytes in added item */
28279
0
            if (++arg >= argc)
28280
0
                janet_panic("not enough values for format");
28281
0
            strfrmt = scanformat(strfrmt, form, width, precision);
28282
0
            switch (*strfrmt++) {
28283
0
                case 'c': {
28284
0
                    nb = snprintf(item, MAX_ITEM, form, (int)
28285
0
                                  janet_getinteger(argv, arg));
28286
0
                    break;
28287
0
                }
28288
0
                case 'D':
28289
0
                case 'I':
28290
0
                case 'd':
28291
0
                case 'i': {
28292
0
                    int64_t n = janet_getinteger64(argv, arg);
28293
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28294
0
                    break;
28295
0
                }
28296
0
                case 'x':
28297
0
                case 'X':
28298
0
                case 'o':
28299
0
                case 'u': {
28300
0
                    uint64_t n = janet_getuinteger64(argv, arg);
28301
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28302
0
                    break;
28303
0
                }
28304
0
                case 'a':
28305
0
                case 'A':
28306
0
                case 'e':
28307
0
                case 'E':
28308
0
                case 'f':
28309
0
                case 'g':
28310
0
                case 'G': {
28311
0
                    double d = janet_getnumber(argv, arg);
28312
0
                    nb = snprintf(item, MAX_ITEM, form, d);
28313
0
                    break;
28314
0
                }
28315
0
                case 's': {
28316
0
                    JanetByteView bytes = janet_getbytes(argv, arg);
28317
0
                    const uint8_t *s = bytes.bytes;
28318
0
                    int32_t l = bytes.len;
28319
0
                    if (form[2] == '\0')
28320
0
                        janet_buffer_push_bytes(b, s, l);
28321
0
                    else {
28322
0
                        if (l != (int32_t) strnlen((const char *) s, l))
28323
0
                            janet_panic("string contains zeros");
28324
0
                        if (!strchr(form, '.') && l >= 100) {
28325
0
                            janet_panic("no precision and string is too long to be formatted");
28326
0
                        } else {
28327
0
                            nb = snprintf(item, MAX_ITEM, form, s);
28328
0
                        }
28329
0
                    }
28330
0
                    break;
28331
0
                }
28332
0
                case 'V': {
28333
0
                    janet_to_string_b(b, argv[arg]);
28334
0
                    break;
28335
0
                }
28336
0
                case 'v': {
28337
0
                    janet_description_b(b, argv[arg]);
28338
0
                    break;
28339
0
                }
28340
0
                case 't':
28341
0
                    janet_buffer_push_cstring(b, typestr(argv[arg]));
28342
0
                    break;
28343
0
                case 'M':
28344
0
                case 'm':
28345
0
                case 'N':
28346
0
                case 'n':
28347
0
                case 'Q':
28348
0
                case 'q':
28349
0
                case 'P':
28350
0
                case 'p': { /* janet pretty , precision = depth */
28351
0
                    int depth = atoi(precision);
28352
0
                    if (depth < 1) depth = JANET_RECURSION_GUARD;
28353
0
                    char d = strfrmt[-1];
28354
0
                    int has_color = (d == 'P') || (d == 'Q') || (d == 'M') || (d == 'N');
28355
0
                    int has_oneline = (d == 'Q') || (d == 'q') || (d == 'N') || (d == 'n');
28356
0
                    int has_notrunc = (d == 'M') || (d == 'm') || (d == 'N') || (d == 'n');
28357
0
                    int flags = 0;
28358
0
                    flags |= has_color ? JANET_PRETTY_COLOR : 0;
28359
0
                    flags |= has_oneline ? JANET_PRETTY_ONELINE : 0;
28360
0
                    flags |= has_notrunc ? JANET_PRETTY_NOTRUNC : 0;
28361
0
                    janet_pretty_(b, depth, flags, argv[arg], startlen);
28362
0
                    break;
28363
0
                }
28364
0
                case 'j': {
28365
0
                    int depth = atoi(precision);
28366
0
                    if (depth < 1)
28367
0
                        depth = JANET_RECURSION_GUARD;
28368
0
                    janet_jdn_(b, depth, argv[arg], startlen);
28369
0
                    break;
28370
0
                }
28371
0
                default: {
28372
                    /* also treat cases 'nLlh' */
28373
0
                    janet_panicf("invalid conversion '%s' to 'format'",
28374
0
                                 form);
28375
0
                }
28376
0
            }
28377
0
            if (nb >= MAX_ITEM)
28378
0
                janet_panic("format buffer overflow");
28379
0
            if (nb > 0)
28380
0
                janet_buffer_push_bytes(b, (uint8_t *) item, nb);
28381
0
        }
28382
0
    }
28383
0
}
28384
28385
#undef HEX
28386
#undef BUFSIZE
28387
28388
28389
/* src/core/regalloc.c */
28390
#line 0 "src/core/regalloc.c"
28391
28392
/*
28393
* Copyright (c) 2025 Calvin Rose
28394
*
28395
* Permission is hereby granted, free of charge, to any person obtaining a copy
28396
* of this software and associated documentation files (the "Software"), to
28397
* deal in the Software without restriction, including without limitation the
28398
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28399
* sell copies of the Software, and to permit persons to whom the Software is
28400
* furnished to do so, subject to the following conditions:
28401
*
28402
* The above copyright notice and this permission notice shall be included in
28403
* all copies or substantial portions of the Software.
28404
*
28405
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28406
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28407
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28408
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28409
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28410
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28411
* IN THE SOFTWARE.
28412
*/
28413
28414
#ifndef JANET_AMALG
28415
#include "features.h"
28416
#include <janet.h>
28417
#include "regalloc.h"
28418
#include "util.h"
28419
#endif
28420
28421
/* The JanetRegisterAllocator is really just a bitset. */
28422
28423
0
void janetc_regalloc_init(JanetcRegisterAllocator *ra) {
28424
0
    ra->chunks = NULL;
28425
0
    ra->count = 0;
28426
0
    ra->capacity = 0;
28427
0
    ra->max = 0;
28428
0
    ra->regtemps = 0;
28429
0
}
28430
28431
0
void janetc_regalloc_deinit(JanetcRegisterAllocator *ra) {
28432
0
    janet_free(ra->chunks);
28433
0
}
28434
28435
/* Fallbacks for when ctz not available */
28436
#ifdef __GNUC__
28437
#define count_trailing_zeros(x) __builtin_ctz(x)
28438
0
#define count_trailing_ones(x) __builtin_ctz(~(x))
28439
#else
28440
static int32_t count_trailing_ones(uint32_t x) {
28441
    int32_t ret = 0;
28442
    while (x & 1) {
28443
        ret++;
28444
        x >>= 1;
28445
    }
28446
    return ret;
28447
}
28448
#define count_trailing_zeros(x) count_trailing_ones(~(x))
28449
#endif
28450
28451
/* Get ith bit */
28452
0
#define ithbit(I) ((uint32_t)1 << (I))
28453
28454
/* Get N bits */
28455
#define nbits(N) (ithbit(N) - 1)
28456
28457
/* Copy a register allocator */
28458
0
void janetc_regalloc_clone(JanetcRegisterAllocator *dest, JanetcRegisterAllocator *src) {
28459
0
    size_t size;
28460
0
    dest->count = src->count;
28461
0
    dest->capacity = src->capacity;
28462
0
    dest->max = src->max;
28463
0
    size = sizeof(uint32_t) * (size_t) dest->capacity;
28464
0
    dest->regtemps = 0;
28465
0
    if (size) {
28466
0
        dest->chunks = janet_malloc(size);
28467
0
        if (!dest->chunks) {
28468
0
            JANET_OUT_OF_MEMORY;
28469
0
        }
28470
0
        memcpy(dest->chunks, src->chunks, size);
28471
0
    } else {
28472
0
        dest->chunks = NULL;
28473
0
    }
28474
0
}
28475
28476
/* Allocate one more chunk in chunks */
28477
0
static void pushchunk(JanetcRegisterAllocator *ra) {
28478
    /* Registers 240-255 are always allocated (reserved) */
28479
0
    uint32_t chunk = ra->count == 7 ? 0xFFFF0000 : 0;
28480
0
    int32_t newcount = ra->count + 1;
28481
0
    if (newcount > ra->capacity) {
28482
0
        int32_t newcapacity = newcount * 2;
28483
0
        ra->chunks = janet_realloc(ra->chunks, (size_t) newcapacity * sizeof(uint32_t));
28484
0
        if (!ra->chunks) {
28485
0
            JANET_OUT_OF_MEMORY;
28486
0
        }
28487
0
        ra->capacity = newcapacity;
28488
0
    }
28489
0
    ra->chunks[ra->count] = chunk;
28490
0
    ra->count = newcount;
28491
0
}
28492
28493
/* Reallocate a given register */
28494
0
void janetc_regalloc_touch(JanetcRegisterAllocator *ra, int32_t reg) {
28495
0
    int32_t chunk = reg >> 5;
28496
0
    int32_t bit = reg & 0x1F;
28497
0
    while (chunk >= ra->count) pushchunk(ra);
28498
0
    ra->chunks[chunk] |= ithbit(bit);
28499
0
}
28500
28501
/* Allocate one register. */
28502
0
int32_t janetc_regalloc_1(JanetcRegisterAllocator *ra) {
28503
    /* Get the nth bit in the array */
28504
0
    int32_t bit, chunk, nchunks, reg;
28505
0
    bit = -1;
28506
0
    nchunks = ra->count;
28507
0
    for (chunk = 0; chunk < nchunks; chunk++) {
28508
0
        uint32_t block = ra->chunks[chunk];
28509
0
        if (block == 0xFFFFFFFF) continue;
28510
0
        bit = count_trailing_ones(block);
28511
0
        break;
28512
0
    }
28513
    /* No reg found */
28514
0
    if (bit == -1) {
28515
0
        pushchunk(ra);
28516
0
        bit = 0;
28517
0
        chunk = nchunks;
28518
0
    }
28519
    /* set the bit at index bit in chunk */
28520
0
    ra->chunks[chunk] |= ithbit(bit);
28521
0
    reg = (chunk << 5) + bit;
28522
0
    if (reg > ra->max)
28523
0
        ra->max = reg;
28524
0
    return reg;
28525
0
}
28526
28527
/* Free a register. The register must have been previously allocated
28528
 * without being freed. */
28529
0
void janetc_regalloc_free(JanetcRegisterAllocator *ra, int32_t reg) {
28530
0
    int32_t chunk = reg >> 5;
28531
0
    int32_t bit = reg & 0x1F;
28532
0
    ra->chunks[chunk] &= ~ithbit(bit);
28533
0
}
28534
28535
/* Check if a register is set. */
28536
0
int janetc_regalloc_check(JanetcRegisterAllocator *ra, int32_t reg) {
28537
0
    int32_t chunk = reg >> 5;
28538
0
    int32_t bit = reg & 0x1F;
28539
0
    while (chunk >= ra->count) pushchunk(ra);
28540
0
    return !!(ra->chunks[chunk] & ithbit(bit));
28541
0
}
28542
28543
/* Get a register that will fit in 8 bits (< 256). Do not call this
28544
 * twice with the same value of nth without calling janetc_regalloc_free
28545
 * on the returned register before. */
28546
0
int32_t janetc_regalloc_temp(JanetcRegisterAllocator *ra, JanetcRegisterTemp nth) {
28547
0
    int32_t oldmax = ra->max;
28548
0
    if (ra->regtemps & (1 << nth)) {
28549
0
        JANET_EXIT("regtemp already allocated");
28550
0
    }
28551
0
    ra->regtemps |= 1 << nth;
28552
0
    int32_t reg = janetc_regalloc_1(ra);
28553
0
    if (reg > 0xFF) {
28554
0
        reg = 0xF0 + nth;
28555
0
        ra->max = (reg > oldmax) ? reg : oldmax;
28556
0
    }
28557
0
    return reg;
28558
0
}
28559
28560
0
void janetc_regalloc_freetemp(JanetcRegisterAllocator *ra, int32_t reg, JanetcRegisterTemp nth) {
28561
0
    ra->regtemps &= ~(1 << nth);
28562
0
    if (reg < 0xF0)
28563
0
        janetc_regalloc_free(ra, reg);
28564
0
}
28565
28566
28567
/* src/core/run.c */
28568
#line 0 "src/core/run.c"
28569
28570
/*
28571
* Copyright (c) 2025 Calvin Rose
28572
*
28573
* Permission is hereby granted, free of charge, to any person obtaining a copy
28574
* of this software and associated documentation files (the "Software"), to
28575
* deal in the Software without restriction, including without limitation the
28576
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28577
* sell copies of the Software, and to permit persons to whom the Software is
28578
* furnished to do so, subject to the following conditions:
28579
*
28580
* The above copyright notice and this permission notice shall be included in
28581
* all copies or substantial portions of the Software.
28582
*
28583
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28584
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28585
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28586
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28587
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28588
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28589
* IN THE SOFTWARE.
28590
*/
28591
28592
#ifndef JANET_AMALG
28593
#include "features.h"
28594
#include <janet.h>
28595
#include "state.h"
28596
#endif
28597
28598
/* Run a string */
28599
0
int janet_dobytes(JanetTable *env, const uint8_t *bytes, int32_t len, const char *sourcePath, Janet *out) {
28600
0
    JanetParser *parser;
28601
0
    int errflags = 0, done = 0;
28602
0
    int32_t index = 0;
28603
0
    Janet ret = janet_wrap_nil();
28604
0
    JanetFiber *fiber = NULL;
28605
0
    const uint8_t *where = sourcePath ? janet_cstring(sourcePath) : NULL;
28606
28607
0
    if (where) janet_gcroot(janet_wrap_string(where));
28608
0
    if (NULL == sourcePath) sourcePath = "<unknown>";
28609
0
    parser = janet_abstract(&janet_parser_type, sizeof(JanetParser));
28610
0
    janet_parser_init(parser);
28611
0
    janet_gcroot(janet_wrap_abstract(parser));
28612
28613
    /* While we haven't seen an error */
28614
0
    while (!done) {
28615
28616
        /* Evaluate parsed values */
28617
0
        while (janet_parser_has_more(parser)) {
28618
0
            Janet form = janet_parser_produce(parser);
28619
0
            JanetCompileResult cres = janet_compile(form, env, where);
28620
0
            if (cres.status == JANET_COMPILE_OK) {
28621
0
                JanetFunction *f = janet_thunk(cres.funcdef);
28622
0
                fiber = janet_fiber(f, 64, 0, NULL);
28623
0
                fiber->env = env;
28624
0
                JanetSignal status = janet_continue(fiber, janet_wrap_nil(), &ret);
28625
0
                if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
28626
0
                    janet_stacktrace_ext(fiber, ret, "");
28627
0
                    errflags |= 0x01;
28628
0
                    done = 1;
28629
0
                }
28630
0
            } else {
28631
0
                ret = janet_wrap_string(cres.error);
28632
0
                int32_t line = (int32_t) parser->line;
28633
0
                int32_t col = (int32_t) parser->column;
28634
0
                if ((cres.error_mapping.line > 0) &&
28635
0
                        (cres.error_mapping.column > 0)) {
28636
0
                    line = cres.error_mapping.line;
28637
0
                    col = cres.error_mapping.column;
28638
0
                }
28639
0
                if (cres.macrofiber) {
28640
0
                    janet_eprintf("%s:%d:%d: compile error", sourcePath,
28641
0
                                  line, col);
28642
0
                    janet_stacktrace_ext(cres.macrofiber, ret, "");
28643
0
                } else {
28644
0
                    janet_eprintf("%s:%d:%d: compile error: %s\n", sourcePath,
28645
0
                                  line, col, (const char *)cres.error);
28646
0
                }
28647
0
                errflags |= 0x02;
28648
0
                done = 1;
28649
0
            }
28650
0
        }
28651
28652
0
        if (done) break;
28653
28654
        /* Dispatch based on parse state */
28655
0
        switch (janet_parser_status(parser)) {
28656
0
            case JANET_PARSE_DEAD:
28657
0
                done = 1;
28658
0
                break;
28659
0
            case JANET_PARSE_ERROR: {
28660
0
                const char *e = janet_parser_error(parser);
28661
0
                errflags |= 0x04;
28662
0
                ret = janet_cstringv(e);
28663
0
                int32_t line = (int32_t) parser->line;
28664
0
                int32_t col = (int32_t) parser->column;
28665
0
                janet_eprintf("%s:%d:%d: parse error: %s\n", sourcePath, line, col, e);
28666
0
                done = 1;
28667
0
                break;
28668
0
            }
28669
0
            case JANET_PARSE_ROOT:
28670
0
            case JANET_PARSE_PENDING:
28671
0
                if (index >= len) {
28672
0
                    janet_parser_eof(parser);
28673
0
                } else {
28674
0
                    janet_parser_consume(parser, bytes[index++]);
28675
0
                }
28676
0
                break;
28677
0
        }
28678
28679
0
    }
28680
28681
    /* Clean up and return errors */
28682
0
    janet_gcunroot(janet_wrap_abstract(parser));
28683
0
    if (where) janet_gcunroot(janet_wrap_string(where));
28684
0
#ifdef JANET_EV
28685
    /* Enter the event loop if we are not already in it */
28686
0
    if (janet_vm.stackn == 0) {
28687
0
        if (fiber) {
28688
0
            janet_gcroot(janet_wrap_fiber(fiber));
28689
0
        }
28690
0
        janet_loop();
28691
0
        if (fiber) {
28692
0
            janet_gcunroot(janet_wrap_fiber(fiber));
28693
0
            ret = fiber->last_value;
28694
0
        }
28695
0
    }
28696
0
#endif
28697
0
    if (out) *out = ret;
28698
0
    return errflags;
28699
0
}
28700
28701
0
int janet_dostring(JanetTable *env, const char *str, const char *sourcePath, Janet *out) {
28702
0
    int32_t len = 0;
28703
0
    while (str[len]) ++len;
28704
0
    return janet_dobytes(env, (const uint8_t *)str, len, sourcePath, out);
28705
0
}
28706
28707
/* Run a fiber to completion (use event loop if enabled). Return the status. */
28708
0
int janet_loop_fiber(JanetFiber *fiber) {
28709
0
    int status;
28710
0
#ifdef JANET_EV
28711
0
    janet_schedule(fiber, janet_wrap_nil());
28712
0
    janet_loop();
28713
0
    status = janet_fiber_status(fiber);
28714
#else
28715
    Janet out;
28716
    status = janet_continue(fiber, janet_wrap_nil(), &out);
28717
    if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
28718
        janet_stacktrace_ext(fiber, out, "");
28719
    }
28720
#endif
28721
0
    return status;
28722
0
}
28723
28724
28725
/* src/core/specials.c */
28726
#line 0 "src/core/specials.c"
28727
28728
/*
28729
* Copyright (c) 2025 Calvin Rose
28730
*
28731
* Permission is hereby granted, free of charge, to any person obtaining a copy
28732
* of this software and associated documentation files (the "Software"), to
28733
* deal in the Software without restriction, including without limitation the
28734
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28735
* sell copies of the Software, and to permit persons to whom the Software is
28736
* furnished to do so, subject to the following conditions:
28737
*
28738
* The above copyright notice and this permission notice shall be included in
28739
* all copies or substantial portions of the Software.
28740
*
28741
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28742
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28743
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28744
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28745
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28746
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28747
* IN THE SOFTWARE.
28748
*/
28749
28750
#ifndef JANET_AMALG
28751
#include "features.h"
28752
#include <janet.h>
28753
#include "compile.h"
28754
#include "util.h"
28755
#include "vector.h"
28756
#include "emit.h"
28757
#endif
28758
28759
0
static JanetSlot janetc_quote(JanetFopts opts, int32_t argn, const Janet *argv) {
28760
0
    if (argn != 1) {
28761
0
        janetc_cerror(opts.compiler, "expected 1 argument to quote");
28762
0
        return janetc_cslot(janet_wrap_nil());
28763
0
    }
28764
0
    return janetc_cslot(argv[0]);
28765
0
}
28766
28767
0
static JanetSlot janetc_splice(JanetFopts opts, int32_t argn, const Janet *argv) {
28768
0
    JanetSlot ret;
28769
0
    if (!(opts.flags & JANET_FOPTS_ACCEPT_SPLICE)) {
28770
0
        janetc_cerror(opts.compiler, "splice can only be used in function parameters and data constructors, it has no effect here");
28771
0
        return janetc_cslot(janet_wrap_nil());
28772
0
    }
28773
0
    if (argn != 1) {
28774
0
        janetc_cerror(opts.compiler, "expected 1 argument to splice");
28775
0
        return janetc_cslot(janet_wrap_nil());
28776
0
    }
28777
0
    ret = janetc_value(opts, argv[0]);
28778
0
    ret.flags |= JANET_SLOT_SPLICED;
28779
0
    return ret;
28780
0
}
28781
28782
0
static JanetSlot qq_slots(JanetFopts opts, JanetSlot *slots, int makeop) {
28783
0
    JanetSlot target = janetc_gettarget(opts);
28784
0
    janetc_pushslots(opts.compiler, slots);
28785
0
    janetc_freeslots(opts.compiler, slots);
28786
0
    janetc_emit_s(opts.compiler, makeop, target, 1);
28787
0
    return target;
28788
0
}
28789
28790
0
static JanetSlot quasiquote(JanetFopts opts, Janet x, int depth, int level) {
28791
0
    if (depth == 0) {
28792
0
        janetc_cerror(opts.compiler, "quasiquote too deeply nested");
28793
0
        return janetc_cslot(janet_wrap_nil());
28794
0
    }
28795
0
    JanetSlot *slots = NULL;
28796
0
    JanetFopts subopts = opts;
28797
0
    subopts.flags &= ~JANET_FOPTS_HINT;
28798
0
    switch (janet_type(x)) {
28799
0
        default:
28800
0
            return janetc_cslot(x);
28801
0
        case JANET_TUPLE: {
28802
0
            int32_t i, len;
28803
0
            const Janet *tup = janet_unwrap_tuple(x);
28804
0
            len = janet_tuple_length(tup);
28805
0
            if (len > 1 && janet_checktype(tup[0], JANET_SYMBOL)) {
28806
0
                const uint8_t *head = janet_unwrap_symbol(tup[0]);
28807
0
                if (!janet_cstrcmp(head, "unquote")) {
28808
0
                    if (level == 0) {
28809
0
                        JanetFopts subopts = janetc_fopts_default(opts.compiler);
28810
0
                        subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
28811
0
                        return janetc_value(subopts, tup[1]);
28812
0
                    } else {
28813
0
                        level--;
28814
0
                    }
28815
0
                } else if (!janet_cstrcmp(head, "quasiquote")) {
28816
0
                    level++;
28817
0
                }
28818
0
            }
28819
0
            for (i = 0; i < len; i++)
28820
0
                janet_v_push(slots, quasiquote(subopts, tup[i], depth - 1, level));
28821
0
            return qq_slots(opts, slots, (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR)
28822
0
                            ? JOP_MAKE_BRACKET_TUPLE
28823
0
                            : JOP_MAKE_TUPLE);
28824
0
        }
28825
0
        case JANET_ARRAY: {
28826
0
            int32_t i;
28827
0
            JanetArray *array = janet_unwrap_array(x);
28828
0
            for (i = 0; i < array->count; i++)
28829
0
                janet_v_push(slots, quasiquote(subopts, array->data[i], depth - 1, level));
28830
0
            return qq_slots(opts, slots, JOP_MAKE_ARRAY);
28831
0
        }
28832
0
        case JANET_TABLE:
28833
0
        case JANET_STRUCT: {
28834
0
            const JanetKV *kv = NULL, *kvs = NULL;
28835
0
            int32_t len, cap = 0;
28836
0
            janet_dictionary_view(x, &kvs, &len, &cap);
28837
0
            while ((kv = janet_dictionary_next(kvs, cap, kv))) {
28838
0
                JanetSlot key = quasiquote(subopts, kv->key, depth - 1, level);
28839
0
                JanetSlot value =  quasiquote(subopts, kv->value, depth - 1, level);
28840
0
                key.flags &= ~JANET_SLOT_SPLICED;
28841
0
                value.flags &= ~JANET_SLOT_SPLICED;
28842
0
                janet_v_push(slots, key);
28843
0
                janet_v_push(slots, value);
28844
0
            }
28845
0
            return qq_slots(opts, slots,
28846
0
                            janet_checktype(x, JANET_TABLE) ? JOP_MAKE_TABLE : JOP_MAKE_STRUCT);
28847
0
        }
28848
0
    }
28849
0
}
28850
28851
0
static JanetSlot janetc_quasiquote(JanetFopts opts, int32_t argn, const Janet *argv) {
28852
0
    if (argn != 1) {
28853
0
        janetc_cerror(opts.compiler, "expected 1 argument to quasiquote");
28854
0
        return janetc_cslot(janet_wrap_nil());
28855
0
    }
28856
0
    return quasiquote(opts, argv[0], JANET_RECURSION_GUARD, 0);
28857
0
}
28858
28859
0
static JanetSlot janetc_unquote(JanetFopts opts, int32_t argn, const Janet *argv) {
28860
0
    (void) argn;
28861
0
    (void) argv;
28862
0
    janetc_cerror(opts.compiler, "cannot use unquote here");
28863
0
    return janetc_cslot(janet_wrap_nil());
28864
0
}
28865
28866
/* Perform destructuring. Be careful to
28867
 * keep the order registers are freed.
28868
 * Returns if the slot 'right' can be freed. */
28869
static int destructure(JanetCompiler *c,
28870
                       Janet left,
28871
                       JanetSlot right,
28872
                       int (*leaf)(JanetCompiler *c,
28873
                                   const uint8_t *sym,
28874
                                   JanetSlot s,
28875
                                   JanetTable *attr),
28876
0
                       JanetTable *attr) {
28877
0
    switch (janet_type(left)) {
28878
0
        default:
28879
0
            janetc_error(c, janet_formatc("unexpected type in destructuring, got %v", left));
28880
0
            return 1;
28881
0
        case JANET_SYMBOL:
28882
            /* Leaf, assign right to left */
28883
0
            return leaf(c, janet_unwrap_symbol(left), right, attr);
28884
0
        case JANET_TUPLE:
28885
0
        case JANET_ARRAY: {
28886
0
            int32_t len = 0;
28887
0
            const Janet *values = NULL;
28888
0
            janet_indexed_view(left, &values, &len);
28889
0
            for (int32_t i = 0; i < len; i++) {
28890
0
                JanetSlot nextright = janetc_farslot(c);
28891
0
                Janet subval = values[i];
28892
28893
0
                if (janet_checktype(subval, JANET_SYMBOL) && !janet_cstrcmp(janet_unwrap_symbol(subval), "&")) {
28894
0
                    if (i + 1 >= len) {
28895
0
                        janetc_cerror(c, "expected symbol following '& in destructuring pattern");
28896
0
                        return 1;
28897
0
                    }
28898
28899
0
                    if (i + 2 < len) {
28900
0
                        int32_t num_extra = len - i - 1;
28901
0
                        Janet *extra = janet_tuple_begin(num_extra);
28902
0
                        janet_tuple_flag(extra) |= JANET_TUPLE_FLAG_BRACKETCTOR;
28903
28904
0
                        for (int32_t j = 0; j < num_extra; ++j) {
28905
0
                            extra[j] = values[j + i + 1];
28906
0
                        }
28907
28908
0
                        janetc_error(c, janet_formatc("expected a single symbol follow '& in destructuring pattern, found %q", janet_wrap_tuple(janet_tuple_end(extra))));
28909
0
                        return 1;
28910
0
                    }
28911
28912
0
                    if (!janet_checktype(values[i + 1], JANET_SYMBOL)) {
28913
0
                        janetc_error(c, janet_formatc("expected symbol following '& in destructuring pattern, found %q", values[i + 1]));
28914
0
                        return 1;
28915
0
                    }
28916
28917
0
                    JanetSlot argi = janetc_farslot(c);
28918
0
                    JanetSlot arg  = janetc_farslot(c);
28919
0
                    JanetSlot len  = janetc_farslot(c);
28920
28921
0
                    janetc_emit_si(c, JOP_LOAD_INTEGER, argi, i, 0);
28922
0
                    janetc_emit_ss(c, JOP_LENGTH, len, right, 0);
28923
28924
                    /* loop condition - reuse arg slot for the condition result */
28925
0
                    int32_t label_loop_start = janetc_emit_sss(c, JOP_LESS_THAN, arg, argi, len, 0);
28926
0
                    int32_t label_loop_cond_jump = janetc_emit_si(c, JOP_JUMP_IF_NOT, arg, 0, 0);
28927
28928
                    /* loop body */
28929
0
                    janetc_emit_sss(c, JOP_GET, arg, right, argi, 0);
28930
0
                    janetc_emit_s(c, JOP_PUSH, arg, 0);
28931
0
                    janetc_emit_ssi(c, JOP_ADD_IMMEDIATE, argi, argi, 1, 0);
28932
28933
                    /* loop - jump back to the start of the loop */
28934
0
                    int32_t label_loop_loop = janet_v_count(c->buffer);
28935
0
                    janetc_emit(c, JOP_JUMP);
28936
0
                    int32_t label_loop_exit = janet_v_count(c->buffer);
28937
28938
                    /* avoid shifting negative numbers */
28939
0
                    c->buffer[label_loop_cond_jump] |= (uint32_t)(label_loop_exit - label_loop_cond_jump) << 16;
28940
0
                    c->buffer[label_loop_loop] |= (uint32_t)(label_loop_start - label_loop_loop) << 8;
28941
28942
0
                    janetc_freeslot(c, argi);
28943
0
                    janetc_freeslot(c, arg);
28944
0
                    janetc_freeslot(c, len);
28945
28946
0
                    janetc_emit_s(c, JOP_MAKE_TUPLE, nextright, 1);
28947
28948
0
                    leaf(c, janet_unwrap_symbol(values[i + 1]), nextright, attr);
28949
0
                    janetc_freeslot(c, nextright);
28950
0
                    break;
28951
0
                }
28952
28953
0
                if (i < 0x100) {
28954
0
                    janetc_emit_ssu(c, JOP_GET_INDEX, nextright, right, (uint8_t) i, 1);
28955
0
                } else {
28956
0
                    JanetSlot k = janetc_cslot(janet_wrap_integer(i));
28957
0
                    janetc_emit_sss(c, JOP_IN, nextright, right, k, 1);
28958
0
                }
28959
0
                if (destructure(c, subval, nextright, leaf, attr))
28960
0
                    janetc_freeslot(c, nextright);
28961
0
            }
28962
0
        }
28963
0
        return 1;
28964
0
        case JANET_TABLE:
28965
0
        case JANET_STRUCT: {
28966
0
            const JanetKV *kvs = NULL;
28967
0
            int32_t cap = 0, len = 0;
28968
0
            janet_dictionary_view(left, &kvs, &len, &cap);
28969
0
            for (int32_t i = 0; i < cap; i++) {
28970
0
                if (janet_checktype(kvs[i].key, JANET_NIL)) continue;
28971
0
                JanetSlot nextright = janetc_farslot(c);
28972
0
                JanetSlot k = janetc_value(janetc_fopts_default(c), kvs[i].key);
28973
0
                janetc_emit_sss(c, JOP_IN, nextright, right, k, 1);
28974
0
                if (destructure(c, kvs[i].value, nextright, leaf, attr))
28975
0
                    janetc_freeslot(c, nextright);
28976
0
            }
28977
0
        }
28978
0
        return 1;
28979
0
    }
28980
0
}
28981
28982
/* Create a source map for definitions. */
28983
0
static const Janet *janetc_make_sourcemap(JanetCompiler *c) {
28984
0
    Janet *tup = janet_tuple_begin(3);
28985
0
    tup[0] = c->source ? janet_wrap_string(c->source) : janet_wrap_nil();
28986
0
    tup[1] = janet_wrap_integer(c->current_mapping.line);
28987
0
    tup[2] = janet_wrap_integer(c->current_mapping.column);
28988
0
    return janet_tuple_end(tup);
28989
0
}
28990
28991
0
static JanetSlot janetc_varset(JanetFopts opts, int32_t argn, const Janet *argv) {
28992
0
    if (argn != 2) {
28993
0
        janetc_cerror(opts.compiler, "expected 2 arguments to set");
28994
0
        return janetc_cslot(janet_wrap_nil());
28995
0
    }
28996
0
    JanetFopts subopts = janetc_fopts_default(opts.compiler);
28997
0
    if (janet_checktype(argv[0], JANET_SYMBOL)) {
28998
        /* Normal var - (set a 1) */
28999
0
        const uint8_t *sym = janet_unwrap_symbol(argv[0]);
29000
0
        JanetSlot dest = janetc_resolve(opts.compiler, sym);
29001
0
        if (!(dest.flags & JANET_SLOT_MUTABLE)) {
29002
0
            janetc_cerror(opts.compiler, "cannot set constant");
29003
0
            return janetc_cslot(janet_wrap_nil());
29004
0
        }
29005
0
        subopts.flags = JANET_FOPTS_HINT;
29006
0
        subopts.hint = dest;
29007
0
        JanetSlot ret = janetc_value(subopts, argv[1]);
29008
0
        janetc_copy(opts.compiler, dest, ret);
29009
0
        return ret;
29010
0
    } else if (janet_checktype(argv[0], JANET_TUPLE)) {
29011
        /* Set a field (setf behavior) - (set (tab :key) 2) */
29012
0
        const Janet *tup = janet_unwrap_tuple(argv[0]);
29013
        /* Tuple must have 2 elements */
29014
0
        if (janet_tuple_length(tup) != 2) {
29015
0
            janetc_cerror(opts.compiler, "expected 2 element tuple for l-value to set");
29016
0
            return janetc_cslot(janet_wrap_nil());
29017
0
        }
29018
0
        JanetSlot ds = janetc_value(subopts, tup[0]);
29019
0
        JanetSlot key = janetc_value(subopts, tup[1]);
29020
        /* Can't be tail position because we will emit a PUT instruction afterwards */
29021
        /* Also can't drop either */
29022
0
        opts.flags &= ~(JANET_FOPTS_TAIL | JANET_FOPTS_DROP);
29023
0
        JanetSlot rvalue = janetc_value(opts, argv[1]);
29024
        /* Emit the PUT instruction */
29025
0
        janetc_emit_sss(opts.compiler, JOP_PUT, ds, key, rvalue, 0);
29026
0
        return rvalue;
29027
0
    } else {
29028
        /* Error */
29029
0
        janetc_cerror(opts.compiler, "expected symbol or tuple for l-value to set");
29030
0
        return janetc_cslot(janet_wrap_nil());
29031
0
    }
29032
0
}
29033
29034
/* Add attributes to a global def or var table */
29035
0
static JanetTable *handleattr(JanetCompiler *c, const char *kind, int32_t argn, const Janet *argv) {
29036
0
    int32_t i;
29037
0
    JanetTable *tab = janet_table(2);
29038
0
    const char *binding_name = janet_type(argv[0]) == JANET_SYMBOL
29039
0
                               ? ((const char *)janet_unwrap_symbol(argv[0]))
29040
0
                               : "<multiple bindings>";
29041
0
    if (argn < 2) {
29042
0
        janetc_error(c, janet_formatc("expected at least 2 arguments to %s", kind));
29043
0
        return NULL;
29044
0
    }
29045
0
    for (i = 1; i < argn - 1; i++) {
29046
0
        Janet attr = argv[i];
29047
0
        switch (janet_type(attr)) {
29048
0
            case JANET_TUPLE:
29049
0
                janetc_cerror(c, "unexpected form - did you intend to use defn?");
29050
0
                break;
29051
0
            default:
29052
0
                janetc_error(c, janet_formatc("cannot add metadata %v to binding %s", attr, binding_name));
29053
0
                break;
29054
0
            case JANET_KEYWORD:
29055
0
                janet_table_put(tab, attr, janet_wrap_true());
29056
0
                break;
29057
0
            case JANET_STRING:
29058
0
                janet_table_put(tab, janet_ckeywordv("doc"), attr);
29059
0
                break;
29060
0
            case JANET_STRUCT:
29061
0
                janet_table_merge_struct(tab, janet_unwrap_struct(attr));
29062
0
                break;
29063
0
        }
29064
0
    }
29065
0
    return tab;
29066
0
}
29067
29068
typedef struct SlotHeadPair {
29069
    Janet lhs;
29070
    JanetSlot rhs;
29071
} SlotHeadPair;
29072
29073
0
SlotHeadPair *dohead_destructure(JanetCompiler *c, SlotHeadPair *into, JanetFopts opts, Janet lhs, Janet rhs) {
29074
29075
    /* Detect if we can do an optimization to avoid some allocations */
29076
0
    int can_destructure_lhs = janet_checktype(lhs, JANET_TUPLE)
29077
0
                              || janet_checktype(lhs, JANET_ARRAY);
29078
0
    int rhs_is_indexed = janet_checktype(rhs, JANET_ARRAY)
29079
0
                         || (janet_checktype(rhs, JANET_TUPLE) && (janet_tuple_flag(janet_unwrap_tuple(rhs)) & JANET_TUPLE_FLAG_BRACKETCTOR));
29080
0
    uint32_t has_drop = opts.flags & JANET_FOPTS_DROP;
29081
29082
0
    JanetFopts subopts = janetc_fopts_default(c);
29083
0
    subopts.flags = opts.flags & ~(JANET_FOPTS_TAIL | JANET_FOPTS_DROP);
29084
29085
0
    if (has_drop && can_destructure_lhs && rhs_is_indexed) {
29086
        /* Code is of the form (def [a b] [1 2]), avoid the allocation of two tuples */
29087
0
        JanetView view_lhs = {0};
29088
0
        JanetView view_rhs = {0};
29089
0
        janet_indexed_view(lhs, &view_lhs.items, &view_lhs.len);
29090
0
        janet_indexed_view(rhs, &view_rhs.items, &view_rhs.len);
29091
0
        int found_amp = 0;
29092
0
        for (int32_t i = 0; i < view_lhs.len; i++) {
29093
0
            if (janet_symeq(view_lhs.items[i], "&")) {
29094
0
                found_amp = 1;
29095
                /* Good error will be generated later. */
29096
0
                break;
29097
0
            }
29098
0
        }
29099
0
        if (!found_amp) {
29100
0
            for (int32_t i = 0; i < view_lhs.len; i++) {
29101
0
                Janet sub_rhs = view_rhs.len <= i ? janet_wrap_nil() : view_rhs.items[i];
29102
0
                into = dohead_destructure(c, into, subopts, view_lhs.items[i], sub_rhs);
29103
0
            }
29104
0
            return into;
29105
0
        }
29106
0
    }
29107
29108
    /* No optimization, do the simple way */
29109
0
    subopts.hint = opts.hint;
29110
0
    JanetSlot ret = janetc_value(subopts, rhs);
29111
0
    SlotHeadPair shp = {lhs, ret};
29112
0
    janet_v_push(into, shp);
29113
0
    return into;
29114
0
}
29115
29116
/* Def or var a symbol in a local scope */
29117
0
static int namelocal(JanetCompiler *c, const uint8_t *head, int32_t flags, JanetSlot ret) {
29118
0
    int isUnnamedRegister = !(ret.flags & JANET_SLOT_NAMED) &&
29119
0
                            ret.index > 0 &&
29120
0
                            ret.envindex >= 0;
29121
    /* optimization for `(def x my-def)` - don't emit a movn/movf instruction, we can just alias my-def */
29122
    /* TODO - implement optimization for `(def x my-var)` correctly as well w/ de-aliasing */
29123
0
    int canAlias = !(flags & JANET_SLOT_MUTABLE) &&
29124
0
                   !(ret.flags & JANET_SLOT_MUTABLE) &&
29125
0
                   (ret.flags & JANET_SLOT_NAMED) &&
29126
0
                   (ret.index >= 0) &&
29127
0
                   (ret.envindex == -1);
29128
0
    if (canAlias) {
29129
0
        ret.flags &= ~JANET_SLOT_MUTABLE;
29130
0
        isUnnamedRegister = 1; /* don't free slot after use - is an alias for another slot */
29131
0
    } else if (!isUnnamedRegister) {
29132
        /* Slot is not able to be named */
29133
0
        JanetSlot localslot = janetc_farslot(c);
29134
0
        janetc_copy(c, localslot, ret);
29135
0
        ret = localslot;
29136
0
    }
29137
0
    ret.flags |= flags;
29138
0
    janetc_nameslot(c, head, ret);
29139
0
    return !isUnnamedRegister;
29140
0
}
29141
29142
static int varleaf(
29143
    JanetCompiler *c,
29144
    const uint8_t *sym,
29145
    JanetSlot s,
29146
0
    JanetTable *reftab) {
29147
0
    if (c->scope->flags & JANET_SCOPE_TOP) {
29148
        /* Global var, generate var */
29149
0
        JanetSlot refslot;
29150
0
        JanetTable *entry = janet_table_clone(reftab);
29151
29152
0
        Janet redef_kw = janet_ckeywordv("redef");
29153
0
        int is_redef = janet_truthy(janet_table_get(c->env, redef_kw));
29154
29155
0
        JanetArray *ref;
29156
0
        JanetBinding old_binding;
29157
0
        if (is_redef && (old_binding = janet_resolve_ext(c->env, sym),
29158
0
                         old_binding.type == JANET_BINDING_VAR)) {
29159
0
            ref = janet_unwrap_array(old_binding.value);
29160
0
        } else {
29161
0
            ref = janet_array(1);
29162
0
            janet_array_push(ref, janet_wrap_nil());
29163
0
        }
29164
29165
0
        janet_table_put(entry, janet_ckeywordv("ref"), janet_wrap_array(ref));
29166
0
        janet_table_put(entry, janet_ckeywordv("source-map"),
29167
0
                        janet_wrap_tuple(janetc_make_sourcemap(c)));
29168
0
        janet_table_put(c->env, janet_wrap_symbol(sym), janet_wrap_table(entry));
29169
0
        refslot = janetc_cslot(janet_wrap_array(ref));
29170
0
        janetc_emit_ssu(c, JOP_PUT_INDEX, refslot, s, 0, 0);
29171
0
        return 1;
29172
0
    } else {
29173
0
        return namelocal(c, sym, JANET_SLOT_MUTABLE, s);
29174
0
    }
29175
0
}
29176
29177
0
static JanetSlot janetc_var(JanetFopts opts, int32_t argn, const Janet *argv) {
29178
0
    JanetCompiler *c = opts.compiler;
29179
0
    JanetTable *attr_table = handleattr(c, "var", argn, argv);
29180
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29181
0
        return janetc_cslot(janet_wrap_nil());
29182
0
    }
29183
0
    SlotHeadPair *into = NULL;
29184
0
    into = dohead_destructure(c, into, opts, argv[0], argv[argn - 1]);
29185
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29186
0
        janet_v_free(into);
29187
0
        return janetc_cslot(janet_wrap_nil());
29188
0
    }
29189
0
    JanetSlot ret;
29190
0
    janet_assert(janet_v_count(into) > 0, "bad destructure");
29191
0
    for (int32_t i = 0; i < janet_v_count(into); i++) {
29192
0
        destructure(c, into[i].lhs, into[i].rhs, varleaf, attr_table);
29193
0
        ret = into[i].rhs;
29194
0
    }
29195
0
    janet_v_free(into);
29196
0
    return ret;
29197
0
}
29198
29199
static int defleaf(
29200
    JanetCompiler *c,
29201
    const uint8_t *sym,
29202
    JanetSlot s,
29203
0
    JanetTable *tab) {
29204
0
    if (c->scope->flags & JANET_SCOPE_TOP) {
29205
0
        JanetTable *entry = janet_table_clone(tab);
29206
0
        janet_table_put(entry, janet_ckeywordv("source-map"),
29207
0
                        janet_wrap_tuple(janetc_make_sourcemap(c)));
29208
29209
0
        Janet redef_kw = janet_ckeywordv("redef");
29210
0
        int is_redef = janet_truthy(janet_table_get(c->env, redef_kw));
29211
0
        if (is_redef) janet_table_put(entry, redef_kw, janet_wrap_true());
29212
29213
0
        if (is_redef) {
29214
0
            JanetBinding binding = janet_resolve_ext(c->env, sym);
29215
0
            JanetArray *ref;
29216
0
            if (binding.type == JANET_BINDING_DYNAMIC_DEF || binding.type == JANET_BINDING_DYNAMIC_MACRO) {
29217
0
                ref = janet_unwrap_array(binding.value);
29218
0
            } else {
29219
0
                ref = janet_array(1);
29220
0
                janet_array_push(ref, janet_wrap_nil());
29221
0
            }
29222
0
            janet_table_put(entry, janet_ckeywordv("ref"), janet_wrap_array(ref));
29223
0
            JanetSlot refslot = janetc_cslot(janet_wrap_array(ref));
29224
0
            janetc_emit_ssu(c, JOP_PUT_INDEX, refslot, s, 0, 0);
29225
0
        } else {
29226
0
            JanetSlot valsym = janetc_cslot(janet_ckeywordv("value"));
29227
0
            JanetSlot tabslot = janetc_cslot(janet_wrap_table(entry));
29228
0
            janetc_emit_sss(c, JOP_PUT, tabslot, valsym, s, 0);
29229
0
        }
29230
29231
        /* Add env entry to env */
29232
0
        janet_table_put(c->env, janet_wrap_symbol(sym), janet_wrap_table(entry));
29233
0
    }
29234
0
    return namelocal(c, sym, 0, s);
29235
0
}
29236
29237
0
static JanetSlot janetc_def(JanetFopts opts, int32_t argn, const Janet *argv) {
29238
0
    JanetCompiler *c = opts.compiler;
29239
0
    JanetTable *attr_table = handleattr(c, "def", argn, argv);
29240
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29241
0
        return janetc_cslot(janet_wrap_nil());
29242
0
    }
29243
0
    opts.flags &= ~JANET_FOPTS_HINT;
29244
0
    SlotHeadPair *into = NULL;
29245
0
    into = dohead_destructure(c, into, opts, argv[0], argv[argn - 1]);
29246
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29247
0
        janet_v_free(into);
29248
0
        return janetc_cslot(janet_wrap_nil());
29249
0
    }
29250
0
    JanetSlot ret;
29251
0
    janet_assert(janet_v_count(into) > 0, "bad destructure");
29252
0
    for (int32_t i = 0; i < janet_v_count(into); i++) {
29253
0
        destructure(c, into[i].lhs, into[i].rhs, defleaf, attr_table);
29254
0
        ret = into[i].rhs;
29255
0
    }
29256
0
    janet_v_free(into);
29257
0
    return ret;
29258
0
}
29259
29260
/* Check if a form matches the pattern (= nil _) or (not= nil _) */
29261
0
static int janetc_check_nil_form(Janet x, Janet *capture, uint32_t fun_tag) {
29262
0
    if (!janet_checktype(x, JANET_TUPLE)) return 0;
29263
0
    JanetTuple tup = janet_unwrap_tuple(x);
29264
0
    if (3 != janet_tuple_length(tup)) return 0;
29265
0
    Janet op1 = tup[0];
29266
0
    if (!janet_checktype(op1, JANET_FUNCTION)) return 0;
29267
0
    JanetFunction *fun = janet_unwrap_function(op1);
29268
0
    uint32_t tag = fun->def->flags & JANET_FUNCDEF_FLAG_TAG;
29269
0
    if (tag != fun_tag) return 0;
29270
0
    if (janet_checktype(tup[1], JANET_NIL)) {
29271
0
        *capture = tup[2];
29272
0
        return 1;
29273
0
    } else if (janet_checktype(tup[2], JANET_NIL)) {
29274
0
        *capture = tup[1];
29275
0
        return 1;
29276
0
    }
29277
0
    return 0;
29278
0
}
29279
29280
/*
29281
 * :condition
29282
 * ...
29283
 * jump-if-not condition :right
29284
 * :left
29285
 * ...
29286
 * jump done (only if not tail)
29287
 * :right
29288
 * ...
29289
 * :done
29290
 */
29291
0
static JanetSlot janetc_if(JanetFopts opts, int32_t argn, const Janet *argv) {
29292
0
    JanetCompiler *c = opts.compiler;
29293
0
    int32_t labelr, labeljr, labeld, labeljd;
29294
0
    JanetFopts condopts, bodyopts;
29295
0
    JanetSlot cond, left, right, target;
29296
0
    Janet truebody, falsebody;
29297
0
    JanetScope condscope, tempscope;
29298
0
    const int tail = opts.flags & JANET_FOPTS_TAIL;
29299
0
    const int drop = opts.flags & JANET_FOPTS_DROP;
29300
0
    uint8_t ifnjmp = JOP_JUMP_IF_NOT;
29301
29302
0
    if (argn < 2 || argn > 3) {
29303
0
        janetc_cerror(c, "expected 2 or 3 arguments to if");
29304
0
        return janetc_cslot(janet_wrap_nil());
29305
0
    }
29306
29307
    /* Get the bodies of the if expression */
29308
0
    truebody = argv[1];
29309
0
    falsebody = argn > 2 ? argv[2] : janet_wrap_nil();
29310
29311
    /* Get options */
29312
0
    condopts = janetc_fopts_default(c);
29313
0
    bodyopts = opts;
29314
0
    bodyopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
29315
29316
    /* Set target for compilation */
29317
0
    target = (drop || tail)
29318
0
             ? janetc_cslot(janet_wrap_nil())
29319
0
             : janetc_gettarget(opts);
29320
29321
    /* Compile condition */
29322
0
    janetc_scope(&condscope, c, 0, "if");
29323
29324
0
    Janet condform = argv[0];
29325
0
    if (janetc_check_nil_form(condform, &condform, JANET_FUN_EQ)) {
29326
0
        ifnjmp = JOP_JUMP_IF_NOT_NIL;
29327
0
    } else if (janetc_check_nil_form(condform, &condform, JANET_FUN_NEQ)) {
29328
0
        ifnjmp = JOP_JUMP_IF_NIL;
29329
0
    }
29330
29331
0
    cond = janetc_value(condopts, condform);
29332
29333
    /* Check constant condition. */
29334
    /* TODO: Use type info for more short circuits */
29335
0
    if (cond.flags & JANET_SLOT_CONSTANT) {
29336
0
        int swap_condition = 0;
29337
0
        if (ifnjmp == JOP_JUMP_IF_NOT && !janet_truthy(cond.constant)) swap_condition = 1;
29338
0
        if (ifnjmp == JOP_JUMP_IF_NIL && janet_checktype(cond.constant, JANET_NIL)) swap_condition = 1;
29339
0
        if (ifnjmp == JOP_JUMP_IF_NOT_NIL && !janet_checktype(cond.constant, JANET_NIL)) swap_condition = 1;
29340
0
        if (swap_condition) {
29341
            /* Swap the true and false bodies */
29342
0
            Janet temp = falsebody;
29343
0
            falsebody = truebody;
29344
0
            truebody = temp;
29345
0
        }
29346
0
        janetc_scope(&tempscope, c, 0, "if-true");
29347
0
        right = janetc_value(bodyopts, truebody);
29348
0
        if (!drop && !tail) janetc_copy(c, target, right);
29349
0
        janetc_popscope(c);
29350
0
        if (!janet_checktype(falsebody, JANET_NIL)) {
29351
0
            janetc_throwaway(bodyopts, falsebody);
29352
0
        }
29353
0
        janetc_popscope(c);
29354
0
        return target;
29355
0
    }
29356
29357
    /* Compile jump to right */
29358
0
    labeljr = janetc_emit_si(c, ifnjmp, cond, 0, 0);
29359
29360
    /* Condition left body */
29361
0
    janetc_scope(&tempscope, c, 0, "if-true");
29362
0
    left = janetc_value(bodyopts, truebody);
29363
0
    if (!drop && !tail) janetc_copy(c, target, left);
29364
0
    janetc_popscope(c);
29365
29366
    /* Compile jump to done */
29367
0
    labeljd = janet_v_count(c->buffer);
29368
0
    if (!tail && !(drop && janet_checktype(falsebody, JANET_NIL))) janetc_emit(c, JOP_JUMP);
29369
29370
    /* Compile right body */
29371
0
    labelr = janet_v_count(c->buffer);
29372
0
    janetc_scope(&tempscope, c, 0, "if-false");
29373
0
    right = janetc_value(bodyopts, falsebody);
29374
0
    if (!drop && !tail) janetc_copy(c, target, right);
29375
0
    janetc_popscope(c);
29376
29377
    /* Pop main scope */
29378
0
    janetc_popscope(c);
29379
29380
    /* Write jumps - only add jump lengths if jump actually emitted */
29381
0
    labeld = janet_v_count(c->buffer);
29382
0
    c->buffer[labeljr] |= (labelr - labeljr) << 16;
29383
0
    if (!tail) c->buffer[labeljd] |= (labeld - labeljd) << 8;
29384
29385
0
    if (tail) target.flags |= JANET_SLOT_RETURNED;
29386
0
    return target;
29387
0
}
29388
29389
/* Compile a do form. Do forms execute their body sequentially and
29390
 * evaluate to the last expression in the body. */
29391
0
static JanetSlot janetc_do(JanetFopts opts, int32_t argn, const Janet *argv) {
29392
0
    int32_t i;
29393
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
29394
0
    JanetCompiler *c = opts.compiler;
29395
0
    JanetFopts subopts = janetc_fopts_default(c);
29396
0
    JanetScope tempscope;
29397
0
    janetc_scope(&tempscope, c, 0, "do");
29398
0
    for (i = 0; i < argn; i++) {
29399
0
        if (i != argn - 1) {
29400
0
            subopts.flags = JANET_FOPTS_DROP;
29401
0
        } else {
29402
0
            subopts = opts;
29403
0
            subopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
29404
0
        }
29405
0
        ret = janetc_value(subopts, argv[i]);
29406
0
        if (i != argn - 1) {
29407
0
            janetc_freeslot(c, ret);
29408
0
        }
29409
0
    }
29410
0
    janetc_popscope_keepslot(c, ret);
29411
0
    return ret;
29412
0
}
29413
29414
/* Compile an upscope form. Upscope forms execute their body sequentially and
29415
 * evaluate to the last expression in the body, but without lexical scope. */
29416
0
static JanetSlot janetc_upscope(JanetFopts opts, int32_t argn, const Janet *argv) {
29417
0
    int32_t i;
29418
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
29419
0
    JanetCompiler *c = opts.compiler;
29420
0
    JanetFopts subopts = janetc_fopts_default(c);
29421
0
    for (i = 0; i < argn; i++) {
29422
0
        if (i != argn - 1) {
29423
0
            subopts.flags = JANET_FOPTS_DROP;
29424
0
        } else {
29425
0
            subopts = opts;
29426
0
            subopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
29427
0
        }
29428
0
        ret = janetc_value(subopts, argv[i]);
29429
0
        if (i != argn - 1) {
29430
0
            janetc_freeslot(c, ret);
29431
0
        }
29432
0
    }
29433
0
    return ret;
29434
0
}
29435
29436
/* Add a funcdef to the top most function scope */
29437
0
static int32_t janetc_addfuncdef(JanetCompiler *c, JanetFuncDef *def) {
29438
0
    JanetScope *scope = c->scope;
29439
0
    while (scope) {
29440
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
29441
0
            break;
29442
0
        scope = scope->parent;
29443
0
    }
29444
0
    janet_assert(scope, "could not add funcdef");
29445
0
    janet_v_push(scope->defs, def);
29446
0
    return janet_v_count(scope->defs) - 1;
29447
0
}
29448
29449
/*
29450
 * break
29451
 *
29452
 * jump :end or retn if in function
29453
 */
29454
0
static JanetSlot janetc_break(JanetFopts opts, int32_t argn, const Janet *argv) {
29455
0
    JanetCompiler *c = opts.compiler;
29456
0
    JanetScope *scope = c->scope;
29457
0
    if (argn > 1) {
29458
0
        janetc_cerror(c, "expected at most 1 argument");
29459
0
        return janetc_cslot(janet_wrap_nil());
29460
0
    }
29461
29462
    /* Find scope to break from */
29463
0
    while (scope) {
29464
0
        if (scope->flags & (JANET_SCOPE_FUNCTION | JANET_SCOPE_WHILE))
29465
0
            break;
29466
0
        scope = scope->parent;
29467
0
    }
29468
0
    if (NULL == scope) {
29469
0
        janetc_cerror(c, "break must occur in while loop or closure");
29470
0
        return janetc_cslot(janet_wrap_nil());
29471
0
    }
29472
29473
    /* Emit code to break from that scope */
29474
0
    JanetFopts subopts = janetc_fopts_default(c);
29475
0
    if (scope->flags & JANET_SCOPE_FUNCTION) {
29476
0
        if (!(scope->flags & JANET_SCOPE_WHILE) && argn) {
29477
            /* Closure body with return argument */
29478
0
            subopts.flags |= JANET_FOPTS_TAIL;
29479
0
            janetc_value(subopts, argv[0]);
29480
0
            return janetc_cslot(janet_wrap_nil());
29481
0
        } else {
29482
            /* while loop IIFE or no argument */
29483
0
            if (argn) {
29484
0
                subopts.flags |= JANET_FOPTS_DROP;
29485
0
                janetc_value(subopts, argv[0]);
29486
0
            }
29487
0
            janetc_emit(c, JOP_RETURN_NIL);
29488
0
            return janetc_cslot(janet_wrap_nil());
29489
0
        }
29490
0
    } else {
29491
0
        if (argn) {
29492
0
            subopts.flags |= JANET_FOPTS_DROP;
29493
0
            janetc_value(subopts, argv[0]);
29494
0
        }
29495
        /* Tag the instruction so the while special can turn it into a proper jump */
29496
0
        janetc_emit(c, 0x80 | JOP_JUMP);
29497
0
        return janetc_cslot(janet_wrap_nil());
29498
0
    }
29499
0
}
29500
29501
/*
29502
 * :whiletop
29503
 * ...
29504
 * :condition
29505
 * jump-if-not cond :done
29506
 * ...
29507
 * jump :whiletop
29508
 * :done
29509
 */
29510
0
static JanetSlot janetc_while(JanetFopts opts, int32_t argn, const Janet *argv) {
29511
0
    JanetCompiler *c = opts.compiler;
29512
0
    JanetSlot cond;
29513
0
    JanetFopts subopts = janetc_fopts_default(c);
29514
0
    JanetScope tempscope;
29515
0
    int32_t labelwt, labeld, labeljt, labelc, i;
29516
0
    int infinite = 0;
29517
0
    int is_nil_form = 0;
29518
0
    int is_notnil_form = 0;
29519
0
    uint8_t ifjmp = JOP_JUMP_IF;
29520
0
    uint8_t ifnjmp = JOP_JUMP_IF_NOT;
29521
29522
0
    if (argn < 1) {
29523
0
        janetc_cerror(c, "expected at least 1 argument to while");
29524
0
        return janetc_cslot(janet_wrap_nil());
29525
0
    }
29526
29527
0
    labelwt = janet_v_count(c->buffer);
29528
29529
0
    janetc_scope(&tempscope, c, JANET_SCOPE_WHILE, "while");
29530
29531
    /* Check for `(= nil _)` or `(not= nil _)` in condition, and if so, use the
29532
     * jmpnl or jmpnn instructions. This let's us implement `(each ...)`
29533
     * more efficiently. */
29534
0
    Janet condform = argv[0];
29535
0
    if (janetc_check_nil_form(condform, &condform, JANET_FUN_EQ)) {
29536
0
        is_nil_form = 1;
29537
0
        ifjmp = JOP_JUMP_IF_NIL;
29538
0
        ifnjmp = JOP_JUMP_IF_NOT_NIL;
29539
0
    }
29540
0
    if (janetc_check_nil_form(condform, &condform, JANET_FUN_NEQ)) {
29541
0
        is_notnil_form = 1;
29542
0
        ifjmp = JOP_JUMP_IF_NOT_NIL;
29543
0
        ifnjmp = JOP_JUMP_IF_NIL;
29544
0
    }
29545
29546
    /* Compile condition */
29547
0
    cond = janetc_value(subopts, condform);
29548
29549
    /* Check for constant condition */
29550
0
    if (cond.flags & JANET_SLOT_CONSTANT) {
29551
        /* Loop never executes */
29552
0
        int never_executes = is_nil_form
29553
0
                             ? !janet_checktype(cond.constant, JANET_NIL)
29554
0
                             : is_notnil_form
29555
0
                             ? janet_checktype(cond.constant, JANET_NIL)
29556
0
                             : !janet_truthy(cond.constant);
29557
0
        if (never_executes) {
29558
0
            janetc_popscope(c);
29559
0
            return janetc_cslot(janet_wrap_nil());
29560
0
        }
29561
        /* Infinite loop */
29562
0
        infinite = 1;
29563
0
    }
29564
29565
    /* Infinite loop does not need to check condition */
29566
0
    labelc = infinite
29567
0
             ? 0
29568
0
             : janetc_emit_si(c, ifnjmp, cond, 0, 0);
29569
29570
    /* Compile body */
29571
0
    for (i = 1; i < argn; i++) {
29572
0
        subopts.flags = JANET_FOPTS_DROP;
29573
0
        janetc_freeslot(c, janetc_value(subopts, argv[i]));
29574
0
    }
29575
29576
    /* Check if closure created in while scope. If so,
29577
     * recompile in a function scope. */
29578
0
    if (tempscope.flags & JANET_SCOPE_CLOSURE) {
29579
0
        subopts = janetc_fopts_default(c);
29580
0
        tempscope.flags |= JANET_SCOPE_UNUSED;
29581
0
        janetc_popscope(c);
29582
0
        if (c->buffer) janet_v__cnt(c->buffer) = labelwt;
29583
0
        if (c->mapbuffer) janet_v__cnt(c->mapbuffer) = labelwt;
29584
29585
0
        janetc_scope(&tempscope, c, JANET_SCOPE_FUNCTION, "while-iife");
29586
29587
        /* Recompile in the function scope */
29588
0
        cond = janetc_value(subopts, condform);
29589
0
        if (!(cond.flags & JANET_SLOT_CONSTANT)) {
29590
            /* If not an infinite loop, return nil when condition false */
29591
0
            janetc_emit_si(c, ifjmp, cond, 2, 0);
29592
0
            janetc_emit(c, JOP_RETURN_NIL);
29593
0
        }
29594
0
        for (i = 1; i < argn; i++) {
29595
0
            subopts.flags = JANET_FOPTS_DROP;
29596
0
            janetc_freeslot(c, janetc_value(subopts, argv[i]));
29597
0
        }
29598
        /* But now add tail recursion */
29599
0
        int32_t tempself = janetc_regalloc_temp(&tempscope.ra, JANETC_REGTEMP_0);
29600
0
        janetc_emit(c, JOP_LOAD_SELF | (tempself << 8));
29601
0
        janetc_emit(c, JOP_TAILCALL | (tempself << 8));
29602
0
        janetc_regalloc_freetemp(&c->scope->ra, tempself, JANETC_REGTEMP_0);
29603
        /* Compile function */
29604
0
        JanetFuncDef *def = janetc_pop_funcdef(c);
29605
0
        def->name = janet_cstring("_while");
29606
0
        janet_def_addflags(def);
29607
0
        int32_t defindex = janetc_addfuncdef(c, def);
29608
        /* And then load the closure and call it. */
29609
0
        int32_t cloreg = janetc_regalloc_temp(&c->scope->ra, JANETC_REGTEMP_0);
29610
0
        janetc_emit(c, JOP_CLOSURE | (cloreg << 8) | (defindex << 16));
29611
0
        janetc_emit(c, JOP_CALL | (cloreg << 8) | (cloreg << 16));
29612
0
        janetc_regalloc_freetemp(&c->scope->ra, cloreg, JANETC_REGTEMP_0);
29613
0
        c->scope->flags |= JANET_SCOPE_CLOSURE;
29614
0
        return janetc_cslot(janet_wrap_nil());
29615
0
    }
29616
29617
    /* Compile jump to :whiletop */
29618
0
    labeljt = janet_v_count(c->buffer);
29619
0
    janetc_emit(c, JOP_JUMP);
29620
29621
    /* Calculate jumps */
29622
0
    labeld = janet_v_count(c->buffer);
29623
0
    if (!infinite) c->buffer[labelc] |= (uint32_t)(labeld - labelc) << 16;
29624
0
    c->buffer[labeljt] |= (uint32_t)(labelwt - labeljt) << 8;
29625
29626
    /* Calculate breaks */
29627
0
    for (int32_t i = labelwt; i < labeld; i++) {
29628
0
        if (c->buffer[i] == (0x80 | JOP_JUMP)) {
29629
0
            c->buffer[i] = JOP_JUMP | ((labeld - i) << 8);
29630
0
        }
29631
0
    }
29632
29633
    /* Pop scope and return nil slot */
29634
0
    janetc_popscope(c);
29635
29636
0
    return janetc_cslot(janet_wrap_nil());
29637
0
}
29638
29639
0
static JanetSlot janetc_fn(JanetFopts opts, int32_t argn, const Janet *argv) {
29640
0
    JanetCompiler *c = opts.compiler;
29641
0
    JanetFuncDef *def;
29642
0
    JanetSlot ret;
29643
0
    Janet head;
29644
0
    JanetScope fnscope;
29645
0
    int32_t paramcount, argi, parami, arity, min_arity = 0, max_arity, defindex, i;
29646
0
    JanetFopts subopts = janetc_fopts_default(c);
29647
0
    const Janet *params;
29648
0
    const char *errmsg = NULL;
29649
29650
    /* Function flags */
29651
0
    int vararg = 0;
29652
0
    int structarg = 0;
29653
0
    int allow_extra = 0;
29654
0
    int selfref = 0;
29655
0
    int hasname = 0;
29656
0
    int seenamp = 0;
29657
0
    int seenopt = 0;
29658
0
    int namedargs = 0;
29659
29660
    /* Begin function */
29661
0
    c->scope->flags |= JANET_SCOPE_CLOSURE;
29662
0
    janetc_scope(&fnscope, c, JANET_SCOPE_FUNCTION, "function");
29663
29664
0
    if (argn == 0) {
29665
0
        errmsg = "expected at least 1 argument to function literal";
29666
0
        goto error;
29667
0
    }
29668
29669
    /* Read function parameters */
29670
0
    parami = 0;
29671
0
    head = argv[0];
29672
0
    if (janet_checktype(head, JANET_SYMBOL)) {
29673
0
        selfref = 1;
29674
0
        hasname = 1;
29675
0
        parami = 1;
29676
0
    } else if (janet_checktype(head, JANET_KEYWORD)) {
29677
0
        hasname = 1;
29678
0
        parami = 1;
29679
0
    }
29680
0
    if (parami >= argn || !janet_checktype(argv[parami], JANET_TUPLE)) {
29681
0
        errmsg = "expected function parameters";
29682
0
        goto error;
29683
0
    }
29684
29685
    /* Keep track of destructured parameters */
29686
0
    JanetSlot *destructed_params = NULL;
29687
0
    JanetSlot *named_params = NULL;
29688
0
    JanetTable *named_table = NULL;
29689
0
    JanetSlot named_slot;
29690
29691
    /* Compile function parameters */
29692
0
    params = janet_unwrap_tuple(argv[parami]);
29693
0
    paramcount = janet_tuple_length(params);
29694
0
    arity = paramcount;
29695
0
    for (i = 0; i < paramcount; i++) {
29696
0
        Janet param = params[i];
29697
0
        if (namedargs) {
29698
0
            arity--;
29699
0
            if (!janet_checktype(param, JANET_SYMBOL)) {
29700
0
                errmsg = "only named arguments can follow &named";
29701
0
                goto error;
29702
0
            }
29703
0
            Janet key = janet_wrap_keyword(janet_unwrap_symbol(param));
29704
0
            janet_table_put(named_table, key, param);
29705
0
            janet_v_push(named_params, janetc_farslot(c));
29706
0
        } else if (janet_checktype(param, JANET_SYMBOL)) {
29707
            /* Check for varargs and unfixed arity */
29708
0
            const uint8_t *sym = janet_unwrap_symbol(param);
29709
0
            if (sym[0] == '&') {
29710
0
                if (!janet_cstrcmp(sym, "&")) {
29711
0
                    if (seenamp) {
29712
0
                        errmsg = "& in unexpected location";
29713
0
                        goto error;
29714
0
                    } else if (i == paramcount - 1) {
29715
0
                        allow_extra = 1;
29716
0
                        arity--;
29717
0
                    } else if (i == paramcount - 2) {
29718
0
                        vararg = 1;
29719
0
                        arity -= 2;
29720
0
                    } else {
29721
0
                        errmsg = "& in unexpected location";
29722
0
                        goto error;
29723
0
                    }
29724
0
                    seenamp = 1;
29725
0
                } else if (!janet_cstrcmp(sym, "&opt")) {
29726
0
                    if (seenopt) {
29727
0
                        errmsg = "only one &opt allowed";
29728
0
                        goto error;
29729
0
                    } else if (i == paramcount - 1) {
29730
0
                        errmsg = "&opt cannot be last item in parameter list";
29731
0
                        goto error;
29732
0
                    }
29733
0
                    min_arity = i;
29734
0
                    arity--;
29735
0
                    seenopt = 1;
29736
0
                } else if (!janet_cstrcmp(sym, "&keys")) {
29737
0
                    if (seenamp) {
29738
0
                        errmsg = "&keys in unexpected location";
29739
0
                        goto error;
29740
0
                    } else if (i == paramcount - 2) {
29741
0
                        vararg = 1;
29742
0
                        structarg = 1;
29743
0
                        arity -= 2;
29744
0
                    } else {
29745
0
                        errmsg = "&keys in unexpected location";
29746
0
                        goto error;
29747
0
                    }
29748
0
                    seenamp = 1;
29749
0
                } else if (!janet_cstrcmp(sym, "&named")) {
29750
0
                    if (seenamp) {
29751
0
                        errmsg = "&named in unexpected location";
29752
0
                        goto error;
29753
0
                    }
29754
0
                    vararg = 1;
29755
0
                    structarg = 1;
29756
0
                    arity--;
29757
0
                    seenamp = 1;
29758
0
                    namedargs = 1;
29759
0
                    named_table = janet_table(10);
29760
0
                    named_slot = janetc_farslot(c);
29761
0
                } else {
29762
0
                    janetc_nameslot(c, sym, janetc_farslot(c));
29763
0
                }
29764
0
            } else {
29765
0
                janetc_nameslot(c, sym, janetc_farslot(c));
29766
0
            }
29767
0
        } else {
29768
0
            janet_v_push(destructed_params, janetc_farslot(c));
29769
0
        }
29770
0
    }
29771
29772
    /* Compile destructed params */
29773
0
    int32_t j = 0;
29774
0
    for (i = 0; i < paramcount; i++) {
29775
0
        Janet param = params[i];
29776
0
        if (!janet_checktype(param, JANET_SYMBOL)) {
29777
0
            janet_assert(janet_v_count(destructed_params) > j, "out of bounds");
29778
0
            JanetSlot reg = destructed_params[j++];
29779
0
            destructure(c, param, reg, defleaf, NULL);
29780
0
            janetc_freeslot(c, reg);
29781
0
        }
29782
0
    }
29783
0
    janet_v_free(destructed_params);
29784
29785
    /* Compile named arguments */
29786
0
    if (namedargs) {
29787
0
        Janet param = janet_wrap_table(named_table);
29788
0
        destructure(c, param, named_slot, defleaf, NULL);
29789
0
        janetc_freeslot(c, named_slot);
29790
0
        janet_v_free(named_params);
29791
0
    }
29792
29793
0
    max_arity = (vararg || allow_extra) ? INT32_MAX : arity;
29794
0
    if (!seenopt) min_arity = arity;
29795
29796
    /* Check for self ref (also avoid if arguments shadow own name) */
29797
0
    if (selfref) {
29798
        /* Check if the parameters shadow the function name. If so, don't
29799
         * emit JOP_LOAD_SELF and add a binding since that most users
29800
         * seem to expect that function parameters take precedence over the
29801
         * function name */
29802
0
        const uint8_t *sym = janet_unwrap_symbol(head);
29803
0
        int32_t len = janet_v_count(c->scope->syms);
29804
0
        int found = 0;
29805
0
        for (int32_t i = 0; i < len; i++) {
29806
0
            if (c->scope->syms[i].sym == sym) {
29807
0
                found = 1;
29808
0
            }
29809
0
        }
29810
0
        if (!found) {
29811
0
            JanetSlot slot = janetc_farslot(c);
29812
0
            slot.flags = JANET_SLOT_NAMED | JANET_FUNCTION;
29813
0
            janetc_emit_s(c, JOP_LOAD_SELF, slot, 1);
29814
0
            janetc_nameslot(c, sym, slot);
29815
0
        }
29816
0
    }
29817
29818
    /* Compile function body */
29819
0
    if (parami + 1 == argn) {
29820
0
        janetc_emit(c, JOP_RETURN_NIL);
29821
0
    } else {
29822
0
        for (argi = parami + 1; argi < argn; argi++) {
29823
0
            subopts.flags = (argi == (argn - 1)) ? JANET_FOPTS_TAIL : JANET_FOPTS_DROP;
29824
0
            janetc_value(subopts, argv[argi]);
29825
0
            if (c->result.status == JANET_COMPILE_ERROR)
29826
0
                goto error2;
29827
0
        }
29828
0
    }
29829
29830
    /* Build function */
29831
0
    def = janetc_pop_funcdef(c);
29832
0
    def->arity = arity;
29833
0
    def->min_arity = min_arity;
29834
0
    def->max_arity = max_arity;
29835
0
    if (vararg) def->flags |= JANET_FUNCDEF_FLAG_VARARG;
29836
0
    if (structarg) def->flags |= JANET_FUNCDEF_FLAG_STRUCTARG;
29837
29838
0
    if (hasname) def->name = janet_unwrap_symbol(head); /* Also correctly unwraps keyword */
29839
0
    janet_def_addflags(def);
29840
0
    defindex = janetc_addfuncdef(c, def);
29841
29842
    /* Ensure enough slots for vararg function. */
29843
0
    if (arity + vararg > def->slotcount) def->slotcount = arity + vararg;
29844
29845
    /* Instantiate closure */
29846
0
    ret = janetc_gettarget(opts);
29847
0
    janetc_emit_su(c, JOP_CLOSURE, ret, defindex, 1);
29848
0
    return ret;
29849
29850
0
error:
29851
0
    janetc_cerror(c, errmsg);
29852
0
error2:
29853
0
    janetc_popscope(c);
29854
0
    return janetc_cslot(janet_wrap_nil());
29855
0
}
29856
29857
/* Keep in lexicographic order */
29858
static const JanetSpecial janetc_specials[] = {
29859
    {"break", janetc_break},
29860
    {"def", janetc_def},
29861
    {"do", janetc_do},
29862
    {"fn", janetc_fn},
29863
    {"if", janetc_if},
29864
    {"quasiquote", janetc_quasiquote},
29865
    {"quote", janetc_quote},
29866
    {"set", janetc_varset},
29867
    {"splice", janetc_splice},
29868
    {"unquote", janetc_unquote},
29869
    {"upscope", janetc_upscope},
29870
    {"var", janetc_var},
29871
    {"while", janetc_while}
29872
};
29873
29874
/* Find a special */
29875
0
const JanetSpecial *janetc_special(const uint8_t *name) {
29876
0
    return janet_strbinsearch(
29877
0
               &janetc_specials,
29878
0
               sizeof(janetc_specials) / sizeof(JanetSpecial),
29879
0
               sizeof(JanetSpecial),
29880
0
               name);
29881
0
}
29882
29883
29884
/* src/core/state.c */
29885
#line 0 "src/core/state.c"
29886
29887
/*
29888
* Copyright (c) 2025 Calvin Rose
29889
*
29890
* Permission is hereby granted, free of charge, to any person obtaining a copy
29891
* of this software and associated documentation files (the "Software"), to
29892
* deal in the Software without restriction, including without limitation the
29893
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
29894
* sell copies of the Software, and to permit persons to whom the Software is
29895
* furnished to do so, subject to the following conditions:
29896
*
29897
* The above copyright notice and this permission notice shall be included in
29898
* all copies or substantial portions of the Software.
29899
*
29900
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29901
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29902
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29903
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29904
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29905
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
29906
* IN THE SOFTWARE.
29907
*/
29908
29909
#ifndef JANET_AMALG
29910
#include "features.h"
29911
#include <janet.h>
29912
#include "state.h"
29913
#include "util.h"
29914
#endif
29915
29916
#ifdef JANET_WINDOWS
29917
#include <windows.h>
29918
#endif
29919
29920
JANET_THREAD_LOCAL JanetVM janet_vm;
29921
29922
0
JanetVM *janet_local_vm(void) {
29923
0
    return &janet_vm;
29924
0
}
29925
29926
0
JanetVM *janet_vm_alloc(void) {
29927
0
    JanetVM *mem = janet_malloc(sizeof(JanetVM));
29928
0
    if (NULL == mem) {
29929
0
        JANET_OUT_OF_MEMORY;
29930
0
    }
29931
0
    return mem;
29932
0
}
29933
29934
0
void janet_vm_free(JanetVM *vm) {
29935
0
    janet_free(vm);
29936
0
}
29937
29938
0
void janet_vm_save(JanetVM *into) {
29939
0
    *into = janet_vm;
29940
0
}
29941
29942
0
void janet_vm_load(JanetVM *from) {
29943
0
    janet_vm = *from;
29944
0
}
29945
29946
/* Trigger suspension of the Janet vm by trying to
29947
 * exit the interpreter loop when convenient. You can optionally
29948
 * use NULL to interrupt the current VM when convenient */
29949
0
void janet_interpreter_interrupt(JanetVM *vm) {
29950
0
    vm = vm ? vm : &janet_vm;
29951
0
    janet_atomic_inc(&vm->auto_suspend);
29952
0
}
29953
29954
0
void janet_interpreter_interrupt_handled(JanetVM *vm) {
29955
0
    vm = vm ? vm : &janet_vm;
29956
0
    janet_atomic_dec(&vm->auto_suspend);
29957
0
}
29958
29959
29960
/* src/core/string.c */
29961
#line 0 "src/core/string.c"
29962
29963
/*
29964
* Copyright (c) 2025 Calvin Rose
29965
*
29966
* Permission is hereby granted, free of charge, to any person obtaining a copy
29967
* of this software and associated documentation files (the "Software"), to
29968
* deal in the Software without restriction, including without limitation the
29969
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
29970
* sell copies of the Software, and to permit persons to whom the Software is
29971
* furnished to do so, subject to the following conditions:
29972
*
29973
* The above copyright notice and this permission notice shall be included in
29974
* all copies or substantial portions of the Software.
29975
*
29976
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29977
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29978
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29979
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29980
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29981
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
29982
* IN THE SOFTWARE.
29983
*/
29984
29985
#ifndef JANET_AMALG
29986
#include "features.h"
29987
#include <janet.h>
29988
#include "gc.h"
29989
#include "util.h"
29990
#include "state.h"
29991
#endif
29992
29993
#include <string.h>
29994
29995
/* Begin building a string */
29996
0
uint8_t *janet_string_begin(int32_t length) {
29997
0
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_STRING, sizeof(JanetStringHead) + (size_t) length + 1);
29998
0
    head->length = length;
29999
0
    uint8_t *data = (uint8_t *)head->data;
30000
0
    data[length] = 0;
30001
0
    return data;
30002
0
}
30003
30004
/* Finish building a string */
30005
0
const uint8_t *janet_string_end(uint8_t *str) {
30006
0
    janet_string_hash(str) = janet_string_calchash(str, janet_string_length(str));
30007
0
    return str;
30008
0
}
30009
30010
/* Load a buffer as a string */
30011
1.50M
const uint8_t *janet_string(const uint8_t *buf, int32_t len) {
30012
1.50M
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_STRING, sizeof(JanetStringHead) + (size_t) len + 1);
30013
1.50M
    head->length = len;
30014
1.50M
    head->hash = janet_string_calchash(buf, len);
30015
1.50M
    uint8_t *data = (uint8_t *)head->data;
30016
1.50M
    safe_memcpy(data, buf, len);
30017
1.50M
    data[len] = 0;
30018
1.50M
    return data;
30019
1.50M
}
30020
30021
/* Compare two strings */
30022
618k
int janet_string_compare(const uint8_t *lhs, const uint8_t *rhs) {
30023
618k
    int32_t xlen = janet_string_length(lhs);
30024
618k
    int32_t ylen = janet_string_length(rhs);
30025
618k
    int32_t len = xlen > ylen ? ylen : xlen;
30026
618k
    int res = memcmp(lhs, rhs, len);
30027
618k
    if (res) return res > 0 ? 1 : -1;
30028
617k
    if (xlen == ylen) return 0;
30029
441
    return xlen < ylen ? -1 : 1;
30030
617k
}
30031
30032
/* Compare a janet string with a piece of memory */
30033
4.51M
int janet_string_equalconst(const uint8_t *lhs, const uint8_t *rhs, int32_t rlen, int32_t rhash) {
30034
4.51M
    int32_t lhash = janet_string_hash(lhs);
30035
4.51M
    int32_t llen = janet_string_length(lhs);
30036
4.51M
    if (lhash != rhash || llen != rlen)
30037
221k
        return 0;
30038
4.29M
    if (lhs == rhs)
30039
19.9k
        return 1;
30040
4.27M
    return !memcmp(lhs, rhs, rlen);
30041
4.29M
}
30042
30043
/* Check if two strings are equal */
30044
53.9k
int janet_string_equal(const uint8_t *lhs, const uint8_t *rhs) {
30045
53.9k
    return janet_string_equalconst(lhs, rhs,
30046
53.9k
                                   janet_string_length(rhs), janet_string_hash(rhs));
30047
53.9k
}
30048
30049
/* Load a c string */
30050
0
const uint8_t *janet_cstring(const char *str) {
30051
0
    return janet_string((const uint8_t *)str, (int32_t)strlen(str));
30052
0
}
30053
30054
/* Knuth Morris Pratt Algorithm */
30055
30056
struct kmp_state {
30057
    int32_t i;
30058
    int32_t j;
30059
    int32_t textlen;
30060
    int32_t patlen;
30061
    int32_t *lookup;
30062
    const uint8_t *text;
30063
    const uint8_t *pat;
30064
};
30065
30066
static void kmp_init(
30067
    struct kmp_state *s,
30068
    const uint8_t *text, int32_t textlen,
30069
0
    const uint8_t *pat, int32_t patlen) {
30070
0
    if (patlen == 0) {
30071
0
        janet_panic("expected non-empty pattern");
30072
0
    }
30073
0
    int32_t *lookup = janet_calloc(patlen, sizeof(int32_t));
30074
0
    if (!lookup) {
30075
0
        JANET_OUT_OF_MEMORY;
30076
0
    }
30077
0
    s->lookup = lookup;
30078
0
    s->i = 0;
30079
0
    s->j = 0;
30080
0
    s->text = text;
30081
0
    s->pat = pat;
30082
0
    s->textlen = textlen;
30083
0
    s->patlen = patlen;
30084
    /* Init state machine */
30085
0
    {
30086
0
        int32_t i, j;
30087
0
        for (i = 1, j = 0; i < patlen; i++) {
30088
0
            while (j && pat[j] != pat[i]) j = lookup[j - 1];
30089
0
            if (pat[j] == pat[i]) j++;
30090
0
            lookup[i] = j;
30091
0
        }
30092
0
    }
30093
0
}
30094
30095
0
static void kmp_deinit(struct kmp_state *state) {
30096
0
    janet_free(state->lookup);
30097
0
}
30098
30099
0
static void kmp_seti(struct kmp_state *state, int32_t i) {
30100
0
    state->i = i;
30101
0
    state->j = 0;
30102
0
}
30103
30104
0
static int32_t kmp_next(struct kmp_state *state) {
30105
0
    int32_t i = state->i;
30106
0
    int32_t j = state->j;
30107
0
    int32_t textlen = state->textlen;
30108
0
    int32_t patlen = state->patlen;
30109
0
    const uint8_t *text = state->text;
30110
0
    const uint8_t *pat = state->pat;
30111
0
    int32_t *lookup = state->lookup;
30112
0
    while (i < textlen) {
30113
0
        if (text[i] == pat[j]) {
30114
0
            if (j == patlen - 1) {
30115
0
                state->i = i + 1;
30116
0
                state->j = lookup[j];
30117
0
                return i - j;
30118
0
            } else {
30119
0
                i++;
30120
0
                j++;
30121
0
            }
30122
0
        } else {
30123
0
            if (j > 0) {
30124
0
                j = lookup[j - 1];
30125
0
            } else {
30126
0
                i++;
30127
0
            }
30128
0
        }
30129
0
    }
30130
0
    return -1;
30131
0
}
30132
30133
/* CFuns */
30134
30135
JANET_CORE_FN(cfun_string_slice,
30136
              "(string/slice bytes &opt start end)",
30137
              "Returns a substring from a byte sequence. The substring is from "
30138
              "index `start` inclusive to index `end`, exclusive. All indexing "
30139
              "is from 0. `start` and `end` can also be negative to indicate indexing "
30140
              "from the end of the string. Note that if `start` is negative it is "
30141
              "exclusive, and if `end` is negative it is inclusive, to allow a full "
30142
0
              "negative slice range.") {
30143
0
    JanetByteView view = janet_getbytes(argv, 0);
30144
0
    JanetRange range = janet_getslice(argc, argv);
30145
0
    return janet_stringv(view.bytes + range.start, range.end - range.start);
30146
0
}
30147
30148
JANET_CORE_FN(cfun_symbol_slice,
30149
              "(symbol/slice bytes &opt start end)",
30150
0
              "Same as string/slice, but returns a symbol.") {
30151
0
    JanetByteView view = janet_getbytes(argv, 0);
30152
0
    JanetRange range = janet_getslice(argc, argv);
30153
0
    return janet_symbolv(view.bytes + range.start, range.end - range.start);
30154
0
}
30155
30156
JANET_CORE_FN(cfun_keyword_slice,
30157
              "(keyword/slice bytes &opt start end)",
30158
0
              "Same as string/slice, but returns a keyword.") {
30159
0
    JanetByteView view = janet_getbytes(argv, 0);
30160
0
    JanetRange range = janet_getslice(argc, argv);
30161
0
    return janet_keywordv(view.bytes + range.start, range.end - range.start);
30162
0
}
30163
30164
JANET_CORE_FN(cfun_string_repeat,
30165
              "(string/repeat bytes n)",
30166
0
              "Returns a string that is `n` copies of `bytes` concatenated.") {
30167
0
    janet_fixarity(argc, 2);
30168
0
    JanetByteView view = janet_getbytes(argv, 0);
30169
0
    int32_t rep = janet_getinteger(argv, 1);
30170
0
    if (rep < 0) janet_panic("expected non-negative number of repetitions");
30171
0
    if (rep == 0) return janet_cstringv("");
30172
0
    int64_t mulres = (int64_t) rep * view.len;
30173
0
    if (mulres > INT32_MAX) janet_panic("result string is too long");
30174
0
    uint8_t *newbuf = janet_string_begin((int32_t) mulres);
30175
0
    uint8_t *end = newbuf + mulres;
30176
0
    for (uint8_t *p = newbuf; p < end; p += view.len) {
30177
0
        safe_memcpy(p, view.bytes, view.len);
30178
0
    }
30179
0
    return janet_wrap_string(janet_string_end(newbuf));
30180
0
}
30181
30182
JANET_CORE_FN(cfun_string_bytes,
30183
              "(string/bytes str)",
30184
0
              "Returns a tuple of integers that are the byte values of the string.") {
30185
0
    janet_fixarity(argc, 1);
30186
0
    JanetByteView view = janet_getbytes(argv, 0);
30187
0
    Janet *tup = janet_tuple_begin(view.len);
30188
0
    int32_t i;
30189
0
    for (i = 0; i < view.len; i++) {
30190
0
        tup[i] = janet_wrap_integer((int32_t) view.bytes[i]);
30191
0
    }
30192
0
    return janet_wrap_tuple(janet_tuple_end(tup));
30193
0
}
30194
30195
JANET_CORE_FN(cfun_string_frombytes,
30196
              "(string/from-bytes & byte-vals)",
30197
              "Creates a string from integer parameters with byte values. All integers "
30198
0
              "will be coerced to the range of 1 byte 0-255.") {
30199
0
    int32_t i;
30200
0
    uint8_t *buf = janet_string_begin(argc);
30201
0
    for (i = 0; i < argc; i++) {
30202
0
        int32_t c = janet_getinteger(argv, i);
30203
0
        buf[i] = c & 0xFF;
30204
0
    }
30205
0
    return janet_wrap_string(janet_string_end(buf));
30206
0
}
30207
30208
JANET_CORE_FN(cfun_string_asciilower,
30209
              "(string/ascii-lower str)",
30210
              "Returns a new string where all bytes are replaced with the "
30211
              "lowercase version of themselves in ASCII. Does only a very simple "
30212
0
              "case check, meaning no unicode support.") {
30213
0
    janet_fixarity(argc, 1);
30214
0
    JanetByteView view = janet_getbytes(argv, 0);
30215
0
    uint8_t *buf = janet_string_begin(view.len);
30216
0
    for (int32_t i = 0; i < view.len; i++) {
30217
0
        uint8_t c = view.bytes[i];
30218
0
        if (c >= 65 && c <= 90) {
30219
0
            buf[i] = c + 32;
30220
0
        } else {
30221
0
            buf[i] = c;
30222
0
        }
30223
0
    }
30224
0
    return janet_wrap_string(janet_string_end(buf));
30225
0
}
30226
30227
JANET_CORE_FN(cfun_string_asciiupper,
30228
              "(string/ascii-upper str)",
30229
              "Returns a new string where all bytes are replaced with the "
30230
              "uppercase version of themselves in ASCII. Does only a very simple "
30231
0
              "case check, meaning no unicode support.") {
30232
0
    janet_fixarity(argc, 1);
30233
0
    JanetByteView view = janet_getbytes(argv, 0);
30234
0
    uint8_t *buf = janet_string_begin(view.len);
30235
0
    for (int32_t i = 0; i < view.len; i++) {
30236
0
        uint8_t c = view.bytes[i];
30237
0
        if (c >= 97 && c <= 122) {
30238
0
            buf[i] = c - 32;
30239
0
        } else {
30240
0
            buf[i] = c;
30241
0
        }
30242
0
    }
30243
0
    return janet_wrap_string(janet_string_end(buf));
30244
0
}
30245
30246
JANET_CORE_FN(cfun_string_reverse,
30247
              "(string/reverse str)",
30248
0
              "Returns a string that is the reversed version of `str`.") {
30249
0
    janet_fixarity(argc, 1);
30250
0
    JanetByteView view = janet_getbytes(argv, 0);
30251
0
    uint8_t *buf = janet_string_begin(view.len);
30252
0
    int32_t i, j;
30253
0
    for (i = 0, j = view.len - 1; i < view.len; i++, j--) {
30254
0
        buf[i] = view.bytes[j];
30255
0
    }
30256
0
    return janet_wrap_string(janet_string_end(buf));
30257
0
}
30258
30259
0
static void findsetup(int32_t argc, Janet *argv, struct kmp_state *s, int32_t extra) {
30260
0
    janet_arity(argc, 2, 3 + extra);
30261
0
    JanetByteView pat = janet_getbytes(argv, 0);
30262
0
    JanetByteView text = janet_getbytes(argv, 1);
30263
0
    int32_t start = 0;
30264
0
    if (argc >= 3) {
30265
0
        start = janet_getinteger(argv, 2);
30266
0
        if (start < 0) janet_panic("expected non-negative start index");
30267
0
    }
30268
0
    kmp_init(s, text.bytes, text.len, pat.bytes, pat.len);
30269
0
    s->i = start;
30270
0
}
30271
30272
JANET_CORE_FN(cfun_string_find,
30273
              "(string/find patt str &opt start-index)",
30274
              "Searches for the first instance of pattern `patt` in string "
30275
              "`str`. Returns the index of the first character in `patt` if found, "
30276
0
              "otherwise returns nil.") {
30277
0
    int32_t result;
30278
0
    struct kmp_state state;
30279
0
    findsetup(argc, argv, &state, 0);
30280
0
    result = kmp_next(&state);
30281
0
    kmp_deinit(&state);
30282
0
    return result < 0
30283
0
           ? janet_wrap_nil()
30284
0
           : janet_wrap_integer(result);
30285
0
}
30286
30287
JANET_CORE_FN(cfun_string_hasprefix,
30288
              "(string/has-prefix? pfx str)",
30289
0
              "Tests whether `str` starts with `pfx`.") {
30290
0
    janet_fixarity(argc, 2);
30291
0
    JanetByteView prefix = janet_getbytes(argv, 0);
30292
0
    JanetByteView str = janet_getbytes(argv, 1);
30293
0
    return str.len < prefix.len
30294
0
           ? janet_wrap_false()
30295
0
           : janet_wrap_boolean(memcmp(prefix.bytes, str.bytes, prefix.len) == 0);
30296
0
}
30297
30298
JANET_CORE_FN(cfun_string_hassuffix,
30299
              "(string/has-suffix? sfx str)",
30300
0
              "Tests whether `str` ends with `sfx`.") {
30301
0
    janet_fixarity(argc, 2);
30302
0
    JanetByteView suffix = janet_getbytes(argv, 0);
30303
0
    JanetByteView str = janet_getbytes(argv, 1);
30304
0
    return str.len < suffix.len
30305
0
           ? janet_wrap_false()
30306
0
           : janet_wrap_boolean(memcmp(suffix.bytes,
30307
0
                                       str.bytes + str.len - suffix.len,
30308
0
                                       suffix.len) == 0);
30309
0
}
30310
30311
JANET_CORE_FN(cfun_string_findall,
30312
              "(string/find-all patt str &opt start-index)",
30313
              "Searches for all instances of pattern `patt` in string "
30314
              "`str`. Returns an array of all indices of found patterns. Overlapping "
30315
              "instances of the pattern are counted individually, meaning a byte in `str` "
30316
0
              "may contribute to multiple found patterns.") {
30317
0
    int32_t result;
30318
0
    struct kmp_state state;
30319
0
    findsetup(argc, argv, &state, 0);
30320
0
    JanetArray *array = janet_array(0);
30321
0
    while ((result = kmp_next(&state)) >= 0) {
30322
0
        janet_array_push(array, janet_wrap_integer(result));
30323
0
    }
30324
0
    kmp_deinit(&state);
30325
0
    return janet_wrap_array(array);
30326
0
}
30327
30328
struct replace_state {
30329
    struct kmp_state kmp;
30330
    Janet subst;
30331
};
30332
30333
0
static void replacesetup(int32_t argc, Janet *argv, struct replace_state *s) {
30334
0
    janet_arity(argc, 3, 4);
30335
0
    JanetByteView pat = janet_getbytes(argv, 0);
30336
0
    Janet subst = argv[1];
30337
0
    JanetByteView text = janet_getbytes(argv, 2);
30338
0
    int32_t start = 0;
30339
0
    if (argc == 4) {
30340
0
        start = janet_getinteger(argv, 3);
30341
0
        if (start < 0) janet_panic("expected non-negative start index");
30342
0
    }
30343
0
    kmp_init(&s->kmp, text.bytes, text.len, pat.bytes, pat.len);
30344
0
    s->kmp.i = start;
30345
0
    s->subst = subst;
30346
0
}
30347
30348
JANET_CORE_FN(cfun_string_replace,
30349
              "(string/replace patt subst str)",
30350
              "Replace the first occurrence of `patt` with `subst` in the string `str`. "
30351
              "If `subst` is a function, it will be called with `patt` only if a match is found, "
30352
              "and should return the actual replacement text to use. "
30353
0
              "Will return the new string if `patt` is found, otherwise returns `str`.") {
30354
0
    int32_t result;
30355
0
    struct replace_state s;
30356
0
    uint8_t *buf;
30357
0
    replacesetup(argc, argv, &s);
30358
0
    result = kmp_next(&s.kmp);
30359
0
    if (result < 0) {
30360
0
        kmp_deinit(&s.kmp);
30361
0
        return janet_stringv(s.kmp.text, s.kmp.textlen);
30362
0
    }
30363
0
    JanetByteView subst = janet_text_substitution(&s.subst, s.kmp.text + result, s.kmp.patlen, NULL);
30364
0
    buf = janet_string_begin(s.kmp.textlen - s.kmp.patlen + subst.len);
30365
0
    safe_memcpy(buf, s.kmp.text, result);
30366
0
    safe_memcpy(buf + result, subst.bytes, subst.len);
30367
0
    safe_memcpy(buf + result + subst.len,
30368
0
                s.kmp.text + result + s.kmp.patlen,
30369
0
                s.kmp.textlen - result - s.kmp.patlen);
30370
0
    kmp_deinit(&s.kmp);
30371
0
    return janet_wrap_string(janet_string_end(buf));
30372
0
}
30373
30374
JANET_CORE_FN(cfun_string_replaceall,
30375
              "(string/replace-all patt subst str)",
30376
              "Replace all instances of `patt` with `subst` in the string `str`. Overlapping "
30377
              "matches will not be counted, only the first match in such a span will be replaced. "
30378
              "If `subst` is a function, it will be called with `patt` once for each match, "
30379
              "and should return the actual replacement text to use. "
30380
0
              "Will return the new string if `patt` is found, otherwise returns `str`.") {
30381
0
    int32_t result;
30382
0
    struct replace_state s;
30383
0
    JanetBuffer b;
30384
0
    int32_t lastindex = 0;
30385
0
    replacesetup(argc, argv, &s);
30386
0
    janet_buffer_init(&b, s.kmp.textlen);
30387
0
    while ((result = kmp_next(&s.kmp)) >= 0) {
30388
0
        JanetByteView subst = janet_text_substitution(&s.subst, s.kmp.text + result, s.kmp.patlen, NULL);
30389
0
        janet_buffer_push_bytes(&b, s.kmp.text + lastindex, result - lastindex);
30390
0
        janet_buffer_push_bytes(&b, subst.bytes, subst.len);
30391
0
        lastindex = result + s.kmp.patlen;
30392
0
        kmp_seti(&s.kmp, lastindex);
30393
0
    }
30394
0
    janet_buffer_push_bytes(&b, s.kmp.text + lastindex, s.kmp.textlen - lastindex);
30395
0
    const uint8_t *ret = janet_string(b.data, b.count);
30396
0
    janet_buffer_deinit(&b);
30397
0
    kmp_deinit(&s.kmp);
30398
0
    return janet_wrap_string(ret);
30399
0
}
30400
30401
JANET_CORE_FN(cfun_string_split,
30402
              "(string/split delim str &opt start limit)",
30403
              "Splits a string `str` with delimiter `delim` and returns an array of "
30404
              "substrings. The substrings will not contain the delimiter `delim`. If `delim` "
30405
              "is not found, the returned array will have one element. Will start searching "
30406
              "for `delim` at the index `start` (if provided), and return up to a maximum "
30407
0
              "of `limit` results (if provided).") {
30408
0
    int32_t result;
30409
0
    JanetArray *array;
30410
0
    struct kmp_state state;
30411
0
    int32_t limit = -1, lastindex = 0;
30412
0
    if (argc == 4) {
30413
0
        limit = janet_getinteger(argv, 3);
30414
0
    }
30415
0
    findsetup(argc, argv, &state, 1);
30416
0
    array = janet_array(0);
30417
0
    while ((result = kmp_next(&state)) >= 0 && --limit) {
30418
0
        const uint8_t *slice = janet_string(state.text + lastindex, result - lastindex);
30419
0
        janet_array_push(array, janet_wrap_string(slice));
30420
0
        lastindex = result + state.patlen;
30421
0
        kmp_seti(&state, lastindex);
30422
0
    }
30423
0
    const uint8_t *slice = janet_string(state.text + lastindex, state.textlen - lastindex);
30424
0
    janet_array_push(array, janet_wrap_string(slice));
30425
0
    kmp_deinit(&state);
30426
0
    return janet_wrap_array(array);
30427
0
}
30428
30429
JANET_CORE_FN(cfun_string_checkset,
30430
              "(string/check-set set str)",
30431
              "Checks that the string `str` only contains bytes that appear in the string `set`. "
30432
              "Returns true if all bytes in `str` appear in `set`, false if some bytes in `str` do "
30433
0
              "not appear in `set`.") {
30434
0
    uint32_t bitset[8] = {0, 0, 0, 0, 0, 0, 0, 0};
30435
0
    janet_fixarity(argc, 2);
30436
0
    JanetByteView set = janet_getbytes(argv, 0);
30437
0
    JanetByteView str = janet_getbytes(argv, 1);
30438
    /* Populate set */
30439
0
    for (int32_t i = 0; i < set.len; i++) {
30440
0
        int index = set.bytes[i] >> 5;
30441
0
        uint32_t mask = 1 << (set.bytes[i] & 0x1F);
30442
0
        bitset[index] |= mask;
30443
0
    }
30444
    /* Check set */
30445
0
    for (int32_t i = 0; i < str.len; i++) {
30446
0
        int index = str.bytes[i] >> 5;
30447
0
        uint32_t mask = 1 << (str.bytes[i] & 0x1F);
30448
0
        if (!(bitset[index] & mask)) {
30449
0
            return janet_wrap_false();
30450
0
        }
30451
0
    }
30452
0
    return janet_wrap_true();
30453
0
}
30454
30455
JANET_CORE_FN(cfun_string_join,
30456
              "(string/join parts &opt sep)",
30457
              "Joins an array of strings into one string, optionally separated by "
30458
0
              "a separator string `sep`.") {
30459
0
    janet_arity(argc, 1, 2);
30460
0
    JanetView parts = janet_getindexed(argv, 0);
30461
0
    JanetByteView joiner;
30462
0
    if (argc == 2) {
30463
0
        joiner = janet_getbytes(argv, 1);
30464
0
    } else {
30465
0
        joiner.bytes = NULL;
30466
0
        joiner.len = 0;
30467
0
    }
30468
    /* Check args */
30469
0
    int32_t i;
30470
0
    int64_t finallen = 0;
30471
0
    for (i = 0; i < parts.len; i++) {
30472
0
        const uint8_t *chunk;
30473
0
        int32_t chunklen = 0;
30474
0
        if (!janet_bytes_view(parts.items[i], &chunk, &chunklen)) {
30475
0
            janet_panicf("item %d of parts is not a byte sequence, got %v", i, parts.items[i]);
30476
0
        }
30477
0
        if (i) finallen += joiner.len;
30478
0
        finallen += chunklen;
30479
0
        if (finallen > INT32_MAX)
30480
0
            janet_panic("result string too long");
30481
0
    }
30482
0
    uint8_t *buf, *out;
30483
0
    out = buf = janet_string_begin((int32_t) finallen);
30484
0
    for (i = 0; i < parts.len; i++) {
30485
0
        const uint8_t *chunk = NULL;
30486
0
        int32_t chunklen = 0;
30487
0
        if (i) {
30488
0
            safe_memcpy(out, joiner.bytes, joiner.len);
30489
0
            out += joiner.len;
30490
0
        }
30491
0
        janet_bytes_view(parts.items[i], &chunk, &chunklen);
30492
0
        safe_memcpy(out, chunk, chunklen);
30493
0
        out += chunklen;
30494
0
    }
30495
0
    return janet_wrap_string(janet_string_end(buf));
30496
0
}
30497
30498
JANET_CORE_FN(cfun_string_format,
30499
              "(string/format format & values)",
30500
              "Similar to C's `snprintf`, but specialized for operating with Janet values. Returns "
30501
              "a new string.\n\n"
30502
              "The following conversion specifiers are supported, where the upper case specifiers generate "
30503
              "upper case output:\n"
30504
              "- `c`: ASCII character.\n"
30505
              "- `d`, `i`: integer, formatted as a decimal number.\n"
30506
              "- `x`, `X`: integer, formatted as a hexadecimal number.\n"
30507
              "- `o`: integer, formatted as an octal number.\n"
30508
              "- `f`, `F`: floating point number, formatted as a decimal number.\n"
30509
              "- `e`, `E`: floating point number, formatted in scientific notation.\n"
30510
              "- `g`, `G`: floating point number, formatted in its shortest form.\n"
30511
              "- `a`, `A`: floating point number, formatted as a hexadecimal number.\n"
30512
              "- `s`: formatted as a string, precision indicates padding and maximum length.\n"
30513
              "- `t`: emit the type of the given value.\n"
30514
              "- `v`: format with (describe x)\n"
30515
              "- `V`: format with (string x)\n"
30516
              "- `j`: format to jdn (Janet data notation).\n"
30517
              "\n"
30518
              "The following conversion specifiers are used for \"pretty-printing\", where the upper-case "
30519
              "variants generate colored output. These specifiers can take a precision "
30520
              "argument to specify the maximum nesting depth to print.\n"
30521
              "- `p`, `P`: pretty format, truncating if necessary\n"
30522
              "- `m`, `M`: pretty format without truncating.\n"
30523
              "- `q`, `Q`: pretty format on one line, truncating if necessary.\n"
30524
0
              "- `n`, `N`: pretty format on one line without truncation.\n") {
30525
0
    janet_arity(argc, 1, -1);
30526
0
    JanetBuffer *buffer = janet_buffer(0);
30527
0
    const char *strfrmt = (const char *) janet_getstring(argv, 0);
30528
0
    janet_buffer_format(buffer, strfrmt, 0, argc, argv);
30529
0
    return janet_stringv(buffer->data, buffer->count);
30530
0
}
30531
30532
0
static int trim_help_checkset(JanetByteView set, uint8_t x) {
30533
0
    for (int32_t j = 0; j < set.len; j++)
30534
0
        if (set.bytes[j] == x)
30535
0
            return 1;
30536
0
    return 0;
30537
0
}
30538
30539
0
static int32_t trim_help_leftedge(JanetByteView str, JanetByteView set) {
30540
0
    for (int32_t i = 0; i < str.len; i++)
30541
0
        if (!trim_help_checkset(set, str.bytes[i]))
30542
0
            return i;
30543
0
    return str.len;
30544
0
}
30545
30546
0
static int32_t trim_help_rightedge(JanetByteView str, JanetByteView set) {
30547
0
    for (int32_t i = str.len - 1; i >= 0; i--)
30548
0
        if (!trim_help_checkset(set, str.bytes[i]))
30549
0
            return i + 1;
30550
0
    return 0;
30551
0
}
30552
30553
0
static void trim_help_args(int32_t argc, Janet *argv, JanetByteView *str, JanetByteView *set) {
30554
0
    janet_arity(argc, 1, 2);
30555
0
    *str = janet_getbytes(argv, 0);
30556
0
    if (argc >= 2) {
30557
0
        *set = janet_getbytes(argv, 1);
30558
0
    } else {
30559
0
        set->bytes = (const uint8_t *)(" \t\r\n\v\f");
30560
0
        set->len = 6;
30561
0
    }
30562
0
}
30563
30564
JANET_CORE_FN(cfun_string_trim,
30565
              "(string/trim str &opt set)",
30566
              "Trim leading and trailing whitespace from a byte sequence. If the argument "
30567
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
30568
0
    JanetByteView str, set;
30569
0
    trim_help_args(argc, argv, &str, &set);
30570
0
    int32_t left_edge = trim_help_leftedge(str, set);
30571
0
    int32_t right_edge = trim_help_rightedge(str, set);
30572
0
    if (right_edge < left_edge)
30573
0
        return janet_stringv(NULL, 0);
30574
0
    return janet_stringv(str.bytes + left_edge, right_edge - left_edge);
30575
0
}
30576
30577
JANET_CORE_FN(cfun_string_triml,
30578
              "(string/triml str &opt set)",
30579
              "Trim leading whitespace from a byte sequence. If the argument "
30580
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
30581
0
    JanetByteView str, set;
30582
0
    trim_help_args(argc, argv, &str, &set);
30583
0
    int32_t left_edge = trim_help_leftedge(str, set);
30584
0
    return janet_stringv(str.bytes + left_edge, str.len - left_edge);
30585
0
}
30586
30587
JANET_CORE_FN(cfun_string_trimr,
30588
              "(string/trimr str &opt set)",
30589
              "Trim trailing whitespace from a byte sequence. If the argument "
30590
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
30591
0
    JanetByteView str, set;
30592
0
    trim_help_args(argc, argv, &str, &set);
30593
0
    int32_t right_edge = trim_help_rightedge(str, set);
30594
0
    return janet_stringv(str.bytes, right_edge);
30595
0
}
30596
30597
/* Module entry point */
30598
0
void janet_lib_string(JanetTable *env) {
30599
0
    JanetRegExt string_cfuns[] = {
30600
0
        JANET_CORE_REG("string/slice", cfun_string_slice),
30601
0
        JANET_CORE_REG("keyword/slice", cfun_keyword_slice),
30602
0
        JANET_CORE_REG("symbol/slice", cfun_symbol_slice),
30603
0
        JANET_CORE_REG("string/repeat", cfun_string_repeat),
30604
0
        JANET_CORE_REG("string/bytes", cfun_string_bytes),
30605
0
        JANET_CORE_REG("string/from-bytes", cfun_string_frombytes),
30606
0
        JANET_CORE_REG("string/ascii-lower", cfun_string_asciilower),
30607
0
        JANET_CORE_REG("string/ascii-upper", cfun_string_asciiupper),
30608
0
        JANET_CORE_REG("string/reverse", cfun_string_reverse),
30609
0
        JANET_CORE_REG("string/find", cfun_string_find),
30610
0
        JANET_CORE_REG("string/find-all", cfun_string_findall),
30611
0
        JANET_CORE_REG("string/has-prefix?", cfun_string_hasprefix),
30612
0
        JANET_CORE_REG("string/has-suffix?", cfun_string_hassuffix),
30613
0
        JANET_CORE_REG("string/replace", cfun_string_replace),
30614
0
        JANET_CORE_REG("string/replace-all", cfun_string_replaceall),
30615
0
        JANET_CORE_REG("string/split", cfun_string_split),
30616
0
        JANET_CORE_REG("string/check-set", cfun_string_checkset),
30617
0
        JANET_CORE_REG("string/join", cfun_string_join),
30618
0
        JANET_CORE_REG("string/format", cfun_string_format),
30619
0
        JANET_CORE_REG("string/trim", cfun_string_trim),
30620
0
        JANET_CORE_REG("string/triml", cfun_string_triml),
30621
0
        JANET_CORE_REG("string/trimr", cfun_string_trimr),
30622
0
        JANET_REG_END
30623
0
    };
30624
0
    janet_core_cfuns_ext(env, NULL, string_cfuns);
30625
0
}
30626
30627
30628
/* src/core/strtod.c */
30629
#line 0 "src/core/strtod.c"
30630
30631
/*
30632
* Copyright (c) 2025 Calvin Rose
30633
*
30634
* Permission is hereby granted, free of charge, to any person obtaining a copy
30635
* of this software and associated documentation files (the "Software"), to
30636
* deal in the Software without restriction, including without limitation the
30637
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
30638
* sell copies of the Software, and to permit persons to whom the Software is
30639
* furnished to do so, subject to the following conditions:
30640
*
30641
* The above copyright notice and this permission notice shall be included in
30642
* all copies or substantial portions of the Software.
30643
*
30644
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30645
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30646
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30647
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30648
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30649
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30650
* IN THE SOFTWARE.
30651
*/
30652
30653
/* Use a custom double parser instead of libc's strtod for better portability
30654
 * and control.
30655
 *
30656
 * This version has been modified for much greater flexibility in parsing, such
30657
 * as choosing the radix and supporting scientific notation with any radix.
30658
 *
30659
 * Numbers are of the form [-+]R[rR]I.F[eE&][-+]X in pseudo-regex form, where R
30660
 * is the radix, I is the integer part, F is the fractional part, and X is the
30661
 * exponent. All signs, radix, decimal point, fractional part, and exponent can
30662
 * be omitted.  The radix is assumed to be 10 if omitted, and the E or e
30663
 * separator for the exponent can only be used when the radix is 10. This is
30664
 * because E is a valid digit in bases 15 or greater. For bases greater than
30665
 * 10, the letters are used as digits. A through Z correspond to the digits 10
30666
 * through 35, and the lowercase letters have the same values. The radix number
30667
 * is always in base 10. For example, a hexadecimal number could be written
30668
 * '16rdeadbeef'. janet_scan_number also supports some c style syntax for
30669
 * hexadecimal literals. The previous number could also be written
30670
 * '0xdeadbeef'.
30671
 */
30672
30673
#ifndef JANET_AMALG
30674
#include "features.h"
30675
#include <janet.h>
30676
#include "util.h"
30677
#endif
30678
30679
#include <math.h>
30680
#include <string.h>
30681
30682
/* Lookup table for getting values of characters when parsing numbers. Handles
30683
 * digits 0-9 and a-z (and A-Z). A-Z have values of 10 to 35. */
30684
static uint8_t digit_lookup[128] = {
30685
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30686
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30687
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30688
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30689
    0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
30690
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0xff, 0xff, 0xff, 0xff, 0xff,
30691
    0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
30692
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0xff, 0xff, 0xff, 0xff, 0xff
30693
};
30694
30695
36.1k
#define BIGNAT_NBIT 31
30696
15.3G
#define BIGNAT_BASE 0x80000000U
30697
30698
/* Allow for large mantissa. BigNat is a natural number. */
30699
struct BigNat {
30700
    uint32_t first_digit; /* First digit so we don't need to allocate when not needed. */
30701
    int32_t n; /* n digits */
30702
    int32_t cap; /* allocated digit capacity */
30703
    uint32_t *digits; /* Each digit is base (2 ^ 31). Digits are least significant first. */
30704
};
30705
30706
/* Initialize a bignat to 0 */
30707
96.5k
static void bignat_zero(struct BigNat *x) {
30708
96.5k
    x->first_digit = 0;
30709
96.5k
    x->n = 0;
30710
96.5k
    x->cap = 0;
30711
96.5k
    x->digits = NULL;
30712
96.5k
}
30713
30714
/* Allocate n more digits for mant. Return a pointer to these digits. */
30715
175k
static uint32_t *bignat_extra(struct BigNat *mant, int32_t n) {
30716
175k
    int32_t oldn = mant->n;
30717
175k
    int32_t newn = oldn + n;
30718
175k
    if (mant->cap < newn) {
30719
14.6k
        int32_t newcap = 2 * newn;
30720
14.6k
        uint32_t *mem = janet_realloc(mant->digits, (size_t) newcap * sizeof(uint32_t));
30721
14.6k
        if (NULL == mem) {
30722
0
            JANET_OUT_OF_MEMORY;
30723
0
        }
30724
14.6k
        mant->cap = newcap;
30725
14.6k
        mant->digits = mem;
30726
14.6k
    }
30727
175k
    mant->n = newn;
30728
175k
    return mant->digits + oldn;
30729
175k
}
30730
30731
/* Append a digit */
30732
172k
static void bignat_append(struct BigNat *mant, uint32_t dig) {
30733
172k
    bignat_extra(mant, 1)[0] = dig;
30734
172k
}
30735
30736
/* Multiply the mantissa mant by a factor and the add a term
30737
 * in one operation. factor will be between 2 and 36^4,
30738
 * term will be between 0 and 36. */
30739
1.38M
static void bignat_muladd(struct BigNat *mant, uint32_t factor, uint32_t term) {
30740
1.38M
    int32_t i;
30741
1.38M
    uint64_t carry = ((uint64_t) mant->first_digit) * factor + term;
30742
1.38M
    mant->first_digit = carry % BIGNAT_BASE;
30743
1.38M
    carry /= BIGNAT_BASE;
30744
5.30G
    for (i = 0; i < mant->n; i++) {
30745
5.29G
        carry += ((uint64_t) mant->digits[i]) * factor;
30746
5.29G
        mant->digits[i] = carry % BIGNAT_BASE;
30747
5.29G
        carry /= BIGNAT_BASE;
30748
5.29G
    }
30749
1.38M
    if (carry) bignat_append(mant, (uint32_t) carry);
30750
1.38M
}
30751
30752
/* Divide the mantissa mant by a factor. Drop the remainder. */
30753
452k
static void bignat_div(struct BigNat *mant, uint32_t divisor) {
30754
452k
    int32_t i;
30755
452k
    uint32_t quotient, remainder;
30756
452k
    uint64_t dividend;
30757
452k
    remainder = 0, quotient = 0;
30758
4.73G
    for (i = mant->n - 1; i >= 0; i--) {
30759
4.72G
        dividend = ((uint64_t)remainder * BIGNAT_BASE) + mant->digits[i];
30760
4.72G
        if (i < mant->n - 1) mant->digits[i + 1] = quotient;
30761
4.72G
        quotient = (uint32_t)(dividend / divisor);
30762
4.72G
        remainder = (uint32_t)(dividend % divisor);
30763
4.72G
        mant->digits[i] = remainder;
30764
4.72G
    }
30765
452k
    dividend = ((uint64_t)remainder * BIGNAT_BASE) + mant->first_digit;
30766
452k
    if (mant->n && mant->digits[mant->n - 1] == 0) mant->n--;
30767
452k
    mant->first_digit = (uint32_t)(dividend / divisor);
30768
452k
}
30769
30770
/* Shift left by a multiple of BIGNAT_NBIT */
30771
3.77k
static void bignat_lshift_n(struct BigNat *mant, int n) {
30772
3.77k
    if (!n) return;
30773
3.77k
    int32_t oldn = mant->n;
30774
3.77k
    bignat_extra(mant, n);
30775
3.77k
    memmove(mant->digits + n, mant->digits, sizeof(uint32_t) * oldn);
30776
3.77k
    memset(mant->digits, 0, sizeof(uint32_t) * (n - 1));
30777
3.77k
    mant->digits[n - 1] = mant->first_digit;
30778
3.77k
    mant->first_digit = 0;
30779
3.77k
}
30780
30781
#ifdef __GNUC__
30782
10.7k
#define clz(x) __builtin_clz(x)
30783
#else
30784
static int clz(uint32_t x) {
30785
    int n = 0;
30786
    if (x <= 0x0000ffff) n += 16, x <<= 16;
30787
    if (x <= 0x00ffffff) n += 8, x <<= 8;
30788
    if (x <= 0x0fffffff) n += 4, x <<= 4;
30789
    if (x <= 0x3fffffff) n += 2, x <<= 2;
30790
    if (x <= 0x7fffffff) n ++;
30791
    return n;
30792
}
30793
#endif
30794
30795
/* Extract double value from mantissa */
30796
23.5k
static double bignat_extract(struct BigNat *mant, int32_t exponent2) {
30797
23.5k
    uint64_t top53;
30798
23.5k
    int32_t n = mant->n;
30799
    /* Get most significant 53 bits from mant. Bit 52 (0 indexed) should
30800
     * always be 1. This is essentially a large right shift on mant.*/
30801
23.5k
    if (n) {
30802
        /* Two or more digits */
30803
10.7k
        uint64_t d1 = mant->digits[n - 1]; /* MSD (non-zero) */
30804
10.7k
        uint64_t d2 = (n == 1) ? mant->first_digit : mant->digits[n - 2];
30805
10.7k
        uint64_t d3 = (n > 2) ? mant->digits[n - 3] : (n == 2) ? mant->first_digit : 0;
30806
10.7k
        int lz = clz((uint32_t) d1);
30807
10.7k
        int nbits = 32 - lz;
30808
        /* First get 54 bits */
30809
10.7k
        top53 = (d2 << (54 - BIGNAT_NBIT)) + (d3 >> (2 * BIGNAT_NBIT - 54));
30810
10.7k
        top53 >>= nbits;
30811
10.7k
        top53 |= (d1 << (54 - nbits));
30812
        /* Rounding based on lowest bit of 54 */
30813
10.7k
        if (top53 & 1) top53++;
30814
10.7k
        top53 >>= 1;
30815
10.7k
        if (top53 > 0x1FffffFFFFffffUL) {
30816
1.33k
            top53 >>= 1;
30817
1.33k
            exponent2++;
30818
1.33k
        }
30819
        /* Correct exponent - to correct for large right shift to mantissa. */
30820
10.7k
        exponent2 += (nbits - 53) + BIGNAT_NBIT * n;
30821
12.7k
    } else {
30822
        /* One digit */
30823
12.7k
        top53 = mant->first_digit;
30824
12.7k
    }
30825
23.5k
    return ldexp((double)top53, exponent2);
30826
23.5k
}
30827
30828
/* Read in a mantissa and exponent of a certain base, and give
30829
 * back the double value. Should properly handle 0s, infinities, and
30830
 * denormalized numbers. (When the exponent values are too large or small) */
30831
static double convert(
30832
    int negative,
30833
    struct BigNat *mant,
30834
    int32_t base,
30835
28.3k
    int32_t exponent) {
30836
30837
28.3k
    int32_t exponent2 = 0;
30838
30839
    /* Approximate exponent in base 2 of mant and exponent. This should get us a good estimate of the final size of the
30840
     * number, within * 2^32 or so. */
30841
28.3k
    int64_t mant_exp2_approx = mant->n * 32 + 16;
30842
28.3k
    int64_t exp_exp2_approx = (int64_t)(floor(log2(base) * exponent));
30843
28.3k
    int64_t exp2_approx = mant_exp2_approx + exp_exp2_approx;
30844
30845
    /* Short circuit zero, huge, and small numbers. We use the exponent range of valid IEEE754 doubles (-1022, 1023)
30846
     * with a healthy buffer to allow for inaccuracies in the approximation and denormailzed numbers. */
30847
28.3k
    if (mant->n == 0 && mant->first_digit == 0)
30848
3.63k
        return negative ? -0.0 : 0.0;
30849
24.7k
    if (exp2_approx > 1176)
30850
527
        return negative ? -INFINITY : INFINITY;
30851
24.2k
    if (exp2_approx < -1175)
30852
652
        return negative ? -0.0 : 0.0;
30853
30854
    /* Final value is X = mant * base ^ exponent * 2 ^ exponent2
30855
     * Get exponent to zero while holding X constant. */
30856
30857
    /* Positive exponents are simple */
30858
53.9k
    for (; exponent > 3; exponent -= 4) bignat_muladd(mant, base * base * base * base, 0);
30859
25.4k
    for (; exponent > 1; exponent -= 2) bignat_muladd(mant, base * base, 0);
30860
27.0k
    for (; exponent > 0; exponent -= 1) bignat_muladd(mant, base, 0);
30861
30862
    /* Negative exponents are tricky - we don't want to loose bits
30863
     * from integer division, so we need to premultiply. */
30864
23.5k
    if (exponent < 0) {
30865
3.77k
        int32_t shamt = 5 - exponent / 4;
30866
3.77k
        bignat_lshift_n(mant, shamt);
30867
3.77k
        exponent2 -= shamt * BIGNAT_NBIT;
30868
452k
        for (; exponent < -3; exponent += 4) bignat_div(mant, base * base * base * base);
30869
5.68k
        for (; exponent < -1; exponent += 2) bignat_div(mant, base * base);
30870
5.75k
        for (; exponent <  0; exponent += 1) bignat_div(mant, base);
30871
3.77k
    }
30872
30873
23.5k
    return negative
30874
23.5k
           ? -bignat_extract(mant, exponent2)
30875
23.5k
           : bignat_extract(mant, exponent2);
30876
24.2k
}
30877
30878
/* Scan a real (double) from a string. If the string cannot be converted into
30879
 * and integer, return 0. */
30880
int janet_scan_number_base(
30881
    const uint8_t *str,
30882
    int32_t len,
30883
    int32_t base,
30884
96.5k
    double *out) {
30885
96.5k
    const uint8_t *end = str + len;
30886
96.5k
    int seenadigit = 0;
30887
96.5k
    int ex = 0;
30888
96.5k
    int seenpoint = 0;
30889
96.5k
    int foundexp = 0;
30890
96.5k
    int neg = 0;
30891
96.5k
    struct BigNat mant;
30892
96.5k
    bignat_zero(&mant);
30893
30894
    /* Prevent some kinds of overflow bugs relating to the exponent
30895
     * overflowing.  For example, if a string was passed 2GB worth of 0s after
30896
     * the decimal point, exponent could wrap around and become positive. It's
30897
     * easier to reject ridiculously large inputs than to check for overflows.
30898
     * */
30899
96.5k
    if (len > INT32_MAX / 40) goto error;
30900
30901
    /* Get sign */
30902
96.5k
    if (str >= end) goto error;
30903
96.5k
    if (*str == '-') {
30904
70.7k
        neg = 1;
30905
70.7k
        str++;
30906
70.7k
    } else if (*str == '+') {
30907
1.75k
        str++;
30908
1.75k
    }
30909
30910
    /* Check for leading 0x or digit digit r */
30911
96.5k
    if (base == 0) {
30912
96.5k
        if (str + 1 < end && str[0] == '0' && str[1] == 'x') {
30913
1.44k
            base = 16;
30914
1.44k
            str += 2;
30915
95.0k
        } else if (str + 1 < end  &&
30916
95.0k
                   str[0] >= '0' && str[0] <= '9' &&
30917
95.0k
                   str[1] == 'r') {
30918
1.42k
            base = str[0] - '0';
30919
1.42k
            str += 2;
30920
93.6k
        } else if (str + 2 < end  &&
30921
93.6k
                   str[0] >= '0' && str[0] <= '9' &&
30922
93.6k
                   str[1] >= '0' && str[1] <= '9' &&
30923
93.6k
                   str[2] == 'r') {
30924
13.2k
            base = 10 * (str[0] - '0') + (str[1] - '0');
30925
13.2k
            if (base < 2 || base > 36) goto error;
30926
6.40k
            str += 3;
30927
6.40k
        }
30928
96.5k
    }
30929
30930
    /* If still base is 0, set to default (10) */
30931
89.6k
    if (base == 0) {
30932
80.4k
        base = 10;
30933
80.4k
    }
30934
89.6k
    int exp_base = base;
30935
30936
    /* Skip leading zeros */
30937
106k
    while (str < end && (*str == '0' || *str == '.')) {
30938
17.7k
        if (seenpoint) ex--;
30939
17.7k
        if (*str == '.') {
30940
8.37k
            if (seenpoint) goto error;
30941
7.84k
            seenpoint = 1;
30942
9.35k
        } else {
30943
9.35k
            seenadigit = 1;
30944
9.35k
        }
30945
17.1k
        str++;
30946
17.1k
    }
30947
30948
    /* Parse significant digits */
30949
1.44M
    while (str < end) {
30950
1.37M
        if (*str == '.') {
30951
1.14k
            if (seenpoint) goto error;
30952
803
            seenpoint = 1;
30953
1.37M
        } else if (*str == '&') {
30954
6.93k
            foundexp = 1;
30955
6.93k
            break;
30956
1.36M
        } else if (base == 16 && (*str == 'P' || *str == 'p')) { /* IEEE hex float */
30957
1.20k
            foundexp = 1;
30958
1.20k
            exp_base = 10;
30959
1.20k
            base = 2;
30960
1.20k
            ex *= 4; /* We need to correct the current exponent after we change the base */
30961
1.20k
            break;
30962
1.36M
        } else if (base == 10 && (*str == 'E' || *str == 'e')) {
30963
3.09k
            foundexp = 1;
30964
3.09k
            break;
30965
1.36M
        } else if (*str == '_') {
30966
1.30k
            if (!seenadigit) goto error;
30967
1.36M
        } else {
30968
1.36M
            int digit = digit_lookup[*str & 0x7F];
30969
1.36M
            if (*str > 127 || digit >= base) goto error;
30970
1.35M
            if (seenpoint) ex--;
30971
1.35M
            bignat_muladd(&mant, base, digit);
30972
1.35M
            seenadigit = 1;
30973
1.35M
        }
30974
1.35M
        str++;
30975
1.35M
    }
30976
30977
75.4k
    if (!seenadigit)
30978
44.7k
        goto error;
30979
30980
    /* Read exponent */
30981
30.6k
    if (str < end && foundexp) {
30982
9.02k
        int eneg = 0;
30983
9.02k
        int32_t ee = 0;
30984
9.02k
        seenadigit = 0;
30985
9.02k
        str++;
30986
9.02k
        if (str >= end) goto error;
30987
8.37k
        if (*str == '-') {
30988
1.69k
            eneg = 1;
30989
1.69k
            str++;
30990
6.67k
        } else if (*str == '+') {
30991
1.74k
            str++;
30992
1.74k
        }
30993
        /* Skip leading 0s in exponent */
30994
23.5k
        while (str < end && *str == '0') {
30995
15.1k
            str++;
30996
15.1k
            seenadigit = 1;
30997
15.1k
        }
30998
23.0k
        while (str < end) {
30999
16.0k
            int digit = digit_lookup[*str & 0x7F];
31000
16.0k
            if (*str > 127 || digit >= exp_base) goto error;
31001
14.6k
            if (ee < (INT32_MAX / 40)) {
31002
14.1k
                ee = exp_base * ee + digit;
31003
14.1k
            }
31004
14.6k
            str++;
31005
14.6k
            seenadigit = 1;
31006
14.6k
        }
31007
6.99k
        if (eneg) ex -= ee;
31008
5.29k
        else ex += ee;
31009
6.99k
    }
31010
31011
28.6k
    if (!seenadigit)
31012
245
        goto error;
31013
31014
28.3k
    *out = convert(neg, &mant, base, ex);
31015
28.3k
    janet_free(mant.digits);
31016
28.3k
    return 0;
31017
31018
68.1k
error:
31019
68.1k
    janet_free(mant.digits);
31020
68.1k
    return 1;
31021
28.6k
}
31022
31023
int janet_scan_number(
31024
    const uint8_t *str,
31025
    int32_t len,
31026
0
    double *out) {
31027
0
    return janet_scan_number_base(str, len, 0, out);
31028
0
}
31029
31030
#ifdef JANET_INT_TYPES
31031
31032
static int scan_uint64(
31033
    const uint8_t *str,
31034
    int32_t len,
31035
    uint64_t *out,
31036
40.3k
    int *neg) {
31037
40.3k
    const uint8_t *end = str + len;
31038
40.3k
    int seenadigit = 0;
31039
40.3k
    int base = 10;
31040
40.3k
    *neg = 0;
31041
40.3k
    *out = 0;
31042
40.3k
    uint64_t accum = 0;
31043
    /* len max is INT64_MAX in base 2 with _ between each bits */
31044
    /* '2r' + 64 bits + 63 _  + sign = 130 => 150 for some leading  */
31045
    /* zeros */
31046
40.3k
    if (len > 150) return 0;
31047
    /* Get sign */
31048
40.1k
    if (str >= end) return 0;
31049
40.1k
    if (*str == '-') {
31050
25.3k
        *neg = 1;
31051
25.3k
        str++;
31052
25.3k
    } else if (*str == '+') {
31053
1.34k
        str++;
31054
1.34k
    }
31055
    /* Check for leading 0x or digit digit r */
31056
40.1k
    if (str + 1 < end && str[0] == '0' && str[1] == 'x') {
31057
351
        base = 16;
31058
351
        str += 2;
31059
39.7k
    } else if (str + 1 < end  &&
31060
39.7k
               str[0] >= '0' && str[0] <= '9' &&
31061
39.7k
               str[1] == 'r') {
31062
422
        base = str[0] - '0';
31063
422
        str += 2;
31064
39.3k
    } else if (str + 2 < end  &&
31065
39.3k
               str[0] >= '0' && str[0] <= '9' &&
31066
39.3k
               str[1] >= '0' && str[1] <= '9' &&
31067
39.3k
               str[2] == 'r') {
31068
11.6k
        base = 10 * (str[0] - '0') + (str[1] - '0');
31069
11.6k
        if (base < 2 || base > 36) return 0;
31070
10.6k
        str += 3;
31071
10.6k
    }
31072
31073
    /* Skip leading zeros */
31074
51.1k
    while (str < end && *str == '0') {
31075
11.9k
        seenadigit = 1;
31076
11.9k
        str++;
31077
11.9k
    }
31078
    /* Parse significant digits */
31079
199k
    while (str < end) {
31080
169k
        if (*str == '_') {
31081
1.02k
            if (!seenadigit) return 0;
31082
168k
        } else {
31083
168k
            int digit = digit_lookup[*str & 0x7F];
31084
168k
            if (*str > 127 || digit >= base) return 0;
31085
159k
            if (accum > (UINT64_MAX - digit) / base) return 0;
31086
159k
            accum = accum * base + digit;
31087
159k
            seenadigit = 1;
31088
159k
        }
31089
159k
        str++;
31090
159k
    }
31091
31092
29.0k
    if (!seenadigit) return 0;
31093
23.9k
    *out = accum;
31094
23.9k
    return 1;
31095
29.0k
}
31096
31097
33.3k
int janet_scan_int64(const uint8_t *str, int32_t len, int64_t *out) {
31098
33.3k
    int neg;
31099
33.3k
    uint64_t bi;
31100
33.3k
    if (scan_uint64(str, len, &bi, &neg)) {
31101
20.8k
        if (neg && bi <= ((UINT64_MAX / 2) + 1)) {
31102
9.79k
            if (bi > INT64_MAX) {
31103
4.33k
                *out = INT64_MIN;
31104
5.46k
            } else {
31105
5.46k
                *out = -((int64_t) bi);
31106
5.46k
            }
31107
9.79k
            return 1;
31108
9.79k
        }
31109
11.0k
        if (!neg && bi <= INT64_MAX) {
31110
9.07k
            *out = (int64_t) bi;
31111
9.07k
            return 1;
31112
9.07k
        }
31113
11.0k
    }
31114
14.4k
    return 0;
31115
33.3k
}
31116
31117
6.98k
int janet_scan_uint64(const uint8_t *str, int32_t len, uint64_t *out) {
31118
6.98k
    int neg;
31119
6.98k
    uint64_t bi;
31120
6.98k
    if (scan_uint64(str, len, &bi, &neg)) {
31121
3.17k
        if (!neg) {
31122
2.60k
            *out = bi;
31123
2.60k
            return 1;
31124
2.60k
        }
31125
3.17k
    }
31126
4.38k
    return 0;
31127
6.98k
}
31128
31129
/* Similar to janet_scan_number but allows for
31130
 * more numeric types with a given suffix. */
31131
int janet_scan_numeric(
31132
    const uint8_t *str,
31133
    int32_t len,
31134
137k
    Janet *out) {
31135
137k
    int result;
31136
137k
    double num;
31137
137k
    int64_t i64 = 0;
31138
137k
    uint64_t u64 = 0;
31139
137k
    if (len < 2 || str[len - 2] != ':') {
31140
96.3k
        result = janet_scan_number_base(str, len, 0, &num);
31141
96.3k
        *out = janet_wrap_number(num);
31142
96.3k
        return result;
31143
96.3k
    }
31144
41.2k
    switch (str[len - 1]) {
31145
758
        default:
31146
758
            return 1;
31147
194
        case 'n':
31148
194
            result = janet_scan_number_base(str, len - 2, 0, &num);
31149
194
            *out = janet_wrap_number(num);
31150
194
            return result;
31151
        /* Condition is inverted janet_scan_int64 and janet_scan_uint64 */
31152
33.3k
        case 's':
31153
33.3k
            result = !janet_scan_int64(str, len - 2, &i64);
31154
33.3k
            *out = janet_wrap_s64(i64);
31155
33.3k
            return result;
31156
6.98k
        case 'u':
31157
6.98k
            result = !janet_scan_uint64(str, len - 2, &u64);
31158
6.98k
            *out = janet_wrap_u64(u64);
31159
6.98k
            return result;
31160
41.2k
    }
31161
41.2k
}
31162
31163
#endif
31164
31165
0
void janet_buffer_dtostr(JanetBuffer *buffer, double x) {
31166
0
#define BUFSIZE 32
31167
0
    janet_buffer_extra(buffer, BUFSIZE);
31168
0
    int count = snprintf((char *) buffer->data + buffer->count, BUFSIZE, "%.17g", x);
31169
0
#undef BUFSIZE
31170
    /* fix locale issues with commas */
31171
0
    for (int i = 0; i < count; i++) {
31172
0
        char c = buffer->data[buffer->count + i];
31173
0
        if (c == ',') {
31174
0
            buffer->data[buffer->count + i] = '.';
31175
0
        }
31176
0
    }
31177
0
    buffer->count += count;
31178
0
}
31179
31180
31181
/* src/core/struct.c */
31182
#line 0 "src/core/struct.c"
31183
31184
/*
31185
* Copyright (c) 2025 Calvin Rose
31186
*
31187
* Permission is hereby granted, free of charge, to any person obtaining a copy
31188
* of this software and associated documentation files (the "Software"), to
31189
* deal in the Software without restriction, including without limitation the
31190
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31191
* sell copies of the Software, and to permit persons to whom the Software is
31192
* furnished to do so, subject to the following conditions:
31193
*
31194
* The above copyright notice and this permission notice shall be included in
31195
* all copies or substantial portions of the Software.
31196
*
31197
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31198
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31199
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31200
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31201
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31202
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31203
* IN THE SOFTWARE.
31204
*/
31205
31206
#ifndef JANET_AMALG
31207
#include "features.h"
31208
#include <janet.h>
31209
#include "gc.h"
31210
#include "util.h"
31211
#include <math.h>
31212
#endif
31213
31214
/* Begin creation of a struct */
31215
2.92M
JanetKV *janet_struct_begin(int32_t count) {
31216
    /* Calculate capacity as power of 2 after 2 * count. */
31217
2.92M
    int32_t capacity = janet_tablen(2 * count);
31218
2.92M
    if (capacity < 0) capacity = janet_tablen(count + 1);
31219
31220
2.92M
    size_t size = sizeof(JanetStructHead) + (size_t) capacity * sizeof(JanetKV);
31221
2.92M
    JanetStructHead *head = janet_gcalloc(JANET_MEMORY_STRUCT, size);
31222
2.92M
    head->length = count;
31223
2.92M
    head->capacity = capacity;
31224
2.92M
    head->hash = 0;
31225
2.92M
    head->proto = NULL;
31226
31227
2.92M
    JanetKV *st = (JanetKV *)(head->data);
31228
2.92M
    janet_memempty(st, capacity);
31229
2.92M
    return st;
31230
2.92M
}
31231
31232
/* Find an item in a struct without looking for prototypes. Should be similar to janet_dict_find, but
31233
 * specialized to structs (slightly more compact). */
31234
0
const JanetKV *janet_struct_find(const JanetKV *st, Janet key) {
31235
0
    int32_t cap = janet_struct_capacity(st);
31236
0
    int32_t index = janet_maphash(cap, janet_hash(key));
31237
0
    int32_t i;
31238
0
    for (i = index; i < cap; i++)
31239
0
        if (janet_checktype(st[i].key, JANET_NIL) || janet_equals(st[i].key, key))
31240
0
            return st + i;
31241
0
    for (i = 0; i < index; i++)
31242
0
        if (janet_checktype(st[i].key, JANET_NIL) || janet_equals(st[i].key, key))
31243
0
            return st + i;
31244
0
    return NULL;
31245
0
}
31246
31247
/* Put a kv pair into a struct that has not yet been fully constructed.
31248
 * Nil keys and values are ignored, extra keys are ignore, and duplicate keys are
31249
 * ignored.
31250
 *
31251
 * Runs will be in sorted order, as the collisions resolver essentially
31252
 * preforms an in-place insertion sort. This ensures the internal structure of the
31253
 * hash map is independent of insertion order.
31254
 */
31255
3.04M
void janet_struct_put_ext(JanetKV *st, Janet key, Janet value, int replace) {
31256
3.04M
    int32_t cap = janet_struct_capacity(st);
31257
3.04M
    int32_t hash = janet_hash(key);
31258
3.04M
    int32_t index = janet_maphash(cap, hash);
31259
3.04M
    int32_t i, j, dist;
31260
3.04M
    int32_t bounds[4] = {index, cap, 0, index};
31261
3.04M
    if (janet_checktype(key, JANET_NIL) || janet_checktype(value, JANET_NIL)) return;
31262
3.03M
    if (janet_checktype(key, JANET_NUMBER) && isnan(janet_unwrap_number(key))) return;
31263
    /* Avoid extra items */
31264
3.03M
    if (janet_struct_hash(st) == janet_struct_length(st)) return;
31265
3.03M
    for (dist = 0, j = 0; j < 4; j += 2)
31266
3.81M
        for (i = bounds[j]; i < bounds[j + 1]; i++, dist++) {
31267
3.81M
            int status;
31268
3.81M
            int32_t otherhash;
31269
3.81M
            int32_t otherindex, otherdist;
31270
3.81M
            JanetKV *kv = st + i;
31271
            /* We found an empty slot, so just add key and value */
31272
3.81M
            if (janet_checktype(kv->key, JANET_NIL)) {
31273
2.04M
                kv->key = key;
31274
2.04M
                kv->value = value;
31275
                /* Update the temporary count */
31276
2.04M
                janet_struct_hash(st)++;
31277
2.04M
                return;
31278
2.04M
            }
31279
            /* Robinhood hashing - check if colliding kv pair
31280
             * is closer to their source than current. We use robinhood
31281
             * hashing to ensure that equivalent structs that are constructed
31282
             * with different order have the same internal layout, and therefor
31283
             * will compare properly - i.e., {1 2 3 4} should equal {3 4 1 2}.
31284
             * Collisions are resolved via an insertion sort insertion. */
31285
1.76M
            otherhash = janet_hash(kv->key);
31286
1.76M
            otherindex = janet_maphash(cap, otherhash);
31287
1.76M
            otherdist = (i + cap - otherindex) & (cap - 1);
31288
1.76M
            if (dist < otherdist)
31289
149k
                status = -1;
31290
1.61M
            else if (otherdist < dist)
31291
93.2k
                status = 1;
31292
1.52M
            else if (hash < otherhash)
31293
266k
                status = -1;
31294
1.25M
            else if (otherhash < hash)
31295
125k
                status = 1;
31296
1.12M
            else
31297
1.12M
                status = janet_compare(key, kv->key);
31298
            /* If other is closer to their ideal slot */
31299
1.76M
            if (status == 1) {
31300
                /* Swap current kv pair with pair in slot */
31301
220k
                JanetKV temp = *kv;
31302
220k
                kv->key = key;
31303
220k
                kv->value = value;
31304
220k
                key = temp.key;
31305
220k
                value = temp.value;
31306
                /* Save dist and hash of new kv pair */
31307
220k
                dist = otherdist;
31308
220k
                hash = otherhash;
31309
1.54M
            } else if (status == 0) {
31310
988k
                if (replace) {
31311
                    /* A key was added to the struct more than once - replace old value */
31312
988k
                    kv->value = value;
31313
988k
                }
31314
988k
                return;
31315
988k
            }
31316
1.76M
        }
31317
3.03M
}
31318
31319
3.04M
void janet_struct_put(JanetKV *st, Janet key, Janet value) {
31320
3.04M
    janet_struct_put_ext(st, key, value, 1);
31321
3.04M
}
31322
31323
/* Finish building a struct */
31324
2.92M
const JanetKV *janet_struct_end(JanetKV *st) {
31325
2.92M
    if (janet_struct_hash(st) != janet_struct_length(st)) {
31326
        /* Error building struct, probably duplicate values. We need to rebuild
31327
         * the struct using only the values that went in. The second creation should always
31328
         * succeed. */
31329
1.76k
        JanetKV *newst = janet_struct_begin(janet_struct_hash(st));
31330
6.58M
        for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
31331
6.58M
            JanetKV *kv = st + i;
31332
6.58M
            if (!janet_checktype(kv->key, JANET_NIL)) {
31333
1.02M
                janet_struct_put(newst, kv->key, kv->value);
31334
1.02M
            }
31335
6.58M
        }
31336
1.76k
        janet_struct_proto(newst) = janet_struct_proto(st);
31337
1.76k
        st = newst;
31338
1.76k
    }
31339
2.92M
    janet_struct_hash(st) = janet_kv_calchash(st, janet_struct_capacity(st));
31340
2.92M
    if (janet_struct_proto(st)) {
31341
0
        janet_struct_hash(st) += 2654435761u * janet_struct_hash(janet_struct_proto(st));
31342
0
    }
31343
2.92M
    return (const JanetKV *)st;
31344
2.92M
}
31345
31346
/* Get an item from a struct without looking into prototypes. */
31347
0
Janet janet_struct_rawget(const JanetKV *st, Janet key) {
31348
0
    const JanetKV *kv = janet_struct_find(st, key);
31349
0
    return kv ? kv->value : janet_wrap_nil();
31350
0
}
31351
31352
/* Get an item from a struct */
31353
0
Janet janet_struct_get(const JanetKV *st, Janet key) {
31354
0
    for (int i = JANET_MAX_PROTO_DEPTH; st && i; --i, st = janet_struct_proto(st)) {
31355
0
        const JanetKV *kv = janet_struct_find(st, key);
31356
0
        if (NULL != kv && !janet_checktype(kv->key, JANET_NIL)) {
31357
0
            return kv->value;
31358
0
        }
31359
0
    }
31360
0
    return janet_wrap_nil();
31361
0
}
31362
31363
/* Get an item from a struct, and record which prototype the item came from. */
31364
0
Janet janet_struct_get_ex(const JanetKV *st, Janet key, JanetStruct *which) {
31365
0
    for (int i = JANET_MAX_PROTO_DEPTH; st && i; --i, st = janet_struct_proto(st)) {
31366
0
        const JanetKV *kv = janet_struct_find(st, key);
31367
0
        if (NULL != kv && !janet_checktype(kv->key, JANET_NIL)) {
31368
0
            *which = st;
31369
0
            return kv->value;
31370
0
        }
31371
0
    }
31372
0
    return janet_wrap_nil();
31373
0
}
31374
31375
/* Convert struct to table */
31376
0
JanetTable *janet_struct_to_table(const JanetKV *st) {
31377
0
    JanetTable *table = janet_table(janet_struct_capacity(st));
31378
0
    int32_t i;
31379
0
    for (i = 0; i < janet_struct_capacity(st); i++) {
31380
0
        const JanetKV *kv = st + i;
31381
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
31382
0
            janet_table_put(table, kv->key, kv->value);
31383
0
        }
31384
0
    }
31385
0
    return table;
31386
0
}
31387
31388
/* C Functions */
31389
31390
JANET_CORE_FN(cfun_struct_with_proto,
31391
              "(struct/with-proto proto & kvs)",
31392
              "Create a structure, as with the usual struct constructor but set the "
31393
0
              "struct prototype as well.") {
31394
0
    janet_arity(argc, 1, -1);
31395
0
    JanetStruct proto = janet_optstruct(argv, argc, 0, NULL);
31396
0
    if (!(argc & 1))
31397
0
        janet_panic("expected odd number of arguments");
31398
0
    JanetKV *st = janet_struct_begin(argc / 2);
31399
0
    for (int32_t i = 1; i < argc; i += 2) {
31400
0
        janet_struct_put(st, argv[i], argv[i + 1]);
31401
0
    }
31402
0
    janet_struct_proto(st) = proto;
31403
0
    return janet_wrap_struct(janet_struct_end(st));
31404
0
}
31405
31406
JANET_CORE_FN(cfun_struct_getproto,
31407
              "(struct/getproto st)",
31408
0
              "Return the prototype of a struct, or nil if it doesn't have one.") {
31409
0
    janet_fixarity(argc, 1);
31410
0
    JanetStruct st = janet_getstruct(argv, 0);
31411
0
    return janet_struct_proto(st)
31412
0
           ? janet_wrap_struct(janet_struct_proto(st))
31413
0
           : janet_wrap_nil();
31414
0
}
31415
31416
JANET_CORE_FN(cfun_struct_flatten,
31417
              "(struct/proto-flatten st)",
31418
              "Convert a struct with prototypes to a struct with no prototypes by merging "
31419
0
              "all key value pairs from recursive prototypes into one new struct.") {
31420
0
    janet_fixarity(argc, 1);
31421
0
    JanetStruct st = janet_getstruct(argv, 0);
31422
31423
    /* get an upper bounds on the number of items in the final struct */
31424
0
    int64_t pair_count = 0;
31425
0
    JanetStruct cursor = st;
31426
0
    while (cursor) {
31427
0
        pair_count += janet_struct_length(cursor);
31428
0
        cursor = janet_struct_proto(cursor);
31429
0
    }
31430
31431
0
    if (pair_count > INT32_MAX) {
31432
0
        janet_panic("struct too large");
31433
0
    }
31434
31435
0
    JanetKV *accum = janet_struct_begin((int32_t) pair_count);
31436
0
    cursor = st;
31437
0
    while (cursor) {
31438
0
        for (int32_t i = 0; i < janet_struct_capacity(cursor); i++) {
31439
0
            const JanetKV *kv = cursor + i;
31440
0
            if (!janet_checktype(kv->key, JANET_NIL)) {
31441
0
                janet_struct_put_ext(accum, kv->key, kv->value, 0);
31442
0
            }
31443
0
        }
31444
0
        cursor = janet_struct_proto(cursor);
31445
0
    }
31446
0
    return janet_wrap_struct(janet_struct_end(accum));
31447
0
}
31448
31449
JANET_CORE_FN(cfun_struct_to_table,
31450
              "(struct/to-table st &opt recursive)",
31451
              "Convert a struct to a table. If recursive is true, also convert the "
31452
0
              "table's prototypes into the new struct's prototypes as well.") {
31453
0
    janet_arity(argc, 1, 2);
31454
0
    JanetStruct st = janet_getstruct(argv, 0);
31455
0
    int recursive = argc > 1 && janet_truthy(argv[1]);
31456
0
    JanetTable *tab = NULL;
31457
0
    JanetStruct cursor = st;
31458
0
    JanetTable *tab_cursor = tab;
31459
0
    do {
31460
0
        if (tab) {
31461
0
            tab_cursor->proto = janet_table(janet_struct_length(cursor));
31462
0
            tab_cursor = tab_cursor->proto;
31463
0
        } else {
31464
0
            tab = janet_table(janet_struct_length(cursor));
31465
0
            tab_cursor = tab;
31466
0
        }
31467
        /* TODO - implement as memcpy since struct memory should be compatible
31468
         * with table memory */
31469
0
        for (int32_t i = 0; i < janet_struct_capacity(cursor); i++) {
31470
0
            const JanetKV *kv = cursor + i;
31471
0
            if (!janet_checktype(kv->key, JANET_NIL)) {
31472
0
                janet_table_put(tab_cursor, kv->key, kv->value);
31473
0
            }
31474
0
        }
31475
0
        cursor = janet_struct_proto(cursor);
31476
0
    } while (recursive && cursor);
31477
0
    return janet_wrap_table(tab);
31478
0
}
31479
31480
JANET_CORE_FN(cfun_struct_rawget,
31481
              "(struct/rawget st key)",
31482
              "Gets a value from a struct `st` without looking at the prototype struct. "
31483
              "If `st` does not contain the key directly, the function will return "
31484
0
              "nil without checking the prototype. Returns the value in the struct.") {
31485
0
    janet_fixarity(argc, 2);
31486
0
    JanetStruct st = janet_getstruct(argv, 0);
31487
0
    return janet_struct_rawget(st, argv[1]);
31488
0
}
31489
31490
/* Load the struct module */
31491
0
void janet_lib_struct(JanetTable *env) {
31492
0
    JanetRegExt struct_cfuns[] = {
31493
0
        JANET_CORE_REG("struct/with-proto", cfun_struct_with_proto),
31494
0
        JANET_CORE_REG("struct/getproto", cfun_struct_getproto),
31495
0
        JANET_CORE_REG("struct/proto-flatten", cfun_struct_flatten),
31496
0
        JANET_CORE_REG("struct/to-table", cfun_struct_to_table),
31497
0
        JANET_CORE_REG("struct/rawget", cfun_struct_rawget),
31498
0
        JANET_REG_END
31499
0
    };
31500
0
    janet_core_cfuns_ext(env, NULL, struct_cfuns);
31501
0
}
31502
31503
31504
/* src/core/symcache.c */
31505
#line 0 "src/core/symcache.c"
31506
31507
/*
31508
* Copyright (c) 2025 Calvin Rose
31509
*
31510
* Permission is hereby granted, free of charge, to any person obtaining a copy
31511
* of this software and associated documentation files (the "Software"), to
31512
* deal in the Software without restriction, including without limitation the
31513
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31514
* sell copies of the Software, and to permit persons to whom the Software is
31515
* furnished to do so, subject to the following conditions:
31516
*
31517
* The above copyright notice and this permission notice shall be included in
31518
* all copies or substantial portions of the Software.
31519
*
31520
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31521
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31522
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31523
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31524
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31525
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31526
* IN THE SOFTWARE.
31527
*/
31528
31529
/* The symbol cache is an open hashtable with all active symbols in the program
31530
 * stored in it. As the primary use of symbols is table lookups and equality
31531
 * checks, all symbols are interned so that there is a single copy of it in the
31532
 * whole program. Equality is then just a pointer check. */
31533
31534
#ifndef JANET_AMALG
31535
#include "features.h"
31536
#include <janet.h>
31537
#include "state.h"
31538
#include "gc.h"
31539
#include "util.h"
31540
#include "symcache.h"
31541
#endif
31542
31543
#include <string.h>
31544
31545
/* Initialize the cache (allocate cache memory) */
31546
6.23k
void janet_symcache_init() {
31547
6.23k
    janet_vm.cache_capacity = 1024;
31548
6.23k
    janet_vm.cache = janet_calloc(1, (size_t) janet_vm.cache_capacity * sizeof(const uint8_t *));
31549
6.23k
    if (NULL == janet_vm.cache) {
31550
0
        JANET_OUT_OF_MEMORY;
31551
0
    }
31552
6.23k
    memset(&janet_vm.gensym_counter, '0', sizeof(janet_vm.gensym_counter));
31553
6.23k
    janet_vm.gensym_counter[0] = '_';
31554
6.23k
    janet_vm.cache_count = 0;
31555
6.23k
    janet_vm.cache_deleted = 0;
31556
6.23k
}
31557
31558
/* Deinitialize the cache (free the cache memory) */
31559
6.23k
void janet_symcache_deinit() {
31560
6.23k
    janet_free((void *)janet_vm.cache);
31561
6.23k
    janet_vm.cache = NULL;
31562
6.23k
    janet_vm.cache_capacity = 0;
31563
6.23k
    janet_vm.cache_count = 0;
31564
6.23k
    janet_vm.cache_deleted = 0;
31565
6.23k
}
31566
31567
/* Mark an entry in the table as deleted. */
31568
static const uint8_t JANET_SYMCACHE_DELETED[1] = {0};
31569
31570
/* Find an item in the cache and return its location.
31571
 * If the item is not found, return the location
31572
 * where one would put it. */
31573
static const uint8_t **janet_symcache_findmem(
31574
    const uint8_t *str,
31575
    int32_t len,
31576
    int32_t hash,
31577
4.26M
    int *success) {
31578
4.26M
    uint32_t bounds[4];
31579
4.26M
    uint32_t i, j, index;
31580
4.26M
    const uint8_t **firstEmpty = NULL;
31581
31582
    /* We will search two ranges - index to the end,
31583
     * and 0 to the index. */
31584
4.26M
    index = (uint32_t)hash & (janet_vm.cache_capacity - 1);
31585
4.26M
    bounds[0] = index;
31586
4.26M
    bounds[1] = janet_vm.cache_capacity;
31587
4.26M
    bounds[2] = 0;
31588
4.26M
    bounds[3] = index;
31589
4.26M
    for (j = 0; j < 4; j += 2)
31590
4.48M
        for (i = bounds[j]; i < bounds[j + 1]; ++i) {
31591
4.48M
            const uint8_t *test = janet_vm.cache[i];
31592
            /* Check empty spots */
31593
4.48M
            if (NULL == test) {
31594
27.6k
                if (NULL == firstEmpty)
31595
27.6k
                    firstEmpty = janet_vm.cache + i;
31596
27.6k
                goto notfound;
31597
27.6k
            }
31598
            /* Check for marked deleted */
31599
4.45M
            if (JANET_SYMCACHE_DELETED == test) {
31600
178
                if (firstEmpty == NULL)
31601
55
                    firstEmpty = janet_vm.cache + i;
31602
178
                continue;
31603
178
            }
31604
4.45M
            if (janet_string_equalconst(test, str, len, hash)) {
31605
                /* Replace first deleted */
31606
4.23M
                *success = 1;
31607
4.23M
                if (firstEmpty != NULL) {
31608
55
                    *firstEmpty = test;
31609
55
                    janet_vm.cache[i] = JANET_SYMCACHE_DELETED;
31610
55
                    return firstEmpty;
31611
55
                }
31612
4.23M
                return janet_vm.cache + i;
31613
4.23M
            }
31614
4.45M
        }
31615
27.6k
notfound:
31616
27.6k
    *success = 0;
31617
27.6k
    janet_assert(firstEmpty != NULL, "symcache failed to get memory");
31618
27.6k
    return firstEmpty;
31619
27.6k
}
31620
31621
#define janet_symcache_find(str, success) \
31622
27.6k
    janet_symcache_findmem((str), janet_string_length(str), janet_string_hash(str), (success))
31623
31624
/* Resize the cache. */
31625
14
static void janet_cache_resize(uint32_t newCapacity) {
31626
14
    uint32_t i, oldCapacity;
31627
14
    const uint8_t **oldCache = janet_vm.cache;
31628
14
    const uint8_t **newCache = janet_calloc(1, (size_t) newCapacity * sizeof(const uint8_t *));
31629
14
    if (newCache == NULL) {
31630
0
        JANET_OUT_OF_MEMORY;
31631
0
    }
31632
14
    oldCapacity = janet_vm.cache_capacity;
31633
14
    janet_vm.cache = newCache;
31634
14
    janet_vm.cache_capacity = newCapacity;
31635
14
    janet_vm.cache_deleted = 0;
31636
    /* Add all of the old cache entries back */
31637
15.3k
    for (i = 0; i < oldCapacity; ++i) {
31638
15.3k
        int status;
31639
15.3k
        const uint8_t **bucket;
31640
15.3k
        const uint8_t *x = oldCache[i];
31641
15.3k
        if (x != NULL && x != JANET_SYMCACHE_DELETED) {
31642
7.69k
            bucket = janet_symcache_find(x, &status);
31643
7.69k
            if (status || bucket == NULL) {
31644
                /* there was a problem with the algorithm. */
31645
0
                break;
31646
0
            }
31647
7.69k
            *bucket = x;
31648
7.69k
        }
31649
15.3k
    }
31650
    /* Free the old cache */
31651
14
    janet_free((void *)oldCache);
31652
14
}
31653
31654
/* Add an item to the cache */
31655
19.9k
static void janet_symcache_put(const uint8_t *x, const uint8_t **bucket) {
31656
19.9k
    if ((janet_vm.cache_count + janet_vm.cache_deleted) * 2 > janet_vm.cache_capacity) {
31657
14
        int status;
31658
14
        janet_cache_resize(janet_tablen((2 * janet_vm.cache_count + 1)));
31659
14
        bucket = janet_symcache_find(x, &status);
31660
14
    }
31661
    /* Add x to the cache */
31662
19.9k
    janet_vm.cache_count++;
31663
19.9k
    *bucket = x;
31664
19.9k
}
31665
31666
/* Remove a symbol from the symcache */
31667
19.9k
void janet_symbol_deinit(const uint8_t *sym) {
31668
19.9k
    int status = 0;
31669
19.9k
    const uint8_t **bucket = janet_symcache_find(sym, &status);
31670
19.9k
    if (status) {
31671
19.9k
        janet_vm.cache_count--;
31672
19.9k
        janet_vm.cache_deleted++;
31673
19.9k
        *bucket = JANET_SYMCACHE_DELETED;
31674
19.9k
    }
31675
19.9k
}
31676
31677
/* Create a symbol from a byte string */
31678
4.23M
const uint8_t *janet_symbol(const uint8_t *str, int32_t len) {
31679
4.23M
    int32_t hash = janet_string_calchash(str, len);
31680
4.23M
    uint8_t *newstr;
31681
4.23M
    int success = 0;
31682
4.23M
    const uint8_t **bucket = janet_symcache_findmem(str, len, hash, &success);
31683
4.23M
    if (success)
31684
4.21M
        return *bucket;
31685
19.9k
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_SYMBOL, sizeof(JanetStringHead) + (size_t) len + 1);
31686
19.9k
    head->hash = hash;
31687
19.9k
    head->length = len;
31688
19.9k
    newstr = (uint8_t *)(head->data);
31689
19.9k
    safe_memcpy(newstr, str, len);
31690
19.9k
    newstr[len] = 0;
31691
19.9k
    janet_symcache_put((const uint8_t *)newstr, bucket);
31692
19.9k
    return newstr;
31693
4.23M
}
31694
31695
/* Get a symbol from a cstring */
31696
1.12M
const uint8_t *janet_csymbol(const char *cstr) {
31697
1.12M
    return janet_symbol((const uint8_t *)cstr, (int32_t) strlen(cstr));
31698
1.12M
}
31699
31700
/* Increment the gensym buffer */
31701
0
static void inc_gensym(void) {
31702
0
    for (int i = sizeof(janet_vm.gensym_counter) - 2; i; i--) {
31703
0
        if (janet_vm.gensym_counter[i] == '9') {
31704
0
            janet_vm.gensym_counter[i] = 'a';
31705
0
            break;
31706
0
        } else if (janet_vm.gensym_counter[i] == 'z') {
31707
0
            janet_vm.gensym_counter[i] = 'A';
31708
0
            break;
31709
0
        } else if (janet_vm.gensym_counter[i] == 'Z') {
31710
0
            janet_vm.gensym_counter[i] = '0';
31711
0
        } else {
31712
0
            janet_vm.gensym_counter[i]++;
31713
0
            break;
31714
0
        }
31715
0
    }
31716
0
}
31717
31718
/* Generate a unique symbol. This is used in the library function gensym. The
31719
 * symbol will be of the format _XXXXXX, where X is a base64 digit, and
31720
 * prefix is the argument passed. No prefix for speed. */
31721
0
const uint8_t *janet_symbol_gen(void) {
31722
0
    const uint8_t **bucket = NULL;
31723
0
    uint8_t *sym;
31724
0
    int32_t hash = 0;
31725
0
    int status;
31726
    /* Leave spaces for 6 base 64 digits and two dashes. That means 64^6 possible suffixes, which
31727
     * is enough for resolving collisions. */
31728
0
    do {
31729
0
        hash = janet_string_calchash(
31730
0
                   janet_vm.gensym_counter,
31731
0
                   sizeof(janet_vm.gensym_counter) - 1);
31732
0
        bucket = janet_symcache_findmem(
31733
0
                     janet_vm.gensym_counter,
31734
0
                     sizeof(janet_vm.gensym_counter) - 1,
31735
0
                     hash,
31736
0
                     &status);
31737
0
    } while (status && (inc_gensym(), 1));
31738
0
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_SYMBOL, sizeof(JanetStringHead) + sizeof(janet_vm.gensym_counter));
31739
0
    head->length = sizeof(janet_vm.gensym_counter) - 1;
31740
0
    head->hash = hash;
31741
0
    sym = (uint8_t *)(head->data);
31742
0
    memcpy(sym, janet_vm.gensym_counter, sizeof(janet_vm.gensym_counter));
31743
0
    sym[head->length] = 0;
31744
0
    janet_symcache_put((const uint8_t *)sym, bucket);
31745
0
    return (const uint8_t *)sym;
31746
0
}
31747
31748
31749
/* src/core/table.c */
31750
#line 0 "src/core/table.c"
31751
31752
/*
31753
* Copyright (c) 2025 Calvin Rose
31754
*
31755
* Permission is hereby granted, free of charge, to any person obtaining a copy
31756
* of this software and associated documentation files (the "Software"), to
31757
* deal in the Software without restriction, including without limitation the
31758
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31759
* sell copies of the Software, and to permit persons to whom the Software is
31760
* furnished to do so, subject to the following conditions:
31761
*
31762
* The above copyright notice and this permission notice shall be included in
31763
* all copies or substantial portions of the Software.
31764
*
31765
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31766
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31767
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31768
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31769
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31770
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31771
* IN THE SOFTWARE.
31772
*/
31773
31774
#ifndef JANET_AMALG
31775
#include "features.h"
31776
#include <janet.h>
31777
#include "gc.h"
31778
#include "util.h"
31779
#include <math.h>
31780
#endif
31781
31782
19.6k
#define JANET_TABLE_FLAG_STACK 0x10000
31783
31784
0
static void *janet_memalloc_empty_local(int32_t count) {
31785
0
    int32_t i;
31786
0
    void *mem = janet_smalloc((size_t) count * sizeof(JanetKV));
31787
0
    JanetKV *mmem = (JanetKV *)mem;
31788
0
    for (i = 0; i < count; i++) {
31789
0
        JanetKV *kv = mmem + i;
31790
0
        kv->key = janet_wrap_nil();
31791
0
        kv->value = janet_wrap_nil();
31792
0
    }
31793
0
    return mem;
31794
0
}
31795
31796
84.2k
static JanetTable *janet_table_init_impl(JanetTable *table, int32_t capacity, int stackalloc) {
31797
84.2k
    JanetKV *data;
31798
84.2k
    capacity = janet_tablen(capacity);
31799
84.2k
    if (stackalloc) table->gc.flags = JANET_TABLE_FLAG_STACK;
31800
84.2k
    if (capacity) {
31801
84.2k
        if (stackalloc) {
31802
0
            data = janet_memalloc_empty_local(capacity);
31803
84.2k
        } else {
31804
84.2k
            data = (JanetKV *) janet_memalloc_empty(capacity);
31805
84.2k
            if (NULL == data) {
31806
0
                JANET_OUT_OF_MEMORY;
31807
0
            }
31808
84.2k
        }
31809
84.2k
        table->data = data;
31810
84.2k
        table->capacity = capacity;
31811
84.2k
    } else {
31812
0
        table->data = NULL;
31813
0
        table->capacity = 0;
31814
0
    }
31815
84.2k
    table->count = 0;
31816
84.2k
    table->deleted = 0;
31817
84.2k
    table->proto = NULL;
31818
84.2k
    return table;
31819
84.2k
}
31820
31821
/* Initialize a table (for use with scratch memory) */
31822
0
JanetTable *janet_table_init(JanetTable *table, int32_t capacity) {
31823
0
    return janet_table_init_impl(table, capacity, 1);
31824
0
}
31825
31826
/* Initialize a table without using scratch memory */
31827
18.6k
JanetTable *janet_table_init_raw(JanetTable *table, int32_t capacity) {
31828
18.6k
    return janet_table_init_impl(table, capacity, 0);
31829
18.6k
}
31830
31831
/* Deinitialize a table */
31832
18.6k
void janet_table_deinit(JanetTable *table) {
31833
18.6k
    if (table->gc.flags & JANET_TABLE_FLAG_STACK) {
31834
0
        janet_sfree(table->data);
31835
18.6k
    } else {
31836
18.6k
        janet_free(table->data);
31837
18.6k
    }
31838
18.6k
}
31839
31840
/* Create a new table */
31841
31842
65.6k
JanetTable *janet_table(int32_t capacity) {
31843
65.6k
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE, sizeof(JanetTable));
31844
65.6k
    return janet_table_init_impl(table, capacity, 0);
31845
65.6k
}
31846
31847
0
JanetTable *janet_table_weakk(int32_t capacity) {
31848
0
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE_WEAKK, sizeof(JanetTable));
31849
0
    return janet_table_init_impl(table, capacity, 0);
31850
0
}
31851
31852
0
JanetTable *janet_table_weakv(int32_t capacity) {
31853
0
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE_WEAKV, sizeof(JanetTable));
31854
0
    return janet_table_init_impl(table, capacity, 0);
31855
0
}
31856
31857
0
JanetTable *janet_table_weakkv(int32_t capacity) {
31858
0
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE_WEAKKV, sizeof(JanetTable));
31859
0
    return janet_table_init_impl(table, capacity, 0);
31860
0
}
31861
31862
/* Find the bucket that contains the given key. Will also return
31863
 * bucket where key should go if not in the table. */
31864
1.38M
JanetKV *janet_table_find(JanetTable *t, Janet key) {
31865
1.38M
    return (JanetKV *) janet_dict_find(t->data, t->capacity, key);
31866
1.38M
}
31867
31868
/* Resize the dictionary table. */
31869
933
static void janet_table_rehash(JanetTable *t, int32_t size) {
31870
933
    JanetKV *olddata = t->data;
31871
933
    JanetKV *newdata;
31872
933
    int islocal = t->gc.flags & JANET_TABLE_FLAG_STACK;
31873
933
    if (islocal) {
31874
0
        newdata = (JanetKV *) janet_memalloc_empty_local(size);
31875
933
    } else {
31876
933
        newdata = (JanetKV *) janet_memalloc_empty(size);
31877
933
        if (NULL == newdata) {
31878
0
            JANET_OUT_OF_MEMORY;
31879
0
        }
31880
933
    }
31881
933
    int32_t oldcapacity = t->capacity;
31882
933
    t->data = newdata;
31883
933
    t->capacity = size;
31884
933
    t->deleted = 0;
31885
409k
    for (int32_t i = 0; i < oldcapacity; i++) {
31886
408k
        JanetKV *kv = olddata + i;
31887
408k
        if (!janet_checktype(kv->key, JANET_NIL)) {
31888
204k
            JanetKV *newkv = janet_table_find(t, kv->key);
31889
204k
            *newkv = *kv;
31890
204k
        }
31891
408k
    }
31892
933
    if (islocal) {
31893
0
        janet_sfree(olddata);
31894
933
    } else {
31895
933
        janet_free(olddata);
31896
933
    }
31897
933
}
31898
31899
/* Get a value out of the table */
31900
0
Janet janet_table_get(JanetTable *t, Janet key) {
31901
0
    for (int i = JANET_MAX_PROTO_DEPTH; t && i; t = t->proto, --i) {
31902
0
        JanetKV *bucket = janet_table_find(t, key);
31903
0
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
31904
0
            return bucket->value;
31905
0
    }
31906
0
    return janet_wrap_nil();
31907
0
}
31908
31909
/* Get a value out of the table, and record which prototype it was from. */
31910
0
Janet janet_table_get_ex(JanetTable *t, Janet key, JanetTable **which) {
31911
0
    for (int i = JANET_MAX_PROTO_DEPTH; t && i; t = t->proto, --i) {
31912
0
        JanetKV *bucket = janet_table_find(t, key);
31913
0
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
31914
0
            *which = t;
31915
0
            return bucket->value;
31916
0
        }
31917
0
    }
31918
0
    return janet_wrap_nil();
31919
0
}
31920
31921
/* Get a value out of the table. Don't check prototype tables. */
31922
0
Janet janet_table_rawget(JanetTable *t, Janet key) {
31923
0
    JanetKV *bucket = janet_table_find(t, key);
31924
0
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
31925
0
        return bucket->value;
31926
0
    else
31927
0
        return janet_wrap_nil();
31928
0
}
31929
31930
/* Remove an entry from the dictionary. Return the value that
31931
 * was removed. */
31932
7.75k
Janet janet_table_remove(JanetTable *t, Janet key) {
31933
7.75k
    JanetKV *bucket = janet_table_find(t, key);
31934
7.75k
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
31935
7.05k
        Janet ret = bucket->value;
31936
7.05k
        t->count--;
31937
7.05k
        t->deleted++;
31938
7.05k
        bucket->key = janet_wrap_nil();
31939
7.05k
        bucket->value = janet_wrap_false();
31940
7.05k
        return ret;
31941
7.05k
    } else {
31942
699
        return janet_wrap_nil();
31943
699
    }
31944
7.75k
}
31945
31946
/* Put a value into the object */
31947
947k
void janet_table_put(JanetTable *t, Janet key, Janet value) {
31948
947k
    if (janet_checktype(key, JANET_NIL)) return;
31949
940k
    if (janet_checktype(key, JANET_NUMBER) && isnan(janet_unwrap_number(key))) return;
31950
940k
    if (janet_checktype(value, JANET_NIL)) {
31951
7.75k
        janet_table_remove(t, key);
31952
932k
    } else {
31953
932k
        JanetKV *bucket = janet_table_find(t, key);
31954
932k
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
31955
696k
            bucket->value = value;
31956
696k
        } else {
31957
236k
            if (NULL == bucket || 2 * (t->count + t->deleted + 1) > t->capacity) {
31958
933
                janet_table_rehash(t, janet_tablen(2 * t->count + 2));
31959
933
            }
31960
236k
            bucket = janet_table_find(t, key);
31961
236k
            if (janet_checktype(bucket->value, JANET_BOOLEAN))
31962
0
                --t->deleted;
31963
236k
            bucket->key = key;
31964
236k
            bucket->value = value;
31965
236k
            ++t->count;
31966
236k
        }
31967
932k
    }
31968
940k
}
31969
31970
/* Used internally so don't check arguments
31971
 * Put into a table, but if the key already exists do nothing. */
31972
0
static void janet_table_put_no_overwrite(JanetTable *t, Janet key, Janet value) {
31973
0
    JanetKV *bucket = janet_table_find(t, key);
31974
0
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
31975
0
        return;
31976
0
    if (NULL == bucket || 2 * (t->count + t->deleted + 1) > t->capacity) {
31977
0
        janet_table_rehash(t, janet_tablen(2 * t->count + 2));
31978
0
    }
31979
0
    bucket = janet_table_find(t, key);
31980
0
    if (janet_checktype(bucket->value, JANET_BOOLEAN))
31981
0
        --t->deleted;
31982
0
    bucket->key = key;
31983
0
    bucket->value = value;
31984
0
    ++t->count;
31985
0
}
31986
31987
/* Clear a table */
31988
0
void janet_table_clear(JanetTable *t) {
31989
0
    int32_t capacity = t->capacity;
31990
0
    JanetKV *data = t->data;
31991
0
    janet_memempty(data, capacity);
31992
0
    t->count = 0;
31993
0
    t->deleted = 0;
31994
0
}
31995
31996
/* Clone a table. */
31997
0
JanetTable *janet_table_clone(JanetTable *table) {
31998
0
    JanetTable *newTable = janet_gcalloc(JANET_MEMORY_TABLE, sizeof(JanetTable));
31999
0
    newTable->count = table->count;
32000
0
    newTable->capacity = table->capacity;
32001
0
    newTable->deleted = table->deleted;
32002
0
    newTable->proto = table->proto;
32003
0
    newTable->data = janet_malloc(newTable->capacity * sizeof(JanetKV));
32004
0
    if (NULL == newTable->data) {
32005
0
        JANET_OUT_OF_MEMORY;
32006
0
    }
32007
0
    memcpy(newTable->data, table->data, (size_t) table->capacity * sizeof(JanetKV));
32008
0
    return newTable;
32009
0
}
32010
32011
/* Merge a table or struct into a table */
32012
0
static void janet_table_mergekv(JanetTable *table, const JanetKV *kvs, int32_t cap) {
32013
0
    int32_t i;
32014
0
    for (i = 0; i < cap; i++) {
32015
0
        const JanetKV *kv = kvs + i;
32016
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
32017
0
            janet_table_put(table, kv->key, kv->value);
32018
0
        }
32019
0
    }
32020
0
}
32021
32022
/* Merge a table into another table */
32023
0
void janet_table_merge_table(JanetTable *table, JanetTable *other) {
32024
0
    janet_table_mergekv(table, other->data, other->capacity);
32025
0
}
32026
32027
/* Merge a struct into a table */
32028
0
void janet_table_merge_struct(JanetTable *table, const JanetKV *other) {
32029
0
    janet_table_mergekv(table, other, janet_struct_capacity(other));
32030
0
}
32031
32032
/* Convert table to struct */
32033
0
const JanetKV *janet_table_to_struct(JanetTable *t) {
32034
0
    JanetKV *st = janet_struct_begin(t->count);
32035
0
    JanetKV *kv = t->data;
32036
0
    JanetKV *end = t->data + t->capacity;
32037
0
    while (kv < end) {
32038
0
        if (!janet_checktype(kv->key, JANET_NIL))
32039
0
            janet_struct_put(st, kv->key, kv->value);
32040
0
        kv++;
32041
0
    }
32042
0
    return janet_struct_end(st);
32043
0
}
32044
32045
0
JanetTable *janet_table_proto_flatten(JanetTable *t) {
32046
0
    JanetTable *newTable = janet_table(0);
32047
0
    while (t) {
32048
0
        JanetKV *kv = t->data;
32049
0
        JanetKV *end = t->data + t->capacity;
32050
0
        while (kv < end) {
32051
0
            if (!janet_checktype(kv->key, JANET_NIL))
32052
0
                janet_table_put_no_overwrite(newTable, kv->key, kv->value);
32053
0
            kv++;
32054
0
        }
32055
0
        t = t->proto;
32056
0
    }
32057
0
    return newTable;
32058
0
}
32059
32060
/* C Functions */
32061
32062
JANET_CORE_FN(cfun_table_new,
32063
              "(table/new capacity)",
32064
              "Creates a new empty table with pre-allocated memory "
32065
              "for `capacity` entries. This means that if one knows the number of "
32066
              "entries going into a table on creation, extra memory allocation "
32067
              "can be avoided. "
32068
0
              "Returns the new table.") {
32069
0
    janet_fixarity(argc, 1);
32070
0
    int32_t cap = janet_getnat(argv, 0);
32071
0
    return janet_wrap_table(janet_table(cap));
32072
0
}
32073
32074
JANET_CORE_FN(cfun_table_weak,
32075
              "(table/weak capacity)",
32076
              "Creates a new empty table with weak references to keys and values. Similar to `table/new`. "
32077
0
              "Returns the new table.") {
32078
0
    janet_fixarity(argc, 1);
32079
0
    int32_t cap = janet_getnat(argv, 0);
32080
0
    return janet_wrap_table(janet_table_weakkv(cap));
32081
0
}
32082
32083
JANET_CORE_FN(cfun_table_weak_keys,
32084
              "(table/weak-keys capacity)",
32085
              "Creates a new empty table with weak references to keys and normal references to values. Similar to `table/new`. "
32086
0
              "Returns the new table.") {
32087
0
    janet_fixarity(argc, 1);
32088
0
    int32_t cap = janet_getnat(argv, 0);
32089
0
    return janet_wrap_table(janet_table_weakk(cap));
32090
0
}
32091
32092
JANET_CORE_FN(cfun_table_weak_values,
32093
              "(table/weak-values capacity)",
32094
              "Creates a new empty table with normal references to keys and weak references to values. Similar to `table/new`. "
32095
0
              "Returns the new table.") {
32096
0
    janet_fixarity(argc, 1);
32097
0
    int32_t cap = janet_getnat(argv, 0);
32098
0
    return janet_wrap_table(janet_table_weakv(cap));
32099
0
}
32100
32101
JANET_CORE_FN(cfun_table_getproto,
32102
              "(table/getproto tab)",
32103
              "Get the prototype table of a table. Returns nil if the table "
32104
0
              "has no prototype, otherwise returns the prototype.") {
32105
0
    janet_fixarity(argc, 1);
32106
0
    JanetTable *t = janet_gettable(argv, 0);
32107
0
    return t->proto
32108
0
           ? janet_wrap_table(t->proto)
32109
0
           : janet_wrap_nil();
32110
0
}
32111
32112
JANET_CORE_FN(cfun_table_setproto,
32113
              "(table/setproto tab proto)",
32114
0
              "Set the prototype of a table. Returns the original table `tab`.") {
32115
0
    janet_fixarity(argc, 2);
32116
0
    JanetTable *table = janet_gettable(argv, 0);
32117
0
    JanetTable *proto = NULL;
32118
0
    if (!janet_checktype(argv[1], JANET_NIL)) {
32119
0
        proto = janet_gettable(argv, 1);
32120
0
    }
32121
0
    table->proto = proto;
32122
0
    return argv[0];
32123
0
}
32124
32125
JANET_CORE_FN(cfun_table_tostruct,
32126
              "(table/to-struct tab &opt proto)",
32127
0
              "Convert a table to a struct. Returns a new struct.") {
32128
0
    janet_arity(argc, 1, 2);
32129
0
    JanetTable *t = janet_gettable(argv, 0);
32130
0
    JanetStruct proto = janet_optstruct(argv, argc, 1, NULL);
32131
0
    JanetStruct st = janet_table_to_struct(t);
32132
0
    janet_struct_proto(st) = proto;
32133
0
    return janet_wrap_struct(st);
32134
0
}
32135
32136
JANET_CORE_FN(cfun_table_rawget,
32137
              "(table/rawget tab key)",
32138
              "Gets a value from a table `tab` without looking at the prototype table. "
32139
              "If `tab` does not contain the key directly, the function will return "
32140
0
              "nil without checking the prototype. Returns the value in the table.") {
32141
0
    janet_fixarity(argc, 2);
32142
0
    JanetTable *table = janet_gettable(argv, 0);
32143
0
    return janet_table_rawget(table, argv[1]);
32144
0
}
32145
32146
JANET_CORE_FN(cfun_table_clone,
32147
              "(table/clone tab)",
32148
              "Create a copy of a table. Updates to the new table will not change the old table, "
32149
0
              "and vice versa.") {
32150
0
    janet_fixarity(argc, 1);
32151
0
    JanetTable *table = janet_gettable(argv, 0);
32152
0
    return janet_wrap_table(janet_table_clone(table));
32153
0
}
32154
32155
JANET_CORE_FN(cfun_table_clear,
32156
              "(table/clear tab)",
32157
0
              "Remove all key-value pairs in a table and return the modified table `tab`.") {
32158
0
    janet_fixarity(argc, 1);
32159
0
    JanetTable *table = janet_gettable(argv, 0);
32160
0
    janet_table_clear(table);
32161
0
    return janet_wrap_table(table);
32162
0
}
32163
32164
JANET_CORE_FN(cfun_table_proto_flatten,
32165
              "(table/proto-flatten tab)",
32166
0
              "Create a new table that is the result of merging all prototypes into a new table.") {
32167
0
    janet_fixarity(argc, 1);
32168
0
    JanetTable *table = janet_gettable(argv, 0);
32169
0
    return janet_wrap_table(janet_table_proto_flatten(table));
32170
0
}
32171
32172
/* Load the table module */
32173
0
void janet_lib_table(JanetTable *env) {
32174
0
    JanetRegExt table_cfuns[] = {
32175
0
        JANET_CORE_REG("table/new", cfun_table_new),
32176
0
        JANET_CORE_REG("table/weak", cfun_table_weak),
32177
0
        JANET_CORE_REG("table/weak-keys", cfun_table_weak_keys),
32178
0
        JANET_CORE_REG("table/weak-values", cfun_table_weak_values),
32179
0
        JANET_CORE_REG("table/to-struct", cfun_table_tostruct),
32180
0
        JANET_CORE_REG("table/getproto", cfun_table_getproto),
32181
0
        JANET_CORE_REG("table/setproto", cfun_table_setproto),
32182
0
        JANET_CORE_REG("table/rawget", cfun_table_rawget),
32183
0
        JANET_CORE_REG("table/clone", cfun_table_clone),
32184
0
        JANET_CORE_REG("table/clear", cfun_table_clear),
32185
0
        JANET_CORE_REG("table/proto-flatten", cfun_table_proto_flatten),
32186
0
        JANET_REG_END
32187
0
    };
32188
0
    janet_core_cfuns_ext(env, NULL, table_cfuns);
32189
0
}
32190
32191
32192
/* src/core/tuple.c */
32193
#line 0 "src/core/tuple.c"
32194
32195
/*
32196
* Copyright (c) 2025 Calvin Rose
32197
*
32198
* Permission is hereby granted, free of charge, to any person obtaining a copy
32199
* of this software and associated documentation files (the "Software"), to
32200
* deal in the Software without restriction, including without limitation the
32201
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
32202
* sell copies of the Software, and to permit persons to whom the Software is
32203
* furnished to do so, subject to the following conditions:
32204
*
32205
* The above copyright notice and this permission notice shall be included in
32206
* all copies or substantial portions of the Software.
32207
*
32208
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32209
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32210
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32211
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32212
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32213
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
32214
* IN THE SOFTWARE.
32215
*/
32216
32217
#ifndef JANET_AMALG
32218
#include "features.h"
32219
#include <janet.h>
32220
#include "symcache.h"
32221
#include "gc.h"
32222
#include "util.h"
32223
#endif
32224
32225
/* Create a new empty tuple of the given size. This will return memory
32226
 * which should be filled with Janets. The memory will not be collected until
32227
 * janet_tuple_end is called. */
32228
1.17M
Janet *janet_tuple_begin(int32_t length) {
32229
1.17M
    size_t size = sizeof(JanetTupleHead) + ((size_t) length * sizeof(Janet));
32230
1.17M
    JanetTupleHead *head = janet_gcalloc(JANET_MEMORY_TUPLE, size);
32231
1.17M
    head->sm_line = -1;
32232
1.17M
    head->sm_column = -1;
32233
1.17M
    head->length = length;
32234
1.17M
    return (Janet *)(head->data);
32235
1.17M
}
32236
32237
/* Finish building a tuple */
32238
1.17M
const Janet *janet_tuple_end(Janet *tuple) {
32239
1.17M
    janet_tuple_hash(tuple) = janet_array_calchash(tuple, janet_tuple_length(tuple));
32240
1.17M
    return (const Janet *)tuple;
32241
1.17M
}
32242
32243
/* Build a tuple with n values */
32244
23.3k
const Janet *janet_tuple_n(const Janet *values, int32_t n) {
32245
23.3k
    Janet *t = janet_tuple_begin(n);
32246
23.3k
    safe_memcpy(t, values, sizeof(Janet) * n);
32247
23.3k
    return janet_tuple_end(t);
32248
23.3k
}
32249
32250
/* C Functions */
32251
32252
JANET_CORE_FN(cfun_tuple_brackets,
32253
              "(tuple/brackets & xs)",
32254
0
              "Creates a new bracketed tuple containing the elements xs.") {
32255
0
    const Janet *tup = janet_tuple_n(argv, argc);
32256
0
    janet_tuple_flag(tup) |= JANET_TUPLE_FLAG_BRACKETCTOR;
32257
0
    return janet_wrap_tuple(tup);
32258
0
}
32259
32260
JANET_CORE_FN(cfun_tuple_slice,
32261
              "(tuple/slice arrtup [,start=0 [,end=(length arrtup)]])",
32262
              "Take a sub-sequence of an array or tuple from index `start` "
32263
              "inclusive to index `end` exclusive. If `start` or `end` are not provided, "
32264
              "they default to 0 and the length of `arrtup`, respectively. "
32265
              "`start` and `end` can also be negative to indicate indexing "
32266
              "from the end of the input. Note that if `start` is negative it is "
32267
              "exclusive, and if `end` is negative it is inclusive, to allow a full "
32268
0
              "negative slice range. Returns the new tuple.") {
32269
0
    JanetView view = janet_getindexed(argv, 0);
32270
0
    JanetRange range = janet_getslice(argc, argv);
32271
0
    return janet_wrap_tuple(janet_tuple_n(view.items + range.start, range.end - range.start));
32272
0
}
32273
32274
JANET_CORE_FN(cfun_tuple_type,
32275
              "(tuple/type tup)",
32276
              "Checks how the tuple was constructed. Will return the keyword "
32277
              ":brackets if the tuple was parsed with brackets, and :parens "
32278
              "otherwise. The two types of tuples will behave the same most of "
32279
              "the time, but will print differently and be treated differently by "
32280
0
              "the compiler.") {
32281
0
    janet_fixarity(argc, 1);
32282
0
    const Janet *tup = janet_gettuple(argv, 0);
32283
0
    if (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR) {
32284
0
        return janet_ckeywordv("brackets");
32285
0
    } else {
32286
0
        return janet_ckeywordv("parens");
32287
0
    }
32288
0
}
32289
32290
JANET_CORE_FN(cfun_tuple_sourcemap,
32291
              "(tuple/sourcemap tup)",
32292
              "Returns the sourcemap metadata attached to a tuple, "
32293
0
              "which is another tuple (line, column).") {
32294
0
    janet_fixarity(argc, 1);
32295
0
    const Janet *tup = janet_gettuple(argv, 0);
32296
0
    Janet contents[2];
32297
0
    contents[0] = janet_wrap_integer(janet_tuple_head(tup)->sm_line);
32298
0
    contents[1] = janet_wrap_integer(janet_tuple_head(tup)->sm_column);
32299
0
    return janet_wrap_tuple(janet_tuple_n(contents, 2));
32300
0
}
32301
32302
JANET_CORE_FN(cfun_tuple_setmap,
32303
              "(tuple/setmap tup line column)",
32304
              "Set the sourcemap metadata on a tuple. line and column indicate "
32305
0
              "should be integers.") {
32306
0
    janet_fixarity(argc, 3);
32307
0
    const Janet *tup = janet_gettuple(argv, 0);
32308
0
    janet_tuple_head(tup)->sm_line = janet_getinteger(argv, 1);
32309
0
    janet_tuple_head(tup)->sm_column = janet_getinteger(argv, 2);
32310
0
    return argv[0];
32311
0
}
32312
32313
JANET_CORE_FN(cfun_tuple_join,
32314
              "(tuple/join & parts)",
32315
0
              "Create a tuple by joining together other tuples and arrays.") {
32316
0
    janet_arity(argc, 0, -1);
32317
0
    int32_t total_len = 0;
32318
0
    for (int32_t i = 0; i < argc; i++) {
32319
0
        int32_t len = 0;
32320
0
        const Janet *vals = NULL;
32321
0
        if (!janet_indexed_view(argv[i], &vals, &len)) {
32322
0
            janet_panicf("expected indexed type for argument %d, got %v", i, argv[i]);
32323
0
        }
32324
0
        if (INT32_MAX - total_len < len) {
32325
0
            janet_panic("tuple too large");
32326
0
        }
32327
0
        total_len += len;
32328
0
    }
32329
0
    Janet *tup = janet_tuple_begin(total_len);
32330
0
    Janet *tup_cursor = tup;
32331
0
    for (int32_t i = 0; i < argc; i++) {
32332
0
        int32_t len = 0;
32333
0
        const Janet *vals = NULL;
32334
0
        janet_indexed_view(argv[i], &vals, &len);
32335
0
        memcpy(tup_cursor, vals, len * sizeof(Janet));
32336
0
        tup_cursor += len;
32337
0
    }
32338
0
    return janet_wrap_tuple(janet_tuple_end(tup));
32339
0
}
32340
32341
/* Load the tuple module */
32342
0
void janet_lib_tuple(JanetTable *env) {
32343
0
    JanetRegExt tuple_cfuns[] = {
32344
0
        JANET_CORE_REG("tuple/brackets", cfun_tuple_brackets),
32345
0
        JANET_CORE_REG("tuple/slice", cfun_tuple_slice),
32346
0
        JANET_CORE_REG("tuple/type", cfun_tuple_type),
32347
0
        JANET_CORE_REG("tuple/sourcemap", cfun_tuple_sourcemap),
32348
0
        JANET_CORE_REG("tuple/setmap", cfun_tuple_setmap),
32349
0
        JANET_CORE_REG("tuple/join", cfun_tuple_join),
32350
0
        JANET_REG_END
32351
0
    };
32352
0
    janet_core_cfuns_ext(env, NULL, tuple_cfuns);
32353
0
}
32354
32355
32356
/* src/core/util.c */
32357
#line 0 "src/core/util.c"
32358
32359
/*
32360
* Copyright (c) 2025 Calvin Rose
32361
*
32362
* Permission is hereby granted, free of charge, to any person obtaining a copy
32363
* of this software and associated documentation files (the "Software"), to
32364
* deal in the Software without restriction, including without limitation the
32365
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
32366
* sell copies of the Software, and to permit persons to whom the Software is
32367
* furnished to do so, subject to the following conditions:
32368
*
32369
* The above copyright notice and this permission notice shall be included in
32370
* all copies or substantial portions of the Software.
32371
*
32372
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32373
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32374
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32375
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32376
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32377
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
32378
* IN THE SOFTWARE.
32379
*/
32380
32381
#ifndef JANET_AMALG
32382
#include "features.h"
32383
#include <janet.h>
32384
#include "util.h"
32385
#include "state.h"
32386
#include "gc.h"
32387
#ifdef JANET_WINDOWS
32388
#include <windows.h>
32389
#else
32390
#include <unistd.h>
32391
#include <sys/types.h>
32392
#include <sys/stat.h>
32393
#include <fcntl.h>
32394
#endif
32395
#endif
32396
32397
#ifdef JANET_WINDOWS
32398
#ifdef JANET_DYNAMIC_MODULES
32399
#include <psapi.h>
32400
#ifdef JANET_MSVC
32401
#pragma comment (lib, "Psapi.lib")
32402
#endif
32403
#endif
32404
#endif
32405
32406
#ifdef JANET_APPLE
32407
#include <AvailabilityMacros.h>
32408
#endif
32409
32410
#include <inttypes.h>
32411
32412
/* Base 64 lookup table for digits */
32413
const char janet_base64[65] =
32414
    "0123456789"
32415
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
32416
    "abcdefghijklmnopqrstuvwxyz"
32417
    "_=";
32418
32419
/* The JANET value types in order. These types can be used as
32420
 * mnemonics instead of a bit pattern for type checking */
32421
const char *const janet_type_names[16] = {
32422
    "number",
32423
    "nil",
32424
    "boolean",
32425
    "fiber",
32426
    "string",
32427
    "symbol",
32428
    "keyword",
32429
    "array",
32430
    "tuple",
32431
    "table",
32432
    "struct",
32433
    "buffer",
32434
    "function",
32435
    "cfunction",
32436
    "abstract",
32437
    "pointer"
32438
};
32439
32440
/* Docstring for signal lists these */
32441
const char *const janet_signal_names[14] = {
32442
    "ok",
32443
    "error",
32444
    "debug",
32445
    "yield",
32446
    "user0",
32447
    "user1",
32448
    "user2",
32449
    "user3",
32450
    "user4",
32451
    "user5",
32452
    "user6",
32453
    "user7",
32454
    "interrupt",
32455
    "await"
32456
};
32457
32458
/* Docstring for fiber/status lists these */
32459
const char *const janet_status_names[16] = {
32460
    "dead",
32461
    "error",
32462
    "debug",
32463
    "pending",
32464
    "user0",
32465
    "user1",
32466
    "user2",
32467
    "user3",
32468
    "user4",
32469
    "user5",
32470
    "user6",
32471
    "user7",
32472
    "interrupted",
32473
    "suspended",
32474
    "new",
32475
    "alive"
32476
};
32477
32478
18.0M
uint32_t janet_hash_mix(uint32_t input, uint32_t more) {
32479
18.0M
    uint32_t mix1 = (more + 0x9e3779b9 + (input << 6) + (input >> 2));
32480
18.0M
    return input ^ (0x9e3779b9 + (mix1 << 6) + (mix1 >> 2));
32481
18.0M
}
32482
32483
#ifndef JANET_PRF
32484
32485
5.73M
int32_t janet_string_calchash(const uint8_t *str, int32_t len) {
32486
5.73M
    if (NULL == str || len == 0) return 5381;
32487
4.28M
    const uint8_t *end = str + len;
32488
4.28M
    uint32_t hash = 5381;
32489
32.5M
    while (str < end)
32490
28.2M
        hash = (hash << 5) + hash + *str++;
32491
4.28M
    hash = janet_hash_mix(hash, (uint32_t) len);
32492
4.28M
    return (int32_t) hash;
32493
5.73M
}
32494
32495
#else
32496
32497
/*
32498
  Public domain siphash implementation sourced from:
32499
32500
  https://raw.githubusercontent.com/veorq/SipHash/master/halfsiphash.c
32501
32502
  We have made a few alterations, such as hardcoding the output size
32503
  and then removing dead code.
32504
*/
32505
#define cROUNDS 2
32506
#define dROUNDS 4
32507
32508
#define ROTL(x, b) (uint32_t)(((x) << (b)) | ((x) >> (32 - (b))))
32509
32510
#define U8TO32_LE(p)                                                           \
32511
    (((uint32_t)((p)[0])) | ((uint32_t)((p)[1]) << 8) |                        \
32512
     ((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24))
32513
32514
#define SIPROUND                                                               \
32515
    do {                                                                       \
32516
        v0 += v1;                                                              \
32517
        v1 = ROTL(v1, 5);                                                      \
32518
        v1 ^= v0;                                                              \
32519
        v0 = ROTL(v0, 16);                                                     \
32520
        v2 += v3;                                                              \
32521
        v3 = ROTL(v3, 8);                                                      \
32522
        v3 ^= v2;                                                              \
32523
        v0 += v3;                                                              \
32524
        v3 = ROTL(v3, 7);                                                      \
32525
        v3 ^= v0;                                                              \
32526
        v2 += v1;                                                              \
32527
        v1 = ROTL(v1, 13);                                                     \
32528
        v1 ^= v2;                                                              \
32529
        v2 = ROTL(v2, 16);                                                     \
32530
    } while (0)
32531
32532
static uint32_t halfsiphash(const uint8_t *in, const size_t inlen, const uint8_t *k) {
32533
32534
    uint32_t v0 = 0;
32535
    uint32_t v1 = 0;
32536
    uint32_t v2 = UINT32_C(0x6c796765);
32537
    uint32_t v3 = UINT32_C(0x74656462);
32538
    uint32_t k0 = U8TO32_LE(k);
32539
    uint32_t k1 = U8TO32_LE(k + 4);
32540
    uint32_t m;
32541
    int i;
32542
    const uint8_t *end = in + inlen - (inlen % sizeof(uint32_t));
32543
    const int left = inlen & 3;
32544
    uint32_t b = ((uint32_t)inlen) << 24;
32545
    v3 ^= k1;
32546
    v2 ^= k0;
32547
    v1 ^= k1;
32548
    v0 ^= k0;
32549
32550
    for (; in != end; in += 4) {
32551
        m = U8TO32_LE(in);
32552
        v3 ^= m;
32553
32554
        for (i = 0; i < cROUNDS; ++i)
32555
            SIPROUND;
32556
32557
        v0 ^= m;
32558
    }
32559
32560
    switch (left) {
32561
        case 3:
32562
            b |= ((uint32_t)in[2]) << 16;
32563
        /* fallthrough */
32564
        case 2:
32565
            b |= ((uint32_t)in[1]) << 8;
32566
        /* fallthrough */
32567
        case 1:
32568
            b |= ((uint32_t)in[0]);
32569
            break;
32570
        case 0:
32571
            break;
32572
    }
32573
32574
    v3 ^= b;
32575
32576
    for (i = 0; i < cROUNDS; ++i)
32577
        SIPROUND;
32578
32579
    v0 ^= b;
32580
32581
    v2 ^= 0xff;
32582
32583
    for (i = 0; i < dROUNDS; ++i)
32584
        SIPROUND;
32585
32586
    b = v1 ^ v3;
32587
    return b;
32588
}
32589
/* end of siphash */
32590
32591
static uint8_t hash_key[JANET_HASH_KEY_SIZE] = {0};
32592
32593
void janet_init_hash_key(uint8_t new_key[JANET_HASH_KEY_SIZE]) {
32594
    memcpy(hash_key, new_key, sizeof(hash_key));
32595
}
32596
32597
/* Calculate hash for string */
32598
32599
int32_t janet_string_calchash(const uint8_t *str, int32_t len) {
32600
    uint32_t hash;
32601
    hash = halfsiphash(str, len, hash_key);
32602
    return (int32_t)hash;
32603
}
32604
32605
#endif
32606
32607
/* Computes hash of an array of values */
32608
1.17M
int32_t janet_array_calchash(const Janet *array, int32_t len) {
32609
1.17M
    const Janet *end = array + len;
32610
1.17M
    uint32_t hash = 33;
32611
4.29M
    while (array < end) {
32612
3.12M
        hash = janet_hash_mix(hash, janet_hash(*array++));
32613
3.12M
    }
32614
1.17M
    return (int32_t) hash;
32615
1.17M
}
32616
32617
/* Computes hash of an array of values */
32618
2.92M
int32_t janet_kv_calchash(const JanetKV *kvs, int32_t len) {
32619
2.92M
    const JanetKV *end = kvs + len;
32620
2.92M
    uint32_t hash = 33;
32621
8.25M
    while (kvs < end) {
32622
5.32M
        hash = janet_hash_mix(hash, janet_hash(kvs->key));
32623
5.32M
        hash = janet_hash_mix(hash, janet_hash(kvs->value));
32624
5.32M
        kvs++;
32625
5.32M
    }
32626
2.92M
    return (int32_t) hash;
32627
2.92M
}
32628
32629
/* Calculate next power of 2. May overflow. If n is 0,
32630
 * will return 0. */
32631
3.01M
int32_t janet_tablen(int32_t n) {
32632
3.01M
    if (n < 0) return 0;
32633
3.01M
    n |= n >> 1;
32634
3.01M
    n |= n >> 2;
32635
3.01M
    n |= n >> 4;
32636
3.01M
    n |= n >> 8;
32637
3.01M
    n |= n >> 16;
32638
3.01M
    return n + 1;
32639
3.01M
}
32640
32641
/* Avoid some undefined behavior that was common in the code base. */
32642
1.54M
void safe_memcpy(void *dest, const void *src, size_t len) {
32643
1.54M
    if (!len) return;
32644
97.2k
    memcpy(dest, src, len);
32645
97.2k
}
32646
32647
/* Helper to find a value in a Janet struct or table. Returns the bucket
32648
 * containing the key, or the first empty bucket if there is no such key. */
32649
1.38M
const JanetKV *janet_dict_find(const JanetKV *buckets, int32_t cap, Janet key) {
32650
1.38M
    int32_t index = janet_maphash(cap, janet_hash(key));
32651
1.38M
    int32_t i;
32652
1.38M
    const JanetKV *first_bucket = NULL;
32653
    /* Higher half */
32654
97.4M
    for (i = index; i < cap; i++) {
32655
97.4M
        const JanetKV *kv = buckets + i;
32656
97.4M
        if (janet_checktype(kv->key, JANET_NIL)) {
32657
96.4M
            if (janet_checktype(kv->value, JANET_NIL)) {
32658
676k
                return kv;
32659
95.7M
            } else if (NULL == first_bucket) {
32660
41.3k
                first_bucket = kv;
32661
41.3k
            }
32662
96.4M
        } else if (janet_equals(kv->key, key)) {
32663
702k
            return buckets + i;
32664
702k
        }
32665
97.4M
    }
32666
    /* Lower half */
32667
5.57k
    for (i = 0; i < index; i++) {
32668
5.57k
        const JanetKV *kv = buckets + i;
32669
5.57k
        if (janet_checktype(kv->key, JANET_NIL)) {
32670
2.23k
            if (janet_checktype(kv->value, JANET_NIL)) {
32671
1.35k
                return kv;
32672
1.35k
            } else if (NULL == first_bucket) {
32673
194
                first_bucket = kv;
32674
194
            }
32675
3.34k
        } else if (janet_equals(kv->key, key)) {
32676
766
            return buckets + i;
32677
766
        }
32678
5.57k
    }
32679
0
    return first_bucket;
32680
2.12k
}
32681
32682
/* Get a value from a janet struct or table. */
32683
0
Janet janet_dictionary_get(const JanetKV *data, int32_t cap, Janet key) {
32684
0
    const JanetKV *kv = janet_dict_find(data, cap, key);
32685
0
    if (kv && !janet_checktype(kv->key, JANET_NIL)) {
32686
0
        return kv->value;
32687
0
    }
32688
0
    return janet_wrap_nil();
32689
0
}
32690
32691
/* Iterate through a struct or dictionary generically */
32692
0
const JanetKV *janet_dictionary_next(const JanetKV *kvs, int32_t cap, const JanetKV *kv) {
32693
0
    const JanetKV *end = kvs + cap;
32694
0
    kv = (kv == NULL) ? kvs : kv + 1;
32695
0
    while (kv < end) {
32696
0
        if (!janet_checktype(kv->key, JANET_NIL))
32697
0
            return kv;
32698
0
        kv++;
32699
0
    }
32700
0
    return NULL;
32701
0
}
32702
32703
/* Compare a janet string with a cstring. More efficient than loading
32704
 * c string as a janet string. */
32705
0
int janet_cstrcmp(const uint8_t *str, const char *other) {
32706
0
    int32_t len = janet_string_length(str);
32707
0
    int32_t index;
32708
0
    for (index = 0; index < len; index++) {
32709
0
        uint8_t c = str[index];
32710
0
        uint8_t k = ((const uint8_t *)other)[index];
32711
0
        if (c < k) return -1;
32712
0
        if (c > k) return 1;
32713
0
        if (k == '\0') break;
32714
0
    }
32715
0
    return (other[index] == '\0') ? 0 : -1;
32716
0
}
32717
32718
/* Do a binary search on a static array of structs. Each struct must
32719
 * have a string as its first element, and the struct must be sorted
32720
 * lexicographically by that element. */
32721
const void *janet_strbinsearch(
32722
    const void *tab,
32723
    size_t tabcount,
32724
    size_t itemsize,
32725
0
    const uint8_t *key) {
32726
0
    size_t low = 0;
32727
0
    size_t hi = tabcount;
32728
0
    const char *t = (const char *)tab;
32729
0
    while (low < hi) {
32730
0
        size_t mid = low + ((hi - low) / 2);
32731
0
        const char **item = (const char **)(t + mid * itemsize);
32732
0
        const char *name = *item;
32733
0
        int comp = janet_cstrcmp(key, name);
32734
0
        if (comp < 0) {
32735
0
            hi = mid;
32736
0
        } else if (comp > 0) {
32737
0
            low = mid + 1;
32738
0
        } else {
32739
0
            return (const void *)item;
32740
0
        }
32741
0
    }
32742
0
    return NULL;
32743
0
}
32744
32745
/* Add sourcemapping and documentation to a binding table */
32746
0
static void janet_add_meta(JanetTable *table, const char *doc, const char *source_file, int32_t source_line) {
32747
0
    if (doc) {
32748
0
        janet_table_put(table, janet_ckeywordv("doc"), janet_cstringv(doc));
32749
0
    }
32750
0
    if (source_file && source_line) {
32751
0
        Janet triple[3];
32752
0
        triple[0] = janet_cstringv(source_file);
32753
0
        triple[1] = janet_wrap_integer(source_line);
32754
0
        triple[2] = janet_wrap_integer(1);
32755
0
        Janet value = janet_wrap_tuple(janet_tuple_n(triple, 3));
32756
0
        janet_table_put(table, janet_ckeywordv("source-map"), value);
32757
0
    }
32758
0
}
32759
32760
/* Add a def to an environment */
32761
0
void janet_def_sm(JanetTable *env, const char *name, Janet val, const char *doc, const char *source_file, int32_t source_line) {
32762
0
    JanetTable *subt = janet_table(2);
32763
0
    janet_table_put(subt, janet_ckeywordv("value"), val);
32764
0
    janet_add_meta(subt, doc, source_file, source_line);
32765
0
    janet_table_put(env, janet_csymbolv(name), janet_wrap_table(subt));
32766
0
}
32767
0
void janet_def(JanetTable *env, const char *name, Janet value, const char *doc) {
32768
0
    janet_def_sm(env, name, value, doc, NULL, 0);
32769
0
}
32770
32771
/* Add a var to the environment */
32772
0
void janet_var_sm(JanetTable *env, const char *name, Janet val, const char *doc, const char *source_file, int32_t source_line) {
32773
0
    JanetArray *array = janet_array(1);
32774
0
    JanetTable *subt = janet_table(2);
32775
0
    janet_array_push(array, val);
32776
0
    janet_table_put(subt, janet_ckeywordv("ref"), janet_wrap_array(array));
32777
0
    janet_add_meta(subt, doc, source_file, source_line);
32778
0
    janet_table_put(env, janet_csymbolv(name), janet_wrap_table(subt));
32779
0
}
32780
0
void janet_var(JanetTable *env, const char *name, Janet val, const char *doc) {
32781
0
    janet_var_sm(env, name, val, doc, NULL, 0);
32782
0
}
32783
32784
/* Registry functions */
32785
32786
/* Put the registry in sorted order. */
32787
0
static void janet_registry_sort(void) {
32788
0
    for (size_t i = 1; i < janet_vm.registry_count; i++) {
32789
0
        JanetCFunRegistry reg = janet_vm.registry[i];
32790
0
        size_t j;
32791
0
        for (j = i; j > 0; j--) {
32792
0
            if ((void *)(janet_vm.registry[j - 1].cfun) < (void *)(reg.cfun)) break;
32793
0
            janet_vm.registry[j] = janet_vm.registry[j - 1];
32794
0
        }
32795
0
        janet_vm.registry[j] = reg;
32796
0
    }
32797
0
    janet_vm.registry_dirty = 0;
32798
0
}
32799
32800
void janet_registry_put(
32801
    JanetCFunction key,
32802
    const char *name,
32803
    const char *name_prefix,
32804
    const char *source_file,
32805
0
    int32_t source_line) {
32806
0
    if (janet_vm.registry_count == janet_vm.registry_cap) {
32807
0
        size_t newcap = (janet_vm.registry_count + 1) * 2;
32808
        /* Size it nicely with core by default */
32809
0
        if (newcap < 512) {
32810
0
            newcap = 512;
32811
0
        }
32812
0
        void *newmem = janet_realloc(janet_vm.registry, newcap * sizeof(JanetCFunRegistry));
32813
0
        if (NULL == newmem) {
32814
0
            JANET_OUT_OF_MEMORY;
32815
0
        }
32816
0
        janet_vm.registry = newmem;
32817
0
        janet_vm.registry_cap = newcap;
32818
0
    }
32819
0
    JanetCFunRegistry value = {
32820
0
        key,
32821
0
        name,
32822
0
        name_prefix,
32823
0
        source_file,
32824
0
        source_line
32825
0
    };
32826
0
    janet_vm.registry[janet_vm.registry_count++] = value;
32827
0
    janet_vm.registry_dirty = 1;
32828
0
}
32829
32830
0
JanetCFunRegistry *janet_registry_get(JanetCFunction key) {
32831
0
    if (janet_vm.registry_dirty) {
32832
0
        janet_registry_sort();
32833
0
    }
32834
0
    for (size_t i = 0; i < janet_vm.registry_count; i++) {
32835
0
        if (janet_vm.registry[i].cfun == key) {
32836
0
            return janet_vm.registry + i;
32837
0
        }
32838
0
    }
32839
0
    JanetCFunRegistry *lo = janet_vm.registry;
32840
0
    JanetCFunRegistry *hi = lo + janet_vm.registry_count;
32841
0
    while (lo < hi) {
32842
0
        JanetCFunRegistry *mid = lo + (hi - lo) / 2;
32843
0
        if (mid->cfun == key) {
32844
0
            return mid;
32845
0
        }
32846
0
        if ((void *)(mid->cfun) > (void *)(key)) {
32847
0
            hi = mid;
32848
0
        } else {
32849
0
            lo = mid + 1;
32850
0
        }
32851
0
    }
32852
0
    return NULL;
32853
0
}
32854
32855
typedef struct {
32856
    char *buf;
32857
    size_t plen;
32858
} NameBuf;
32859
32860
0
static void namebuf_init(NameBuf *namebuf, const char *prefix) {
32861
0
    size_t plen = strlen(prefix);
32862
0
    namebuf->plen = plen;
32863
0
    namebuf->buf = janet_smalloc(namebuf->plen + 256);
32864
0
    if (NULL == namebuf->buf) {
32865
0
        JANET_OUT_OF_MEMORY;
32866
0
    }
32867
0
    memcpy(namebuf->buf, prefix, plen);
32868
0
    namebuf->buf[plen] = '/';
32869
0
}
32870
32871
0
static void namebuf_deinit(NameBuf *namebuf) {
32872
0
    janet_sfree(namebuf->buf);
32873
0
}
32874
32875
0
static char *namebuf_name(NameBuf *namebuf, const char *suffix) {
32876
0
    size_t slen = strlen(suffix);
32877
0
    namebuf->buf = janet_srealloc(namebuf->buf, namebuf->plen + 2 + slen);
32878
0
    if (NULL == namebuf->buf) {
32879
0
        JANET_OUT_OF_MEMORY;
32880
0
    }
32881
0
    memcpy(namebuf->buf + namebuf->plen + 1, suffix, slen);
32882
0
    namebuf->buf[namebuf->plen + 1 + slen] = '\0';
32883
0
    return (char *)(namebuf->buf);
32884
0
}
32885
32886
0
void janet_cfuns(JanetTable *env, const char *regprefix, const JanetReg *cfuns) {
32887
0
    while (cfuns->name) {
32888
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
32889
0
        if (env) janet_def(env, cfuns->name, fun, cfuns->documentation);
32890
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, NULL, 0);
32891
0
        cfuns++;
32892
0
    }
32893
0
}
32894
32895
0
void janet_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
32896
0
    while (cfuns->name) {
32897
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
32898
0
        if (env) janet_def_sm(env, cfuns->name, fun, cfuns->documentation, cfuns->source_file, cfuns->source_line);
32899
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
32900
0
        cfuns++;
32901
0
    }
32902
0
}
32903
32904
0
void janet_cfuns_prefix(JanetTable *env, const char *regprefix, const JanetReg *cfuns) {
32905
0
    NameBuf nb;
32906
0
    if (env) namebuf_init(&nb, regprefix);
32907
0
    while (cfuns->name) {
32908
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
32909
0
        if (env) janet_def(env, namebuf_name(&nb, cfuns->name), fun, cfuns->documentation);
32910
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, NULL, 0);
32911
0
        cfuns++;
32912
0
    }
32913
0
    if (env) namebuf_deinit(&nb);
32914
0
}
32915
32916
0
void janet_cfuns_ext_prefix(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
32917
0
    NameBuf nb;
32918
0
    if (env) namebuf_init(&nb, regprefix);
32919
0
    while (cfuns->name) {
32920
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
32921
0
        if (env) janet_def_sm(env, namebuf_name(&nb, cfuns->name), fun, cfuns->documentation, cfuns->source_file, cfuns->source_line);
32922
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
32923
0
        cfuns++;
32924
0
    }
32925
0
    if (env) namebuf_deinit(&nb);
32926
0
}
32927
32928
/* Register a value in the global registry */
32929
0
void janet_register(const char *name, JanetCFunction cfun) {
32930
0
    janet_registry_put(cfun, name, NULL, NULL, 0);
32931
0
}
32932
32933
/* Abstract type introspection */
32934
32935
0
void janet_register_abstract_type(const JanetAbstractType *at) {
32936
0
    Janet sym = janet_csymbolv(at->name);
32937
0
    Janet check = janet_table_get(janet_vm.abstract_registry, sym);
32938
0
    if (!janet_checktype(check, JANET_NIL) && at != janet_unwrap_pointer(check)) {
32939
0
        janet_panicf("cannot register abstract type %s, "
32940
0
                     "a type with the same name exists", at->name);
32941
0
    }
32942
0
    janet_table_put(janet_vm.abstract_registry, sym, janet_wrap_pointer((void *) at));
32943
0
}
32944
32945
0
const JanetAbstractType *janet_get_abstract_type(Janet key) {
32946
0
    Janet wrapped = janet_table_get(janet_vm.abstract_registry, key);
32947
0
    if (janet_checktype(wrapped, JANET_NIL)) {
32948
0
        return NULL;
32949
0
    }
32950
0
    return (JanetAbstractType *)(janet_unwrap_pointer(wrapped));
32951
0
}
32952
32953
#ifndef JANET_BOOTSTRAP
32954
0
void janet_core_def_sm(JanetTable *env, const char *name, Janet x, const void *p, const void *sf, int32_t sl) {
32955
0
    (void) sf;
32956
0
    (void) sl;
32957
0
    (void) p;
32958
0
    Janet key = janet_csymbolv(name);
32959
0
    janet_table_put(env, key, x);
32960
0
    if (janet_checktype(x, JANET_CFUNCTION)) {
32961
0
        janet_registry_put(janet_unwrap_cfunction(x), name, NULL, NULL, 0);
32962
0
    }
32963
0
}
32964
32965
0
void janet_core_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
32966
0
    (void) regprefix;
32967
0
    while (cfuns->name) {
32968
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
32969
0
        janet_table_put(env, janet_csymbolv(cfuns->name), fun);
32970
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
32971
0
        cfuns++;
32972
0
    }
32973
0
}
32974
#endif
32975
32976
0
JanetBinding janet_binding_from_entry(Janet entry) {
32977
0
    JanetTable *entry_table;
32978
0
    JanetBinding binding = {
32979
0
        JANET_BINDING_NONE,
32980
0
        janet_wrap_nil(),
32981
0
        JANET_BINDING_DEP_NONE
32982
0
    };
32983
32984
    /* Check environment for entry */
32985
0
    if (!janet_checktype(entry, JANET_TABLE))
32986
0
        return binding;
32987
0
    entry_table = janet_unwrap_table(entry);
32988
32989
    /* deprecation check */
32990
0
    Janet deprecate = janet_table_get(entry_table, janet_ckeywordv("deprecated"));
32991
0
    if (janet_checktype(deprecate, JANET_KEYWORD)) {
32992
0
        JanetKeyword depkw = janet_unwrap_keyword(deprecate);
32993
0
        if (!janet_cstrcmp(depkw, "relaxed")) {
32994
0
            binding.deprecation = JANET_BINDING_DEP_RELAXED;
32995
0
        } else if (!janet_cstrcmp(depkw, "normal")) {
32996
0
            binding.deprecation = JANET_BINDING_DEP_NORMAL;
32997
0
        } else if (!janet_cstrcmp(depkw, "strict")) {
32998
0
            binding.deprecation = JANET_BINDING_DEP_STRICT;
32999
0
        }
33000
0
    } else if (!janet_checktype(deprecate, JANET_NIL)) {
33001
0
        binding.deprecation = JANET_BINDING_DEP_NORMAL;
33002
0
    }
33003
33004
0
    int macro = janet_truthy(janet_table_get(entry_table, janet_ckeywordv("macro")));
33005
0
    Janet value = janet_table_get(entry_table, janet_ckeywordv("value"));
33006
0
    Janet ref = janet_table_get(entry_table, janet_ckeywordv("ref"));
33007
0
    int ref_is_valid = janet_checktype(ref, JANET_ARRAY);
33008
0
    int redef = ref_is_valid && janet_truthy(janet_table_get(entry_table, janet_ckeywordv("redef")));
33009
33010
0
    if (macro) {
33011
0
        binding.value = redef ? ref : value;
33012
0
        binding.type = redef ? JANET_BINDING_DYNAMIC_MACRO : JANET_BINDING_MACRO;
33013
0
        return binding;
33014
0
    }
33015
33016
0
    if (ref_is_valid) {
33017
0
        binding.value = ref;
33018
0
        binding.type = redef ? JANET_BINDING_DYNAMIC_DEF : JANET_BINDING_VAR;
33019
0
    } else {
33020
0
        binding.value = value;
33021
0
        binding.type = JANET_BINDING_DEF;
33022
0
    }
33023
33024
0
    return binding;
33025
0
}
33026
33027
/* If the value at the given address can be coerced to a byte view,
33028
   return that byte view. If it can't, replace the value at the address
33029
   with the result of janet_to_string, and return a byte view over that
33030
   string. */
33031
0
static JanetByteView memoize_byte_view(Janet *value) {
33032
0
    JanetByteView result;
33033
0
    if (!janet_bytes_view(*value, &result.bytes, &result.len)) {
33034
0
        JanetString str = janet_to_string(*value);
33035
0
        *value = janet_wrap_string(str);
33036
0
        result.bytes = str;
33037
0
        result.len = janet_string_length(str);
33038
0
    }
33039
0
    return result;
33040
0
}
33041
33042
0
static JanetByteView to_byte_view(Janet value) {
33043
0
    JanetByteView result;
33044
0
    if (!janet_bytes_view(value, &result.bytes, &result.len)) {
33045
0
        JanetString str = janet_to_string(value);
33046
0
        result.bytes = str;
33047
0
        result.len = janet_string_length(str);
33048
0
    }
33049
0
    return result;
33050
0
}
33051
33052
JanetByteView janet_text_substitution(
33053
    Janet *subst,
33054
    const uint8_t *bytes,
33055
    uint32_t len,
33056
0
    JanetArray *extra_argv) {
33057
0
    int32_t extra_argc = extra_argv == NULL ? 0 : extra_argv->count;
33058
0
    JanetType type = janet_type(*subst);
33059
0
    switch (type) {
33060
0
        case JANET_FUNCTION:
33061
0
        case JANET_CFUNCTION: {
33062
0
            int32_t argc = 1 + extra_argc;
33063
0
            Janet *argv = janet_tuple_begin(argc);
33064
0
            argv[0] = janet_stringv(bytes, len);
33065
0
            for (int32_t i = 0; i < extra_argc; i++) {
33066
0
                argv[i + 1] = extra_argv->data[i];
33067
0
            }
33068
0
            janet_tuple_end(argv);
33069
0
            if (type == JANET_FUNCTION) {
33070
0
                return to_byte_view(janet_call(janet_unwrap_function(*subst), argc, argv));
33071
0
            } else {
33072
0
                return to_byte_view(janet_unwrap_cfunction(*subst)(argc, argv));
33073
0
            }
33074
0
        }
33075
0
        default:
33076
0
            return memoize_byte_view(subst);
33077
0
    }
33078
0
}
33079
33080
0
JanetBinding janet_resolve_ext(JanetTable *env, const uint8_t *sym) {
33081
0
    Janet entry = janet_table_get(env, janet_wrap_symbol(sym));
33082
0
    return janet_binding_from_entry(entry);
33083
0
}
33084
33085
0
JanetBindingType janet_resolve(JanetTable *env, const uint8_t *sym, Janet *out) {
33086
0
    JanetBinding binding = janet_resolve_ext(env, sym);
33087
0
    if (binding.type == JANET_BINDING_DYNAMIC_DEF || binding.type == JANET_BINDING_DYNAMIC_MACRO) {
33088
0
        *out = janet_array_peek(janet_unwrap_array(binding.value));
33089
0
    } else {
33090
0
        *out = binding.value;
33091
0
    }
33092
0
    return binding.type;
33093
0
}
33094
33095
/* Resolve a symbol in the core environment. */
33096
0
Janet janet_resolve_core(const char *name) {
33097
0
    JanetTable *env = janet_core_env(NULL);
33098
0
    Janet out = janet_wrap_nil();
33099
0
    janet_resolve(env, janet_csymbol(name), &out);
33100
0
    return out;
33101
0
}
33102
33103
/* Read both tuples and arrays as c pointers + int32_t length. Return 1 if the
33104
 * view can be constructed, 0 if an invalid type. */
33105
0
int janet_indexed_view(Janet seq, const Janet **data, int32_t *len) {
33106
0
    if (janet_checktype(seq, JANET_ARRAY)) {
33107
0
        *data = janet_unwrap_array(seq)->data;
33108
0
        *len = janet_unwrap_array(seq)->count;
33109
0
        return 1;
33110
0
    } else if (janet_checktype(seq, JANET_TUPLE)) {
33111
0
        *data = janet_unwrap_tuple(seq);
33112
0
        *len = janet_tuple_length(janet_unwrap_tuple(seq));
33113
0
        return 1;
33114
0
    }
33115
0
    return 0;
33116
0
}
33117
33118
/* Read both strings and buffer as unsigned character array + int32_t len.
33119
 * Returns 1 if the view can be constructed and 0 if the type is invalid. */
33120
0
int janet_bytes_view(Janet str, const uint8_t **data, int32_t *len) {
33121
0
    JanetType t = janet_type(str);
33122
0
    if (t == JANET_STRING || t == JANET_SYMBOL || t == JANET_KEYWORD) {
33123
0
        *data = janet_unwrap_string(str);
33124
0
        *len = janet_string_length(janet_unwrap_string(str));
33125
0
        return 1;
33126
0
    } else if (t == JANET_BUFFER) {
33127
0
        *data = janet_unwrap_buffer(str)->data;
33128
0
        *len = janet_unwrap_buffer(str)->count;
33129
0
        return 1;
33130
0
    } else if (t == JANET_ABSTRACT) {
33131
0
        void *abst = janet_unwrap_abstract(str);
33132
0
        const JanetAbstractType *atype = janet_abstract_type(abst);
33133
0
        if (NULL == atype->bytes) {
33134
0
            return 0;
33135
0
        }
33136
0
        JanetByteView view = atype->bytes(abst, janet_abstract_size(abst));
33137
0
        *data = view.bytes;
33138
0
        *len = view.len;
33139
0
        return 1;
33140
0
    }
33141
0
    return 0;
33142
0
}
33143
33144
/* Read both structs and tables as the entries of a hashtable with
33145
 * identical structure. Returns 1 if the view can be constructed and
33146
 * 0 if the type is invalid. */
33147
0
int janet_dictionary_view(Janet tab, const JanetKV **data, int32_t *len, int32_t *cap) {
33148
0
    if (janet_checktype(tab, JANET_TABLE)) {
33149
0
        *data = janet_unwrap_table(tab)->data;
33150
0
        *cap = janet_unwrap_table(tab)->capacity;
33151
0
        *len = janet_unwrap_table(tab)->count;
33152
0
        return 1;
33153
0
    } else if (janet_checktype(tab, JANET_STRUCT)) {
33154
0
        *data = janet_unwrap_struct(tab);
33155
0
        *cap = janet_struct_capacity(janet_unwrap_struct(tab));
33156
0
        *len = janet_struct_length(janet_unwrap_struct(tab));
33157
0
        return 1;
33158
0
    }
33159
0
    return 0;
33160
0
}
33161
33162
0
int janet_checkint(Janet x) {
33163
0
    if (!janet_checktype(x, JANET_NUMBER))
33164
0
        return 0;
33165
0
    double dval = janet_unwrap_number(x);
33166
0
    return janet_checkintrange(dval);
33167
0
}
33168
33169
0
int janet_checkuint(Janet x) {
33170
0
    if (!janet_checktype(x, JANET_NUMBER))
33171
0
        return 0;
33172
0
    double dval = janet_unwrap_number(x);
33173
0
    return janet_checkuintrange(dval);
33174
0
}
33175
33176
0
int janet_checkint64(Janet x) {
33177
0
    if (!janet_checktype(x, JANET_NUMBER))
33178
0
        return 0;
33179
0
    double dval = janet_unwrap_number(x);
33180
0
    return janet_checkint64range(dval);
33181
0
}
33182
33183
0
int janet_checkuint64(Janet x) {
33184
0
    if (!janet_checktype(x, JANET_NUMBER))
33185
0
        return 0;
33186
0
    double dval = janet_unwrap_number(x);
33187
0
    return janet_checkuint64range(dval);
33188
0
}
33189
33190
0
int janet_checkint16(Janet x) {
33191
0
    if (!janet_checktype(x, JANET_NUMBER))
33192
0
        return 0;
33193
0
    double dval = janet_unwrap_number(x);
33194
0
    return janet_checkint16range(dval);
33195
0
}
33196
33197
0
int janet_checkuint16(Janet x) {
33198
0
    if (!janet_checktype(x, JANET_NUMBER))
33199
0
        return 0;
33200
0
    double dval = janet_unwrap_number(x);
33201
0
    return janet_checkuint16range(dval);
33202
0
}
33203
33204
0
int janet_checksize(Janet x) {
33205
0
    if (!janet_checktype(x, JANET_NUMBER))
33206
0
        return 0;
33207
0
    double dval = janet_unwrap_number(x);
33208
0
    if (dval != (double)((size_t) dval)) return 0;
33209
0
    if (SIZE_MAX > JANET_INTMAX_INT64) {
33210
0
        return dval <= JANET_INTMAX_INT64;
33211
0
    } else {
33212
0
        return dval <= SIZE_MAX;
33213
0
    }
33214
0
}
33215
33216
0
JanetTable *janet_get_core_table(const char *name) {
33217
0
    JanetTable *env = janet_core_env(NULL);
33218
0
    Janet out = janet_wrap_nil();
33219
0
    JanetBindingType bt = janet_resolve(env, janet_csymbol(name), &out);
33220
0
    if (bt == JANET_BINDING_NONE) return NULL;
33221
0
    if (!janet_checktype(out, JANET_TABLE)) return NULL;
33222
0
    return janet_unwrap_table(out);
33223
0
}
33224
33225
/* Sort keys of a dictionary type */
33226
0
int32_t janet_sorted_keys(const JanetKV *dict, int32_t cap, int32_t *index_buffer) {
33227
33228
    /* First, put populated indices into index_buffer */
33229
0
    int32_t next_index = 0;
33230
0
    for (int32_t i = 0; i < cap; i++) {
33231
0
        if (!janet_checktype(dict[i].key, JANET_NIL)) {
33232
0
            index_buffer[next_index++] = i;
33233
0
        }
33234
0
    }
33235
33236
    /* Next, sort those (simple insertion sort here for now) */
33237
0
    for (int32_t i = 1; i < next_index; i++) {
33238
0
        int32_t index_to_insert = index_buffer[i];
33239
0
        Janet lhs = dict[index_to_insert].key;
33240
0
        for (int32_t j = i - 1; j >= 0; j--) {
33241
0
            index_buffer[j + 1] = index_buffer[j];
33242
0
            Janet rhs = dict[index_buffer[j]].key;
33243
0
            if (janet_compare(lhs, rhs) >= 0) {
33244
0
                index_buffer[j + 1] = index_to_insert;
33245
0
                break;
33246
0
            } else if (j == 0) {
33247
0
                index_buffer[0] = index_to_insert;
33248
0
            }
33249
0
        }
33250
0
    }
33251
33252
    /* Return number of indices found */
33253
0
    return next_index;
33254
33255
0
}
33256
33257
/* Clock shims for various platforms */
33258
#ifdef JANET_GETTIME
33259
#ifdef JANET_WINDOWS
33260
#include <profileapi.h>
33261
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
33262
    if (source == JANET_TIME_REALTIME) {
33263
        FILETIME ftime;
33264
        GetSystemTimeAsFileTime(&ftime);
33265
        int64_t wintime = (int64_t)(ftime.dwLowDateTime) | ((int64_t)(ftime.dwHighDateTime) << 32);
33266
        /* Windows epoch is January 1, 1601 apparently */
33267
        wintime -= 116444736000000000LL;
33268
        spec->tv_sec  = wintime / 10000000LL;
33269
        /* Resolution is 100 nanoseconds. */
33270
        spec->tv_nsec = wintime % 10000000LL * 100;
33271
    } else if (source == JANET_TIME_MONOTONIC) {
33272
        LARGE_INTEGER count;
33273
        LARGE_INTEGER perf_freq;
33274
        QueryPerformanceCounter(&count);
33275
        QueryPerformanceFrequency(&perf_freq);
33276
        spec->tv_sec = count.QuadPart / perf_freq.QuadPart;
33277
        spec->tv_nsec = (long)((count.QuadPart % perf_freq.QuadPart) * 1000000000 / perf_freq.QuadPart);
33278
    } else if (source == JANET_TIME_CPUTIME) {
33279
        FILETIME creationTime, exitTime, kernelTime, userTime;
33280
        GetProcessTimes(GetCurrentProcess(), &creationTime, &exitTime, &kernelTime, &userTime);
33281
        int64_t tmp = ((int64_t)userTime.dwHighDateTime << 32) + userTime.dwLowDateTime;
33282
        spec->tv_sec = tmp / 10000000LL;
33283
        spec->tv_nsec = tmp % 10000000LL * 100;
33284
    }
33285
    return 0;
33286
}
33287
/* clock_gettime() wasn't available on Mac until 10.12. */
33288
#elif defined(JANET_APPLE) && !defined(MAC_OS_X_VERSION_10_12)
33289
#include <mach/clock.h>
33290
#include <mach/mach.h>
33291
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
33292
    if (source == JANET_TIME_REALTIME) {
33293
        clock_serv_t cclock;
33294
        mach_timespec_t mts;
33295
        host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
33296
        clock_get_time(cclock, &mts);
33297
        mach_port_deallocate(mach_task_self(), cclock);
33298
        spec->tv_sec = mts.tv_sec;
33299
        spec->tv_nsec = mts.tv_nsec;
33300
    } else if (source == JANET_TIME_MONOTONIC) {
33301
        clock_serv_t cclock;
33302
        int nsecs;
33303
        mach_msg_type_number_t count;
33304
        host_get_clock_service(mach_host_self(), clock, &cclock);
33305
        clock_get_attributes(cclock, CLOCK_GET_TIME_RES, (clock_attr_t)&nsecs, &count);
33306
        mach_port_deallocate(mach_task_self(), cclock);
33307
        clock_getres(CLOCK_MONOTONIC, spec);
33308
    }
33309
    if (source == JANET_TIME_CPUTIME) {
33310
        clock_t tmp = clock();
33311
        spec->tv_sec = tmp;
33312
        spec->tv_nsec = (tmp - spec->tv_sec) * 1.0e9;
33313
    }
33314
    return 0;
33315
}
33316
#else
33317
0
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
33318
0
    clockid_t cid = CLOCK_REALTIME;
33319
0
    if (source == JANET_TIME_REALTIME) {
33320
0
        cid = CLOCK_REALTIME;
33321
0
    } else if (source == JANET_TIME_MONOTONIC) {
33322
0
        cid = CLOCK_MONOTONIC;
33323
0
    } else if (source == JANET_TIME_CPUTIME) {
33324
0
        cid = CLOCK_PROCESS_CPUTIME_ID;
33325
0
    }
33326
0
    return clock_gettime(cid, spec);
33327
0
}
33328
#endif
33329
#endif
33330
33331
/* Better strerror (thread-safe if available) */
33332
0
const char *janet_strerror(int e) {
33333
#ifdef JANET_WINDOWS
33334
    /* Microsoft strerror seems sane here and is thread safe by default */
33335
    return strerror(e);
33336
#elif defined(__GLIBC__)
33337
    /* See https://linux.die.net/man/3/strerror_r */
33338
0
    return strerror_r(e, janet_vm.strerror_buf, sizeof(janet_vm.strerror_buf));
33339
#else
33340
    strerror_r(e, janet_vm.strerror_buf, sizeof(janet_vm.strerror_buf));
33341
    return janet_vm.strerror_buf;
33342
#endif
33343
0
}
33344
33345
/* Setting C99 standard makes this not available, but it should
33346
 * work/link properly if we detect a BSD */
33347
#if defined(JANET_BSD) || defined(MAC_OS_X_VERSION_10_7)
33348
void arc4random_buf(void *buf, size_t nbytes);
33349
#endif
33350
33351
0
int janet_cryptorand(uint8_t *out, size_t n) {
33352
0
#ifndef JANET_NO_CRYPTORAND
33353
#ifdef JANET_WINDOWS
33354
    for (size_t i = 0; i < n; i += sizeof(unsigned int)) {
33355
        unsigned int v;
33356
        if (rand_s(&v))
33357
            return -1;
33358
        for (int32_t j = 0; (j < (int32_t) sizeof(unsigned int)) && (i + j < n); j++) {
33359
            out[i + j] = v & 0xff;
33360
            v = v >> 8;
33361
        }
33362
    }
33363
    return 0;
33364
#elif defined(JANET_BSD) || defined(MAC_OS_X_VERSION_10_7)
33365
    arc4random_buf(out, n);
33366
    return 0;
33367
#else
33368
    /* We should be able to call getrandom on linux, but it doesn't seem
33369
       to be uniformly supported on linux distros.
33370
       On Mac, arc4random_buf wasn't available on until 10.7.
33371
       In these cases, use this fallback path for now... */
33372
0
    int rc;
33373
0
    int randfd;
33374
0
    RETRY_EINTR(randfd, open("/dev/urandom", O_RDONLY | O_CLOEXEC));
33375
0
    if (randfd < 0)
33376
0
        return -1;
33377
0
    while (n > 0) {
33378
0
        ssize_t nread;
33379
0
        RETRY_EINTR(nread, read(randfd, out, n));
33380
0
        if (nread <= 0) {
33381
0
            RETRY_EINTR(rc, close(randfd));
33382
0
            return -1;
33383
0
        }
33384
0
        out += nread;
33385
0
        n -= nread;
33386
0
    }
33387
0
    RETRY_EINTR(rc, close(randfd));
33388
0
    return 0;
33389
0
#endif
33390
#else
33391
    (void) out;
33392
    (void) n;
33393
    return -1;
33394
#endif
33395
0
}
33396
33397
/* Dynamic library loading */
33398
33399
0
char *get_processed_name(const char *name) {
33400
0
    if (name[0] == '.') return (char *) name;
33401
0
    const char *c;
33402
0
    for (c = name; *c; c++) {
33403
0
        if (*c == '/') return (char *) name;
33404
0
    }
33405
0
    size_t l = (size_t)(c - name);
33406
0
    char *ret = janet_malloc(l + 3);
33407
0
    if (NULL == ret) {
33408
0
        JANET_OUT_OF_MEMORY;
33409
0
    }
33410
0
    ret[0] = '.';
33411
0
    ret[1] = '/';
33412
0
    memcpy(ret + 2, name, l + 1);
33413
0
    return ret;
33414
0
}
33415
33416
#if defined(JANET_NO_DYNAMIC_MODULES)
33417
33418
const char *error_clib(void) {
33419
    return "dynamic modules not supported";
33420
}
33421
33422
#else
33423
#if defined(JANET_WINDOWS)
33424
33425
static char error_clib_buf[256];
33426
char *error_clib(void) {
33427
    FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
33428
                   NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
33429
                   error_clib_buf, sizeof(error_clib_buf), NULL);
33430
    error_clib_buf[strlen(error_clib_buf) - 1] = '\0';
33431
    return error_clib_buf;
33432
}
33433
33434
Clib load_clib(const char *name) {
33435
    if (name == NULL) {
33436
        return GetModuleHandle(NULL);
33437
    } else {
33438
        return LoadLibrary(name);
33439
    }
33440
}
33441
33442
void free_clib(HINSTANCE clib) {
33443
    if (clib != GetModuleHandle(NULL)) {
33444
        FreeLibrary(clib);
33445
    }
33446
}
33447
33448
void *symbol_clib(HINSTANCE clib, const char *sym) {
33449
    if (clib != GetModuleHandle(NULL)) {
33450
        return GetProcAddress(clib, sym);
33451
    } else {
33452
        /* Look up symbols from all loaded modules */
33453
        HMODULE hMods[1024];
33454
        DWORD needed = 0;
33455
        if (EnumProcessModules(GetCurrentProcess(), hMods, sizeof(hMods), &needed)) {
33456
            needed /= sizeof(HMODULE);
33457
            for (DWORD i = 0; i < needed; i++) {
33458
                void *address = GetProcAddress(hMods[i], sym);
33459
                if (NULL != address) {
33460
                    return address;
33461
                }
33462
            }
33463
        } else {
33464
            janet_panicf("ffi: %s", error_clib());
33465
        }
33466
        return NULL;
33467
    }
33468
}
33469
33470
#endif
33471
#endif
33472
33473
/* Alloc function macro fills */
33474
0
void *(janet_malloc)(size_t size) {
33475
0
    return janet_malloc(size);
33476
0
}
33477
33478
0
void (janet_free)(void *ptr) {
33479
0
    janet_free(ptr);
33480
0
}
33481
33482
0
void *(janet_calloc)(size_t nmemb, size_t size) {
33483
0
    return janet_calloc(nmemb, size);
33484
0
}
33485
33486
0
void *(janet_realloc)(void *ptr, size_t size) {
33487
0
    return janet_realloc(ptr, size);
33488
0
}
33489
33490
33491
/* src/core/value.c */
33492
#line 0 "src/core/value.c"
33493
33494
/*
33495
* Copyright (c) 2025 Calvin Rose
33496
*
33497
* Permission is hereby granted, free of charge, to any person obtaining a copy
33498
* of this software and associated documentation files (the "Software"), to
33499
* deal in the Software without restriction, including without limitation the
33500
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
33501
* sell copies of the Software, and to permit persons to whom the Software is
33502
* furnished to do so, subject to the following conditions:
33503
*
33504
* The above copyright notice and this permission notice shall be included in
33505
* all copies or substantial portions of the Software.
33506
*
33507
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33508
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33509
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33510
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33511
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
33512
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
33513
* IN THE SOFTWARE.
33514
*/
33515
33516
#ifndef JANET_AMALG
33517
#include "features.h"
33518
#include "util.h"
33519
#include "state.h"
33520
#include "gc.h"
33521
#include "fiber.h"
33522
#include <janet.h>
33523
#endif
33524
33525
#include <math.h>
33526
33527
791k
static void push_traversal_node(void *lhs, void *rhs, int32_t index2) {
33528
791k
    JanetTraversalNode node;
33529
791k
    node.self = (JanetGCObject *) lhs;
33530
791k
    node.other = (JanetGCObject *) rhs;
33531
791k
    node.index = 0;
33532
791k
    node.index2 = index2;
33533
791k
    int is_new = janet_vm.traversal_base == NULL;
33534
791k
    if (is_new || (janet_vm.traversal + 1 >= janet_vm.traversal_top)) {
33535
267
        size_t oldsize = is_new ? 0 : (janet_vm.traversal - janet_vm.traversal_base);
33536
267
        size_t newsize = 2 * oldsize + 1;
33537
267
        if (newsize < 128) {
33538
227
            newsize = 128;
33539
227
        }
33540
267
        JanetTraversalNode *tn = janet_realloc(janet_vm.traversal_base, newsize * sizeof(JanetTraversalNode));
33541
267
        if (tn == NULL) {
33542
0
            JANET_OUT_OF_MEMORY;
33543
0
        }
33544
267
        janet_vm.traversal_base = tn;
33545
267
        janet_vm.traversal_top = janet_vm.traversal_base + newsize;
33546
267
        janet_vm.traversal = janet_vm.traversal_base + oldsize;
33547
267
    }
33548
791k
    *(++janet_vm.traversal) = node;
33549
791k
}
33550
33551
/*
33552
 * Used for travsersing structs and tuples without recursion
33553
 * Returns:
33554
 * 0 - next node found
33555
 * 1 - early stop - lhs < rhs
33556
 * 2 - no next node found
33557
 * 3 - early stop - lhs > rhs
33558
 */
33559
3.30M
static int traversal_next(Janet *x, Janet *y) {
33560
3.30M
    JanetTraversalNode *t = janet_vm.traversal;
33561
4.09M
    while (t && t > janet_vm.traversal_base) {
33562
2.40M
        JanetGCObject *self = t->self;
33563
2.40M
        JanetTupleHead *tself = (JanetTupleHead *)self;
33564
2.40M
        JanetStructHead *sself = (JanetStructHead *)self;
33565
2.40M
        JanetGCObject *other = t->other;
33566
2.40M
        JanetTupleHead *tother = (JanetTupleHead *)other;
33567
2.40M
        JanetStructHead *sother = (JanetStructHead *)other;
33568
2.40M
        if ((self->flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_TUPLE) {
33569
            /* Node is a tuple at index t->index */
33570
235k
            if (t->index < tself->length && t->index < tother->length) {
33571
165k
                int32_t index = t->index++;
33572
165k
                *x = tself->data[index];
33573
165k
                *y = tother->data[index];
33574
165k
                janet_vm.traversal = t;
33575
165k
                return 0;
33576
165k
            }
33577
70.3k
            if (t->index2 && tself->length != tother->length) {
33578
0
                return tself->length > tother->length ? 3 : 1;
33579
0
            }
33580
2.16M
        } else {
33581
            /* Node is a struct at index t->index: if t->index2 is true, we should return the values. */
33582
2.16M
            if (t->index2) {
33583
723k
                t->index2 = 0;
33584
723k
                int32_t index = t->index++;
33585
723k
                *x = sself->data[index].value;
33586
723k
                *y = sother->data[index].value;
33587
723k
                janet_vm.traversal = t;
33588
723k
                return 0;
33589
723k
            }
33590
1.44M
            for (int32_t i = t->index; i < sself->capacity; i++) {
33591
723k
                t->index2 = 1;
33592
723k
                *x = sself->data[t->index].key;
33593
723k
                *y = sother->data[t->index].key;
33594
723k
                janet_vm.traversal = t;
33595
723k
                return 0;
33596
723k
            }
33597
            /* Traverse prototype */
33598
718k
            JanetStruct sproto = sself->proto;
33599
718k
            JanetStruct oproto = sother->proto;
33600
718k
            if (sproto && !oproto) return 3;
33601
718k
            if (!sproto && oproto) return 1;
33602
718k
            if (oproto && sproto) {
33603
0
                *x = janet_wrap_struct(sproto);
33604
0
                *y = janet_wrap_struct(oproto);
33605
0
                janet_vm.traversal = t - 1;
33606
0
                return 0;
33607
0
            }
33608
718k
        }
33609
789k
        t--;
33610
789k
    }
33611
1.69M
    janet_vm.traversal = t;
33612
1.69M
    return 2;
33613
3.30M
}
33614
33615
/*
33616
 * Define a number of functions that can be used internally on ANY Janet.
33617
 */
33618
33619
0
Janet janet_next(Janet ds, Janet key) {
33620
0
    return janet_next_impl(ds, key, 0);
33621
0
}
33622
33623
0
Janet janet_next_impl(Janet ds, Janet key, int is_interpreter) {
33624
0
    JanetType t = janet_type(ds);
33625
0
    switch (t) {
33626
0
        default:
33627
0
            janet_panicf("expected iterable type, got %v", ds);
33628
0
        case JANET_TABLE:
33629
0
        case JANET_STRUCT: {
33630
0
            const JanetKV *start;
33631
0
            int32_t cap;
33632
0
            if (t == JANET_TABLE) {
33633
0
                JanetTable *tab = janet_unwrap_table(ds);
33634
0
                cap = tab->capacity;
33635
0
                start = tab->data;
33636
0
            } else {
33637
0
                JanetStruct st = janet_unwrap_struct(ds);
33638
0
                cap = janet_struct_capacity(st);
33639
0
                start = st;
33640
0
            }
33641
0
            const JanetKV *end = start + cap;
33642
0
            const JanetKV *kv = janet_checktype(key, JANET_NIL)
33643
0
                                ? start
33644
0
                                : janet_dict_find(start, cap, key) + 1;
33645
0
            while (kv < end) {
33646
0
                if (!janet_checktype(kv->key, JANET_NIL)) return kv->key;
33647
0
                kv++;
33648
0
            }
33649
0
            break;
33650
0
        }
33651
0
        case JANET_STRING:
33652
0
        case JANET_KEYWORD:
33653
0
        case JANET_SYMBOL:
33654
0
        case JANET_BUFFER:
33655
0
        case JANET_ARRAY:
33656
0
        case JANET_TUPLE: {
33657
0
            int32_t i;
33658
0
            if (janet_checktype(key, JANET_NIL)) {
33659
0
                i = 0;
33660
0
            } else if (janet_checkint(key)) {
33661
0
                i = janet_unwrap_integer(key) + 1;
33662
0
            } else {
33663
0
                break;
33664
0
            }
33665
0
            int32_t len;
33666
0
            if (t == JANET_BUFFER) {
33667
0
                len = janet_unwrap_buffer(ds)->count;
33668
0
            } else if (t == JANET_ARRAY) {
33669
0
                len = janet_unwrap_array(ds)->count;
33670
0
            } else if (t == JANET_TUPLE) {
33671
0
                len = janet_tuple_length(janet_unwrap_tuple(ds));
33672
0
            } else {
33673
0
                len = janet_string_length(janet_unwrap_string(ds));
33674
0
            }
33675
0
            if (i < len && i >= 0) {
33676
0
                return janet_wrap_integer(i);
33677
0
            }
33678
0
            break;
33679
0
        }
33680
0
        case JANET_ABSTRACT: {
33681
0
            JanetAbstract abst = janet_unwrap_abstract(ds);
33682
0
            const JanetAbstractType *at = janet_abstract_type(abst);
33683
0
            if (NULL == at->next) break;
33684
0
            return at->next(abst, key);
33685
0
        }
33686
0
        case JANET_FIBER: {
33687
0
            JanetFiber *child = janet_unwrap_fiber(ds);
33688
0
            Janet retreg;
33689
0
            JanetFiberStatus status = janet_fiber_status(child);
33690
0
            if (status == JANET_STATUS_ALIVE ||
33691
0
                    status == JANET_STATUS_DEAD ||
33692
0
                    status == JANET_STATUS_ERROR ||
33693
0
                    status == JANET_STATUS_USER0 ||
33694
0
                    status == JANET_STATUS_USER1 ||
33695
0
                    status == JANET_STATUS_USER2 ||
33696
0
                    status == JANET_STATUS_USER3 ||
33697
0
                    status == JANET_STATUS_USER4) {
33698
0
                return janet_wrap_nil();
33699
0
            }
33700
0
            janet_vm.fiber->child = child;
33701
0
            JanetSignal sig = janet_continue(child, janet_wrap_nil(), &retreg);
33702
0
            if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
33703
0
                if (is_interpreter) {
33704
0
                    janet_signalv(sig, retreg);
33705
0
                } else {
33706
0
                    janet_vm.fiber->child = NULL;
33707
0
                    janet_panicv(retreg);
33708
0
                }
33709
0
            }
33710
0
            janet_vm.fiber->child = NULL;
33711
0
            if (sig == JANET_SIGNAL_OK ||
33712
0
                    sig == JANET_SIGNAL_ERROR ||
33713
0
                    sig == JANET_SIGNAL_USER0 ||
33714
0
                    sig == JANET_SIGNAL_USER1 ||
33715
0
                    sig == JANET_SIGNAL_USER2 ||
33716
0
                    sig == JANET_SIGNAL_USER3 ||
33717
0
                    sig == JANET_SIGNAL_USER4) {
33718
                /* Fiber cannot be resumed, so discard last value. */
33719
0
                return janet_wrap_nil();
33720
0
            } else {
33721
0
                return janet_wrap_integer(0);
33722
0
            }
33723
0
        }
33724
0
    }
33725
0
    return janet_wrap_nil();
33726
0
}
33727
33728
/* Compare two abstract values */
33729
9.95k
static int janet_compare_abstract(JanetAbstract xx, JanetAbstract yy) {
33730
9.95k
    if (xx == yy) return 0;
33731
9.95k
    const JanetAbstractType *xt = janet_abstract_type(xx);
33732
9.95k
    const JanetAbstractType *yt = janet_abstract_type(yy);
33733
9.95k
    if (xt != yt) {
33734
788
        return xt > yt ? 1 : -1;
33735
788
    }
33736
9.16k
    if (xt->compare == NULL) {
33737
0
        return xx > yy ? 1 : -1;
33738
0
    }
33739
9.16k
    return xt->compare(xx, yy);
33740
9.16k
}
33741
33742
1.02M
int janet_equals(Janet x, Janet y) {
33743
1.02M
    janet_vm.traversal = janet_vm.traversal_base;
33744
1.64M
    do {
33745
1.64M
        if (janet_type(x) != janet_type(y)) return 0;
33746
1.57M
        switch (janet_type(x)) {
33747
555k
            case JANET_NIL:
33748
555k
                break;
33749
10.4k
            case JANET_BOOLEAN:
33750
10.4k
                if (janet_unwrap_boolean(x) != janet_unwrap_boolean(y)) return 0;
33751
10.1k
                break;
33752
10.1k
            case JANET_NUMBER:
33753
3.07k
                if (janet_unwrap_number(x) != janet_unwrap_number(y)) return 0;
33754
2.35k
                break;
33755
53.9k
            case JANET_STRING:
33756
53.9k
                if (!janet_string_equal(janet_unwrap_string(x), janet_unwrap_string(y))) return 0;
33757
52.9k
                break;
33758
52.9k
            case JANET_ABSTRACT:
33759
8.18k
                if (janet_compare_abstract(janet_unwrap_abstract(x), janet_unwrap_abstract(y))) return 0;
33760
4.71k
                break;
33761
615k
            default:
33762
615k
                if (janet_unwrap_pointer(x) != janet_unwrap_pointer(y)) return 0;
33763
379k
                break;
33764
379k
            case JANET_TUPLE: {
33765
44.7k
                const Janet *t1 = janet_unwrap_tuple(x);
33766
44.7k
                const Janet *t2 = janet_unwrap_tuple(y);
33767
44.7k
                if (t1 == t2) break;
33768
44.7k
                if (JANET_TUPLE_FLAG_BRACKETCTOR & (janet_tuple_flag(t1) ^ janet_tuple_flag(t2))) return 0;
33769
39.6k
                if (janet_tuple_hash(t1) != janet_tuple_hash(t2)) return 0;
33770
39.0k
                if (janet_tuple_length(t1) != janet_tuple_length(t2)) return 0;
33771
39.0k
                push_traversal_node(janet_tuple_head(t1), janet_tuple_head(t2), 0);
33772
39.0k
                break;
33773
39.0k
            }
33774
0
            break;
33775
278k
            case JANET_STRUCT: {
33776
278k
                const JanetKV *s1 = janet_unwrap_struct(x);
33777
278k
                const JanetKV *s2 = janet_unwrap_struct(y);
33778
278k
                if (s1 == s2) break;
33779
278k
                if (janet_struct_hash(s1) != janet_struct_hash(s2)) return 0;
33780
277k
                if (janet_struct_length(s1) != janet_struct_length(s2)) return 0;
33781
277k
                if (janet_struct_proto(s1) && !janet_struct_proto(s2)) return 0;
33782
277k
                if (!janet_struct_proto(s1) && janet_struct_proto(s2)) return 0;
33783
277k
                push_traversal_node(janet_struct_head(s1), janet_struct_head(s2), 0);
33784
277k
                break;
33785
277k
            }
33786
0
            break;
33787
1.57M
        }
33788
1.57M
    } while (!traversal_next(&x, &y));
33789
703k
    return 1;
33790
1.02M
}
33791
33792
4.30M
static uint64_t murmur64(uint64_t h) {
33793
4.30M
    h ^= h >> 33;
33794
4.30M
    h *= 0xff51afd7ed558ccdUL;
33795
4.30M
    h ^= h >> 33;
33796
4.30M
    h *= 0xc4ceb9fe1a85ec53UL;
33797
4.30M
    h ^= h >> 33;
33798
4.30M
    return h;
33799
4.30M
}
33800
33801
/* Computes a hash value for a function */
33802
19.9M
int32_t janet_hash(Janet x) {
33803
19.9M
    int32_t hash = 0;
33804
19.9M
    switch (janet_type(x)) {
33805
8.59M
        case JANET_NIL:
33806
8.59M
            hash = 0;
33807
8.59M
            break;
33808
23.7k
        case JANET_BOOLEAN:
33809
23.7k
            hash = janet_unwrap_boolean(x);
33810
23.7k
            break;
33811
1.34M
        case JANET_STRING:
33812
4.16M
        case JANET_SYMBOL:
33813
4.30M
        case JANET_KEYWORD:
33814
4.30M
            hash = janet_string_hash(janet_unwrap_string(x));
33815
4.30M
            break;
33816
1.11M
        case JANET_TUPLE:
33817
1.11M
            hash = janet_tuple_hash(janet_unwrap_tuple(x));
33818
1.11M
            hash += (janet_tuple_flag(janet_unwrap_tuple(x)) & JANET_TUPLE_FLAG_BRACKETCTOR) ? 1 : 0;
33819
1.11M
            break;
33820
1.55M
        case JANET_STRUCT:
33821
1.55M
            hash = janet_struct_hash(janet_unwrap_struct(x));
33822
1.55M
            break;
33823
25.2k
        case JANET_NUMBER: {
33824
25.2k
            union {
33825
25.2k
                double d;
33826
25.2k
                uint64_t u;
33827
25.2k
            } as;
33828
25.2k
            as.d = janet_unwrap_number(x);
33829
25.2k
            as.d += 0.0; /* normalize negative 0 */
33830
25.2k
            uint32_t lo = (uint32_t)(as.u & 0xFFFFFFFF);
33831
25.2k
            uint32_t hi = (uint32_t)(as.u >> 32);
33832
25.2k
            uint32_t hilo = (hi ^ lo) * 2654435769u;
33833
25.2k
            hash = (int32_t)((hilo << 16) | (hilo >> 16));
33834
25.2k
            break;
33835
4.16M
        }
33836
16.2k
        case JANET_ABSTRACT: {
33837
16.2k
            JanetAbstract xx = janet_unwrap_abstract(x);
33838
16.2k
            const JanetAbstractType *at = janet_abstract_type(xx);
33839
16.2k
            if (at->hash != NULL) {
33840
16.2k
                hash = at->hash(xx, janet_abstract_size(xx));
33841
16.2k
                break;
33842
16.2k
            }
33843
16.2k
        }
33844
        /* fallthrough */
33845
4.30M
        default:
33846
4.30M
            if (sizeof(double) == sizeof(void *)) {
33847
                /* Assuming 8 byte pointer (8 byte aligned) */
33848
4.30M
                uint64_t i = murmur64(janet_u64(x));
33849
4.30M
                hash = (int32_t)(i >> 32);
33850
4.30M
            } else {
33851
                /* Assuming 4 byte pointer (or smaller) */
33852
0
                uintptr_t diff = (uintptr_t) janet_unwrap_pointer(x);
33853
0
                uint32_t hilo = (uint32_t) diff * 2654435769u;
33854
0
                hash = (int32_t)((hilo << 16) | (hilo >> 16));
33855
0
            }
33856
4.30M
            break;
33857
19.9M
    }
33858
19.9M
    return hash;
33859
19.9M
}
33860
33861
/* Compares x to y. If they are equal returns 0. If x is less, returns -1.
33862
 * If y is less, returns 1. All types are comparable
33863
 * and should have strict ordering, excepts NaNs. */
33864
1.12M
int janet_compare(Janet x, Janet y) {
33865
1.12M
    janet_vm.traversal = janet_vm.traversal_base;
33866
1.12M
    int status;
33867
2.12M
    do {
33868
2.12M
        JanetType tx = janet_type(x);
33869
2.12M
        JanetType ty = janet_type(y);
33870
2.12M
        if (tx != ty) return tx < ty ? -1 : 1;
33871
1.98M
        switch (tx) {
33872
886k
            case JANET_NIL:
33873
886k
                break;
33874
313
            case JANET_BOOLEAN: {
33875
313
                int diff = janet_unwrap_boolean(x) - janet_unwrap_boolean(y);
33876
313
                if (diff) return diff;
33877
313
                break;
33878
313
            }
33879
1.17k
            case JANET_NUMBER: {
33880
1.17k
                double xx = janet_unwrap_number(x);
33881
1.17k
                double yy = janet_unwrap_number(y);
33882
1.17k
                if (xx == yy) {
33883
833
                    break;
33884
833
                } else {
33885
344
                    return (xx < yy) ? -1 : 1;
33886
344
                }
33887
1.17k
            }
33888
137k
            case JANET_STRING:
33889
617k
            case JANET_SYMBOL:
33890
618k
            case JANET_KEYWORD: {
33891
618k
                int diff = janet_string_compare(janet_unwrap_string(x), janet_unwrap_string(y));
33892
618k
                if (diff) return diff;
33893
617k
                break;
33894
618k
            }
33895
617k
            case JANET_ABSTRACT: {
33896
1.76k
                int diff = janet_compare_abstract(janet_unwrap_abstract(x), janet_unwrap_abstract(y));
33897
1.76k
                if (diff) return diff;
33898
1.03k
                break;
33899
1.76k
            }
33900
1.03k
            default: {
33901
36
                if (janet_unwrap_pointer(x) == janet_unwrap_pointer(y)) {
33902
0
                    break;
33903
36
                } else {
33904
36
                    return janet_unwrap_pointer(x) > janet_unwrap_pointer(y) ? 1 : -1;
33905
36
                }
33906
36
            }
33907
31.8k
            case JANET_TUPLE: {
33908
31.8k
                const Janet *lhs = janet_unwrap_tuple(x);
33909
31.8k
                const Janet *rhs = janet_unwrap_tuple(y);
33910
31.8k
                if (JANET_TUPLE_FLAG_BRACKETCTOR & (janet_tuple_flag(lhs) ^ janet_tuple_flag(rhs))) {
33911
0
                    return (janet_tuple_flag(lhs) & JANET_TUPLE_FLAG_BRACKETCTOR) ? 1 : -1;
33912
0
                }
33913
31.8k
                push_traversal_node(janet_tuple_head(lhs), janet_tuple_head(rhs), 1);
33914
31.8k
                break;
33915
31.8k
            }
33916
443k
            case JANET_STRUCT: {
33917
443k
                const JanetKV *lhs = janet_unwrap_struct(x);
33918
443k
                const JanetKV *rhs = janet_unwrap_struct(y);
33919
443k
                int32_t llen = janet_struct_capacity(lhs);
33920
443k
                int32_t rlen = janet_struct_capacity(rhs);
33921
443k
                int32_t lhash = janet_struct_hash(lhs);
33922
443k
                int32_t rhash = janet_struct_hash(rhs);
33923
443k
                if (llen < rlen) return -1;
33924
442k
                if (llen > rlen) return 1;
33925
442k
                if (lhash < rhash) return -1;
33926
442k
                if (lhash > rhash) return 1;
33927
442k
                push_traversal_node(janet_struct_head(lhs), janet_struct_head(rhs), 0);
33928
442k
                break;
33929
442k
            }
33930
1.98M
        }
33931
1.98M
    } while (!(status = traversal_next(&x, &y)));
33932
988k
    return status - 2;
33933
1.12M
}
33934
33935
0
static int32_t getter_checkint(JanetType type, Janet key, int32_t max) {
33936
0
    if (!janet_checkint(key)) goto bad;
33937
0
    int32_t ret = janet_unwrap_integer(key);
33938
0
    if (ret < 0) goto bad;
33939
0
    if (ret >= max) goto bad;
33940
0
    return ret;
33941
0
bad:
33942
0
    janet_panicf("expected integer key for %s in range [0, %d), got %v", janet_type_names[type], max, key);
33943
0
}
33944
33945
/* Gets a value and returns. Can panic. */
33946
0
Janet janet_in(Janet ds, Janet key) {
33947
0
    Janet value;
33948
0
    JanetType type = janet_type(ds);
33949
0
    switch (type) {
33950
0
        default:
33951
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
33952
0
            break;
33953
0
        case JANET_STRUCT:
33954
0
            value = janet_struct_get(janet_unwrap_struct(ds), key);
33955
0
            break;
33956
0
        case JANET_TABLE:
33957
0
            value = janet_table_get(janet_unwrap_table(ds), key);
33958
0
            break;
33959
0
        case JANET_ARRAY: {
33960
0
            JanetArray *array = janet_unwrap_array(ds);
33961
0
            int32_t index = getter_checkint(type, key, array->count);
33962
0
            value = array->data[index];
33963
0
            break;
33964
0
        }
33965
0
        case JANET_TUPLE: {
33966
0
            const Janet *tuple = janet_unwrap_tuple(ds);
33967
0
            int32_t len = janet_tuple_length(tuple);
33968
0
            value = tuple[getter_checkint(type, key, len)];
33969
0
            break;
33970
0
        }
33971
0
        case JANET_BUFFER: {
33972
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
33973
0
            int32_t index = getter_checkint(type, key, buffer->count);
33974
0
            value = janet_wrap_integer(buffer->data[index]);
33975
0
            break;
33976
0
        }
33977
0
        case JANET_STRING:
33978
0
        case JANET_SYMBOL:
33979
0
        case JANET_KEYWORD: {
33980
0
            const uint8_t *str = janet_unwrap_string(ds);
33981
0
            int32_t index = getter_checkint(type, key, janet_string_length(str));
33982
0
            value = janet_wrap_integer(str[index]);
33983
0
            break;
33984
0
        }
33985
0
        case JANET_ABSTRACT: {
33986
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
33987
0
            if (type->get) {
33988
0
                if (!(type->get)(janet_unwrap_abstract(ds), key, &value))
33989
0
                    janet_panicf("key %v not found in %v ", key, ds);
33990
0
            } else {
33991
0
                janet_panicf("no getter for %v ", ds);
33992
0
            }
33993
0
            break;
33994
0
        }
33995
0
        case JANET_FIBER: {
33996
            /* Bit of a hack to allow iterating over fibers. */
33997
0
            if (janet_equals(key, janet_wrap_integer(0))) {
33998
0
                return janet_unwrap_fiber(ds)->last_value;
33999
0
            } else {
34000
0
                janet_panicf("expected key 0, got %v", key);
34001
0
            }
34002
0
        }
34003
0
    }
34004
0
    return value;
34005
0
}
34006
34007
0
Janet janet_get(Janet ds, Janet key) {
34008
0
    JanetType t = janet_type(ds);
34009
0
    switch (t) {
34010
0
        default:
34011
0
            return janet_wrap_nil();
34012
0
        case JANET_STRING:
34013
0
        case JANET_SYMBOL:
34014
0
        case JANET_KEYWORD: {
34015
0
            if (!janet_checkint(key)) return janet_wrap_nil();
34016
0
            int32_t index = janet_unwrap_integer(key);
34017
0
            if (index < 0) return janet_wrap_nil();
34018
0
            const uint8_t *str = janet_unwrap_string(ds);
34019
0
            if (index >= janet_string_length(str)) return janet_wrap_nil();
34020
0
            return janet_wrap_integer(str[index]);
34021
0
        }
34022
0
        case JANET_ABSTRACT: {
34023
0
            Janet value;
34024
0
            void *abst = janet_unwrap_abstract(ds);
34025
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(abst);
34026
0
            if (!type->get) return janet_wrap_nil();
34027
0
            if ((type->get)(abst, key, &value))
34028
0
                return value;
34029
0
            return janet_wrap_nil();
34030
0
        }
34031
0
        case JANET_ARRAY:
34032
0
        case JANET_TUPLE:
34033
0
        case JANET_BUFFER: {
34034
0
            if (!janet_checkint(key)) return janet_wrap_nil();
34035
0
            int32_t index = janet_unwrap_integer(key);
34036
0
            if (index < 0) return janet_wrap_nil();
34037
0
            if (t == JANET_ARRAY) {
34038
0
                JanetArray *a = janet_unwrap_array(ds);
34039
0
                if (index >= a->count) return janet_wrap_nil();
34040
0
                return a->data[index];
34041
0
            } else if (t == JANET_BUFFER) {
34042
0
                JanetBuffer *b = janet_unwrap_buffer(ds);
34043
0
                if (index >= b->count) return janet_wrap_nil();
34044
0
                return janet_wrap_integer(b->data[index]);
34045
0
            } else {
34046
0
                const Janet *t = janet_unwrap_tuple(ds);
34047
0
                if (index >= janet_tuple_length(t)) return janet_wrap_nil();
34048
0
                return t[index];
34049
0
            }
34050
0
        }
34051
0
        case JANET_TABLE: {
34052
0
            return janet_table_get(janet_unwrap_table(ds), key);
34053
0
        }
34054
0
        case JANET_STRUCT: {
34055
0
            const JanetKV *st = janet_unwrap_struct(ds);
34056
0
            return janet_struct_get(st, key);
34057
0
        }
34058
0
        case JANET_FIBER: {
34059
            /* Bit of a hack to allow iterating over fibers. */
34060
0
            if (janet_equals(key, janet_wrap_integer(0))) {
34061
0
                return janet_unwrap_fiber(ds)->last_value;
34062
0
            } else {
34063
0
                return janet_wrap_nil();
34064
0
            }
34065
0
        }
34066
0
    }
34067
0
}
34068
34069
0
Janet janet_getindex(Janet ds, int32_t index) {
34070
0
    Janet value;
34071
0
    if (index < 0) janet_panic("expected non-negative index");
34072
0
    switch (janet_type(ds)) {
34073
0
        default:
34074
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
34075
0
            break;
34076
0
        case JANET_STRING:
34077
0
        case JANET_SYMBOL:
34078
0
        case JANET_KEYWORD:
34079
0
            if (index >= janet_string_length(janet_unwrap_string(ds))) {
34080
0
                value = janet_wrap_nil();
34081
0
            } else {
34082
0
                value = janet_wrap_integer(janet_unwrap_string(ds)[index]);
34083
0
            }
34084
0
            break;
34085
0
        case JANET_ARRAY:
34086
0
            if (index >= janet_unwrap_array(ds)->count) {
34087
0
                value = janet_wrap_nil();
34088
0
            } else {
34089
0
                value = janet_unwrap_array(ds)->data[index];
34090
0
            }
34091
0
            break;
34092
0
        case JANET_BUFFER:
34093
0
            if (index >= janet_unwrap_buffer(ds)->count) {
34094
0
                value = janet_wrap_nil();
34095
0
            } else {
34096
0
                value = janet_wrap_integer(janet_unwrap_buffer(ds)->data[index]);
34097
0
            }
34098
0
            break;
34099
0
        case JANET_TUPLE:
34100
0
            if (index >= janet_tuple_length(janet_unwrap_tuple(ds))) {
34101
0
                value = janet_wrap_nil();
34102
0
            } else {
34103
0
                value = janet_unwrap_tuple(ds)[index];
34104
0
            }
34105
0
            break;
34106
0
        case JANET_TABLE:
34107
0
            value = janet_table_get(janet_unwrap_table(ds), janet_wrap_integer(index));
34108
0
            break;
34109
0
        case JANET_STRUCT:
34110
0
            value = janet_struct_get(janet_unwrap_struct(ds), janet_wrap_integer(index));
34111
0
            break;
34112
0
        case JANET_ABSTRACT: {
34113
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34114
0
            if (type->get) {
34115
0
                if (!(type->get)(janet_unwrap_abstract(ds), janet_wrap_integer(index), &value))
34116
0
                    value = janet_wrap_nil();
34117
0
            } else {
34118
0
                janet_panicf("no getter for %v ", ds);
34119
0
            }
34120
0
            break;
34121
0
        }
34122
0
        case JANET_FIBER: {
34123
0
            if (index == 0) {
34124
0
                value = janet_unwrap_fiber(ds)->last_value;
34125
0
            } else {
34126
0
                value = janet_wrap_nil();
34127
0
            }
34128
0
            break;
34129
0
        }
34130
0
    }
34131
0
    return value;
34132
0
}
34133
34134
0
int32_t janet_length(Janet x) {
34135
0
    switch (janet_type(x)) {
34136
0
        default:
34137
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
34138
0
        case JANET_STRING:
34139
0
        case JANET_SYMBOL:
34140
0
        case JANET_KEYWORD:
34141
0
            return janet_string_length(janet_unwrap_string(x));
34142
0
        case JANET_ARRAY:
34143
0
            return janet_unwrap_array(x)->count;
34144
0
        case JANET_BUFFER:
34145
0
            return janet_unwrap_buffer(x)->count;
34146
0
        case JANET_TUPLE:
34147
0
            return janet_tuple_length(janet_unwrap_tuple(x));
34148
0
        case JANET_STRUCT:
34149
0
            return janet_struct_length(janet_unwrap_struct(x));
34150
0
        case JANET_TABLE:
34151
0
            return janet_unwrap_table(x)->count;
34152
0
        case JANET_ABSTRACT: {
34153
0
            void *abst = janet_unwrap_abstract(x);
34154
0
            const JanetAbstractType *type = janet_abstract_type(abst);
34155
0
            if (type->length != NULL) {
34156
0
                size_t len = type->length(abst, janet_abstract_size(abst));
34157
0
                if (len > INT32_MAX) {
34158
0
                    janet_panicf("invalid integer length %u", len);
34159
0
                }
34160
0
                return (int32_t)(len);
34161
0
            }
34162
0
            Janet argv[1] = { x };
34163
0
            Janet len = janet_mcall("length", 1, argv);
34164
0
            if (!janet_checkint(len))
34165
0
                janet_panicf("invalid integer length %v", len);
34166
0
            return janet_unwrap_integer(len);
34167
0
        }
34168
0
    }
34169
0
}
34170
34171
0
Janet janet_lengthv(Janet x) {
34172
0
    switch (janet_type(x)) {
34173
0
        default:
34174
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
34175
0
        case JANET_STRING:
34176
0
        case JANET_SYMBOL:
34177
0
        case JANET_KEYWORD:
34178
0
            return janet_wrap_integer(janet_string_length(janet_unwrap_string(x)));
34179
0
        case JANET_ARRAY:
34180
0
            return janet_wrap_integer(janet_unwrap_array(x)->count);
34181
0
        case JANET_BUFFER:
34182
0
            return janet_wrap_integer(janet_unwrap_buffer(x)->count);
34183
0
        case JANET_TUPLE:
34184
0
            return janet_wrap_integer(janet_tuple_length(janet_unwrap_tuple(x)));
34185
0
        case JANET_STRUCT:
34186
0
            return janet_wrap_integer(janet_struct_length(janet_unwrap_struct(x)));
34187
0
        case JANET_TABLE:
34188
0
            return janet_wrap_integer(janet_unwrap_table(x)->count);
34189
0
        case JANET_ABSTRACT: {
34190
0
            void *abst = janet_unwrap_abstract(x);
34191
0
            const JanetAbstractType *type = janet_abstract_type(abst);
34192
0
            if (type->length != NULL) {
34193
0
                size_t len = type->length(abst, janet_abstract_size(abst));
34194
                /* If len is always less then double, we can never overflow */
34195
#ifdef JANET_32
34196
                return janet_wrap_number(len);
34197
#else
34198
0
                if (len < (size_t) JANET_INTMAX_INT64) {
34199
0
                    return janet_wrap_number((double) len);
34200
0
                } else {
34201
0
                    janet_panicf("integer length %u too large", len);
34202
0
                }
34203
0
#endif
34204
0
            }
34205
0
            Janet argv[1] = { x };
34206
0
            return janet_mcall("length", 1, argv);
34207
0
        }
34208
0
    }
34209
0
}
34210
34211
0
void janet_putindex(Janet ds, int32_t index, Janet value) {
34212
0
    switch (janet_type(ds)) {
34213
0
        default:
34214
0
            janet_panicf("expected %T, got %v",
34215
0
                         JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
34216
0
        case JANET_ARRAY: {
34217
0
            JanetArray *array = janet_unwrap_array(ds);
34218
0
            if (index >= array->count) {
34219
0
                janet_array_ensure(array, index + 1, 2);
34220
0
                array->count = index + 1;
34221
0
            }
34222
0
            array->data[index] = value;
34223
0
            break;
34224
0
        }
34225
0
        case JANET_BUFFER: {
34226
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
34227
0
            if (!janet_checkint(value))
34228
0
                janet_panicf("can only put integers in buffers, got %v", value);
34229
0
            if (index >= buffer->count) {
34230
0
                janet_buffer_ensure(buffer, index + 1, 2);
34231
0
                buffer->count = index + 1;
34232
0
            }
34233
0
            buffer->data[index] = (uint8_t)(janet_unwrap_integer(value) & 0xFF);
34234
0
            break;
34235
0
        }
34236
0
        case JANET_TABLE: {
34237
0
            JanetTable *table = janet_unwrap_table(ds);
34238
0
            janet_table_put(table, janet_wrap_integer(index), value);
34239
0
            break;
34240
0
        }
34241
0
        case JANET_ABSTRACT: {
34242
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34243
0
            if (type->put) {
34244
0
                (type->put)(janet_unwrap_abstract(ds), janet_wrap_integer(index), value);
34245
0
            } else {
34246
0
                janet_panicf("no setter for %v ", ds);
34247
0
            }
34248
0
            break;
34249
0
        }
34250
0
    }
34251
0
}
34252
34253
0
void janet_put(Janet ds, Janet key, Janet value) {
34254
0
    JanetType type = janet_type(ds);
34255
0
    switch (type) {
34256
0
        default:
34257
0
            janet_panicf("expected %T, got %v",
34258
0
                         JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
34259
0
        case JANET_ARRAY: {
34260
0
            JanetArray *array = janet_unwrap_array(ds);
34261
0
            int32_t index = getter_checkint(type, key, INT32_MAX - 1);
34262
0
            if (index >= array->count) {
34263
0
                janet_array_setcount(array, index + 1);
34264
0
            }
34265
0
            array->data[index] = value;
34266
0
            break;
34267
0
        }
34268
0
        case JANET_BUFFER: {
34269
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
34270
0
            int32_t index = getter_checkint(type, key, INT32_MAX - 1);
34271
0
            if (!janet_checkint(value))
34272
0
                janet_panicf("can only put integers in buffers, got %v", value);
34273
0
            if (index >= buffer->count) {
34274
0
                janet_buffer_setcount(buffer, index + 1);
34275
0
            }
34276
0
            buffer->data[index] = (uint8_t)(janet_unwrap_integer(value) & 0xFF);
34277
0
            break;
34278
0
        }
34279
0
        case JANET_TABLE:
34280
0
            janet_table_put(janet_unwrap_table(ds), key, value);
34281
0
            break;
34282
0
        case JANET_ABSTRACT: {
34283
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34284
0
            if (type->put) {
34285
0
                (type->put)(janet_unwrap_abstract(ds), key, value);
34286
0
            } else {
34287
0
                janet_panicf("no setter for %v ", ds);
34288
0
            }
34289
0
            break;
34290
0
        }
34291
0
    }
34292
0
}
34293
34294
34295
/* src/core/vector.c */
34296
#line 0 "src/core/vector.c"
34297
34298
/*
34299
* Copyright (c) 2025 Calvin Rose
34300
*
34301
* Permission is hereby granted, free of charge, to any person obtaining a copy
34302
* of this software and associated documentation files (the "Software"), to
34303
* deal in the Software without restriction, including without limitation the
34304
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
34305
* sell copies of the Software, and to permit persons to whom the Software is
34306
* furnished to do so, subject to the following conditions:
34307
*
34308
* The above copyright notice and this permission notice shall be included in
34309
* all copies or substantial portions of the Software.
34310
*
34311
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34312
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34313
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34314
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34315
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
34316
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
34317
* IN THE SOFTWARE.
34318
*/
34319
34320
#ifndef JANET_AMALG
34321
#include "features.h"
34322
#include "vector.h"
34323
#include "util.h"
34324
#endif
34325
34326
/* Grow the buffer dynamically. Used for push operations. */
34327
0
void *janet_v_grow(void *v, int32_t increment, int32_t itemsize) {
34328
0
    int32_t dbl_cur = (NULL != v) ? 2 * janet_v__cap(v) : 0;
34329
0
    int32_t min_needed = janet_v_count(v) + increment;
34330
0
    int32_t m = dbl_cur > min_needed ? dbl_cur : min_needed;
34331
0
    size_t newsize = ((size_t) itemsize) * m + sizeof(int32_t) * 2;
34332
0
    int32_t *p = (int32_t *) janet_srealloc(v ? janet_v__raw(v) : 0, newsize);
34333
0
    if (!v) p[1] = 0;
34334
0
    p[0] = m;
34335
0
    return p + 2;
34336
0
}
34337
34338
/* Convert a buffer to normal allocated memory (forget capacity) */
34339
0
void *janet_v_flattenmem(void *v, int32_t itemsize) {
34340
0
    char *p;
34341
0
    if (NULL == v) return NULL;
34342
0
    size_t size = (size_t) itemsize * janet_v__cnt(v);
34343
0
    p = janet_malloc(size);
34344
0
    if (NULL != p) {
34345
0
        safe_memcpy(p, v, size);
34346
0
        return p;
34347
0
    } else {
34348
0
        JANET_OUT_OF_MEMORY;
34349
0
    }
34350
0
}
34351
34352
34353
34354
/* src/core/vm.c */
34355
#line 0 "src/core/vm.c"
34356
34357
/*
34358
* Copyright (c) 2025 Calvin Rose
34359
*
34360
* Permission is hereby granted, free of charge, to any person obtaining a copy
34361
* of this software and associated documentation files (the "Software"), to
34362
* deal in the Software without restriction, including without limitation the
34363
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
34364
* sell copies of the Software, and to permit persons to whom the Software is
34365
* furnished to do so, subject to the following conditions:
34366
*
34367
* The above copyright notice and this permission notice shall be included in
34368
* all copies or substantial portions of the Software.
34369
*
34370
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34371
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34372
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34373
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34374
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
34375
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
34376
* IN THE SOFTWARE.
34377
*/
34378
34379
#ifndef JANET_AMALG
34380
#include "features.h"
34381
#include <janet.h>
34382
#include "state.h"
34383
#include "fiber.h"
34384
#include "gc.h"
34385
#include "symcache.h"
34386
#include "util.h"
34387
#endif
34388
34389
#include <math.h>
34390
34391
/* Virtual registers
34392
 *
34393
 * One instruction word
34394
 * CC | BB | AA | OP
34395
 * DD | DD | DD | OP
34396
 * EE | EE | AA | OP
34397
 */
34398
0
#define A ((*pc >> 8)  & 0xFF)
34399
0
#define B ((*pc >> 16) & 0xFF)
34400
0
#define C (*pc >> 24)
34401
0
#define D (*pc >> 8)
34402
0
#define E (*pc >> 16)
34403
34404
/* Signed interpretations of registers */
34405
0
#define CS (*((int32_t *)pc) >> 24)
34406
0
#define DS (*((int32_t *)pc) >> 8)
34407
0
#define ES (*((int32_t *)pc) >> 16)
34408
34409
/* How we dispatch instructions. By default, we use
34410
 * a switch inside an infinite loop. For GCC/clang, we use
34411
 * computed gotos. */
34412
#if defined(__GNUC__) && !defined(__EMSCRIPTEN__)
34413
#define JANET_USE_COMPUTED_GOTOS
34414
#endif
34415
34416
#ifdef JANET_USE_COMPUTED_GOTOS
34417
0
#define VM_START() { goto *op_lookup[first_opcode];
34418
0
#define VM_END() }
34419
0
#define VM_OP(op) label_##op :
34420
0
#define VM_DEFAULT() label_unknown_op:
34421
0
#define vm_next() goto *op_lookup[*pc & 0xFF]
34422
0
#define opcode (*pc & 0xFF)
34423
#else
34424
#define VM_START() uint8_t opcode = first_opcode; for (;;) {switch(opcode) {
34425
#define VM_END() }}
34426
#define VM_OP(op) case op :
34427
#define VM_DEFAULT() default:
34428
#define vm_next() opcode = *pc & 0xFF; continue
34429
#endif
34430
34431
/* Commit and restore VM state before possible longjmp */
34432
0
#define vm_commit() do { janet_stack_frame(stack)->pc = pc; } while (0)
34433
0
#define vm_restore() do { \
34434
0
    stack = fiber->data + fiber->frame; \
34435
0
    pc = janet_stack_frame(stack)->pc; \
34436
0
    func = janet_stack_frame(stack)->func; \
34437
0
} while (0)
34438
0
#define vm_return(sig, val) do { \
34439
0
    janet_vm.return_reg[0] = (val); \
34440
0
    vm_commit(); \
34441
0
    return (sig); \
34442
0
} while (0)
34443
0
#define vm_return_no_restore(sig, val) do { \
34444
0
    janet_vm.return_reg[0] = (val); \
34445
0
    return (sig); \
34446
0
} while (0)
34447
34448
/* Next instruction variations */
34449
0
#define maybe_collect() do {\
34450
0
    if (janet_vm.next_collection >= janet_vm.gc_interval) janet_collect(); } while (0)
34451
0
#define vm_checkgc_next() maybe_collect(); vm_next()
34452
0
#define vm_pcnext() pc++; vm_next()
34453
0
#define vm_checkgc_pcnext() maybe_collect(); vm_pcnext()
34454
34455
/* Handle certain errors in main vm loop */
34456
0
#define vm_throw(e) do { vm_commit(); janet_panic(e); } while (0)
34457
0
#define vm_assert(cond, e) do {if (!(cond)) vm_throw((e)); } while (0)
34458
0
#define vm_assert_type(X, T) do { \
34459
0
    if (!(janet_checktype((X), (T)))) { \
34460
0
        vm_commit(); \
34461
0
        janet_panicf("expected %T, got %v", (1 << (T)), (X)); \
34462
0
    } \
34463
0
} while (0)
34464
0
#define vm_assert_types(X, TS) do { \
34465
0
    if (!(janet_checktypes((X), (TS)))) { \
34466
0
        vm_commit(); \
34467
0
        janet_panicf("expected %T, got %v", (TS), (X)); \
34468
0
    } \
34469
0
} while (0)
34470
#ifdef JANET_NO_INTERPRETER_INTERRUPT
34471
#define vm_maybe_auto_suspend(COND)
34472
#else
34473
0
#define vm_maybe_auto_suspend(COND) do { \
34474
0
    if ((COND) && janet_atomic_load_relaxed(&janet_vm.auto_suspend)) { \
34475
0
        fiber->flags |= (JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP); \
34476
0
        vm_return(JANET_SIGNAL_INTERRUPT, janet_wrap_nil()); \
34477
0
    } \
34478
0
} while (0)
34479
#endif
34480
34481
/* Templates for certain patterns in opcodes */
34482
#define vm_binop_immediate(op)\
34483
0
    {\
34484
0
        Janet op1 = stack[B];\
34485
0
        if (!janet_checktype(op1, JANET_NUMBER)) {\
34486
0
            vm_commit();\
34487
0
            Janet _argv[2] = { op1, janet_wrap_number(CS) };\
34488
0
            stack[A] = janet_mcall(#op, 2, _argv);\
34489
0
            vm_checkgc_pcnext();\
34490
0
        } else {\
34491
0
            double x1 = janet_unwrap_number(op1);\
34492
0
            stack[A] = janet_wrap_number(x1 op CS);\
34493
0
            vm_pcnext();\
34494
0
        }\
34495
0
    }
34496
#define _vm_bitop_immediate(op, type1, rangecheck, msg)\
34497
0
    {\
34498
0
        Janet op1 = stack[B];\
34499
0
        if (!janet_checktype(op1, JANET_NUMBER)) {\
34500
0
            vm_commit();\
34501
0
            Janet _argv[2] = { op1, janet_wrap_number(CS) };\
34502
0
            stack[A] = janet_mcall(#op, 2, _argv);\
34503
0
            vm_checkgc_pcnext();\
34504
0
        } else {\
34505
0
            double y1 = janet_unwrap_number(op1);\
34506
0
            if (!rangecheck(y1)) { vm_commit(); janet_panicf("value %v out of range for " msg, op1); }\
34507
0
            type1 x1 = (type1) y1;\
34508
0
            stack[A] = janet_wrap_number((type1) (x1 op CS));\
34509
0
            vm_pcnext();\
34510
0
        }\
34511
0
    }
34512
0
#define vm_bitop_immediate(op) _vm_bitop_immediate(op, int32_t, janet_checkintrange, "32-bit signed integers");
34513
0
#define vm_bitopu_immediate(op) _vm_bitop_immediate(op, uint32_t, janet_checkuintrange, "32-bit unsigned integers");
34514
#define _vm_binop(op, wrap)\
34515
0
    {\
34516
0
        Janet op1 = stack[B];\
34517
0
        Janet op2 = stack[C];\
34518
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
34519
0
            double x1 = janet_unwrap_number(op1);\
34520
0
            double x2 = janet_unwrap_number(op2);\
34521
0
            stack[A] = wrap(x1 op x2);\
34522
0
            vm_pcnext();\
34523
0
        } else {\
34524
0
            vm_commit();\
34525
0
            stack[A] = janet_binop_call(#op, "r" #op, op1, op2);\
34526
0
            vm_checkgc_pcnext();\
34527
0
        }\
34528
0
    }
34529
0
#define vm_binop(op) _vm_binop(op, janet_wrap_number)
34530
#define _vm_bitop(op, type1, rangecheck, msg)\
34531
0
    {\
34532
0
        Janet op1 = stack[B];\
34533
0
        Janet op2 = stack[C];\
34534
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
34535
0
            double y1 = janet_unwrap_number(op1);\
34536
0
            double y2 = janet_unwrap_number(op2);\
34537
0
            if (!rangecheck(y1)) { vm_commit(); janet_panicf("value %v out of range for " msg, op1); }\
34538
0
            if (!janet_checkintrange(y2)) { vm_commit(); janet_panicf("rhs must be valid 32-bit signed integer, got %f", op2); }\
34539
0
            type1 x1 = (type1) y1;\
34540
0
            int32_t x2 = (int32_t) y2;\
34541
0
            stack[A] = janet_wrap_number((type1) (x1 op x2));\
34542
0
            vm_pcnext();\
34543
0
        } else {\
34544
0
            vm_commit();\
34545
0
            stack[A] = janet_binop_call(#op, "r" #op, op1, op2);\
34546
0
            vm_checkgc_pcnext();\
34547
0
        }\
34548
0
    }
34549
0
#define vm_bitop(op) _vm_bitop(op, int32_t, janet_checkintrange, "32-bit signed integers")
34550
0
#define vm_bitopu(op) _vm_bitop(op, uint32_t, janet_checkuintrange, "32-bit unsigned integers")
34551
#define vm_compop(op) \
34552
0
    {\
34553
0
        Janet op1 = stack[B];\
34554
0
        Janet op2 = stack[C];\
34555
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
34556
0
            double x1 = janet_unwrap_number(op1);\
34557
0
            double x2 = janet_unwrap_number(op2);\
34558
0
            stack[A] = janet_wrap_boolean(x1 op x2);\
34559
0
            vm_pcnext();\
34560
0
        } else {\
34561
0
            vm_commit();\
34562
0
            stack[A] = janet_wrap_boolean(janet_compare(op1, op2) op 0);\
34563
0
            vm_checkgc_pcnext();\
34564
0
        }\
34565
0
    }
34566
#define vm_compop_imm(op) \
34567
0
    {\
34568
0
        Janet op1 = stack[B];\
34569
0
        if (janet_checktype(op1, JANET_NUMBER)) {\
34570
0
            double x1 = janet_unwrap_number(op1);\
34571
0
            double x2 = (double) CS; \
34572
0
            stack[A] = janet_wrap_boolean(x1 op x2);\
34573
0
            vm_pcnext();\
34574
0
        } else {\
34575
0
            vm_commit();\
34576
0
            stack[A] = janet_wrap_boolean(janet_compare(op1, janet_wrap_integer(CS)) op 0);\
34577
0
            vm_checkgc_pcnext();\
34578
0
        }\
34579
0
    }
34580
34581
/* Trace a function call */
34582
0
static void vm_do_trace(JanetFunction *func, int32_t argc, const Janet *argv) {
34583
0
    if (func->def->name) {
34584
0
        janet_eprintf("trace (%S", func->def->name);
34585
0
    } else {
34586
0
        janet_eprintf("trace (%p", janet_wrap_function(func));
34587
0
    }
34588
0
    for (int32_t i = 0; i < argc; i++) {
34589
0
        janet_eprintf(" %p", argv[i]);
34590
0
    }
34591
0
    janet_eprintf(")\n");
34592
0
}
34593
34594
/* Invoke a method once we have looked it up */
34595
0
static Janet janet_method_invoke(Janet method, int32_t argc, Janet *argv) {
34596
0
    switch (janet_type(method)) {
34597
0
        case JANET_CFUNCTION:
34598
0
            return (janet_unwrap_cfunction(method))(argc, argv);
34599
0
        case JANET_FUNCTION: {
34600
0
            JanetFunction *fun = janet_unwrap_function(method);
34601
0
            return janet_call(fun, argc, argv);
34602
0
        }
34603
0
        case JANET_ABSTRACT: {
34604
0
            JanetAbstract abst = janet_unwrap_abstract(method);
34605
0
            const JanetAbstractType *at = janet_abstract_type(abst);
34606
0
            if (NULL != at->call) {
34607
0
                return at->call(abst, argc, argv);
34608
0
            }
34609
0
        }
34610
        /* fallthrough */
34611
0
        case JANET_STRING:
34612
0
        case JANET_BUFFER:
34613
0
        case JANET_TABLE:
34614
0
        case JANET_STRUCT:
34615
0
        case JANET_ARRAY:
34616
0
        case JANET_TUPLE: {
34617
0
            if (argc != 1) {
34618
0
                janet_panicf("%v called with %d arguments, possibly expected 1", method, argc);
34619
0
            }
34620
0
            return janet_in(method, argv[0]);
34621
0
        }
34622
0
        default: {
34623
0
            if (argc != 1) {
34624
0
                janet_panicf("%v called with %d arguments, possibly expected 1", method, argc);
34625
0
            }
34626
0
            return janet_in(argv[0], method);
34627
0
        }
34628
0
    }
34629
0
}
34630
34631
/* Call a non function type from a JOP_CALL or JOP_TAILCALL instruction.
34632
 * Assumes that the arguments are on the fiber stack. */
34633
0
static Janet call_nonfn(JanetFiber *fiber, Janet callee) {
34634
0
    int32_t argc = fiber->stacktop - fiber->stackstart;
34635
0
    fiber->stacktop = fiber->stackstart;
34636
0
    return janet_method_invoke(callee, argc, fiber->data + fiber->stacktop);
34637
0
}
34638
34639
/* Method lookup could potentially handle tables specially... */
34640
0
static Janet method_to_fun(Janet method, Janet obj) {
34641
0
    return janet_get(obj, method);
34642
0
}
34643
34644
/* Get a callable from a keyword method name and ensure that it is valid. */
34645
0
static Janet resolve_method(Janet name, JanetFiber *fiber) {
34646
0
    int32_t argc = fiber->stacktop - fiber->stackstart;
34647
0
    if (argc < 1) janet_panicf("method call (%v) takes at least 1 argument, got 0", name);
34648
0
    Janet callee = method_to_fun(name, fiber->data[fiber->stackstart]);
34649
0
    if (janet_checktype(callee, JANET_NIL))
34650
0
        janet_panicf("unknown method %v invoked on %v", name, fiber->data[fiber->stackstart]);
34651
0
    return callee;
34652
0
}
34653
34654
/* Lookup method on value x */
34655
0
static Janet janet_method_lookup(Janet x, const char *name) {
34656
0
    return method_to_fun(janet_ckeywordv(name), x);
34657
0
}
34658
34659
0
static Janet janet_unary_call(const char *method, Janet arg) {
34660
0
    Janet m = janet_method_lookup(arg, method);
34661
0
    if (janet_checktype(m, JANET_NIL)) {
34662
0
        janet_panicf("could not find method :%s for %v", method, arg);
34663
0
    } else {
34664
0
        Janet argv[1] = { arg };
34665
0
        return janet_method_invoke(m, 1, argv);
34666
0
    }
34667
0
}
34668
34669
/* Call a method first on the righthand side, and then on the left hand side with a prefix */
34670
0
static Janet janet_binop_call(const char *lmethod, const char *rmethod, Janet lhs, Janet rhs) {
34671
0
    Janet lm = janet_method_lookup(lhs, lmethod);
34672
0
    if (janet_checktype(lm, JANET_NIL)) {
34673
        /* Invert order for rmethod */
34674
0
        Janet lr = janet_method_lookup(rhs, rmethod);
34675
0
        Janet argv[2] = { rhs, lhs };
34676
0
        if (janet_checktype(lr, JANET_NIL)) {
34677
0
            janet_panicf("could not find method :%s for %v or :%s for %v",
34678
0
                         lmethod, lhs,
34679
0
                         rmethod, rhs);
34680
0
        }
34681
0
        return janet_method_invoke(lr, 2, argv);
34682
0
    } else {
34683
0
        Janet argv[2] = { lhs, rhs };
34684
0
        return janet_method_invoke(lm, 2, argv);
34685
0
    }
34686
0
}
34687
34688
/* Forward declaration */
34689
static JanetSignal janet_check_can_resume(JanetFiber *fiber, Janet *out, int is_cancel);
34690
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out);
34691
34692
/* Interpreter main loop */
34693
0
static JanetSignal run_vm(JanetFiber *fiber, Janet in) {
34694
34695
    /* opcode -> label lookup if using clang/GCC */
34696
0
#ifdef JANET_USE_COMPUTED_GOTOS
34697
0
    static void *op_lookup[255] = {
34698
0
        &&label_JOP_NOOP,
34699
0
        &&label_JOP_ERROR,
34700
0
        &&label_JOP_TYPECHECK,
34701
0
        &&label_JOP_RETURN,
34702
0
        &&label_JOP_RETURN_NIL,
34703
0
        &&label_JOP_ADD_IMMEDIATE,
34704
0
        &&label_JOP_ADD,
34705
0
        &&label_JOP_SUBTRACT_IMMEDIATE,
34706
0
        &&label_JOP_SUBTRACT,
34707
0
        &&label_JOP_MULTIPLY_IMMEDIATE,
34708
0
        &&label_JOP_MULTIPLY,
34709
0
        &&label_JOP_DIVIDE_IMMEDIATE,
34710
0
        &&label_JOP_DIVIDE,
34711
0
        &&label_JOP_DIVIDE_FLOOR,
34712
0
        &&label_JOP_MODULO,
34713
0
        &&label_JOP_REMAINDER,
34714
0
        &&label_JOP_BAND,
34715
0
        &&label_JOP_BOR,
34716
0
        &&label_JOP_BXOR,
34717
0
        &&label_JOP_BNOT,
34718
0
        &&label_JOP_SHIFT_LEFT,
34719
0
        &&label_JOP_SHIFT_LEFT_IMMEDIATE,
34720
0
        &&label_JOP_SHIFT_RIGHT,
34721
0
        &&label_JOP_SHIFT_RIGHT_IMMEDIATE,
34722
0
        &&label_JOP_SHIFT_RIGHT_UNSIGNED,
34723
0
        &&label_JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE,
34724
0
        &&label_JOP_MOVE_FAR,
34725
0
        &&label_JOP_MOVE_NEAR,
34726
0
        &&label_JOP_JUMP,
34727
0
        &&label_JOP_JUMP_IF,
34728
0
        &&label_JOP_JUMP_IF_NOT,
34729
0
        &&label_JOP_JUMP_IF_NIL,
34730
0
        &&label_JOP_JUMP_IF_NOT_NIL,
34731
0
        &&label_JOP_GREATER_THAN,
34732
0
        &&label_JOP_GREATER_THAN_IMMEDIATE,
34733
0
        &&label_JOP_LESS_THAN,
34734
0
        &&label_JOP_LESS_THAN_IMMEDIATE,
34735
0
        &&label_JOP_EQUALS,
34736
0
        &&label_JOP_EQUALS_IMMEDIATE,
34737
0
        &&label_JOP_COMPARE,
34738
0
        &&label_JOP_LOAD_NIL,
34739
0
        &&label_JOP_LOAD_TRUE,
34740
0
        &&label_JOP_LOAD_FALSE,
34741
0
        &&label_JOP_LOAD_INTEGER,
34742
0
        &&label_JOP_LOAD_CONSTANT,
34743
0
        &&label_JOP_LOAD_UPVALUE,
34744
0
        &&label_JOP_LOAD_SELF,
34745
0
        &&label_JOP_SET_UPVALUE,
34746
0
        &&label_JOP_CLOSURE,
34747
0
        &&label_JOP_PUSH,
34748
0
        &&label_JOP_PUSH_2,
34749
0
        &&label_JOP_PUSH_3,
34750
0
        &&label_JOP_PUSH_ARRAY,
34751
0
        &&label_JOP_CALL,
34752
0
        &&label_JOP_TAILCALL,
34753
0
        &&label_JOP_RESUME,
34754
0
        &&label_JOP_SIGNAL,
34755
0
        &&label_JOP_PROPAGATE,
34756
0
        &&label_JOP_IN,
34757
0
        &&label_JOP_GET,
34758
0
        &&label_JOP_PUT,
34759
0
        &&label_JOP_GET_INDEX,
34760
0
        &&label_JOP_PUT_INDEX,
34761
0
        &&label_JOP_LENGTH,
34762
0
        &&label_JOP_MAKE_ARRAY,
34763
0
        &&label_JOP_MAKE_BUFFER,
34764
0
        &&label_JOP_MAKE_STRING,
34765
0
        &&label_JOP_MAKE_STRUCT,
34766
0
        &&label_JOP_MAKE_TABLE,
34767
0
        &&label_JOP_MAKE_TUPLE,
34768
0
        &&label_JOP_MAKE_BRACKET_TUPLE,
34769
0
        &&label_JOP_GREATER_THAN_EQUAL,
34770
0
        &&label_JOP_LESS_THAN_EQUAL,
34771
0
        &&label_JOP_NEXT,
34772
0
        &&label_JOP_NOT_EQUALS,
34773
0
        &&label_JOP_NOT_EQUALS_IMMEDIATE,
34774
0
        &&label_JOP_CANCEL,
34775
0
        &&label_unknown_op,
34776
0
        &&label_unknown_op,
34777
0
        &&label_unknown_op,
34778
0
        &&label_unknown_op,
34779
0
        &&label_unknown_op,
34780
0
        &&label_unknown_op,
34781
0
        &&label_unknown_op,
34782
0
        &&label_unknown_op,
34783
0
        &&label_unknown_op,
34784
0
        &&label_unknown_op,
34785
0
        &&label_unknown_op,
34786
0
        &&label_unknown_op,
34787
0
        &&label_unknown_op,
34788
0
        &&label_unknown_op,
34789
0
        &&label_unknown_op,
34790
0
        &&label_unknown_op,
34791
0
        &&label_unknown_op,
34792
0
        &&label_unknown_op,
34793
0
        &&label_unknown_op,
34794
0
        &&label_unknown_op,
34795
0
        &&label_unknown_op,
34796
0
        &&label_unknown_op,
34797
0
        &&label_unknown_op,
34798
0
        &&label_unknown_op,
34799
0
        &&label_unknown_op,
34800
0
        &&label_unknown_op,
34801
0
        &&label_unknown_op,
34802
0
        &&label_unknown_op,
34803
0
        &&label_unknown_op,
34804
0
        &&label_unknown_op,
34805
0
        &&label_unknown_op,
34806
0
        &&label_unknown_op,
34807
0
        &&label_unknown_op,
34808
0
        &&label_unknown_op,
34809
0
        &&label_unknown_op,
34810
0
        &&label_unknown_op,
34811
0
        &&label_unknown_op,
34812
0
        &&label_unknown_op,
34813
0
        &&label_unknown_op,
34814
0
        &&label_unknown_op,
34815
0
        &&label_unknown_op,
34816
0
        &&label_unknown_op,
34817
0
        &&label_unknown_op,
34818
0
        &&label_unknown_op,
34819
0
        &&label_unknown_op,
34820
0
        &&label_unknown_op,
34821
0
        &&label_unknown_op,
34822
0
        &&label_unknown_op,
34823
0
        &&label_unknown_op,
34824
0
        &&label_unknown_op,
34825
0
        &&label_unknown_op,
34826
0
        &&label_unknown_op,
34827
0
        &&label_unknown_op,
34828
0
        &&label_unknown_op,
34829
0
        &&label_unknown_op,
34830
0
        &&label_unknown_op,
34831
0
        &&label_unknown_op,
34832
0
        &&label_unknown_op,
34833
0
        &&label_unknown_op,
34834
0
        &&label_unknown_op,
34835
0
        &&label_unknown_op,
34836
0
        &&label_unknown_op,
34837
0
        &&label_unknown_op,
34838
0
        &&label_unknown_op,
34839
0
        &&label_unknown_op,
34840
0
        &&label_unknown_op,
34841
0
        &&label_unknown_op,
34842
0
        &&label_unknown_op,
34843
0
        &&label_unknown_op,
34844
0
        &&label_unknown_op,
34845
0
        &&label_unknown_op,
34846
0
        &&label_unknown_op,
34847
0
        &&label_unknown_op,
34848
0
        &&label_unknown_op,
34849
0
        &&label_unknown_op,
34850
0
        &&label_unknown_op,
34851
0
        &&label_unknown_op,
34852
0
        &&label_unknown_op,
34853
0
        &&label_unknown_op,
34854
0
        &&label_unknown_op,
34855
0
        &&label_unknown_op,
34856
0
        &&label_unknown_op,
34857
0
        &&label_unknown_op,
34858
0
        &&label_unknown_op,
34859
0
        &&label_unknown_op,
34860
0
        &&label_unknown_op,
34861
0
        &&label_unknown_op,
34862
0
        &&label_unknown_op,
34863
0
        &&label_unknown_op,
34864
0
        &&label_unknown_op,
34865
0
        &&label_unknown_op,
34866
0
        &&label_unknown_op,
34867
0
        &&label_unknown_op,
34868
0
        &&label_unknown_op,
34869
0
        &&label_unknown_op,
34870
0
        &&label_unknown_op,
34871
0
        &&label_unknown_op,
34872
0
        &&label_unknown_op,
34873
0
        &&label_unknown_op,
34874
0
        &&label_unknown_op,
34875
0
        &&label_unknown_op,
34876
0
        &&label_unknown_op,
34877
0
        &&label_unknown_op,
34878
0
        &&label_unknown_op,
34879
0
        &&label_unknown_op,
34880
0
        &&label_unknown_op,
34881
0
        &&label_unknown_op,
34882
0
        &&label_unknown_op,
34883
0
        &&label_unknown_op,
34884
0
        &&label_unknown_op,
34885
0
        &&label_unknown_op,
34886
0
        &&label_unknown_op,
34887
0
        &&label_unknown_op,
34888
0
        &&label_unknown_op,
34889
0
        &&label_unknown_op,
34890
0
        &&label_unknown_op,
34891
0
        &&label_unknown_op,
34892
0
        &&label_unknown_op,
34893
0
        &&label_unknown_op,
34894
0
        &&label_unknown_op,
34895
0
        &&label_unknown_op,
34896
0
        &&label_unknown_op,
34897
0
        &&label_unknown_op,
34898
0
        &&label_unknown_op,
34899
0
        &&label_unknown_op,
34900
0
        &&label_unknown_op,
34901
0
        &&label_unknown_op,
34902
0
        &&label_unknown_op,
34903
0
        &&label_unknown_op,
34904
0
        &&label_unknown_op,
34905
0
        &&label_unknown_op,
34906
0
        &&label_unknown_op,
34907
0
        &&label_unknown_op,
34908
0
        &&label_unknown_op,
34909
0
        &&label_unknown_op,
34910
0
        &&label_unknown_op,
34911
0
        &&label_unknown_op,
34912
0
        &&label_unknown_op,
34913
0
        &&label_unknown_op,
34914
0
        &&label_unknown_op,
34915
0
        &&label_unknown_op,
34916
0
        &&label_unknown_op,
34917
0
        &&label_unknown_op,
34918
0
        &&label_unknown_op,
34919
0
        &&label_unknown_op,
34920
0
        &&label_unknown_op,
34921
0
        &&label_unknown_op,
34922
0
        &&label_unknown_op,
34923
0
        &&label_unknown_op,
34924
0
        &&label_unknown_op,
34925
0
        &&label_unknown_op,
34926
0
        &&label_unknown_op,
34927
0
        &&label_unknown_op,
34928
0
        &&label_unknown_op,
34929
0
        &&label_unknown_op,
34930
0
        &&label_unknown_op,
34931
0
        &&label_unknown_op,
34932
0
        &&label_unknown_op,
34933
0
        &&label_unknown_op,
34934
0
        &&label_unknown_op,
34935
0
        &&label_unknown_op,
34936
0
        &&label_unknown_op,
34937
0
        &&label_unknown_op,
34938
0
        &&label_unknown_op,
34939
0
        &&label_unknown_op,
34940
0
        &&label_unknown_op,
34941
0
        &&label_unknown_op,
34942
0
        &&label_unknown_op,
34943
0
        &&label_unknown_op,
34944
0
        &&label_unknown_op,
34945
0
        &&label_unknown_op,
34946
0
        &&label_unknown_op,
34947
0
        &&label_unknown_op,
34948
0
        &&label_unknown_op,
34949
0
        &&label_unknown_op,
34950
0
        &&label_unknown_op,
34951
0
        &&label_unknown_op,
34952
0
        &&label_unknown_op
34953
0
    };
34954
0
#endif
34955
34956
    /* Interpreter state */
34957
0
    register Janet *stack;
34958
0
    register uint32_t *pc;
34959
0
    register JanetFunction *func;
34960
34961
0
    if (fiber->flags & JANET_FIBER_RESUME_SIGNAL) {
34962
0
        JanetSignal sig = (fiber->gc.flags & JANET_FIBER_STATUS_MASK) >> JANET_FIBER_STATUS_OFFSET;
34963
0
        fiber->gc.flags &= ~JANET_FIBER_STATUS_MASK;
34964
0
        fiber->flags &= ~(JANET_FIBER_RESUME_SIGNAL | JANET_FIBER_FLAG_MASK);
34965
0
        janet_vm.return_reg[0] = in;
34966
0
        return sig;
34967
0
    }
34968
34969
0
    vm_restore();
34970
34971
0
    if (fiber->flags & JANET_FIBER_DID_LONGJUMP) {
34972
0
        if (janet_fiber_frame(fiber)->func == NULL) {
34973
            /* Inside a c function */
34974
0
            janet_fiber_popframe(fiber);
34975
0
            vm_restore();
34976
0
        }
34977
        /* Check if we were at a tail call instruction. If so, do implicit return */
34978
0
        if ((*pc & 0xFF) == JOP_TAILCALL) {
34979
            /* Tail call resume */
34980
0
            int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
34981
0
            janet_fiber_popframe(fiber);
34982
0
            if (entrance_frame) {
34983
0
                fiber->flags &= ~JANET_FIBER_FLAG_MASK;
34984
0
                vm_return(JANET_SIGNAL_OK, in);
34985
0
            }
34986
0
            vm_restore();
34987
0
        }
34988
0
    }
34989
34990
0
    if (!(fiber->flags & JANET_FIBER_RESUME_NO_USEVAL)) stack[A] = in;
34991
0
    if (!(fiber->flags & JANET_FIBER_RESUME_NO_SKIP)) pc++;
34992
34993
0
    uint8_t first_opcode = *pc & ((fiber->flags & JANET_FIBER_BREAKPOINT) ? 0x7F : 0xFF);
34994
34995
0
    fiber->flags &= ~JANET_FIBER_FLAG_MASK;
34996
34997
    /* Main interpreter loop. Semantically is a switch on
34998
     * (*pc & 0xFF) inside of an infinite loop. */
34999
0
    VM_START();
35000
35001
0
    VM_DEFAULT();
35002
0
    fiber->flags |= JANET_FIBER_BREAKPOINT | JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
35003
0
    vm_return(JANET_SIGNAL_DEBUG, janet_wrap_nil());
35004
35005
0
    VM_OP(JOP_NOOP)
35006
0
    vm_pcnext();
35007
35008
0
    VM_OP(JOP_ERROR)
35009
0
    vm_return(JANET_SIGNAL_ERROR, stack[A]);
35010
35011
0
    VM_OP(JOP_TYPECHECK)
35012
0
    vm_assert_types(stack[A], E);
35013
0
    vm_pcnext();
35014
35015
0
    VM_OP(JOP_RETURN) {
35016
0
        Janet retval = stack[D];
35017
0
        int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35018
0
        janet_fiber_popframe(fiber);
35019
0
        if (entrance_frame) vm_return_no_restore(JANET_SIGNAL_OK, retval);
35020
0
        vm_restore();
35021
0
        stack[A] = retval;
35022
0
        vm_checkgc_pcnext();
35023
0
    }
35024
35025
0
    VM_OP(JOP_RETURN_NIL) {
35026
0
        Janet retval = janet_wrap_nil();
35027
0
        int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35028
0
        janet_fiber_popframe(fiber);
35029
0
        if (entrance_frame) vm_return_no_restore(JANET_SIGNAL_OK, retval);
35030
0
        vm_restore();
35031
0
        stack[A] = retval;
35032
0
        vm_checkgc_pcnext();
35033
0
    }
35034
35035
0
    VM_OP(JOP_ADD_IMMEDIATE)
35036
0
    vm_binop_immediate(+);
35037
35038
0
    VM_OP(JOP_ADD)
35039
0
    vm_binop(+);
35040
35041
0
    VM_OP(JOP_SUBTRACT_IMMEDIATE)
35042
0
    vm_binop_immediate(-);
35043
35044
0
    VM_OP(JOP_SUBTRACT)
35045
0
    vm_binop(-);
35046
35047
0
    VM_OP(JOP_MULTIPLY_IMMEDIATE)
35048
0
    vm_binop_immediate(*);
35049
35050
0
    VM_OP(JOP_MULTIPLY)
35051
0
    vm_binop(*);
35052
35053
0
    VM_OP(JOP_DIVIDE_IMMEDIATE)
35054
0
    vm_binop_immediate( /);
35055
35056
0
    VM_OP(JOP_DIVIDE)
35057
0
    vm_binop( /);
35058
35059
0
    VM_OP(JOP_DIVIDE_FLOOR) {
35060
0
        Janet op1 = stack[B];
35061
0
        Janet op2 = stack[C];
35062
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
35063
0
            double x1 = janet_unwrap_number(op1);
35064
0
            double x2 = janet_unwrap_number(op2);
35065
0
            stack[A] = janet_wrap_number(floor(x1 / x2));
35066
0
            vm_pcnext();
35067
0
        } else {
35068
0
            vm_commit();
35069
0
            stack[A] = janet_binop_call("div", "rdiv", op1, op2);
35070
0
            vm_checkgc_pcnext();
35071
0
        }
35072
0
    }
35073
35074
0
    VM_OP(JOP_MODULO) {
35075
0
        Janet op1 = stack[B];
35076
0
        Janet op2 = stack[C];
35077
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
35078
0
            double x1 = janet_unwrap_number(op1);
35079
0
            double x2 = janet_unwrap_number(op2);
35080
0
            if (x2 == 0) {
35081
0
                stack[A] = janet_wrap_number(x1);
35082
0
            } else {
35083
0
                double intres = x2 * floor(x1 / x2);
35084
0
                stack[A] = janet_wrap_number(x1 - intres);
35085
0
            }
35086
0
            vm_pcnext();
35087
0
        } else {
35088
0
            vm_commit();
35089
0
            stack[A] = janet_binop_call("mod", "rmod", op1, op2);
35090
0
            vm_checkgc_pcnext();
35091
0
        }
35092
0
    }
35093
35094
0
    VM_OP(JOP_REMAINDER) {
35095
0
        Janet op1 = stack[B];
35096
0
        Janet op2 = stack[C];
35097
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
35098
0
            double x1 = janet_unwrap_number(op1);
35099
0
            double x2 = janet_unwrap_number(op2);
35100
0
            stack[A] = janet_wrap_number(fmod(x1, x2));
35101
0
            vm_pcnext();
35102
0
        } else {
35103
0
            vm_commit();
35104
0
            stack[A] = janet_binop_call("%", "r%", op1, op2);
35105
0
            vm_checkgc_pcnext();
35106
0
        }
35107
0
    }
35108
35109
0
    VM_OP(JOP_BAND)
35110
0
    vm_bitop(&);
35111
35112
0
    VM_OP(JOP_BOR)
35113
0
    vm_bitop( |);
35114
35115
0
    VM_OP(JOP_BXOR)
35116
0
    vm_bitop(^);
35117
35118
0
    VM_OP(JOP_BNOT) {
35119
0
        Janet op = stack[E];
35120
0
        if (janet_checktype(op, JANET_NUMBER)) {
35121
0
            stack[A] = janet_wrap_integer(~janet_unwrap_integer(op));
35122
0
            vm_pcnext();
35123
0
        } else {
35124
0
            vm_commit();
35125
0
            stack[A] = janet_unary_call("~", op);
35126
0
            vm_checkgc_pcnext();
35127
0
        }
35128
0
    }
35129
35130
0
    VM_OP(JOP_SHIFT_RIGHT_UNSIGNED)
35131
0
    vm_bitopu( >>);
35132
35133
0
    VM_OP(JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE)
35134
0
    vm_bitopu_immediate( >>);
35135
35136
0
    VM_OP(JOP_SHIFT_RIGHT)
35137
0
    vm_bitop( >>);
35138
35139
0
    VM_OP(JOP_SHIFT_RIGHT_IMMEDIATE)
35140
0
    vm_bitop_immediate( >>);
35141
35142
0
    VM_OP(JOP_SHIFT_LEFT)
35143
0
    vm_bitop( <<);
35144
35145
0
    VM_OP(JOP_SHIFT_LEFT_IMMEDIATE)
35146
0
    vm_bitop_immediate( <<);
35147
35148
0
    VM_OP(JOP_MOVE_NEAR)
35149
0
    stack[A] = stack[E];
35150
0
    vm_pcnext();
35151
35152
0
    VM_OP(JOP_MOVE_FAR)
35153
0
    stack[E] = stack[A];
35154
0
    vm_pcnext();
35155
35156
0
    VM_OP(JOP_JUMP)
35157
0
    vm_maybe_auto_suspend(DS <= 0);
35158
0
    pc += DS;
35159
0
    vm_next();
35160
35161
0
    VM_OP(JOP_JUMP_IF)
35162
0
    if (janet_truthy(stack[A])) {
35163
0
        vm_maybe_auto_suspend(ES <= 0);
35164
0
        pc += ES;
35165
0
    } else {
35166
0
        pc++;
35167
0
    }
35168
0
    vm_next();
35169
35170
0
    VM_OP(JOP_JUMP_IF_NOT)
35171
0
    if (janet_truthy(stack[A])) {
35172
0
        pc++;
35173
0
    } else {
35174
0
        vm_maybe_auto_suspend(ES <= 0);
35175
0
        pc += ES;
35176
0
    }
35177
0
    vm_next();
35178
35179
0
    VM_OP(JOP_JUMP_IF_NIL)
35180
0
    if (janet_checktype(stack[A], JANET_NIL)) {
35181
0
        vm_maybe_auto_suspend(ES <= 0);
35182
0
        pc += ES;
35183
0
    } else {
35184
0
        pc++;
35185
0
    }
35186
0
    vm_next();
35187
35188
0
    VM_OP(JOP_JUMP_IF_NOT_NIL)
35189
0
    if (janet_checktype(stack[A], JANET_NIL)) {
35190
0
        pc++;
35191
0
    } else {
35192
0
        vm_maybe_auto_suspend(ES <= 0);
35193
0
        pc += ES;
35194
0
    }
35195
0
    vm_next();
35196
35197
0
    VM_OP(JOP_LESS_THAN)
35198
0
    vm_compop( <);
35199
35200
0
    VM_OP(JOP_LESS_THAN_EQUAL)
35201
0
    vm_compop( <=);
35202
35203
0
    VM_OP(JOP_LESS_THAN_IMMEDIATE)
35204
0
    vm_compop_imm( <);
35205
35206
0
    VM_OP(JOP_GREATER_THAN)
35207
0
    vm_compop( >);
35208
35209
0
    VM_OP(JOP_GREATER_THAN_EQUAL)
35210
0
    vm_compop( >=);
35211
35212
0
    VM_OP(JOP_GREATER_THAN_IMMEDIATE)
35213
0
    vm_compop_imm( >);
35214
35215
0
    VM_OP(JOP_EQUALS)
35216
0
    stack[A] = janet_wrap_boolean(janet_equals(stack[B], stack[C]));
35217
0
    vm_pcnext();
35218
35219
0
    VM_OP(JOP_EQUALS_IMMEDIATE)
35220
0
    stack[A] = janet_wrap_boolean(janet_checktype(stack[B], JANET_NUMBER) && (janet_unwrap_number(stack[B]) == (double) CS));
35221
0
    vm_pcnext();
35222
35223
0
    VM_OP(JOP_NOT_EQUALS)
35224
0
    stack[A] = janet_wrap_boolean(!janet_equals(stack[B], stack[C]));
35225
0
    vm_pcnext();
35226
35227
0
    VM_OP(JOP_NOT_EQUALS_IMMEDIATE)
35228
0
    stack[A] = janet_wrap_boolean(!janet_checktype(stack[B], JANET_NUMBER) || (janet_unwrap_number(stack[B]) != (double) CS));
35229
0
    vm_pcnext();
35230
35231
0
    VM_OP(JOP_COMPARE)
35232
0
    stack[A] = janet_wrap_integer(janet_compare(stack[B], stack[C]));
35233
0
    vm_pcnext();
35234
35235
0
    VM_OP(JOP_NEXT)
35236
0
    vm_commit();
35237
0
    {
35238
0
        Janet temp = janet_next_impl(stack[B], stack[C], 1);
35239
0
        vm_restore();
35240
0
        stack[A] = temp;
35241
0
    }
35242
0
    vm_pcnext();
35243
35244
0
    VM_OP(JOP_LOAD_NIL)
35245
0
    stack[D] = janet_wrap_nil();
35246
0
    vm_pcnext();
35247
35248
0
    VM_OP(JOP_LOAD_TRUE)
35249
0
    stack[D] = janet_wrap_true();
35250
0
    vm_pcnext();
35251
35252
0
    VM_OP(JOP_LOAD_FALSE)
35253
0
    stack[D] = janet_wrap_false();
35254
0
    vm_pcnext();
35255
35256
0
    VM_OP(JOP_LOAD_INTEGER)
35257
0
    stack[A] = janet_wrap_integer(ES);
35258
0
    vm_pcnext();
35259
35260
0
    VM_OP(JOP_LOAD_CONSTANT) {
35261
0
        int32_t cindex = (int32_t)E;
35262
0
        vm_assert(cindex < func->def->constants_length, "invalid constant");
35263
0
        stack[A] = func->def->constants[cindex];
35264
0
        vm_pcnext();
35265
0
    }
35266
35267
0
    VM_OP(JOP_LOAD_SELF)
35268
0
    stack[D] = janet_wrap_function(func);
35269
0
    vm_pcnext();
35270
35271
0
    VM_OP(JOP_LOAD_UPVALUE) {
35272
0
        int32_t eindex = B;
35273
0
        int32_t vindex = C;
35274
0
        JanetFuncEnv *env;
35275
0
        vm_assert(func->def->environments_length > eindex, "invalid upvalue environment");
35276
0
        env = func->envs[eindex];
35277
0
        vm_assert(env->length > vindex, "invalid upvalue index");
35278
0
        vm_assert(janet_env_valid(env), "invalid upvalue environment");
35279
0
        if (env->offset > 0) {
35280
            /* On stack */
35281
0
            stack[A] = env->as.fiber->data[env->offset + vindex];
35282
0
        } else {
35283
            /* Off stack */
35284
0
            stack[A] = env->as.values[vindex];
35285
0
        }
35286
0
        vm_pcnext();
35287
0
    }
35288
35289
0
    VM_OP(JOP_SET_UPVALUE) {
35290
0
        int32_t eindex = B;
35291
0
        int32_t vindex = C;
35292
0
        JanetFuncEnv *env;
35293
0
        vm_assert(func->def->environments_length > eindex, "invalid upvalue environment");
35294
0
        env = func->envs[eindex];
35295
0
        vm_assert(env->length > vindex, "invalid upvalue index");
35296
0
        vm_assert(janet_env_valid(env), "invalid upvalue environment");
35297
0
        if (env->offset > 0) {
35298
0
            env->as.fiber->data[env->offset + vindex] = stack[A];
35299
0
        } else {
35300
0
            env->as.values[vindex] = stack[A];
35301
0
        }
35302
0
        vm_pcnext();
35303
0
    }
35304
35305
0
    VM_OP(JOP_CLOSURE) {
35306
0
        JanetFuncDef *fd;
35307
0
        JanetFunction *fn;
35308
0
        int32_t elen;
35309
0
        int32_t defindex = (int32_t)E;
35310
0
        vm_assert(defindex < func->def->defs_length, "invalid funcdef");
35311
0
        fd = func->def->defs[defindex];
35312
0
        elen = fd->environments_length;
35313
0
        fn = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction) + ((size_t) elen * sizeof(JanetFuncEnv *)));
35314
0
        fn->def = fd;
35315
0
        {
35316
0
            int32_t i;
35317
0
            for (i = 0; i < elen; ++i) {
35318
0
                int32_t inherit = fd->environments[i];
35319
0
                if (inherit == -1 || inherit >= func->def->environments_length) {
35320
0
                    JanetStackFrame *frame = janet_stack_frame(stack);
35321
0
                    if (!frame->env) {
35322
                        /* Lazy capture of current stack frame */
35323
0
                        JanetFuncEnv *env = janet_gcalloc(JANET_MEMORY_FUNCENV, sizeof(JanetFuncEnv));
35324
0
                        env->offset = fiber->frame;
35325
0
                        env->as.fiber = fiber;
35326
0
                        env->length = func->def->slotcount;
35327
0
                        frame->env = env;
35328
0
                    }
35329
0
                    fn->envs[i] = frame->env;
35330
0
                } else {
35331
0
                    fn->envs[i] = func->envs[inherit];
35332
0
                }
35333
0
            }
35334
0
        }
35335
0
        stack[A] = janet_wrap_function(fn);
35336
0
        vm_checkgc_pcnext();
35337
0
    }
35338
35339
0
    VM_OP(JOP_PUSH)
35340
0
    janet_fiber_push(fiber, stack[D]);
35341
0
    stack = fiber->data + fiber->frame;
35342
0
    vm_checkgc_pcnext();
35343
35344
0
    VM_OP(JOP_PUSH_2)
35345
0
    janet_fiber_push2(fiber, stack[A], stack[E]);
35346
0
    stack = fiber->data + fiber->frame;
35347
0
    vm_checkgc_pcnext();
35348
35349
0
    VM_OP(JOP_PUSH_3)
35350
0
    janet_fiber_push3(fiber, stack[A], stack[B], stack[C]);
35351
0
    stack = fiber->data + fiber->frame;
35352
0
    vm_checkgc_pcnext();
35353
35354
0
    VM_OP(JOP_PUSH_ARRAY) {
35355
0
        const Janet *vals;
35356
0
        int32_t len;
35357
0
        if (janet_indexed_view(stack[D], &vals, &len)) {
35358
0
            janet_fiber_pushn(fiber, vals, len);
35359
0
        } else {
35360
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_INDEXED, stack[D]);
35361
0
        }
35362
0
    }
35363
0
    stack = fiber->data + fiber->frame;
35364
0
    vm_checkgc_pcnext();
35365
35366
0
    VM_OP(JOP_CALL) {
35367
0
        vm_maybe_auto_suspend(1);
35368
0
        Janet callee = stack[E];
35369
0
        if (fiber->stacktop > fiber->maxstack) {
35370
0
            vm_throw("stack overflow");
35371
0
        }
35372
0
        if (janet_checktype(callee, JANET_KEYWORD)) {
35373
0
            vm_commit();
35374
0
            callee = resolve_method(callee, fiber);
35375
0
        }
35376
0
        if (janet_checktype(callee, JANET_FUNCTION)) {
35377
0
            func = janet_unwrap_function(callee);
35378
0
            if (func->gc.flags & JANET_FUNCFLAG_TRACE) {
35379
0
                vm_do_trace(func, fiber->stacktop - fiber->stackstart, fiber->data + fiber->stackstart);
35380
0
            }
35381
0
            vm_commit();
35382
0
            if (janet_fiber_funcframe(fiber, func)) {
35383
0
                int32_t n = fiber->stacktop - fiber->stackstart;
35384
0
                janet_panicf("%v called with %d argument%s, expected %d",
35385
0
                             callee, n, n == 1 ? "" : "s", func->def->arity);
35386
0
            }
35387
0
            stack = fiber->data + fiber->frame;
35388
0
            pc = func->def->bytecode;
35389
0
            vm_checkgc_next();
35390
0
        } else if (janet_checktype(callee, JANET_CFUNCTION)) {
35391
0
            vm_commit();
35392
0
            int32_t argc = fiber->stacktop - fiber->stackstart;
35393
0
            janet_fiber_cframe(fiber, janet_unwrap_cfunction(callee));
35394
0
            Janet ret = janet_unwrap_cfunction(callee)(argc, fiber->data + fiber->frame);
35395
0
            janet_fiber_popframe(fiber);
35396
0
            stack = fiber->data + fiber->frame;
35397
0
            stack[A] = ret;
35398
0
            vm_checkgc_pcnext();
35399
0
        } else {
35400
0
            vm_commit();
35401
0
            stack[A] = call_nonfn(fiber, callee);
35402
0
            vm_pcnext();
35403
0
        }
35404
0
    }
35405
35406
0
    VM_OP(JOP_TAILCALL) {
35407
0
        vm_maybe_auto_suspend(1);
35408
0
        Janet callee = stack[D];
35409
0
        if (fiber->stacktop > fiber->maxstack) {
35410
0
            vm_throw("stack overflow");
35411
0
        }
35412
0
        if (janet_checktype(callee, JANET_KEYWORD)) {
35413
0
            vm_commit();
35414
0
            callee = resolve_method(callee, fiber);
35415
0
        }
35416
0
        if (janet_checktype(callee, JANET_FUNCTION)) {
35417
0
            func = janet_unwrap_function(callee);
35418
0
            if (func->gc.flags & JANET_FUNCFLAG_TRACE) {
35419
0
                vm_do_trace(func, fiber->stacktop - fiber->stackstart, fiber->data + fiber->stackstart);
35420
0
            }
35421
0
            if (janet_fiber_funcframe_tail(fiber, func)) {
35422
0
                janet_stack_frame(fiber->data + fiber->frame)->pc = pc;
35423
0
                int32_t n = fiber->stacktop - fiber->stackstart;
35424
0
                janet_panicf("%v called with %d argument%s, expected %d",
35425
0
                             callee, n, n == 1 ? "" : "s", func->def->arity);
35426
0
            }
35427
0
            stack = fiber->data + fiber->frame;
35428
0
            pc = func->def->bytecode;
35429
0
            vm_checkgc_next();
35430
0
        } else {
35431
0
            Janet retreg;
35432
0
            int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35433
0
            vm_commit();
35434
0
            if (janet_checktype(callee, JANET_CFUNCTION)) {
35435
0
                int32_t argc = fiber->stacktop - fiber->stackstart;
35436
0
                janet_fiber_cframe(fiber, janet_unwrap_cfunction(callee));
35437
0
                retreg = janet_unwrap_cfunction(callee)(argc, fiber->data + fiber->frame);
35438
0
                janet_fiber_popframe(fiber);
35439
0
            } else {
35440
0
                retreg = call_nonfn(fiber, callee);
35441
0
            }
35442
0
            janet_fiber_popframe(fiber);
35443
0
            if (entrance_frame) {
35444
0
                vm_return_no_restore(JANET_SIGNAL_OK, retreg);
35445
0
            }
35446
0
            vm_restore();
35447
0
            stack[A] = retreg;
35448
0
            vm_checkgc_pcnext();
35449
0
        }
35450
0
    }
35451
35452
0
    VM_OP(JOP_RESUME) {
35453
0
        Janet retreg;
35454
0
        vm_maybe_auto_suspend(1);
35455
0
        vm_assert_type(stack[B], JANET_FIBER);
35456
0
        JanetFiber *child = janet_unwrap_fiber(stack[B]);
35457
0
        if (janet_check_can_resume(child, &retreg, 0)) {
35458
0
            vm_commit();
35459
0
            janet_panicv(retreg);
35460
0
        }
35461
0
        fiber->child = child;
35462
0
        JanetSignal sig = janet_continue_no_check(child, stack[C], &retreg);
35463
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
35464
0
            vm_return(sig, retreg);
35465
0
        }
35466
0
        fiber->child = NULL;
35467
0
        stack = fiber->data + fiber->frame;
35468
0
        stack[A] = retreg;
35469
0
        vm_checkgc_pcnext();
35470
0
    }
35471
35472
0
    VM_OP(JOP_SIGNAL) {
35473
0
        int32_t s = C;
35474
0
        if (s > JANET_SIGNAL_USER9) s = JANET_SIGNAL_USER9;
35475
0
        if (s < 0) s = 0;
35476
0
        vm_return(s, stack[B]);
35477
0
    }
35478
35479
0
    VM_OP(JOP_PROPAGATE) {
35480
0
        Janet fv = stack[C];
35481
0
        vm_assert_type(fv, JANET_FIBER);
35482
0
        JanetFiber *f = janet_unwrap_fiber(fv);
35483
0
        JanetFiberStatus sub_status = janet_fiber_status(f);
35484
0
        if (sub_status > JANET_STATUS_USER9) {
35485
0
            vm_commit();
35486
0
            janet_panicf("cannot propagate from fiber with status :%s",
35487
0
                         janet_status_names[sub_status]);
35488
0
        }
35489
0
        fiber->child = f;
35490
0
        vm_return((int) sub_status, stack[B]);
35491
0
    }
35492
35493
0
    VM_OP(JOP_CANCEL) {
35494
0
        Janet retreg;
35495
0
        vm_assert_type(stack[B], JANET_FIBER);
35496
0
        JanetFiber *child = janet_unwrap_fiber(stack[B]);
35497
0
        if (janet_check_can_resume(child, &retreg, 1)) {
35498
0
            vm_commit();
35499
0
            janet_panicv(retreg);
35500
0
        }
35501
0
        fiber->child = child;
35502
0
        JanetSignal sig = janet_continue_signal(child, stack[C], &retreg, JANET_SIGNAL_ERROR);
35503
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
35504
0
            vm_return(sig, retreg);
35505
0
        }
35506
0
        fiber->child = NULL;
35507
0
        stack = fiber->data + fiber->frame;
35508
0
        stack[A] = retreg;
35509
0
        vm_checkgc_pcnext();
35510
0
    }
35511
35512
0
    VM_OP(JOP_PUT)
35513
0
    vm_commit();
35514
0
    fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL;
35515
0
    janet_put(stack[A], stack[B], stack[C]);
35516
0
    fiber->flags &= ~JANET_FIBER_RESUME_NO_USEVAL;
35517
0
    vm_checkgc_pcnext();
35518
35519
0
    VM_OP(JOP_PUT_INDEX)
35520
0
    vm_commit();
35521
0
    fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL;
35522
0
    janet_putindex(stack[A], C, stack[B]);
35523
0
    fiber->flags &= ~JANET_FIBER_RESUME_NO_USEVAL;
35524
0
    vm_checkgc_pcnext();
35525
35526
0
    VM_OP(JOP_IN)
35527
0
    vm_commit();
35528
0
    stack[A] = janet_in(stack[B], stack[C]);
35529
0
    vm_pcnext();
35530
35531
0
    VM_OP(JOP_GET)
35532
0
    vm_commit();
35533
0
    stack[A] = janet_get(stack[B], stack[C]);
35534
0
    vm_pcnext();
35535
35536
0
    VM_OP(JOP_GET_INDEX)
35537
0
    vm_commit();
35538
0
    stack[A] = janet_getindex(stack[B], C);
35539
0
    vm_pcnext();
35540
35541
0
    VM_OP(JOP_LENGTH)
35542
0
    vm_commit();
35543
0
    stack[A] = janet_lengthv(stack[E]);
35544
0
    vm_pcnext();
35545
35546
0
    VM_OP(JOP_MAKE_ARRAY) {
35547
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35548
0
        Janet *mem = fiber->data + fiber->stackstart;
35549
0
        stack[D] = janet_wrap_array(janet_array_n(mem, count));
35550
0
        fiber->stacktop = fiber->stackstart;
35551
0
        vm_checkgc_pcnext();
35552
0
    }
35553
35554
0
    VM_OP(JOP_MAKE_TUPLE)
35555
    /* fallthrough */
35556
0
    VM_OP(JOP_MAKE_BRACKET_TUPLE) {
35557
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35558
0
        Janet *mem = fiber->data + fiber->stackstart;
35559
0
        const Janet *tup = janet_tuple_n(mem, count);
35560
0
        if (opcode == JOP_MAKE_BRACKET_TUPLE)
35561
0
            janet_tuple_flag(tup) |= JANET_TUPLE_FLAG_BRACKETCTOR;
35562
0
        stack[D] = janet_wrap_tuple(tup);
35563
0
        fiber->stacktop = fiber->stackstart;
35564
0
        vm_checkgc_pcnext();
35565
0
    }
35566
35567
0
    VM_OP(JOP_MAKE_TABLE) {
35568
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35569
0
        Janet *mem = fiber->data + fiber->stackstart;
35570
0
        if (count & 1) {
35571
0
            vm_commit();
35572
0
            janet_panicf("expected even number of arguments to table constructor, got %d", count);
35573
0
        }
35574
0
        JanetTable *table = janet_table(count / 2);
35575
0
        for (int32_t i = 0; i < count; i += 2)
35576
0
            janet_table_put(table, mem[i], mem[i + 1]);
35577
0
        stack[D] = janet_wrap_table(table);
35578
0
        fiber->stacktop = fiber->stackstart;
35579
0
        vm_checkgc_pcnext();
35580
0
    }
35581
35582
0
    VM_OP(JOP_MAKE_STRUCT) {
35583
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35584
0
        Janet *mem = fiber->data + fiber->stackstart;
35585
0
        if (count & 1) {
35586
0
            vm_commit();
35587
0
            janet_panicf("expected even number of arguments to struct constructor, got %d", count);
35588
0
        }
35589
0
        JanetKV *st = janet_struct_begin(count / 2);
35590
0
        for (int32_t i = 0; i < count; i += 2)
35591
0
            janet_struct_put(st, mem[i], mem[i + 1]);
35592
0
        stack[D] = janet_wrap_struct(janet_struct_end(st));
35593
0
        fiber->stacktop = fiber->stackstart;
35594
0
        vm_checkgc_pcnext();
35595
0
    }
35596
35597
0
    VM_OP(JOP_MAKE_STRING) {
35598
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35599
0
        Janet *mem = fiber->data + fiber->stackstart;
35600
0
        JanetBuffer buffer;
35601
0
        janet_buffer_init(&buffer, 10 * count);
35602
0
        for (int32_t i = 0; i < count; i++)
35603
0
            janet_to_string_b(&buffer, mem[i]);
35604
0
        stack[D] = janet_stringv(buffer.data, buffer.count);
35605
0
        janet_buffer_deinit(&buffer);
35606
0
        fiber->stacktop = fiber->stackstart;
35607
0
        vm_checkgc_pcnext();
35608
0
    }
35609
35610
0
    VM_OP(JOP_MAKE_BUFFER) {
35611
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35612
0
        Janet *mem = fiber->data + fiber->stackstart;
35613
0
        JanetBuffer *buffer = janet_buffer(10 * count);
35614
0
        for (int32_t i = 0; i < count; i++)
35615
0
            janet_to_string_b(buffer, mem[i]);
35616
0
        stack[D] = janet_wrap_buffer(buffer);
35617
0
        fiber->stacktop = fiber->stackstart;
35618
0
        vm_checkgc_pcnext();
35619
0
    }
35620
35621
0
    VM_END()
35622
0
}
35623
35624
/*
35625
 * Execute a single instruction in the fiber. Does this by inspecting
35626
 * the fiber, setting a breakpoint at the next instruction, executing, and
35627
 * resetting breakpoints to how they were prior. Yes, it's a bit hacky.
35628
 */
35629
0
JanetSignal janet_step(JanetFiber *fiber, Janet in, Janet *out) {
35630
    /* No finished or currently alive fibers. */
35631
0
    JanetFiberStatus status = janet_fiber_status(fiber);
35632
0
    if (status == JANET_STATUS_ALIVE ||
35633
0
            status == JANET_STATUS_DEAD ||
35634
0
            status == JANET_STATUS_ERROR) {
35635
0
        janet_panicf("cannot step fiber with status :%s", janet_status_names[status]);
35636
0
    }
35637
35638
    /* Get PC for setting breakpoints */
35639
0
    uint32_t *pc = janet_stack_frame(fiber->data + fiber->frame)->pc;
35640
35641
    /* Check current opcode (sans debug flag). This tells us where the next or next two candidate
35642
     * instructions will be. Usually it's the next instruction in memory,
35643
     * but for branching instructions it is also the target of the branch. */
35644
0
    uint32_t *nexta = NULL, *nextb = NULL, olda = 0, oldb = 0;
35645
35646
    /* Set temporary breakpoints */
35647
0
    switch (*pc & 0x7F) {
35648
0
        default:
35649
0
            nexta = pc + 1;
35650
0
            break;
35651
        /* These we just ignore for now. Supporting them means
35652
         * we could step into and out of functions (including JOP_CALL). */
35653
0
        case JOP_RETURN_NIL:
35654
0
        case JOP_RETURN:
35655
0
        case JOP_ERROR:
35656
0
        case JOP_TAILCALL:
35657
0
            break;
35658
0
        case JOP_JUMP:
35659
0
            nexta = pc + DS;
35660
0
            break;
35661
0
        case JOP_JUMP_IF:
35662
0
        case JOP_JUMP_IF_NOT:
35663
0
            nexta = pc + 1;
35664
0
            nextb = pc + ES;
35665
0
            break;
35666
0
    }
35667
0
    if (nexta) {
35668
0
        olda = *nexta;
35669
0
        *nexta |= 0x80;
35670
0
    }
35671
0
    if (nextb) {
35672
0
        oldb = *nextb;
35673
0
        *nextb |= 0x80;
35674
0
    }
35675
35676
    /* Go */
35677
0
    JanetSignal signal = janet_continue(fiber, in, out);
35678
35679
    /* Restore */
35680
0
    if (nexta) *nexta = olda;
35681
0
    if (nextb) *nextb = oldb;
35682
35683
0
    return signal;
35684
0
}
35685
35686
0
static Janet void_cfunction(int32_t argc, Janet *argv) {
35687
0
    (void) argc;
35688
0
    (void) argv;
35689
0
    janet_panic("placeholder");
35690
0
}
35691
35692
0
Janet janet_call(JanetFunction *fun, int32_t argc, const Janet *argv) {
35693
    /* Check entry conditions */
35694
0
    if (!janet_vm.fiber)
35695
0
        janet_panic("janet_call failed because there is no current fiber");
35696
0
    if (janet_vm.stackn >= JANET_RECURSION_GUARD)
35697
0
        janet_panic("C stack recursed too deeply");
35698
35699
    /* Dirty stack */
35700
0
    int32_t dirty_stack = janet_vm.fiber->stacktop - janet_vm.fiber->stackstart;
35701
0
    if (dirty_stack) {
35702
0
        janet_fiber_cframe(janet_vm.fiber, void_cfunction);
35703
0
    }
35704
35705
    /* Tracing */
35706
0
    if (fun->gc.flags & JANET_FUNCFLAG_TRACE) {
35707
0
        janet_vm.stackn++;
35708
0
        vm_do_trace(fun, argc, argv);
35709
0
        janet_vm.stackn--;
35710
0
    }
35711
35712
    /* Push frame */
35713
0
    janet_fiber_pushn(janet_vm.fiber, argv, argc);
35714
0
    if (janet_fiber_funcframe(janet_vm.fiber, fun)) {
35715
0
        int32_t min = fun->def->min_arity;
35716
0
        int32_t max = fun->def->max_arity;
35717
0
        Janet funv = janet_wrap_function(fun);
35718
0
        if (min == max && min != argc)
35719
0
            janet_panicf("arity mismatch in %v, expected %d, got %d", funv, min, argc);
35720
0
        if (min >= 0 && argc < min)
35721
0
            janet_panicf("arity mismatch in %v, expected at least %d, got %d", funv, min, argc);
35722
0
        janet_panicf("arity mismatch in %v, expected at most %d, got %d", funv, max, argc);
35723
0
    }
35724
0
    janet_fiber_frame(janet_vm.fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
35725
35726
    /* Set up */
35727
0
    int32_t oldn = janet_vm.stackn++;
35728
0
    int handle = janet_gclock();
35729
35730
    /* Run vm */
35731
0
    janet_vm.fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
35732
0
    int old_coerce_error = janet_vm.coerce_error;
35733
0
    janet_vm.coerce_error = 1;
35734
0
    JanetSignal signal = run_vm(janet_vm.fiber, janet_wrap_nil());
35735
0
    janet_vm.coerce_error = old_coerce_error;
35736
35737
    /* Teardown */
35738
0
    janet_vm.stackn = oldn;
35739
0
    janet_gcunlock(handle);
35740
0
    if (dirty_stack) {
35741
0
        janet_fiber_popframe(janet_vm.fiber);
35742
0
        janet_vm.fiber->stacktop += dirty_stack;
35743
0
    }
35744
35745
0
    if (signal != JANET_SIGNAL_OK) {
35746
        /* Should match logic in janet_signalv */
35747
0
#ifdef JANET_EV
35748
0
        if (janet_vm.root_fiber != NULL && signal == JANET_SIGNAL_EVENT) {
35749
0
            janet_vm.root_fiber->sched_id++;
35750
0
        }
35751
0
#endif
35752
0
        if (signal != JANET_SIGNAL_ERROR) {
35753
0
            *janet_vm.return_reg = janet_wrap_string(janet_formatc("%v coerced from %s to error", *janet_vm.return_reg, janet_signal_names[signal]));
35754
0
        }
35755
0
        janet_panicv(*janet_vm.return_reg);
35756
0
    }
35757
35758
0
    return *janet_vm.return_reg;
35759
0
}
35760
35761
0
static JanetSignal janet_check_can_resume(JanetFiber *fiber, Janet *out, int is_cancel) {
35762
    /* Check conditions */
35763
0
    JanetFiberStatus old_status = janet_fiber_status(fiber);
35764
0
    if (janet_vm.stackn >= JANET_RECURSION_GUARD) {
35765
0
        janet_fiber_set_status(fiber, JANET_STATUS_ERROR);
35766
0
        *out = janet_cstringv("C stack recursed too deeply");
35767
0
        return JANET_SIGNAL_ERROR;
35768
0
    }
35769
    /* If a "task" fiber is trying to be used as a normal fiber, detect that. See bug #920.
35770
     * Fibers must be marked as root fibers manually, or by the ev scheduler. */
35771
0
    if (janet_vm.fiber != NULL && (fiber->gc.flags & JANET_FIBER_FLAG_ROOT)) {
35772
0
#ifdef JANET_EV
35773
0
        *out = janet_cstringv(is_cancel
35774
0
                              ? "cannot cancel root fiber, use ev/cancel"
35775
0
                              : "cannot resume root fiber, use ev/go");
35776
#else
35777
        *out = janet_cstringv(is_cancel
35778
                              ? "cannot cancel root fiber"
35779
                              : "cannot resume root fiber");
35780
#endif
35781
0
        return JANET_SIGNAL_ERROR;
35782
0
    }
35783
0
    if (old_status == JANET_STATUS_ALIVE ||
35784
0
            old_status == JANET_STATUS_DEAD ||
35785
0
            (old_status >= JANET_STATUS_USER0 && old_status <= JANET_STATUS_USER4) ||
35786
0
            old_status == JANET_STATUS_ERROR) {
35787
0
        const uint8_t *str = janet_formatc("cannot resume fiber with status :%s",
35788
0
                                           janet_status_names[old_status]);
35789
0
        *out = janet_wrap_string(str);
35790
0
        return JANET_SIGNAL_ERROR;
35791
0
    }
35792
0
    return JANET_SIGNAL_OK;
35793
0
}
35794
35795
0
void janet_try_init(JanetTryState *state) {
35796
0
    state->stackn = janet_vm.stackn++;
35797
0
    state->gc_handle = janet_vm.gc_suspend;
35798
0
    state->vm_fiber = janet_vm.fiber;
35799
0
    state->vm_jmp_buf = janet_vm.signal_buf;
35800
0
    state->vm_return_reg = janet_vm.return_reg;
35801
0
    state->coerce_error = janet_vm.coerce_error;
35802
0
    janet_vm.return_reg = &(state->payload);
35803
0
    janet_vm.signal_buf = &(state->buf);
35804
0
    janet_vm.coerce_error = 0;
35805
0
}
35806
35807
0
void janet_restore(JanetTryState *state) {
35808
0
    janet_vm.stackn = state->stackn;
35809
0
    janet_vm.gc_suspend = state->gc_handle;
35810
0
    janet_vm.fiber = state->vm_fiber;
35811
0
    janet_vm.signal_buf = state->vm_jmp_buf;
35812
0
    janet_vm.return_reg = state->vm_return_reg;
35813
0
    janet_vm.coerce_error = state->coerce_error;
35814
0
}
35815
35816
0
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out) {
35817
35818
0
    JanetFiberStatus old_status = janet_fiber_status(fiber);
35819
35820
0
#ifdef JANET_EV
35821
0
    janet_fiber_did_resume(fiber);
35822
0
#endif
35823
35824
    /* Clear last value */
35825
0
    fiber->last_value = janet_wrap_nil();
35826
35827
    /* Continue child fiber if it exists */
35828
0
    if (fiber->child) {
35829
0
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
35830
0
        JanetFiber *child = fiber->child;
35831
0
        uint32_t instr = (janet_stack_frame(fiber->data + fiber->frame)->pc)[0];
35832
0
        janet_vm.stackn++;
35833
0
        JanetSignal sig = janet_continue(child, in, &in);
35834
0
        janet_vm.stackn--;
35835
0
        if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
35836
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
35837
0
            *out = in;
35838
0
            janet_fiber_set_status(fiber, sig);
35839
0
            fiber->last_value = child->last_value;
35840
0
            return sig;
35841
0
        }
35842
        /* Check if we need any special handling for certain opcodes */
35843
0
        switch (instr & 0x7F) {
35844
0
            default:
35845
0
                break;
35846
0
            case JOP_NEXT: {
35847
0
                if (sig == JANET_SIGNAL_OK ||
35848
0
                        sig == JANET_SIGNAL_ERROR ||
35849
0
                        sig == JANET_SIGNAL_USER0 ||
35850
0
                        sig == JANET_SIGNAL_USER1 ||
35851
0
                        sig == JANET_SIGNAL_USER2 ||
35852
0
                        sig == JANET_SIGNAL_USER3 ||
35853
0
                        sig == JANET_SIGNAL_USER4) {
35854
0
                    in = janet_wrap_nil();
35855
0
                } else {
35856
0
                    in = janet_wrap_integer(0);
35857
0
                }
35858
0
                break;
35859
0
            }
35860
0
        }
35861
0
        fiber->child = NULL;
35862
0
    }
35863
35864
    /* Handle new fibers being resumed with a non-nil value */
35865
0
    if (old_status == JANET_STATUS_NEW && !janet_checktype(in, JANET_NIL)) {
35866
0
        Janet *stack = fiber->data + fiber->frame;
35867
0
        JanetFunction *func = janet_stack_frame(stack)->func;
35868
0
        if (func) {
35869
0
            if (func->def->arity > 0) {
35870
0
                stack[0] = in;
35871
0
            } else if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
35872
0
                stack[0] = janet_wrap_tuple(janet_tuple_n(&in, 1));
35873
0
            }
35874
0
        }
35875
0
    }
35876
35877
    /* Save global state */
35878
0
    JanetTryState tstate;
35879
0
    JanetSignal sig = janet_try(&tstate);
35880
0
    if (!sig) {
35881
        /* Normal setup */
35882
0
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
35883
0
        janet_vm.fiber = fiber;
35884
0
        janet_fiber_set_status(fiber, JANET_STATUS_ALIVE);
35885
0
        sig = run_vm(fiber, in);
35886
0
    }
35887
35888
    /* Restore */
35889
0
    if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
35890
0
    janet_fiber_set_status(fiber, sig);
35891
0
    janet_restore(&tstate);
35892
0
    fiber->last_value = tstate.payload;
35893
0
    *out = tstate.payload;
35894
35895
0
    return sig;
35896
0
}
35897
35898
/* Enter the main vm loop */
35899
0
JanetSignal janet_continue(JanetFiber *fiber, Janet in, Janet *out) {
35900
    /* Check conditions */
35901
0
    JanetSignal tmp_signal = janet_check_can_resume(fiber, out, 0);
35902
0
    if (tmp_signal) return tmp_signal;
35903
0
    return janet_continue_no_check(fiber, in, out);
35904
0
}
35905
35906
/* Enter the main vm loop but immediately raise a signal */
35907
0
JanetSignal janet_continue_signal(JanetFiber *fiber, Janet in, Janet *out, JanetSignal sig) {
35908
0
    JanetSignal tmp_signal = janet_check_can_resume(fiber, out, sig != JANET_SIGNAL_OK);
35909
0
    if (tmp_signal) return tmp_signal;
35910
0
    if (sig != JANET_SIGNAL_OK) {
35911
0
        JanetFiber *child = fiber;
35912
0
        while (child->child) child = child->child;
35913
0
        child->gc.flags &= ~JANET_FIBER_STATUS_MASK;
35914
0
        child->gc.flags |= sig << JANET_FIBER_STATUS_OFFSET;
35915
0
        child->flags |= JANET_FIBER_RESUME_SIGNAL;
35916
0
    }
35917
0
    return janet_continue_no_check(fiber, in, out);
35918
0
}
35919
35920
JanetSignal janet_pcall(
35921
    JanetFunction *fun,
35922
    int32_t argc,
35923
    const Janet *argv,
35924
    Janet *out,
35925
0
    JanetFiber **f) {
35926
0
    JanetFiber *fiber;
35927
0
    if (f && *f) {
35928
0
        fiber = janet_fiber_reset(*f, fun, argc, argv);
35929
0
    } else {
35930
0
        fiber = janet_fiber(fun, 64, argc, argv);
35931
0
    }
35932
0
    if (f) *f = fiber;
35933
0
    if (NULL == fiber) {
35934
0
        *out = janet_cstringv("arity mismatch");
35935
0
        return JANET_SIGNAL_ERROR;
35936
0
    }
35937
0
    return janet_continue(fiber, janet_wrap_nil(), out);
35938
0
}
35939
35940
0
Janet janet_mcall(const char *name, int32_t argc, Janet *argv) {
35941
    /* At least 1 argument */
35942
0
    if (argc < 1) {
35943
0
        janet_panicf("method :%s expected at least 1 argument", name);
35944
0
    }
35945
    /* Find method */
35946
0
    Janet method = janet_method_lookup(argv[0], name);
35947
0
    if (janet_checktype(method, JANET_NIL)) {
35948
0
        janet_panicf("could not find method :%s for %v", name, argv[0]);
35949
0
    }
35950
    /* Invoke method */
35951
0
    return janet_method_invoke(method, argc, argv);
35952
0
}
35953
35954
/* Setup VM */
35955
6.23k
int janet_init(void) {
35956
35957
    /* Garbage collection */
35958
6.23k
    janet_vm.blocks = NULL;
35959
6.23k
    janet_vm.weak_blocks = NULL;
35960
6.23k
    janet_vm.next_collection = 0;
35961
6.23k
    janet_vm.gc_interval = 0x400000;
35962
6.23k
    janet_vm.block_count = 0;
35963
6.23k
    janet_vm.gc_mark_phase = 0;
35964
35965
6.23k
    janet_symcache_init();
35966
35967
    /* Initialize gc roots */
35968
6.23k
    janet_vm.roots = NULL;
35969
6.23k
    janet_vm.root_count = 0;
35970
6.23k
    janet_vm.root_capacity = 0;
35971
35972
    /* Scratch memory */
35973
6.23k
    janet_vm.user = NULL;
35974
6.23k
    janet_vm.scratch_mem = NULL;
35975
6.23k
    janet_vm.scratch_len = 0;
35976
6.23k
    janet_vm.scratch_cap = 0;
35977
35978
    /* Sandbox flags */
35979
6.23k
    janet_vm.sandbox_flags = 0;
35980
35981
    /* Initialize registry */
35982
6.23k
    janet_vm.registry = NULL;
35983
6.23k
    janet_vm.registry_cap = 0;
35984
6.23k
    janet_vm.registry_count = 0;
35985
6.23k
    janet_vm.registry_dirty = 0;
35986
35987
    /* Initialize abstract registry */
35988
6.23k
    janet_vm.abstract_registry = janet_table(0);
35989
6.23k
    janet_gcroot(janet_wrap_table(janet_vm.abstract_registry));
35990
35991
    /* Traversal */
35992
6.23k
    janet_vm.traversal = NULL;
35993
6.23k
    janet_vm.traversal_base = NULL;
35994
6.23k
    janet_vm.traversal_top = NULL;
35995
35996
    /* Core env */
35997
6.23k
    janet_vm.core_env = NULL;
35998
35999
    /* Auto suspension */
36000
6.23k
    janet_vm.auto_suspend = 0;
36001
36002
    /* Dynamic bindings */
36003
6.23k
    janet_vm.top_dyns = NULL;
36004
36005
    /* Seed RNG */
36006
6.23k
    janet_rng_seed(janet_default_rng(), 0);
36007
36008
    /* Fibers */
36009
6.23k
    janet_vm.fiber = NULL;
36010
6.23k
    janet_vm.root_fiber = NULL;
36011
6.23k
    janet_vm.stackn = 0;
36012
36013
6.23k
#ifdef JANET_EV
36014
6.23k
    janet_ev_init();
36015
6.23k
#endif
36016
6.23k
#ifdef JANET_NET
36017
6.23k
    janet_net_init();
36018
6.23k
#endif
36019
6.23k
    return 0;
36020
6.23k
}
36021
36022
/* Disable some features at runtime with no way to re-enable them */
36023
0
void janet_sandbox(uint32_t flags) {
36024
0
    janet_sandbox_assert(JANET_SANDBOX_SANDBOX);
36025
0
    janet_vm.sandbox_flags |= flags;
36026
0
}
36027
36028
0
void janet_sandbox_assert(uint32_t forbidden_flags) {
36029
0
    if (forbidden_flags & janet_vm.sandbox_flags) {
36030
0
        janet_panic("operation forbidden by sandbox");
36031
0
    }
36032
0
}
36033
36034
/* Clear all memory associated with the VM */
36035
6.23k
void janet_deinit(void) {
36036
6.23k
    janet_clear_memory();
36037
6.23k
    janet_symcache_deinit();
36038
6.23k
    janet_free(janet_vm.roots);
36039
6.23k
    janet_vm.roots = NULL;
36040
6.23k
    janet_vm.root_count = 0;
36041
6.23k
    janet_vm.root_capacity = 0;
36042
6.23k
    janet_vm.abstract_registry = NULL;
36043
6.23k
    janet_vm.core_env = NULL;
36044
6.23k
    janet_vm.top_dyns = NULL;
36045
6.23k
    janet_vm.user = NULL;
36046
6.23k
    janet_free(janet_vm.traversal_base);
36047
6.23k
    janet_vm.fiber = NULL;
36048
6.23k
    janet_vm.root_fiber = NULL;
36049
6.23k
    janet_free(janet_vm.registry);
36050
6.23k
    janet_vm.registry = NULL;
36051
6.23k
#ifdef JANET_EV
36052
6.23k
    janet_ev_deinit();
36053
6.23k
#endif
36054
6.23k
#ifdef JANET_NET
36055
6.23k
    janet_net_deinit();
36056
6.23k
#endif
36057
6.23k
}
36058
36059
36060
/* src/core/wrap.c */
36061
#line 0 "src/core/wrap.c"
36062
36063
/*
36064
* Copyright (c) 2025 Calvin Rose
36065
*
36066
* Permission is hereby granted, free of charge, to any person obtaining a copy
36067
* of this software and associated documentation files (the "Software"), to
36068
* deal in the Software without restriction, including without limitation the
36069
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
36070
* sell copies of the Software, and to permit persons to whom the Software is
36071
* furnished to do so, subject to the following conditions:
36072
*
36073
* The above copyright notice and this permission notice shall be included in
36074
* all copies or substantial portions of the Software.
36075
*
36076
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
36077
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36078
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36079
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
36080
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
36081
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
36082
* IN THE SOFTWARE.
36083
*/
36084
36085
#ifndef JANET_AMALG
36086
#include "features.h"
36087
#include <janet.h>
36088
#include <math.h>
36089
#include "util.h"
36090
#include "state.h"
36091
#endif
36092
36093
/* Macro fills */
36094
36095
0
JanetType(janet_type)(Janet x) {
36096
0
    return janet_type(x);
36097
0
}
36098
0
int (janet_checktype)(Janet x, JanetType type) {
36099
0
    return janet_checktype(x, type);
36100
0
}
36101
0
int (janet_checktypes)(Janet x, int typeflags) {
36102
0
    return janet_checktypes(x, typeflags);
36103
0
}
36104
0
int (janet_truthy)(Janet x) {
36105
0
    return janet_truthy(x);
36106
0
}
36107
36108
0
JanetStruct(janet_unwrap_struct)(Janet x) {
36109
0
    return janet_unwrap_struct(x);
36110
0
}
36111
0
JanetTuple(janet_unwrap_tuple)(Janet x) {
36112
0
    return janet_unwrap_tuple(x);
36113
0
}
36114
0
JanetFiber *(janet_unwrap_fiber)(Janet x) {
36115
0
    return janet_unwrap_fiber(x);
36116
0
}
36117
0
JanetArray *(janet_unwrap_array)(Janet x) {
36118
0
    return janet_unwrap_array(x);
36119
0
}
36120
0
JanetTable *(janet_unwrap_table)(Janet x) {
36121
0
    return janet_unwrap_table(x);
36122
0
}
36123
0
JanetBuffer *(janet_unwrap_buffer)(Janet x) {
36124
0
    return janet_unwrap_buffer(x);
36125
0
}
36126
0
JanetString(janet_unwrap_string)(Janet x) {
36127
0
    return janet_unwrap_string(x);
36128
0
}
36129
0
JanetSymbol(janet_unwrap_symbol)(Janet x) {
36130
0
    return janet_unwrap_symbol(x);
36131
0
}
36132
0
JanetKeyword(janet_unwrap_keyword)(Janet x) {
36133
0
    return janet_unwrap_keyword(x);
36134
0
}
36135
0
JanetAbstract(janet_unwrap_abstract)(Janet x) {
36136
0
    return janet_unwrap_abstract(x);
36137
0
}
36138
0
void *(janet_unwrap_pointer)(Janet x) {
36139
0
    return janet_unwrap_pointer(x);
36140
0
}
36141
0
JanetFunction *(janet_unwrap_function)(Janet x) {
36142
0
    return janet_unwrap_function(x);
36143
0
}
36144
0
JanetCFunction(janet_unwrap_cfunction)(Janet x) {
36145
0
    return janet_unwrap_cfunction(x);
36146
0
}
36147
0
int (janet_unwrap_boolean)(Janet x) {
36148
0
    return janet_unwrap_boolean(x);
36149
0
}
36150
0
int32_t (janet_unwrap_integer)(Janet x) {
36151
0
    return janet_unwrap_integer(x);
36152
0
}
36153
36154
#if defined(JANET_NANBOX_32) || defined(JANET_NANBOX_64)
36155
0
Janet(janet_wrap_nil)(void) {
36156
0
    return janet_wrap_nil();
36157
0
}
36158
0
Janet(janet_wrap_true)(void) {
36159
0
    return janet_wrap_true();
36160
0
}
36161
0
Janet(janet_wrap_false)(void) {
36162
0
    return janet_wrap_false();
36163
0
}
36164
0
Janet(janet_wrap_boolean)(int x) {
36165
0
    return janet_wrap_boolean(x);
36166
0
}
36167
0
Janet(janet_wrap_string)(JanetString x) {
36168
0
    return janet_wrap_string(x);
36169
0
}
36170
0
Janet(janet_wrap_symbol)(JanetSymbol x) {
36171
0
    return janet_wrap_symbol(x);
36172
0
}
36173
0
Janet(janet_wrap_keyword)(JanetKeyword x) {
36174
0
    return janet_wrap_keyword(x);
36175
0
}
36176
0
Janet(janet_wrap_array)(JanetArray *x) {
36177
0
    return janet_wrap_array(x);
36178
0
}
36179
0
Janet(janet_wrap_tuple)(JanetTuple x) {
36180
0
    return janet_wrap_tuple(x);
36181
0
}
36182
0
Janet(janet_wrap_struct)(JanetStruct x) {
36183
0
    return janet_wrap_struct(x);
36184
0
}
36185
0
Janet(janet_wrap_fiber)(JanetFiber *x) {
36186
0
    return janet_wrap_fiber(x);
36187
0
}
36188
0
Janet(janet_wrap_buffer)(JanetBuffer *x) {
36189
0
    return janet_wrap_buffer(x);
36190
0
}
36191
0
Janet(janet_wrap_function)(JanetFunction *x) {
36192
0
    return janet_wrap_function(x);
36193
0
}
36194
0
Janet(janet_wrap_cfunction)(JanetCFunction x) {
36195
0
    return janet_wrap_cfunction(x);
36196
0
}
36197
0
Janet(janet_wrap_table)(JanetTable *x) {
36198
0
    return janet_wrap_table(x);
36199
0
}
36200
0
Janet(janet_wrap_abstract)(JanetAbstract x) {
36201
0
    return janet_wrap_abstract(x);
36202
0
}
36203
0
Janet(janet_wrap_pointer)(void *x) {
36204
0
    return janet_wrap_pointer(x);
36205
0
}
36206
0
Janet(janet_wrap_integer)(int32_t x) {
36207
0
    return janet_wrap_integer(x);
36208
0
}
36209
#endif
36210
36211
#ifndef JANET_NANBOX_32
36212
0
double (janet_unwrap_number)(Janet x) {
36213
0
    return janet_unwrap_number(x);
36214
0
}
36215
#endif
36216
36217
#ifdef JANET_NANBOX_64
36218
0
Janet(janet_wrap_number)(double x) {
36219
0
    return janet_wrap_number(x);
36220
0
}
36221
#endif
36222
36223
/*****/
36224
36225
85.2k
void *janet_memalloc_empty(int32_t count) {
36226
85.2k
    int32_t i;
36227
85.2k
    void *mem = janet_malloc((size_t) count * sizeof(JanetKV));
36228
85.2k
    janet_vm.next_collection += (size_t) count * sizeof(JanetKV);
36229
85.2k
    if (NULL == mem) {
36230
0
        JANET_OUT_OF_MEMORY;
36231
0
    }
36232
85.2k
    JanetKV *mmem = (JanetKV *)mem;
36233
2.41M
    for (i = 0; i < count; i++) {
36234
2.33M
        JanetKV *kv = mmem + i;
36235
2.33M
        kv->key = janet_wrap_nil();
36236
2.33M
        kv->value = janet_wrap_nil();
36237
2.33M
    }
36238
85.2k
    return mem;
36239
85.2k
}
36240
36241
2.92M
void janet_memempty(JanetKV *mem, int32_t count) {
36242
2.92M
    int32_t i;
36243
14.8M
    for (i = 0; i < count; i++) {
36244
11.9M
        mem[i].key = janet_wrap_nil();
36245
11.9M
        mem[i].value = janet_wrap_nil();
36246
11.9M
    }
36247
2.92M
}
36248
36249
#ifdef JANET_NANBOX_64
36250
36251
0
Janet janet_wrap_number_safe(double d) {
36252
0
    Janet ret;
36253
0
    ret.number = isnan(d) ? NAN : d;
36254
0
    return ret;
36255
0
}
36256
36257
14.6M
void *janet_nanbox_to_pointer(Janet x) {
36258
14.6M
    x.i64 &= JANET_NANBOX_PAYLOADBITS;
36259
14.6M
    return x.pointer;
36260
14.6M
}
36261
36262
1.42M
Janet janet_nanbox_from_pointer(void *p, uint64_t tagmask) {
36263
1.42M
    Janet ret;
36264
1.42M
    ret.pointer = p;
36265
1.42M
    ret.u64 |= tagmask;
36266
1.42M
    return ret;
36267
1.42M
}
36268
36269
9.83M
Janet janet_nanbox_from_cpointer(const void *p, uint64_t tagmask) {
36270
9.83M
    Janet ret;
36271
9.83M
    ret.pointer = (void *)p;
36272
9.83M
    ret.u64 |= tagmask;
36273
9.83M
    return ret;
36274
9.83M
}
36275
36276
96.5k
Janet janet_nanbox_from_double(double d) {
36277
96.5k
    Janet ret;
36278
96.5k
    ret.number = d;
36279
96.5k
    return ret;
36280
96.5k
}
36281
36282
28.5M
Janet janet_nanbox_from_bits(uint64_t bits) {
36283
28.5M
    Janet ret;
36284
28.5M
    ret.u64 = bits;
36285
28.5M
    return ret;
36286
28.5M
}
36287
36288
#elif defined(JANET_NANBOX_32)
36289
36290
Janet janet_wrap_number(double x) {
36291
    Janet ret;
36292
    ret.number = x;
36293
    ret.tagged.type += JANET_DOUBLE_OFFSET;
36294
    return ret;
36295
}
36296
36297
Janet janet_wrap_number_safe(double d) {
36298
    double x = isnan(d) ? NAN : d;
36299
    return janet_wrap_number(x);
36300
}
36301
36302
Janet janet_nanbox32_from_tagi(uint32_t tag, int32_t integer) {
36303
    Janet ret;
36304
    ret.tagged.type = tag;
36305
    ret.tagged.payload.integer = integer;
36306
    return ret;
36307
}
36308
36309
Janet janet_nanbox32_from_tagp(uint32_t tag, void *pointer) {
36310
    Janet ret;
36311
    ret.tagged.type = tag;
36312
    ret.tagged.payload.pointer = pointer;
36313
    return ret;
36314
}
36315
36316
double janet_unwrap_number(Janet x) {
36317
    x.tagged.type -= JANET_DOUBLE_OFFSET;
36318
    return x.number;
36319
}
36320
36321
#else
36322
36323
Janet janet_wrap_number_safe(double d) {
36324
    return janet_wrap_number(d);
36325
}
36326
36327
Janet janet_wrap_nil(void) {
36328
    Janet y;
36329
    y.type = JANET_NIL;
36330
    y.as.u64 = 0;
36331
    return y;
36332
}
36333
36334
Janet janet_wrap_true(void) {
36335
    Janet y;
36336
    y.type = JANET_BOOLEAN;
36337
    y.as.u64 = 1;
36338
    return y;
36339
}
36340
36341
Janet janet_wrap_false(void) {
36342
    Janet y;
36343
    y.type = JANET_BOOLEAN;
36344
    y.as.u64 = 0;
36345
    return y;
36346
}
36347
36348
Janet janet_wrap_boolean(int x) {
36349
    Janet y;
36350
    y.type = JANET_BOOLEAN;
36351
    y.as.u64 = !!x;
36352
    return y;
36353
}
36354
36355
#define JANET_WRAP_DEFINE(NAME, TYPE, DTYPE, UM)\
36356
Janet janet_wrap_##NAME(TYPE x) {\
36357
    Janet y;\
36358
    y.type = DTYPE;\
36359
    y.as.u64 = 0; /* zero other bits in case of 32 bit integer */ \
36360
    y.as.UM = x;\
36361
    return y;\
36362
}
36363
36364
JANET_WRAP_DEFINE(number, double, JANET_NUMBER, number)
36365
JANET_WRAP_DEFINE(string, const uint8_t *, JANET_STRING, cpointer)
36366
JANET_WRAP_DEFINE(symbol, const uint8_t *, JANET_SYMBOL, cpointer)
36367
JANET_WRAP_DEFINE(keyword, const uint8_t *, JANET_KEYWORD, cpointer)
36368
JANET_WRAP_DEFINE(array, JanetArray *, JANET_ARRAY, pointer)
36369
JANET_WRAP_DEFINE(tuple, const Janet *, JANET_TUPLE, cpointer)
36370
JANET_WRAP_DEFINE(struct, const JanetKV *, JANET_STRUCT, cpointer)
36371
JANET_WRAP_DEFINE(fiber, JanetFiber *, JANET_FIBER, pointer)
36372
JANET_WRAP_DEFINE(buffer, JanetBuffer *, JANET_BUFFER, pointer)
36373
JANET_WRAP_DEFINE(function, JanetFunction *, JANET_FUNCTION, pointer)
36374
JANET_WRAP_DEFINE(cfunction, JanetCFunction, JANET_CFUNCTION, pointer)
36375
JANET_WRAP_DEFINE(table, JanetTable *, JANET_TABLE, pointer)
36376
JANET_WRAP_DEFINE(abstract, void *, JANET_ABSTRACT, pointer)
36377
JANET_WRAP_DEFINE(pointer, void *, JANET_POINTER, pointer)
36378
36379
#undef JANET_WRAP_DEFINE
36380
36381
#endif
36382
36383
static const unsigned char janet_core_image_bytes[] = {
36384
  0xD3, 0x82, 0xB8, 0xCF, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0xD3, 0x03, 0xD0, 0x0A, 0x73, 0x6F, 
36385
  0x75, 0x72, 0x63, 0x65, 0x2D, 0x6D, 0x61, 0x70, 0xD2, 0x03, 0x00, 0xCE, 0x0A, 0x62, 0x6F, 0x6F, 
36386
  0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x8A, 0xC3, 0x01, 0xD0, 0x03, 0x64, 0x6F, 0x63, 0xCE, 
36387
  0x80, 0x88, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 
36388
  0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
36389
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
36390
  0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x63, 0x6F, 
36391
  0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 
36392
  0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 
36393
  0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x6E, 
36394
  0x64, 0x6C, 0x69, 0x6E, 0x67, 0x2C, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
36395
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 0x70, 0x69, 0x2E, 0xD0, 0x05, 0x76, 0x61, 0x6C, 0x75, 
36396
  0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x09, 0x28, 0x00, 0x03, 
36397
  0xCE, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0xDA, 0x04, 0xD8, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 
36398
  0x72, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 
36399
  0x6E, 0x73, 0x75, 0x6D, 0x65, 0xD8, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 
36400
  0x61, 0x74, 0x75, 0x73, 0xD0, 0x05, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD8, 0x0C, 0x70, 0x61, 0x72, 
36401
  0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD8, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 
36402
  0x72, 0x2F, 0x65, 0x6F, 0x66, 0xD8, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 
36403
  0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xD8, 0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 
36404
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xCE, 0x08, 0x6E, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
36405
  0x00, 0x28, 0x00, 0xCF, 0x03, 0x73, 0x74, 0x72, 0x00, 0x28, 0x01, 0xDA, 0x01, 0x02, 0x28, 0x03, 
36406
  0xCF, 0x01, 0x70, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x32, 
36407
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x02, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
36408
  0x04, 0x02, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x25, 0x04, 0x05, 0x02, 0x1E, 
36409
  0x04, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x35, 0x02, 0x05, 0x00, 0x01, 
36410
  0x02, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x35, 0x02, 0x04, 0x00, 0x31, 
36411
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x06, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1E, 0x02, 0x04, 0x00, 0x31, 
36412
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
36413
  0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 
36414
  0x05, 0x06, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x35, 0x04, 0x06, 0x00, 0x01, 
36415
  0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x08, 0x00, 0x01, 0x04, 0x00, 0x00, 0x04, 
36416
  0x00, 0x00, 0x00, 0x8A, 0xC7, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
36417
  0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 
36418
  0x00, 0x0E, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
36419
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0B, 
36420
  0x00, 0x0B, 0x00, 0x07, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 
36421
  0x00, 0x09, 0x00, 0x09, 0xCF, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0xD3, 
36422
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6B, 0x01, 0xDA, 0x06, 0xCE, 0x3A, 0x28, 0x66, 
36423
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
36424
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
36425
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x63, 0x66, 0x75, 
36426
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
36427
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 
36428
  0x69, 0x6F, 0x6E, 0x3F, 0xDA, 0x04, 0xD8, 0x04, 0x74, 0x79, 0x70, 0x65, 0xD0, 0x08, 0x66, 0x75, 
36429
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x06, 0x00, 0xCF, 0x01, 0x78, 0x00, 0x06, 0x01, 0xDA, 
36430
  0x16, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 
36431
  0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6B, 0x46, 0x00, 0x46, 0x00, 0x46, 0x00, 
36432
  0x43, 0x00, 0x43, 0x00, 0x43, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 
36433
  0x68, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0F, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
36434
  0x72, 0x65, 0x2F, 0x6D, 0x61, 0x74, 0x68, 0x2E, 0x63, 0x81, 0x0F, 0x01, 0xDA, 0x06, 0xCE, 0x36, 
36435
  0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
36436
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 
36437
  0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 
36438
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
36439
  0x63, 0x6F, 0x73, 0x68, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0xD3, 
36440
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x6A, 0x28, 
36441
  0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x29, 
36442
  0x0A, 0x0A, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 
36443
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
36444
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
36445
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 
36446
  0x60, 0x6E, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
36447
  0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
36448
  0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x06, 0x17, 0x00, 0x03, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x74, 
36449
  0x69, 0x74, 0x69, 0x6F, 0x6E, 0xDA, 0x04, 0xD8, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 
36450
  0x3F, 0xD8, 0x0B, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD7, 0x00, 
36451
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x03, 0x03, 0x03, 0x02, 0x1C, 0x00, 0x0B, 0xCE, 0x0F, 0x70, 
36452
  0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 
36453
  0xD8, 0x10, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 
36454
  0x65, 0x64, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x00, 0x1C, 
36455
  0x00, 0xCF, 0x01, 0x66, 0x00, 0x1C, 0x01, 0xCF, 0x01, 0x6E, 0x00, 0x1C, 0x02, 0xCF, 0x03, 0x69, 
36456
  0x6E, 0x64, 0x00, 0x1C, 0x03, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 
36457
  0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x00, 0x1C, 0x04, 0xCF, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 
36458
  0x01, 0x1C, 0x05, 0xCF, 0x03, 0x65, 0x6E, 0x64, 0x03, 0x1C, 0x07, 0xCF, 0x03, 0x6C, 0x65, 0x6E, 
36459
  0x05, 0x1C, 0x09, 0xCF, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x09, 0x1C, 0x0B, 0xCF, 0x03, 0x72, 
36460
  0x65, 0x74, 0x0A, 0x14, 0x0C, 0xCF, 0x01, 0x6B, 0x0A, 0x14, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
36461
  0x30, 0x30, 0x33, 0x41, 0x2B, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x3F, 0x06, 0x02, 0x00, 
36462
  0x1B, 0x07, 0x06, 0x00, 0x0D, 0x08, 0x07, 0x01, 0x1B, 0x09, 0x08, 0x00, 0x31, 0x09, 0x00, 0x00, 
36463
  0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x2B, 0x0C, 0x00, 0x00, 
36464
  0x23, 0x0D, 0x0C, 0x09, 0x1E, 0x0D, 0x08, 0x00, 0x33, 0x02, 0x04, 0x05, 0x35, 0x0E, 0x00, 0x00, 
36465
  0x3C, 0x0B, 0x0C, 0x0E, 0x1B, 0x04, 0x05, 0x00, 0x06, 0x05, 0x05, 0x01, 0x05, 0x0C, 0x0C, 0x01, 
36466
  0x1C, 0xF8, 0xFF, 0xFF, 0x23, 0x0C, 0x04, 0x07, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x02, 0x04, 0x00, 
36467
  0x35, 0x0D, 0x00, 0x00, 0x32, 0x0B, 0x0D, 0x00, 0x2C, 0x0F, 0x01, 0x00, 0x35, 0x0E, 0x0F, 0x00, 
36468
  0x03, 0x0B, 0x00, 0x00, 0x87, 0x33, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x0E, 0x00, 
36469
  0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
36470
  0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x04, 0x07, 
36471
  0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF5, 0x01, 0xD8, 
36472
  0x06, 0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
36473
  0x73, 0x6C, 0x69, 0x63, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 
36474
  0x03, 0x23, 0x00, 0x0B, 0xCE, 0x06, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0xDA, 0x04, 0xD8, 0x0B, 
36475
  0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0xDA, 0x2F, 0xDA, 0x30, 0x00, 
36476
  0x23, 0x00, 0xDA, 0x1E, 0x00, 0x23, 0x01, 0xCF, 0x06, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x08, 
36477
  0x15, 0x03, 0xCF, 0x03, 0x61, 0x72, 0x72, 0x09, 0x15, 0x04, 0xCF, 0x01, 0x69, 0x09, 0x14, 0x00, 
36478
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x64, 0x0C, 0x14, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
36479
  0x30, 0x30, 0x30, 0x33, 0x63, 0x0F, 0x14, 0x07, 0xCF, 0x01, 0x76, 0x16, 0x23, 0x04, 0xCF, 0x07, 
36480
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x65, 0x16, 0x22, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
36481
  0x30, 0x33, 0x67, 0x19, 0x22, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x66, 0x1C, 
36482
  0x22, 0x06, 0xDA, 0x46, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
36483
  0x1E, 0x02, 0x12, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 
36484
  0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 
36485
  0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x07, 0x00, 0x3A, 0x05, 0x00, 0x06, 
36486
  0x1B, 0x07, 0x05, 0x00, 0x3C, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 
36487
  0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 
36488
  0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x1F, 0x05, 0x08, 0x00, 
36489
  0x3A, 0x03, 0x00, 0x05, 0x1B, 0x06, 0x03, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 
36490
  0x35, 0x03, 0x07, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 
36491
  0x86, 0xAE, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 
36492
  0x10, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
36493
  0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x07, 0x05, 0x00, 
36494
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
36495
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0xDA, 0x32, 0x00, 0x17, 
36496
  0x01, 0xDA, 0x33, 0x00, 0x17, 0x02, 0xDA, 0x25, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
36497
  0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 
36498
  0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 
36499
  0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 
36500
  0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 
36501
  0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x33, 0x06, 0x00, 0x05, 0x2C, 0x06, 0x02, 0x00, 
36502
  0x36, 0x06, 0x00, 0x00, 0x87, 0x44, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 
36503
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 
36504
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x05, 0x00, 
36505
  0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x05, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0xD3, 0x03, 0xDA, 0x03, 
36506
  0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6F, 0x73, 
36507
  0x2E, 0x63, 0x88, 0x4D, 0x01, 0xDA, 0x06, 0xCE, 0x29, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x20, 
36508
  0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 
36509
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
36510
  0x6C, 0x2E, 0xDA, 0x08, 0xD8, 0x05, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0xCF, 0x09, 0x6D, 0x61, 0x74, 
36511
  0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 
36512
  0x0B, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 
36513
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
36514
  0x20, 0x61, 0x72, 0x63, 0x73, 0x69, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xD8, 
36515
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0xCF, 0x05, 0x61, 0x73, 0x3F, 0x2D, 
36516
  0x3E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xD2, 0x01, 0xDA, 0x06, 0xCE, 
36517
  0x80, 0xE0, 0x28, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x26, 0x20, 
36518
  0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 
36519
  0x6F, 0x72, 0x6D, 0x73, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2C, 0x20, 0x72, 
36520
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x61, 0x73, 0x60, 0x20, 0x69, 0x6E, 
36521
  0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
36522
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
36523
  0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x54, 0x68, 
36524
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x73, 0x20, 
36525
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 
36526
  0x61, 0x6E, 0x79, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 
36527
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 
36528
  0x65, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x3B, 0x20, 
36529
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
36530
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
36531
  0x65, 0x2E, 0xD0, 0x05, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xCB, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x02, 
36532
  0xFF, 0x00, 0x00, 0x07, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x02, 0x05, 
36533
  0xCE, 0x05, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0xDA, 0x04, 0xD8, 0x06, 0x67, 0x65, 0x6E, 0x73, 0x79, 
36534
  0x6D, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x07, 0x00, 0x01, 
36535
  0x03, 0xCE, 0x08, 0x70, 0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 
36536
  0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x09, 0x23, 0x00, 0x04, 0xCE, 0x04, 0x77, 0x61, 
36537
  0x6C, 0x6B, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x05, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 
36538
  0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x00, 0x10, 0x00, 0x07, 0xCE, 0x09, 0x77, 0x61, 
36539
  0x6C, 0x6B, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x10, 0x00, 0xDA, 0x31, 0x00, 0x10, 
36540
  0x01, 0xCF, 0x04, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x10, 0x02, 0xCF, 0x09, 0x77, 0x61, 0x6C, 0x6B, 
36541
  0x2D, 0x64, 0x69, 0x63, 0x74, 0x01, 0x10, 0x04, 0xDA, 0x39, 0x01, 0x0F, 0x01, 0xCF, 0x07, 0x5F, 
36542
  0x30, 0x30, 0x30, 0x30, 0x32, 0x70, 0x04, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
36543
  0x32, 0x6F, 0x06, 0x0F, 0x05, 0xDA, 0x3A, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 
36544
  0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x0A, 0x00, 0x1B, 
36545
  0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x3A, 0x08, 0x01, 0x05, 0x31, 
36546
  0x08, 0x00, 0x00, 0x35, 0x09, 0x00, 0x00, 0x3C, 0x04, 0x07, 0x09, 0x49, 0x06, 0x01, 0x06, 0x1C, 
36547
  0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x85, 0xA9, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
36548
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 
36549
  0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFE, 0x01, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x75, 
36550
  0x63, 0x74, 0xD8, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 
36551
  0x75, 0x63, 0x74, 0xD0, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
36552
  0x00, 0x0A, 0x02, 0x02, 0x02, 0x01, 0x10, 0x00, 0x07, 0xCE, 0x08, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 
36553
  0x69, 0x6E, 0x64, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x10, 0x00, 0xDA, 0x31, 0x00, 0x10, 0x01, 0xDA, 
36554
  0x64, 0x00, 0x10, 0x02, 0xCF, 0x08, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 0x69, 0x6E, 0x64, 0x01, 0x10, 
36555
  0x04, 0xDA, 0x39, 0x01, 0x0F, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6E, 0x04, 
36556
  0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6D, 0x07, 0x0F, 0x07, 0xDA, 0x1E, 
36557
  0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 
36558
  0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x0A, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 0x00, 
36559
  0x31, 0x07, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x09, 0x00, 0x00, 
36560
  0x35, 0x08, 0x09, 0x00, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 
36561
  0x85, 0xA4, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
36562
  0x03, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0xBF, 
36563
  0xFE, 0x01, 0xD0, 0x05, 0x74, 0x75, 0x70, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36564
  0x07, 0x02, 0x02, 0x02, 0x04, 0x0F, 0x00, 0x03, 0xCE, 0x0C, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 
36565
  0x79, 0x6E, 0x74, 0x61, 0x78, 0x21, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x2C, 0xD7, 0x00, 
36566
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x08, 0x28, 0x00, 0x05, 0xCE, 0x0B, 0x6B, 
36567
  0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 
36568
  0xD8, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 0x79, 0x70, 0x65, 0xD0, 0x06, 0x70, 0x61, 
36569
  0x72, 0x65, 0x6E, 0x73, 0xDA, 0x2C, 0xD8, 0x0E, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 0x72, 
36570
  0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xD8, 0x0F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6F, 
36571
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0xD8, 0x0C, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 
36572
  0x65, 0x74, 0x6D, 0x61, 0x70, 0x00, 0x28, 0x00, 0xCF, 0x06, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 
36573
  0x00, 0x28, 0x01, 0xCF, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, 0x28, 0x02, 0xCF, 0x0B, 0x6B, 
36574
  0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x05, 0x0F, 0x04, 0xCF, 0x07, 0x5F, 
36575
  0x30, 0x30, 0x30, 0x30, 0x32, 0x6C, 0x1F, 0x27, 0x05, 0xCF, 0x03, 0x72, 0x65, 0x73, 0x31, 0x00, 
36576
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 
36577
  0x06, 0x04, 0x1B, 0x04, 0x05, 0x00, 0x1E, 0x05, 0x08, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 
36578
  0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x25, 0x07, 0x08, 0x06, 0x1B, 0x03, 
36579
  0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x18, 0x00, 0x31, 0x00, 
36580
  0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x25, 0x06, 
36581
  0x07, 0x05, 0x1E, 0x06, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x05, 
36582
  0x07, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x07, 
36583
  0x05, 0x00, 0x35, 0x05, 0x07, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x00, 
36584
  0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x35, 0x04, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 0x04, 
36585
  0x00, 0x00, 0x2C, 0x06, 0x07, 0x00, 0x36, 0x06, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x85, 0x58, 
36586
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x01, 0x16, 0x00, 
36587
  0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 
36588
  0x03, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 0x12, 
36589
  0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 
36590
  0x00, 0x07, 0x03, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36591
  0xBF, 0xFA, 0x03, 0x00, 0x0F, 0x00, 0xDA, 0x7A, 0x00, 0x0F, 0x01, 0xDA, 0x7B, 0x00, 0x0F, 0x02, 
36592
  0xCF, 0x0C, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x21, 0x31, 0x01, 
36593
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 
36594
  0x06, 0x04, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x04, 
36595
  0x06, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x01, 0x00, 0x32, 0x00, 
36596
  0x03, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x85, 0x65, 0x25, 0x00, 0x25, 0x00, 
36597
  0x25, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x17, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x17, 
36598
  0x00, 0x17, 0x00, 0x17, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x23, 0x00, 0xDA, 0x31, 0x00, 
36599
  0x23, 0x01, 0xDA, 0x64, 0x00, 0x23, 0x02, 0xCF, 0x04, 0x77, 0x61, 0x6C, 0x6B, 0x03, 0x23, 0x04, 
36600
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x71, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 
36601
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x03, 0x04, 
36602
  0x05, 0x1E, 0x03, 0x04, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 
36603
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x04, 0x06, 0x1E, 0x05, 0x07, 0x00, 0x32, 0x00, 0x01, 
36604
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x04, 
36605
  0x00, 0x36, 0x07, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x25, 0x06, 0x04, 0x07, 0x1E, 0x06, 0x04, 
36606
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x36, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 
36607
  0x00, 0x25, 0x07, 0x04, 0x08, 0x1E, 0x07, 0x07, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x09, 0x06, 
36608
  0x00, 0x35, 0x08, 0x09, 0x00, 0x32, 0x01, 0x08, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x36, 0x09, 0x00, 
36609
  0x00, 0x03, 0x01, 0x00, 0x00, 0x85, 0xB4, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 
36610
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 
36611
  0x03, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x03, 
36612
  0x00, 0x03, 0x00, 0x03, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 
36613
  0x03, 0x04, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x03, 
36614
  0x00, 0x07, 0x00, 0xDA, 0x31, 0x00, 0x07, 0x01, 0xDA, 0x64, 0x00, 0x07, 0x02, 0xCF, 0x08, 0x70, 
36615
  0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0x2E, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x32, 
36616
  0x03, 0x01, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x36, 
36617
  0x00, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x04, 
36618
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x64, 0xBF, 0xFF, 
36619
  0x00, 0x02, 0xDA, 0x80, 0x82, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2D, 0x01, 0x00, 0x00, 0x32, 0x01, 
36620
  0x00, 0x00, 0x2D, 0x01, 0x00, 0x02, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xBF, 0x14, 0x00, 
36621
  0x14, 0x00, 0x14, 0x00, 0x14, 0x85, 0xBB, 0x01, 0x04, 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 
36622
  0x00, 0x03, 0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 
36623
  0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x02, 0x61, 0x73, 0x00, 0x07, 0x02, 0xCF, 
36624
  0x05, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x00, 0x07, 0x03, 0xDA, 0x55, 0x00, 0x07, 0x04, 0xCF, 0x04, 
36625
  0x70, 0x72, 0x65, 0x76, 0x1B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x02, 0x06, 
36626
  0x1B, 0x06, 0x05, 0x00, 0x30, 0x05, 0x01, 0x00, 0x35, 0x05, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 
36627
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x06, 0x01, 0x06, 0xDA, 0x04, 0xBF, 
36628
  0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 0x02, 
36629
  0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x55, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x86, 
36630
  0x00, 0x06, 0x00, 0xCF, 0x01, 0x79, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 0x00, 0x02, 0x1E, 0x01, 
36631
  0x03, 0x00, 0x2D, 0x02, 0x00, 0x08, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
36632
  0x85, 0xDB, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x02, 0xFE, 
36633
  0x00, 0x00, 0x07, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x1C, 0x01, 0x01, 0x05, 0xCE, 
36634
  0x06, 0x5F, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x5D, 0xDA, 0x80, 0x83, 
36635
  0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x75, 0xBF, 0xFF, 0x00, 
36636
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x74, 0x06, 0x1C, 0x01, 0xDA, 0x64, 0x09, 
36637
  0x1C, 0x02, 0xCF, 0x03, 0x73, 0x79, 0x6D, 0x0E, 0x1C, 0x00, 0xCF, 0x09, 0x6E, 0x65, 0x78, 0x74, 
36638
  0x2D, 0x70, 0x72, 0x65, 0x76, 0x2D, 0x00, 0x00, 0x06, 0x20, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 
36639
  0x00, 0x2D, 0x01, 0x00, 0x02, 0x2D, 0x02, 0x00, 0x06, 0x3A, 0x00, 0x01, 0x02, 0x1B, 0x01, 0x00, 
36640
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x00, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x30, 0x00, 0x00, 
36641
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x00, 0x03, 
36642
  0x00, 0x2D, 0x04, 0x00, 0x04, 0x32, 0x02, 0x04, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 
36643
  0x00, 0x33, 0x05, 0x03, 0x00, 0x45, 0x04, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x04, 0x2D, 0x05, 0x00, 
36644
  0x02, 0x2D, 0x06, 0x00, 0x06, 0x49, 0x03, 0x05, 0x06, 0x2F, 0x03, 0x00, 0x06, 0x2E, 0x05, 0x00, 
36645
  0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 
36646
  0x00, 0x06, 0x02, 0x08, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 
36647
  0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x55, 
36648
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x64, 0xBF, 0xFF, 0x01, 
36649
  0x02, 0xDA, 0x80, 0x8B, 0x00, 0x06, 0x00, 0xDA, 0x80, 0x87, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 
36650
  0x00, 0x02, 0x1E, 0x01, 0x03, 0x00, 0x2D, 0x02, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 
36651
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xDB, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 
36652
  0x00, 0x26, 0x85, 0xD9, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
36653
  0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
36654
  0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
36655
  0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 
36656
  0x85, 0xD8, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 
36657
  0x56, 0x01, 0x00, 0x00, 0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
36658
  0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x31, 0x36, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 
36659
  0x11, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
36660
  0x2E, 0x63, 0x81, 0x72, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x84, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
36661
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x31, 0x36, 0x20, 0x62, 0x75, 
36662
  0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 
36663
  0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x61, 0x20, 0x31, 0x36, 0x20, 0x62, 0x69, 0x74, 0x20, 
36664
  0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
36665
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
36666
  0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
36667
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
36668
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 
36669
  0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 
36670
  0x6E, 0x74, 0x31, 0x36, 0xCF, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 
36671
  0x6D, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 
36672
  0x6F, 0x72, 0x65, 0x2F, 0x6E, 0x65, 0x74, 0x2E, 0x63, 0x83, 0x25, 0x01, 0xDA, 0x06, 0xCE, 0x58, 
36673
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x74, 
36674
  0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
36675
  0x72, 0x65, 0x6D, 0x6F, 0x74, 0x65, 0x20, 0x70, 0x65, 0x65, 0x72, 0x27, 0x73, 0x20, 0x61, 0x64, 
36676
  0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x69, 
36677
  0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x61, 
36678
  0x74, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xD8, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 
36679
  0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x65, 0xCF, 0x07, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 
36680
  0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xE6, 0x01, 0xDA, 0x06, 0xCE, 
36681
  0x80, 0xCC, 0x28, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x32, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 
36682
  0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x32, 0x2D, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
36683
  0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x72, 0x65, 
36684
  0x64, 0x75, 0x63, 0x65, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 
36685
  0x6E, 0x6F, 0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 
36686
  0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
36687
  0x2E, 0x0A, 0x49, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
36688
  0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
36689
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 
36690
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 
36691
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 
36692
  0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x76, 
36693
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 
36694
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x00, 0x13, 0x00, 0x05, 0xCE, 
36695
  0x07, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x32, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x31, 0x00, 
36696
  0x13, 0x01, 0xDA, 0x33, 0x00, 0x13, 0x02, 0xDA, 0x80, 0x99, 0x02, 0x13, 0x04, 0xDA, 0x3A, 0x08, 
36697
  0x13, 0x06, 0xDA, 0x7E, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 
36698
  0x28, 0x06, 0x00, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 
36699
  0x3A, 0x05, 0x01, 0x04, 0x1B, 0x06, 0x05, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x08, 0x00, 0x00, 
36700
  0x4A, 0x07, 0x08, 0x04, 0x1E, 0x07, 0x06, 0x00, 0x3A, 0x08, 0x01, 0x04, 0x32, 0x06, 0x08, 0x00, 
36701
  0x35, 0x06, 0x00, 0x00, 0x49, 0x04, 0x01, 0x04, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 
36702
  0x83, 0xEA, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x11, 0x01, 
36703
  0x0C, 0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x0E, 0x00, 
36704
  0x0E, 0x01, 0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xF8, 0x01, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 
36705
  0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x11, 
36706
  0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 
36707
  0x63, 0x82, 0x6A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA1, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
36708
  0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
36709
  0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 
36710
  0x6E, 0x67, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 
36711
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
36712
  0x63, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
36713
  0x65, 0x6E, 0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 
36714
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 
36715
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 
36716
  0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 
36717
  0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xD8, 0x0C, 0x73, 0x74, 
36718
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x67, 
36719
  0x61, 0x74, 0x68, 0x65, 0x72, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x3E, 
36720
  0x03, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 
36721
  0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x69, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 
36722
  0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x62, 0x65, 
36723
  0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0x65, 0x6C, 0x20, 0x6F, 
36724
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
36725
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
36726
  0x74, 0x68, 0x65, 0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x0A, 0x52, 
36727
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x74, 0x68, 0x65, 
36728
  0x72, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 
36729
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 
36730
  0x00, 0xDD, 0x00, 0x00, 0x12, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x4B, 0x01, 0x17, 
36731
  0xCE, 0x09, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x5C, 0xCF, 
36732
  0x03, 0x64, 0x65, 0x66, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0xCF, 0x03, 0x70, 
36733
  0x75, 0x74, 0xCF, 0x02, 0x66, 0x6E, 0xD0, 0x09, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 
36734
  0x72, 0xD8, 0x05, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x07, 0x03, 
36735
  0x03, 0x03, 0x03, 0x00, 0x02, 0xCE, 0x03, 0x70, 0x75, 0x74, 0x3C, 0x00, 0x01, 0x02, 0x03, 0x00, 
36736
  0x00, 0x00, 0xCF, 0x02, 0x64, 0x6F, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x01, 0xCF, 0x09, 0x6E, 0x65, 
36737
  0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x65, 0x76, 0x2F, 
36738
  0x63, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 
36739
  0x77, 0x6E, 0xBF, 0xFF, 0x00, 0x04, 0xCF, 0x0C, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 
36740
  0x72, 0x65, 0x61, 0x64, 0xBF, 0xFF, 0x00, 0x05, 0xCF, 0x0F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 
36741
  0x65, 0x2D, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x0C, 0x65, 
36742
  0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xBF, 0xFF, 0x00, 0x07, 0xCF, 
36743
  0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xBF, 0xFF, 
36744
  0x00, 0x08, 0xCF, 0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 
36745
  0x6B, 0xBF, 0xFF, 0x00, 0x09, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 
36746
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x77, 
36747
  0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x0B, 
36748
  0xCF, 0x0A, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x2D, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x0C, 
36749
  0xCF, 0x0F, 0x77, 0x61, 0x69, 0x74, 0x2D, 0x66, 0x6F, 0x72, 0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 
36750
  0x73, 0x00, 0x4B, 0x00, 0xCF, 0x06, 0x62, 0x6F, 0x64, 0x69, 0x65, 0x73, 0x00, 0x4B, 0x01, 0xDA, 
36751
  0x80, 0xA5, 0x02, 0x4B, 0x03, 0xCF, 0x04, 0x63, 0x68, 0x61, 0x6E, 0x05, 0x4B, 0x04, 0xDA, 0x7E, 
36752
  0x08, 0x4B, 0x05, 0xCF, 0x04, 0x66, 0x73, 0x65, 0x74, 0x0B, 0x4B, 0x06, 0xCF, 0x05, 0x66, 0x74, 
36753
  0x65, 0x6D, 0x70, 0x1B, 0x41, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x4F, 0x1B, 
36754
  0x41, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x51, 0x1E, 0x41, 0x0B, 0xCF, 0x07, 
36755
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x50, 0x21, 0x41, 0x0C, 0xDA, 0x43, 0x22, 0x41, 0x0D, 0xCF, 
36756
  0x04, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 
36757
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2C, 0x05, 0x00, 
36758
  0x00, 0x35, 0x02, 0x05, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x02, 0x06, 
36759
  0x00, 0x1B, 0x06, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x33, 0x08, 0x05, 
36760
  0x02, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x31, 0x08, 0x00, 0x00, 0x45, 0x02, 0x00, 
36761
  0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x09, 0x03, 0x02, 0x45, 0x08, 0x00, 0x00, 0x40, 0x02, 0x00, 
36762
  0x00, 0x2C, 0x0A, 0x01, 0x00, 0x33, 0x0A, 0x04, 0x02, 0x45, 0x09, 0x00, 0x00, 0x40, 0x02, 0x00, 
36763
  0x00, 0x1B, 0x0A, 0x02, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x02, 0x00, 0x0B, 0x1B, 0x0B, 0x02, 
36764
  0x00, 0x1F, 0x0B, 0x22, 0x00, 0x3A, 0x02, 0x00, 0x0B, 0x1B, 0x0C, 0x0B, 0x00, 0x1B, 0x0D, 0x02, 
36765
  0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x33, 0x0F, 0x04, 0x0C, 0x31, 0x0D, 0x00, 
36766
  0x00, 0x45, 0x0E, 0x00, 0x00, 0x2C, 0x10, 0x04, 0x00, 0x2C, 0x11, 0x05, 0x00, 0x33, 0x10, 0x11, 
36767
  0x02, 0x31, 0x0E, 0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x0E, 0x06, 0x00, 0x28, 0x10, 0x00, 
36768
  0x00, 0x33, 0x0E, 0x0F, 0x10, 0x31, 0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x0F, 0x01, 
36769
  0x00, 0x33, 0x0F, 0x06, 0x02, 0x45, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x07, 0x00, 0x33, 0x0F, 0x05, 
36770
  0x06, 0x31, 0x06, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x10, 0x08, 0x00, 0x33, 0x10, 0x0E, 
36771
  0x02, 0x45, 0x0F, 0x00, 0x00, 0x32, 0x0A, 0x0F, 0x00, 0x2C, 0x0E, 0x09, 0x00, 0x35, 0x02, 0x0E, 
36772
  0x00, 0x49, 0x0B, 0x00, 0x0B, 0x1C, 0xDF, 0xFF, 0xFF, 0x2D, 0x0B, 0x00, 0x0C, 0x33, 0x0B, 0x03, 
36773
  0x05, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x0C, 0x08, 0x00, 0x33, 0x0C, 0x07, 0x08, 0x31, 0x09, 0x00, 
36774
  0x00, 0x34, 0x0A, 0x00, 0x00, 0x32, 0x02, 0x04, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 
36775
  0x00, 0xBF, 0xFF, 0x8F, 0x44, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36776
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
36777
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36778
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x04, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
36779
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36780
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36781
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36782
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x0C, 0x00, 
36783
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36784
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0xC9, 0xC9, 
36785
  0xC9, 0xC9, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x13, 
36786
  0x00, 0x06, 0xCE, 0x0F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x72, 0x65, 0x6C, 0x65, 
36787
  0x61, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xCF, 0x05, 0x64, 0x65, 0x66, 0x65, 
36788
  0x72, 0xDA, 0x80, 0xB3, 0x00, 0x13, 0x00, 0xCF, 0x03, 0x61, 0x63, 0x71, 0x00, 0x13, 0x01, 0xCF, 
36789
  0x03, 0x72, 0x65, 0x6C, 0x00, 0x13, 0x02, 0xCF, 0x04, 0x6C, 0x6F, 0x63, 0x6B, 0x00, 0x13, 0x03, 
36790
  0xDA, 0x80, 0xC7, 0x00, 0x13, 0x04, 0xDA, 0x80, 0xB8, 0x02, 0x13, 0x06, 0xCF, 0x01, 0x6C, 0x2C, 
36791
  0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x33, 
36792
  0x08, 0x06, 0x02, 0x45, 0x07, 0x00, 0x00, 0x32, 0x00, 0x06, 0x00, 0x45, 0x08, 0x00, 0x00, 0x32, 
36793
  0x01, 0x06, 0x00, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x32, 0x0B, 0x09, 0x00, 0x34, 
36794
  0x03, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x33, 0x0B, 0x07, 0x08, 0x31, 
36795
  0x0A, 0x00, 0x00, 0x45, 0x09, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x0C, 0x00, 0x0C, 
36796
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36797
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36798
  0x00, 0x05, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x03, 
36799
  0x03, 0x03, 0x03, 0x19, 0x00, 0x09, 0xCE, 0x0A, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x2D, 0x61, 
36800
  0x6C, 0x6C, 0xDA, 0x04, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xD8, 
36801
  0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD8, 0x07, 0x65, 0x76, 
36802
  0x2F, 0x74, 0x61, 0x6B, 0x65, 0x00, 0x19, 0x00, 0xDA, 0x80, 0xC1, 0x00, 0x19, 0x01, 0xCF, 0x06, 
36803
  0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x00, 0x19, 0x02, 0xCF, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6F, 
36804
  0x6E, 0x00, 0x19, 0x03, 0xDA, 0x80, 0xBE, 0x00, 0x0B, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
36805
  0x30, 0x36, 0x4A, 0x02, 0x0B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x49, 0x05, 
36806
  0x0B, 0x06, 0xDA, 0x31, 0x0C, 0x19, 0x05, 0xDA, 0x32, 0x10, 0x19, 0x04, 0xCF, 0x07, 0x5F, 0x30, 
36807
  0x30, 0x30, 0x30, 0x36, 0x4B, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x01, 0x05, 0x1B, 0x05, 0x04, 
36808
  0x00, 0x1F, 0x05, 0x08, 0x00, 0x3A, 0x04, 0x01, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x32, 0x06, 0x02, 
36809
  0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x04, 0x07, 0x00, 0x49, 0x05, 0x01, 0x05, 0x1C, 0xF9, 0xFF, 
36810
  0xFF, 0x3F, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x01, 
36811
  0x00, 0x35, 0x04, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x22, 0x06, 0x04, 0x00, 0x1E, 0x06, 0x06, 
36812
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x07, 0x04, 0x04, 
36813
  0x01, 0x1C, 0xFA, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x8F, 0x2E, 0x05, 0x00, 0x05, 0x00, 0x05, 
36814
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x00, 0x05, 
36815
  0x01, 0x0D, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
36816
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xD7, 0x01, 0xCD, 0x02, 
36817
  0xFE, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x05, 0x16, 0x01, 0x01, 0x10, 0xCE, 0x0F, 0x77, 0x61, 
36818
  0x69, 0x74, 0x2D, 0x66, 0x6F, 0x72, 0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0xDA, 0x04, 0xD0, 
36819
  0x02, 0x74, 0x69, 0xD8, 0x09, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xCE, 0x0F, 
36820
  0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x65, 0x64, 0xD8, 
36821
  0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD0, 0x04, 0x64, 
36822
  0x65, 0x61, 0x64, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 
36823
  0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 
36824
  0xFF, 0x00, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xB9, 0xBF, 0xFF, 0x00, 
36825
  0x07, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x80, 0xBB, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
36826
  0x80, 0xBC, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x80, 0xBD, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x80, 0xBE, 
36827
  0x00, 0x16, 0x00, 0xDA, 0x80, 0xC1, 0x00, 0x16, 0x01, 0xDA, 0x80, 0xD4, 0x00, 0x16, 0x02, 0xDA, 
36828
  0x80, 0xBF, 0x05, 0x16, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x4C, 0x08, 0x16, 
36829
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x4D, 0x30, 0x03, 0x00, 0x00, 0x2C, 0x04, 
36830
  0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 
36831
  0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x37, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x04, 
36832
  0x02, 0x00, 0x33, 0x00, 0x01, 0x04, 0x2D, 0x06, 0x00, 0x0B, 0x35, 0x04, 0x06, 0x00, 0x31, 0x03, 
36833
  0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x04, 0x06, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x25, 0x06, 
36834
  0x04, 0x07, 0x1E, 0x06, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x39, 0x04, 0x05, 0x03, 0x03, 0x04, 
36835
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x21, 0x02, 
36836
  0x11, 0xCE, 0x05, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x80, 0xD3, 0xD0, 0x02, 0x6F, 
36837
  0x6B, 0xCE, 0x10, 0x73, 0x69, 0x62, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 
36838
  0x6C, 0x65, 0x64, 0xD8, 0x10, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 
36839
  0x76, 0x61, 0x6C, 0x75, 0x65, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 0xFF, 0x01, 0x02, 
36840
  0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x80, 
36841
  0xB7, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x80, 0xB9, 0xBF, 
36842
  0xFF, 0x01, 0x07, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x80, 0xBB, 0xBF, 0xFF, 0x01, 
36843
  0x09, 0xDA, 0x80, 0xBC, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x80, 0xBD, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 
36844
  0x80, 0xBE, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xC1, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xD4, 
36845
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xBF, 0x02, 0x21, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
36846
  0x30, 0x36, 0x4E, 0x0A, 0x20, 0x04, 0xCF, 0x03, 0x73, 0x69, 0x67, 0x0C, 0x20, 0x05, 0xCF, 0x05, 
36847
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x01, 0x00, 0x01, 0x3F, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 
36848
  0x00, 0x22, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 
36849
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x3D, 0x03, 0x02, 0x00, 0x1B, 0x04, 0x03, 
36850
  0x00, 0x3D, 0x03, 0x02, 0x01, 0x1B, 0x05, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x25, 0x02, 0x04, 
36851
  0x03, 0x1E, 0x02, 0x05, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x28, 0x06, 0x00, 0x00, 0x3C, 0x03, 0x05, 
36852
  0x06, 0x1C, 0x0B, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x01, 0x2C, 0x07, 0x02, 
36853
  0x00, 0x33, 0x03, 0x06, 0x07, 0x2D, 0x06, 0x01, 0x0B, 0x35, 0x03, 0x06, 0x00, 0x31, 0x05, 0x00, 
36854
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x03, 0x06, 0x00, 0x39, 0x06, 0x03, 0x05, 0x07, 0x01, 0x01, 
36855
  0x01, 0x1C, 0xE4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0x36, 0x0F, 0x00, 
36856
  0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
36857
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0B, 0x00, 
36858
  0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
36859
  0x00, 0x0D, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0xBF, 0xFA, 0x07, 0x00, 0x07, 0x00, 
36860
  0x07, 0x8F, 0x35, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36861
  0x00, 0x05, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 
36862
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x00, 
36863
  0x00, 0x00, 0xDB, 0x00, 0xC9, 0xC9, 0xCF, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6C, 
36864
  0x69, 0x73, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0x70, 0x03, 0xDA, 
36865
  0x06, 0xCE, 0x44, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x29, 
36866
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 
36867
  0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x62, 0x75, 
36868
  0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 
36869
  0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36870
  0x06, 0x00, 0x00, 0x00, 0x04, 0x10, 0x01, 0x11, 0xCE, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
36871
  0x2F, 0x6C, 0x69, 0x73, 0x74, 0xDA, 0x04, 0xD0, 0x04, 0x6D, 0x6F, 0x64, 0x65, 0xD8, 0x07, 0x6F, 
36872
  0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0xD8, 0x06, 0x6F, 0x73, 0x2F, 0x64, 0x69, 0x72, 0xD7, 0x00, 
36873
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x01, 0x02, 0x02, 0x0C, 0x00, 0x04, 0xCE, 0x04, 0x73, 
36874
  0x6F, 0x72, 0x74, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x15, 0x06, 0x00, 0x00, 0xCD, 
36875
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x01, 0x3C, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 
36876
  0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 
36877
  0x05, 0x23, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 
36878
  0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
36879
  0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36880
  0x12, 0x04, 0x04, 0x04, 0x02, 0x68, 0x00, 0x0D, 0xCE, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x68, 
36881
  0x65, 0x6C, 0x70, 0xDA, 0x04, 0xDA, 0x80, 0xF4, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x14, 0x06, 
36882
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x01, 0x3E, 0x3F, 0x01, 0x00, 0x00, 
36883
  0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 
36884
  0x3A, 0x04, 0x00, 0x05, 0x21, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 
36885
  0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 
36886
  0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x68, 0x00, 0xCF, 
36887
  0x01, 0x61, 0x00, 0x68, 0x01, 0xCF, 0x02, 0x6C, 0x6F, 0x00, 0x68, 0x02, 0xCF, 0x02, 0x68, 0x69, 
36888
  0x00, 0x68, 0x03, 0xCF, 0x07, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x00, 0x68, 0x04, 0xCF, 
36889
  0x09, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0x09, 0x67, 0x09, 0xDA, 0x1E, 0x0A, 
36890
  0x67, 0x0A, 0xDA, 0x80, 0x87, 0x0B, 0x67, 0x0B, 0xCF, 0x01, 0x7A, 0x25, 0x67, 0x0C, 0xCF, 0x05, 
36891
  0x70, 0x69, 0x76, 0x6F, 0x74, 0x26, 0x67, 0x08, 0xCF, 0x04, 0x6C, 0x65, 0x66, 0x74, 0x27, 0x67, 
36892
  0x0D, 0xCF, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x27, 0x50, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
36893
  0x30, 0x30, 0x30, 0x56, 0x53, 0x59, 0x10, 0xCF, 0x03, 0x74, 0x6D, 0x70, 0x2E, 0x04, 0x00, 0x00, 
36894
  0x23, 0x05, 0x01, 0x02, 0x1E, 0x05, 0x65, 0x00, 0x3A, 0x06, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 
36895
  0x2B, 0x09, 0x02, 0x00, 0x0D, 0x08, 0x07, 0x09, 0x3A, 0x07, 0x00, 0x08, 0x3A, 0x08, 0x00, 0x02, 
36896
  0x1B, 0x09, 0x06, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x48, 0x0C, 0x09, 0x0A, 
36897
  0x1E, 0x0C, 0x0D, 0x00, 0x48, 0x0E, 0x0A, 0x0B, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0A, 0x00, 
36898
  0x1C, 0x07, 0x00, 0x00, 0x48, 0x10, 0x0B, 0x09, 0x1E, 0x10, 0x03, 0x00, 0x1B, 0x0F, 0x09, 0x00, 
36899
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x0B, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x08, 0x0D, 0x00, 
36900
  0x1C, 0x0C, 0x00, 0x00, 0x48, 0x0E, 0x0B, 0x0A, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0A, 0x00, 
36901
  0x1C, 0x07, 0x00, 0x00, 0x48, 0x10, 0x09, 0x0B, 0x1E, 0x10, 0x03, 0x00, 0x1B, 0x0F, 0x09, 0x00, 
36902
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x0B, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x08, 0x0D, 0x00, 
36903
  0x1B, 0x0C, 0x08, 0x00, 0x1B, 0x08, 0x01, 0x00, 0x1B, 0x0D, 0x02, 0x00, 0x2C, 0x0F, 0x00, 0x00, 
36904
  0x25, 0x0E, 0x03, 0x0F, 0x1E, 0x0E, 0x0C, 0x00, 0x3A, 0x0F, 0x00, 0x08, 0x23, 0x10, 0x0F, 0x0C, 
36905
  0x1E, 0x10, 0x03, 0x00, 0x05, 0x08, 0x08, 0x01, 0x1C, 0xFC, 0xFF, 0xFF, 0x3A, 0x0F, 0x00, 0x0D, 
36906
  0x23, 0x10, 0x0C, 0x0F, 0x1E, 0x10, 0x03, 0x00, 0x07, 0x0D, 0x0D, 0x01, 0x1C, 0xFC, 0xFF, 0xFF, 
36907
  0x1C, 0x1B, 0x00, 0x00, 0x2C, 0x10, 0x01, 0x00, 0x25, 0x0F, 0x03, 0x10, 0x1E, 0x0F, 0x0C, 0x00, 
36908
  0x3A, 0x10, 0x00, 0x08, 0x21, 0x11, 0x10, 0x0C, 0x1E, 0x11, 0x03, 0x00, 0x05, 0x08, 0x08, 0x01, 
36909
  0x1C, 0xFC, 0xFF, 0xFF, 0x3A, 0x10, 0x00, 0x0D, 0x21, 0x11, 0x0C, 0x10, 0x1E, 0x11, 0x03, 0x00, 
36910
  0x07, 0x0D, 0x0D, 0x01, 0x1C, 0xFC, 0xFF, 0xFF, 0x1C, 0x0D, 0x00, 0x00, 0x3A, 0x10, 0x00, 0x08, 
36911
  0x32, 0x10, 0x0C, 0x00, 0x35, 0x11, 0x03, 0x00, 0x1E, 0x11, 0x03, 0x00, 0x05, 0x08, 0x08, 0x01, 
36912
  0x1C, 0xFB, 0xFF, 0xFF, 0x3A, 0x10, 0x00, 0x0D, 0x32, 0x0C, 0x10, 0x00, 0x35, 0x11, 0x03, 0x00, 
36913
  0x1E, 0x11, 0x03, 0x00, 0x07, 0x0D, 0x0D, 0x01, 0x1C, 0xFB, 0xFF, 0xFF, 0x48, 0x0E, 0x08, 0x0D, 
36914
  0x1E, 0x0E, 0x08, 0x00, 0x3A, 0x0F, 0x00, 0x08, 0x1B, 0x10, 0x0F, 0x00, 0x3A, 0x0F, 0x00, 0x0D, 
36915
  0x3C, 0x00, 0x08, 0x0F, 0x3C, 0x00, 0x0D, 0x10, 0x05, 0x08, 0x08, 0x01, 0x07, 0x0D, 0x0D, 0x01, 
36916
  0x47, 0x0E, 0x08, 0x0D, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xCC, 0xFF, 0xFF, 
36917
  0x23, 0x0E, 0x01, 0x0D, 0x1E, 0x0E, 0x04, 0x00, 0x33, 0x00, 0x01, 0x0D, 0x31, 0x03, 0x00, 0x00, 
36918
  0x35, 0x0F, 0x04, 0x00, 0x23, 0x0E, 0x08, 0x02, 0x1E, 0x0E, 0x04, 0x00, 0x33, 0x00, 0x08, 0x02, 
36919
  0x31, 0x03, 0x00, 0x00, 0x35, 0x0F, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x83, 0xA5, 0x01, 0x01, 
36920
  0x09, 0x00, 0x03, 0x01, 0x13, 0x01, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 0x01, 0x13, 0xBF, 
36921
  0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
36922
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
36923
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
36924
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0x02, 0x07, 
36925
  0x00, 0x07, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
36926
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
36927
  0x07, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
36928
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x07, 0x03, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
36929
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
36930
  0x01, 0x0D, 0x00, 0x07, 0x01, 0x12, 0x00, 0x09, 0x01, 0x17, 0x00, 0x09, 0x01, 0x09, 0x01, 0x09, 
36931
  0x01, 0x09, 0x01, 0x0B, 0x00, 0x07, 0x00, 0x1B, 0xBF, 0xF5, 0x05, 0x0C, 0x09, 0x00, 0x05, 0x01, 
36932
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
36933
  0xE9, 0x01, 0x00, 0x0C, 0x00, 0xDA, 0x33, 0x00, 0x0C, 0x01, 0xDA, 0x80, 0xFD, 0x00, 0x0C, 0x02, 
36934
  0xCF, 0x04, 0x73, 0x6F, 0x72, 0x74, 0x04, 0x0C, 0x04, 0xDA, 0x80, 0xFD, 0x20, 0x01, 0x03, 0x00, 
36935
  0x2C, 0x03, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x01, 0x00, 0x1B, 0x04, 0x03, 0x00, 
36936
  0x3F, 0x05, 0x00, 0x00, 0x07, 0x06, 0x05, 0x01, 0x2B, 0x05, 0x00, 0x00, 0x33, 0x00, 0x05, 0x06, 
36937
  0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x36, 0x05, 0x00, 0x00, 0x83, 0xC4, 0x03, 0x00, 
36938
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x17, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 
36939
  0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFF, 0x00, 0x00, 0xCF, 0x04, 0x73, 0x65, 0x70, 0x73, 0xBF, 
36940
  0xFF, 0x00, 0x02, 0xCF, 0x03, 0x73, 0x65, 0x70, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x0C, 0x62, 0x75, 
36941
  0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x72, 0x70, 0x61, 0x74, 0x68, 0xBF, 0xFF, 0x00, 0x04, 0xCF, 0x0A, 
36942
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x64, 0x69, 0x72, 0xBF, 0xFF, 0x00, 0x05, 0xCF, 0x0B, 
36943
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 
36944
  0x15, 0x67, 0x65, 0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2D, 0x66, 0x69, 
36945
  0x6C, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xCF, 0x12, 0x70, 0x72, 0x69, 0x6D, 
36946
  0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xBF, 0xFF, 
36947
  0x00, 0x08, 0xCF, 0x09, 0x67, 0x65, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x73, 0xBF, 0xFF, 0x00, 
36948
  0x09, 0xCF, 0x04, 0x72, 0x6D, 0x72, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xCF, 0x08, 0x63, 0x6F, 0x70, 
36949
  0x79, 0x66, 0x69, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x0B, 0xCF, 0x06, 0x63, 0x6F, 0x70, 0x79, 0x72, 
36950
  0x66, 0xBF, 0xFF, 0x00, 0x0C, 0xCF, 0x0D, 0x73, 0x79, 0x6E, 0x63, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 
36951
  0x66, 0x65, 0x73, 0x74, 0xBF, 0xFF, 0x00, 0x0D, 0xCF, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
36952
  0x2F, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0xBF, 0xFF, 0x00, 0x0E, 0xCF, 0x11, 0x67, 
36953
  0x65, 0x74, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
36954
  0xBF, 0xFF, 0x00, 0x0F, 0xCF, 0x07, 0x64, 0x6F, 0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0x00, 0x10, 0x00, 
36955
  0xDA, 0x80, 0xE9, 0x02, 0x10, 0x02, 0xCF, 0x01, 0x64, 0x2D, 0x02, 0x00, 0x04, 0x35, 0x01, 0x02, 
36956
  0x00, 0x1B, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 
36957
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x07, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x02, 
36958
  0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x36, 0x05, 0x00, 
36959
  0x00, 0x40, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x73, 0x0C, 0x00, 0x0C, 
36960
  0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 
36961
  0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x21, 0xD5, 
36962
  0x03, 0xD0, 0x07, 0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0xCE, 0x01, 0x5C, 0xD0, 0x06, 0x63, 
36963
  0x79, 0x67, 0x77, 0x69, 0x6E, 0xDA, 0x81, 0x17, 0xD0, 0x05, 0x6D, 0x69, 0x6E, 0x67, 0x77, 0xDA, 
36964
  0x81, 0x17, 0xC9, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x07, 
36965
  0x01, 0x02, 0xCE, 0x03, 0x73, 0x65, 0x70, 0xDA, 0x04, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x77, 0x68, 
36966
  0x69, 0x63, 0x68, 0xCE, 0x01, 0x2F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0x00, 0x07, 0x00, 
36967
  0xDA, 0x81, 0x07, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x3B, 
36968
  0x02, 0x03, 0x01, 0x20, 0x02, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 
36969
  0xFF, 0x8F, 0xF9, 0x1B, 0x00, 0x1B, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
36970
  0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 
36971
  0x02, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x72, 0x70, 0x61, 0x74, 0x68, 0xDA, 
36972
  0x04, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x00, 0x03, 
36973
  0x00, 0xCF, 0x04, 0x70, 0x61, 0x74, 0x68, 0x00, 0x03, 0x01, 0xDA, 0x81, 0x08, 0x31, 0x00, 0x00, 
36974
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8F, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 
36975
  0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x00, 0x01, 0x04, 0x13, 0x01, 0x06, 0xCE, 
36976
  0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x64, 0x69, 0x72, 0xDA, 0x04, 0xD0, 0x07, 0x73, 
36977
  0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0xD8, 0x03, 0x64, 0x79, 0x6E, 0xCE, 0x06, 0x62, 0x75, 0x6E, 
36978
  0x64, 0x6C, 0x65, 0xD8, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
36979
  0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 
36980
  0x00, 0x13, 0x00, 0xCF, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 
36981
  0x00, 0x13, 0x01, 0xDA, 0x81, 0x09, 0x02, 0x13, 0x03, 0xCF, 0x01, 0x73, 0x2D, 0x03, 0x00, 0x02, 
36982
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 
36983
  0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x03, 
36984
  0x35, 0x05, 0x06, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 
36985
  0x28, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x33, 0x05, 0x03, 0x06, 0x32, 0x04, 0x00, 0x00, 
36986
  0x2C, 0x06, 0x03, 0x00, 0x36, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
36987
  0x05, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
36988
  0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
36989
  0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x04, 0x10, 
36990
  0x01, 0x08, 0xCE, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xDA, 
36991
  0x04, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x27, 0xDA, 0x81, 0x28, 0xBF, 0xFF, 0x00, 
36992
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
36993
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0x00, 0x10, 0x00, 0xDA, 0x81, 0x29, 0x00, 
36994
  0x10, 0x01, 0xCF, 0x08, 0x66, 0x69, 0x6C, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x10, 0x02, 0xDA, 
36995
  0x81, 0x0A, 0x02, 0x10, 0x04, 0xDA, 0x81, 0x2A, 0x2D, 0x04, 0x00, 0x02, 0x35, 0x03, 0x04, 0x00, 
36996
  0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 
36997
  0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x03, 0x35, 0x06, 0x07, 0x00, 
36998
  0x2C, 0x05, 0x02, 0x00, 0x33, 0x06, 0x04, 0x05, 0x33, 0x04, 0x00, 0x04, 0x31, 0x01, 0x00, 0x00, 
36999
  0x2C, 0x05, 0x03, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x06, 0x0C, 0x00, 0x0C, 0x00, 
37000
  0x05, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
37001
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 
37002
  0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x07, 0xCE, 0x15, 0x67, 0x65, 
37003
  0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x6E, 
37004
  0x61, 0x6D, 0x65, 0xDA, 0x04, 0xCE, 0x0C, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2E, 
37005
  0x6A, 0x64, 0x6E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 
37006
  0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 
37007
  0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0x00, 0x04, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x04, 0x01, 0xDA, 
37008
  0x81, 0x0B, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x05, 0x36, 0x02, 
37009
  0x00, 0x00, 0xBF, 0xFF, 0x90, 0x0B, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 
37010
  0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x13, 0x01, 0x0A, 0xCE, 0x12, 
37011
  0x70, 0x72, 0x69, 0x6D, 0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 
37012
  0x68, 0x73, 0xDA, 0x04, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x64, 0x69, 0x72, 0xDA, 0x80, 
37013
  0xEF, 0xDA, 0x80, 0xF0, 0xCE, 0x26, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x66, 0x61, 0x69, 
37014
  0x6C, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 
37015
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0xBF, 0xFF, 0x00, 0x00, 
37016
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
37017
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
37018
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0x00, 0x13, 0x00, 0xDA, 0x81, 0x0C, 0x02, 0x13, 0x02, 0xDA, 
37019
  0x81, 0x2A, 0x05, 0x13, 0x04, 0xDA, 0x81, 0x22, 0x0D, 0x13, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37020
  0x30, 0x30, 0x37, 0x33, 0x2D, 0x02, 0x00, 0x02, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 
37021
  0x2D, 0x04, 0x00, 0x04, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 0x00, 
37022
  0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x04, 0x06, 0x00, 
37023
  0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x02, 0x00, 
37024
  0x03, 0x07, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x01, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
37025
  0xBF, 0xFF, 0x90, 0x0F, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 
37026
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 
37027
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
37028
  0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x09, 0x00, 0x03, 0xCE, 0x09, 0x67, 0x65, 0x74, 0x2D, 
37029
  0x66, 0x69, 0x6C, 0x65, 0x73, 0xDA, 0x04, 0xD0, 0x05, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x09, 
37030
  0x00, 0xCF, 0x08, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x00, 0x09, 0x01, 0xDA, 0x81, 
37031
  0x0D, 0x05, 0x09, 0x02, 0xCF, 0x05, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x40, 0x02, 0x00, 0x00, 0x2C, 
37032
  0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x20, 0x03, 0x02, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1B, 
37033
  0x02, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x02, 0x03, 0x02, 0x00, 0x00, 0x90, 
37034
  0x15, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
37035
  0xBF, 0xFE, 0x03, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x07, 0x27, 
37036
  0x01, 0x0F, 0xCE, 0x04, 0x72, 0x6D, 0x72, 0x66, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xD8, 0x08, 0x6F, 
37037
  0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0xD0, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
37038
  0x72, 0x79, 0xDA, 0x80, 0xF1, 0xDA, 0x81, 0x28, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 
37039
  0x69, 0x72, 0xDA, 0x4F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
37040
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
37041
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
37042
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0x00, 0x27, 0x00, 0xDA, 
37043
  0x1E, 0x00, 0x27, 0x01, 0xDA, 0x81, 0x0E, 0x05, 0x26, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37044
  0x30, 0x37, 0x34, 0x0D, 0x22, 0x05, 0xDA, 0x81, 0x2A, 0x11, 0x1F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
37045
  0x30, 0x30, 0x30, 0x37, 0x36, 0x14, 0x1F, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
37046
  0x35, 0x17, 0x1F, 0x08, 0xDA, 0x80, 0x87, 0x2E, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x32, 
37047
  0x00, 0x02, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x20, 
37048
  0x03, 0x02, 0x00, 0x1C, 0x1F, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x25, 0x02, 0x03, 0x04, 0x1E, 
37049
  0x02, 0x19, 0x00, 0x2D, 0x05, 0x00, 0x02, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 
37050
  0x00, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x04, 0x06, 0x00, 0x1B, 0x06, 0x04, 0x00, 0x28, 
37051
  0x07, 0x00, 0x00, 0x49, 0x04, 0x06, 0x07, 0x1B, 0x07, 0x04, 0x00, 0x1F, 0x07, 0x0A, 0x00, 0x3A, 
37052
  0x04, 0x06, 0x07, 0x1B, 0x08, 0x04, 0x00, 0x33, 0x00, 0x05, 0x08, 0x2C, 0x09, 0x04, 0x00, 0x35, 
37053
  0x04, 0x09, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x09, 0x01, 0x00, 0x49, 0x07, 0x06, 0x07, 0x1C, 
37054
  0xF7, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x04, 0x06, 0x00, 0x1C, 
37055
  0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x06, 0x00, 0x35, 0x04, 0x05, 0x00, 0x04, 
37056
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x19, 0x03, 0x03, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37057
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x1B, 0x00, 0x1B, 
37058
  0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
37059
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x16, 0x00, 0x16, 
37060
  0xBF, 0xFF, 0x14, 0x00, 0x14, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFA, 0x05, 0x07, 0x07, 
37061
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xF6, 0x03, 0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
37062
  0x0A, 0x02, 0x02, 0x02, 0x09, 0x1F, 0x00, 0x01, 0x05, 0xCE, 0x08, 0x63, 0x6F, 0x70, 0x79, 0x66, 
37063
  0x69, 0x6C, 0x65, 0xDA, 0x04, 0xD0, 0x02, 0x72, 0x62, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 
37064
  0x6F, 0x70, 0x65, 0x6E, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xD0, 0x05, 0x63, 0x6C, 0x6F, 0x73, 
37065
  0x65, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xCE, 0x2B, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
37066
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 
37067
  0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 
37068
  0x64, 0x69, 0x6E, 0x67, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 
37069
  0xFF, 0xFF, 0xFF, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0xDA, 
37070
  0x04, 0xD8, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
37071
  0x00, 0x06, 0x00, 0xCF, 0x03, 0x66, 0x6D, 0x74, 0x00, 0x06, 0x01, 0xCF, 0x04, 0x61, 0x72, 0x67, 
37072
  0x73, 0x00, 0x06, 0x02, 0xCF, 0x06, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0x31, 0x00, 0x00, 0x00, 
37073
  0x34, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 
37074
  0x04, 0x00, 0x00, 0x00, 0x80, 0xCD, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 
37075
  0x03, 0x00, 0x1F, 0x00, 0xCF, 0x04, 0x66, 0x72, 0x6F, 0x6D, 0x00, 0x1F, 0x01, 0xCF, 0x02, 0x74, 
37076
  0x6F, 0x00, 0x1F, 0x02, 0xDA, 0x81, 0x0F, 0x0B, 0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37077
  0x30, 0x37, 0x37, 0x0E, 0x1B, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x38, 0x2C, 
37078
  0x03, 0x00, 0x00, 0x32, 0x00, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 
37079
  0x04, 0x03, 0x00, 0x1E, 0x03, 0x16, 0x00, 0x30, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x32, 
37080
  0x05, 0x06, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x28, 
37081
  0x07, 0x00, 0x00, 0x37, 0x06, 0x05, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
37082
  0x08, 0x04, 0x00, 0x35, 0x06, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 
37083
  0x06, 0x08, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x25, 0x08, 0x06, 0x09, 0x1E, 0x08, 0x02, 0x00, 0x03, 
37084
  0x07, 0x00, 0x00, 0x39, 0x06, 0x07, 0x05, 0x03, 0x06, 0x00, 0x00, 0x2C, 0x05, 0x07, 0x00, 0x32, 
37085
  0x05, 0x00, 0x00, 0x2C, 0x05, 0x08, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
37086
  0x07, 0x00, 0x00, 0x00, 0x09, 0x21, 0x01, 0x01, 0x05, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xD0, 0x02, 
37087
  0x77, 0x62, 0xDA, 0x81, 0x46, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0x47, 0xDA, 0x80, 
37088
  0xDE, 0xDA, 0x80, 0xDF, 0xCE, 0x30, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 
37089
  0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 
37090
  0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 
37091
  0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0xDA, 0x81, 0x49, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4F, 
37092
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x50, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x0F, 0x0C, 0x1C, 
37093
  0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x39, 0x0F, 0x1C, 0x04, 0xCF, 0x07, 0x5F, 
37094
  0x30, 0x30, 0x30, 0x30, 0x37, 0x61, 0x2D, 0x00, 0x00, 0x01, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 
37095
  0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x1E, 0x00, 
37096
  0x16, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 
37097
  0x03, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x28, 0x04, 0x00, 0x00, 0x37, 0x03, 
37098
  0x02, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x35, 0x03, 
37099
  0x05, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x35, 0x03, 0x05, 0x00, 0x2C, 0x06, 
37100
  0x06, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x04, 0x00, 0x00, 0x39, 0x03, 
37101
  0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x2C, 0x02, 0x07, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x32, 0x02, 
37102
  0x03, 0x00, 0x2C, 0x02, 0x08, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 
37103
  0x00, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x25, 0x02, 0x06, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xD0, 0x0B, 
37104
  0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x80, 0xF0, 0xCD, 0x00, 
37105
  0x01, 0x00, 0x00, 0xD8, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 
37106
  0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
37107
  0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xCE, 0x06, 0x65, 0x6D, 0x70, 0x74, 0x79, 
37108
  0x3F, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xCF, 0x02, 0x78, 0x73, 0x00, 0x05, 0x01, 0xCF, 0x06, 0x65, 
37109
  0x6D, 0x70, 0x74, 0x79, 0x3F, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 0x03, 0x28, 0x04, 0x00, 
37110
  0x00, 0x25, 0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x76, 0x32, 0x00, 0x32, 0x00, 0x2B, 0x00, 
37111
  0x2B, 0x00, 0x2B, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x74, 0x72, 0x69, 0x6D, 
37112
  0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 
37113
  0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD8, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x63, 
37114
  0x6C, 0x65, 0x61, 0x72, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4F, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
37115
  0x81, 0x50, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x01, 0xCF, 0x03, 0x66, 
37116
  0x74, 0x6F, 0x05, 0x25, 0x01, 0xCF, 0x04, 0x70, 0x65, 0x72, 0x6D, 0x0A, 0x25, 0x02, 0xCF, 0x01, 
37117
  0x62, 0x2D, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 
37118
  0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x2C, 0x00, 0x02, 0x00, 0x31, 0x00, 0x00, 
37119
  0x00, 0x2C, 0x02, 0x03, 0x00, 0x35, 0x00, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x2D, 0x00, 0x00, 
37120
  0x04, 0x2C, 0x03, 0x02, 0x00, 0x33, 0x00, 0x03, 0x02, 0x2C, 0x03, 0x04, 0x00, 0x35, 0x00, 0x03, 
37121
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x05, 0x00, 0x35, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x09, 
37122
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x06, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x03, 0x00, 
37123
  0x01, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1C, 0x09, 0x00, 
37124
  0x00, 0x2D, 0x00, 0x01, 0x01, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x08, 0x00, 0x35, 0x00, 0x03, 
37125
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x09, 0x00, 0x35, 0x00, 0x03, 0x00, 0x1C, 0xE8, 0xFF, 
37126
  0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x2B, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
37127
  0x15, 0x00, 0x15, 0x00, 0x0B, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0B, 0x02, 
37128
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
37129
  0x0D, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 
37130
  0x41, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 
37131
  0xFC, 0x0B, 0x00, 0x0B, 0x90, 0x29, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
37132
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37133
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37134
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x09, 0x09, 0x00, 
37135
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x90, 0x28, 0x15, 0x00, 0x15, 
37136
  0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37137
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37138
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37139
  0x00, 0x05, 0x0B, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x13, 0x00, 0x00, 0x00, 0xD7, 0x01, 
37140
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x02, 0x02, 0x02, 0x07, 0x2B, 0x01, 0x12, 0xCE, 0x06, 0x63, 
37141
  0x6F, 0x70, 0x79, 0x72, 0x66, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xD0, 0x04, 0x66, 
37142
  0x69, 0x6C, 0x65, 0xDA, 0x81, 0x3E, 0xDA, 0x81, 0x33, 0xDA, 0x80, 0xF1, 0xDA, 0x81, 0x28, 0xBF, 
37143
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 
37144
  0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
37145
  0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 
37146
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 
37147
  0x00, 0x0A, 0xDA, 0x81, 0x0F, 0x00, 0x2B, 0x00, 0xDA, 0x81, 0x4F, 0x00, 0x2B, 0x01, 0xDA, 0x81, 
37148
  0x50, 0x00, 0x2B, 0x02, 0xDA, 0x81, 0x10, 0x05, 0x2A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37149
  0x30, 0x37, 0x62, 0x12, 0x2A, 0x07, 0xDA, 0x81, 0x2A, 0x19, 0x2A, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
37150
  0x30, 0x30, 0x30, 0x37, 0x64, 0x1C, 0x2A, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
37151
  0x63, 0x1F, 0x2A, 0x0A, 0xDA, 0x80, 0x87, 0x2E, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 
37152
  0x00, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 
37153
  0x05, 0x02, 0x00, 0x25, 0x03, 0x04, 0x05, 0x1E, 0x03, 0x05, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2D, 
37154
  0x06, 0x00, 0x0A, 0x35, 0x05, 0x06, 0x00, 0x1C, 0x1E, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 
37155
  0x05, 0x04, 0x06, 0x1E, 0x05, 0x1B, 0x00, 0x2D, 0x07, 0x00, 0x02, 0x35, 0x06, 0x07, 0x00, 0x1B, 
37156
  0x07, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x06, 0x08, 0x00, 0x31, 
37157
  0x00, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x06, 0x08, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x28, 
37158
  0x09, 0x00, 0x00, 0x49, 0x06, 0x08, 0x09, 0x1B, 0x09, 0x06, 0x00, 0x1F, 0x09, 0x0D, 0x00, 0x3A, 
37159
  0x06, 0x08, 0x09, 0x1B, 0x0A, 0x06, 0x00, 0x33, 0x00, 0x07, 0x0A, 0x2C, 0x0B, 0x06, 0x00, 0x35, 
37160
  0x06, 0x0B, 0x00, 0x33, 0x01, 0x07, 0x0A, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x32, 
37161
  0x06, 0x0B, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x49, 0x09, 0x08, 0x09, 0x1C, 0xF4, 0xFF, 0xFF, 0x04, 
37162
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x35, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37163
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 
37164
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x1B, 0x00, 0x1B, 0x00, 0x14, 0x01, 0x14, 0x00, 
37165
  0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
37166
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x30, 0x00, 
37167
  0x30, 0x00, 0x30, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFF, 0x14, 0x00, 0x14, 0xBF, 0xF9, 0x03, 0xDB, 
37168
  0x01, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x07, 0x19, 0x01, 0x10, 
37169
  0xCE, 0x0D, 0x73, 0x79, 0x6E, 0x63, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0xDA, 
37170
  0x04, 0xD0, 0x04, 0x6E, 0x61, 0x6D, 0x65, 0xCE, 0x00, 0xCE, 0x02, 0x25, 0x6A, 0xD8, 0x0D, 0x62, 
37171
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x81, 0x61, 0xCE, 
37172
  0x06, 0x25, 0x2E, 0x39, 0x39, 0x6D, 0x0A, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 
37173
  0x02, 0x03, 0x07, 0x19, 0x00, 0x06, 0xCE, 0x04, 0x73, 0x70, 0x69, 0x74, 0xDA, 0x04, 0xDA, 0x81, 
37174
  0x53, 0xDA, 0x81, 0x46, 0xCE, 0x14, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
37175
  0x6F, 0x70, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0xCE, 0x0B, 0x20, 0x77, 0x69, 0x74, 
37176
  0x68, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x60, 0xD8, 0x0A, 0x66, 
37177
  0x69, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x19, 0x00, 0xDA, 0x81, 0x22, 0x00, 
37178
  0x19, 0x01, 0xCF, 0x08, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x00, 0x19, 0x02, 0xCF, 
37179
  0x04, 0x6D, 0x6F, 0x64, 0x65, 0x00, 0x19, 0x03, 0xCF, 0x04, 0x73, 0x70, 0x69, 0x74, 0x04, 0x19, 
37180
  0x05, 0xDA, 0x81, 0x78, 0x08, 0x19, 0x07, 0xDA, 0x31, 0x20, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x00, 
37181
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x32, 0x00, 0x05, 
37182
  0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x02, 
37183
  0x00, 0x1C, 0x08, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x08, 0x00, 
37184
  0x09, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 0x01, 0x08, 0x00, 
37185
  0x00, 0x32, 0x07, 0x01, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x07, 0x00, 
37186
  0x00, 0x2C, 0x0A, 0x06, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x87, 0x5A, 0x03, 
37187
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
37188
  0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
37189
  0x00, 0x0D, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF9, 
37190
  0x01, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
37191
  0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 
37192
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
37193
  0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 
37194
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0x00, 0x19, 
37195
  0x00, 0xDA, 0x81, 0x39, 0x00, 0x19, 0x01, 0xDA, 0x81, 0x11, 0x02, 0x19, 0x03, 0xCF, 0x02, 0x62, 
37196
  0x6E, 0x06, 0x19, 0x05, 0xCF, 0x0D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2D, 0x6E, 
37197
  0x61, 0x6D, 0x65, 0x0A, 0x19, 0x07, 0xDA, 0x81, 0x64, 0x2C, 0x03, 0x00, 0x00, 0x3B, 0x02, 0x00, 
37198
  0x03, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x06, 0x35, 0x04, 0x05, 
37199
  0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x41, 0x06, 0x00, 
37200
  0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2C, 0x09, 0x03, 
37201
  0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 
37202
  0x00, 0x2C, 0x0A, 0x05, 0x00, 0x33, 0x07, 0x0A, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 
37203
  0x00, 0x32, 0x05, 0x07, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x36, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0x90, 
37204
  0x42, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x05, 
37205
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
37206
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
37207
  0x00, 0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x05, 
37208
  0x14, 0x01, 0x10, 0xCE, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6D, 0x61, 0x6E, 0x69, 
37209
  0x66, 0x65, 0x73, 0x74, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
37210
  0x01, 0x03, 0x07, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x04, 
37211
  0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x67, 0x00, 0x07, 0x00, 0xDA, 0x81, 0x22, 0x00, 
37212
  0x07, 0x01, 0xCF, 0x07, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2C, 0x02, 0x00, 0x00, 0x32, 
37213
  0x00, 0x02, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x25, 
37214
  0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x8B, 0x63, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
37215
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCE, 0x12, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
37216
  0x65, 0x20, 0x25, 0x76, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0xDA, 0x81, 0x49, 0xD7, 0x00, 0xCD, 
37217
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x07, 0x15, 0x00, 0x04, 0xCE, 0x05, 0x73, 0x6C, 
37218
  0x75, 0x72, 0x70, 0xDA, 0x04, 0xDA, 0x81, 0x45, 0xDA, 0x81, 0x46, 0xDA, 0x81, 0x74, 0xDA, 0x81, 
37219
  0x28, 0xD0, 0x03, 0x61, 0x6C, 0x6C, 0xDA, 0x81, 0x59, 0xDA, 0x81, 0x76, 0x00, 0x15, 0x00, 0xDA, 
37220
  0x81, 0x22, 0x00, 0x15, 0x01, 0xCF, 0x05, 0x73, 0x6C, 0x75, 0x72, 0x70, 0x04, 0x15, 0x03, 0xDA, 
37221
  0x31, 0x10, 0x15, 0x05, 0xDA, 0x81, 0x77, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 
37222
  0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 
37223
  0x06, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 
37224
  0x04, 0x05, 0x00, 0x01, 0x04, 0x00, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 
37225
  0x05, 0x05, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
37226
  0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x03, 0x05, 0x00, 0x00, 0x87, 0x51, 0x0A, 0x00, 0x0A, 
37227
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
37228
  0x00, 0x14, 0x00, 0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 
37229
  0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xDA, 0x09, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 
37230
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 
37231
  0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 
37232
  0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 
37233
  0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 
37234
  0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0x00, 0x14, 0x00, 
37235
  0xDA, 0x81, 0x29, 0x00, 0x14, 0x01, 0xDA, 0x81, 0x12, 0x03, 0x14, 0x03, 0xCF, 0x04, 0x6E, 0x61, 
37236
  0x6D, 0x65, 0x07, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x65, 0x31, 0x00, 
37237
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x06, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 
37238
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 
37239
  0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x06, 
37240
  0x02, 0x00, 0x35, 0x04, 0x06, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 
37241
  0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 
37242
  0x90, 0x4D, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
37243
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 
37244
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 0x02, 0xFE, 
37245
  0x00, 0x00, 0x0F, 0x01, 0x01, 0x01, 0x0F, 0x3F, 0x01, 0x02, 0x17, 0xCE, 0x11, 0x67, 0x65, 0x74, 
37246
  0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0xDA, 0x04, 
37247
  0xD8, 0x06, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0xD0, 0x0C, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2D, 
37248
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xCE, 0x01, 0x2E, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xD0, 
37249
  0x02, 0x69, 0x65, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x0E, 0xCE, 0x1E, 0x63, 0x61, 0x6E, 
37250
  0x6E, 0x6F, 0x74, 0x20, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
37251
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0xCE, 0x0C, 0x20, 0x66, 0x6F, 
37252
  0x72, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0xD8, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x74, 
37253
  0xDA, 0x80, 0xDB, 0xD8, 0x05, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0xDA, 0x80, 0xDF, 0xBF, 0xFF, 0x00, 
37254
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
37255
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 
37256
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
37257
  0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 
37258
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 
37259
  0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0x00, 0x3F, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x3F, 
37260
  0x01, 0xDA, 0x81, 0x13, 0x03, 0x3F, 0x03, 0xDA, 0x81, 0x39, 0x06, 0x3F, 0x05, 0xCF, 0x03, 0x64, 
37261
  0x69, 0x72, 0x0B, 0x3F, 0x07, 0xCF, 0x07, 0x77, 0x6F, 0x72, 0x6B, 0x64, 0x69, 0x72, 0x13, 0x3F, 
37262
  0x08, 0xCF, 0x0D, 0x66, 0x69, 0x78, 0x65, 0x64, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 
37263
  0x19, 0x2A, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x66, 0x1C, 0x2A, 0x0C, 0xCF, 
37264
  0x01, 0x5F, 0x2F, 0x3F, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x67, 0x32, 0x3F, 
37265
  0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x68, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 
37266
  0x00, 0x0D, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 
37267
  0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x3B, 0x06, 0x03, 0x07, 0x20, 0x06, 
37268
  0x02, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x31, 0x08, 
37269
  0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x0A, 
37270
  0x00, 0x03, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x30, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 
37271
  0x05, 0x00, 0x32, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 
37272
  0x0B, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0B, 0x0A, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x0A, 
37273
  0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x25, 0x0D, 
37274
  0x0B, 0x0E, 0x1E, 0x0D, 0x08, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x2C, 0x0E, 0x0A, 0x00, 0x33, 0x0B, 
37275
  0x07, 0x0E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x0E, 0x0B, 0x00, 0x35, 0x0B, 0x0E, 0x00, 0x1C, 0x01, 
37276
  0x00, 0x00, 0x30, 0x0A, 0x01, 0x00, 0x2C, 0x0B, 0x0C, 0x00, 0x32, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 
37277
  0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0B, 
37278
  0x0A, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x0D, 0x0D, 0x00, 0x35, 0x0B, 
37279
  0x0D, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 
37280
  0x0E, 0x00, 0x25, 0x0D, 0x0B, 0x0E, 0x1E, 0x0D, 0x02, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x39, 0x0B, 
37281
  0x0C, 0x0A, 0x03, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 
37282
  0x00, 0x01, 0x04, 0x01, 0x06, 0xCE, 0x03, 0x74, 0x72, 0x79, 0xDA, 0x04, 0xDA, 0x81, 0x91, 0xBF, 
37283
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 
37284
  0x03, 0xDA, 0x81, 0x39, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x92, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
37285
  0x81, 0x93, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x94, 0x2D, 0x00, 0x00, 0x07, 0x31, 0x00, 0x00, 
37286
  0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x58, 0x07, 0x00, 0x07, 
37287
  0x00, 0x07, 0x00, 0x07, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x1D, 0x02, 
37288
  0x02, 0x16, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 
37289
  0x00, 0x01, 0x02, 0x0B, 0x00, 0x04, 0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 
37290
  0xDA, 0x04, 0xDA, 0x00, 0xD8, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 
37291
  0x72, 0x6F, 0x74, 0x6F, 0x00, 0x0B, 0x00, 0xCF, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x00, 
37292
  0x0B, 0x01, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x04, 0x0B, 0x03, 0xDA, 
37293
  0x81, 0x9D, 0x09, 0x0B, 0x04, 0xCF, 0x06, 0x6E, 0x65, 0x77, 0x65, 0x6E, 0x76, 0x1E, 0x00, 0x03, 
37294
  0x00, 0x1B, 0x02, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 
37295
  0x00, 0x44, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 
37296
  0x00, 0x1B, 0x04, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 0x89, 0xBD, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
37297
  0x00, 0x0F, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0xBF, 0xFA, 
37298
  0x01, 0xD0, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0xD0, 
37299
  0x0E, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0xD0, 
37300
  0x0F, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 
37301
  0xD0, 0x07, 0x77, 0x6F, 0x72, 0x6B, 0x64, 0x69, 0x72, 0xDA, 0x81, 0x6D, 0xDA, 0x81, 0x25, 0xD0, 
37302
  0x00, 0xDA, 0x80, 0xDC, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 
37303
  0x81, 0x07, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x81, 0x09, 
37304
  0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
37305
  0x01, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x01, 0x09, 
37306
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x81, 
37307
  0x10, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
37308
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 
37309
  0x03, 0xDA, 0x81, 0x39, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x92, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
37310
  0x81, 0x93, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x94, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x95, 
37311
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x96, 0x02, 0x1D, 0x01, 0xCF, 0x07, 0x6E, 0x65, 0x77, 0x2D, 
37312
  0x65, 0x6E, 0x76, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x44, 
37313
  0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x3C, 0x01, 0x03, 0x02, 0x44, 0x02, 0x00, 0x00, 0x2C, 
37314
  0x03, 0x02, 0x00, 0x3C, 0x01, 0x03, 0x02, 0x30, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x3C, 
37315
  0x01, 0x03, 0x02, 0x2C, 0x02, 0x04, 0x00, 0x2D, 0x03, 0x00, 0x07, 0x3C, 0x01, 0x02, 0x03, 0x2C, 
37316
  0x02, 0x05, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x3C, 0x01, 0x02, 0x03, 0x2C, 0x02, 0x06, 0x00, 0x2D, 
37317
  0x03, 0x00, 0x08, 0x3C, 0x01, 0x02, 0x03, 0x30, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x07, 0x00, 0x33, 
37318
  0x02, 0x03, 0x01, 0x2C, 0x04, 0x08, 0x00, 0x35, 0x03, 0x04, 0x00, 0x28, 0x04, 0x00, 0x00, 0x37, 
37319
  0x02, 0x03, 0x04, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 
37320
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x01, 0x02, 0xCE, 0x0F, 0x6D, 0x61, 0x6B, 
37321
  0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x04, 0xDA, 0x81, 
37322
  0x9A, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0xA5, 0x00, 0x04, 0x00, 0xCF, 0x0F, 0x6D, 0x61, 0x6B, 
37323
  0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x2D, 0x01, 0x00, 0x01, 
37324
  0x31, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x5E, 
37325
  0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
37326
  0x04, 0x0F, 0x03, 0x16, 0xCE, 0x08, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x04, 
37327
  0xD0, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x64, 0x69, 0x72, 0xCE, 0x10, 0x40, 0x73, 
37328
  0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0xDA, 0x81, 
37329
  0x28, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
37330
  0x02, 0x06, 0x00, 0x03, 0xCE, 0x07, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0xDA, 0x04, 0xD8, 
37331
  0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x03, 
37332
  0x03, 0x03, 0x0F, 0x48, 0x00, 0x0C, 0xCE, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 
37333
  0x31, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x0F, 0x4D, 
37334
  0x00, 0x01, 0x0E, 0xCE, 0x0B, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 
37335
  0xDA, 0x04, 0xD0, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 
37336
  0xD1, 0x11, 0xD2, 0x03, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
37337
  0x03, 0x09, 0x00, 0x02, 0xCE, 0x09, 0x69, 0x73, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0xDA, 
37338
  0x04, 0xDA, 0x81, 0xA0, 0xD3, 0x00, 0xDA, 0x81, 0x26, 0x00, 0x09, 0x00, 0xDA, 0x81, 0x22, 0x00, 
37339
  0x09, 0x01, 0xCF, 0x09, 0x69, 0x73, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2C, 0x02, 0x00, 
37340
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 
37341
  0x00, 0x3A, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
37342
  0x00, 0x8B, 0x5D, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x34, 
37343
  0x00, 0x34, 0x00, 0x34, 0xD0, 0x07, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0xD7, 0x00, 0xCD, 
37344
  0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x12, 0x63, 0x68, 
37345
  0x65, 0x63, 0x6B, 0x2D, 0x6E, 0x6F, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 
37346
  0xDA, 0x04, 0xDA, 0x81, 0x8C, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 
37347
  0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x3F, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 
37348
  0x01, 0xCF, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x6E, 0x6F, 0x74, 0x2D, 0x72, 0x65, 0x6C, 
37349
  0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
37350
  0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 
37351
  0x00, 0x8B, 0x13, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
37352
  0xD2, 0x03, 0x00, 0xCE, 0x12, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 
37353
  0x2E, 0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xD0, 0x05, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xD7, 0x00, 
37354
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x0E, 0x63, 
37355
  0x68, 0x65, 0x63, 0x6B, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x04, 0xDA, 
37356
  0x81, 0x8C, 0xDA, 0x81, 0xBB, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x0E, 0x63, 
37357
  0x68, 0x65, 0x63, 0x6B, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 
37358
  0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 
37359
  0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x12, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
37360
  0x00, 0x1F, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x3A, 0x63, 0x75, 
37361
  0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xD0, 0x06, 
37362
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xDA, 0x81, 0xC0, 0xD2, 0x03, 0x00, 0xCE, 0x16, 0x3A, 0x63, 
37363
  0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 
37364
  0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xC0, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x3A, 
37365
  0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 
37366
  0x65, 0x3A, 0xD0, 0x06, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x81, 0xC0, 0xD2, 0x03, 0x00, 
37367
  0xCE, 0x12, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 
37368
  0x6D, 0x61, 0x67, 0x65, 0xDA, 0x81, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 
37369
  0x01, 0x01, 0x04, 0x19, 0x00, 0x04, 0xCE, 0x0C, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 0x73, 
37370
  0x2D, 0x64, 0x65, 0x70, 0xDA, 0x04, 0xDA, 0x81, 0x1E, 0xDA, 0x81, 0xBB, 0xCE, 0x01, 0x40, 0xDA, 
37371
  0x81, 0x8C, 0x00, 0x19, 0x00, 0xDA, 0x1E, 0x00, 0x19, 0x01, 0xCF, 0x0C, 0x63, 0x68, 0x65, 0x63, 
37372
  0x6B, 0x2D, 0x69, 0x73, 0x2D, 0x64, 0x65, 0x70, 0x04, 0x16, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37373
  0x30, 0x30, 0x35, 0x6D, 0x0C, 0x15, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6C, 
37374
  0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 
37375
  0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x03, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1C, 0x0F, 0x00, 0x00, 
37376
  0x2C, 0x04, 0x02, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 
37377
  0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x06, 0x00, 0x00, 
37378
  0x2C, 0x06, 0x03, 0x00, 0x32, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 
37379
  0x1B, 0x04, 0x06, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 
37380
  0x03, 0x00, 0x00, 0x00, 0x8B, 0x14, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x21, 0x00, 
37381
  0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 
37382
  0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x5B, 0x00, 0x5B, 0x00, 0x5B, 0x00, 0x5B, 0x00, 0x21, 0x00, 
37383
  0x21, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x3A, 0x73, 0x79, 0x73, 
37384
  0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xC5, 
37385
  0xDA, 0x81, 0xCD, 0xD2, 0x03, 0x00, 0xCE, 0x16, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 
37386
  0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 
37387
  0xC5, 0xDA, 0x81, 0xCD, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 
37388
  0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x81, 0xCA, 0xDA, 
37389
  0x81, 0xCD, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 
37390
  0x6D, 0x61, 0x67, 0x65, 0xDA, 0x81, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
37391
  0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x16, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x70, 0x72, 
37392
  0x6F, 0x6A, 0x65, 0x63, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x04, 
37393
  0xDA, 0x81, 0x1E, 0xDA, 0x81, 0xBB, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x16, 
37394
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x70, 0x72, 0x6F, 0x6A, 0x65, 0x63, 0x74, 0x2D, 0x72, 0x65, 
37395
  0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 
37396
  0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 
37397
  0x00, 0x00, 0x8B, 0x15, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x23, 0x00, 0x23, 0x00, 
37398
  0x23, 0xD2, 0x03, 0x00, 0xCE, 0x0C, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 
37399
  0x65, 0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xDB, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x2E, 0x3A, 0x61, 
37400
  0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 
37401
  0xC5, 0xDA, 0x81, 0xDB, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 
37402
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x81, 0xCA, 0xDA, 0x81, 0xDB, 0xD2, 0x03, 0x00, 
37403
  0xCE, 0x0D, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 
37404
  0x81, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 
37405
  0x02, 0xCE, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x64, 0x79, 0x6E, 0x2D, 0x72, 0x65, 0x6C, 
37406
  0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x04, 0xDA, 0x81, 0xCF, 0xDA, 0x81, 0xBB, 0x00, 0x07, 0x00, 
37407
  0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x64, 0x79, 0x6E, 
37408
  0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 
37409
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 
37410
  0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x11, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1F, 
37411
  0x00, 0x1F, 0x00, 0x1F, 0xD2, 0x03, 0x00, 0xCE, 0x0C, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 
37412
  0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xE6, 0xD2, 0x03, 0x00, 0xCE, 0x11, 
37413
  0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 
37414
  0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xE6, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x3A, 0x40, 0x61, 0x6C, 
37415
  0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x81, 0xCA, 0xDA, 0x81, 0xE6, 
37416
  0xDA, 0x81, 0x26, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x04, 0x10, 
37417
  0x00, 0x04, 0xCE, 0x0A, 0x6D, 0x6F, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0xDA, 0x04, 
37418
  0xDA, 0x1C, 0xD0, 0x03, 0x6E, 0x69, 0x6C, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD8, 
37419
  0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 
37420
  0x69, 0x78, 0x3F, 0x00, 0x10, 0x00, 0xDA, 0x1E, 0x00, 0x10, 0x01, 0xDA, 0x81, 0x22, 0x00, 0x10, 
37421
  0x02, 0xCF, 0x0A, 0x6D, 0x6F, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x03, 0x10, 0x04, 
37422
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x74, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 
37423
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x03, 0x04, 
37424
  0x05, 0x1E, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x25, 0x05, 0x04, 
37425
  0x06, 0x1E, 0x05, 0x04, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x36, 0x06, 0x00, 
37426
  0x00, 0x31, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x8B, 0x6D, 0x09, 0x00, 0x09, 0x00, 0x09, 
37427
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37428
  0x02, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x05, 0x00, 0x05, 0xDA, 0x1A, 0xD8, 0x12, 0x6D, 0x6F, 
37429
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 
37430
  0xDA, 0x81, 0x28, 0xDA, 0x81, 0x7E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x17, 0x02, 0x02, 
37431
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 0xA9, 0x00, 0x2A, 0xCE, 0x03, 0x6D, 0x61, 0x70, 0xDA, 
37432
  0x04, 0xDA, 0x30, 0xDA, 0x2F, 0x00, 0x80, 0xA9, 0x00, 0xDA, 0x31, 0x00, 0x80, 0xA9, 0x01, 0xDA, 
37433
  0x33, 0x00, 0x80, 0xA9, 0x02, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x73, 0x00, 0x80, 0xA9, 0x03, 0xCF, 
37434
  0x03, 0x6D, 0x61, 0x70, 0x01, 0x80, 0xA9, 0x05, 0xDA, 0x7E, 0x03, 0x80, 0xA8, 0x07, 0xCF, 0x05, 
37435
  0x6E, 0x69, 0x6E, 0x64, 0x73, 0x03, 0x80, 0xA8, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
37436
  0x31, 0x64, 0x05, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x66, 0x08, 0x13, 
37437
  0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x65, 0x0B, 0x13, 0x0A, 0xDA, 0x1E, 0x17, 
37438
  0x2C, 0x0A, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x30, 0x18, 0x2C, 0x09, 0xCF, 0x04, 0x6B, 0x65, 0x79, 
37439
  0x30, 0x18, 0x2C, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x68, 0x1B, 0x2C, 0x0C, 
37440
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x67, 0x1E, 0x2C, 0x0D, 0xDA, 0x1E, 0x30, 0x4E, 
37441
  0x0B, 0xDA, 0x82, 0x00, 0x32, 0x4E, 0x0C, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x31, 0x33, 0x4E, 0x0A, 
37442
  0xDA, 0x82, 0x01, 0x34, 0x4E, 0x0D, 0xCF, 0x04, 0x6B, 0x65, 0x79, 0x31, 0x34, 0x4E, 0x01, 0xCF, 
37443
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6A, 0x37, 0x4E, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37444
  0x30, 0x30, 0x31, 0x69, 0x3A, 0x4E, 0x10, 0xDA, 0x1E, 0x52, 0x7A, 0x0C, 0xDA, 0x82, 0x00, 0x54, 
37445
  0x7A, 0x0D, 0xDA, 0x82, 0x04, 0x56, 0x7A, 0x0E, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x32, 0x57, 0x7A, 
37446
  0x0B, 0xDA, 0x82, 0x01, 0x58, 0x7A, 0x0F, 0xDA, 0x82, 0x05, 0x59, 0x7A, 0x10, 0xCF, 0x04, 0x6B, 
37447
  0x65, 0x79, 0x32, 0x59, 0x7A, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6C, 0x5C, 
37448
  0x7A, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6B, 0x5F, 0x7A, 0x13, 0xDA, 0x1E, 
37449
  0x7E, 0x80, 0xA8, 0x0C, 0xCF, 0x09, 0x69, 0x74, 0x65, 0x72, 0x2D, 0x6B, 0x65, 0x79, 0x73, 0x80, 
37450
  0x82, 0x80, 0xA8, 0x0D, 0xCF, 0x0B, 0x63, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 
37451
  0x72, 0x80, 0x83, 0x80, 0xA8, 0x0B, 0xCF, 0x04, 0x64, 0x6F, 0x6E, 0x65, 0x80, 0x83, 0x80, 0xA8, 
37452
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6E, 0x80, 0x86, 0x80, 0xA8, 0x0F, 0xCF, 
37453
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6D, 0x80, 0x89, 0x80, 0xA8, 0x10, 0xDA, 0x1E, 0x80, 
37454
  0x8A, 0x80, 0x9E, 0x0E, 0xDA, 0x43, 0x80, 0x8A, 0x80, 0x9E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37455
  0x30, 0x30, 0x31, 0x6F, 0x80, 0x8E, 0x80, 0x9C, 0x13, 0xCF, 0x07, 0x6F, 0x6C, 0x64, 0x2D, 0x6B, 
37456
  0x65, 0x79, 0x80, 0x90, 0x80, 0x9C, 0x14, 0xCF, 0x02, 0x69, 0x69, 0x80, 0x92, 0x80, 0x9C, 0x15, 
37457
  0xCF, 0x07, 0x6E, 0x65, 0x77, 0x2D, 0x6B, 0x65, 0x79, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 
37458
  0x00, 0x3F, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x26, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x0F, 
37459
  0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 0x0A, 
37460
  0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x08, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 
37461
  0x00, 0x32, 0x05, 0x08, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x49, 0x09, 0x01, 
37462
  0x09, 0x1C, 0xF7, 0xFF, 0xFF, 0x1C, 0x95, 0x00, 0x00, 0x26, 0x08, 0x07, 0x01, 0x1E, 0x08, 0x18, 
37463
  0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 
37464
  0x00, 0x49, 0x0B, 0x01, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x10, 0x00, 0x3A, 0x0B, 0x01, 
37465
  0x0C, 0x1B, 0x0D, 0x0B, 0x00, 0x49, 0x09, 0x0A, 0x09, 0x28, 0x0E, 0x00, 0x00, 0x25, 0x0B, 0x0E, 
37466
  0x09, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 0x0B, 0x0A, 0x09, 0x32, 0x0D, 0x0B, 
37467
  0x00, 0x35, 0x0E, 0x00, 0x00, 0x32, 0x05, 0x0E, 0x00, 0x2C, 0x0F, 0x00, 0x00, 0x35, 0x0B, 0x0F, 
37468
  0x00, 0x49, 0x0C, 0x01, 0x0C, 0x1C, 0xF1, 0xFF, 0xFF, 0x1C, 0x7C, 0x00, 0x00, 0x26, 0x09, 0x07, 
37469
  0x02, 0x1E, 0x09, 0x21, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 
37470
  0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x28, 0x0F, 0x00, 
37471
  0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x16, 0x00, 0x3A, 0x0E, 0x01, 
37472
  0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 
37473
  0x0A, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0F, 0x00, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x28, 0x11, 0x00, 
37474
  0x00, 0x25, 0x0E, 0x11, 0x0D, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x3A, 0x0E, 0x0B, 
37475
  0x0A, 0x3A, 0x11, 0x0C, 0x0D, 0x33, 0x10, 0x0E, 0x11, 0x35, 0x12, 0x00, 0x00, 0x32, 0x05, 0x12, 
37476
  0x00, 0x2C, 0x11, 0x00, 0x00, 0x35, 0x0E, 0x11, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xEB, 0xFF, 
37477
  0xFF, 0x1C, 0x5A, 0x00, 0x00, 0x26, 0x0A, 0x07, 0x03, 0x1E, 0x0A, 0x2B, 0x00, 0x3D, 0x0B, 0x02, 
37478
  0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x01, 0x1B, 0x0D, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 
37479
  0x02, 0x1B, 0x0E, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x10, 0x00, 
37480
  0x00, 0x28, 0x12, 0x00, 0x00, 0x49, 0x11, 0x01, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1F, 0x12, 0x1D, 
37481
  0x00, 0x3A, 0x11, 0x01, 0x12, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x0B, 0x0C, 0x0B, 0x28, 0x14, 0x00, 
37482
  0x00, 0x25, 0x11, 0x14, 0x0B, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x16, 0x00, 0x00, 0x49, 0x0F, 0x0D, 
37483
  0x0F, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0F, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x11, 0x00, 
37484
  0x00, 0x49, 0x10, 0x0E, 0x10, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x10, 0x1E, 0x11, 0x02, 
37485
  0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x11, 0x0C, 0x0B, 0x3A, 0x14, 0x0D, 0x0F, 0x3A, 0x15, 0x0E, 
37486
  0x10, 0x33, 0x13, 0x11, 0x14, 0x31, 0x15, 0x00, 0x00, 0x35, 0x16, 0x00, 0x00, 0x32, 0x05, 0x16, 
37487
  0x00, 0x2C, 0x14, 0x00, 0x00, 0x35, 0x11, 0x14, 0x00, 0x49, 0x12, 0x01, 0x12, 0x1C, 0xE4, 0xFF, 
37488
  0xFF, 0x1C, 0x2E, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 
37489
  0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0B, 0x0D, 
37490
  0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 
37491
  0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x21, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 
37492
  0x00, 0x2B, 0x0E, 0x00, 0x00, 0x23, 0x11, 0x0E, 0x07, 0x1E, 0x11, 0x12, 0x00, 0x3A, 0x12, 0x0C, 
37493
  0x0E, 0x1B, 0x13, 0x12, 0x00, 0x3A, 0x12, 0x02, 0x0E, 0x1B, 0x14, 0x12, 0x00, 0x49, 0x12, 0x14, 
37494
  0x13, 0x1B, 0x15, 0x12, 0x00, 0x28, 0x16, 0x00, 0x00, 0x25, 0x12, 0x16, 0x15, 0x1E, 0x12, 0x04, 
37495
  0x00, 0x29, 0x0B, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0C, 0x0E, 
37496
  0x15, 0x3A, 0x16, 0x14, 0x15, 0x3C, 0x0D, 0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xEE, 0xFF, 
37497
  0xFF, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x34, 0x0D, 0x00, 
37498
  0x00, 0x35, 0x0E, 0x00, 0x00, 0x32, 0x05, 0x0E, 0x00, 0x2C, 0x12, 0x00, 0x00, 0x35, 0x11, 0x12, 
37499
  0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xE0, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x49, 0x03, 
37500
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37501
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37502
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37503
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37504
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37505
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37506
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37507
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37508
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37509
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37510
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37511
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37512
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37513
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37514
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37515
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37516
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37517
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37518
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37519
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37520
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF5, 
37521
  0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x02, 
37522
  0xCE, 0x08, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0xDA, 0x04, 0x00, 0x01, 0x00, 0xDA, 
37523
  0x1E, 0x00, 0x01, 0x01, 0xCF, 0x08, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x03, 0x00, 
37524
  0x00, 0x00, 0x83, 0x16, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 
37525
  0x01, 0x11, 0x00, 0x07, 0xCE, 0x06, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x30, 
37526
  0x00, 0x11, 0x00, 0xCF, 0x04, 0x70, 0x72, 0x65, 0x64, 0x00, 0x11, 0x01, 0xDA, 0x33, 0x00, 0x11, 
37527
  0x02, 0xCF, 0x06, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x01, 0x11, 0x04, 0xDA, 0x7E, 0x01, 0x10, 
37528
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x43, 0x04, 0x10, 0x06, 0xCF, 0x07, 0x5F, 
37529
  0x30, 0x30, 0x30, 0x30, 0x31, 0x42, 0x07, 0x10, 0x07, 0xCF, 0x04, 0x69, 0x74, 0x65, 0x6D, 0x40, 
37530
  0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 0x1B, 
37531
  0x06, 0x05, 0x00, 0x1F, 0x06, 0x0B, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 
37532
  0x07, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x1E, 0x05, 0x04, 0x00, 0x32, 0x04, 0x07, 0x00, 0x2C, 
37533
  0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 
37534
  0x04, 0x00, 0x00, 0x84, 0x60, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37535
  0x00, 0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
37536
  0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCE, 0x05, 0x0A, 0x20, 0x20, 0x20, 0x20, 0xD7, 
37537
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x03, 0x2C, 0x00, 0x07, 0xCE, 0x09, 
37538
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x2F, 0xDA, 
37539
  0x30, 0x00, 0x2C, 0x00, 0xDA, 0x81, 0x07, 0x00, 0x2C, 0x01, 0xDA, 0x33, 0x00, 0x2C, 0x02, 0xCF, 
37540
  0x09, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x02, 0x2C, 0x04, 0xDA, 0x3A, 0x11, 
37541
  0x1C, 0x07, 0xDA, 0x39, 0x12, 0x1C, 0x08, 0xDA, 0x43, 0x1F, 0x2A, 0x08, 0xDA, 0x39, 0x28, 0x04, 
37542
  0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x4A, 0x05, 
37543
  0x06, 0x04, 0x1E, 0x05, 0x25, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 
37544
  0x07, 0x00, 0x1E, 0x06, 0x13, 0x00, 0x3F, 0x07, 0x01, 0x00, 0x2B, 0x09, 0x02, 0x00, 0x0A, 0x08, 
37545
  0x09, 0x07, 0x07, 0x07, 0x08, 0x01, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 0x08, 
37546
  0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x4A, 0x09, 
37547
  0x0A, 0x04, 0x1E, 0x09, 0x06, 0x00, 0x3A, 0x0A, 0x01, 0x04, 0x3C, 0x07, 0x08, 0x0A, 0x49, 0x04, 
37548
  0x01, 0x04, 0x05, 0x08, 0x08, 0x02, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x3A, 0x07, 
37549
  0x01, 0x04, 0x31, 0x07, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x49, 0x04, 
37550
  0x01, 0x04, 0x28, 0x09, 0x00, 0x00, 0x4A, 0x07, 0x09, 0x04, 0x1E, 0x07, 0x06, 0x00, 0x3A, 0x09, 
37551
  0x01, 0x04, 0x33, 0x08, 0x00, 0x09, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1C, 0xF8, 
37552
  0xFF, 0xFF, 0x03, 0x08, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x87, 0x1F, 
37553
  0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 
37554
  0x09, 0x00, 0x05, 0x02, 0x2C, 0x00, 0x27, 0x00, 0x27, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 
37555
  0x12, 0x00, 0x09, 0x01, 0x09, 0x01, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x16, 0x00, 0x0B, 0x01, 
37556
  0x12, 0x01, 0x0B, 0xBF, 0xFD, 0x09, 0xBF, 0xFD, 0x07, 0x09, 0x14, 0x00, 0x09, 0x00, 0x09, 0x00, 
37557
  0x09, 0x01, 0x21, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x1F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
37558
  0x0B, 0xBF, 0xFF, 0x09, 0xBF, 0xFE, 0x07, 0xBF, 0xF6, 0x03, 0x00, 0x03, 0xCE, 0x16, 0x63, 0x6F, 
37559
  0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x6D, 0x6F, 0x64, 
37560
  0x75, 0x6C, 0x65, 0x20, 0xCE, 0x06, 0x3A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x00, 0x4D, 0x00, 0xDA, 
37561
  0x81, 0x22, 0x00, 0x4D, 0x01, 0xCF, 0x0B, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 
37562
  0x6E, 0x64, 0x00, 0x4D, 0x02, 0xDA, 0x39, 0x06, 0x4D, 0x04, 0xCF, 0x02, 0x6D, 0x70, 0x06, 0x32, 
37563
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x76, 0x09, 0x32, 0x06, 0xCF, 0x07, 0x5F, 
37564
  0x30, 0x30, 0x30, 0x30, 0x35, 0x75, 0x0D, 0x32, 0x08, 0xDA, 0x15, 0x0F, 0x32, 0x09, 0xCF, 0x08, 
37565
  0x6D, 0x6F, 0x64, 0x2D, 0x6B, 0x69, 0x6E, 0x64, 0x11, 0x32, 0x0A, 0xCF, 0x07, 0x63, 0x68, 0x65, 
37566
  0x63, 0x6B, 0x65, 0x72, 0x1C, 0x21, 0x0C, 0xDA, 0x7E, 0x28, 0x30, 0x0B, 0xCF, 0x08, 0x66, 0x75, 
37567
  0x6C, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x35, 0x4D, 0x06, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 
37568
  0x64, 0x65, 0x72, 0x3D, 0x4D, 0x05, 0xCF, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x42, 0x4D, 0x08, 
37569
  0xCF, 0x09, 0x73, 0x74, 0x72, 0x2D, 0x70, 0x61, 0x72, 0x74, 0x73, 0x28, 0x02, 0x00, 0x00, 0x2C, 
37570
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 
37571
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x04, 0x06, 0x1B, 
37572
  0x06, 0x05, 0x00, 0x1F, 0x06, 0x28, 0x00, 0x3A, 0x05, 0x04, 0x06, 0x3D, 0x07, 0x05, 0x00, 0x1B, 
37573
  0x08, 0x07, 0x00, 0x3D, 0x07, 0x05, 0x01, 0x1B, 0x09, 0x07, 0x00, 0x3D, 0x07, 0x05, 0x02, 0x1B, 
37574
  0x0A, 0x07, 0x00, 0x32, 0x0A, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x05, 0x07, 0x00, 0x1E, 
37575
  0x05, 0x1B, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x35, 0x07, 0x0B, 0x00, 0x1E, 
37576
  0x07, 0x09, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x0B, 0x08, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 
37577
  0x0B, 0x04, 0x00, 0x32, 0x0C, 0x09, 0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x1C, 
37578
  0x0F, 0x00, 0x00, 0x32, 0x00, 0x08, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x31, 
37579
  0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0B, 0x0C, 0x00, 0x31, 
37580
  0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1E, 0x0C, 0x04, 0x00, 0x32, 
37581
  0x0B, 0x09, 0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x06, 0x04, 0x06, 0x1C, 
37582
  0xD9, 0xFF, 0xFF, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 
37583
  0x06, 0x05, 0x00, 0x32, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x08, 0x00, 0x35, 0x05, 0x07, 0x00, 0x2C, 
37584
  0x07, 0x09, 0x00, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 
37585
  0x05, 0x07, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x08, 0x0C, 0x00, 0x35, 
37586
  0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x07, 0x0D, 0x00, 0x2C, 0x09, 0x0E, 0x00, 0x33, 
37587
  0x07, 0x00, 0x09, 0x34, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x35, 0x07, 0x09, 0x00, 0x28, 
37588
  0x09, 0x00, 0x00, 0x32, 0x09, 0x07, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0xCD, 
37589
  0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x03, 0x14, 0x01, 0x0E, 0xCE, 0x08, 0x65, 0x78, 
37590
  0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
37591
  0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 
37592
  0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x81, 0xF3, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 
37593
  0x07, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
37594
  0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 
37595
  0x67, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xDA, 0x81, 0xF0, 0xDA, 
37596
  0x81, 0xF7, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x25, 
37597
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x39, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 
37598
  0x04, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
37599
  0x15, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2A, 0xBF, 
37600
  0xFF, 0x00, 0x0C, 0xDA, 0x7E, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2B, 0x01, 0x14, 0x02, 0xCF, 
37601
  0x01, 0x74, 0x03, 0x14, 0x03, 0xDA, 0x81, 0x96, 0x04, 0x14, 0x04, 0xCF, 0x03, 0x63, 0x68, 0x6B, 
37602
  0x3D, 0x01, 0x00, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x01, 0x3D, 0x01, 0x00, 0x02, 
37603
  0x1B, 0x04, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 
37604
  0x1E, 0x00, 0x0B, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x32, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x01, 0x00, 
37605
  0x35, 0x01, 0x05, 0x00, 0x1E, 0x01, 0x05, 0x00, 0x2D, 0x05, 0x00, 0x00, 0x32, 0x05, 0x02, 0x00, 
37606
  0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
37607
  0xBF, 0xFF, 0x8B, 0x88, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 
37608
  0x1C, 0x00, 0x1C, 0x00, 0x16, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x18, 0x01, 
37609
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0xBF, 0xFF, 0x18, 0xBF, 0xFF, 0x16, 0x8B, 0x7A, 0x03, 
37610
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
37611
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37612
  0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37613
  0x00, 0x07, 0x01, 0x18, 0x00, 0x18, 0x00, 0x09, 0x00, 0x09, 0x01, 0x14, 0x00, 0x14, 0x01, 0x0B, 
37614
  0xBF, 0xFD, 0x07, 0x05, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
37615
  0x0B, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x16, 0x00, 0x16, 0x01, 0x0D, 0xBF, 
37616
  0xF6, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 0x03, 0x01, 0x14, 0x00, 0x05, 0x04, 0x22, 0x00, 0x22, 
37617
  0x00, 0x22, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFC, 0x05, 0x05, 0x15, 0x00, 
37618
  0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xFB, 0x05, 0x06, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
37619
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 
37620
  0xDA, 0x81, 0xA0, 0xDA, 0x81, 0xB6, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0xA1, 0xD3, 0x00, 0xD0, 0x0E, 
37621
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0xD3, 0x04, 
37622
  0xDA, 0x81, 0xB8, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
37623
  0xFF, 0xFF, 0x04, 0x14, 0x00, 0x05, 0xCE, 0x0E, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 
37624
  0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x81, 0xA0, 0xDA, 0x81, 0xB6, 0xDA, 0x81, 
37625
  0x26, 0xDA, 0x1A, 0x00, 0x14, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x14, 0x01, 0xDA, 0x81, 0x4D, 0x00, 
37626
  0x14, 0x02, 0xCF, 0x0E, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 
37627
  0x65, 0x72, 0x05, 0x14, 0x04, 0xCF, 0x02, 0x6D, 0x63, 0x07, 0x14, 0x06, 0xCF, 0x01, 0x6D, 0x2C, 
37628
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 
37629
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x3A, 0x05, 0x04, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 
37630
  0x05, 0x0B, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1E, 
37631
  0x07, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x35, 0x08, 0x06, 0x00, 0x3C, 
37632
  0x04, 0x00, 0x08, 0x03, 0x08, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8C, 
37633
  0x2C, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x01, 0x1D, 0x00, 0x10, 
37634
  0x00, 0x10, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 
37635
  0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x12, 0xBF, 0xFF, 0x10, 0xDA, 0x81, 0xBF, 0xD7, 0x00, 0xCD, 
37636
  0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x02, 
37637
  0xCE, 0x0C, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x04, 
37638
  0xDA, 0x81, 0x82, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x02, 0x04, 
37639
  0x00, 0x02, 0xCE, 0x0A, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x04, 
37640
  0xD3, 0x82, 0xAC, 0xDA, 0x01, 0xDA, 0x09, 0xDA, 0x16, 0xDA, 0x1A, 0xDA, 0x1F, 0xDA, 0x24, 0xDA, 
37641
  0x25, 0xDA, 0x29, 0xDA, 0x4A, 0xDA, 0x4F, 0xDA, 0x50, 0xDA, 0x54, 0xDA, 0x55, 0xDA, 0x5A, 0xDA, 
37642
  0x80, 0x8D, 0xDA, 0x80, 0x92, 0xDA, 0x80, 0x93, 0xDA, 0x80, 0x98, 0xDA, 0x80, 0x99, 0xDA, 0x80, 
37643
  0x9D, 0xDA, 0x80, 0x9F, 0xDA, 0x80, 0xA4, 0xDA, 0x80, 0xE9, 0xDA, 0x80, 0xED, 0xDA, 0x80, 0xA5, 
37644
  0xDA, 0x80, 0xA9, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 
37645
  0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x09, 0x6D, 
37646
  0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 
37647
  0x6F, 0x73, 0x68, 0xCF, 0x04, 0x65, 0x61, 0x63, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
37648
  0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 0xCE, 0x04, 0x65, 0x61, 
37649
  0x63, 0x68, 0xDA, 0x04, 0xD0, 0x04, 0x65, 0x61, 0x63, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
37650
  0x00, 0x12, 0x04, 0x04, 0x04, 0x0D, 0x4D, 0x00, 0x08, 0xCE, 0x0D, 0x65, 0x61, 0x63, 0x68, 0x2D, 
37651
  0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xD7, 0x00, 0xCD, 0x00, 
37652
  0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x03, 0x08, 0x00, 0x02, 0xCE, 0x0B, 0x69, 0x64, 0x65, 
37653
  0x6D, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD5, 0x06, 0xD0, 0x06, 
37654
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCB, 0xD0, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xCB, 
37655
  0xDA, 0x68, 0xCB, 0xDA, 0x61, 0xCB, 0xDA, 0x70, 0xCB, 0xDA, 0x6A, 0xCB, 0xD8, 0x03, 0x6E, 0x6F, 
37656
  0x74, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xCF, 0x0B, 0x69, 0x64, 0x65, 0x6D, 0x70, 
37657
  0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
37658
  0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x02, 
37659
  0x02, 0x00, 0x36, 0x02, 0x00, 0x00, 0x80, 0x86, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x08, 0x00, 
37660
  0x08, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x80, 0xAB, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 
37661
  0x1C, 0x02, 0x02, 0x01, 0x02, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x65, 0x78, 0x74, 0x49, 0x00, 0x00, 
37662
  0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x03, 0x76, 0x61, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 
37663
  0x19, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x04, 0x6E, 0x6F, 0x74, 
37664
  0x3D, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 
37665
  0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 
37666
  0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 
37667
  0xFF, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
37668
  0x00, 0xDA, 0x82, 0x49, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x06, 0x04, 0x03, 0x02, 0x03, 0x00, 
37669
  0x06, 0xCE, 0x02, 0x69, 0x6E, 0x3A, 0x00, 0x00, 0x01, 0x28, 0x03, 0x00, 0x00, 0x25, 0x03, 0x00, 
37670
  0x03, 0x1D, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xD0, 0x04, 0x6B, 
37671
  0x65, 0x79, 0x73, 0xD0, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xCF, 0x03, 0x73, 0x65, 0x74, 0xCF, 
37672
  0x05, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x80, 0xB3, 0x00, 0x4D, 0x00, 0xCF, 0x07, 0x62, 0x69, 
37673
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x00, 0x4D, 0x01, 0xCF, 0x03, 0x69, 0x6E, 0x78, 0x00, 0x4D, 0x02, 
37674
  0xCF, 0x04, 0x6B, 0x69, 0x6E, 0x64, 0x00, 0x4D, 0x03, 0xDA, 0x80, 0xC7, 0x00, 0x4D, 0x04, 0xCF, 
37675
  0x0D, 0x65, 0x61, 0x63, 0x68, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x4D, 
37676
  0x06, 0xDA, 0x3A, 0x0C, 0x4D, 0x07, 0xCF, 0x02, 0x64, 0x73, 0x1F, 0x3A, 0x02, 0xCF, 0x07, 0x5F, 
37677
  0x30, 0x30, 0x30, 0x30, 0x30, 0x65, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 
37678
  0x05, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1E, 0x07, 
37679
  0x03, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 
37680
  0x09, 0x00, 0x1B, 0x05, 0x08, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x25, 0x08, 0x07, 0x01, 0x1E, 0x08, 
37681
  0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x33, 0x0A, 
37682
  0x07, 0x01, 0x45, 0x09, 0x00, 0x00, 0x1B, 0x05, 0x09, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x28, 0x0A, 
37683
  0x00, 0x00, 0x33, 0x09, 0x07, 0x0A, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x33, 0x0A, 
37684
  0x06, 0x08, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x33, 0x0A, 
37685
  0x0B, 0x06, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x25, 0x0B, 0x02, 0x0C, 0x1E, 0x0B, 
37686
  0x06, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x33, 0x0D, 0x07, 0x06, 0x45, 0x0C, 0x00, 0x00, 0x1B, 0x0A, 
37687
  0x0C, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x25, 0x0D, 0x02, 0x0E, 0x1E, 0x0D, 
37688
  0x03, 0x00, 0x1B, 0x0C, 0x06, 0x00, 0x1C, 0x0D, 0x00, 0x00, 0x2C, 0x10, 0x09, 0x00, 0x25, 0x0F, 
37689
  0x02, 0x10, 0x1E, 0x0F, 0x08, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x33, 0x11, 0x07, 0x06, 0x45, 0x10, 
37690
  0x00, 0x00, 0x32, 0x06, 0x10, 0x00, 0x46, 0x11, 0x00, 0x00, 0x1B, 0x0E, 0x11, 0x00, 0x1C, 0x02, 
37691
  0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x1B, 0x0C, 0x0E, 0x00, 0x1B, 0x0A, 0x0C, 0x00, 0x2C, 0x0C, 
37692
  0x02, 0x00, 0x33, 0x0C, 0x00, 0x0A, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x33, 0x0C, 
37693
  0x07, 0x06, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x33, 0x0D, 0x06, 0x0A, 0x45, 0x0C, 
37694
  0x00, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x33, 0x0D, 0x08, 0x0B, 0x34, 0x03, 0x00, 0x00, 0x31, 0x0C, 
37695
  0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x0C, 0x00, 0x33, 0x0B, 0x05, 0x09, 0x31, 0x0A, 
37696
  0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x81, 0xEB, 0x03, 0x00, 0x03, 0x00, 
37697
  0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x27, 0x00, 
37698
  0x27, 0x00, 0x0D, 0x00, 0x05, 0x02, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1C, 0x00, 
37699
  0x1C, 0x00, 0x1C, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37700
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x0D, 0x00, 0x0D, 
37701
  0x00, 0x0D, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
37702
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x03, 0x16, 0x00, 
37703
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFD, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
37704
  0x00, 0x0D, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37705
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37706
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 
37707
  0x01, 0xDA, 0x82, 0x62, 0x00, 0x05, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x05, 0x03, 0xDA, 0x82, 0x46, 
37708
  0x2C, 0x04, 0x00, 0x00, 0x33, 0x00, 0x01, 0x04, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 
37709
  0x36, 0x04, 0x00, 0x00, 0x82, 0x4D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
37710
  0x05, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
37711
  0x01, 0x01, 0x09, 0x00, 0x02, 0xCE, 0x05, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0xDA, 0x04, 0xD7, 0x00, 
37712
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x01, 0x1B, 0x00, 0x07, 0xCE, 0x07, 0x63, 
37713
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0xDA, 0x04, 0xD0, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
37714
  0x65, 0x00, 0x1B, 0x00, 0xDA, 0x1E, 0x00, 0x1B, 0x01, 0xDA, 0x80, 0x87, 0x00, 0x1B, 0x02, 0xCF, 
37715
  0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x02, 0x1B, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37716
  0x30, 0x30, 0x30, 0x73, 0x09, 0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x74, 
37717
  0x0E, 0x1B, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x75, 0x16, 0x1B, 0x07, 0xCF, 
37718
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x76, 0x2C, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 
37719
  0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x32, 0x00, 0x01, 0x00, 0x35, 0x05, 0x04, 0x00, 
37720
  0x1B, 0x03, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x1B, 0x05, 0x03, 0x00, 
37721
  0x1E, 0x05, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x3B, 0x03, 0x01, 0x06, 
37722
  0x1B, 0x06, 0x03, 0x00, 0x1E, 0x06, 0x06, 0x00, 0x32, 0x01, 0x00, 0x00, 0x35, 0x07, 0x06, 0x00, 
37723
  0x09, 0x08, 0x07, 0xFF, 0x1B, 0x03, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 
37724
  0x1B, 0x07, 0x03, 0x00, 0x1E, 0x07, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x27, 0x03, 0x00, 0x01, 
37725
  0x03, 0x03, 0x00, 0x00, 0x83, 0x66, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37726
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37727
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37728
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x09, 0x00, 0xDA, 0x1E, 
37729
  0x00, 0x09, 0x01, 0xDA, 0x82, 0x64, 0x2B, 0x03, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x03, 0x2B, 0x03, 
37730
  0x00, 0x00, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x04, 
37731
  0x00, 0x00, 0x25, 0x02, 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x90, 0x37, 0x00, 0x37, 0x00, 
37732
  0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0xCF, 0x11, 0x73, 
37733
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
37734
  0xD8, 0x11, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 
37735
  0x6F, 0x74, 0x6F, 0xCF, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 
37736
  0x61, 0x63, 0x65, 0xD8, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 
37737
  0x61, 0x63, 0x65, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0xD8, 
37738
  0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0xCF, 0x04, 0x66, 0x6F, 0x72, 
37739
  0x76, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
37740
  0x03, 0x08, 0x00, 0x05, 0xCE, 0x04, 0x66, 0x6F, 0x72, 0x76, 0xDA, 0x04, 0xDA, 0x80, 0xF4, 0xD7, 
37741
  0x00, 0xCD, 0x00, 0x09, 0x00, 0x09, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 
37742
  0xCE, 0x01, 0x2B, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
37743
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
37744
  0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x06, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
37745
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x06, 0x03, 0x03, 0x04, 0x05, 
37746
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xD7, 
37747
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x07, 0x07, 0x07, 0x0B, 0x44, 0x00, 0x0C, 0xCE, 0x10, 
37748
  0x66, 0x6F, 0x72, 0x2D, 0x76, 0x61, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 
37749
  0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x82, 0x4C, 0xDA, 0x82, 0x5C, 0xDA, 0x82, 0x5D, 0xDA, 0x82, 0x55, 
37750
  0xDA, 0x80, 0xAB, 0xD2, 0x00, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
37751
  0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0xDA, 0x04, 
37752
  0xDA, 0x1C, 0xD0, 0x06, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 
37753
  0x06, 0x01, 0xCF, 0x07, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 
37754
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 
37755
  0x03, 0x00, 0x00, 0x65, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xDA, 
37756
  0x80, 0xF8, 0xCF, 0x02, 0x69, 0x66, 0xDA, 0x80, 0xB3, 0x00, 0x44, 0x00, 0xDA, 0x43, 0x00, 0x44, 
37757
  0x01, 0xDA, 0x35, 0x00, 0x44, 0x02, 0xCF, 0x04, 0x73, 0x74, 0x6F, 0x70, 0x00, 0x44, 0x03, 0xCF, 
37758
  0x04, 0x73, 0x74, 0x65, 0x70, 0x00, 0x44, 0x04, 0xCF, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
37759
  0x69, 0x73, 0x6F, 0x6E, 0x00, 0x44, 0x05, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x74, 0x61, 0x00, 0x44, 
37760
  0x06, 0xDA, 0x80, 0xC7, 0x00, 0x44, 0x07, 0xCF, 0x10, 0x66, 0x6F, 0x72, 0x2D, 0x76, 0x61, 0x72, 
37761
  0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x44, 0x09, 0xDA, 0x81, 0x2A, 0x0C, 
37762
  0x44, 0x0A, 0xCF, 0x02, 0x73, 0x74, 0x19, 0x44, 0x08, 0xCF, 0x09, 0x6C, 0x6F, 0x6F, 0x70, 0x2D, 
37763
  0x62, 0x6F, 0x64, 0x79, 0x2D, 0x33, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x62, 
37764
  0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x31, 0x03, 0x00, 0x00, 
37765
  0x2C, 0x0B, 0x01, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x08, 0x03, 0x00, 
37766
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x08, 0x0B, 0x00, 
37767
  0x1B, 0x0A, 0x08, 0x00, 0x33, 0x04, 0x00, 0x09, 0x45, 0x08, 0x00, 0x00, 0x33, 0x05, 0x00, 0x0A, 
37768
  0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 0x33, 0x0D, 0x00, 0x0B, 0x45, 0x0C, 0x00, 0x00, 
37769
  0x2C, 0x0D, 0x03, 0x00, 0x32, 0x0D, 0x08, 0x00, 0x34, 0x06, 0x00, 0x00, 0x31, 0x0C, 0x00, 0x00, 
37770
  0x45, 0x0B, 0x00, 0x00, 0x1B, 0x08, 0x0B, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x00, 0x01, 
37771
  0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x05, 0x00, 0x33, 0x0D, 0x09, 0x02, 0x45, 0x0C, 0x00, 0x00, 
37772
  0x25, 0x0E, 0x0A, 0x03, 0x1E, 0x0E, 0x03, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x1C, 0x07, 0x00, 0x00, 
37773
  0x2C, 0x10, 0x05, 0x00, 0x33, 0x10, 0x0A, 0x03, 0x45, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 
37774
  0x45, 0x0F, 0x00, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x11, 0x07, 0x00, 
37775
  0x35, 0x10, 0x11, 0x00, 0x1B, 0x11, 0x10, 0x00, 0x1E, 0x10, 0x04, 0x00, 0x22, 0x12, 0x0A, 0x00, 
37776
  0x1B, 0x0F, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1E, 0x0F, 0x03, 0x00, 
37777
  0x1B, 0x0E, 0x08, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x2C, 0x11, 0x08, 0x00, 0x2B, 0x12, 0x00, 0x00, 
37778
  0x33, 0x11, 0x0A, 0x12, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x33, 0x12, 0x10, 0x08, 
37779
  0x45, 0x11, 0x00, 0x00, 0x1B, 0x0E, 0x11, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x33, 0x10, 0x0B, 0x0C, 
37780
  0x34, 0x0D, 0x00, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x03, 0x0F, 0x00, 0x00, 
37781
  0x81, 0xC5, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 
37782
  0x0D, 0x00, 0x0D, 0x00, 0x29, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 
37783
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37784
  0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37785
  0x00, 0x05, 0x03, 0x0E, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 
37786
  0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0A, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0D, 0x00, 0x0D, 
37787
  0x00, 0x1F, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 
37788
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xBF, 
37789
  0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x08, 0x00, 0xDA, 
37790
  0x43, 0x00, 0x08, 0x01, 0xDA, 0x35, 0x00, 0x08, 0x02, 0xDA, 0x82, 0x82, 0x00, 0x08, 0x03, 0xDA, 
37791
  0x80, 0xC7, 0x00, 0x08, 0x04, 0xDA, 0x82, 0x75, 0x33, 0x00, 0x01, 0x02, 0x2B, 0x05, 0x01, 0x00, 
37792
  0x2C, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x05, 0x06, 0x07, 0x31, 0x03, 0x00, 0x00, 
37793
  0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x82, 0x2E, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37794
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x61, 
37795
  0x63, 0x63, 0x65, 0x70, 0x74, 0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 
37796
  0x74, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x67, 
37797
  0x69, 0x76, 0x65, 0xCF, 0x10, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 
37798
  0x69, 0x66, 0x6F, 0x72, 0x6D, 0xD8, 0x10, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 
37799
  0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0xCF, 0x05, 0x6D, 0x61, 0x63, 0x65, 0x78, 0xD7, 0x00, 
37800
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x01, 0x02, 0x03, 0x16, 0x00, 0x06, 0xCE, 0x05, 0x6D, 
37801
  0x61, 0x63, 0x65, 0x78, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x1F, 0x02, 0x01, 
37802
  0x02, 0x17, 0x67, 0x00, 0x08, 0x0E, 0xCE, 0x06, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0xDA, 0x04, 
37803
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 
37804
  0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x82, 0x4F, 0x00, 
37805
  0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 
37806
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 
37807
  0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x68, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 
37808
  0x00, 0x2D, 0x00, 0x2D, 0xCF, 0x05, 0x71, 0x75, 0x6F, 0x74, 0x65, 0xDA, 0x82, 0x15, 0xDA, 0x80, 
37809
  0xB3, 0xCF, 0x05, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x55, 0xDA, 0x82, 
37810
  0x81, 0xCF, 0x07, 0x75, 0x70, 0x73, 0x63, 0x6F, 0x70, 0x65, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xAE, 
37811
  0xCF, 0x0A, 0x71, 0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 0x6F, 0x74, 0x65, 0xDA, 0x82, 0x5D, 0xDA, 
37812
  0x1C, 0xDA, 0x70, 0xDA, 0x75, 0xD0, 0x08, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xDA, 
37813
  0x81, 0xF8, 0xDA, 0x77, 0xDA, 0x6A, 0xDA, 0x68, 0xDA, 0x69, 0xDA, 0x61, 0x00, 0x67, 0x00, 0xDA, 
37814
  0x1E, 0x00, 0x67, 0x01, 0xCF, 0x0A, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
37815
  0x00, 0x67, 0x02, 0xCF, 0x06, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0x09, 0x67, 0x04, 0xCF, 0x05, 
37816
  0x72, 0x65, 0x63, 0x75, 0x72, 0x0B, 0x67, 0x06, 0xCF, 0x07, 0x64, 0x6F, 0x74, 0x61, 0x62, 0x6C, 
37817
  0x65, 0x0D, 0x67, 0x08, 0xCF, 0x0F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x62, 0x69, 0x6E, 
37818
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x0F, 0x67, 0x0A, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
37819
  0x64, 0x65, 0x66, 0x11, 0x67, 0x0C, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x61, 0x6C, 
37820
  0x6C, 0x13, 0x67, 0x0E, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x66, 0x6E, 0x15, 0x67, 
37821
  0x10, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x71, 0x71, 0x2B, 0x67, 0x12, 0xCF, 0x05, 
37822
  0x73, 0x70, 0x65, 0x63, 0x73, 0x2D, 0x67, 0x14, 0xCF, 0x05, 0x64, 0x6F, 0x74, 0x75, 0x70, 0x31, 
37823
  0x65, 0x16, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x67, 0x65, 0x67, 0x16, 0xDA, 0x39, 
37824
  0x2E, 0x02, 0x00, 0x00, 0x1E, 0x01, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
37825
  0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 
37826
  0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x01, 0x00, 0x1B, 0x06, 0x05, 0x00, 
37827
  0x30, 0x07, 0x02, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x30, 0x09, 0x03, 0x00, 0x1B, 0x0A, 0x09, 0x00, 
37828
  0x30, 0x0B, 0x04, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x30, 0x0D, 0x05, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 
37829
  0x30, 0x0F, 0x06, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x2C, 0x12, 0x02, 0x00, 
37830
  0x2C, 0x13, 0x03, 0x00, 0x33, 0x11, 0x12, 0x13, 0x2C, 0x11, 0x04, 0x00, 0x33, 0x0C, 0x11, 0x0C, 
37831
  0x2C, 0x11, 0x05, 0x00, 0x2C, 0x12, 0x06, 0x00, 0x33, 0x11, 0x0A, 0x12, 0x2C, 0x11, 0x07, 0x00, 
37832
  0x33, 0x0A, 0x11, 0x0C, 0x2C, 0x11, 0x08, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x33, 0x11, 0x0C, 0x12, 
37833
  0x2C, 0x11, 0x0A, 0x00, 0x33, 0x0A, 0x11, 0x0E, 0x2C, 0x11, 0x0B, 0x00, 0x2C, 0x12, 0x0C, 0x00, 
37834
  0x33, 0x11, 0x10, 0x12, 0x31, 0x0C, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0x1B, 0x12, 0x11, 0x00, 
37835
  0x30, 0x13, 0x07, 0x00, 0x1B, 0x14, 0x13, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x16, 0x0D, 0x00, 
37836
  0x35, 0x15, 0x16, 0x00, 0x1B, 0x16, 0x15, 0x00, 0x2C, 0x18, 0x0E, 0x00, 0x25, 0x17, 0x16, 0x18, 
37837
  0x1E, 0x17, 0x14, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x1A, 0x0F, 0x00, 0x35, 0x19, 0x1A, 0x00, 
37838
  0x2C, 0x1B, 0x10, 0x00, 0x25, 0x1A, 0x19, 0x1B, 0x1E, 0x1A, 0x09, 0x00, 0x32, 0x04, 0x00, 0x00, 
37839
  0x2C, 0x1B, 0x11, 0x00, 0x35, 0x19, 0x1B, 0x00, 0x34, 0x19, 0x00, 0x00, 0x2C, 0x1C, 0x12, 0x00, 
37840
  0x35, 0x1B, 0x1C, 0x00, 0x1B, 0x18, 0x1B, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 
37841
  0x35, 0x19, 0x14, 0x00, 0x1B, 0x18, 0x19, 0x00, 0x1B, 0x15, 0x18, 0x00, 0x1C, 0x1E, 0x00, 0x00, 
37842
  0x2C, 0x1A, 0x13, 0x00, 0x25, 0x19, 0x16, 0x1A, 0x1E, 0x19, 0x06, 0x00, 0x32, 0x04, 0x00, 0x00, 
37843
  0x2C, 0x1B, 0x11, 0x00, 0x35, 0x1A, 0x1B, 0x00, 0x1B, 0x18, 0x1A, 0x00, 0x1C, 0x15, 0x00, 0x00, 
37844
  0x2C, 0x1C, 0x14, 0x00, 0x25, 0x1B, 0x16, 0x1C, 0x1E, 0x1B, 0x08, 0x00, 0x32, 0x00, 0x04, 0x00, 
37845
  0x35, 0x1C, 0x06, 0x00, 0x31, 0x1C, 0x00, 0x00, 0x2C, 0x1E, 0x15, 0x00, 0x35, 0x1D, 0x1E, 0x00, 
37846
  0x1B, 0x1A, 0x1D, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x2C, 0x1E, 0x16, 0x00, 0x25, 0x1D, 0x16, 0x1E, 
37847
  0x1E, 0x1D, 0x05, 0x00, 0x32, 0x00, 0x04, 0x00, 0x35, 0x1E, 0x06, 0x00, 0x1B, 0x1C, 0x1E, 0x00, 
37848
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1C, 0x00, 0x00, 0x1B, 0x1A, 0x1C, 0x00, 0x1B, 0x18, 0x1A, 0x00, 
37849
  0x1B, 0x15, 0x18, 0x00, 0x1B, 0x16, 0x15, 0x00, 0x03, 0x16, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
37850
  0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x05, 0xCE, 0x05, 0x72, 0x65, 0x63, 0x75, 0x72, 
37851
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 
37852
  0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0x00, 0x04, 0x00, 0xDA, 0x80, 0x87, 0x00, 0x04, 0x01, 0xDA, 
37853
  0x82, 0x9F, 0x2D, 0x02, 0x00, 0x01, 0x32, 0x00, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x02, 0x36, 0x02, 
37854
  0x00, 0x00, 0xBF, 0xFF, 0x88, 0x5A, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xCD, 0x00, 0xDC, 
37855
  0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x00, 0x12, 0x01, 0x09, 0xCE, 0x07, 0x64, 0x6F, 0x74, 0x61, 
37856
  0x62, 0x6C, 0x65, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
37857
  0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 
37858
  0x00, 0x12, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x12, 0x01, 0xCF, 0x08, 0x6F, 0x6E, 0x2D, 0x76, 0x61, 
37859
  0x6C, 0x75, 0x65, 0x00, 0x12, 0x02, 0xDA, 0x82, 0xA0, 0x01, 0x12, 0x04, 0xCF, 0x04, 0x6E, 0x65, 
37860
  0x77, 0x74, 0x04, 0x12, 0x06, 0xCF, 0x03, 0x6B, 0x65, 0x79, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 
37861
  0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x28, 0x08, 
37862
  0x00, 0x00, 0x4A, 0x07, 0x08, 0x06, 0x1E, 0x07, 0x0A, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2D, 0x09, 
37863
  0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 0x3A, 0x09, 0x00, 0x06, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 
37864
  0x01, 0x00, 0x3C, 0x04, 0x08, 0x0A, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xF5, 0xFF, 0xFF, 0x03, 0x04, 
37865
  0x00, 0x00, 0xBF, 0xFF, 0x88, 0x5D, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 
37866
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x27, 0x00, 0x1D, 0x00, 
37867
  0x1D, 0x00, 0x07, 0x01, 0x10, 0xBF, 0xFE, 0x05, 0xBF, 0xFD, 0x03, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37868
  0x09, 0x01, 0x01, 0x01, 0x08, 0x26, 0x01, 0x08, 0xCE, 0x0F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
37869
  0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 
37870
  0x81, 0xF8, 0xDA, 0x70, 0xDA, 0x2C, 0xDA, 0x61, 0xDA, 0x68, 0xDA, 0x69, 0xBF, 0xFF, 0x00, 0x00, 
37871
  0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 
37872
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0x00, 0x26, 
37873
  0x00, 0xDA, 0x1E, 0x00, 0x26, 0x01, 0xDA, 0x82, 0xA1, 0x04, 0x26, 0x03, 0xCF, 0x07, 0x5F, 0x30, 
37874
  0x30, 0x30, 0x30, 0x34, 0x64, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
37875
  0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x02, 0x03, 
37876
  0x04, 0x1E, 0x02, 0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 
37877
  0x00, 0x2C, 0x05, 0x03, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x07, 0x00, 0x32, 0x01, 0x00, 
37878
  0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 
37879
  0x00, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x04, 
37880
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2D, 0x06, 0x00, 0x06, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x06, 
37881
  0x00, 0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x07, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2D, 0x08, 0x00, 
37882
  0x06, 0x35, 0x07, 0x08, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x36, 0x08, 0x00, 
37883
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x04, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x88, 
37884
  0x64, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37885
  0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x1B, 0x00, 
37886
  0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 
37887
  0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x20, 0x00, 
37888
  0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 
37889
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0x01, 0x02, 0x1E, 0x01, 0x0A, 0xCE, 0x09, 0x65, 0x78, 
37890
  0x70, 0x61, 0x6E, 0x64, 0x64, 0x65, 0x66, 0xDA, 0x04, 0xDA, 0x2C, 0xD8, 0x0C, 0x61, 0x72, 0x72, 
37891
  0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
37892
  0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 
37893
  0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
37894
  0x82, 0xA1, 0x00, 0x1E, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x1E, 0x01, 0xDA, 0x82, 0xA2, 0x03, 0x1E, 
37895
  0x03, 0xCF, 0x04, 0x6C, 0x61, 0x73, 0x74, 0x06, 0x1E, 0x05, 0xCF, 0x05, 0x62, 0x6F, 0x75, 0x6E, 
37896
  0x64, 0x3F, 0x02, 0x00, 0x00, 0x07, 0x03, 0x02, 0x01, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 
37897
  0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x07, 0x00, 
37898
  0x00, 0x3A, 0x06, 0x00, 0x07, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x08, 0x35, 0x07, 0x08, 
37899
  0x00, 0x32, 0x06, 0x07, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2B, 0x07, 0x02, 0x00, 0x2B, 0x08, 0xFE, 
37900
  0xFF, 0x33, 0x00, 0x07, 0x08, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 0x08, 0x00, 0x31, 0x03, 0x00, 
37901
  0x00, 0x2D, 0x09, 0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x40, 0x08, 0x00, 
37902
  0x00, 0x33, 0x06, 0x07, 0x08, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x31, 0x09, 0x00, 
37903
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x88, 0x6D, 0x18, 0x00, 0x15, 
37904
  0x00, 0x0F, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x05, 0x03, 0x0B, 0x00, 0x0B, 0x00, 0x14, 
37905
  0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x02, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
37906
  0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x07, 0x00, 0x07, 0x00, 0x07, 
37907
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37908
  0x06, 0x01, 0x01, 0x01, 0x03, 0x0F, 0x01, 0x0A, 0xCE, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
37909
  0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x2C, 0xDA, 0x81, 0xF8, 0xD8, 0x05, 0x74, 0x75, 0x70, 0x6C, 
37910
  0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 
37911
  0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 
37912
  0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 
37913
  0xA2, 0x00, 0x0F, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x0F, 0x01, 0xDA, 0x82, 0xA3, 0x08, 0x0F, 0x02, 
37914
  0xDA, 0x81, 0x4D, 0x2B, 0x02, 0x01, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
37915
  0x02, 0x03, 0x00, 0x2D, 0x03, 0x00, 0x04, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 
37916
  0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x31, 
37917
  0x04, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 
37918
  0xFF, 0x88, 0x76, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
37919
  0x00, 0x0F, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37920
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x05, 0x25, 0x01, 0x0D, 0xCE, 0x08, 0x65, 
37921
  0x78, 0x70, 0x61, 0x6E, 0x64, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x82, 0x95, 0xDA, 0x2C, 0xDA, 0x81, 
37922
  0xF8, 0xDA, 0x80, 0xAE, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 
37923
  0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
37924
  0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0xA1, 
37925
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xA3, 0x00, 0x25, 
37926
  0x00, 0xDA, 0x82, 0x33, 0x00, 0x25, 0x01, 0xDA, 0x82, 0xA4, 0x02, 0x25, 0x03, 0xCF, 0x02, 0x74, 
37927
  0x31, 0x0F, 0x17, 0x05, 0xDA, 0x81, 0x4D, 0x1F, 0x25, 0x05, 0xDA, 0x81, 0x4D, 0x2B, 0x03, 0x01, 
37928
  0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 
37929
  0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x11, 0x00, 0x2B, 0x05, 0x03, 0x00, 0x32, 0x00, 0x05, 
37930
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x04, 0x32, 0x06, 0x05, 
37931
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x2B, 0x07, 0x02, 
37932
  0x00, 0x3A, 0x06, 0x00, 0x07, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x07, 0x03, 0x06, 0x34, 0x05, 0x00, 
37933
  0x00, 0x2C, 0x07, 0x04, 0x00, 0x36, 0x07, 0x00, 0x00, 0x2B, 0x05, 0x02, 0x00, 0x32, 0x00, 0x05, 
37934
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x04, 0x32, 0x06, 0x05, 
37935
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x03, 
37936
  0x00, 0x32, 0x06, 0x03, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x36, 0x06, 0x00, 
37937
  0x00, 0xBF, 0xFF, 0x88, 0x7A, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
37938
  0x00, 0x05, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
37939
  0x00, 0x13, 0x00, 0x09, 0x01, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
37940
  0x00, 0x09, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
37941
  0x00, 0x13, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xCD, 0x00, 
37942
  0xFC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x0B, 0x01, 0x01, 0x0C, 0xCE, 0x08, 0x65, 0x78, 
37943
  0x70, 0x61, 0x6E, 0x64, 0x71, 0x71, 0xDA, 0x04, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
37944
  0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 
37945
  0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 
37946
  0x08, 0xDA, 0x82, 0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
37947
  0x82, 0xA3, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0xA4, 0x00, 0x0B, 0x00, 0xDA, 0x82, 0x33, 0x00, 
37948
  0x0B, 0x01, 0xDA, 0x82, 0xA5, 0x01, 0x0B, 0x03, 0xCF, 0x02, 0x71, 0x71, 0x30, 0x02, 0x00, 0x00, 
37949
  0x1B, 0x03, 0x02, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x2B, 0x06, 0x01, 0x00, 
37950
  0x3A, 0x05, 0x00, 0x06, 0x31, 0x05, 0x00, 0x00, 0x35, 0x06, 0x03, 0x00, 0x32, 0x04, 0x06, 0x00, 
37951
  0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
37952
  0x01, 0x01, 0x01, 0x0E, 0x47, 0x01, 0x0D, 0xCE, 0x02, 0x71, 0x71, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 
37953
  0x70, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xDA, 0x81, 0xF8, 0xCF, 0x07, 0x75, 0x6E, 0x71, 0x75, 0x6F, 
37954
  0x74, 0x65, 0xDA, 0x82, 0xB5, 0xDA, 0x2C, 0xDA, 0x6A, 0xDA, 0x61, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
37955
  0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x01, 0x0E, 0x00, 0x06, 0xCE, 0x03, 0x6B, 0x76, 0x73, 0xDA, 
37956
  0x04, 0xDA, 0x30, 0x00, 0x0E, 0x00, 0xCF, 0x04, 0x64, 0x69, 0x63, 0x74, 0x00, 0x0E, 0x01, 0xCF, 
37957
  0x03, 0x6B, 0x76, 0x73, 0x01, 0x0E, 0x03, 0xDA, 0x39, 0x01, 0x0D, 0x00, 0xCF, 0x07, 0x5F, 0x30, 
37958
  0x30, 0x30, 0x30, 0x33, 0x78, 0x04, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
37959
  0x77, 0x06, 0x0D, 0x04, 0xDA, 0x3A, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 
37960
  0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x08, 0x00, 0x1B, 0x04, 
37961
  0x05, 0x00, 0x3A, 0x06, 0x00, 0x04, 0x33, 0x03, 0x04, 0x06, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 
37962
  0x08, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x87, 0x0E, 
37963
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x2A, 0x00, 
37964
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xD8, 0x05, 0x74, 0x61, 
37965
  0x62, 0x6C, 0x65, 0xDA, 0x68, 0xDA, 0x81, 0xAD, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 
37966
  0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 
37967
  0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 
37968
  0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xA3, 0xBF, 
37969
  0xFF, 0x00, 0x0E, 0xDA, 0x82, 0xA4, 0x00, 0x47, 0x00, 0xDA, 0x1E, 0x00, 0x47, 0x01, 0xDA, 0x82, 
37970
  0xB9, 0x04, 0x47, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x65, 0x16, 0x28, 0x06, 
37971
  0xCF, 0x02, 0x78, 0x30, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
37972
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x02, 0x03, 0x04, 
37973
  0x1E, 0x02, 0x21, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 
37974
  0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x07, 0x00, 0x32, 0x01, 0x00, 0x00, 
37975
  0x2C, 0x06, 0x04, 0x00, 0x35, 0x04, 0x06, 0x00, 0x34, 0x04, 0x00, 0x00, 0x46, 0x06, 0x00, 0x00, 
37976
  0x03, 0x06, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3B, 0x04, 0x00, 0x06, 0x1B, 0x06, 0x04, 0x00, 
37977
  0x2C, 0x07, 0x05, 0x00, 0x25, 0x04, 0x07, 0x06, 0x1E, 0x04, 0x09, 0x00, 0x2B, 0x08, 0x01, 0x00, 
37978
  0x3B, 0x07, 0x00, 0x08, 0x31, 0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 
37979
  0x32, 0x06, 0x08, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x36, 0x07, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 
37980
  0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 
37981
  0x36, 0x08, 0x00, 0x00, 0x2C, 0x05, 0x08, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x04, 0x00, 
37982
  0x32, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x09, 0x00, 
37983
  0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x0A, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x0A, 0x00, 
37984
  0x35, 0x06, 0x07, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 
37985
  0x34, 0x07, 0x00, 0x00, 0x2C, 0x06, 0x0B, 0x00, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x0C, 0x00, 
37986
  0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x0A, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x0A, 0x00, 
37987
  0x35, 0x07, 0x08, 0x00, 0x32, 0x01, 0x07, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 
37988
  0x34, 0x08, 0x00, 0x00, 0x2C, 0x07, 0x0D, 0x00, 0x36, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
37989
  0x00, 0x88, 0x84, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
37990
  0x00, 0x07, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x16, 
37991
  0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x02, 0x1C, 0x00, 0x1C, 0x00, 0x14, 
37992
  0x01, 0x18, 0x00, 0x18, 0x00, 0x14, 0x01, 0x27, 0x00, 0x27, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 
37993
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 
37994
  0x00, 0x16, 0xBF, 0xF9, 0x07, 0x00, 0x07, 0x00, 0x07, 0x08, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 
37995
  0xF8, 0x07, 0x00, 0x07, 0x00, 0x07, 0x09, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x18, 
37996
  0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xF7, 0x07, 0x00, 0x07, 0x00, 0x07, 0x0A, 
37997
  0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x11, 0x00, 0x11, 0x00, 
37998
  0x11, 0xBF, 0xF6, 0x07, 0x88, 0x84, 0x05, 0x00, 0x05, 0x0D, 0x0C, 0x00, 0x0C, 0x00, 0x19, 0x00, 
37999
  0x19, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38000
  0x0E, 0x01, 0x01, 0x01, 0x0C, 0x3D, 0x01, 0x14, 0xCE, 0x05, 0x64, 0x6F, 0x74, 0x75, 0x70, 0xDA, 
38001
  0x04, 0xDA, 0x82, 0x7C, 0xDA, 0x81, 0x26, 0xD5, 0x00, 0xD0, 0x03, 0x72, 0x65, 0x66, 0xDA, 0x08, 
38002
  0xDA, 0x59, 0xDA, 0x73, 0xD0, 0x0A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 
38003
  0xD8, 0x06, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0xDA, 0x2C, 0xDA, 0x81, 0xF8, 0xDA, 0x71, 0xBF, 
38004
  0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 
38005
  0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 
38006
  0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 
38007
  0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xA3, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0xA4, 0xBF, 0xFF, 0x00, 
38008
  0x10, 0xDA, 0x82, 0xA5, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xA6, 0x00, 0x3D, 0x00, 0xDA, 0x82, 
38009
  0x33, 0x00, 0x3D, 0x01, 0xDA, 0x82, 0xA7, 0x09, 0x3D, 0x03, 0xCF, 0x01, 0x68, 0x0C, 0x3D, 0x05, 
38010
  0xDA, 0x81, 0x2A, 0x10, 0x15, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x66, 0x15, 
38011
  0x3D, 0x07, 0xCF, 0x05, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x18, 0x21, 0x09, 0xCF, 0x01, 0x72, 0x21, 
38012
  0x3D, 0x09, 0xDA, 0x82, 0x3C, 0x24, 0x3D, 0x0B, 0xCF, 0x02, 0x6D, 0x3F, 0x28, 0x03, 0x00, 0x00, 
38013
  0x49, 0x02, 0x00, 0x03, 0x28, 0x04, 0x00, 0x00, 0x25, 0x03, 0x04, 0x02, 0x1E, 0x03, 0x03, 0x00, 
38014
  0x2C, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x00, 0x03, 
38015
  0x1B, 0x03, 0x02, 0x00, 0x2D, 0x05, 0x00, 0x12, 0x3A, 0x04, 0x05, 0x03, 0x1B, 0x05, 0x04, 0x00, 
38016
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 
38017
  0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 
38018
  0x1B, 0x07, 0x06, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x3B, 0x08, 0x07, 0x09, 0x1B, 0x09, 0x08, 0x00, 
38019
  0x1E, 0x09, 0x05, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x3A, 0x0A, 0x09, 0x0B, 0x1B, 0x08, 0x0A, 0x00, 
38020
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x3B, 0x0A, 0x07, 0x0B, 0x1B, 0x08, 0x0A, 0x00, 
38021
  0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x3A, 0x0A, 0x07, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 
38022
  0x1E, 0x05, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x0C, 0x05, 0x00, 0x32, 0x00, 0x0C, 0x00, 
38023
  0x2C, 0x0D, 0x06, 0x00, 0x36, 0x0D, 0x00, 0x00, 0x1E, 0x0B, 0x0B, 0x00, 0x2C, 0x0C, 0x07, 0x00, 
38024
  0x32, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2B, 0x0C, 0x01, 0x00, 
38025
  0x32, 0x00, 0x0C, 0x00, 0x2C, 0x0D, 0x09, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x34, 0x0C, 0x00, 0x00, 
38026
  0x36, 0x09, 0x00, 0x00, 0x2D, 0x0C, 0x00, 0x04, 0x32, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 
38027
  0x35, 0x0C, 0x0D, 0x00, 0x32, 0x00, 0x0C, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x36, 0x0D, 0x00, 0x00, 
38028
  0xBF, 0xFF, 0x88, 0xA1, 0x10, 0x00, 0x10, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x1A, 0x00, 
38029
  0x1A, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 
38030
  0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
38031
  0x17, 0x00, 0x17, 0x00, 0x10, 0x00, 0x29, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x29, 0x00, 0x29, 0x00, 
38032
  0x38, 0x00, 0x38, 0x00, 0x29, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x05, 0x01, 
38033
  0x18, 0x00, 0x18, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x02, 0x0E, 0x00, 0x0E, 
38034
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 
38035
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x88, 0x51, 
38036
  0x01, 0x05, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x02, 
38037
  0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x09, 
38038
  0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0x10, 0x03, 0x00, 0x03, 0x00, 
38039
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38040
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38041
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0D, 0x03, 0x00, 0x03, 0x0D, 0x0B, 0x00, 0x0B, 0x00, 
38042
  0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
38043
  0x12, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x10, 0x00, 0x10, 0x00, 
38044
  0x10, 0xBF, 0xFF, 0x0E, 0x00, 0x0E, 0x02, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x0E, 0xBF, 0xFF, 0x05, 
38045
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFC, 
38046
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 
38047
  0x0F, 0x00, 0x0F, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x06, 0x0E, 
38048
  0x00, 0x0E, 0xBF, 0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
38049
  0xFF, 0x03, 0xBF, 0xA5, 0x01, 0x56, 0x01, 0x04, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38050
  0x10, 0x02, 0x02, 0x02, 0x09, 0x67, 0x00, 0x14, 0xCE, 0x09, 0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 
38051
  0x6F, 0x74, 0x3D, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 0x6A, 0xDA, 0x68, 0xDA, 0x61, 0xD8, 
38052
  0x0D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xD8, 0x0C, 
38053
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xDA, 0x82, 0x4E, 0xD8, 
38054
  0x06, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 0x00, 0x67, 0x00, 0xDA, 0x1E, 0x00, 0x67, 0x01, 0xDA, 
38055
  0x80, 0x87, 0x00, 0x67, 0x02, 0xCF, 0x09, 0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 0x6F, 0x74, 0x3D, 
38056
  0x04, 0x67, 0x04, 0xCF, 0x02, 0x74, 0x78, 0x09, 0x67, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38057
  0x30, 0x34, 0x4B, 0x0E, 0x15, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4C, 0x19, 
38058
  0x2E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4D, 0x1C, 0x2E, 0x08, 0xDA, 0x39, 
38059
  0x1D, 0x2D, 0x09, 0xDA, 0x43, 0x1F, 0x2D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
38060
  0x4E, 0x23, 0x2D, 0x0D, 0xCF, 0x02, 0x78, 0x78, 0x25, 0x2D, 0x0E, 0xCF, 0x02, 0x79, 0x79, 0x30, 
38061
  0x37, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4F, 0x3B, 0x57, 0x08, 0xCF, 0x07, 
38062
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x50, 0x44, 0x57, 0x0A, 0xCF, 0x06, 0x72, 0x61, 0x77, 0x67, 
38063
  0x65, 0x74, 0x45, 0x57, 0x09, 0xDA, 0x39, 0x45, 0x56, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38064
  0x30, 0x34, 0x52, 0x48, 0x56, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x51, 0x4B, 
38065
  0x56, 0x0D, 0xDA, 0x3A, 0x4C, 0x56, 0x0E, 0xDA, 0x46, 0x2E, 0x02, 0x00, 0x00, 0x31, 0x00, 0x00, 
38066
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 
38067
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x4A, 0x06, 0x04, 0x05, 0x1B, 0x05, 0x06, 
38068
  0x00, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x25, 0x06, 0x04, 
38069
  0x07, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x04, 0x00, 
38070
  0x00, 0x2C, 0x09, 0x02, 0x00, 0x25, 0x08, 0x04, 0x09, 0x1B, 0x06, 0x08, 0x00, 0x1E, 0x06, 0x19, 
38071
  0x00, 0x3F, 0x07, 0x00, 0x00, 0x3F, 0x08, 0x01, 0x00, 0x4A, 0x09, 0x07, 0x08, 0x1B, 0x07, 0x09, 
38072
  0x00, 0x1E, 0x07, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x00, 0x00, 0x2B, 0x09, 0x00, 
38073
  0x00, 0x3F, 0x0A, 0x00, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x23, 0x0A, 0x09, 0x0B, 0x1E, 0x0A, 0x0C, 
38074
  0x00, 0x3A, 0x0C, 0x00, 0x09, 0x1B, 0x0D, 0x0C, 0x00, 0x3A, 0x0C, 0x01, 0x09, 0x1B, 0x0E, 0x0C, 
38075
  0x00, 0x32, 0x0D, 0x0E, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x1E, 0x0C, 0x03, 0x00, 0x29, 0x08, 0x00, 
38076
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x05, 0x09, 0x09, 0x01, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x08, 0x00, 
38077
  0x00, 0x2C, 0x08, 0x03, 0x00, 0x25, 0x07, 0x04, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1E, 0x08, 0x03, 
38078
  0x00, 0x1B, 0x07, 0x08, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x25, 0x09, 0x04, 
38079
  0x0A, 0x1B, 0x07, 0x09, 0x00, 0x1E, 0x07, 0x20, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x3F, 0x09, 0x01, 
38080
  0x00, 0x4A, 0x0A, 0x08, 0x09, 0x1B, 0x08, 0x0A, 0x00, 0x1E, 0x08, 0x02, 0x00, 0x03, 0x08, 0x00, 
38081
  0x00, 0x2C, 0x0B, 0x03, 0x00, 0x25, 0x0A, 0x04, 0x0B, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x09, 0x05, 
38082
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2A, 0x09, 0x00, 
38083
  0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 0x00, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x0D, 
38084
  0x00, 0x3A, 0x0B, 0x00, 0x0C, 0x1B, 0x0D, 0x0C, 0x00, 0x1B, 0x0E, 0x0B, 0x00, 0x32, 0x01, 0x0D, 
38085
  0x00, 0x35, 0x0B, 0x0A, 0x00, 0x32, 0x0B, 0x0E, 0x00, 0x35, 0x0F, 0x02, 0x00, 0x1E, 0x0F, 0x03, 
38086
  0x00, 0x29, 0x09, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0C, 0x00, 0x0C, 0x1C, 0xF4, 0xFF, 
38087
  0xFF, 0x03, 0x09, 0x00, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x25, 0x08, 0x04, 0x09, 0x1E, 0x08, 0x0C, 
38088
  0x00, 0x3F, 0x09, 0x00, 0x00, 0x3F, 0x0A, 0x01, 0x00, 0x08, 0x0B, 0x09, 0x0A, 0x32, 0x00, 0x01, 
38089
  0x00, 0x2C, 0x0A, 0x08, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2B, 0x0C, 0x00, 0x00, 0x4A, 0x0A, 0x0C, 
38090
  0x0B, 0x1D, 0x0A, 0x02, 0x00, 0x4A, 0x0A, 0x0B, 0x09, 0x03, 0x0A, 0x00, 0x00, 0x4A, 0x09, 0x00, 
38091
  0x01, 0x03, 0x09, 0x00, 0x00, 0x88, 0xFF, 0x01, 0x04, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 
38092
  0x02, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 
38093
  0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 
38094
  0x07, 0xBF, 0xFF, 0x05, 0x02, 0x11, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
38095
  0x02, 0x0D, 0x01, 0x0D, 0x00, 0x17, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x17, 0x00, 0x0F, 
38096
  0x01, 0x17, 0x00, 0x0F, 0x01, 0x13, 0x00, 0x13, 0x00, 0x0F, 0x01, 0x18, 0x00, 0x11, 0xBF, 0xFC, 
38097
  0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x0B, 0x08, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
38098
  0x00, 0x07, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x07, 0xBF, 0xF5, 0x05, 0x0C, 0x11, 0x00, 0x1C, 0x00, 
38099
  0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x19, 0x00, 0x19, 0x00, 
38100
  0x19, 0x00, 0x19, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
38101
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0F, 0x00, 
38102
  0x35, 0x00, 0x2E, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0xBF, 0xFD, 0x0B, 0x06, 0x07, 0x00, 0x07, 0xBF, 
38103
  0xED, 0x05, 0x13, 0x21, 0x00, 0x2C, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x16, 
38104
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x01, 0x07, 0x00, 0x07, 0xCE, 0x1A, 0x6D, 0x61, 
38105
  0x63, 0x72, 0x6F, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 
38106
  0x6F, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x00, 0x16, 0x00, 0xDA, 0x1E, 0x00, 0x16, 0x01, 
38107
  0xDA, 0x82, 0x9D, 0x00, 0x16, 0x02, 0xDA, 0x82, 0x90, 0x00, 0x16, 0x03, 0xCF, 0x08, 0x70, 0x72, 
38108
  0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x04, 0x16, 0x05, 0xCF, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 
38109
  0x6E, 0x74, 0x05, 0x16, 0x06, 0xCF, 0x07, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x1B, 0x03, 
38110
  0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 
38111
  0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x32, 0x05, 0x03, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 
38112
  0x08, 0x00, 0x1E, 0x07, 0x0C, 0x00, 0x05, 0x06, 0x06, 0x01, 0x2B, 0x09, 0xC8, 0x00, 0x21, 0x08, 
38113
  0x06, 0x09, 0x1E, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x01, 0x09, 0x00, 0x00, 0x1B, 0x03, 
38114
  0x05, 0x00, 0x32, 0x05, 0x01, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x05, 0x08, 0x00, 0x1C, 0xF2, 
38115
  0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x89, 0x29, 0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
38116
  0x03, 0x01, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x09, 0x00, 
38117
  0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
38118
  0xFC, 0x03, 0xBF, 0xF6, 0x01, 0xCF, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 
38119
  0x64, 0x2D, 0x62, 0x69, 0x6E, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x04, 0x02, 0x04, 
38120
  0x08, 0x29, 0x01, 0x25, 0xCE, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 
38121
  0x2D, 0x62, 0x69, 0x6E, 0xDA, 0x04, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 
38122
  0x70, 0x6C, 0x69, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 
38123
  0x04, 0x00, 0x02, 0xCE, 0x04, 0x6C, 0x61, 0x73, 0x74, 0xDA, 0x04, 0x00, 0x04, 0x00, 0xDA, 0x81, 
38124
  0x5C, 0x00, 0x04, 0x01, 0xDA, 0x82, 0xB2, 0x3F, 0x02, 0x00, 0x00, 0x07, 0x03, 0x02, 0x01, 0x3B, 
38125
  0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x49, 0x0E, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 
38126
  0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xCE, 0x03, 0x62, 0x69, 0x6E, 0xDA, 0x81, 0x28, 0xDA, 0x81, 
38127
  0x33, 0xD0, 0x0E, 0x68, 0x61, 0x73, 0x2D, 0x62, 0x69, 0x6E, 0x2D, 0x73, 0x63, 0x72, 0x69, 0x70, 
38128
  0x74, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
38129
  0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 
38130
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
38131
  0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 
38132
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 
38133
  0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 
38134
  0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 
38135
  0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xCF, 0x1A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x75, 0x6E, 
38136
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2D, 0x75, 0x6E, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x65, 
38137
  0x64, 0xBF, 0xFF, 0x00, 0x12, 0xCF, 0x10, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x6E, 
38138
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x13, 0xCF, 0x0F, 0x62, 0x75, 0x6E, 
38139
  0x64, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x70, 0x6F, 0x6C, 0x69, 0x73, 0x74, 0xBF, 0xFF, 0x00, 0x14, 
38140
  0xCF, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x75, 0x6E, 0x65, 0xBF, 0xFF, 
38141
  0x00, 0x15, 0xCF, 0x11, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 
38142
  0x6C, 0x6C, 0x65, 0x64, 0x3F, 0xBF, 0xFF, 0x00, 0x16, 0xCF, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
38143
  0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x17, 0xCF, 0x0B, 0x62, 
38144
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0xBF, 0xFF, 0x00, 0x18, 0xCF, 0x0E, 
38145
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0xBF, 0xFF, 
38146
  0x00, 0x19, 0xCF, 0x10, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 
38147
  0x74, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x1A, 0xCF, 0x14, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
38148
  0x2F, 0x61, 0x64, 0x64, 0x2D, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0xBF, 0xFF, 
38149
  0x00, 0x1B, 0xCF, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x77, 0x68, 0x6F, 0x69, 0x73, 
38150
  0xBF, 0xFF, 0x00, 0x1C, 0xCF, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 
38151
  0x2D, 0x66, 0x69, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x1D, 0xCF, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
38152
  0x65, 0x2F, 0x61, 0x64, 0x64, 0x00, 0x29, 0x00, 0xDA, 0x81, 0x39, 0x00, 0x29, 0x01, 0xCF, 0x03, 
38153
  0x73, 0x72, 0x63, 0x00, 0x29, 0x02, 0xCF, 0x04, 0x64, 0x65, 0x73, 0x74, 0x00, 0x29, 0x03, 0xCF, 
38154
  0x0A, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x00, 0x29, 0x04, 0xDA, 0x82, 
38155
  0xE5, 0x02, 0x29, 0x06, 0xDA, 0x81, 0x2A, 0x0D, 0x29, 0x08, 0xDA, 0x82, 0xFB, 0x12, 0x29, 0x0A, 
38156
  0xDA, 0x82, 0xFC, 0x2D, 0x06, 0x00, 0x02, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x20, 
38157
  0x02, 0x09, 0x00, 0x32, 0x06, 0x01, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 
38158
  0x08, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x07, 0x09, 0x00, 0x1C, 
38159
  0x02, 0x00, 0x00, 0x1B, 0x07, 0x02, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x20, 0x03, 0x03, 0x00, 0x2B, 
38160
  0x09, 0xED, 0x01, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x09, 0x03, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 
38161
  0x0B, 0x02, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 
38162
  0x0C, 0x04, 0x00, 0x33, 0x0B, 0x06, 0x0C, 0x2C, 0x0D, 0x05, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x31, 
38163
  0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x29, 
38164
  0x0D, 0x00, 0x00, 0x3C, 0x00, 0x0C, 0x0D, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x06, 0x08, 0x2C, 
38165
  0x0D, 0x05, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x33, 0x00, 0x01, 0x0C, 0x31, 0x0A, 0x00, 0x00, 0x2D, 
38166
  0x0D, 0x00, 0x1C, 0x36, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x8C, 0x0C, 0x00, 0x0C, 0x00, 0x05, 
38167
  0x01, 0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 
38168
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38169
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
38170
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x23, 0x00, 0x23, 
38171
  0x00, 0x23, 0x00, 0x23, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 0x04, 
38172
  0x6E, 0x65, 0x67, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 
38173
  0x06, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x65, 0x67, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 
38174
  0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x82, 0xFD, 0x2B, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 
38175
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0xFF, 0x03, 0x03, 0x00, 
38176
  0x00, 0x83, 0x8E, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0xCF, 0x02, 
38177
  0x2F, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
38178
  0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2F, 0x3D, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 
38179
  0x00, 0x0C, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xDA, 0x81, 0x1E, 0x3F, 
38180
  0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 
38181
  0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 
38182
  0x04, 0x00, 0x00, 0x0C, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 
38183
  0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0C, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 
38184
  0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x5C, 0x00, 0x08, 
38185
  0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xCF, 0x02, 0x6E, 0x73, 0x00, 0x08, 0x02, 0xDA, 0x83, 0x00, 
38186
  0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 
38187
  0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 
38188
  0x80, 0x90, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 
38189
  0x38, 0xDA, 0x80, 0xB4, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 
38190
  0x03, 0x00, 0x02, 0xCE, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x04, 
38191
  0xD8, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x03, 0x00, 0xCF, 0x06, 0x73, 
38192
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x00, 0x03, 0x01, 0xDA, 0x80, 0xB4, 0x31, 0x00, 0x00, 0x00, 0x2C, 
38193
  0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8E, 0xEA, 0x34, 0x00, 0x34, 0x00, 0x34, 0xCF, 0x11, 
38194
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 
38195
  0x73, 0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 
38196
  0x79, 0x74, 0x65, 0x73, 0xCF, 0x03, 0x63, 0x6D, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1F, 
38197
  0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x63, 0x6D, 0x70, 0x27, 0x00, 0x00, 0x01, 0x03, 
38198
  0x00, 0x00, 0x00, 0xCF, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xD8, 
38199
  0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x82, 0x97, 0xDA, 0x82, 
38200
  0x95, 0xCF, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 
38201
  0x6C, 0x6C, 0x65, 0x64, 0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 
38202
  0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xCF, 0x08, 0x6D, 0x61, 0x63, 0x6C, 0x69, 0x6E, 0x74, 
38203
  0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
38204
  0x08, 0x33, 0x00, 0x0B, 0xCE, 0x08, 0x6D, 0x61, 0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 0xDA, 0x04, 
38205
  0xD0, 0x0B, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0xDA, 0x81, 0x26, 
38206
  0xDA, 0x82, 0xC8, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 
38207
  0x00, 0x02, 0xCE, 0x06, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 
38208
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 
38209
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 
38210
  0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x70, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2B, 
38211
  0x00, 0x2B, 0x00, 0x2B, 0xDA, 0x78, 0xD2, 0x02, 0x00, 0xC9, 0xC9, 0xDA, 0x81, 0x4B, 0xDA, 0x30, 
38212
  0x00, 0x33, 0x00, 0xCF, 0x05, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x33, 0x01, 0xDA, 0x81, 0x4C, 
38213
  0x00, 0x33, 0x02, 0xDA, 0x81, 0x4D, 0x00, 0x33, 0x03, 0xDA, 0x83, 0x12, 0x04, 0x33, 0x05, 0xCF, 
38214
  0x05, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x0A, 0x32, 0x07, 0xDA, 0x64, 0x16, 0x32, 0x09, 0xDA, 0x80, 
38215
  0xCE, 0x18, 0x32, 0x0A, 0xCF, 0x01, 0x63, 0x1F, 0x32, 0x08, 0xDA, 0x80, 0xCE, 0x26, 0x32, 0x0B, 
38216
  0xDA, 0x83, 0x1C, 0x2B, 0x32, 0x0C, 0xCF, 0x03, 0x6D, 0x73, 0x67, 0x2C, 0x04, 0x00, 0x00, 0x31, 
38217
  0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1E, 
38218
  0x05, 0x2D, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 
38219
  0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x35, 
38220
  0x08, 0x09, 0x00, 0x1E, 0x08, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x35, 
38221
  0x09, 0x0A, 0x00, 0x1B, 0x06, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x3D, 
38222
  0x08, 0x06, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x3D, 0x08, 0x06, 0x01, 0x1B, 0x0A, 0x08, 0x00, 0x2B, 
38223
  0x0B, 0xFF, 0xFF, 0x4A, 0x08, 0x0B, 0x09, 0x1E, 0x08, 0x03, 0x00, 0x1B, 0x06, 0x09, 0x00, 0x1C, 
38224
  0x02, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x2B, 0x0C, 0xFF, 0xFF, 0x4A, 
38225
  0x0B, 0x0C, 0x0A, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x06, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 
38226
  0x06, 0x00, 0x00, 0x1B, 0x0B, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2C, 
38227
  0x0C, 0x06, 0x00, 0x35, 0x06, 0x0C, 0x00, 0x1B, 0x0C, 0x06, 0x00, 0x33, 0x00, 0x08, 0x0B, 0x31, 
38228
  0x0C, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x35, 
38229
  0x0D, 0x0E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0xBF, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
38230
  0x00, 0x03, 0x01, 0x03, 0x02, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x01, 0x16, 
38231
  0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 
38232
  0x00, 0x12, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 0x0E, 
38233
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 
38234
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x07, 
38235
  0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF4, 0x01, 0xCF, 
38236
  0x07, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 
38237
  0x65, 0xCF, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 
38238
  0x01, 0x01, 0x01, 0x03, 0x27, 0x00, 0x0B, 0xCE, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xDA, 0x04, 
38239
  0xDA, 0x40, 0xDA, 0x2F, 0xDA, 0x30, 0x00, 0x27, 0x00, 0xDA, 0x1E, 0x00, 0x27, 0x01, 0xDA, 0x83, 
38240
  0x20, 0x08, 0x17, 0x03, 0xDA, 0x42, 0x09, 0x17, 0x04, 0xDA, 0x43, 0x09, 0x16, 0x00, 0xCF, 0x07, 
38241
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x69, 0x0C, 0x16, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38242
  0x30, 0x33, 0x68, 0x11, 0x16, 0x07, 0xDA, 0x15, 0x18, 0x27, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
38243
  0x30, 0x30, 0x33, 0x6A, 0x18, 0x26, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6C, 
38244
  0x1B, 0x26, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6B, 0x20, 0x26, 0x06, 0xDA, 
38245
  0x15, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x14, 
38246
  0x00, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 
38247
  0x00, 0x1B, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 
38248
  0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x09, 0x00, 0x3A, 0x05, 0x00, 0x06, 0x32, 0x06, 0x05, 
38249
  0x00, 0x45, 0x05, 0x00, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x3C, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 
38250
  0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x40, 0x03, 0x00, 
38251
  0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 0x1B, 0x05, 0x03, 
38252
  0x00, 0x1F, 0x05, 0x0A, 0x00, 0x3A, 0x03, 0x00, 0x05, 0x32, 0x05, 0x03, 0x00, 0x45, 0x03, 0x00, 
38253
  0x00, 0x1B, 0x06, 0x03, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x03, 0x07, 
38254
  0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x86, 0xBB, 0x07, 
38255
  0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x07, 
38256
  0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
38257
  0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x07, 0x05, 
38258
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38259
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x04, 
38260
  0x6F, 0x64, 0x64, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 
38261
  0x09, 0x00, 0x02, 0xCE, 0x04, 0x6F, 0x64, 0x64, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x09, 
38262
  0x00, 0xDA, 0x1E, 0x00, 0x09, 0x01, 0xDA, 0x83, 0x28, 0x2B, 0x03, 0x02, 0x00, 0x0E, 0x02, 0x00, 
38263
  0x03, 0x2B, 0x03, 0x01, 0x00, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 
38264
  0x00, 0x2B, 0x04, 0x00, 0x00, 0x25, 0x02, 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x91, 0x35, 
38265
  0x00, 0x35, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 
38266
  0xCF, 0x07, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xD8, 0x07, 0x78, 0x70, 0x72, 0x69, 0x6E, 
38267
  0x74, 0x66, 0xCF, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x6E, 0x61, 0x6D, 
38268
  0x65, 0xD8, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x6E, 0x61, 0x6D, 0x65, 
38269
  0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 
38270
  0x2F, 0x6C, 0x63, 0x6D, 0xCF, 0x0F, 0x2A, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x66, 0x6F, 
38271
  0x72, 0x6D, 0x61, 0x74, 0x2A, 0xD0, 0x0D, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x66, 0x6F, 
38272
  0x72, 0x6D, 0x61, 0x74, 0xCF, 0x0C, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 
38273
  0x65, 0x74, 0xDA, 0x82, 0xD2, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 
38274
  0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x0F, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
38275
  0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x0B, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
38276
  0x61, 0x72, 0x79, 0x3F, 0xD8, 0x0B, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 
38277
  0x3F, 0xCF, 0x0B, 0x2A, 0x64, 0x6F, 0x63, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x2A, 0xD0, 0x09, 
38278
  0x64, 0x6F, 0x63, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xCF, 0x04, 0x62, 0x78, 0x6F, 0x72, 0xD7, 
38279
  0x00, 0xCD, 0x00, 0x09, 0x00, 0x0F, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 
38280
  0xCE, 0x04, 0x62, 0x78, 0x6F, 0x72, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 
38281
  0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 
38282
  0x05, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x12, 0x03, 0x03, 0x04, 0x03, 0x03, 
38283
  0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x12, 0x03, 
38284
  0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 
38285
  0x00, 0x00, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0xD8, 0x0A, 
38286
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0xCF, 0x06, 0x2A, 0x61, 0x72, 0x67, 
38287
  0x73, 0x2A, 0xD0, 0x04, 0x61, 0x72, 0x67, 0x73, 0xCF, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 
38288
  0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x05, 0x02, 0x02, 0x01, 0x02, 0x00, 0x02, 0xCE, 0x06, 0x72, 
38289
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x37, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x04, 0x65, 
38290
  0x76, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x01, 0x02, 0x05, 0x10, 
38291
  0x00, 0x04, 0xCE, 0x04, 0x65, 0x76, 0x61, 0x6C, 0xDA, 0x04, 0xD0, 0x04, 0x65, 0x76, 0x61, 0x6C, 
38292
  0xD8, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x1C, 0xDA, 0x1D, 0xDA, 0x0E, 0x00, 
38293
  0x10, 0x00, 0xDA, 0x64, 0x00, 0x10, 0x01, 0xCF, 0x03, 0x65, 0x6E, 0x76, 0x00, 0x10, 0x02, 0xDA, 
38294
  0x83, 0x44, 0x04, 0x10, 0x04, 0xDA, 0x7E, 0x2C, 0x03, 0x00, 0x00, 0x33, 0x00, 0x01, 0x03, 0x2C, 
38295
  0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
38296
  0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x25, 0x06, 0x05, 0x07, 0x1E, 
38297
  0x06, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x3B, 0x05, 0x04, 0x07, 0x01, 
38298
  0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0xBE, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
38299
  0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 
38300
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x64, 0x79, 
38301
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x02, 0x00, 
38302
  0x02, 0x02, 0x04, 0x00, 0x03, 0xCE, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
38303
  0x69, 0x63, 0x73, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
38304
  0x02, 0x06, 0x00, 0x02, 0xCE, 0x08, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 0xDA, 0x04, 
38305
  0xDA, 0x1C, 0xD0, 0x07, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x06, 0x00, 0xDA, 0x1E, 
38306
  0x00, 0x06, 0x01, 0xCF, 0x08, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 0x31, 0x00, 0x00, 
38307
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 
38308
  0x04, 0x03, 0x03, 0x00, 0x00, 0x69, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2F, 0x00, 0x2F, 0x00, 
38309
  0x2F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x03, 0x01, 0x03, 0x06, 0x33, 0x00, 0x0E, 
38310
  0xCE, 0x08, 0x65, 0x6E, 0x76, 0x2D, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x04, 0xD8, 0x0D, 0x66, 0x69, 
38311
  0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0xD8, 0x0C, 0x66, 0x69, 0x62, 
38312
  0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x30, 0xD8, 0x0E, 0x74, 0x61, 0x62, 
38313
  0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
38314
  0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x03, 0x21, 0x00, 0x0B, 0xCE, 0x04, 0x6B, 0x65, 0x79, 0x73, 
38315
  0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x2F, 0xDA, 0x30, 0x00, 0x21, 0x00, 0xDA, 0x1E, 0x00, 0x21, 0x01, 
38316
  0xCF, 0x04, 0x6B, 0x65, 0x79, 0x73, 0x08, 0x14, 0x03, 0xDA, 0x42, 0x09, 0x14, 0x04, 0xDA, 0x43, 
38317
  0x09, 0x13, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x38, 0x0C, 0x13, 0x06, 0xCF, 
38318
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x37, 0x0E, 0x13, 0x05, 0xDA, 0x3A, 0x15, 0x21, 0x04, 
38319
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x39, 0x15, 0x20, 0x00, 0xCF, 0x07, 0x5F, 0x30, 
38320
  0x30, 0x30, 0x30, 0x33, 0x62, 0x18, 0x20, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
38321
  0x61, 0x1A, 0x20, 0x03, 0xDA, 0x3A, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
38322
  0x03, 0x00, 0x1E, 0x02, 0x11, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 
38323
  0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 
38324
  0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x06, 0x00, 0x1B, 0x05, 
38325
  0x06, 0x00, 0x3C, 0x03, 0x04, 0x05, 0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xFB, 
38326
  0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 
38327
  0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x1F, 0x05, 0x07, 0x00, 0x1B, 0x03, 
38328
  0x05, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x49, 0x05, 
38329
  0x00, 0x05, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x86, 0xA1, 0x07, 0x00, 0x07, 0x00, 
38330
  0x07, 0x00, 0x03, 0x02, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x07, 0x01, 0x07, 0x01, 
38331
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFE, 0x07, 
38332
  0x00, 0x07, 0xBF, 0xFD, 0x05, 0x07, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
38333
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 
38334
  0x80, 0xF2, 0x00, 0x33, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x33, 0x01, 0xDA, 0x83, 0x49, 0x00, 0x33, 
38335
  0x02, 0xCF, 0x05, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x00, 0x33, 0x03, 0xCF, 0x08, 0x65, 0x6E, 0x76, 
38336
  0x2D, 0x77, 0x61, 0x6C, 0x6B, 0x09, 0x33, 0x05, 0xDA, 0x83, 0x49, 0x0B, 0x33, 0x07, 0xCF, 0x04, 
38337
  0x65, 0x6E, 0x76, 0x73, 0x0C, 0x17, 0x08, 0xCF, 0x01, 0x65, 0x18, 0x33, 0x09, 0xCF, 0x07, 0x72, 
38338
  0x65, 0x74, 0x2D, 0x73, 0x65, 0x74, 0x18, 0x2D, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
38339
  0x35, 0x51, 0x1B, 0x2D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x50, 0x1E, 0x2D, 
38340
  0x0C, 0xCF, 0x04, 0x65, 0x6E, 0x76, 0x69, 0x1E, 0x2B, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38341
  0x30, 0x35, 0x4F, 0x21, 0x2B, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4E, 0x23, 
38342
  0x2B, 0x0A, 0xDA, 0x3A, 0x20, 0x01, 0x08, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 
38343
  0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x04, 0x06, 0x00, 
38344
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x40, 0x06, 0x00, 0x00, 
38345
  0x1B, 0x07, 0x06, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x1E, 0x08, 0x0A, 0x00, 0x32, 0x07, 0x08, 0x00, 
38346
  0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x03, 0x00, 
38347
  0x35, 0x08, 0x09, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF7, 0xFF, 0xFF, 
38348
  0x44, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x07, 0x0B, 
38349
  0x1B, 0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x11, 0x00, 0x3A, 0x0A, 0x07, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 
38350
  0x28, 0x0D, 0x00, 0x00, 0x49, 0x0A, 0x0C, 0x0D, 0x1B, 0x0D, 0x0A, 0x00, 0x1F, 0x0D, 0x09, 0x00, 
38351
  0x1B, 0x0A, 0x0D, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0E, 0x00, 0x00, 0x1E, 0x0E, 0x03, 0x00, 
38352
  0x29, 0x0F, 0x00, 0x00, 0x3C, 0x09, 0x0A, 0x0F, 0x49, 0x0D, 0x0C, 0x0D, 0x1C, 0xF8, 0xFF, 0xFF, 
38353
  0x49, 0x0B, 0x07, 0x0B, 0x1C, 0xF0, 0xFF, 0xFF, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 
38354
  0x35, 0x0A, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x36, 0x0B, 0x00, 0x00, 
38355
  0x8C, 0x8B, 0x03, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 
38356
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x13, 0x00, 0x1C, 0x00, 
38357
  0x1C, 0x00, 0x1C, 0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x4B, 0x00, 0x55, 0x00, 0x13, 0x01, 
38358
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38359
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x03, 
38360
  0x03, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x09, 0x00, 
38361
  0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x49, 0x00, 
38362
  0x04, 0x01, 0xDA, 0x83, 0x5E, 0x00, 0x04, 0x02, 0xDA, 0x83, 0x4A, 0x2C, 0x03, 0x00, 0x00, 0x33, 
38363
  0x03, 0x00, 0x01, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8C, 0xA1, 0x03, 0x00, 0x03, 
38364
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 0xD7, 0x00, 
38365
  0xCD, 0x00, 0x09, 0x00, 0x12, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 
38366
  0x08, 0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 
38367
  0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 
38368
  0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x18, 0x03, 0x03, 
38369
  0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 
38370
  0x05, 0x18, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 
38371
  0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 
38372
  0x6C, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xCF, 0x09, 0x75, 
38373
  0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 
38374
  0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x24, 0x00, 0x0E, 0xCE, 0x09, 0x75, 0x70, 0x64, 
38375
  0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0xDA, 0x04, 0xCE, 0x1D, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 
38376
  0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x31, 0x20, 0x6B, 0x65, 
38377
  0x79, 0x20, 0x69, 0x6E, 0x20, 0x6B, 0x73, 0xDA, 0x82, 0xC2, 0x00, 0x24, 0x00, 0xDA, 0x82, 0x62, 
38378
  0x00, 0x24, 0x01, 0xCF, 0x02, 0x6B, 0x73, 0x00, 0x24, 0x02, 0xDA, 0x31, 0x00, 0x24, 0x03, 0xDA, 
38379
  0x81, 0x4D, 0x00, 0x24, 0x04, 0xDA, 0x83, 0x6D, 0x00, 0x24, 0x05, 0xDA, 0x81, 0x15, 0x03, 0x24, 
38380
  0x06, 0xCF, 0x05, 0x6C, 0x65, 0x6E, 0x2D, 0x31, 0x08, 0x1B, 0x08, 0xDA, 0x43, 0x08, 0x1B, 0x06, 
38381
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x58, 0x0C, 0x1B, 0x0B, 0xDA, 0x3A, 0x0E, 0x1B, 
38382
  0x0C, 0xDA, 0x46, 0x14, 0x17, 0x0E, 0xCF, 0x04, 0x6E, 0x65, 0x77, 0x76, 0x1C, 0x24, 0x09, 0xCF, 
38383
  0x08, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x6B, 0x65, 0x79, 0x1E, 0x24, 0x0B, 0xCF, 0x08, 0x6C, 0x61, 
38384
  0x73, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x1B, 0x05, 0x00, 0x00, 0x3F, 0x06, 0x01, 0x00, 0x07, 0x07, 
38385
  0x06, 0x01, 0x1B, 0x06, 0x07, 0x00, 0x24, 0x08, 0x06, 0x00, 0x1E, 0x08, 0x03, 0x00, 0x2C, 0x09, 
38386
  0x00, 0x00, 0x01, 0x09, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x23, 0x09, 0x08, 0x06, 0x1E, 0x09, 
38387
  0x11, 0x00, 0x3B, 0x0A, 0x01, 0x08, 0x1B, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x05, 0x0B, 0x1B, 0x0C, 
38388
  0x0A, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x25, 0x0A, 0x0D, 0x0C, 0x1E, 0x0A, 0x07, 0x00, 0x2C, 0x0E, 
38389
  0x01, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x3C, 0x05, 0x0B, 0x0E, 0x1B, 0x05, 
38390
  0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x0C, 0x00, 0x05, 0x08, 0x08, 0x01, 0x1C, 0xEF, 
38391
  0xFF, 0xFF, 0x3B, 0x08, 0x01, 0x06, 0x1B, 0x09, 0x08, 0x00, 0x3B, 0x0A, 0x05, 0x09, 0x1B, 0x0B, 
38392
  0x0A, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x3C, 0x05, 
38393
  0x09, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x86, 0x5D, 0x03, 0x01, 0x11, 0x00, 0x0E, 0x00, 0x03, 0x01, 
38394
  0x07, 0x00, 0x03, 0x00, 0x13, 0x00, 0x13, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 
38395
  0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 
38396
  0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFD, 0x05, 0x04, 0x07, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x08, 
38397
  0x11, 0x00, 0x03, 0x01, 0x11, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0xBF, 
38398
  0xED, 0x01, 0xCF, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 
38399
  0x75, 0x63, 0x74, 0xDA, 0x69, 0xCF, 0x0A, 0x65, 0x76, 0x2F, 0x74, 0x6F, 0x2D, 0x66, 0x69, 0x6C, 
38400
  0x65, 0xD8, 0x0A, 0x65, 0x76, 0x2F, 0x74, 0x6F, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xCF, 0x0B, 0x65, 
38401
  0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
38402
  0x00, 0x08, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00, 0x07, 0xCE, 0x0B, 0x65, 0x76, 0x61, 0x6C, 0x2D, 
38403
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 
38404
  0x01, 0x01, 0x01, 0x09, 0x2C, 0x00, 0x04, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x61, 
38405
  0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x0B, 0xDA, 0x0C, 0xDA, 0x0D, 0xDA, 0x0E, 0xDA, 0x0F, 0xDA, 0x10, 
38406
  0xDA, 0x11, 0xDA, 0x12, 0xDA, 0x30, 0x00, 0x2C, 0x00, 0xDA, 0x14, 0x00, 0x2C, 0x01, 0xCF, 0x09, 
38407
  0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x02, 0x2C, 0x03, 0xDA, 0x15, 0x04, 0x2C, 
38408
  0x04, 0xDA, 0x39, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x40, 
38409
  0x02, 0x00, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x32, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 
38410
  0x02, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x35, 0x02, 0x05, 0x00, 0x2C, 
38411
  0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x02, 0x1E, 0x05, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
38412
  0x06, 0x04, 0x00, 0x35, 0x02, 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
38413
  0x05, 0x05, 0x00, 0x35, 0x02, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x06, 0x00, 0x35, 
38414
  0x02, 0x05, 0x00, 0x1E, 0x02, 0x08, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x07, 0x00, 0x35, 
38415
  0x05, 0x06, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x08, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1C, 
38416
  0xF6, 0xFF, 0xFF, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x35, 0x02, 0x05, 0x00, 0x2C, 
38417
  0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x02, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
38418
  0x06, 0x04, 0x00, 0x35, 0x02, 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 
38419
  0x04, 0x00, 0x00, 0x8A, 0xD6, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x05, 
38420
  0x00, 0x05, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 
38421
  0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 
38422
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 
38423
  0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x00, 0x09, 0x00, 
38424
  0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0xDA, 0x83, 
38425
  0x45, 0x00, 0x11, 0x00, 0xDA, 0x14, 0x00, 0x11, 0x01, 0xDA, 0x83, 0x49, 0x00, 0x11, 0x02, 0xDA, 
38426
  0x83, 0x7A, 0x00, 0x11, 0x03, 0xDA, 0x39, 0x04, 0x10, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38427
  0x30, 0x35, 0x6B, 0x07, 0x10, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6A, 0x0A, 
38428
  0x10, 0x07, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 
38429
  0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x04, 0x05, 0x06, 
38430
  0x1B, 0x06, 0x04, 0x00, 0x1F, 0x06, 0x08, 0x00, 0x3A, 0x04, 0x05, 0x06, 0x1B, 0x07, 0x04, 0x00, 
38431
  0x32, 0x07, 0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x49, 0x06, 0x05, 0x06, 
38432
  0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x8A, 0xE6, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
38433
  0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38434
  0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x08, 0x6D, 0x61, 
38435
  0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 
38436
  0xCF, 0x06, 0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 
38437
  0x03, 0x03, 0x03, 0x02, 0x21, 0x00, 0x0D, 0xCE, 0x06, 0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0xDA, 
38438
  0x04, 0xDA, 0x83, 0x70, 0xDA, 0x82, 0xC2, 0x00, 0x21, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x21, 0x01, 
38439
  0xDA, 0x83, 0x71, 0x00, 0x21, 0x02, 0xDA, 0x46, 0x00, 0x21, 0x03, 0xDA, 0x83, 0x84, 0x00, 0x21, 
38440
  0x04, 0xDA, 0x81, 0x15, 0x03, 0x21, 0x05, 0xDA, 0x83, 0x72, 0x08, 0x1B, 0x07, 0xDA, 0x43, 0x08, 
38441
  0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x59, 0x0C, 0x1B, 0x0A, 0xDA, 0x3A, 
38442
  0x0E, 0x1B, 0x0B, 0xDA, 0x46, 0x14, 0x17, 0x0D, 0xDA, 0x83, 0x74, 0x1C, 0x21, 0x08, 0xDA, 0x83, 
38443
  0x75, 0x1E, 0x21, 0x0A, 0xDA, 0x83, 0x76, 0x1B, 0x04, 0x00, 0x00, 0x3F, 0x05, 0x01, 0x00, 0x07, 
38444
  0x06, 0x05, 0x01, 0x1B, 0x05, 0x06, 0x00, 0x24, 0x07, 0x05, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 
38445
  0x08, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x2B, 0x07, 0x00, 0x00, 0x23, 0x08, 0x07, 0x05, 0x1E, 
38446
  0x08, 0x11, 0x00, 0x3B, 0x09, 0x01, 0x07, 0x1B, 0x0A, 0x09, 0x00, 0x3B, 0x09, 0x04, 0x0A, 0x1B, 
38447
  0x0B, 0x09, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x25, 0x09, 0x0C, 0x0B, 0x1E, 0x09, 0x07, 0x00, 0x2C, 
38448
  0x0D, 0x01, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x3C, 0x04, 0x0A, 0x0D, 0x1B, 
38449
  0x04, 0x0D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x0B, 0x00, 0x05, 0x07, 0x07, 0x01, 0x1C, 
38450
  0xEF, 0xFF, 0xFF, 0x3B, 0x07, 0x01, 0x05, 0x1B, 0x08, 0x07, 0x00, 0x3B, 0x09, 0x04, 0x08, 0x1B, 
38451
  0x0A, 0x09, 0x00, 0x3C, 0x04, 0x08, 0x02, 0x03, 0x00, 0x00, 0x00, 0x86, 0x72, 0x03, 0x01, 0x11, 
38452
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 0x13, 0x00, 0x13, 0x01, 0x03, 0x00, 0x03, 
38453
  0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 
38454
  0x01, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFD, 0x05, 0x04, 0x07, 0xBF, 
38455
  0xF9, 0x03, 0x00, 0x03, 0x08, 0x11, 0x00, 0x03, 0x01, 0x11, 0x00, 0x03, 0x01, 0x03, 0xBF, 0xEE, 
38456
  0x01, 0xCF, 0x04, 0x64, 0x72, 0x6F, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x02, 
38457
  0x02, 0x02, 0x0A, 0x2C, 0x00, 0x05, 0xCE, 0x04, 0x64, 0x72, 0x6F, 0x70, 0xDA, 0x04, 0xDA, 0x2B, 
38458
  0xDA, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x03, 0x00, 0x14, 0x00, 
38459
  0x05, 0xCE, 0x0C, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6E, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 
38460
  0x04, 0x00, 0x14, 0x00, 0xDA, 0x31, 0x00, 0x14, 0x01, 0xDA, 0x32, 0x00, 0x14, 0x02, 0xDA, 0x33, 
38461
  0x00, 0x14, 0x03, 0xCF, 0x0C, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6E, 0x2D, 0x73, 0x6C, 0x69, 0x63, 
38462
  0x65, 0x01, 0x14, 0x05, 0xDA, 0x37, 0x3F, 0x04, 0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x07, 
38463
  0x00, 0x00, 0x48, 0x06, 0x07, 0x01, 0x1E, 0x06, 0x02, 0x00, 0x48, 0x06, 0x01, 0x05, 0x1E, 0x06, 
38464
  0x03, 0x00, 0x32, 0x02, 0x01, 0x00, 0x36, 0x00, 0x00, 0x00, 0x09, 0x07, 0x05, 0xFF, 0x23, 0x08, 
38465
  0x07, 0x01, 0x1E, 0x08, 0x02, 0x00, 0x24, 0x08, 0x01, 0x00, 0x1E, 0x08, 0x05, 0x00, 0x06, 0x07, 
38466
  0x05, 0x01, 0x2B, 0x09, 0x00, 0x00, 0x33, 0x02, 0x09, 0x07, 0x36, 0x00, 0x00, 0x00, 0x32, 0x02, 
38467
  0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x84, 0xDF, 0x0C, 0x00, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 
38468
  0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x12, 0x00, 0x12, 0x01, 0x08, 0x00, 0x05, 0x00, 0x05, 
38469
  0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x1E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x01, 0x05, 0x00, 
38470
  0x05, 0xDA, 0x3C, 0xDA, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
38471
  0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3F, 0xDA, 0x04, 0xDA, 
38472
  0x1C, 0xDA, 0x68, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x07, 0x73, 0x74, 0x72, 
38473
  0x75, 0x63, 0x74, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
38474
  0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6E, 0x2D, 0x00, 0x2D, 
38475
  0x00, 0x2D, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0xD8, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
38476
  0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38477
  0x0B, 0x03, 0x03, 0x03, 0x00, 0x13, 0x00, 0x0A, 0xCE, 0x0B, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6E, 
38478
  0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x31, 0x00, 0x13, 0x01, 0xDA, 
38479
  0x32, 0x00, 0x13, 0x02, 0xDA, 0x33, 0x00, 0x13, 0x03, 0xCF, 0x0B, 0x64, 0x72, 0x6F, 0x70, 0x2D, 
38480
  0x6E, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x02, 0x13, 0x05, 0xDA, 0x7E, 0x03, 0x13, 0x06, 0xDA, 0x81, 
38481
  0x01, 0x03, 0x12, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x63, 0x06, 0x12, 0x08, 
38482
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x62, 0x09, 0x12, 0x09, 0xDA, 0x43, 0x0A, 0x12, 
38483
  0x0A, 0xDA, 0x1E, 0x31, 0x02, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1B, 
38484
  0x06, 0x01, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x02, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 
38485
  0x08, 0x0B, 0x00, 0x3A, 0x07, 0x02, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x07, 0x06, 0x06, 0x01, 0x24, 
38486
  0x07, 0x06, 0x00, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x3C, 
38487
  0x05, 0x09, 0x07, 0x49, 0x08, 0x02, 0x08, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 
38488
  0xE7, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38489
  0x00, 0x03, 0x00, 0x03, 0x00, 0x25, 0x00, 0x22, 0x00, 0x03, 0x00, 0x03, 0x00, 0x33, 0x00, 0x33, 
38490
  0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
38491
  0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0xDA, 0x04, 
38492
  0xDA, 0x1C, 0xDA, 0x61, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x74, 0x61, 
38493
  0x62, 0x6C, 0x65, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
38494
  0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6D, 0x2B, 0x00, 0x2B, 
38495
  0x00, 0x2B, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0xD8, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 
38496
  0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x00, 0x2C, 0x00, 0xDA, 0x32, 0x00, 0x2C, 0x01, 0xDA, 0x33, 0x00, 
38497
  0x2C, 0x02, 0xDA, 0x83, 0x88, 0x20, 0x2C, 0x07, 0xDA, 0x82, 0xAD, 0x21, 0x2B, 0x08, 0xCF, 0x07, 
38498
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x64, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 
38499
  0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 
38500
  0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 
38501
  0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 0x2C, 
38502
  0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 
38503
  0x05, 0x06, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x33, 0x06, 0x00, 0x01, 0x2C, 
38504
  0x06, 0x07, 0x00, 0x36, 0x06, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x08, 0x00, 0x35, 
38505
  0x06, 0x07, 0x00, 0x1E, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x09, 0x00, 0x33, 0x07, 0x00, 0x01, 0x2C, 
38506
  0x07, 0x07, 0x00, 0x36, 0x07, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x00, 0x00, 0x22, 
38507
  0x09, 0x08, 0x00, 0x1E, 0x09, 0x08, 0x00, 0x49, 0x07, 0x01, 0x07, 0x28, 0x0B, 0x00, 0x00, 0x25, 
38508
  0x0A, 0x0B, 0x07, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x07, 0x08, 0x08, 0x01, 0x1C, 
38509
  0xF8, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x84, 0xF1, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 
38510
  0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
38511
  0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
38512
  0xBF, 0xFD, 0x03, 0x03, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x05, 0x00, 0x05, 0x00, 
38513
  0x05, 0xBF, 0xFC, 0x03, 0x04, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x02, 0x07, 0x01, 0x07, 
38514
  0x00, 0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x2E, 0xBF, 0xFF, 
38515
  0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0xCF, 0x13, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 
38516
  0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xD8, 0x13, 0x74, 0x61, 0x62, 
38517
  0x6C, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 
38518
  0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0xD8, 0x0B, 0x6E, 
38519
  0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 
38520
  0x2D, 0x64, 0x79, 0x6E, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0C, 0x01, 0x01, 0xCD, 
38521
  0x7F, 0xFF, 0xFF, 0xFF, 0x07, 0x24, 0x00, 0x08, 0xCE, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 
38522
  0x79, 0x6E, 0x73, 0xDA, 0x04, 0xCF, 0x06, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0xDA, 0x30, 0xDA, 
38523
  0x80, 0xAE, 0xD0, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0xDA, 0x80, 0xDC, 
38524
  0xD0, 0x01, 0x70, 0xDA, 0x83, 0x42, 0x00, 0x24, 0x00, 0xCF, 0x08, 0x62, 0x69, 0x6E, 0x64, 0x69, 
38525
  0x6E, 0x67, 0x73, 0x00, 0x24, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x24, 0x02, 0xDA, 0x83, 0xA0, 0x01, 
38526
  0x15, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x76, 0x02, 0x15, 0x03, 0xCF, 0x07, 
38527
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x77, 0x04, 0x15, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38528
  0x30, 0x32, 0x78, 0x07, 0x15, 0x07, 0xDA, 0x43, 0x14, 0x24, 0x04, 0xCF, 0x09, 0x64, 0x79, 0x6E, 
38529
  0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 
38530
  0x00, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 
38531
  0x0F, 0x00, 0x1B, 0x07, 0x03, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x08, 0x00, 0x00, 0x05, 0x09, 
38532
  0x07, 0x01, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x33, 0x0B, 
38533
  0x08, 0x0A, 0x45, 0x09, 0x00, 0x00, 0x32, 0x04, 0x09, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x08, 
38534
  0x0A, 0x00, 0x05, 0x03, 0x03, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x06, 
38535
  0x02, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x06, 0x07, 0x03, 0x34, 0x04, 0x00, 0x00, 0x34, 0x01, 
38536
  0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x06, 
38537
  0x05, 0x07, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x32, 0x06, 0x03, 0x00, 0x45, 0x05, 
38538
  0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x85, 0xE6, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 
38539
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x29, 0x00, 0x1F, 0x00, 
38540
  0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38541
  0x00, 0x05, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38542
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38543
  0xCF, 0x06, 0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0xDA, 0x3C, 0xDA, 0x81, 0x79, 0xDA, 0x81, 0x72, 
38544
  0xCF, 0x06, 0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 
38545
  0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x06, 0xCE, 0x06, 0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0xDA, 
38546
  0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 0x01, 0xDA, 0x83, 0xAC, 0x00, 0x0E, 0x00, 
38547
  0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 0x3A, 0x04, 0x0E, 0x04, 0xDA, 0x39, 0x08, 0x0D, 0x05, 
38548
  0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x3B, 0x02, 
38549
  0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 0x03, 0x00, 0x03, 0x1F, 0x03, 0x07, 0x00, 0x3A, 0x02, 
38550
  0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x21, 0x02, 0x05, 0x04, 0x1E, 0x02, 0x02, 0x00, 0x1B, 0x04, 
38551
  0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0x3B, 0x0A, 0x00, 0x0A, 0x00, 
38552
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
38553
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x72, 
38554
  0x76, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 0x05, 0x02, 0x05, 0x02, 0x0B, 
38555
  0x00, 0x01, 0x07, 0xCE, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0xDA, 
38556
  0x04, 0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0xDA, 0x80, 0xB0, 
38557
  0x00, 0x0B, 0x00, 0xCF, 0x04, 0x68, 0x6F, 0x73, 0x74, 0x00, 0x0B, 0x01, 0xCF, 0x04, 0x70, 0x6F, 
38558
  0x72, 0x74, 0x00, 0x0B, 0x02, 0xCF, 0x07, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x0B, 
38559
  0x03, 0xCF, 0x04, 0x74, 0x79, 0x70, 0x65, 0x00, 0x0B, 0x04, 0xCF, 0x08, 0x6E, 0x6F, 0x2D, 0x72, 
38560
  0x65, 0x75, 0x73, 0x65, 0x00, 0x0B, 0x05, 0xDA, 0x83, 0xAF, 0x04, 0x0B, 0x07, 0xDA, 0x81, 0x2A, 
38561
  0x33, 0x00, 0x01, 0x03, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 
38562
  0x1B, 0x07, 0x06, 0x00, 0x1E, 0x02, 0x05, 0x00, 0x30, 0x08, 0x00, 0x00, 0x31, 0x08, 0x00, 0x00, 
38563
  0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x03, 0x07, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 
38564
  0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, 0x07, 0xDA, 0x04, 0xD8, 0x0F, 0x6E, 0x65, 0x74, 
38565
  0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0xBF, 0xFF, 0x00, 0x00, 
38566
  0xDA, 0x83, 0xB3, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 
38567
  0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0xB6, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0xB7, 0xBF, 
38568
  0xFF, 0x00, 0x05, 0xDA, 0x83, 0xAF, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x2A, 0x2D, 0x00, 0x00, 
38569
  0x07, 0x2D, 0x01, 0x00, 0x02, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 
38570
  0x00, 0xBF, 0xFF, 0x8F, 0x56, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x8F, 0x54, 
38571
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x01, 0x0E, 0x00, 0x07, 0x00, 
38572
  0x07, 0x00, 0x07, 0xBF, 0xFB, 0x03, 0x84, 0x00, 0x00, 0x00, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 
38573
  0x63, 0x61, 0x6C, 0x6C, 0xD8, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0xCF, 0x06, 
38574
  0x6F, 0x73, 0x2F, 0x64, 0x69, 0x72, 0xDA, 0x80, 0xF1, 0xCF, 0x06, 0x72, 0x65, 0x64, 0x75, 0x63, 
38575
  0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x03, 0x03, 0x00, 0x0C, 0x00, 0x08, 
38576
  0xCE, 0x06, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x04, 0x00, 0x0C, 0x00, 0xDA, 0x31, 0x00, 
38577
  0x0C, 0x01, 0xCF, 0x04, 0x69, 0x6E, 0x69, 0x74, 0x00, 0x0C, 0x02, 0xDA, 0x33, 0x00, 0x0C, 0x03, 
38578
  0xDA, 0x83, 0xBC, 0x00, 0x0C, 0x04, 0xCF, 0x05, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x00, 0x0B, 0x02, 
38579
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x58, 0x03, 0x0B, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
38580
  0x30, 0x30, 0x30, 0x30, 0x57, 0x06, 0x0B, 0x07, 0xCF, 0x02, 0x65, 0x6C, 0x1B, 0x04, 0x01, 0x00, 
38581
  0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x02, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x07, 0x00, 
38582
  0x3A, 0x05, 0x02, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x32, 0x04, 0x07, 0x00, 0x35, 0x04, 0x00, 0x00, 
38583
  0x49, 0x06, 0x02, 0x06, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0xE2, 0x03, 0x01, 
38584
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
38585
  0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0xDA, 
38586
  0x80, 0xF0, 0xCF, 0x09, 0x64, 0x65, 0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 
38587
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x03, 0x0B, 0x00, 0x04, 0xCE, 0x09, 0x64, 0x65, 
38588
  0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xDA, 0x04, 0xD8, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
38589
  0x6C, 0xDA, 0x08, 0xDA, 0x82, 0xC9, 0x00, 0x0B, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x0B, 0x01, 0xCF, 
38590
  0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x0B, 0x02, 0xDA, 0x83, 0xC5, 0x03, 0x0B, 0x04, 0xCF, 
38591
  0x05, 0x6E, 0x61, 0x6D, 0x65, 0x2A, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 
38592
  0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x05, 0x01, 0x00, 0x44, 0x05, 
38593
  0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x04, 0x00, 
38594
  0x00, 0x00, 0x58, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
38595
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
38596
  0x61, 0x62, 0x73, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x62, 0x73, 0xCF, 0x06, 0x6E, 
38597
  0x61, 0x74, 0x69, 0x76, 0x65, 0xD8, 0x06, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xCF, 0x05, 0x74, 
38598
  0x72, 0x61, 0x63, 0x65, 0xD8, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0xCF, 0x0B, 0x64, 0x65, 0x62, 
38599
  0x75, 0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD8, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
38600
  0x62, 0x72, 0x65, 0x61, 0x6B, 0xCF, 0x0D, 0x2A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x6C, 0x69, 
38601
  0x6E, 0x74, 0x73, 0x2A, 0xDA, 0x83, 0x15, 0xCF, 0x09, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 
38602
  0x61, 0x6C, 0xD8, 0x09, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0xCF, 0x09, 0x67, 
38603
  0x63, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0xD8, 0x09, 0x67, 0x63, 0x63, 0x6F, 0x6C, 0x6C, 
38604
  0x65, 0x63, 0x74, 0xCF, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x00, 
38605
  0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x06, 0x2F, 0x00, 0x0B, 0xCE, 0x07, 0x72, 0x65, 0x76, 
38606
  0x65, 0x72, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x3C, 0xDA, 0x83, 0x11, 0xDA, 0x2F, 0xDA, 
38607
  0x30, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x05, 
38608
  0xCE, 0x08, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 
38609
  0x82, 0x33, 0x00, 0x0E, 0x01, 0xCF, 0x08, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 0x00, 
38610
  0x0E, 0x02, 0xDA, 0x43, 0x02, 0x0E, 0x04, 0xCF, 0x01, 0x6A, 0x07, 0x0D, 0x07, 0xCF, 0x02, 0x74, 
38611
  0x69, 0x2B, 0x02, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x07, 0x04, 0x04, 
38612
  0x01, 0x23, 0x05, 0x02, 0x04, 0x1E, 0x05, 0x08, 0x00, 0x3A, 0x06, 0x00, 0x02, 0x1B, 0x07, 0x06, 
38613
  0x00, 0x3A, 0x06, 0x00, 0x04, 0x3C, 0x00, 0x02, 0x06, 0x3C, 0x00, 0x04, 0x07, 0x05, 0x02, 0x02, 
38614
  0x01, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x86, 0x1D, 0x03, 0x01, 0x0A, 0x00, 0x03, 
38615
  0x01, 0x0F, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x05, 0x01, 0x05, 
38616
  0x01, 0x05, 0xBF, 0xFC, 0x03, 0xBF, 0xFA, 0x01, 0x00, 0x2F, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x2F, 
38617
  0x01, 0xDA, 0x83, 0xD8, 0x05, 0x1F, 0x04, 0xDA, 0x32, 0x13, 0x1F, 0x05, 0xDA, 0x39, 0x13, 0x1E, 
38618
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x50, 0x16, 0x1E, 0x06, 0xCF, 0x07, 0x5F, 
38619
  0x30, 0x30, 0x30, 0x30, 0x32, 0x4F, 0x19, 0x1E, 0x07, 0xDA, 0x46, 0x20, 0x2C, 0x04, 0xCF, 0x07, 
38620
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x51, 0x20, 0x2C, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38621
  0x30, 0x32, 0x53, 0x23, 0x2C, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x52, 0x26, 
38622
  0x2C, 0x06, 0xDA, 0x46, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
38623
  0x1E, 0x02, 0x1C, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 
38624
  0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 
38625
  0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x1C, 0x05, 0x00, 0x00, 
38626
  0x31, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 
38627
  0x1B, 0x05, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x03, 0x00, 0x06, 0x1B, 0x06, 0x03, 0x00, 
38628
  0x1F, 0x06, 0x07, 0x00, 0x3A, 0x03, 0x00, 0x06, 0x1B, 0x07, 0x03, 0x00, 0x07, 0x04, 0x04, 0x01, 
38629
  0x3C, 0x05, 0x04, 0x07, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 
38630
  0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 
38631
  0x1B, 0x05, 0x03, 0x00, 0x1F, 0x05, 0x08, 0x00, 0x3A, 0x03, 0x00, 0x05, 0x1B, 0x06, 0x03, 0x00, 
38632
  0x32, 0x04, 0x06, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x03, 0x07, 0x00, 0x49, 0x05, 0x00, 0x05, 
38633
  0x1C, 0xF9, 0xFF, 0xFF, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x03, 0x05, 0x00, 0x36, 0x03, 0x00, 0x00, 
38634
  0x86, 0x2A, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x0E, 0x00, 0x07, 0x01, 0x14, 0x00, 
38635
  0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 
38636
  0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x07, 0x03, 0x07, 0x00, 0x07, 0x00, 
38637
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 
38638
  0xBF, 0xFB, 0x05, 0x08, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
38639
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 
38640
  0x05, 0x00, 0x05, 0xCF, 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 0x05, 0x66, 0x6C, 0x75, 0x73, 
38641
  0x68, 0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 
38642
  0x74, 0x72, 0x69, 0x6E, 0x67, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 
38643
  0x73, 0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xCF, 0x01, 0x2F, 0xDA, 0x83, 0x03, 0xCF, 
38644
  0x04, 0x6C, 0x6F, 0x6F, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 
38645
  0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x00, 0x03, 0xCE, 0x04, 0x6C, 0x6F, 0x6F, 0x70, 0xDA, 0x04, 
38646
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x15, 0x03, 0x03, 0x03, 0x29, 0x80, 0xD5, 0x00, 0x0C, 
38647
  0xCE, 0x05, 0x6C, 0x6F, 0x6F, 0x70, 0x31, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 0xDA, 0x83, 0x4D, 0xD0, 
38648
  0x05, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x82, 0x99, 0xDA, 0x82, 0x81, 0xD0, 0x05, 0x77, 0x68, 
38649
  0x69, 0x6C, 0x65, 0xD0, 0x03, 0x6C, 0x65, 0x74, 0xCF, 0x03, 0x6C, 0x65, 0x74, 0xD0, 0x05, 0x61, 
38650
  0x66, 0x74, 0x65, 0x72, 0xD0, 0x06, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0xD0, 0x06, 0x72, 0x65, 
38651
  0x70, 0x65, 0x61, 0x74, 0xDA, 0x5C, 0xDA, 0x82, 0x55, 0xCF, 0x01, 0x3E, 0xCF, 0x02, 0x2D, 0x2D, 
38652
  0xDA, 0x82, 0x5D, 0xD0, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xCF, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xD0, 
38653
  0x06, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xCF, 0x06, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xCE, 
38654
  0x19, 0x75, 0x6E, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
38655
  0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0xDA, 0x81, 0x28, 0xD0, 0x05, 0x72, 
38656
  0x61, 0x6E, 0x67, 0x65, 0xDA, 0x82, 0x78, 0xDA, 0x80, 0xF4, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
38657
  0x00, 0x14, 0x06, 0x06, 0x06, 0x04, 0x3B, 0x00, 0x0F, 0xCE, 0x0E, 0x72, 0x61, 0x6E, 0x67, 0x65, 
38658
  0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
38659
  0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x03, 0x0B, 0x00, 0x02, 0xCE, 0x0D, 0x63, 0x68, 0x65, 0x63, 
38660
  0x6B, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0xDA, 0x04, 0xDA, 0x2B, 0xCE, 0x1E, 0x65, 
38661
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
38662
  0x72, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0xDA, 0x81, 0x28, 
38663
  0x00, 0x0B, 0x00, 0xDA, 0x1E, 0x00, 0x0B, 0x01, 0xCF, 0x0D, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 
38664
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
38665
  0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 
38666
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 0x04, 
38667
  0x00, 0x00, 0x00, 0x81, 0xDA, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0C, 
38668
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x83, 0xFD, 0xD0, 0x04, 0x64, 
38669
  0x6F, 0x77, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x07, 0x07, 0x07, 0x03, 0x0E, 
38670
  0x00, 0x09, 0xCE, 0x0C, 0x66, 0x6F, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 
38671
  0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x7A, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x5E, 
38672
  0x00, 0x0E, 0x01, 0xDA, 0x35, 0x00, 0x0E, 0x02, 0xDA, 0x82, 0x82, 0x00, 0x0E, 0x03, 0xDA, 0x82, 
38673
  0x83, 0x00, 0x0E, 0x04, 0xDA, 0x82, 0x84, 0x00, 0x0E, 0x05, 0xDA, 0x82, 0x85, 0x00, 0x0E, 0x06, 
38674
  0xDA, 0x80, 0xC7, 0x00, 0x0E, 0x07, 0xCF, 0x0C, 0x66, 0x6F, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 
38675
  0x6C, 0x61, 0x74, 0x65, 0x02, 0x0E, 0x09, 0xDA, 0x43, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 
38676
  0x00, 0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x33, 0x0B, 0x00, 0x09, 0x45, 0x0A, 0x00, 
38677
  0x00, 0x31, 0x0A, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x33, 0x09, 0x01, 
38678
  0x02, 0x33, 0x03, 0x04, 0x05, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x36, 0x0B, 0x00, 
38679
  0x00, 0x81, 0xD5, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x02, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 
38680
  0x00, 0x15, 0x00, 0x15, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38681
  0x3B, 0x00, 0xDA, 0x82, 0x5E, 0x00, 0x3B, 0x01, 0xCF, 0x06, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 
38682
  0x00, 0x3B, 0x02, 0xDA, 0x82, 0x60, 0x00, 0x3B, 0x03, 0xCF, 0x04, 0x72, 0x65, 0x73, 0x74, 0x00, 
38683
  0x3B, 0x04, 0xCF, 0x02, 0x6F, 0x70, 0x00, 0x3B, 0x05, 0xDA, 0x82, 0x84, 0x00, 0x3B, 0x06, 0xCF, 
38684
  0x0E, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x04, 
38685
  0x3B, 0x09, 0xDA, 0x80, 0xFA, 0x06, 0x3B, 0x0A, 0xDA, 0x81, 0x64, 0x08, 0x3B, 0x0B, 0xDA, 0x83, 
38686
  0x1C, 0x0A, 0x2E, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x63, 0x0C, 0x21, 0x02, 
38687
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x64, 0x2F, 0x3B, 0x0D, 0xDA, 0x35, 0x31, 0x3B, 
38688
  0x0E, 0xDA, 0x82, 0x82, 0x33, 0x3B, 0x0F, 0xDA, 0x82, 0x83, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x08, 
38689
  0x00, 0x00, 0x35, 0x07, 0x08, 0x00, 0x3D, 0x08, 0x01, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x3D, 0x08, 
38690
  0x01, 0x01, 0x1B, 0x0A, 0x08, 0x00, 0x3D, 0x08, 0x01, 0x02, 0x1B, 0x0B, 0x08, 0x00, 0x3F, 0x08, 
38691
  0x01, 0x00, 0x1B, 0x0C, 0x08, 0x00, 0x26, 0x0D, 0x0C, 0x01, 0x1E, 0x0D, 0x17, 0x00, 0x2C, 0x10, 
38692
  0x01, 0x00, 0x25, 0x0F, 0x02, 0x10, 0x1E, 0x0F, 0x07, 0x00, 0x2B, 0x10, 0x00, 0x00, 0x2B, 0x11, 
38693
  0x01, 0x00, 0x33, 0x10, 0x09, 0x11, 0x45, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1C, 0x0C, 
38694
  0x00, 0x00, 0x2C, 0x12, 0x02, 0x00, 0x25, 0x11, 0x02, 0x12, 0x1E, 0x11, 0x07, 0x00, 0x2B, 0x12, 
38695
  0x00, 0x00, 0x2B, 0x13, 0x01, 0x00, 0x33, 0x09, 0x12, 0x13, 0x45, 0x12, 0x00, 0x00, 0x1B, 0x10, 
38696
  0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1B, 0x08, 
38697
  0x0E, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x26, 0x0F, 0x0C, 0x02, 0x1E, 0x0F, 0x06, 0x00, 0x2B, 0x10, 
38698
  0x01, 0x00, 0x33, 0x09, 0x0A, 0x10, 0x45, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1C, 0x04, 
38699
  0x00, 0x00, 0x33, 0x09, 0x0A, 0x0B, 0x45, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1B, 0x08, 
38700
  0x0E, 0x00, 0x3D, 0x0C, 0x08, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x3D, 0x0C, 0x08, 0x01, 0x1B, 0x0E, 
38701
  0x0C, 0x00, 0x3D, 0x0C, 0x08, 0x02, 0x1B, 0x0F, 0x0C, 0x00, 0x31, 0x03, 0x00, 0x00, 0x45, 0x0C, 
38702
  0x00, 0x00, 0x33, 0x00, 0x0D, 0x0E, 0x33, 0x0F, 0x05, 0x04, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x10, 
38703
  0x03, 0x00, 0x36, 0x10, 0x00, 0x00, 0x81, 0xE0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
38704
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 
38705
  0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
38706
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 
38707
  0x29, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 
38708
  0x00, 0x05, 0x02, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x03, 0x07, 0x00, 
38709
  0x07, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38710
  0x03, 0x00, 0x03, 0x05, 0x37, 0x00, 0x37, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38711
  0x03, 0xD0, 0x08, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0x09, 
38712
  0x00, 0x17, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x02, 0x3C, 0x3D, 
38713
  0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 
38714
  0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x48, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 
38715
  0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 
38716
  0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 
38717
  0xDA, 0x84, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
38718
  0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x01, 0x2D, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 
38719
  0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 
38720
  0x02, 0x05, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x08, 0x03, 0x03, 0x04, 0x03, 
38721
  0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x08, 
38722
  0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 
38723
  0x03, 0x00, 0x00, 0xDA, 0x80, 0xF8, 0xD0, 0x07, 0x64, 0x6F, 0x77, 0x6E, 0x2D, 0x74, 0x6F, 0xD7, 
38724
  0x00, 0xCD, 0x00, 0x09, 0x00, 0x16, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 
38725
  0xCE, 0x02, 0x3E, 0x3D, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 
38726
  0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x47, 0x02, 0x03, 0x04, 
38727
  0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 
38728
  0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 
38729
  0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x5A, 0xDA, 0x82, 0x4A, 0xDA, 0x82, 0x5B, 0xD0, 0x02, 0x69, 
38730
  0x6E, 0xDA, 0x82, 0x49, 0xD0, 0x07, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 
38731
  0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x03, 0x06, 0x15, 0x00, 0x05, 0xCE, 0x10, 0x69, 0x74, 
38732
  0x65, 0x72, 0x61, 0x74, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 
38733
  0xDA, 0x5C, 0xDA, 0x82, 0x55, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x5D, 0xDA, 0x80, 
38734
  0xB3, 0x00, 0x15, 0x00, 0xDA, 0x82, 0x5E, 0x00, 0x15, 0x01, 0xCF, 0x04, 0x65, 0x78, 0x70, 0x72, 
38735
  0x00, 0x15, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x15, 0x03, 0xCF, 0x10, 0x69, 0x74, 0x65, 0x72, 0x61, 
38736
  0x74, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x15, 0x05, 0xDA, 0x43, 
38737
  0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 
38738
  0x28, 0x07, 0x00, 0x00, 0x33, 0x06, 0x05, 0x07, 0x45, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 
38739
  0x33, 0x07, 0x05, 0x01, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x08, 0x00, 0x05, 
38740
  0x45, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x06, 0x07, 0x31, 0x02, 0x00, 0x00, 
38741
  0x45, 0x08, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x07, 0x04, 0x08, 0x45, 0x06, 0x00, 0x00, 
38742
  0x03, 0x06, 0x00, 0x00, 0x81, 0xFB, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 
38743
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
38744
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCE, 
38745
  0x15, 0x75, 0x6E, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
38746
  0x20, 0x76, 0x65, 0x72, 0x62, 0x20, 0x00, 0x80, 0xD5, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x80, 0xD5, 
38747
  0x01, 0xCF, 0x04, 0x68, 0x65, 0x61, 0x64, 0x00, 0x80, 0xD5, 0x02, 0xDA, 0x43, 0x00, 0x80, 0xD5, 
38748
  0x03, 0xCF, 0x05, 0x6C, 0x6F, 0x6F, 0x70, 0x31, 0x0A, 0x80, 0xD5, 0x05, 0xDA, 0x82, 0x5E, 0x0D, 
38749
  0x80, 0xD5, 0x07, 0xCF, 0x04, 0x76, 0x65, 0x72, 0x62, 0x15, 0x7C, 0x08, 0xDA, 0x84, 0x09, 0x15, 
38750
  0x7C, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x66, 0x55, 0x68, 0x10, 0xCF, 0x04, 
38751
  0x69, 0x74, 0x65, 0x72, 0x7E, 0x80, 0xD5, 0x09, 0xDA, 0x84, 0x08, 0x80, 0x82, 0x80, 0xD5, 0x04, 
38752
  0xDA, 0x84, 0x09, 0x80, 0x82, 0x80, 0xD5, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
38753
  0x67, 0x2E, 0x03, 0x00, 0x00, 0x3F, 0x04, 0x01, 0x00, 0x48, 0x05, 0x04, 0x02, 0x1E, 0x05, 0x06, 
38754
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 
38755
  0x00, 0x03, 0x04, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x02, 0x1B, 0x05, 0x04, 0x00, 0x05, 0x06, 0x02, 
38756
  0x01, 0x3A, 0x04, 0x01, 0x06, 0x1B, 0x07, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x01, 
38757
  0x00, 0x35, 0x04, 0x08, 0x00, 0x1E, 0x04, 0x6B, 0x00, 0x05, 0x08, 0x02, 0x02, 0x33, 0x00, 0x01, 
38758
  0x08, 0x35, 0x09, 0x03, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x25, 0x09, 0x05, 
38759
  0x0A, 0x1E, 0x09, 0x0D, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x0A, 0x00, 
38760
  0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x07, 0x0A, 0x28, 0x0C, 0x00, 0x00, 0x31, 0x0C, 0x00, 
38761
  0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x33, 0x0C, 0x0B, 0x08, 0x45, 0x0A, 0x00, 
38762
  0x00, 0x03, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x25, 0x0A, 0x05, 0x0B, 0x1E, 0x0A, 0x0D, 
38763
  0x00, 0x2C, 0x0C, 0x03, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x04, 
38764
  0x00, 0x28, 0x0E, 0x00, 0x00, 0x33, 0x0D, 0x07, 0x0E, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x0C, 0x00, 
38765
  0x00, 0x2C, 0x0D, 0x00, 0x00, 0x33, 0x0D, 0x0C, 0x08, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 
38766
  0x00, 0x2C, 0x0C, 0x06, 0x00, 0x25, 0x0B, 0x05, 0x0C, 0x1E, 0x0B, 0x08, 0x00, 0x2C, 0x0D, 0x00, 
38767
  0x00, 0x32, 0x0D, 0x08, 0x00, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x33, 0x0E, 0x07, 
38768
  0x0C, 0x45, 0x0D, 0x00, 0x00, 0x03, 0x0D, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x25, 0x0C, 0x05, 
38769
  0x0D, 0x1E, 0x0C, 0x07, 0x00, 0x2C, 0x0E, 0x00, 0x00, 0x33, 0x0E, 0x08, 0x07, 0x28, 0x0E, 0x00, 
38770
  0x00, 0x31, 0x0E, 0x00, 0x00, 0x45, 0x0D, 0x00, 0x00, 0x03, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x09, 
38771
  0x00, 0x25, 0x0D, 0x05, 0x0E, 0x1E, 0x0D, 0x07, 0x00, 0x2C, 0x0F, 0x00, 0x00, 0x33, 0x0F, 0x07, 
38772
  0x08, 0x28, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x45, 0x0E, 0x00, 0x00, 0x03, 0x0E, 0x00, 
38773
  0x00, 0x2C, 0x0F, 0x0A, 0x00, 0x25, 0x0E, 0x05, 0x0F, 0x1E, 0x0E, 0x16, 0x00, 0x2C, 0x10, 0x0B, 
38774
  0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2C, 0x11, 0x0C, 0x00, 0x33, 0x11, 0x10, 
38775
  0x07, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x2B, 0x13, 0x00, 0x00, 0x33, 0x12, 0x10, 
38776
  0x13, 0x45, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x0E, 0x00, 0x32, 0x13, 0x10, 0x00, 0x45, 0x12, 0x00, 
38777
  0x00, 0x2C, 0x14, 0x0F, 0x00, 0x33, 0x14, 0x11, 0x08, 0x31, 0x12, 0x00, 0x00, 0x45, 0x13, 0x00, 
38778
  0x00, 0x2C, 0x12, 0x00, 0x00, 0x33, 0x12, 0x0F, 0x13, 0x45, 0x11, 0x00, 0x00, 0x03, 0x11, 0x00, 
38779
  0x00, 0x2C, 0x10, 0x10, 0x00, 0x25, 0x0F, 0x05, 0x10, 0x1E, 0x0F, 0x05, 0x00, 0x2C, 0x11, 0x11, 
38780
  0x00, 0x33, 0x11, 0x07, 0x08, 0x45, 0x10, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x12, 
38781
  0x00, 0x25, 0x10, 0x05, 0x11, 0x1E, 0x10, 0x05, 0x00, 0x2C, 0x12, 0x13, 0x00, 0x33, 0x12, 0x07, 
38782
  0x08, 0x45, 0x11, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x2C, 0x11, 0x14, 0x00, 0x32, 0x11, 0x05, 
38783
  0x00, 0x2C, 0x12, 0x15, 0x00, 0x35, 0x11, 0x12, 0x00, 0x01, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 
38784
  0x00, 0x05, 0x08, 0x02, 0x02, 0x3A, 0x04, 0x01, 0x08, 0x1B, 0x09, 0x04, 0x00, 0x05, 0x04, 0x02, 
38785
  0x03, 0x33, 0x00, 0x01, 0x04, 0x35, 0x0A, 0x03, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x2C, 0x0B, 0x16, 
38786
  0x00, 0x25, 0x0A, 0x07, 0x0B, 0x1E, 0x0A, 0x08, 0x00, 0x2C, 0x0B, 0x16, 0x00, 0x33, 0x05, 0x09, 
38787
  0x0B, 0x2C, 0x0B, 0x17, 0x00, 0x2C, 0x0C, 0x18, 0x00, 0x33, 0x04, 0x0B, 0x0C, 0x2C, 0x0B, 0x19, 
38788
  0x00, 0x36, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x1A, 0x00, 0x25, 0x0B, 0x07, 0x0C, 0x1E, 0x0B, 0x08, 
38789
  0x00, 0x2C, 0x0C, 0x16, 0x00, 0x33, 0x05, 0x09, 0x0C, 0x2C, 0x0C, 0x17, 0x00, 0x2C, 0x0D, 0x1B, 
38790
  0x00, 0x33, 0x04, 0x0C, 0x0D, 0x2C, 0x0C, 0x19, 0x00, 0x36, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x1C, 
38791
  0x00, 0x25, 0x0C, 0x07, 0x0D, 0x1E, 0x0C, 0x08, 0x00, 0x2C, 0x0D, 0x1C, 0x00, 0x33, 0x05, 0x09, 
38792
  0x0D, 0x2C, 0x0D, 0x1D, 0x00, 0x2C, 0x0E, 0x1E, 0x00, 0x33, 0x04, 0x0D, 0x0E, 0x2C, 0x0D, 0x19, 
38793
  0x00, 0x36, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x1F, 0x00, 0x25, 0x0D, 0x07, 0x0E, 0x1E, 0x0D, 0x08, 
38794
  0x00, 0x2C, 0x0E, 0x1C, 0x00, 0x33, 0x05, 0x09, 0x0E, 0x2C, 0x0E, 0x1D, 0x00, 0x2C, 0x0F, 0x20, 
38795
  0x00, 0x33, 0x04, 0x0E, 0x0F, 0x2C, 0x0E, 0x19, 0x00, 0x36, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x21, 
38796
  0x00, 0x25, 0x0E, 0x07, 0x0F, 0x1E, 0x0E, 0x08, 0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x0F, 0x00, 
38797
  0x00, 0x2C, 0x10, 0x21, 0x00, 0x33, 0x05, 0x09, 0x10, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x22, 
38798
  0x00, 0x36, 0x10, 0x00, 0x00, 0x2C, 0x10, 0x23, 0x00, 0x25, 0x0F, 0x07, 0x10, 0x1E, 0x0F, 0x08, 
38799
  0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x23, 0x00, 0x33, 0x05, 0x09, 
38800
  0x11, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x22, 0x00, 0x36, 0x11, 0x00, 0x00, 0x2C, 0x11, 0x24, 
38801
  0x00, 0x25, 0x10, 0x07, 0x11, 0x1E, 0x10, 0x08, 0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x11, 0x00, 
38802
  0x00, 0x2C, 0x12, 0x25, 0x00, 0x33, 0x05, 0x09, 0x12, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x22, 
38803
  0x00, 0x36, 0x12, 0x00, 0x00, 0x2C, 0x12, 0x26, 0x00, 0x25, 0x11, 0x07, 0x12, 0x1E, 0x11, 0x04, 
38804
  0x00, 0x33, 0x05, 0x09, 0x04, 0x2C, 0x12, 0x27, 0x00, 0x36, 0x12, 0x00, 0x00, 0x2C, 0x12, 0x28, 
38805
  0x00, 0x32, 0x12, 0x07, 0x00, 0x2C, 0x13, 0x15, 0x00, 0x35, 0x12, 0x13, 0x00, 0x01, 0x12, 0x00, 
38806
  0x00, 0x04, 0x00, 0x00, 0x00, 0x82, 0x02, 0x01, 0x04, 0x0D, 0x00, 0x09, 0x00, 0x03, 0x01, 0x0C, 
38807
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x02, 0x03, 0x00, 0x03, 0x01, 0x09, 0xBF, 0xFF, 
38808
  0x03, 0x00, 0x03, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x02, 0x23, 0x00, 0x12, 0x00, 
38809
  0x12, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
38810
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
38811
  0x12, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
38812
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
38813
  0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
38814
  0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFD, 0x09, 0x00, 0x09, 0x00, 0x09, 0x04, 0x12, 0x00, 0x12, 
38815
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFC, 0x09, 0x00, 0x09, 0x00, 0x09, 0x05, 
38816
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFB, 0x09, 0x00, 0x09, 
38817
  0x00, 0x09, 0x06, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
38818
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
38819
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xF9, 0x09, 0x00, 
38820
  0x09, 0x00, 0x09, 0x08, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xF8, 0x09, 0x00, 0x09, 
38821
  0x00, 0x09, 0x09, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 
38822
  0x00, 0x12, 0x00, 0x0B, 0x00, 0x0B, 0x03, 0x09, 0x00, 0x03, 0x00, 0x03, 0x01, 0x1F, 0x00, 0x0E, 
38823
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
38824
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 
38825
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFE, 0x05, 
38826
  0x00, 0x05, 0x00, 0x05, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
38827
  0x00, 0x0D, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
38828
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x31, 
38829
  0x00, 0x31, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x05, 0x00, 
38830
  0x05, 0x00, 0x05, 0x06, 0x33, 0x00, 0x33, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
38831
  0x0E, 0xBF, 0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x07, 0x2F, 0x00, 0x2F, 0x00, 0x0B, 0x00, 0x0B, 
38832
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xF9, 0x05, 0x00, 0x05, 0x00, 0x05, 0x08, 0x10, 0x00, 
38833
  0x10, 0x00, 0x10, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 
38834
  0x04, 0x00, 0xDA, 0x84, 0x1D, 0x00, 0x04, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x04, 0x02, 0xDA, 0x83, 
38835
  0xEA, 0x2B, 0x03, 0x00, 0x00, 0x33, 0x01, 0x00, 0x03, 0x2C, 0x03, 0x00, 0x00, 0x36, 0x03, 0x00, 
38836
  0x00, 0x82, 0x9B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0xF6, 0xD7, 0x01, 0xCD, 
38837
  0x00, 0xDC, 0x00, 0x00, 0x0F, 0x03, 0x02, 0x03, 0x0B, 0x28, 0x01, 0x21, 0xCE, 0x14, 0x62, 0x75, 
38838
  0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
38839
  0x72, 0x79, 0xDA, 0x04, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x33, 
38840
  0xCE, 0x29, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x74, 0x20, 0x25, 
38841
  0x73, 0x2C, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x72, 
38842
  0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x81, 0x49, 0xDA, 0x81, 
38843
  0x21, 0xDA, 0x30, 0xDA, 0x81, 0x5F, 0xCE, 0x04, 0x61, 0x64, 0x64, 0x20, 0xDA, 0x81, 0x90, 0xBF, 
38844
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 
38845
  0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
38846
  0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 
38847
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 
38848
  0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 
38849
  0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 
38850
  0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 
38851
  0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 
38852
  0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
38853
  0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 
38854
  0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0x00, 0x28, 
38855
  0x00, 0xDA, 0x81, 0x39, 0x00, 0x28, 0x01, 0xDA, 0x82, 0xFB, 0x00, 0x28, 0x02, 0xDA, 0x82, 0xFC, 
38856
  0x00, 0x28, 0x03, 0xDA, 0x82, 0xF6, 0x03, 0x28, 0x05, 0xDA, 0x81, 0x3A, 0x06, 0x28, 0x07, 0xDA, 
38857
  0x81, 0x2A, 0x0E, 0x28, 0x08, 0xCF, 0x07, 0x61, 0x62, 0x73, 0x64, 0x65, 0x73, 0x74, 0x1B, 0x28, 
38858
  0x0B, 0xDA, 0x84, 0x27, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x08, 0x35, 0x04, 0x05, 0x00, 
38859
  0x1B, 0x05, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x02, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 
38860
  0x2C, 0x08, 0x00, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 0x08, 0x09, 0x00, 
38861
  0x33, 0x08, 0x07, 0x01, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 
38862
  0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x02, 0x00, 
38863
  0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x32, 0x0B, 0x08, 0x00, 0x2C, 0x0C, 0x05, 0x00, 
38864
  0x35, 0x0B, 0x0C, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x35, 0x0A, 0x0B, 0x00, 
38865
  0x1B, 0x0B, 0x0A, 0x00, 0x32, 0x05, 0x0B, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0C, 0x0D, 0x00, 
38866
  0x1E, 0x02, 0x04, 0x00, 0x32, 0x0B, 0x02, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x35, 0x0D, 0x0E, 0x00, 
38867
  0x2C, 0x0D, 0x09, 0x00, 0x32, 0x0D, 0x0B, 0x00, 0x2C, 0x0E, 0x0A, 0x00, 0x35, 0x0D, 0x0E, 0x00, 
38868
  0x03, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x4B, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
38869
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x12, 0x00, 
38870
  0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 0x01, 
38871
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 
38872
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 
38873
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF4, 0x03, 0xDB, 0x01, 0xCF, 0x0D, 0x2A, 0x66, 0x66, 0x69, 
38874
  0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2A, 0xD0, 0x0B, 0x66, 0x66, 0x69, 0x2D, 0x63, 
38875
  0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xCF, 0x12, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 
38876
  0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x12, 0x66, 0x66, 0x69, 0x2F, 
38877
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCF, 0x08, 
38878
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 
38879
  0x02, 0x01, 0x02, 0x14, 0x3C, 0x00, 0x01, 0x06, 0xCE, 0x08, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 
38880
  0x65, 0x72, 0xDA, 0x04, 0xDA, 0x83, 0x54, 0xDA, 0x81, 0x9A, 0xD0, 0x05, 0x66, 0x69, 0x62, 0x65, 
38881
  0x72, 0xD0, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0xDA, 0x80, 
38882
  0xE5, 0xD0, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xD3, 0x13, 0xCF, 0x06, 0x2E, 0x73, 0x6C, 
38883
  0x6F, 0x74, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x34, 0x01, 0xDA, 
38884
  0x06, 0xCE, 0x38, 0x28, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
38885
  0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
38886
  0x20, 0x6F, 0x66, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x73, 
38887
  0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 
38888
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x2E, 0x73, 
38889
  0x6C, 0x6F, 0x74, 0x73, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x00, 
38890
  0x01, 0x02, 0x0C, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0xDA, 0x04, 0xD7, 
38891
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x01, 0xCE, 0x06, 
38892
  0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x84, 0x2F, 0xDA, 0x81, 0x26, 0x00, 0x04, 
38893
  0x00, 0xCF, 0x06, 0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 
38894
  0x00, 0x2C, 0x01, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0x8E, 0x16, 0x03, 0x00, 0x03, 0x00, 0x03, 
38895
  0x00, 0x03, 0xD8, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x00, 
38896
  0x0C, 0x00, 0xDA, 0x32, 0x00, 0x0C, 0x01, 0xCF, 0x06, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x05, 
38897
  0x0C, 0x02, 0xCF, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x05, 0x0A, 0x00, 0xCF, 0x07, 0x5F, 0x30, 
38898
  0x30, 0x30, 0x30, 0x36, 0x73, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 
38899
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x00, 0x03, 
38900
  0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3A, 0x05, 0x02, 
38901
  0x04, 0x03, 0x05, 0x00, 0x00, 0x8E, 0x27, 0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
38902
  0x00, 0x03, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0xD0, 0x05, 
38903
  0x73, 0x6C, 0x6F, 0x74, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x32, 0x00, 0x06, 0x01, 0xDA, 0x84, 0x33, 
38904
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 
38905
  0x3A, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8E, 0x37, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
38906
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0xD3, 0x03, 0xDA, 
38907
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x4D, 0x03, 0xDA, 0x06, 0xCE, 0x45, 0x28, 0x2E, 0x70, 
38908
  0x70, 0x61, 0x73, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x50, 0x72, 
38909
  0x65, 0x74, 0x74, 0x79, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
38910
  0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
38911
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
38912
  0x6E, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xFC, 0x00, 0x00, 0x20, 0x01, 0x00, 0x01, 0x2B, 
38913
  0x80, 0xAD, 0x00, 0x01, 0x17, 0xCE, 0x06, 0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0xDA, 0x04, 0xDA, 
38914
  0x84, 0x39, 0xDA, 0x1D, 0xD8, 0x06, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xD0, 0x08, 0x62, 0x79, 
38915
  0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xD0, 0x02, 0x70, 0x63, 0xD0, 0x09, 0x73, 0x6F, 0x75, 0x72, 
38916
  0x63, 0x65, 0x6D, 0x61, 0x70, 0xD2, 0x02, 0x00, 0xBF, 0xFE, 0xBF, 0xFE, 0xD7, 0x00, 0xCD, 0x00, 
38917
  0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x01, 0xCE, 0x07, 0x2E, 0x73, 0x69, 
38918
  0x67, 0x6E, 0x61, 0x6C, 0xDA, 0x04, 0xDA, 0x84, 0x31, 0xDA, 0x81, 0x26, 0x00, 0x04, 0x00, 0xCF, 
38919
  0x07, 0x2E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x2C, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
38920
  0x2C, 0x01, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0x8E, 0x1B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38921
  0x03, 0xCE, 0x0F, 0x0A, 0x20, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x3A, 0x20, 0x20, 0x20, 
38922
  0x20, 0x20, 0xD8, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x84, 0x3B, 0xDA, 0x80, 0xDE, 
38923
  0xCE, 0x0E, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x20, 
38924
  0xDA, 0x81, 0x6D, 0xCE, 0x0B, 0x3C, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 
38925
  0xDA, 0x81, 0xC5, 0xDA, 0x81, 0x6E, 0xDA, 0x82, 0x58, 0xCE, 0x0E, 0x20, 0x20, 0x66, 0x75, 0x6E, 
38926
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x20, 0x20, 0xCE, 0x02, 0x20, 0x5B, 0xCE, 0x01, 0x5D, 
38927
  0xD0, 0x09, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0xCE, 0x12, 0x20, 0x20, 0x63, 
38928
  0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x3A, 0x20, 0x20, 0x25, 0x2E, 0x34, 0x71, 0xD8, 
38929
  0x07, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 0x84, 0x42, 0xCE, 0x13, 0x20, 0x20, 0x73, 
38930
  0x6C, 0x6F, 0x74, 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x25, 0x2E, 0x34, 0x71, 0x0A, 
38931
  0xDA, 0x81, 0x7E, 0xDA, 0x81, 0x82, 0xCE, 0x01, 0x20, 0xD8, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 
38932
  0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xCE, 0x01, 0x2A, 
38933
  0xD8, 0x05, 0x65, 0x70, 0x72, 0x69, 0x6E, 0xCE, 0x02, 0x3E, 0x20, 0xCE, 0x02, 0x20, 0x20, 0xDA, 
38934
  0x81, 0x28, 0xDA, 0x81, 0xF8, 0xD8, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 0x6F, 
38935
  0x69, 0x6E, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x73, 0xD8, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 
38936
  0x66, 0xCE, 0x08, 0x20, 0x23, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0xCE, 0x09, 0x2C, 0x20, 0x63, 
38937
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x00, 0x80, 0xAD, 0x00, 0xDA, 0x32, 0x00, 0x80, 0xAD, 0x01, 
38938
  0xDA, 0x84, 0x43, 0x03, 0x80, 0xAD, 0x03, 0xCF, 0x05, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x07, 0x80, 
38939
  0xAD, 0x05, 0xCF, 0x04, 0x66, 0x75, 0x6E, 0x63, 0x0B, 0x80, 0xAD, 0x07, 0xCF, 0x04, 0x64, 0x61, 
38940
  0x73, 0x6D, 0x0E, 0x80, 0xAD, 0x09, 0xCF, 0x08, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 
38941
  0x12, 0x80, 0xAD, 0x0B, 0xCF, 0x02, 0x70, 0x63, 0x15, 0x80, 0xAD, 0x0D, 0xCF, 0x09, 0x73, 0x6F, 
38942
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x16, 0x80, 0xAD, 0x0E, 0xCF, 0x08, 0x6C, 0x61, 0x73, 
38943
  0x74, 0x2D, 0x6C, 0x6F, 0x63, 0x39, 0x3F, 0x12, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 
38944
  0x6E, 0x74, 0x73, 0x48, 0x62, 0x14, 0xCF, 0x08, 0x73, 0x72, 0x63, 0x2D, 0x70, 0x61, 0x74, 0x68, 
38945
  0x4D, 0x52, 0x17, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x75, 0x54, 0x62, 0x17, 0xCF, 
38946
  0x04, 0x64, 0x75, 0x6D, 0x70, 0x58, 0x62, 0x19, 0xCF, 0x02, 0x73, 0x6C, 0x5A, 0x62, 0x1A, 0xDA, 
38947
  0x81, 0x96, 0x67, 0x80, 0xAD, 0x14, 0xCF, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x68, 
38948
  0x80, 0xAB, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x78, 0x6A, 0x80, 0xAB, 0x17, 
38949
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x79, 0x6D, 0x80, 0xAB, 0x18, 0xDA, 0x43, 0x70, 
38950
  0x80, 0xA9, 0x1A, 0xCF, 0x05, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x80, 0x98, 0x80, 0xA7, 0x1C, 0xDA, 
38951
  0x84, 0x72, 0x80, 0x9A, 0x80, 0xA7, 0x1D, 0xCF, 0x02, 0x73, 0x63, 0x80, 0x9D, 0x80, 0xA7, 0x1B, 
38952
  0xCF, 0x03, 0x6C, 0x6F, 0x63, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
38953
  0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 0x03, 
38954
  0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 
38955
  0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x3A, 0x08, 0x07, 0x09, 0x1B, 0x09, 0x08, 
38956
  0x00, 0x2C, 0x0A, 0x04, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x03, 0x00, 0x1B, 0x0B, 0x0A, 
38957
  0x00, 0x2C, 0x0D, 0x05, 0x00, 0x3A, 0x0C, 0x07, 0x0D, 0x1B, 0x0D, 0x0C, 0x00, 0x2C, 0x0E, 0x06, 
38958
  0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x10, 0x08, 0x00, 0x32, 0x10, 0x0F, 
38959
  0x00, 0x2C, 0x11, 0x09, 0x00, 0x35, 0x10, 0x11, 0x00, 0x2C, 0x11, 0x0A, 0x00, 0x35, 0x0F, 0x11, 
38960
  0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x12, 0x0B, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x0F, 0x0C, 
38961
  0x00, 0x32, 0x0F, 0x11, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x35, 0x0F, 0x12, 0x00, 0x2C, 0x12, 0x0D, 
38962
  0x00, 0x3B, 0x11, 0x07, 0x12, 0x20, 0x11, 0x02, 0x00, 0x2C, 0x11, 0x0E, 0x00, 0x2C, 0x12, 0x0F, 
38963
  0x00, 0x2C, 0x13, 0x10, 0x00, 0x33, 0x07, 0x12, 0x13, 0x2C, 0x13, 0x11, 0x00, 0x35, 0x12, 0x13, 
38964
  0x00, 0x2C, 0x13, 0x12, 0x00, 0x2C, 0x14, 0x13, 0x00, 0x33, 0x13, 0x11, 0x14, 0x2C, 0x13, 0x14, 
38965
  0x00, 0x32, 0x12, 0x13, 0x00, 0x2C, 0x14, 0x09, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2C, 0x11, 0x15, 
38966
  0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 0x07, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x1E, 0x11, 0x05, 
38967
  0x00, 0x2C, 0x14, 0x16, 0x00, 0x32, 0x14, 0x12, 0x00, 0x2C, 0x15, 0x17, 0x00, 0x35, 0x14, 0x15, 
38968
  0x00, 0x2C, 0x11, 0x18, 0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 0x03, 0x00, 0x2C, 0x12, 0x19, 
38969
  0x00, 0x32, 0x12, 0x11, 0x00, 0x2C, 0x14, 0x17, 0x00, 0x35, 0x12, 0x14, 0x00, 0x2C, 0x14, 0x0F, 
38970
  0x00, 0x3A, 0x11, 0x07, 0x14, 0x1B, 0x14, 0x11, 0x00, 0x1E, 0x11, 0x19, 0x00, 0x31, 0x14, 0x00, 
38971
  0x00, 0x2C, 0x17, 0x1A, 0x00, 0x35, 0x16, 0x17, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x1E, 0x16, 0x03, 
38972
  0x00, 0x1B, 0x15, 0x0D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x15, 0x17, 0x00, 0x1E, 0x15, 0x10, 
38973
  0x00, 0x30, 0x16, 0x00, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x35, 0x16, 0x0D, 
38974
  0x00, 0x3D, 0x18, 0x16, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x3D, 0x18, 0x16, 0x01, 0x1B, 0x1A, 0x18, 
38975
  0x00, 0x31, 0x14, 0x00, 0x00, 0x2C, 0x18, 0x1B, 0x00, 0x35, 0x16, 0x18, 0x00, 0x32, 0x16, 0x19, 
38976
  0x00, 0x35, 0x18, 0x17, 0x00, 0x2C, 0x18, 0x09, 0x00, 0x35, 0x16, 0x18, 0x00, 0x2C, 0x11, 0x1C, 
38977
  0x00, 0x2B, 0x14, 0x14, 0x00, 0x32, 0x11, 0x14, 0x00, 0x2C, 0x14, 0x1D, 0x00, 0x35, 0x11, 0x14, 
38978
  0x00, 0x1B, 0x14, 0x11, 0x00, 0x2B, 0x15, 0x00, 0x00, 0x3F, 0x16, 0x09, 0x00, 0x1B, 0x17, 0x16, 
38979
  0x00, 0x23, 0x16, 0x15, 0x17, 0x1E, 0x16, 0x3F, 0x00, 0x1B, 0x18, 0x15, 0x00, 0x31, 0x18, 0x00, 
38980
  0x00, 0x35, 0x19, 0x09, 0x00, 0x1B, 0x1A, 0x19, 0x00, 0x31, 0x1A, 0x00, 0x00, 0x2C, 0x1C, 0x1E, 
38981
  0x00, 0x35, 0x1B, 0x1C, 0x00, 0x2C, 0x1D, 0x1F, 0x00, 0x25, 0x1C, 0x1B, 0x1D, 0x1E, 0x1C, 0x03, 
38982
  0x00, 0x2C, 0x19, 0x20, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x19, 0x1C, 0x00, 0x31, 0x19, 0x00, 
38983
  0x00, 0x2C, 0x1C, 0x21, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x25, 0x1B, 0x18, 0x0B, 0x1E, 0x1B, 0x03, 
38984
  0x00, 0x2C, 0x19, 0x22, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x19, 0x23, 0x00, 0x31, 0x19, 0x00, 
38985
  0x00, 0x2C, 0x1C, 0x21, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x2C, 0x19, 0x24, 0x00, 0x32, 0x19, 0x1A, 
38986
  0x00, 0x2C, 0x1B, 0x25, 0x00, 0x35, 0x19, 0x1B, 0x00, 0x2C, 0x1B, 0x1C, 0x00, 0x32, 0x19, 0x1B, 
38987
  0x00, 0x2C, 0x1C, 0x26, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x32, 0x1B, 0x14, 0x00, 0x2C, 0x1C, 0x24, 
38988
  0x00, 0x35, 0x19, 0x1C, 0x00, 0x2C, 0x1B, 0x27, 0x00, 0x32, 0x1B, 0x19, 0x00, 0x2C, 0x1C, 0x28, 
38989
  0x00, 0x35, 0x1B, 0x1C, 0x00, 0x1E, 0x0D, 0x13, 0x00, 0x31, 0x18, 0x00, 0x00, 0x35, 0x19, 0x0D, 
38990
  0x00, 0x3D, 0x1B, 0x19, 0x00, 0x1B, 0x1C, 0x1B, 0x00, 0x3D, 0x1B, 0x19, 0x01, 0x1B, 0x1D, 0x1B, 
38991
  0x00, 0x32, 0x1C, 0x1D, 0x00, 0x45, 0x19, 0x00, 0x00, 0x1B, 0x1B, 0x19, 0x00, 0x4A, 0x19, 0x1B, 
38992
  0x0E, 0x1E, 0x19, 0x08, 0x00, 0x1B, 0x0E, 0x1B, 0x00, 0x2C, 0x1E, 0x29, 0x00, 0x2C, 0x1F, 0x2A, 
38993
  0x00, 0x33, 0x1E, 0x1C, 0x1F, 0x31, 0x1D, 0x00, 0x00, 0x2C, 0x1F, 0x21, 0x00, 0x35, 0x1E, 0x1F, 
38994
  0x00, 0x2C, 0x1B, 0x09, 0x00, 0x35, 0x19, 0x1B, 0x00, 0x05, 0x15, 0x15, 0x01, 0x1C, 0xC1, 0xFF, 
38995
  0xFF, 0x2C, 0x15, 0x09, 0x00, 0x36, 0x15, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x14, 0x02, 
38996
  0x02, 0x02, 0x11, 0x3F, 0x00, 0x0C, 0xCE, 0x04, 0x64, 0x75, 0x6D, 0x70, 0xDA, 0x04, 0xD7, 0x00, 
38997
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 
38998
  0x06, 0xCE, 0x03, 0x6D, 0x61, 0x78, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 
38999
  0x01, 0xCF, 0x03, 0x6D, 0x61, 0x78, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 
39000
  0x3A, 0x04, 0x0E, 0x04, 0xDA, 0x39, 0x08, 0x0D, 0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 
39001
  0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 
39002
  0x03, 0x00, 0x03, 0x1F, 0x03, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x21, 
39003
  0x02, 0x05, 0x04, 0x1E, 0x02, 0x02, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 
39004
  0x04, 0x00, 0x00, 0x83, 0x33, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39005
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39006
  0xDA, 0x81, 0x6E, 0xCE, 0x01, 0x0A, 0xDA, 0x82, 0xE8, 0xDA, 0x82, 0xB1, 0xD7, 0x00, 0xCD, 0x00, 
39007
  0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x06, 0xCE, 
39008
  0x03, 0x6D, 0x69, 0x6E, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 0x01, 0xCF, 
39009
  0x03, 0x6D, 0x69, 0x6E, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 0x3A, 0x04, 
39010
  0x0E, 0x04, 0xDA, 0x39, 0x08, 0x0D, 0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 
39011
  0x03, 0x1B, 0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 0x03, 0x00, 
39012
  0x03, 0x1F, 0x03, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x23, 0x02, 0x05, 
39013
  0x04, 0x1E, 0x02, 0x02, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
39014
  0x00, 0x83, 0x37, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39015
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xD8, 0x0A, 
39016
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 
39017
  0x2F, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 
39018
  0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x69, 0x6E, 0x63, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 
39019
  0x1E, 0x00, 0x02, 0x01, 0xCF, 0x03, 0x69, 0x6E, 0x63, 0x05, 0x02, 0x00, 0x01, 0x03, 0x02, 0x00, 
39020
  0x00, 0x80, 0x89, 0x20, 0x00, 0x20, 0xCE, 0x01, 0x25, 0xCE, 0x05, 0x64, 0x3A, 0x20, 0x25, 0x73, 
39021
  0xDA, 0x81, 0x28, 0xDA, 0x84, 0x5C, 0xDA, 0x84, 0x5F, 0xDA, 0x84, 0x60, 0xDA, 0x84, 0x61, 0xDA, 
39022
  0x84, 0x5A, 0x00, 0x3F, 0x00, 0xDA, 0x82, 0xFA, 0x00, 0x3F, 0x01, 0xCF, 0x03, 0x63, 0x75, 0x72, 
39023
  0x00, 0x3F, 0x02, 0xDA, 0x84, 0x71, 0x00, 0x3F, 0x03, 0xCF, 0x06, 0x6F, 0x66, 0x66, 0x73, 0x65, 
39024
  0x74, 0x06, 0x3F, 0x04, 0xCF, 0x03, 0x62, 0x65, 0x67, 0x11, 0x3F, 0x06, 0xCF, 0x05, 0x6C, 0x69, 
39025
  0x6E, 0x65, 0x73, 0x17, 0x3F, 0x07, 0xDA, 0x36, 0x21, 0x3F, 0x0B, 0xCF, 0x06, 0x64, 0x69, 0x67, 
39026
  0x69, 0x74, 0x73, 0x27, 0x3F, 0x0D, 0xCF, 0x07, 0x66, 0x6D, 0x74, 0x2D, 0x73, 0x74, 0x72, 0x28, 
39027
  0x3F, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x76, 0x28, 0x3F, 0x07, 0xCF, 0x07, 
39028
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x77, 0x2B, 0x3E, 0x10, 0xDA, 0x43, 0x2B, 0x03, 0x05, 0x00, 
39029
  0x08, 0x04, 0x01, 0x03, 0x2B, 0x05, 0x01, 0x00, 0x32, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x00, 0x00, 
39030
  0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 
39031
  0x40, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 
39032
  0x35, 0x07, 0x08, 0x00, 0x32, 0x06, 0x07, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 
39033
  0x1B, 0x06, 0x08, 0x00, 0x06, 0x07, 0x01, 0x03, 0x3F, 0x09, 0x06, 0x00, 0x32, 0x07, 0x09, 0x00, 
39034
  0x2C, 0x0B, 0x05, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x31, 0x07, 0x00, 0x00, 
39035
  0x2C, 0x0B, 0x06, 0x00, 0x35, 0x09, 0x0B, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0C, 0x07, 0x00, 
39036
  0x35, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x08, 0x00, 0x35, 0x09, 0x0C, 0x00, 
39037
  0x1B, 0x0B, 0x09, 0x00, 0x2C, 0x0C, 0x09, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x33, 0x0C, 0x0B, 0x0D, 
39038
  0x2C, 0x0D, 0x0B, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x1B, 0x0E, 0x04, 0x00, 
39039
  0x23, 0x0F, 0x0E, 0x07, 0x1E, 0x0F, 0x14, 0x00, 0x1B, 0x10, 0x0E, 0x00, 0x2C, 0x11, 0x0C, 0x00, 
39040
  0x31, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x35, 0x11, 0x12, 0x00, 0x25, 0x12, 0x10, 0x01, 
39041
  0x1E, 0x12, 0x03, 0x00, 0x2C, 0x11, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x11, 0x0F, 0x00, 
39042
  0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x0D, 0x00, 0x35, 0x12, 0x13, 0x00, 0x3B, 0x11, 0x06, 0x10, 
39043
  0x33, 0x0D, 0x10, 0x11, 0x2C, 0x13, 0x10, 0x00, 0x35, 0x12, 0x13, 0x00, 0x05, 0x0E, 0x0E, 0x01, 
39044
  0x1C, 0xEC, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x8E, 0x62, 0x0B, 0x01, 0x1B, 0x00, 0x14, 0x00, 
39045
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x2A, 0x00, 
39046
  0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0B, 0x01, 0x19, 0x00, 
39047
  0x28, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 
39048
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0B, 0x01, 0x18, 0x00, 
39049
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
39050
  0x0B, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x18, 0x00, 0x14, 0x00, 0x14, 0x00, 
39051
  0x14, 0x00, 0x14, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x20, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39052
  0x0D, 0xBF, 0xFD, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x8E, 0x50, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
39053
  0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39054
  0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 
39055
  0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x05, 0x01, 0x20, 0x00, 0x20, 0x00, 0x05, 0x00, 0x05, 0x00, 
39056
  0x05, 0x00, 0x05, 0x01, 0x2C, 0x00, 0x2C, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x05, 0x00, 
39057
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x42, 0x00, 
39058
  0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39059
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x05, 0x00, 0x05, 0x01, 
39060
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x05, 0x00, 
39061
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x05, 0x01, 0x12, 0x00, 
39062
  0x12, 0x00, 0x12, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x02, 
39063
  0x09, 0x00, 0x09, 0x0C, 0x16, 0x00, 0x16, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 
39064
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x12, 0x00, 
39065
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x05, 0x00, 0x18, 0x00, 0x05, 0x00, 
39066
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0xBF, 0xFF, 0x05, 0x02, 0x15, 0x00, 0x15, 
39067
  0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 
39068
  0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 
39069
  0x00, 0x07, 0x00, 0x07, 0x01, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x1F, 0x00, 0x1F, 
39070
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
39071
  0x00, 0x07, 0x01, 0x07, 0x01, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
39072
  0x01, 0x13, 0x00, 0x13, 0xBF, 0xFF, 0x09, 0x02, 0x11, 0x00, 0x0B, 0x01, 0x0D, 0x01, 0x0D, 0x00, 
39073
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x05, 
39074
  0x00, 0x05, 0x0C, 0x05, 0x00, 0x05, 0xCF, 0x09, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 
39075
  0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x87, 0x03, 0xDA, 0x06, 0xCE, 
39076
  0x42, 0x28, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 
39077
  0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 
39078
  0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
39079
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
39080
  0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x01, 
39081
  0x05, 0x19, 0x01, 0x0A, 0xCE, 0x09, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0xDA, 
39082
  0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 0x00, 0x02, 
39083
  0xCE, 0x03, 0x2E, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x84, 0x39, 0xDA, 0x1D, 0x00, 0x06, 0x00, 0xDA, 
39084
  0x32, 0x00, 0x06, 0x01, 0xCF, 0x03, 0x2E, 0x66, 0x6E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
39085
  0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3A, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 
39086
  0x00, 0x8E, 0x32, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD8, 0x0E, 
39087
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xCE, 0x08, 
39088
  0x63, 0x6C, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0xCE, 0x10, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 
39089
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0xDA, 0x84, 0x52, 0xBF, 0xFF, 0x00, 
39090
  0x01, 0xCF, 0x07, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x09, 
39091
  0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x84, 0x43, 
39092
  0xBF, 0xFF, 0x00, 0x04, 0xCF, 0x09, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0x00, 
39093
  0x19, 0x00, 0xDA, 0x32, 0x00, 0x19, 0x01, 0xDA, 0x84, 0x90, 0x03, 0x19, 0x03, 0xCF, 0x03, 0x66, 
39094
  0x75, 0x6E, 0x07, 0x19, 0x05, 0xDA, 0x84, 0x6A, 0x08, 0x12, 0x06, 0xDA, 0x43, 0x0A, 0x12, 0x08, 
39095
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x41, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
39096
  0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 0x00, 
39097
  0x02, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3F, 0x07, 0x05, 
39098
  0x00, 0x1B, 0x08, 0x07, 0x00, 0x23, 0x07, 0x06, 0x08, 0x1E, 0x07, 0x06, 0x00, 0x32, 0x03, 0x06, 
39099
  0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x05, 0x06, 0x06, 0x01, 0x1C, 0xFA, 0xFF, 
39100
  0xFF, 0x3F, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x07, 0x06, 
39101
  0x08, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 
39102
  0x8A, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 
39103
  0x01, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
39104
  0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x18, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39105
  0x05, 0x00, 0x05, 0x00, 0x07, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x00, 
39106
  0x01, 0x03, 0x0B, 0x00, 0x04, 0xCE, 0x07, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xDA, 0x04, 
39107
  0xDA, 0x84, 0x39, 0xDA, 0x1D, 0xDA, 0x84, 0x49, 0x00, 0x0B, 0x00, 0xDA, 0x32, 0x00, 0x0B, 0x01, 
39108
  0xDA, 0x84, 0x9C, 0x03, 0x0B, 0x03, 0xDA, 0x84, 0x67, 0x07, 0x0B, 0x05, 0xDA, 0x84, 0x68, 0x31, 
39109
  0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 
39110
  0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 
39111
  0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x36, 0x06, 0x00, 0x00, 0x8E, 0x44, 0x10, 0x00, 0x10, 
39112
  0x00, 0x10, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
39113
  0x00, 0x05, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x01, 0x06, 0x01, 
39114
  0x03, 0xCE, 0x09, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xDA, 0x04, 0xDA, 0x84, 
39115
  0x4A, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0x9C, 0x00, 0x06, 0x00, 0xDA, 0x32, 0x00, 0x06, 0x01, 
39116
  0xDA, 0x84, 0x9D, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x35, 0x02, 0x03, 0x00, 0x2C, 
39117
  0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0x4B, 0x06, 
39118
  0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x02, 0xC9, 0xC9, 0xC9, 0xC9, 
39119
  0xDA, 0x84, 0x9C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x41, 0x03, 0xDA, 
39120
  0x06, 0xCE, 0x3D, 0x28, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 
39121
  0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 
39122
  0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
39123
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
39124
  0xDA, 0x08, 0xDA, 0x84, 0xA1, 0xCF, 0x07, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xD3, 0x03, 
39125
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x28, 0x2E, 
39126
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 
39127
  0x53, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
39128
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 
39129
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 
39130
  0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 
39131
  0x00, 0x01, 0x05, 0x11, 0x00, 0x05, 0xCE, 0x07, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xDA, 
39132
  0x04, 0xDA, 0x84, 0x39, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0x82, 0xDA, 0x84, 0x7D, 0xDA, 0x84, 0x52, 
39133
  0x00, 0x11, 0x00, 0xDA, 0x32, 0x00, 0x11, 0x01, 0xDA, 0x84, 0xA8, 0x03, 0x11, 0x03, 0xDA, 0x84, 
39134
  0x67, 0x07, 0x11, 0x05, 0xDA, 0x81, 0x2A, 0x0B, 0x11, 0x07, 0xCF, 0x0A, 0x61, 0x6C, 0x6C, 0x2D, 
39135
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
39136
  0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 
39137
  0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 
39138
  0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x08, 
39139
  0x07, 0x09, 0x2C, 0x08, 0x04, 0x00, 0x36, 0x08, 0x00, 0x00, 0x8E, 0x93, 0x0E, 0x00, 0x0E, 0x00, 
39140
  0x0E, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 
39141
  0x13, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x84, 0x9E, 
39142
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x7E, 0x03, 0xDA, 0x06, 0xCE, 0x50, 
39143
  0x28, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
39144
  0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 
39145
  0x6E, 0x74, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 
39146
  0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
39147
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
39148
  0xDA, 0x08, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x01, 0x05, 0x19, 0x01, 
39149
  0x09, 0xCE, 0x09, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x84, 
39150
  0x96, 0xD8, 0x0C, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xCE, 
39151
  0x04, 0x73, 0x65, 0x74, 0x20, 0xDA, 0x84, 0x9B, 0xDA, 0x84, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
39152
  0x84, 0x9C, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0x9D, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x84, 0x43, 
39153
  0x00, 0x19, 0x00, 0xDA, 0x32, 0x00, 0x19, 0x01, 0xDA, 0x84, 0x9E, 0x03, 0x19, 0x03, 0xDA, 0x84, 
39154
  0x9F, 0x07, 0x19, 0x05, 0xDA, 0x84, 0x6A, 0x08, 0x12, 0x06, 0xDA, 0x43, 0x0A, 0x12, 0x08, 0xCF, 
39155
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x7A, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
39156
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x02, 
39157
  0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3F, 0x07, 0x05, 0x00, 
39158
  0x1B, 0x08, 0x07, 0x00, 0x23, 0x07, 0x06, 0x08, 0x1E, 0x07, 0x06, 0x00, 0x32, 0x03, 0x06, 0x00, 
39159
  0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x05, 0x06, 0x06, 0x01, 0x1C, 0xFA, 0xFF, 0xFF, 
39160
  0x3F, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x07, 0x06, 0x08, 
39161
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0x81, 
39162
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 
39163
  0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
39164
  0xFF, 0x05, 0x00, 0x05, 0x02, 0x14, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
39165
  0x00, 0x05, 0xDB, 0x02, 0xDA, 0x84, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
39166
  0x8E, 0x48, 0x03, 0xDA, 0x06, 0xCE, 0x3E, 0x28, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 
39167
  0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
39168
  0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 
39169
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 
39170
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xA3, 0xCF, 0x05, 0x2E, 0x73, 0x6C, 0x6F, 
39171
  0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x39, 0x01, 0xDA, 0x06, 0xCE, 
39172
  0x3A, 0x28, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x74, 0x68, 
39173
  0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2D, 0x69, 0x64, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
39174
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
39175
  0x65, 0x20, 0x6E, 0x74, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 
39176
  0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x00, 0x02, 0x01, 0x09, 0x00, 0x04, 0xCE, 0x05, 0x2E, 0x73, 
39177
  0x6C, 0x6F, 0x74, 0xDA, 0x04, 0xDA, 0x84, 0x37, 0x00, 0x09, 0x00, 0xCF, 0x03, 0x6E, 0x74, 0x68, 
39178
  0x00, 0x09, 0x01, 0xCF, 0x09, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2D, 0x69, 0x64, 0x78, 0x00, 0x09, 
39179
  0x02, 0xDA, 0x84, 0xBA, 0x02, 0x07, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x74, 
39180
  0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x00, 0x03, 0x00, 
39181
  0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3A, 0x05, 0x03, 0x04, 
39182
  0x03, 0x05, 0x00, 0x00, 0x8E, 0x3C, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
39183
  0x1A, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD3, 
39184
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xA1, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 
39185
  0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x74, 
39186
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 
39187
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
39188
  0x00, 0x00, 0x00, 0x07, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 
39189
  0x04, 0xDA, 0x84, 0x39, 0xDA, 0x1D, 0xDA, 0x84, 0x4B, 0xDA, 0x84, 0x99, 0xCE, 0x16, 0x63, 0x6C, 
39190
  0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
39191
  0x20, 0x69, 0x6E, 0x20, 0xCE, 0x07, 0x20, 0x61, 0x74, 0x20, 0x70, 0x63, 0x3D, 0xDA, 0x84, 0x52, 
39192
  0x00, 0x14, 0x00, 0xDA, 0x84, 0xC3, 0x02, 0x14, 0x02, 0xDA, 0x84, 0x67, 0x06, 0x14, 0x04, 0xDA, 
39193
  0x84, 0x9F, 0x0A, 0x14, 0x06, 0xDA, 0x84, 0x6B, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 
39194
  0x1B, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 0x03, 0x02, 0x00, 
39195
  0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x31, 0x05, 0x00, 0x00, 0x35, 0x05, 0x02, 0x00, 
39196
  0x1B, 0x06, 0x05, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 
39197
  0x2C, 0x08, 0x04, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x08, 0x04, 0x09, 0x31, 0x06, 0x00, 0x00, 
39198
  0x2C, 0x08, 0x06, 0x00, 0x36, 0x08, 0x00, 0x00, 0x8E, 0xA4, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 
39199
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 
39200
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39201
  0x03, 0xDA, 0x84, 0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x24, 0x01, 
39202
  0xDA, 0x06, 0xCE, 0x23, 0x28, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 
39203
  0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 
39204
  0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0xDA, 0x08, 0xDA, 0x84, 0x39, 0xCF, 0x05, 0x2E, 0x6E, 
39205
  0x65, 0x78, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xAA, 0x01, 0xDA, 
39206
  0x06, 0xCE, 0x2A, 0x28, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
39207
  0x29, 0x0A, 0x0A, 0x47, 0x6F, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 
39208
  0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 
39209
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x01, 0x10, 0x00, 0x06, 0xCE, 0x05, 
39210
  0x2E, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x04, 0xDA, 0x84, 0x3B, 0x00, 0x10, 0x00, 0xDA, 0x32, 0x00, 
39211
  0x10, 0x01, 0xDA, 0x84, 0xCE, 0x00, 0x10, 0x02, 0xDA, 0x7E, 0x01, 0x0F, 0x03, 0xDA, 0x43, 0x01, 
39212
  0x06, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x43, 0x06, 0x0F, 0x05, 0xCF, 0x07, 
39213
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x42, 0x28, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x1E, 
39214
  0x00, 0x03, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x1B, 
39215
  0x05, 0x04, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x07, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 
39216
  0x06, 0x07, 0x00, 0x28, 0x07, 0x00, 0x00, 0x37, 0x02, 0x06, 0x07, 0x05, 0x03, 0x03, 0x01, 0x1C, 
39217
  0xF9, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x8E, 0xAD, 0x03, 0x01, 0x03, 0x00, 0x0D, 0x00, 0x0D, 
39218
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x0E, 
39219
  0x00, 0x0E, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x06, 0x2E, 0x73, 0x74, 0x61, 
39220
  0x63, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x1D, 0x01, 0xDA, 0x06, 
39221
  0xCE, 0x28, 0x28, 0x2E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 
39222
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 
39223
  0x62, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 
39224
  0xFC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x01, 0x01, 0xCE, 0x06, 0x2E, 0x73, 
39225
  0x74, 0x61, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x81, 0x90, 0xDA, 0x83, 0xA5, 0xDA, 0x80, 0xDC, 0x00, 
39226
  0x0B, 0x00, 0xDA, 0x84, 0xD6, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x30, 0x02, 0x00, 
39227
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 
39228
  0x00, 0x28, 0x04, 0x00, 0x00, 0x37, 0x02, 0x03, 0x04, 0x2C, 0x03, 0x00, 0x00, 0x36, 0x03, 0x00, 
39229
  0x00, 0xCD, 0x00, 0xD8, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0D, 0x00, 0xDA, 0x83, 0xA2, 
39230
  0xDA, 0x04, 0xD0, 0x09, 0x65, 0x72, 0x72, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xDA, 0x82, 0xC9, 
39231
  0xDA, 0x84, 0x3B, 0xDA, 0x84, 0x4E, 0xDA, 0x81, 0x6E, 0xD8, 0x10, 0x64, 0x65, 0x62, 0x75, 0x67, 
39232
  0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2C, 0x00, 0x00, 0x00, 0x2A, 
39233
  0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 
39234
  0x02, 0x02, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 
39235
  0x03, 0x04, 0x00, 0x33, 0x01, 0x02, 0x03, 0x2C, 0x03, 0x05, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8E, 
39236
  0x21, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3D, 
39237
  0x00, 0x3D, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x8E, 0x20, 0x03, 0x00, 0x03, 0x01, 
39238
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
39239
  0x03, 0xCF, 0x06, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
39240
  0xDA, 0x04, 0x8E, 0x98, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 
39241
  0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 
39242
  0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
39243
  0x20, 0x70, 0x63, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x00, 0x00, 
39244
  0x00, 0x07, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x04, 0xDA, 
39245
  0x84, 0x39, 0xDA, 0x1D, 0xDA, 0x84, 0x4B, 0xDA, 0x84, 0xB4, 0xCE, 0x12, 0x73, 0x65, 0x74, 0x20, 
39246
  0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0xDA, 0x84, 
39247
  0xCA, 0xDA, 0x84, 0x52, 0x00, 0x14, 0x00, 0xDA, 0x84, 0xDE, 0x02, 0x14, 0x02, 0xDA, 0x84, 0x67, 
39248
  0x06, 0x14, 0x04, 0xDA, 0x84, 0x9F, 0x0A, 0x14, 0x06, 0xDA, 0x84, 0x6B, 0x2C, 0x02, 0x00, 0x00, 
39249
  0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 
39250
  0x35, 0x03, 0x02, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x31, 0x05, 0x00, 0x00, 
39251
  0x35, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 
39252
  0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x08, 0x04, 0x09, 
39253
  0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x36, 0x08, 0x00, 0x00, 0x8E, 0x9B, 0x0E, 0x00, 
39254
  0x0E, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
39255
  0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39256
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0xD3, 0x03, 
39257
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x2A, 0x01, 0xDA, 0x06, 0xCE, 0x25, 0x28, 0x2E, 
39258
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 
39259
  0x53, 0x68, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
39260
  0x6E, 0x67, 0x73, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 
39261
  0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0xDA, 0x04, 0xDA, 
39262
  0x84, 0x39, 0xD0, 0x06, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x32, 0x00, 
39263
  0x06, 0x01, 0xDA, 0x84, 0xE5, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
39264
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x3B, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8E, 0x2D, 0x08, 
39265
  0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x84, 0x3D, 0xD3, 0x03, 0xDA, 
39266
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x13, 0x01, 0xDA, 0x06, 0xCE, 0x2F, 0x28, 0x2E, 0x66, 
39267
  0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
39268
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x62, 0x65, 0x69, 
39269
  0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 
39270
  0x3B, 0xCF, 0x06, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
39271
  0xDA, 0x04, 0x8E, 0xB2, 0x01, 0xDA, 0x06, 0xCE, 0x4C, 0x28, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 
39272
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x6F, 0x20, 0x74, 0x6F, 0x20, 
39273
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 
39274
  0x69, 0x6E, 0x74, 0x2C, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
39275
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 
39276
  0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
39277
  0x00, 0x01, 0x02, 0x05, 0x00, 0x02, 0xCE, 0x06, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 0xDA, 0x04, 
39278
  0xDA, 0x84, 0xC7, 0xDA, 0x84, 0xD2, 0x00, 0x05, 0x00, 0xDA, 0x32, 0x00, 0x05, 0x01, 0xDA, 0x84, 
39279
  0xEF, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x01, 
39280
  0x00, 0x36, 0x03, 0x00, 0x00, 0x8E, 0xB5, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
39281
  0xCF, 0x05, 0x2E, 0x73, 0x74, 0x65, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
39282
  0x8E, 0xB8, 0x01, 0xDA, 0x06, 0xCE, 0x30, 0x28, 0x2E, 0x73, 0x74, 0x65, 0x70, 0x20, 0x26, 0x6F, 
39283
  0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x74, 
39284
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 
39285
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
39286
  0x08, 0x01, 0x00, 0x01, 0x02, 0x11, 0x00, 0x06, 0xCE, 0x05, 0x2E, 0x73, 0x74, 0x65, 0x70, 0xDA, 
39287
  0x04, 0xDA, 0x84, 0x3B, 0xD8, 0x0A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x65, 0x70, 
39288
  0x00, 0x11, 0x00, 0xDA, 0x32, 0x00, 0x11, 0x01, 0xDA, 0x84, 0xF5, 0x00, 0x11, 0x02, 0xDA, 0x7E, 
39289
  0x01, 0x10, 0x03, 0xDA, 0x43, 0x01, 0x06, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
39290
  0x45, 0x06, 0x10, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x44, 0x28, 0x02, 0x00, 
39291
  0x00, 0x2B, 0x03, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 
39292
  0x00, 0x2B, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x08, 
39293
  0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 
39294
  0x00, 0x35, 0x02, 0x07, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 0x02, 0x00, 
39295
  0x00, 0x8E, 0xBB, 0x03, 0x01, 0x03, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 
39296
  0x00, 0x03, 0x00, 0x03, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 
39297
  0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xDA, 0x84, 0x98, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
39298
  0xDA, 0x04, 0x8E, 0x2F, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x2E, 0x66, 0x6E, 0x20, 0x26, 0x6F, 
39299
  0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
39300
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
39301
  0xDA, 0x08, 0xDA, 0x84, 0x96, 0xDA, 0x84, 0x50, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
39302
  0x04, 0x8E, 0x18, 0x01, 0xDA, 0x06, 0xCE, 0x31, 0x28, 0x2E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
39303
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
39304
  0x6E, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 
39305
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x4E, 0xD7, 0x00, 
39306
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x12, 0x00, 
39307
  0x09, 0xCE, 0x0A, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 0xDA, 0x04, 0x00, 
39308
  0x12, 0x00, 0xCF, 0x03, 0x74, 0x61, 0x62, 0x00, 0x12, 0x01, 0xCF, 0x05, 0x63, 0x6F, 0x6C, 0x6C, 
39309
  0x73, 0x00, 0x12, 0x02, 0xCF, 0x0A, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 
39310
  0x00, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x32, 0x02, 0x11, 0x04, 0xCF, 
39311
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x31, 0x05, 0x11, 0x05, 0xDA, 0x83, 0x1C, 0x05, 0x0F, 
39312
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x30, 0x08, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 
39313
  0x30, 0x30, 0x30, 0x30, 0x32, 0x5A, 0x0A, 0x0F, 0x03, 0xDA, 0x82, 0xAD, 0x28, 0x04, 0x00, 0x00, 
39314
  0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x0E, 0x00, 0x3A, 0x03, 0x01, 0x04, 
39315
  0x1B, 0x05, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x03, 0x05, 0x06, 0x1B, 0x06, 0x03, 0x00, 
39316
  0x1F, 0x06, 0x06, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3A, 0x07, 0x05, 0x03, 0x3C, 0x00, 0x03, 0x07, 
39317
  0x49, 0x06, 0x05, 0x06, 0x1C, 0xFB, 0xFF, 0xFF, 0x49, 0x04, 0x01, 0x04, 0x1C, 0xF3, 0xFF, 0xFF, 
39318
  0x03, 0x00, 0x00, 0x00, 0x86, 0x8E, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39319
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x12, 0x00, 0x05, 0xBF, 
39320
  0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCE, 0x0F, 0x65, 0x6E, 0x74, 
39321
  0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5B, 0xCE, 0x12, 0x5D, 0x20, 
39322
  0x2D, 0x20, 0x28, 0x71, 0x75, 0x69, 0x74, 0x29, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 
39323
  0xDA, 0x84, 0x52, 0xDA, 0x83, 0xE6, 0xD1, 0x01, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x07, 
39324
  0x03, 0x01, 0x03, 0x00, 0x07, 0x00, 0x01, 0x05, 0xCE, 0x12, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 
39325
  0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x04, 0x00, 0x07, 
39326
  0x00, 0xDA, 0x83, 0x49, 0x00, 0x07, 0x01, 0xDA, 0x83, 0x1A, 0x00, 0x07, 0x02, 0xCF, 0x07, 0x69, 
39327
  0x73, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x00, 0x07, 0x03, 0xCF, 0x12, 0x64, 0x65, 0x62, 0x75, 0x67, 
39328
  0x67, 0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x04, 0x07, 0x05, 
39329
  0xDA, 0x83, 0x1A, 0x20, 0x01, 0x03, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39330
  0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x30, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0xCD, 
39331
  0x02, 0xFE, 0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x11, 0x3D, 0x01, 0x01, 0x0A, 0xDA, 0x84, 0x2E, 
39332
  0xDA, 0x04, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xDA, 0x08, 0xDA, 0x81, 0x96, 0xDA, 0x83, 0x32, 
39333
  0xCE, 0x02, 0x25, 0x71, 0xDA, 0x81, 0x8D, 0xDA, 0x80, 0xDC, 0xDA, 0x0E, 0xCE, 0x18, 0x62, 0x61, 
39334
  0x64, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 
39335
  0x25, 0x76, 0x3A, 0x20, 0x25, 0x76, 0xDA, 0x84, 0x5A, 0xD8, 0x06, 0x65, 0x66, 0x6C, 0x75, 0x73, 
39336
  0x68, 0xDA, 0x83, 0xE6, 0xDA, 0x81, 0x6E, 0xDA, 0x84, 0xDD, 0xD0, 0x05, 0x64, 0x65, 0x62, 0x75, 
39337
  0x67, 0xDA, 0x84, 0x2D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
39338
  0x83, 0x1A, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x85, 0x12, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x13, 
39339
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x83, 0x1A, 0x00, 0x3D, 0x00, 0xDA, 0x31, 0x00, 0x3D, 0x01, 0xDA, 
39340
  0x1E, 0x03, 0x3D, 0x03, 0xCF, 0x02, 0x66, 0x73, 0x1A, 0x2B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39341
  0x30, 0x30, 0x35, 0x78, 0x1D, 0x2B, 0x08, 0xDA, 0x83, 0x61, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 
39342
  0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x04, 
39343
  0x05, 0x03, 0x1E, 0x04, 0x28, 0x00, 0x2D, 0x05, 0x00, 0x02, 0x1E, 0x05, 0x25, 0x00, 0x2C, 0x05, 
39344
  0x02, 0x00, 0x32, 0x05, 0x01, 0x00, 0x44, 0x05, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x00, 0x2C, 0x07, 
39345
  0x03, 0x00, 0x3C, 0x06, 0x07, 0x05, 0x2D, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x3B, 0x05, 
39346
  0x06, 0x07, 0x20, 0x05, 0x02, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x30, 0x05, 
39347
  0x00, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x05, 0x07, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x35, 0x07, 
39348
  0x08, 0x00, 0x1B, 0x05, 0x07, 0x00, 0x28, 0x08, 0x00, 0x00, 0x37, 0x07, 0x05, 0x08, 0x1B, 0x08, 
39349
  0x07, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x07, 0x09, 0x00, 0x2C, 0x0A, 
39350
  0x08, 0x00, 0x25, 0x09, 0x07, 0x0A, 0x1E, 0x09, 0x08, 0x00, 0x2C, 0x07, 0x09, 0x00, 0x33, 0x07, 
39351
  0x06, 0x08, 0x2C, 0x0A, 0x0A, 0x00, 0x35, 0x07, 0x0A, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x35, 0x07, 
39352
  0x0A, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x0C, 0x00, 0x36, 0x05, 0x00, 0x00, 0x04, 0x00, 
39353
  0x00, 0x00, 0x2C, 0x05, 0x0D, 0x00, 0x33, 0x00, 0x01, 0x05, 0x2C, 0x07, 0x0E, 0x00, 0x35, 0x05, 
39354
  0x07, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x35, 0x05, 0x07, 0x00, 0x2D, 0x07, 0x00, 0x00, 0x2C, 0x08, 
39355
  0x0F, 0x00, 0x3B, 0x05, 0x07, 0x08, 0x1E, 0x05, 0x05, 0x00, 0x2D, 0x07, 0x00, 0x05, 0x32, 0x00, 
39356
  0x07, 0x00, 0x2C, 0x07, 0x10, 0x00, 0x36, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
39357
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0xDA, 0x81, 0x99, 
39358
  0xDA, 0x04, 0xD8, 0x06, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x02, 
39359
  0x70, 0x66, 0x2D, 0x00, 0x00, 0x06, 0x2D, 0x01, 0x00, 0x01, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x00, 
39360
  0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xD2, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
39361
  0x0B, 0x00, 0x0B, 0x8B, 0xCC, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 
39362
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
39363
  0x00, 0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x09, 
39364
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
39365
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x0D, 0x00, 0x0D, 
39366
  0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0xBF, 0xFC, 0x09, 0x05, 0x09, 0x00, 0x09, 0xBF, 
39367
  0xF8, 0x07, 0x0A, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x01, 0x0D, 
39368
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x09, 
39369
  0x42, 0x00, 0x00, 0x00, 0x8B, 0xCA, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
39370
  0x03, 0x00, 0x03, 0x25, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x65, 0x6E, 0x76, 0xD0, 0x06, 0x63, 0x68, 
39371
  0x75, 0x6E, 0x6B, 0x73, 0xD0, 0x09, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD7, 
39372
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x42, 0x01, 0x01, 0x01, 0x25, 0x81, 0x19, 0x00, 0x05, 0x2E, 
39373
  0xCE, 0x0B, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xDA, 0x04, 0xD0, 
39374
  0x12, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x77, 0x61, 0x72, 0x6E, 
39375
  0x69, 0x6E, 0x67, 0xDA, 0x85, 0x1D, 0xD0, 0x0B, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6C, 
39376
  0x61, 0x67, 0x73, 0xD0, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0xD0, 0x04, 0x72, 
39377
  0x65, 0x61, 0x64, 0xD0, 0x09, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0xDA, 0x85, 
39378
  0x1C, 0xD0, 0x06, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0xDA, 0x81, 0xC5, 0xD0, 0x0E, 0x6F, 0x6E, 
39379
  0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD0, 0x10, 0x6F, 0x6E, 
39380
  0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x85, 
39381
  0x1E, 0xDA, 0x83, 0x53, 0xDA, 0x83, 0x54, 0xDA, 0x84, 0xDD, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
39382
  0x00, 0x0C, 0x05, 0x03, 0x05, 0x0B, 0x20, 0x00, 0x07, 0xCE, 0x0B, 0x62, 0x61, 0x64, 0x2D, 0x63, 
39383
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0xDC, 0xDA, 0x81, 0x26, 0xCE, 0x05, 
39384
  0x1B, 0x5B, 0x33, 0x31, 0x6D, 0xDA, 0x81, 0x6E, 0xCE, 0x01, 0x3A, 0xCE, 0x11, 0x3A, 0x20, 0x63, 
39385
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0xDA, 0x84, 
39386
  0x5F, 0xDA, 0x84, 0xDD, 0xCE, 0x04, 0x1B, 0x5B, 0x30, 0x6D, 0xDA, 0x84, 0x52, 0xDA, 0x85, 0x16, 
39387
  0x00, 0x20, 0x00, 0xDA, 0x83, 0x1D, 0x00, 0x20, 0x01, 0xCF, 0x06, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
39388
  0x66, 0x00, 0x20, 0x02, 0xCF, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x00, 0x20, 0x03, 0xCF, 0x04, 
39389
  0x6C, 0x69, 0x6E, 0x65, 0x00, 0x20, 0x04, 0xCF, 0x03, 0x63, 0x6F, 0x6C, 0x00, 0x20, 0x05, 0xCF, 
39390
  0x0B, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x04, 0x20, 0x07, 0xCF, 
39391
  0x02, 0x65, 0x63, 0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 
39392
  0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x1C, 
39393
  0x02, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x08, 0x02, 0x09, 0x2C, 
39394
  0x09, 0x04, 0x00, 0x33, 0x03, 0x09, 0x04, 0x2C, 0x09, 0x05, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 
39395
  0x0A, 0x06, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x01, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 
39396
  0x01, 0x00, 0x08, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x1E, 
39397
  0x07, 0x03, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x32, 
39398
  0x00, 0x08, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x36, 
39399
  0x08, 0x00, 0x00, 0x89, 0xE7, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x05, 
39400
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39401
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39402
  0x05, 0xBF, 0xFF, 0x03, 0x02, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x00, 0x05, 
39403
  0x00, 0x05, 0x01, 0x03, 0x00, 0x03, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x05, 0x03, 
39404
  0x05, 0x0B, 0x1B, 0x00, 0x07, 0xCE, 0x0C, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 
39405
  0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0xDC, 0xDA, 0x81, 0x26, 0xCE, 0x05, 0x1B, 0x5B, 0x33, 
39406
  0x33, 0x6D, 0xDA, 0x81, 0x6E, 0xDA, 0x85, 0x2C, 0xCE, 0x13, 0x3A, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
39407
  0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x28, 0xCE, 0x03, 0x29, 
39408
  0x3A, 0x20, 0xDA, 0x84, 0x5F, 0xDA, 0x85, 0x2E, 0xDA, 0x84, 0x52, 0xDA, 0x85, 0x16, 0x00, 0x1B, 
39409
  0x00, 0xDA, 0x83, 0x1D, 0x00, 0x1B, 0x01, 0xDA, 0x83, 0x1A, 0x00, 0x1B, 0x02, 0xDA, 0x85, 0x30, 
39410
  0x00, 0x1B, 0x03, 0xDA, 0x85, 0x31, 0x00, 0x1B, 0x04, 0xDA, 0x85, 0x32, 0x00, 0x1B, 0x05, 0xCF, 
39411
  0x0C, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x04, 0x1B, 0x07, 
39412
  0xDA, 0x85, 0x34, 0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 
39413
  0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x1C, 
39414
  0x02, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x08, 0x02, 0x09, 0x2C, 
39415
  0x09, 0x04, 0x00, 0x33, 0x03, 0x09, 0x04, 0x2C, 0x09, 0x05, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x33, 
39416
  0x09, 0x01, 0x0A, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 
39417
  0x08, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x32, 0x00, 0x08, 0x00, 0x2C, 
39418
  0x0B, 0x09, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x36, 0x08, 0x00, 0x00, 0x89, 
39419
  0xD8, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 
39420
  0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39421
  0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 
39422
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x02, 
39423
  0x02, 0x02, 0x0B, 0x21, 0x00, 0x06, 0xCE, 0x09, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 
39424
  0x65, 0xDA, 0x04, 0xDA, 0x84, 0xDC, 0xDA, 0x81, 0x26, 0xD0, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 
39425
  0xDA, 0x85, 0x2B, 0xDA, 0x81, 0x6E, 0xDA, 0x0E, 0xDA, 0x85, 0x2E, 0xDA, 0x85, 0x2C, 0xCE, 0x0F, 
39426
  0x3A, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0xDA, 
39427
  0x84, 0x52, 0xDA, 0x85, 0x16, 0x00, 0x21, 0x00, 0xDA, 0x15, 0x00, 0x21, 0x01, 0xDA, 0x85, 0x30, 
39428
  0x00, 0x21, 0x02, 0xCF, 0x09, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x04, 0x21, 
39429
  0x04, 0xDA, 0x85, 0x34, 0x09, 0x21, 0x07, 0xDA, 0x85, 0x31, 0x0B, 0x21, 0x08, 0xDA, 0x85, 0x32, 
39430
  0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 
39431
  0x1B, 0x04, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 
39432
  0x3D, 0x06, 0x05, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x3D, 0x06, 0x05, 0x01, 0x1B, 0x08, 0x06, 0x00, 
39433
  0x1E, 0x04, 0x03, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 
39434
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x04, 0x03, 0x00, 
39435
  0x2C, 0x0A, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x07, 0x00, 
39436
  0x33, 0x06, 0x01, 0x0B, 0x2C, 0x0B, 0x07, 0x00, 0x33, 0x07, 0x0B, 0x08, 0x2C, 0x0B, 0x08, 0x00, 
39437
  0x33, 0x0B, 0x09, 0x0A, 0x2C, 0x0C, 0x09, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x06, 0x0A, 0x00, 
39438
  0x36, 0x06, 0x00, 0x00, 0x89, 0xC7, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 
39439
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x05, 0x00, 
39440
  0x05, 0x00, 0x05, 0x00, 0x05, 0x07, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
39441
  0x05, 0x00, 0x05, 0xBF, 0xF7, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39442
  0x00, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0xD0, 0x0B, 0x3C, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 
39443
  0x6D, 0x6F, 0x75, 0x73, 0x3E, 0xD0, 0x03, 0x79, 0x64, 0x74, 0xDA, 0x82, 0x30, 0xD0, 0x0C, 0x63, 
39444
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xD0, 0x04, 0x65, 0x78, 0x69, 
39445
  0x74, 0xD0, 0x0A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x82, 0x58, 
39446
  0xDA, 0x0B, 0xD0, 0x07, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0xD0, 0x07, 0x70, 0x72, 0x6F, 
39447
  0x64, 0x75, 0x63, 0x65, 0xD0, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD0, 0x08, 0x68, 0x61, 
39448
  0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xDA, 0x81, 0x6E, 0xDA, 0x81, 0x61, 0xD0, 0x06, 0x63, 0x61, 
39449
  0x6E, 0x63, 0x65, 0x6C, 0xD0, 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x2B, 0xD0, 0x03, 0x65, 
39450
  0x6F, 0x66, 0xDA, 0x0E, 0x00, 0x81, 0x19, 0x00, 0xCF, 0x04, 0x6F, 0x70, 0x74, 0x73, 0x00, 0x81, 
39451
  0x19, 0x01, 0xCF, 0x0B, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x02, 
39452
  0x81, 0x19, 0x03, 0xCF, 0x12, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 
39453
  0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x05, 0x81, 0x19, 0x04, 0xCF, 0x06, 0x63, 0x68, 0x75, 
39454
  0x6E, 0x6B, 0x73, 0x08, 0x81, 0x19, 0x05, 0xCF, 0x05, 0x67, 0x75, 0x61, 0x72, 0x64, 0x0B, 0x81, 
39455
  0x19, 0x06, 0xCF, 0x06, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x0E, 0x81, 0x19, 0x07, 0xCF, 0x04, 
39456
  0x72, 0x65, 0x61, 0x64, 0x11, 0x81, 0x19, 0x08, 0xCF, 0x09, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
39457
  0x74, 0x6F, 0x72, 0x14, 0x81, 0x19, 0x09, 0xDA, 0x83, 0x49, 0x17, 0x81, 0x19, 0x0A, 0xCF, 0x06, 
39458
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x1A, 0x81, 0x19, 0x0B, 0xCF, 0x0D, 0x64, 0x65, 0x66, 0x61, 
39459
  0x75, 0x6C, 0x74, 0x2D, 0x77, 0x68, 0x65, 0x72, 0x65, 0x1D, 0x81, 0x19, 0x0C, 0xCF, 0x0E, 0x6F, 
39460
  0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x81, 0x19, 
39461
  0x0D, 0xCF, 0x10, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x65, 0x72, 
39462
  0x72, 0x6F, 0x72, 0x23, 0x81, 0x19, 0x0E, 0xCF, 0x08, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x74, 0x75, 
39463
  0x73, 0x2A, 0x30, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x31, 0x33, 0x81, 0x19, 
39464
  0x0F, 0xDA, 0x83, 0x49, 0x39, 0x81, 0x19, 0x11, 0xDA, 0x85, 0x4F, 0x3E, 0x81, 0x19, 0x13, 0xDA, 
39465
  0x85, 0x58, 0x43, 0x81, 0x19, 0x15, 0xDA, 0x85, 0x57, 0x48, 0x81, 0x19, 0x17, 0xDA, 0x85, 0x4E, 
39466
  0x4D, 0x81, 0x19, 0x19, 0xDA, 0x85, 0x56, 0x53, 0x81, 0x19, 0x1B, 0xDA, 0x85, 0x53, 0x58, 0x81, 
39467
  0x19, 0x1D, 0xDA, 0x85, 0x55, 0x5D, 0x81, 0x19, 0x1F, 0xDA, 0x85, 0x50, 0x5E, 0x81, 0x19, 0x20, 
39468
  0xDA, 0x85, 0x30, 0x66, 0x81, 0x19, 0x22, 0xDA, 0x83, 0x1B, 0x68, 0x81, 0x19, 0x24, 0xCF, 0x05, 
39469
  0x65, 0x76, 0x61, 0x6C, 0x31, 0x76, 0x7D, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
39470
  0x63, 0x7D, 0x81, 0x19, 0x26, 0xDA, 0x15, 0x80, 0x81, 0x81, 0x19, 0x28, 0xCF, 0x09, 0x70, 0x2D, 
39471
  0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0x80, 0x85, 0x81, 0x19, 0x2A, 0xCF, 0x09, 0x70, 0x2D, 
39472
  0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x80, 0x89, 0x81, 0x19, 0x2C, 0xCF, 0x08, 0x70, 0x2D, 
39473
  0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x80, 0x8D, 0x81, 0x19, 0x2E, 0xCF, 0x0A, 0x70, 0x2D, 0x68, 
39474
  0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0x80, 0x8F, 0x81, 0x19, 0x30, 0xCF, 0x09, 0x70, 0x61, 
39475
  0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x80, 0x91, 0x81, 0x19, 0x32, 0xCF, 0x07, 0x70, 0x72, 
39476
  0x6F, 0x64, 0x75, 0x63, 0x65, 0x80, 0x95, 0x81, 0x19, 0x34, 0xCF, 0x03, 0x62, 0x75, 0x66, 0x80, 
39477
  0x96, 0x81, 0x19, 0x35, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2D, 0x6E, 0x6F, 0x74, 
39478
  0x2D, 0x64, 0x6F, 0x6E, 0x65, 0x80, 0xA2, 0x80, 0xF9, 0x37, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39479
  0x30, 0x35, 0x64, 0x80, 0xB5, 0x80, 0xF9, 0x39, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
39480
  0x65, 0x80, 0xB8, 0x80, 0xF9, 0x3A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x66, 0x80, 
39481
  0xBB, 0x80, 0xF9, 0x3B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x67, 0x80, 0xBB, 0x80, 
39482
  0xC9, 0x39, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x69, 0x80, 0xBF, 0x80, 0xC6, 0x3E, 
39483
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x68, 0x80, 0xC9, 0x80, 0xD1, 0x3B, 0xCF, 0x09, 
39484
  0x6E, 0x65, 0x77, 0x2D, 0x77, 0x68, 0x65, 0x72, 0x65, 0x80, 0xD2, 0x80, 0xF9, 0x3C, 0xCF, 0x06, 
39485
  0x70, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x80, 0xD4, 0x80, 0xF9, 0x3E, 0xDA, 0x37, 0x2C, 0x03, 0x00, 
39486
  0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3A, 0x02, 0x00, 
39487
  0x04, 0x1B, 0x04, 0x02, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x3A, 0x02, 0x00, 0x05, 0x1B, 0x05, 0x02, 
39488
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x3A, 0x02, 0x00, 0x06, 0x1B, 0x06, 0x02, 0x00, 0x2C, 0x07, 0x04, 
39489
  0x00, 0x3A, 0x02, 0x00, 0x07, 0x1B, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x3A, 0x02, 0x00, 
39490
  0x08, 0x1B, 0x08, 0x02, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x3A, 0x02, 0x00, 0x09, 0x1B, 0x09, 0x02, 
39491
  0x00, 0x2C, 0x0A, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x0A, 0x1B, 0x0A, 0x02, 0x00, 0x2C, 0x0B, 0x08, 
39492
  0x00, 0x3A, 0x02, 0x00, 0x0B, 0x1B, 0x0B, 0x02, 0x00, 0x2C, 0x0C, 0x09, 0x00, 0x3A, 0x02, 0x00, 
39493
  0x0C, 0x1B, 0x0C, 0x02, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x3A, 0x02, 0x00, 0x0D, 0x1B, 0x0D, 0x02, 
39494
  0x00, 0x2C, 0x0E, 0x0B, 0x00, 0x3A, 0x02, 0x00, 0x0E, 0x1B, 0x0E, 0x02, 0x00, 0x20, 0x09, 0x0E, 
39495
  0x00, 0x2C, 0x10, 0x0C, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x0D, 
39496
  0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1E, 0x0F, 0x03, 0x00, 0x1B, 0x10, 0x0F, 
39497
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x44, 0x11, 0x00, 0x00, 0x1B, 0x10, 0x11, 0x00, 0x1B, 0x02, 0x10, 
39498
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x02, 0x09, 0x00, 0x1B, 0x0F, 0x02, 0x00, 0x20, 0x04, 0x04, 
39499
  0x00, 0x30, 0x11, 0x00, 0x00, 0x1B, 0x10, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x10, 0x04, 
39500
  0x00, 0x1B, 0x11, 0x10, 0x00, 0x20, 0x0E, 0x03, 0x00, 0x2C, 0x12, 0x0E, 0x00, 0x1C, 0x02, 0x00, 
39501
  0x00, 0x1B, 0x12, 0x0E, 0x00, 0x1B, 0x13, 0x12, 0x00, 0x20, 0x0D, 0x03, 0x00, 0x2C, 0x14, 0x0F, 
39502
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x14, 0x0D, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x20, 0x03, 0x03, 
39503
  0x00, 0x2C, 0x16, 0x10, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x16, 0x03, 0x00, 0x1B, 0x17, 0x16, 
39504
  0x00, 0x20, 0x0C, 0x03, 0x00, 0x2C, 0x18, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x18, 0x0C, 
39505
  0x00, 0x1B, 0x19, 0x18, 0x00, 0x20, 0x08, 0x04, 0x00, 0x30, 0x1B, 0x01, 0x00, 0x1B, 0x1A, 0x1B, 
39506
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1A, 0x08, 0x00, 0x1B, 0x1B, 0x1A, 0x00, 0x20, 0x0B, 0x03, 
39507
  0x00, 0x2C, 0x1C, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1C, 0x0B, 0x00, 0x1B, 0x1D, 0x1C, 
39508
  0x00, 0x20, 0x05, 0x03, 0x00, 0x2C, 0x1E, 0x13, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1E, 0x05, 
39509
  0x00, 0x1B, 0x1F, 0x1E, 0x00, 0x1B, 0x20, 0x1D, 0x00, 0x31, 0x20, 0x00, 0x00, 0x2C, 0x22, 0x14, 
39510
  0x00, 0x35, 0x21, 0x22, 0x00, 0x1E, 0x21, 0x03, 0x00, 0x2C, 0x22, 0x15, 0x00, 0x3C, 0x0F, 0x22, 
39511
  0x20, 0x40, 0x21, 0x00, 0x00, 0x1B, 0x22, 0x21, 0x00, 0x30, 0x23, 0x02, 0x00, 0x1B, 0x24, 0x23, 
39512
  0x00, 0x1E, 0x07, 0x0E, 0x00, 0x2C, 0x26, 0x16, 0x00, 0x3A, 0x25, 0x0F, 0x26, 0x1E, 0x25, 0x02, 
39513
  0x00, 0x1C, 0x06, 0x00, 0x00, 0x32, 0x0F, 0x20, 0x00, 0x35, 0x25, 0x07, 0x00, 0x31, 0x25, 0x00, 
39514
  0x00, 0x35, 0x26, 0x24, 0x00, 0x1C, 0xF8, 0xFF, 0xFF, 0x2C, 0x25, 0x17, 0x00, 0x33, 0x0F, 0x25, 
39515
  0x0F, 0x2C, 0x25, 0x18, 0x00, 0x36, 0x25, 0x00, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x25, 0x0A, 
39516
  0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x27, 0x19, 0x00, 0x35, 0x26, 0x27, 0x00, 0x1B, 0x25, 0x26, 
39517
  0x00, 0x1B, 0x26, 0x25, 0x00, 0x2C, 0x27, 0x1A, 0x00, 0x31, 0x27, 0x00, 0x00, 0x35, 0x27, 0x26, 
39518
  0x00, 0x1B, 0x28, 0x27, 0x00, 0x2C, 0x29, 0x1B, 0x00, 0x31, 0x29, 0x00, 0x00, 0x35, 0x29, 0x26, 
39519
  0x00, 0x1B, 0x2A, 0x29, 0x00, 0x2C, 0x2B, 0x1C, 0x00, 0x31, 0x2B, 0x00, 0x00, 0x35, 0x2B, 0x26, 
39520
  0x00, 0x1B, 0x2C, 0x2B, 0x00, 0x2C, 0x2D, 0x1D, 0x00, 0x31, 0x2D, 0x00, 0x00, 0x35, 0x2D, 0x26, 
39521
  0x00, 0x1B, 0x2E, 0x2D, 0x00, 0x30, 0x2F, 0x03, 0x00, 0x1B, 0x30, 0x2F, 0x00, 0x30, 0x31, 0x04, 
39522
  0x00, 0x1B, 0x32, 0x31, 0x00, 0x2C, 0x33, 0x1E, 0x00, 0x31, 0x33, 0x00, 0x00, 0x41, 0x33, 0x00, 
39523
  0x00, 0x1B, 0x34, 0x33, 0x00, 0x29, 0x35, 0x00, 0x00, 0x1E, 0x35, 0x63, 0x00, 0x2C, 0x36, 0x16, 
39524
  0x00, 0x31, 0x36, 0x00, 0x00, 0x35, 0x36, 0x0F, 0x00, 0x1E, 0x36, 0x02, 0x00, 0x1C, 0x5E, 0x00, 
39525
  0x00, 0x31, 0x34, 0x00, 0x00, 0x2C, 0x37, 0x1F, 0x00, 0x35, 0x36, 0x37, 0x00, 0x32, 0x34, 0x26, 
39526
  0x00, 0x35, 0x36, 0x11, 0x00, 0x1B, 0x37, 0x36, 0x00, 0x2C, 0x38, 0x20, 0x00, 0x25, 0x36, 0x37, 
39527
  0x38, 0x1E, 0x36, 0x08, 0x00, 0x31, 0x26, 0x00, 0x00, 0x2C, 0x39, 0x21, 0x00, 0x35, 0x38, 0x39, 
39528
  0x00, 0x31, 0x34, 0x00, 0x00, 0x2C, 0x39, 0x1F, 0x00, 0x35, 0x38, 0x39, 0x00, 0x1C, 0x4D, 0x00, 
39529
  0x00, 0x31, 0x37, 0x00, 0x00, 0x2C, 0x3A, 0x22, 0x00, 0x35, 0x39, 0x3A, 0x00, 0x1E, 0x39, 0x04, 
39530
  0x00, 0x3F, 0x3A, 0x37, 0x00, 0x1B, 0x38, 0x3A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x38, 0x00, 
39531
  0x00, 0x1B, 0x39, 0x38, 0x00, 0x2B, 0x3A, 0x00, 0x00, 0x3B, 0x38, 0x37, 0x3A, 0x1B, 0x3A, 0x38, 
39532
  0x00, 0x2B, 0x3B, 0x01, 0x00, 0x3B, 0x38, 0x37, 0x3B, 0x1B, 0x3B, 0x38, 0x00, 0x1E, 0x39, 0x0C, 
39533
  0x00, 0x2B, 0x3E, 0x02, 0x00, 0x48, 0x3D, 0x3E, 0x39, 0x1B, 0x3E, 0x3D, 0x00, 0x1E, 0x3D, 0x05, 
39534
  0x00, 0x2C, 0x40, 0x08, 0x00, 0x25, 0x3F, 0x3A, 0x40, 0x1B, 0x3C, 0x3F, 0x00, 0x1C, 0x02, 0x00, 
39535
  0x00, 0x1B, 0x3C, 0x3E, 0x00, 0x1B, 0x38, 0x3C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x38, 0x39, 
39536
  0x00, 0x1E, 0x38, 0x09, 0x00, 0x1B, 0x20, 0x3B, 0x00, 0x31, 0x3B, 0x00, 0x00, 0x2C, 0x3D, 0x14, 
39537
  0x00, 0x35, 0x3C, 0x3D, 0x00, 0x1E, 0x3C, 0x03, 0x00, 0x2C, 0x3D, 0x15, 0x00, 0x3C, 0x0F, 0x3D, 
39538
  0x3B, 0x1C, 0x28, 0x00, 0x00, 0x2B, 0x3C, 0x00, 0x00, 0x3F, 0x3D, 0x34, 0x00, 0x1B, 0x3E, 0x3D, 
39539
  0x00, 0x26, 0x3D, 0x3E, 0x00, 0x1E, 0x3D, 0x05, 0x00, 0x31, 0x26, 0x00, 0x00, 0x2C, 0x40, 0x23, 
39540
  0x00, 0x35, 0x3F, 0x40, 0x00, 0x2A, 0x35, 0x00, 0x00, 0x21, 0x3D, 0x3E, 0x3C, 0x1E, 0x3D, 0x1D, 
39541
  0x00, 0x33, 0x26, 0x34, 0x3C, 0x35, 0x3F, 0x28, 0x00, 0x06, 0x3C, 0x3C, 0x3F, 0x31, 0x26, 0x00, 
39542
  0x00, 0x35, 0x3F, 0x2E, 0x00, 0x1E, 0x3F, 0x0A, 0x00, 0x35, 0x40, 0x32, 0x00, 0x34, 0x40, 0x00, 
39543
  0x00, 0x35, 0x41, 0x24, 0x00, 0x2C, 0x40, 0x16, 0x00, 0x31, 0x40, 0x00, 0x00, 0x35, 0x40, 0x0F, 
39544
  0x00, 0x1E, 0x40, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0x31, 0x26, 0x00, 
39545
  0x00, 0x35, 0x3F, 0x2C, 0x00, 0x2C, 0x41, 0x24, 0x00, 0x25, 0x40, 0x3F, 0x41, 0x1E, 0x40, 0x08, 
39546
  0x00, 0x32, 0x26, 0x20, 0x00, 0x35, 0x3F, 0x30, 0x00, 0x2C, 0x3F, 0x16, 0x00, 0x31, 0x3F, 0x00, 
39547
  0x00, 0x35, 0x3F, 0x0F, 0x00, 0x1E, 0x3F, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xE3, 0xFF, 
39548
  0xFF, 0x1C, 0x9E, 0xFF, 0xFF, 0x2C, 0x36, 0x16, 0x00, 0x31, 0x36, 0x00, 0x00, 0x35, 0x36, 0x0F, 
39549
  0x00, 0x1E, 0x36, 0x02, 0x00, 0x1C, 0x14, 0x00, 0x00, 0x31, 0x26, 0x00, 0x00, 0x35, 0x37, 0x2E, 
39550
  0x00, 0x1E, 0x37, 0x0A, 0x00, 0x35, 0x38, 0x32, 0x00, 0x34, 0x38, 0x00, 0x00, 0x35, 0x39, 0x24, 
39551
  0x00, 0x2C, 0x38, 0x16, 0x00, 0x31, 0x38, 0x00, 0x00, 0x35, 0x38, 0x0F, 0x00, 0x1E, 0x38, 0x02, 
39552
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0x31, 0x26, 0x00, 0x00, 0x35, 0x37, 0x2C, 
39553
  0x00, 0x2C, 0x39, 0x24, 0x00, 0x25, 0x38, 0x37, 0x39, 0x1E, 0x38, 0x03, 0x00, 0x32, 0x26, 0x20, 
39554
  0x00, 0x35, 0x37, 0x30, 0x00, 0x2C, 0x36, 0x16, 0x00, 0x28, 0x37, 0x00, 0x00, 0x3C, 0x0F, 0x36, 
39555
  0x37, 0x2C, 0x36, 0x17, 0x00, 0x33, 0x0F, 0x36, 0x0F, 0x2C, 0x36, 0x18, 0x00, 0x36, 0x36, 0x00, 
39556
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x05, 0x01, 0x13, 0xCE, 0x06, 
39557
  0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0xDA, 0x04, 0xDA, 0x81, 0x6E, 0xD8, 0x07, 0x67, 0x65, 0x74, 
39558
  0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x4C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
39559
  0x85, 0x4D, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x4F, 
39560
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 0x51, 0xBF, 0xFF, 
39561
  0x00, 0x07, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x09, 
39562
  0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 
39563
  0x55, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x57, 0xBF, 
39564
  0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 
39565
  0x0F, 0xDA, 0x83, 0x49, 0x00, 0x05, 0x00, 0xDA, 0x85, 0x62, 0x00, 0x05, 0x01, 0xDA, 0x15, 0x00, 
39566
  0x05, 0x02, 0xDA, 0x85, 0x4F, 0x2C, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x0F, 0x33, 0x03, 0x00, 
39567
  0x04, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x37, 0x26, 0x00, 0x26, 
39568
  0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x01, 0x01, 0xCD, 0x7F, 
39569
  0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x02, 0xCE, 0x08, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
39570
  0x65, 0xDA, 0x04, 0x00, 0x01, 0x00, 0xDA, 0x1E, 0x00, 0x01, 0x01, 0xCF, 0x08, 0x65, 0x76, 0x61, 
39571
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x36, 0x00, 0x00, 0x00, 0x8A, 0x3C, 0x29, 0xCD, 0x02, 0xFE, 0x00, 
39572
  0x00, 0x0D, 0x03, 0x01, 0x03, 0x02, 0x1E, 0x01, 0x01, 0x23, 0xCE, 0x05, 0x65, 0x76, 0x61, 0x6C, 
39573
  0x31, 0xDA, 0x04, 0xDA, 0x80, 0xDC, 0xD8, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x61, 
39574
  0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x4C, 
39575
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x4D, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 
39576
  0x00, 0x04, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x06, 
39577
  0xDA, 0x85, 0x51, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 
39578
  0x53, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x54, 0xBF, 
39579
  0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 
39580
  0x0D, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
39581
  0x85, 0x59, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x85, 0x4F, 
39582
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 
39583
  0x00, 0x17, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x1B, 
39584
  0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x85, 
39585
  0x50, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x30, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x83, 0x1B, 0x00, 
39586
  0x1E, 0x00, 0xCF, 0x06, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x00, 0x1E, 0x01, 0xDA, 0x80, 0xCE, 
39587
  0x00, 0x1E, 0x02, 0xDA, 0x83, 0x1C, 0x00, 0x1E, 0x03, 0xDA, 0x85, 0x5A, 0x08, 0x1E, 0x05, 0xDA, 
39588
  0x85, 0x72, 0x09, 0x1E, 0x06, 0xCF, 0x04, 0x67, 0x6F, 0x6F, 0x64, 0x0A, 0x1E, 0x07, 0xCF, 0x09, 
39589
  0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x76, 0x61, 0x6C, 0x11, 0x1E, 0x08, 0xDA, 0x31, 0x17, 0x1D, 
39590
  0x0C, 0xDA, 0x7E, 0x2D, 0x05, 0x00, 0x06, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 
39591
  0x06, 0x00, 0x06, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39592
  0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x29, 0x06, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x30, 
39593
  0x08, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x1F, 0x2D, 0x0A, 0x00, 0x0F, 0x33, 0x08, 0x09, 0x0A, 0x2C, 
39594
  0x0A, 0x00, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 
39595
  0x0B, 0x01, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x08, 0x00, 0x37, 0x0B, 0x08, 0x07, 0x1B, 
39596
  0x0C, 0x0B, 0x00, 0x1E, 0x06, 0x04, 0x00, 0x32, 0x08, 0x0C, 0x00, 0x2D, 0x0B, 0x00, 0x13, 0x35, 
39597
  0x07, 0x0B, 0x00, 0x1C, 0xF6, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 
39598
  0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x95, 0x02, 0x3A, 0xDA, 0x04, 0xD8, 0x0B, 0x61, 
39599
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x83, 0x48, 0xDA, 0x81, 0x5A, 
39600
  0xD0, 0x0B, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0xD5, 0x05, 0xD0, 
39601
  0x04, 0x6E, 0x6F, 0x6E, 0x65, 0x00, 0xDA, 0x81, 0x84, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
39602
  0xF0, 0x7F, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x03, 0xD0, 0x07, 0x72, 0x65, 0x6C, 
39603
  0x61, 0x78, 0x65, 0x64, 0x01, 0xD0, 0x06, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x02, 0xD0, 0x0A, 
39604
  0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD0, 0x09, 0x6C, 0x69, 0x6E, 0x74, 
39605
  0x2D, 0x77, 0x61, 0x72, 0x6E, 0xDA, 0x1C, 0xDA, 0x1D, 0xDA, 0x0E, 0xD0, 0x06, 0x63, 0x6F, 0x6C, 
39606
  0x75, 0x6D, 0x6E, 0xDA, 0x84, 0x2F, 0xD0, 0x04, 0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x00, 
39607
  0xDA, 0x85, 0x4C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x4D, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 
39608
  0x4E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x50, 0xBF, 
39609
  0xFF, 0x00, 0x06, 0xDA, 0x85, 0x51, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 
39610
  0x08, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
39611
  0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x56, 
39612
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 
39613
  0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x11, 
39614
  0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 
39615
  0x57, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 0x56, 0xBF, 
39616
  0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 
39617
  0x1F, 0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x30, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 
39618
  0x83, 0x1B, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x85, 0x72, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x80, 0xCE, 
39619
  0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 
39620
  0x01, 0x05, 0xDA, 0x85, 0x72, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x85, 0x73, 0xBF, 0xFF, 0x01, 0x07, 
39621
  0xDA, 0x85, 0x74, 0x0C, 0x80, 0x95, 0x02, 0xDA, 0x7E, 0x18, 0x6A, 0x05, 0xCF, 0x06, 0x6C, 0x65, 
39622
  0x76, 0x65, 0x6C, 0x73, 0x1C, 0x6A, 0x06, 0xCF, 0x0A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 
39623
  0x72, 0x6F, 0x72, 0x20, 0x6A, 0x07, 0xCF, 0x0C, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 
39624
  0x6E, 0x69, 0x6E, 0x67, 0x24, 0x29, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x32, 
39625
  0x29, 0x6A, 0x08, 0xDA, 0x85, 0x82, 0x2D, 0x32, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39626
  0x35, 0x33, 0x32, 0x6A, 0x09, 0xDA, 0x85, 0x83, 0x33, 0x6A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39627
  0x30, 0x30, 0x35, 0x35, 0x36, 0x6A, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x34, 
39628
  0x3A, 0x6A, 0x0D, 0xDA, 0x83, 0x1A, 0x3C, 0x6A, 0x0E, 0xDA, 0x85, 0x31, 0x3E, 0x6A, 0x0F, 0xDA, 
39629
  0x85, 0x32, 0x40, 0x6A, 0x10, 0xDA, 0x83, 0x1D, 0x45, 0x6A, 0x0C, 0xCF, 0x03, 0x6C, 0x76, 0x6C, 
39630
  0x49, 0x4E, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x36, 0x4D, 0x52, 0x0F, 0xCF, 
39631
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x37, 0x5A, 0x5F, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39632
  0x30, 0x30, 0x35, 0x38, 0x5E, 0x63, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x39, 
39633
  0x7D, 0x80, 0x94, 0x05, 0xCF, 0x03, 0x65, 0x72, 0x72, 0x80, 0x80, 0x80, 0x94, 0x06, 0xCF, 0x06, 
39634
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x80, 0x83, 0x80, 0x94, 0x07, 0xCF, 0x04, 0x65, 0x72, 0x72, 
39635
  0x66, 0x80, 0x86, 0x80, 0x94, 0x08, 0xDA, 0x85, 0x31, 0x80, 0x86, 0x80, 0x8B, 0x08, 0xCF, 0x07, 
39636
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x61, 0x80, 0x8A, 0x80, 0x8F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
39637
  0x30, 0x30, 0x30, 0x35, 0x62, 0x2D, 0x00, 0x00, 0x22, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x00, 
39638
  0x00, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x01, 0x05, 0x2D, 0x02, 0x00, 0x0F, 0x2D, 0x03, 0x00, 
39639
  0x20, 0x33, 0x01, 0x02, 0x03, 0x2D, 0x01, 0x00, 0x22, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x01, 
39640
  0x00, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2D, 0x03, 0x00, 0x22, 0x31, 0x03, 0x00, 
39641
  0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 0x58, 0x00, 
39642
  0x00, 0x2D, 0x05, 0x00, 0x0F, 0x2C, 0x06, 0x03, 0x00, 0x3B, 0x04, 0x05, 0x06, 0x20, 0x04, 0x02, 
39643
  0x00, 0x2C, 0x04, 0x04, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2D, 0x06, 0x00, 0x0F, 0x2C, 0x07, 0x05, 
39644
  0x00, 0x3B, 0x04, 0x06, 0x07, 0x1B, 0x06, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x0F, 0x2C, 0x08, 0x06, 
39645
  0x00, 0x3B, 0x04, 0x07, 0x08, 0x1B, 0x07, 0x04, 0x00, 0x3B, 0x04, 0x05, 0x06, 0x20, 0x04, 0x02, 
39646
  0x00, 0x1B, 0x04, 0x06, 0x00, 0x1B, 0x08, 0x04, 0x00, 0x1E, 0x08, 0x03, 0x00, 0x1B, 0x04, 0x08, 
39647
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x1B, 0x08, 0x04, 0x00, 0x3B, 0x04, 0x05, 
39648
  0x07, 0x20, 0x04, 0x02, 0x00, 0x1B, 0x04, 0x07, 0x00, 0x1B, 0x09, 0x04, 0x00, 0x1E, 0x09, 0x03, 
39649
  0x00, 0x1B, 0x04, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x02, 0x00, 0x1B, 0x09, 0x04, 
39650
  0x00, 0x2D, 0x04, 0x00, 0x22, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x04, 0x0B, 0x1B, 0x0B, 0x0A, 
39651
  0x00, 0x1F, 0x0B, 0x33, 0x00, 0x3A, 0x0A, 0x04, 0x0B, 0x3D, 0x0C, 0x0A, 0x00, 0x1B, 0x0D, 0x0C, 
39652
  0x00, 0x3D, 0x0C, 0x0A, 0x01, 0x1B, 0x0E, 0x0C, 0x00, 0x3D, 0x0C, 0x0A, 0x02, 0x1B, 0x0F, 0x0C, 
39653
  0x00, 0x3D, 0x0C, 0x0A, 0x03, 0x1B, 0x10, 0x0C, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x3B, 0x0A, 0x0C, 
39654
  0x0D, 0x20, 0x0A, 0x02, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x48, 0x0A, 0x0C, 
39655
  0x08, 0x1E, 0x0A, 0x12, 0x00, 0x2A, 0x11, 0x00, 0x00, 0x2F, 0x11, 0x01, 0x06, 0x1E, 0x0E, 0x03, 
39656
  0x00, 0x1B, 0x11, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x11, 0x01, 0x01, 0x1E, 0x0F, 0x03, 
39657
  0x00, 0x1B, 0x12, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x12, 0x01, 0x02, 0x28, 0x13, 0x00, 
39658
  0x00, 0x2D, 0x14, 0x00, 0x20, 0x33, 0x10, 0x13, 0x14, 0x32, 0x11, 0x12, 0x00, 0x2D, 0x14, 0x00, 
39659
  0x15, 0x35, 0x13, 0x14, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x48, 0x11, 0x0C, 0x09, 0x1E, 0x11, 0x0E, 
39660
  0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x12, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x12, 0x01, 
39661
  0x01, 0x1E, 0x0F, 0x03, 0x00, 0x1B, 0x13, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x13, 0x01, 
39662
  0x02, 0x2D, 0x14, 0x00, 0x20, 0x33, 0x10, 0x0D, 0x14, 0x32, 0x12, 0x13, 0x00, 0x2D, 0x15, 0x00, 
39663
  0x17, 0x35, 0x14, 0x15, 0x00, 0x49, 0x0B, 0x04, 0x0B, 0x1C, 0xCE, 0xFF, 0xFF, 0x2D, 0x03, 0x01, 
39664
  0x06, 0x1E, 0x03, 0x29, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x35, 0x03, 0x04, 
39665
  0x00, 0x2C, 0x05, 0x08, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x08, 0x00, 0x2D, 0x03, 0x01, 
39666
  0x05, 0x2D, 0x05, 0x00, 0x0F, 0x33, 0x02, 0x03, 0x05, 0x2D, 0x03, 0x00, 0x20, 0x31, 0x03, 0x00, 
39667
  0x00, 0x2D, 0x03, 0x00, 0x1B, 0x36, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x01, 
39668
  0x06, 0x2C, 0x05, 0x09, 0x00, 0x3A, 0x03, 0x02, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x2C, 0x06, 0x0A, 
39669
  0x00, 0x3A, 0x03, 0x02, 0x06, 0x1B, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x3A, 0x03, 0x02, 
39670
  0x07, 0x1B, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x0C, 0x00, 0x3A, 0x03, 0x02, 0x08, 0x1B, 0x08, 0x03, 
39671
  0x00, 0x1E, 0x08, 0x03, 0x00, 0x1B, 0x03, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x01, 
39672
  0x01, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x09, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x09, 0x01, 
39673
  0x02, 0x2D, 0x0A, 0x00, 0x20, 0x33, 0x05, 0x07, 0x0A, 0x32, 0x03, 0x09, 0x00, 0x2D, 0x0A, 0x00, 
39674
  0x15, 0x36, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x4E, 0x0B, 0x00, 
39675
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
39676
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
39677
  0x0B, 0x00, 0x0B, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0D, 0x01, 
39678
  0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0D, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0D, 0x01, 
39679
  0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
39680
  0x0D, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
39681
  0x1F, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39682
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 
39683
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x02, 0x11, 0xBF, 0xFF, 0x0F, 0x02, 0x27, 
39684
  0x00, 0x27, 0x01, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x53, 0x00, 0x53, 0x00, 0x53, 
39685
  0x00, 0x53, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0xBF, 0xFD, 
39686
  0x0F, 0x04, 0x11, 0xBF, 0xFC, 0x0F, 0x04, 0x4B, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x57, 
39687
  0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 
39688
  0xBF, 0xFA, 0x0D, 0x00, 0x0D, 0x07, 0x0B, 0x00, 0x0B, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
39689
  0x11, 0x00, 0x11, 0x00, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39690
  0x0F, 0x00, 0x0F, 0x02, 0x11, 0x00, 0x11, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
39691
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 
39692
  0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 
39693
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFA, 0x0B, 0x8A, 0x48, 0x11, 0x00, 
39694
  0x11, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 
39695
  0x05, 0x01, 0x05, 0x03, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
39696
  0xBF, 0xFF, 0x05, 0x1C, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x10, 0x00, 0x07, 0x01, 
39697
  0x07, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x66, 0x00, 0x00, 0x00, 
39698
  0xCD, 0x02, 0xFE, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x03, 0x0D, 0x01, 0x01, 0x25, 0xCE, 0x09, 
39699
  0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0xDA, 0x04, 0xD0, 0x02, 0x79, 0x69, 0xDA, 
39700
  0x80, 0xDC, 0xD8, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 
39701
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x4C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x4D, 0xBF, 0xFF, 
39702
  0x00, 0x03, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x05, 
39703
  0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 0x51, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 
39704
  0x52, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x49, 0xBF, 
39705
  0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 
39706
  0x0C, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
39707
  0x85, 0x58, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x49, 
39708
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 
39709
  0x00, 0x15, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x19, 
39710
  0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 
39711
  0x55, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x30, 0xBF, 
39712
  0xFF, 0x00, 0x22, 0xDA, 0x83, 0x1B, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 
39713
  0x0A, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x15, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x85, 
39714
  0x5C, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x85, 0x5E, 0xBF, 
39715
  0xFF, 0x00, 0x2E, 0xDA, 0x85, 0x5F, 0x00, 0x0D, 0x00, 0xDA, 0x15, 0x00, 0x0D, 0x01, 0xDA, 0x85, 
39716
  0x30, 0x00, 0x0D, 0x02, 0xDA, 0x85, 0x60, 0x05, 0x0D, 0x03, 0xDA, 0x31, 0x30, 0x03, 0x00, 0x00, 
39717
  0x2C, 0x04, 0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 
39718
  0x1B, 0x03, 0x04, 0x00, 0x2D, 0x05, 0x00, 0x0F, 0x32, 0x03, 0x05, 0x00, 0x2C, 0x06, 0x02, 0x00, 
39719
  0x35, 0x05, 0x06, 0x00, 0x28, 0x07, 0x00, 0x00, 0x37, 0x06, 0x03, 0x07, 0x03, 0x06, 0x00, 0x00, 
39720
  0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x24, 0xCE, 
39721
  0x04, 0x63, 0x6F, 0x72, 0x6F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x4C, 0xBF, 0xFF, 
39722
  0x00, 0x01, 0xDA, 0x85, 0x4D, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x04, 
39723
  0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 
39724
  0x51, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 0x53, 0xBF, 
39725
  0xFF, 0x00, 0x09, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 
39726
  0x0B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 
39727
  0x85, 0x57, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x59, 
39728
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 
39729
  0x00, 0x13, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x17, 
39730
  0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 
39731
  0x53, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x85, 0x50, 0xBF, 
39732
  0xFF, 0x00, 0x20, 0xDA, 0x85, 0x30, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x83, 0x1B, 0xBF, 0xFF, 0x00, 
39733
  0x24, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 
39734
  0x15, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x85, 0x5D, 0xBF, 
39735
  0xFF, 0x00, 0x2C, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x85, 0x5F, 0xBF, 0xFF, 0x01, 
39736
  0x00, 0xDA, 0x15, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x85, 0x30, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x85, 
39737
  0x60, 0x2D, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x01, 0x01, 0x32, 0x00, 0x01, 0x00, 0x2D, 0x00, 0x00, 
39738
  0x19, 0x36, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x7C, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
39739
  0x12, 0x00, 0x12, 0x8A, 0x7C, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 
39740
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x00, 
39741
  0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x01, 0x24, 0xCE, 
39742
  0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x04, 0xDA, 0x78, 0xBF, 0xFF, 0x00, 0x00, 
39743
  0xDA, 0x85, 0x4C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x4D, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 
39744
  0x4E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x50, 0xBF, 
39745
  0xFF, 0x00, 0x06, 0xDA, 0x85, 0x51, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 
39746
  0x08, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
39747
  0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x56, 
39748
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 
39749
  0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x11, 
39750
  0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 
39751
  0x57, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x4E, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 0x56, 0xBF, 
39752
  0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 
39753
  0x1F, 0xDA, 0x85, 0x50, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x30, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 
39754
  0x83, 0x1B, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x5B, 
39755
  0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x15, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 
39756
  0x2A, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 
39757
  0x85, 0x5F, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x85, 0x60, 0x00, 0x0F, 0x00, 0xDA, 0x85, 0x61, 0x05, 
39758
  0x0F, 0x02, 0xCF, 0x03, 0x74, 0x75, 0x70, 0x2D, 0x01, 0x00, 0x26, 0x29, 0x02, 0x00, 0x00, 0x32, 
39759
  0x01, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x2A, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2B, 
39760
  0x04, 0x00, 0x00, 0x3A, 0x03, 0x02, 0x04, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
39761
  0x04, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x03, 
39762
  0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x81, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
39763
  0x00, 0x05, 0x01, 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 
39764
  0x00, 0x05, 0x00, 0x05, 0x8A, 0x2A, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39765
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39766
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39767
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39768
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0C, 0x03, 0x00, 
39769
  0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
39770
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
39771
  0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39772
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
39773
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39774
  0x03, 0x01, 0x03, 0x00, 0x16, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
39775
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39776
  0x03, 0x02, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x03, 
39777
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x25, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 
39778
  0x1A, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x0C, 0x00, 0x0C, 
39779
  0x00, 0x0C, 0x00, 0x0C, 0x03, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0A, 
39780
  0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 
39781
  0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 
39782
  0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 0x03, 0x00, 0x03, 
39783
  0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x15, 
39784
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
39785
  0x00, 0x05, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFB, 
39786
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39787
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39788
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39789
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x09, 0x09, 0x01, 0x0D, 0x00, 
39790
  0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0xBF, 0xF5, 0x05, 0x0E, 0x09, 0x01, 0x12, 
39791
  0x00, 0x09, 0x01, 0x0F, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x01, 0x10, 
39792
  0x00, 0x09, 0x01, 0x16, 0x00, 0x16, 0x00, 0x0B, 0x01, 0x12, 0x00, 0x12, 0x00, 0x0B, 0x01, 0x15, 
39793
  0x00, 0x0D, 0x00, 0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x1D, 0xBF, 0xFE, 
39794
  0x0B, 0x03, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x0D, 0x00, 0x0D, 0x01, 
39795
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x1D, 0xBF, 0xF9, 0x09, 0xBF, 0xEA, 0x03, 0x20, 
39796
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 
39797
  0x0F, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x17, 0xBF, 
39798
  0xFE, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
39799
  0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x40, 0x80, 
39800
  0xA8, 0x8A, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x0E, 0x65, 0x78, 0x69, 0x74, 
39801
  0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5B, 0xDA, 0x84, 0x57, 0xD0, 0x0C, 0x72, 
39802
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x3C, 0x00, 0xDA, 0x80, 
39803
  0xE8, 0x00, 0x3C, 0x01, 0xDA, 0x83, 0x1A, 0x00, 0x3C, 0x02, 0xDA, 0x84, 0x2C, 0x04, 0x3C, 0x04, 
39804
  0xDA, 0x83, 0x1A, 0x0B, 0x3C, 0x05, 0xCF, 0x07, 0x6E, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x76, 0x1A, 
39805
  0x3C, 0x09, 0xCF, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x63, 0x68, 0x75, 
39806
  0x6E, 0x6B, 0x73, 0x20, 0x01, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39807
  0x03, 0x01, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 
39808
  0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 
39809
  0x05, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x3C, 0x05, 0x07, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x3C, 
39810
  0x05, 0x07, 0x04, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 
39811
  0x08, 0x05, 0x00, 0x3C, 0x05, 0x08, 0x07, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x05, 0x07, 0x00, 0x2C, 
39812
  0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2C, 
39813
  0x0A, 0x08, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x33, 0x0A, 0x04, 0x0B, 0x2C, 0x0B, 0x0A, 0x00, 0x35, 
39814
  0x0A, 0x0B, 0x00, 0x2C, 0x0C, 0x0B, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2B, 0x0D, 0x01, 0x00, 0x06, 
39815
  0x0C, 0x0D, 0x04, 0x29, 0x0D, 0x00, 0x00, 0x33, 0x05, 0x0C, 0x0D, 0x2C, 0x0E, 0x0C, 0x00, 0x3D, 
39816
  0x0E, 0x0E, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x0D, 0x00, 0x2C, 0x0E, 0x0E, 0x00, 0x33, 
39817
  0x0C, 0x05, 0x0E, 0x2C, 0x0C, 0x0F, 0x00, 0x33, 0x09, 0x0C, 0x0D, 0x43, 0x0C, 0x00, 0x00, 0x31, 
39818
  0x0C, 0x00, 0x00, 0x2C, 0x0E, 0x10, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x11, 0x00, 0x2C, 
39819
  0x0E, 0x12, 0x00, 0x33, 0x0C, 0x04, 0x0E, 0x2C, 0x0E, 0x0A, 0x00, 0x35, 0x0C, 0x0E, 0x00, 0x2C, 
39820
  0x0F, 0x0B, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x2C, 0x0F, 0x13, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x36, 
39821
  0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x09, 0x1B, 0x01, 0x0B, 
39822
  0xCE, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x63, 0x68, 0x75, 0x6E, 0x6B, 
39823
  0x73, 0xDA, 0x04, 0xD0, 0x0A, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x73, 0xD0, 
39824
  0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0xDA, 0x85, 0x3D, 0xCE, 0x06, 0x64, 0x65, 0x62, 0x75, 0x67, 
39825
  0x5B, 0xCE, 0x02, 0x5D, 0x3A, 0xDA, 0x85, 0x2C, 0xDA, 0x84, 0x60, 0xDA, 0x81, 0x28, 0xDA, 0x85, 
39826
  0x6D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xE8, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x1A, 0xBF, 
39827
  0xFF, 0x00, 0x02, 0xDA, 0x84, 0x2C, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x1A, 0xBF, 0xFF, 0x00, 
39828
  0x05, 0xDA, 0x85, 0x9A, 0x00, 0x1B, 0x00, 0xDA, 0x85, 0x62, 0x00, 0x1B, 0x01, 0xDA, 0x15, 0x00, 
39829
  0x1B, 0x02, 0xDA, 0x85, 0x9B, 0x04, 0x1B, 0x04, 0xCF, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 
39830
  0x0B, 0x1B, 0x05, 0xDA, 0x83, 0x1C, 0x16, 0x1B, 0x08, 0xCF, 0x04, 0x70, 0x72, 0x70, 0x74, 0x2C, 
39831
  0x03, 0x00, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 
39832
  0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2B, 
39833
  0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x05, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 
39834
  0x07, 0x03, 0x00, 0x2D, 0x08, 0x00, 0x04, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x07, 0x08, 0x09, 0x2C, 
39835
  0x07, 0x05, 0x00, 0x33, 0x05, 0x07, 0x04, 0x2C, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 
39836
  0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2D, 0x09, 0x00, 0x05, 0x33, 
39837
  0x08, 0x00, 0x09, 0x2C, 0x09, 0x08, 0x00, 0x36, 0x09, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xB6, 0x11, 
39838
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0C, 
39839
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
39840
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
39841
  0x00, 0x05, 0x00, 0x05, 0x8B, 0xAE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
39842
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x01, 0x03, 0x00, 
39843
  0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0x02, 
39844
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 0x03, 0x00, 
39845
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x31, 0x00, 0x31, 0x00, 0x11, 0x00, 
39846
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39847
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 
39848
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x00, 
39849
  0x00, 0x00, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xD8, 0x08, 0x65, 0x76, 
39850
  0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xCF, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xD7, 0x00, 
39851
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x08, 0x00, 
39852
  0x06, 0xCE, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xDA, 0x04, 0x00, 0x08, 0x00, 0xDA, 0x82, 
39853
  0x62, 0x00, 0x08, 0x01, 0xDA, 0x82, 0xAD, 0x00, 0x08, 0x02, 0xDA, 0x84, 0x68, 0x00, 0x08, 0x03, 
39854
  0xDA, 0x81, 0x4D, 0x00, 0x08, 0x04, 0xDA, 0x85, 0xA5, 0x01, 0x08, 0x06, 0xCF, 0x03, 0x6F, 0x6C, 
39855
  0x64, 0x3B, 0x05, 0x00, 0x01, 0x1B, 0x06, 0x05, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 0x03, 0x00, 
39856
  0x00, 0x35, 0x07, 0x02, 0x00, 0x1B, 0x08, 0x00, 0x00, 0x3C, 0x08, 0x01, 0x07, 0x03, 0x08, 0x00, 
39857
  0x00, 0x86, 0x87, 0x0C, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 
39858
  0x00, 0x03, 0xCF, 0x0A, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xD7, 0x00, 
39859
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x74, 
39860
  0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 
39861
  0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x02, 0xCE, 0x0A, 0x63, 0x6F, 0x6D, 
39862
  0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x31, 0x00, 0x02, 
39863
  0x01, 0xCF, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x30, 0x02, 0x00, 
39864
  0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x06, 
39865
  0x01, 0x03, 0xDA, 0x85, 0xAD, 0xDA, 0x04, 0xDA, 0x82, 0x51, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 
39866
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0xAE, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 
39867
  0x2D, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 
39868
  0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x1E, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x17, 0x00, 
39869
  0x17, 0x00, 0x17, 0x83, 0x1E, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xD7, 0x00, 0xCD, 0x00, 
39870
  0xDC, 0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x07, 0x37, 0x00, 0x0C, 0xCE, 0x0A, 0x74, 0x61, 0x6B, 
39871
  0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 0x00, 0xCD, 
39872
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x02, 0x11, 0x00, 0x07, 0xCE, 0x10, 0x74, 0x61, 
39873
  0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 
39874
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x02, 0x03, 0x00, 0x10, 0x00, 0x07, 0xCE, 
39875
  0x0A, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0xDA, 0x04, 0x00, 0x10, 0x00, 
39876
  0xDA, 0x82, 0x1A, 0x00, 0x10, 0x01, 0xDA, 0x33, 0x00, 0x10, 0x02, 0xCF, 0x04, 0x64, 0x66, 0x6C, 
39877
  0x74, 0x00, 0x10, 0x03, 0xCF, 0x0A, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 
39878
  0x00, 0x10, 0x04, 0xDA, 0x3A, 0x01, 0x10, 0x05, 0xDA, 0x39, 0x08, 0x0F, 0x07, 0xDA, 0x82, 0x1E, 
39879
  0x28, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x07, 0x00, 0x00, 
39880
  0x25, 0x06, 0x04, 0x07, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 0x06, 0x01, 0x04, 
39881
  0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x03, 0x00, 
39882
  0x1B, 0x05, 0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 
39883
  0x84, 0x87, 0x03, 0x01, 0x03, 0x02, 0x0C, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x13, 0x01, 
39884
  0x0F, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x07, 0xBF, 0xFA, 0x03, 
39885
  0xBF, 0xFB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x03, 
39886
  0x00, 0x02, 0xCE, 0x04, 0x6E, 0x69, 0x6C, 0x3F, 0xDA, 0x04, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 
39887
  0x03, 0x01, 0xCF, 0x04, 0x6E, 0x69, 0x6C, 0x3F, 0x28, 0x03, 0x00, 0x00, 0x25, 0x02, 0x00, 0x03, 
39888
  0x03, 0x02, 0x00, 0x00, 0x75, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x11, 0x00, 0xDA, 0x31, 0x00, 
39889
  0x11, 0x01, 0xDA, 0x82, 0x1A, 0x00, 0x11, 0x02, 0xDA, 0x33, 0x00, 0x11, 0x03, 0xCF, 0x10, 0x74, 
39890
  0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x01, 
39891
  0x11, 0x05, 0xDA, 0x37, 0x05, 0x11, 0x07, 0xDA, 0x43, 0x0D, 0x11, 0x09, 0xDA, 0x36, 0x3F, 0x04, 
39892
  0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 
39893
  0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 
39894
  0x0A, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x08, 
39895
  0x07, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x33, 0x02, 0x0A, 0x09, 0x36, 0x00, 
39896
  0x00, 0x00, 0x84, 0xC9, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 
39897
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 
39898
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x3C, 0xDA, 0x3D, 0xDA, 0x83, 0x37, 0xDA, 0x30, 0x00, 0x37, 
39899
  0x00, 0xDA, 0x82, 0x1A, 0x00, 0x37, 0x01, 0xDA, 0x33, 0x00, 0x37, 0x02, 0xCF, 0x0A, 0x74, 0x61, 
39900
  0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x15, 0x25, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39901
  0x30, 0x30, 0x32, 0x35, 0x15, 0x24, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x37, 
39902
  0x18, 0x24, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x36, 0x1B, 0x24, 0x09, 0xDA, 
39903
  0x43, 0x1C, 0x24, 0x0A, 0xDA, 0x1E, 0x26, 0x37, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39904
  0x32, 0x38, 0x26, 0x36, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x61, 0x29, 0x36, 
39905
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x39, 0x2C, 0x36, 0x09, 0xDA, 0x1E, 0x31, 
39906
  0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 
39907
  0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 
39908
  0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 
39909
  0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 
39910
  0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x12, 0x00, 0x44, 
39911
  0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x06, 0x01, 0x08, 0x1B, 
39912
  0x08, 0x06, 0x00, 0x1F, 0x08, 0x0B, 0x00, 0x3A, 0x06, 0x01, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x1B, 
39913
  0x0A, 0x06, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 
39914
  0x04, 0x00, 0x00, 0x3C, 0x07, 0x09, 0x0A, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 
39915
  0x07, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 
39916
  0x06, 0x01, 0x08, 0x1B, 0x08, 0x06, 0x00, 0x1F, 0x08, 0x0C, 0x00, 0x3A, 0x06, 0x01, 0x08, 0x1B, 
39917
  0x09, 0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 
39918
  0x06, 0x00, 0x00, 0x32, 0x07, 0x09, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x35, 0x06, 0x0A, 0x00, 0x49, 
39919
  0x08, 0x01, 0x08, 0x1C, 0xF5, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x84, 0xD2, 0x05, 0x00, 0x05, 
39920
  0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 
39921
  0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 
39922
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x03, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 
39923
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x38, 0x00, 0x38, 0x00, 0x17, 0x00, 
39924
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39925
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x05, 0x00, 
39926
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 
39927
  0xDA, 0x82, 0x1A, 0x00, 0x06, 0x01, 0xDA, 0x33, 0x00, 0x06, 0x02, 0xDA, 0x85, 0xA9, 0x31, 0x00, 
39928
  0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 
39929
  0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x84, 0xDB, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 
39930
  0x03, 0x00, 0x03, 0xCF, 0x06, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 
39931
  0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x1D, 0x00, 0x01, 0x06, 0xCE, 
39932
  0x06, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0xDA, 0x04, 0xDA, 0x82, 0x65, 0xCE, 0x20, 0x61, 0x72, 
39933
  0x67, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x65, 
39934
  0x76, 0x65, 0x6E, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x25, 0x6E, 0xDA, 0x81, 
39935
  0x49, 0xDA, 0x29, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x17, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 
39936
  0xFF, 0xFF, 0x02, 0x80, 0xA9, 0x00, 0x2A, 0xCE, 0x06, 0x6D, 0x61, 0x70, 0x63, 0x61, 0x74, 0xDA, 
39937
  0x04, 0xDA, 0x82, 0xB1, 0xDA, 0x2F, 0x00, 0x80, 0xA9, 0x00, 0xDA, 0x31, 0x00, 0x80, 0xA9, 0x01, 
39938
  0xDA, 0x33, 0x00, 0x80, 0xA9, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xA9, 0x03, 0xCF, 0x06, 0x6D, 
39939
  0x61, 0x70, 0x63, 0x61, 0x74, 0x01, 0x80, 0xA9, 0x05, 0xDA, 0x7E, 0x03, 0x80, 0xA8, 0x07, 0xDA, 
39940
  0x81, 0xFC, 0x03, 0x80, 0xA8, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x70, 0x05, 
39941
  0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x72, 0x08, 0x13, 0x09, 0xCF, 0x07, 
39942
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x71, 0x0B, 0x13, 0x0A, 0xDA, 0x1E, 0x17, 0x2C, 0x0A, 0xDA, 
39943
  0x82, 0x00, 0x18, 0x2C, 0x09, 0xDA, 0x82, 0x01, 0x18, 0x2C, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39944
  0x30, 0x30, 0x31, 0x74, 0x1B, 0x2C, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x73, 
39945
  0x1E, 0x2C, 0x0D, 0xDA, 0x1E, 0x30, 0x4E, 0x0B, 0xDA, 0x82, 0x00, 0x32, 0x4E, 0x0C, 0xDA, 0x82, 
39946
  0x04, 0x33, 0x4E, 0x0A, 0xDA, 0x82, 0x01, 0x34, 0x4E, 0x0D, 0xDA, 0x82, 0x05, 0x34, 0x4E, 0x01, 
39947
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x76, 0x37, 0x4E, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 
39948
  0x30, 0x30, 0x30, 0x31, 0x75, 0x3A, 0x4E, 0x10, 0xDA, 0x1E, 0x52, 0x7A, 0x0C, 0xDA, 0x82, 0x00, 
39949
  0x54, 0x7A, 0x0D, 0xDA, 0x82, 0x04, 0x56, 0x7A, 0x0E, 0xDA, 0x82, 0x08, 0x57, 0x7A, 0x0B, 0xDA, 
39950
  0x82, 0x01, 0x58, 0x7A, 0x0F, 0xDA, 0x82, 0x05, 0x59, 0x7A, 0x10, 0xDA, 0x82, 0x09, 0x59, 0x7A, 
39951
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x78, 0x5C, 0x7A, 0x12, 0xCF, 0x07, 0x5F, 
39952
  0x30, 0x30, 0x30, 0x30, 0x31, 0x77, 0x5F, 0x7A, 0x13, 0xDA, 0x1E, 0x7E, 0x80, 0xA8, 0x0C, 0xDA, 
39953
  0x82, 0x0C, 0x80, 0x82, 0x80, 0xA8, 0x0D, 0xDA, 0x82, 0x0D, 0x80, 0x83, 0x80, 0xA8, 0x0B, 0xDA, 
39954
  0x82, 0x0E, 0x80, 0x83, 0x80, 0xA8, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x7A, 
39955
  0x80, 0x86, 0x80, 0xA8, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x79, 0x80, 0x89, 
39956
  0x80, 0xA8, 0x10, 0xDA, 0x1E, 0x80, 0x8A, 0x80, 0x9E, 0x0E, 0xDA, 0x43, 0x80, 0x8A, 0x80, 0x9E, 
39957
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x41, 0x80, 0x8E, 0x80, 0x9C, 0x13, 0xDA, 
39958
  0x82, 0x12, 0x80, 0x90, 0x80, 0x9C, 0x14, 0xDA, 0x82, 0x13, 0x80, 0x92, 0x80, 0x9C, 0x15, 0xDA, 
39959
  0x82, 0x14, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3F, 0x06, 0x02, 0x00, 0x1B, 0x07, 
39960
  0x06, 0x00, 0x26, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x0F, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 
39961
  0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 0x0A, 0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 
39962
  0x08, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 0x00, 0x32, 0x05, 0x08, 0x00, 0x2C, 0x0C, 
39963
  0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x49, 0x09, 0x01, 0x09, 0x1C, 0xF7, 0xFF, 0xFF, 0x1C, 0x95, 
39964
  0x00, 0x00, 0x26, 0x08, 0x07, 0x01, 0x1E, 0x08, 0x18, 0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 
39965
  0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0C, 0x1B, 0x0C, 
39966
  0x0B, 0x00, 0x1F, 0x0C, 0x10, 0x00, 0x3A, 0x0B, 0x01, 0x0C, 0x1B, 0x0D, 0x0B, 0x00, 0x49, 0x09, 
39967
  0x0A, 0x09, 0x28, 0x0E, 0x00, 0x00, 0x25, 0x0B, 0x0E, 0x09, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x09, 
39968
  0x00, 0x00, 0x3A, 0x0B, 0x0A, 0x09, 0x32, 0x0D, 0x0B, 0x00, 0x35, 0x0E, 0x00, 0x00, 0x32, 0x05, 
39969
  0x0E, 0x00, 0x2C, 0x0F, 0x00, 0x00, 0x35, 0x0B, 0x0F, 0x00, 0x49, 0x0C, 0x01, 0x0C, 0x1C, 0xF1, 
39970
  0xFF, 0xFF, 0x1C, 0x7C, 0x00, 0x00, 0x26, 0x09, 0x07, 0x02, 0x1E, 0x09, 0x21, 0x00, 0x3D, 0x0A, 
39971
  0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0A, 
39972
  0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 
39973
  0x0E, 0x00, 0x1F, 0x0F, 0x16, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x49, 0x0A, 
39974
  0x0B, 0x0A, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0A, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0F, 
39975
  0x00, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0D, 0x1E, 0x0E, 
39976
  0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x3A, 0x0E, 0x0B, 0x0A, 0x3A, 0x11, 0x0C, 0x0D, 0x33, 0x10, 
39977
  0x0E, 0x11, 0x35, 0x12, 0x00, 0x00, 0x32, 0x05, 0x12, 0x00, 0x2C, 0x11, 0x00, 0x00, 0x35, 0x0E, 
39978
  0x11, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xEB, 0xFF, 0xFF, 0x1C, 0x5A, 0x00, 0x00, 0x26, 0x0A, 
39979
  0x07, 0x03, 0x1E, 0x0A, 0x2B, 0x00, 0x3D, 0x0B, 0x02, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x3D, 0x0B, 
39980
  0x02, 0x01, 0x1B, 0x0D, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x02, 0x1B, 0x0E, 0x0B, 0x00, 0x28, 0x0B, 
39981
  0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x28, 0x12, 0x00, 0x00, 0x49, 0x11, 
39982
  0x01, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1F, 0x12, 0x1D, 0x00, 0x3A, 0x11, 0x01, 0x12, 0x1B, 0x13, 
39983
  0x11, 0x00, 0x49, 0x0B, 0x0C, 0x0B, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0B, 0x1E, 0x11, 
39984
  0x02, 0x00, 0x1C, 0x16, 0x00, 0x00, 0x49, 0x0F, 0x0D, 0x0F, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 
39985
  0x14, 0x0F, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x49, 0x10, 0x0E, 0x10, 0x28, 0x14, 
39986
  0x00, 0x00, 0x25, 0x11, 0x14, 0x10, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x11, 
39987
  0x0C, 0x0B, 0x3A, 0x14, 0x0D, 0x0F, 0x3A, 0x15, 0x0E, 0x10, 0x33, 0x13, 0x11, 0x14, 0x31, 0x15, 
39988
  0x00, 0x00, 0x35, 0x16, 0x00, 0x00, 0x32, 0x05, 0x16, 0x00, 0x2C, 0x14, 0x00, 0x00, 0x35, 0x11, 
39989
  0x14, 0x00, 0x49, 0x12, 0x01, 0x12, 0x1C, 0xE4, 0xFF, 0xFF, 0x1C, 0x2E, 0x00, 0x00, 0x31, 0x07, 
39990
  0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x07, 
39991
  0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x2A, 0x0B, 
39992
  0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 
39993
  0x21, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x2B, 0x0E, 0x00, 0x00, 0x23, 0x11, 
39994
  0x0E, 0x07, 0x1E, 0x11, 0x12, 0x00, 0x3A, 0x12, 0x0C, 0x0E, 0x1B, 0x13, 0x12, 0x00, 0x3A, 0x12, 
39995
  0x02, 0x0E, 0x1B, 0x14, 0x12, 0x00, 0x49, 0x12, 0x14, 0x13, 0x1B, 0x15, 0x12, 0x00, 0x28, 0x16, 
39996
  0x00, 0x00, 0x25, 0x12, 0x16, 0x15, 0x1E, 0x12, 0x04, 0x00, 0x29, 0x0B, 0x00, 0x00, 0x1C, 0x07, 
39997
  0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0C, 0x0E, 0x15, 0x3A, 0x16, 0x14, 0x15, 0x3C, 0x0D, 
39998
  0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x09, 
39999
  0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x34, 0x0D, 0x00, 0x00, 0x35, 0x0E, 0x00, 0x00, 0x32, 0x05, 
40000
  0x0E, 0x00, 0x2C, 0x12, 0x00, 0x00, 0x35, 0x11, 0x12, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xE0, 
40001
  0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x58, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
40002
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40003
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40004
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40005
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40006
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40007
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40008
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40009
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40010
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40011
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40012
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40013
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40014
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40015
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40016
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40017
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40018
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40019
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40020
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40021
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40022
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF4, 0x01, 0xDA, 0x81, 0x28, 0xD7, 0x00, 0xCD, 
40023
  0x00, 0xDD, 0x00, 0x00, 0x13, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0C, 0x38, 0x00, 0x0E, 
40024
  0xCE, 0x07, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
40025
  0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x03, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x63, 0x75, 0x72, 0x65, 
40026
  0x6E, 0x76, 0xDA, 0x04, 0xDA, 0x83, 0x53, 0xDA, 0x83, 0x54, 0xDA, 0x83, 0x55, 0x00, 0x14, 0x00, 
40027
  0xDA, 0x32, 0x00, 0x14, 0x01, 0xCF, 0x06, 0x63, 0x75, 0x72, 0x65, 0x6E, 0x76, 0x05, 0x14, 0x02, 
40028
  0xDA, 0x83, 0x61, 0x07, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x30, 0x2C, 
40029
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 
40030
  0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x22, 
40031
  0x05, 0x04, 0x00, 0x1E, 0x05, 0x0A, 0x00, 0x28, 0x07, 0x00, 0x00, 0x25, 0x06, 0x07, 0x02, 0x1E, 
40032
  0x06, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 
40033
  0x02, 0x06, 0x00, 0x07, 0x04, 0x04, 0x01, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x89, 
40034
  0xF9, 0x18, 0x00, 0x18, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x09, 
40035
  0x00, 0x09, 0x00, 0x09, 0x00, 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 0x21, 0x00, 0x31, 0x00, 0x31, 
40036
  0x00, 0x31, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFB, 0x01, 0xDA, 0x82, 0xC2, 0xD0, 0x04, 0x6F, 0x6E, 
40037
  0x6C, 0x79, 0xD0, 0x02, 0x61, 0x73, 0xD0, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0xD0, 0x06, 
40038
  0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0xDA, 0x81, 0xAE, 0xDA, 0x81, 0x1E, 0xDA, 0x81, 0x28, 0xDA, 
40039
  0x82, 0xE8, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x11, 0x05, 0x02, 0x05, 
40040
  0x06, 0x35, 0x00, 0x0D, 0xCE, 0x0C, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 
40041
  0x6C, 0x65, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x00, 
40042
  0x0C, 0x00, 0x06, 0xCE, 0x06, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 0xDA, 0x04, 0x00, 0x0C, 0x00, 
40043
  0xDA, 0x82, 0x62, 0x00, 0x0C, 0x01, 0xCF, 0x06, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x01, 0x0C, 
40044
  0x03, 0xDA, 0x39, 0x01, 0x0B, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x55, 0x04, 
40045
  0x0B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x54, 0x06, 0x0B, 0x04, 0xDA, 0x3A, 
40046
  0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 
40047
  0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x3A, 0x06, 0x00, 0x04, 
40048
  0x3C, 0x03, 0x06, 0x04, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xFB, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 
40049
  0x86, 0x3B, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
40050
  0x0E, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x82, 0x95, 0xD0, 0x07, 
40051
  0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0xDA, 0x82, 0x51, 0xDA, 0x81, 0x9C, 0xDA, 0x83, 0xC8, 
40052
  0x00, 0x35, 0x00, 0xCF, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x35, 0x01, 0xDA, 0x85, 
40053
  0x72, 0x00, 0x35, 0x02, 0xCF, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x00, 0x35, 0x03, 0xCF, 
40054
  0x06, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x35, 0x04, 0xCF, 0x04, 0x6F, 0x6E, 0x6C, 0x79, 
40055
  0x00, 0x35, 0x05, 0xCF, 0x0C, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
40056
  0x65, 0x07, 0x35, 0x07, 0xCF, 0x08, 0x6F, 0x6E, 0x6C, 0x79, 0x2D, 0x73, 0x65, 0x74, 0x07, 0x34, 
40057
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x45, 0x0A, 0x34, 0x09, 0xCF, 0x07, 0x5F, 
40058
  0x30, 0x30, 0x30, 0x30, 0x35, 0x44, 0x0D, 0x34, 0x0A, 0xDA, 0x3A, 0x0E, 0x34, 0x0B, 0xDA, 0x46, 
40059
  0x1D, 0x23, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x46, 0x2D, 0x32, 0x0E, 0xDA, 
40060
  0x83, 0x74, 0x1E, 0x04, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 
40061
  0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x1B, 0x07, 
40062
  0x06, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 
40063
  0x29, 0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x09, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x31, 0x0A, 
40064
  0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x08, 0x0C, 0x00, 0x1E, 0x08, 0x20, 0x00, 0x2C, 0x0C, 
40065
  0x02, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x35, 0x0C, 0x0B, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x0E, 
40066
  0x03, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1E, 0x0D, 0x19, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x0E, 
40067
  0x03, 0x00, 0x35, 0x0C, 0x0E, 0x00, 0x1B, 0x0E, 0x0C, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0C, 
40068
  0x0E, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x3A, 0x0F, 0x07, 0x0A, 0x1B, 0x0C, 0x0F, 0x00, 0x1E, 0x0C, 
40069
  0x0F, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x2C, 0x0F, 
40070
  0x02, 0x00, 0x32, 0x0F, 0x0E, 0x00, 0x44, 0x0E, 0x00, 0x00, 0x32, 0x0E, 0x0B, 0x00, 0x2C, 0x10, 
40071
  0x04, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x0E, 0x0F, 0x00, 0x32, 0x02, 0x0A, 0x00, 0x2C, 0x10, 
40072
  0x05, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x3C, 0x00, 0x0F, 0x0E, 0x49, 0x09, 0x01, 0x09, 0x1C, 0xD8, 
40073
  0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x8C, 0x52, 0x11, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
40074
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40075
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x03, 0x00, 0x3B, 0x00, 
40076
  0x3B, 0x00, 0x3B, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x03, 0x00, 0x53, 0x00, 0x53, 0x00, 
40077
  0x53, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x5E, 0x00, 0x4F, 0x00, 0x03, 0x01, 
40078
  0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
40079
  0x0F, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 
40080
  0xBF, 0xF9, 0x01, 0x00, 0x38, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x38, 0x01, 0xDA, 0x81, 0x4D, 0x00, 
40081
  0x38, 0x02, 0xCF, 0x07, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0x02, 0x38, 0x04, 0xDA, 0x83, 
40082
  0x49, 0x06, 0x38, 0x06, 0xCF, 0x05, 0x6B, 0x61, 0x72, 0x67, 0x73, 0x09, 0x38, 0x08, 0xDA, 0x85, 
40083
  0xEA, 0x0C, 0x38, 0x09, 0xDA, 0x80, 0x84, 0x0F, 0x38, 0x0A, 0xDA, 0x85, 0xE8, 0x12, 0x38, 0x0B, 
40084
  0xCF, 0x02, 0x65, 0x70, 0x16, 0x38, 0x0C, 0xDA, 0x81, 0x9F, 0x16, 0x1F, 0x09, 0xCF, 0x07, 0x5F, 
40085
  0x30, 0x30, 0x30, 0x30, 0x35, 0x49, 0x1F, 0x33, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40086
  0x35, 0x48, 0x22, 0x32, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x47, 0x33, 0x38, 
40087
  0x0E, 0xDA, 0x85, 0xE8, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 
40088
  0x34, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 
40089
  0x2C, 0x08, 0x02, 0x00, 0x3A, 0x07, 0x06, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x03, 0x00, 
40090
  0x3A, 0x07, 0x06, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x3A, 0x07, 0x06, 0x0A, 
40091
  0x1B, 0x0A, 0x07, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x3A, 0x07, 0x06, 0x0B, 0x1B, 0x0B, 0x07, 0x00, 
40092
  0x33, 0x00, 0x01, 0x06, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x07, 0x0C, 0x00, 0x1B, 0x0C, 0x07, 0x00, 
40093
  0x1E, 0x09, 0x07, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x32, 0x09, 0x0E, 0x00, 0x2C, 0x0F, 0x08, 0x00, 
40094
  0x35, 0x0E, 0x0F, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0D, 0x09, 0x00, 
40095
  0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x11, 0x00, 0x00, 
40096
  0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x0F, 0x0A, 0x00, 0x1C, 0x0D, 0x00, 0x00, 0x2C, 0x10, 0x07, 0x00, 
40097
  0x32, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x35, 0x10, 0x11, 0x00, 0x31, 0x10, 0x00, 0x00, 
40098
  0x2C, 0x12, 0x0A, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x32, 0x11, 0x10, 0x00, 
40099
  0x2C, 0x12, 0x08, 0x00, 0x35, 0x10, 0x12, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 
40100
  0x1B, 0x0E, 0x0D, 0x00, 0x33, 0x04, 0x0C, 0x0E, 0x32, 0x0B, 0x08, 0x00, 0x2C, 0x0F, 0x0B, 0x00, 
40101
  0x36, 0x0F, 0x00, 0x00, 0x8C, 0x5C, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 
40102
  0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40103
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x0F, 0x00, 0x0F, 0x00, 
40104
  0x0F, 0x00, 0x03, 0x02, 0x11, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 
40105
  0x11, 0x00, 0x11, 0xBF, 0xFF, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40106
  0x00, 0x0F, 0x03, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
40107
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFD, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x04, 
40108
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0xB5, 0x00, 0x1D, 0x00, 0xDA, 0x81, 0x22, 
40109
  0x00, 0x1D, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x1D, 0x02, 0xDA, 0x85, 0xC2, 0x04, 0x0B, 0x03, 0xCF, 
40110
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4A, 0x0F, 0x1D, 0x04, 0xCF, 0x02, 0x70, 0x73, 0x14, 
40111
  0x1D, 0x05, 0xCF, 0x04, 0x61, 0x72, 0x67, 0x6D, 0x3F, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 
40112
  0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x02, 0x00, 
40113
  0x1C, 0x05, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 
40114
  0x35, 0x04, 0x05, 0x00, 0x2B, 0x03, 0x02, 0x00, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x03, 0x00, 
40115
  0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x00, 0x00, 0x32, 0x05, 0x04, 0x00, 
40116
  0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 
40117
  0x2C, 0x08, 0x05, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x32, 0x08, 0x07, 0x00, 
40118
  0x34, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x36, 0x08, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 
40119
  0x00, 0x08, 0x01, 0x01, 0x01, 0x08, 0x26, 0x00, 0x04, 0xDA, 0x04, 0xDA, 0x83, 0x4D, 0xDA, 0x1C, 
40120
  0xCE, 0x1C, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
40121
  0x72, 0x64, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0x25, 0x73, 0x3A, 0x20, 0x25, 0x6E, 0xDA, 0x81, 
40122
  0x49, 0xDA, 0x85, 0xDC, 0xDA, 0x81, 0x28, 0xDA, 0x85, 0xDB, 0xDA, 0x82, 0x98, 0x01, 0x26, 0x02, 
40123
  0xDA, 0x3A, 0x03, 0x26, 0x03, 0xDA, 0x46, 0x07, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40124
  0x30, 0x35, 0x4B, 0x10, 0x23, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4C, 0x3D, 
40125
  0x01, 0x00, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x01, 0x1B, 0x03, 0x01, 0x00, 0x31, 
40126
  0x02, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x1E, 
40127
  0x01, 0x02, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 
40128
  0x00, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x04, 0x00, 0x02, 0x2C, 0x05, 0x03, 0x00, 0x35, 
40129
  0x04, 0x05, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x25, 0x01, 0x02, 0x04, 0x1E, 0x01, 0x06, 0x00, 0x31, 
40130
  0x03, 0x00, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x00, 0x04, 0x00, 0x1C, 
40131
  0x0B, 0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x25, 0x05, 0x02, 0x06, 0x1E, 0x05, 0x06, 0x00, 0x2C, 
40132
  0x07, 0x07, 0x00, 0x32, 0x07, 0x03, 0x00, 0x45, 0x06, 0x00, 0x00, 0x1B, 0x04, 0x06, 0x00, 0x1C, 
40133
  0x02, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1B, 0x00, 0x04, 0x00, 0x32, 0x02, 0x00, 0x00, 0x45, 
40134
  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8C, 0x77, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
40135
  0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x44, 0x00, 0x44, 
40136
  0x00, 0x44, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 
40137
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
40138
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0F, 
40139
  0x00, 0x0F, 0x00, 0x0F, 0x8C, 0x74, 0x13, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x00, 
40140
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
40141
  0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x0D, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 
40142
  0x05, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40143
  0xCF, 0x0D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0xDA, 
40144
  0x83, 0x53, 0xDA, 0x82, 0xD4, 0xDA, 0x82, 0xCF, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 
40145
  0x78, 0x70, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0xCF, 0x0C, 0x66, 0x69, 
40146
  0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x80, 0xDE, 0xCF, 0x06, 0x74, 
40147
  0x61, 0x62, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x02, 0x02, 0xCD, 
40148
  0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x17, 0x00, 0x05, 0xCE, 0x06, 0x74, 0x61, 0x62, 0x73, 0x65, 0x71, 
40149
  0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xB1, 0xDA, 0x83, 0xEA, 
40150
  0x00, 0x17, 0x00, 0xDA, 0x84, 0x1D, 0x00, 0x17, 0x01, 0xCF, 0x08, 0x6B, 0x65, 0x79, 0x2D, 0x62, 
40151
  0x6F, 0x64, 0x79, 0x00, 0x17, 0x02, 0xCF, 0x0A, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2D, 0x62, 0x6F, 
40152
  0x64, 0x79, 0x00, 0x17, 0x03, 0xDA, 0x86, 0x00, 0x02, 0x17, 0x05, 0xCF, 0x06, 0x24, 0x61, 0x63, 
40153
  0x63, 0x75, 0x6D, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x44, 
40154
  0x06, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x33, 0x08, 0x05, 0x06, 0x45, 0x07, 0x00, 0x00, 0x2C, 
40155
  0x08, 0x02, 0x00, 0x31, 0x08, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 
40156
  0x09, 0x03, 0x00, 0x33, 0x09, 0x05, 0x01, 0x31, 0x06, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x2C, 
40157
  0x09, 0x04, 0x00, 0x33, 0x09, 0x00, 0x08, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x33, 
40158
  0x09, 0x07, 0x06, 0x31, 0x05, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x82, 
40159
  0xB1, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40160
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40161
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 
40162
  0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40163
  0x00, 0x0B, 0x03, 0x03, 0x03, 0x01, 0x11, 0x00, 0x09, 0xCE, 0x0A, 0x61, 0x63, 0x63, 0x75, 0x6D, 
40164
  0x75, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x11, 0x00, 0xDA, 0x31, 0x00, 0x11, 
40165
  0x01, 0xDA, 0x83, 0xBF, 0x00, 0x11, 0x02, 0xDA, 0x33, 0x00, 0x11, 0x03, 0xDA, 0x86, 0x06, 0x00, 
40166
  0x11, 0x04, 0xDA, 0x7E, 0x02, 0x11, 0x06, 0xDA, 0x39, 0x02, 0x10, 0x02, 0xCF, 0x07, 0x5F, 0x30, 
40167
  0x30, 0x30, 0x30, 0x30, 0x5A, 0x05, 0x10, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
40168
  0x59, 0x08, 0x10, 0x09, 0xDA, 0x1E, 0x1B, 0x04, 0x01, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 
40169
  0x05, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x02, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 
40170
  0x0A, 0x00, 0x3A, 0x07, 0x02, 0x08, 0x1B, 0x09, 0x07, 0x00, 0x32, 0x04, 0x09, 0x00, 0x35, 0x04, 
40171
  0x00, 0x00, 0x32, 0x06, 0x04, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x07, 0x0A, 0x00, 0x49, 0x08, 
40172
  0x02, 0x08, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x83, 0xFA, 0x03, 0x01, 0x03, 0x00, 
40173
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x28, 0x00, 
40174
  0x28, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 0xDA, 0x83, 
40175
  0x90, 0xDA, 0x83, 0x8E, 0xCF, 0x05, 0x6D, 0x65, 0x72, 0x67, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
40176
  0x00, 0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x14, 0x00, 0x09, 0xCE, 0x05, 
40177
  0x6D, 0x65, 0x72, 0x67, 0x65, 0xDA, 0x04, 0x00, 0x14, 0x00, 0xDA, 0x85, 0x07, 0x00, 0x14, 0x01, 
40178
  0xDA, 0x86, 0x0B, 0x01, 0x14, 0x03, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x65, 
40179
  0x72, 0x01, 0x13, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x36, 0x04, 0x13, 0x05, 
40180
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x35, 0x07, 0x13, 0x06, 0xDA, 0x83, 0x1C, 0x07, 
40181
  0x11, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x34, 0x0A, 0x11, 0x07, 0xCF, 0x07, 
40182
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x33, 0x0C, 0x11, 0x04, 0xDA, 0x82, 0xAD, 0x44, 0x02, 0x00, 
40183
  0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 
40184
  0x00, 0x1F, 0x05, 0x0E, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x28, 0x07, 0x00, 
40185
  0x00, 0x49, 0x04, 0x06, 0x07, 0x1B, 0x07, 0x04, 0x00, 0x1F, 0x07, 0x06, 0x00, 0x1B, 0x04, 0x07, 
40186
  0x00, 0x3A, 0x08, 0x06, 0x04, 0x3C, 0x03, 0x04, 0x08, 0x49, 0x07, 0x06, 0x07, 0x1C, 0xFB, 0xFF, 
40187
  0xFF, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF3, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x98, 0x03, 
40188
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40189
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x18, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 
40190
  0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xCF, 0x03, 0x6D, 0x6F, 0x64, 0xD7, 0x00, 0xCD, 
40191
  0x00, 0x09, 0x00, 0x1D, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x03, 
40192
  0x6D, 0x6F, 0x64, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
40193
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
40194
  0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0E, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
40195
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0E, 0x03, 0x03, 0x04, 0x05, 
40196
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 
40197
  0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 
40198
  0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 
40199
  0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xD8, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 
40200
  0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xCF, 0x08, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 
40201
  0x6B, 0xD7, 0x00, 0xCD, 0x03, 0xFF, 0x00, 0x00, 0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
40202
  0x0A, 0x26, 0x00, 0x01, 0x06, 0xCE, 0x08, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0xDA, 
40203
  0x04, 0xDA, 0x81, 0xB6, 0xDA, 0x83, 0x9A, 0xDA, 0x80, 0xD2, 0xDA, 0x81, 0x8D, 0xDA, 0x80, 0xDC, 
40204
  0xDA, 0x80, 0xDE, 0xDA, 0x0E, 0xDA, 0x81, 0x6E, 0xDA, 0x84, 0xDD, 0xDA, 0x85, 0x04, 0x00, 0x26, 
40205
  0x00, 0xDA, 0x81, 0x22, 0x00, 0x26, 0x01, 0xCF, 0x06, 0x6B, 0x77, 0x61, 0x72, 0x67, 0x73, 0x00, 
40206
  0x26, 0x02, 0xDA, 0x86, 0x1A, 0x04, 0x26, 0x04, 0xCF, 0x0C, 0x6F, 0x6C, 0x64, 0x2D, 0x6D, 0x6F, 
40207
  0x64, 0x63, 0x61, 0x63, 0x68, 0x65, 0x0E, 0x1D, 0x06, 0xDA, 0x31, 0x11, 0x1D, 0x08, 0xDA, 0x83, 
40208
  0x61, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 
40209
  0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 
40210
  0x00, 0x35, 0x05, 0x06, 0x00, 0x30, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x32, 0x06, 0x07, 
40211
  0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x28, 0x08, 0x00, 
40212
  0x00, 0x37, 0x07, 0x06, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x05, 
40213
  0x00, 0x35, 0x07, 0x09, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x25, 0x09, 0x07, 0x0A, 0x1E, 0x09, 0x06, 
40214
  0x00, 0x2C, 0x07, 0x07, 0x00, 0x33, 0x06, 0x08, 0x07, 0x2C, 0x0A, 0x08, 0x00, 0x35, 0x07, 0x0A, 
40215
  0x00, 0x1C, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x02, 
40216
  0x00, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x32, 0x07, 0x04, 0x00, 0x2C, 0x08, 0x09, 
40217
  0x00, 0x35, 0x07, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 
40218
  0x00, 0x00, 0x04, 0x0B, 0x01, 0x04, 0xDA, 0x81, 0x99, 0xDA, 0x04, 0xDA, 0x82, 0xBC, 0xDA, 0x85, 
40219
  0x25, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x04, 0x04, 0x04, 0x10, 0x50, 0x00, 0x0B, 
40220
  0xCE, 0x12, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0x75, 
40221
  0x61, 0x74, 0x6F, 0x72, 0xDA, 0x04, 0xDA, 0x83, 0x16, 0xD5, 0x0C, 0xCF, 0x05, 0x64, 0x65, 0x66, 
40222
  0x6E, 0x2D, 0xCB, 0xCF, 0x04, 0x76, 0x61, 0x72, 0x2D, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
40223
  0x04, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x0B, 0x69, 0x73, 0x2D, 0x73, 0x61, 0x66, 
40224
  0x65, 0x2D, 0x64, 0x65, 0x66, 0xDA, 0x04, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40225
  0x00, 0x09, 0x01, 0x01, 0x01, 0x08, 0x2B, 0x00, 0x03, 0xCE, 0x0F, 0x6E, 0x6F, 0x2D, 0x73, 0x69, 
40226
  0x64, 0x65, 0x2D, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0xDA, 0x04, 0xDA, 0x83, 0x16, 0xDA, 
40227
  0x75, 0xDA, 0x82, 0x9C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x02, 0x02, 0xCD, 0x7F, 
40228
  0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xB2, 0x00, 0x2F, 0xCE, 0x03, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 
40229
  0x2F, 0x00, 0x80, 0xB2, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xB2, 0x01, 0xDA, 0x33, 0x00, 0x80, 
40230
  0xB2, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xB2, 0x03, 0xCF, 0x03, 0x61, 0x6C, 0x6C, 0x00, 0x80, 
40231
  0xB2, 0x04, 0xDA, 0x7E, 0x02, 0x80, 0xB1, 0x06, 0xDA, 0x81, 0xFC, 0x02, 0x80, 0xB1, 0x06, 0xCF, 
40232
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x68, 0x04, 0x14, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40233
  0x30, 0x30, 0x34, 0x6A, 0x07, 0x14, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x69, 
40234
  0x0A, 0x14, 0x09, 0xDA, 0x1E, 0x0D, 0x12, 0x0A, 0xDA, 0x80, 0x87, 0x18, 0x2F, 0x09, 0xDA, 0x82, 
40235
  0x00, 0x19, 0x2F, 0x08, 0xDA, 0x82, 0x01, 0x19, 0x2F, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40236
  0x30, 0x34, 0x6C, 0x1C, 0x2F, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6B, 0x1F, 
40237
  0x2F, 0x0C, 0xDA, 0x1E, 0x28, 0x2D, 0x0A, 0xDA, 0x80, 0x87, 0x33, 0x53, 0x0A, 0xDA, 0x82, 0x00, 
40238
  0x35, 0x53, 0x0B, 0xDA, 0x82, 0x04, 0x36, 0x53, 0x09, 0xDA, 0x82, 0x01, 0x37, 0x53, 0x0C, 0xDA, 
40239
  0x82, 0x05, 0x37, 0x53, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6E, 0x3A, 0x53, 
40240
  0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6D, 0x3D, 0x53, 0x0F, 0xDA, 0x1E, 0x4C, 
40241
  0x51, 0x0D, 0xDA, 0x80, 0x87, 0x57, 0x80, 0x81, 0x0B, 0xDA, 0x82, 0x00, 0x59, 0x80, 0x81, 0x0C, 
40242
  0xDA, 0x82, 0x04, 0x5B, 0x80, 0x81, 0x0D, 0xDA, 0x82, 0x08, 0x5C, 0x80, 0x81, 0x0A, 0xDA, 0x82, 
40243
  0x01, 0x5D, 0x80, 0x81, 0x0E, 0xDA, 0x82, 0x05, 0x5E, 0x80, 0x81, 0x0F, 0xDA, 0x82, 0x09, 0x5E, 
40244
  0x80, 0x81, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x70, 0x61, 0x80, 0x81, 0x11, 
40245
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6F, 0x64, 0x80, 0x81, 0x12, 0xDA, 0x1E, 0x7A, 
40246
  0x7F, 0x10, 0xDA, 0x80, 0x87, 0x80, 0x85, 0x80, 0xB1, 0x0B, 0xDA, 0x82, 0x0C, 0x80, 0x89, 0x80, 
40247
  0xB1, 0x0C, 0xDA, 0x82, 0x0D, 0x80, 0x8A, 0x80, 0xB1, 0x0A, 0xDA, 0x82, 0x0E, 0x80, 0x8A, 0x80, 
40248
  0xB1, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x72, 0x80, 0x8D, 0x80, 0xB1, 0x0E, 
40249
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x71, 0x80, 0x90, 0x80, 0xB1, 0x0F, 0xDA, 0x1E, 
40250
  0x80, 0x91, 0x80, 0xA5, 0x0D, 0xDA, 0x43, 0x80, 0x91, 0x80, 0xA5, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
40251
  0x30, 0x30, 0x30, 0x34, 0x73, 0x80, 0x95, 0x80, 0xA3, 0x12, 0xDA, 0x82, 0x12, 0x80, 0x97, 0x80, 
40252
  0xA3, 0x13, 0xDA, 0x82, 0x13, 0x80, 0x99, 0x80, 0xA3, 0x14, 0xDA, 0x82, 0x14, 0x80, 0xAA, 0x80, 
40253
  0xAF, 0x10, 0xDA, 0x80, 0x87, 0x29, 0x04, 0x00, 0x00, 0x3F, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 
40254
  0x00, 0x26, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x11, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x01, 
40255
  0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x0C, 0x00, 0x3A, 0x07, 0x01, 0x08, 0x1B, 0x09, 0x07, 
40256
  0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x07, 0x02, 
40257
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x08, 0x01, 
40258
  0x08, 0x1C, 0xF5, 0xFF, 0xFF, 0x1C, 0x9D, 0x00, 0x00, 0x26, 0x07, 0x06, 0x01, 0x1E, 0x07, 0x1A, 
40259
  0x00, 0x3D, 0x08, 0x02, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x08, 0x00, 0x00, 0x28, 0x0B, 0x00, 
40260
  0x00, 0x49, 0x0A, 0x01, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x12, 0x00, 0x3A, 0x0A, 0x01, 
40261
  0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x49, 0x08, 0x09, 0x08, 0x28, 0x0D, 0x00, 0x00, 0x25, 0x0A, 0x0D, 
40262
  0x08, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0B, 0x00, 0x00, 0x3A, 0x0A, 0x09, 0x08, 0x32, 0x0C, 0x0A, 
40263
  0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x0A, 0x0D, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x03, 0x00, 
40264
  0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0B, 0x1C, 0xEF, 0xFF, 
40265
  0xFF, 0x1C, 0x82, 0x00, 0x00, 0x26, 0x08, 0x06, 0x02, 0x1E, 0x08, 0x23, 0x00, 0x3D, 0x09, 0x02, 
40266
  0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 0x09, 0x02, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x28, 0x09, 0x00, 
40267
  0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 
40268
  0x00, 0x1F, 0x0E, 0x18, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x49, 0x09, 0x0A, 
40269
  0x09, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x09, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x11, 0x00, 
40270
  0x00, 0x49, 0x0C, 0x0B, 0x0C, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x0C, 0x1E, 0x0D, 0x02, 
40271
  0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x0D, 0x0A, 0x09, 0x3A, 0x10, 0x0B, 0x0C, 0x33, 0x0F, 0x0D, 
40272
  0x10, 0x35, 0x11, 0x00, 0x00, 0x1B, 0x0D, 0x11, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x03, 0x00, 
40273
  0x00, 0x1B, 0x04, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xE9, 0xFF, 
40274
  0xFF, 0x1C, 0x5E, 0x00, 0x00, 0x26, 0x09, 0x06, 0x03, 0x1E, 0x09, 0x2D, 0x00, 0x3D, 0x0A, 0x02, 
40275
  0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 
40276
  0x02, 0x1B, 0x0D, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x28, 0x0F, 0x00, 
40277
  0x00, 0x28, 0x11, 0x00, 0x00, 0x49, 0x10, 0x01, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1F, 0x11, 0x1F, 
40278
  0x00, 0x3A, 0x10, 0x01, 0x11, 0x1B, 0x12, 0x10, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x13, 0x00, 
40279
  0x00, 0x25, 0x10, 0x13, 0x0A, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x18, 0x00, 0x00, 0x49, 0x0E, 0x0C, 
40280
  0x0E, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0E, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x13, 0x00, 
40281
  0x00, 0x49, 0x0F, 0x0D, 0x0F, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0F, 0x1E, 0x10, 0x02, 
40282
  0x00, 0x1C, 0x0E, 0x00, 0x00, 0x3A, 0x10, 0x0B, 0x0A, 0x3A, 0x13, 0x0C, 0x0E, 0x3A, 0x14, 0x0D, 
40283
  0x0F, 0x33, 0x12, 0x10, 0x13, 0x31, 0x14, 0x00, 0x00, 0x35, 0x15, 0x00, 0x00, 0x1B, 0x10, 0x15, 
40284
  0x00, 0x1E, 0x15, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x10, 0x00, 0x1C, 0x03, 0x00, 
40285
  0x00, 0x49, 0x11, 0x01, 0x11, 0x1C, 0xE2, 0xFF, 0xFF, 0x1C, 0x30, 0x00, 0x00, 0x31, 0x06, 0x00, 
40286
  0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 0x06, 0x00, 
40287
  0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0A, 0x0C, 0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x2A, 0x0A, 0x00, 
40288
  0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 0x0E, 0x23, 
40289
  0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x2B, 0x0D, 0x00, 0x00, 0x23, 0x10, 0x0D, 
40290
  0x06, 0x1E, 0x10, 0x12, 0x00, 0x3A, 0x11, 0x0B, 0x0D, 0x1B, 0x12, 0x11, 0x00, 0x3A, 0x11, 0x02, 
40291
  0x0D, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x11, 0x13, 0x12, 0x1B, 0x14, 0x11, 0x00, 0x28, 0x15, 0x00, 
40292
  0x00, 0x25, 0x11, 0x15, 0x14, 0x1E, 0x11, 0x04, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x1C, 0x07, 0x00, 
40293
  0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0B, 0x0D, 0x14, 0x3A, 0x15, 0x13, 0x14, 0x3C, 0x0C, 0x0D, 
40294
  0x15, 0x05, 0x0D, 0x0D, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0B, 0x00, 
40295
  0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x10, 0x0D, 
40296
  0x00, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x10, 0x00, 0x1C, 0x03, 0x00, 
40297
  0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xDE, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x88, 0xC3, 0x03, 
40298
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40299
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40300
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40301
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40302
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40303
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40304
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40305
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40306
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40307
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40308
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40309
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40310
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40311
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40312
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40313
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40314
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40315
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40316
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40317
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40318
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40319
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40320
  0xBF, 0xF3, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 
40321
  0x00, 0x02, 0xCE, 0x06, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 
40322
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 
40323
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 
40324
  0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6F, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2C, 
40325
  0x00, 0x2C, 0x00, 0x2C, 0xDA, 0x83, 0x37, 0xDA, 0x83, 0x56, 0xDA, 0x3E, 0x00, 0x2B, 0x00, 0xDA, 
40326
  0x82, 0xFA, 0x00, 0x2B, 0x01, 0xCF, 0x0F, 0x6E, 0x6F, 0x2D, 0x73, 0x69, 0x64, 0x65, 0x2D, 0x65, 
40327
  0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x20, 0x29, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40328
  0x36, 0x5A, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
40329
  0x03, 0x00, 0x1E, 0x02, 0x0B, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 
40330
  0x04, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x04, 0x00, 0x32, 0x01, 
40331
  0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x36, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, 0x00, 
40332
  0x00, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x04, 0x00, 0x32, 0x01, 
40333
  0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 
40334
  0x05, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x10, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 
40335
  0x06, 0x00, 0x35, 0x05, 0x06, 0x00, 0x32, 0x01, 0x05, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 
40336
  0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1E, 0x06, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 
40337
  0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x01, 0x07, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x36, 0x08, 
40338
  0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x29, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x8F, 0xAB, 
40339
  0x01, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
40340
  0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 
40341
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFC, 0x03, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
40342
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFA, 0x03, 0x07, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0A, 0x00, 
40343
  0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0A, 0x00, 
40344
  0x0A, 0x00, 0x0A, 0xBF, 0xFF, 0x05, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0xDA, 0x1E, 
40345
  0x00, 0x06, 0x01, 0xCF, 0x0B, 0x69, 0x73, 0x2D, 0x73, 0x61, 0x66, 0x65, 0x2D, 0x64, 0x65, 0x66, 
40346
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 
40347
  0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8F, 0xBA, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 
40348
  0x18, 0x00, 0x18, 0x00, 0x18, 0xDA, 0x82, 0x55, 0xDA, 0x86, 0x23, 0xCF, 0x08, 0x64, 0x65, 0x66, 
40349
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0xCB, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x6E, 0xCB, 0xCF, 0x09, 0x76, 
40350
  0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xDA, 0x86, 0x23, 0xDA, 0x83, 0xC5, 0xDA, 0x86, 
40351
  0x23, 0xCF, 0x05, 0x76, 0x61, 0x72, 0x66, 0x6E, 0xCB, 0xDA, 0x80, 0xAB, 0xDA, 0x86, 0x23, 0xCF, 
40352
  0x09, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0xCB, 0xCF, 0x06, 0x64, 0x65, 0x66, 
40353
  0x64, 0x79, 0x6E, 0xCB, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x2D, 0xDA, 0x86, 0x23, 0xDA, 0x82, 0x95, 
40354
  0xCE, 0x07, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0xDA, 0x81, 0xBB, 0xDA, 0x86, 0x23, 0xDA, 
40355
  0x1A, 0xCF, 0x03, 0x75, 0x73, 0x65, 0xDA, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 
40356
  0x02, 0x02, 0x02, 0x05, 0x13, 0x00, 0x06, 0xCE, 0x05, 0x75, 0x73, 0x65, 0x2D, 0x32, 0xDA, 0x04, 
40357
  0xDA, 0x81, 0x28, 0xDA, 0x85, 0xDD, 0xDA, 0x81, 0x6E, 0xDA, 0x85, 0x25, 0xDA, 0x85, 0xD5, 0x00, 
40358
  0x13, 0x00, 0xDA, 0x85, 0x53, 0x00, 0x13, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x13, 0x02, 0xCF, 0x05, 
40359
  0x75, 0x73, 0x65, 0x2D, 0x32, 0x00, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
40360
  0x31, 0x02, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x30, 0x05, 0x12, 0x05, 
40361
  0xDA, 0x80, 0xFA, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 
40362
  0x04, 0x0F, 0x00, 0x3A, 0x03, 0x01, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 
40363
  0x06, 0x00, 0x00, 0x35, 0x03, 0x06, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x33, 
40364
  0x03, 0x06, 0x07, 0x2C, 0x06, 0x03, 0x00, 0x32, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 
40365
  0x06, 0x07, 0x00, 0x49, 0x04, 0x01, 0x04, 0x1C, 0xF2, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x8F, 
40366
  0xC2, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x19, 0x00, 0x19, 
40367
  0x00, 0x19, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
40368
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD5, 0x04, 0xDA, 0x85, 0xC2, 0xCB, 0xCF, 0x06, 0x64, 0x6F, 
40369
  0x66, 0x69, 0x6C, 0x65, 0xCB, 0xCF, 0x07, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0xCB, 0xDA, 
40370
  0x85, 0xF0, 0xCB, 0xDA, 0x78, 0xDA, 0x85, 0x25, 0xDA, 0x82, 0xB5, 0xDA, 0x79, 0xDA, 0x83, 0x48, 
40371
  0x00, 0x50, 0x00, 0xCF, 0x05, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x00, 0x50, 0x01, 0xDA, 0x85, 0x72, 
40372
  0x00, 0x50, 0x02, 0xDA, 0x83, 0x49, 0x00, 0x50, 0x03, 0xDA, 0x85, 0x30, 0x00, 0x50, 0x04, 0xCF, 
40373
  0x12, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
40374
  0x74, 0x6F, 0x72, 0x08, 0x4F, 0x07, 0xDA, 0x84, 0x1D, 0x0C, 0x20, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
40375
  0x30, 0x30, 0x30, 0x37, 0x32, 0x20, 0x4F, 0x08, 0xCF, 0x0A, 0x73, 0x61, 0x66, 0x65, 0x2D, 0x63, 
40376
  0x68, 0x65, 0x63, 0x6B, 0x3E, 0x4E, 0x0D, 0xDA, 0x80, 0xCE, 0x40, 0x4E, 0x0E, 0xDA, 0x83, 0x1C, 
40377
  0x49, 0x4E, 0x0B, 0xCF, 0x06, 0x6E, 0x65, 0x77, 0x74, 0x75, 0x70, 0x2E, 0x04, 0x00, 0x00, 0x31, 
40378
  0x01, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x4B, 0x00, 0x2B, 
40379
  0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x01, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 
40380
  0x07, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x06, 0x08, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1E, 
40381
  0x08, 0x03, 0x00, 0x1B, 0x06, 0x08, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 
40382
  0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x32, 
40383
  0x0C, 0x07, 0x00, 0x2C, 0x0D, 0x04, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1E, 0x0C, 0x03, 0x00, 0x2C, 
40384
  0x0B, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1C, 
40385
  0x02, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x1B, 0x06, 0x09, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x31, 
40386
  0x08, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x35, 0x06, 0x09, 0x00, 0x1E, 0x06, 0x06, 0x00, 0x31, 
40387
  0x01, 0x00, 0x00, 0x35, 0x09, 0x08, 0x00, 0x1E, 0x09, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x04, 
40388
  0x00, 0x00, 0x00, 0x1E, 0x08, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x2C, 0x0A, 0x07, 0x00, 0x25, 
40389
  0x09, 0x0A, 0x07, 0x1E, 0x09, 0x08, 0x00, 0x2B, 0x0A, 0x01, 0x00, 0x32, 0x01, 0x0A, 0x00, 0x2C, 
40390
  0x0B, 0x08, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x32, 0x04, 0x0A, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x36, 
40391
  0x0B, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0B, 0x0A, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 
40392
  0x0A, 0x15, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x0C, 0x0B, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x3D, 
40393
  0x0C, 0x0B, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x3D, 0x0C, 0x0B, 0x01, 0x1B, 0x0E, 0x0C, 0x00, 0x34, 
40394
  0x01, 0x00, 0x00, 0x2C, 0x0B, 0x0C, 0x00, 0x32, 0x0B, 0x04, 0x00, 0x2C, 0x0C, 0x0D, 0x00, 0x35, 
40395
  0x0B, 0x0C, 0x00, 0x33, 0x0B, 0x0D, 0x0E, 0x2C, 0x0F, 0x0E, 0x00, 0x35, 0x0C, 0x0F, 0x00, 0x1B, 
40396
  0x0B, 0x0C, 0x00, 0x33, 0x0B, 0x02, 0x03, 0x2C, 0x0F, 0x0F, 0x00, 0x35, 0x0C, 0x0F, 0x00, 0x36, 
40397
  0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8F, 0xC4, 0x01, 0x05, 0x09, 
40398
  0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x03, 0x09, 
40399
  0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x0D, 0x00, 
40400
  0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0B, 0x00, 
40401
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFE, 0x07, 0xBF, 
40402
  0xFF, 0x05, 0x07, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x0B, 0x00, 0x0B, 0x00, 
40403
  0x07, 0x00, 0x1F, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x06, 0x07, 0x02, 0x07, 0x00, 0x07, 0xBF, 0xF8, 
40404
  0x05, 0x09, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 
40405
  0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x05, 0x0C, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x07, 
40406
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
40407
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x02, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
40408
  0x09, 0xBF, 0xF2, 0x05, 0xBF, 0xF9, 0x03, 0xD7, 0x00, 0xCD, 0x03, 0xFF, 0x00, 0x00, 0x24, 0x01, 
40409
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x18, 0x7F, 0x00, 0x04, 0x16, 0xCE, 0x06, 0x64, 0x6F, 0x66, 
40410
  0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x85, 0x43, 0xDA, 0x85, 0x1C, 0xDA, 0x85, 0x26, 0xDA, 0x81, 
40411
  0xC5, 0xDA, 0x85, 0x23, 0xDA, 0x85, 0x25, 0xDA, 0x85, 0x24, 0xDA, 0x1C, 0xD0, 0x09, 0x63, 0x6F, 
40412
  0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0xD0, 0x0B, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 
40413
  0x72, 0x65, 0x61, 0x6D, 0xDA, 0x81, 0x45, 0xDA, 0x81, 0x46, 0xDA, 0x81, 0xA2, 0xDA, 0x81, 0x9A, 
40414
  0xDA, 0x81, 0x26, 0xDA, 0x81, 0x28, 0xCE, 0x14, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 
40415
  0x74, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0xDA, 0x85, 0x40, 0xDA, 
40416
  0x85, 0x1D, 0xDA, 0x85, 0x27, 0xDA, 0x85, 0x28, 0xDA, 0x85, 0x1E, 0xDA, 0x85, 0x1F, 0xDA, 0x81, 
40417
  0x47, 0x00, 0x7F, 0x00, 0xDA, 0x81, 0x22, 0x02, 0x7F, 0x0A, 0xCF, 0x04, 0x65, 0x78, 0x69, 0x74, 
40418
  0x05, 0x7F, 0x0B, 0xDA, 0x83, 0x49, 0x08, 0x7F, 0x0C, 0xDA, 0x85, 0x54, 0x0B, 0x7F, 0x0D, 0xDA, 
40419
  0x85, 0x72, 0x0E, 0x7F, 0x0E, 0xDA, 0x82, 0x2C, 0x11, 0x7F, 0x0F, 0xDA, 0x85, 0x53, 0x14, 0x7F, 
40420
  0x10, 0xDA, 0x85, 0x52, 0x15, 0x7F, 0x01, 0xDA, 0x86, 0x4B, 0x19, 0x2A, 0x11, 0xCF, 0x07, 0x5F, 
40421
  0x30, 0x30, 0x30, 0x30, 0x35, 0x79, 0x2A, 0x7F, 0x11, 0xDA, 0x31, 0x2C, 0x7F, 0x13, 0xCF, 0x0C, 
40422
  0x70, 0x61, 0x74, 0x68, 0x2D, 0x69, 0x73, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x37, 0x7F, 0x15, 0xDA, 
40423
  0x83, 0x49, 0x3B, 0x7F, 0x17, 0xCF, 0x05, 0x73, 0x70, 0x61, 0x74, 0x68, 0x3B, 0x44, 0x0D, 0xCF, 
40424
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x7A, 0x46, 0x7F, 0x18, 0xCF, 0x0A, 0x65, 0x78, 0x69, 
40425
  0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x47, 0x7F, 0x19, 0xCF, 0x0A, 0x65, 0x78, 0x69, 0x74, 
40426
  0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x49, 0x7F, 0x1B, 0xDA, 0x85, 0x4F, 0x4B, 0x7F, 0x1D, 0xCF, 
40427
  0x02, 0x62, 0x70, 0x4D, 0x7F, 0x1F, 0xCF, 0x02, 0x62, 0x63, 0x54, 0x5D, 0x0D, 0xCF, 0x07, 0x5F, 
40428
  0x30, 0x30, 0x30, 0x30, 0x35, 0x41, 0x73, 0x7F, 0x20, 0xCF, 0x04, 0x6E, 0x65, 0x6E, 0x76, 0x2C, 
40429
  0x0A, 0x00, 0x00, 0x3A, 0x09, 0x01, 0x0A, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x3A, 
40430
  0x09, 0x01, 0x0B, 0x1B, 0x0B, 0x09, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x3A, 0x09, 0x01, 0x0C, 0x1B, 
40431
  0x0C, 0x09, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x3A, 0x09, 0x01, 0x0D, 0x1B, 0x0D, 0x09, 0x00, 0x2C, 
40432
  0x0E, 0x04, 0x00, 0x3A, 0x09, 0x01, 0x0E, 0x1B, 0x0E, 0x09, 0x00, 0x2C, 0x0F, 0x05, 0x00, 0x3A, 
40433
  0x09, 0x01, 0x0F, 0x1B, 0x0F, 0x09, 0x00, 0x2C, 0x10, 0x06, 0x00, 0x3A, 0x09, 0x01, 0x10, 0x1B, 
40434
  0x10, 0x09, 0x00, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x35, 
40435
  0x09, 0x11, 0x00, 0x1B, 0x11, 0x09, 0x00, 0x2C, 0x13, 0x08, 0x00, 0x25, 0x12, 0x11, 0x13, 0x1E, 
40436
  0x12, 0x03, 0x00, 0x1B, 0x09, 0x00, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x2C, 0x15, 0x09, 0x00, 0x25, 
40437
  0x14, 0x11, 0x15, 0x1E, 0x14, 0x03, 0x00, 0x1B, 0x13, 0x00, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 
40438
  0x15, 0x0A, 0x00, 0x32, 0x00, 0x15, 0x00, 0x2C, 0x16, 0x0B, 0x00, 0x35, 0x15, 0x16, 0x00, 0x1B, 
40439
  0x13, 0x15, 0x00, 0x1B, 0x09, 0x13, 0x00, 0x1B, 0x11, 0x09, 0x00, 0x25, 0x12, 0x11, 0x00, 0x1B, 
40440
  0x13, 0x12, 0x00, 0x20, 0x0B, 0x09, 0x00, 0x2C, 0x15, 0x0C, 0x00, 0x2C, 0x16, 0x0D, 0x00, 0x32, 
40441
  0x15, 0x16, 0x00, 0x2C, 0x16, 0x0E, 0x00, 0x35, 0x15, 0x16, 0x00, 0x35, 0x16, 0x15, 0x00, 0x1B, 
40442
  0x14, 0x16, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x14, 0x0B, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x31, 
40443
  0x00, 0x00, 0x00, 0x2C, 0x17, 0x0F, 0x00, 0x35, 0x16, 0x17, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x1E, 
40444
  0x0D, 0x03, 0x00, 0x1B, 0x18, 0x0D, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x1E, 0x13, 0x03, 0x00, 0x1B, 
40445
  0x19, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x19, 0x17, 0x00, 0x1B, 0x18, 0x19, 0x00, 0x2C, 
40446
  0x19, 0x03, 0x00, 0x3C, 0x15, 0x19, 0x18, 0x28, 0x18, 0x00, 0x00, 0x28, 0x19, 0x00, 0x00, 0x30, 
40447
  0x1A, 0x00, 0x00, 0x1B, 0x1B, 0x1A, 0x00, 0x30, 0x1C, 0x01, 0x00, 0x1B, 0x1D, 0x1C, 0x00, 0x30, 
40448
  0x1E, 0x02, 0x00, 0x1B, 0x1F, 0x1E, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 
40449
  0x20, 0x10, 0x00, 0x32, 0x20, 0x00, 0x00, 0x2C, 0x21, 0x0F, 0x00, 0x35, 0x20, 0x21, 0x00, 0x01, 
40450
  0x20, 0x00, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x20, 0x0D, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x1E, 
40451
  0x13, 0x03, 0x00, 0x2C, 0x21, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x21, 0x17, 0x00, 0x1B, 
40452
  0x20, 0x21, 0x00, 0x30, 0x21, 0x03, 0x00, 0x2C, 0x22, 0x12, 0x00, 0x2C, 0x23, 0x04, 0x00, 0x33, 
40453
  0x22, 0x1B, 0x23, 0x2C, 0x22, 0x06, 0x00, 0x33, 0x0E, 0x22, 0x10, 0x2C, 0x22, 0x05, 0x00, 0x2C, 
40454
  0x23, 0x01, 0x00, 0x33, 0x22, 0x0F, 0x23, 0x2C, 0x22, 0x02, 0x00, 0x33, 0x15, 0x22, 0x0C, 0x2C, 
40455
  0x22, 0x03, 0x00, 0x2C, 0x23, 0x13, 0x00, 0x33, 0x22, 0x20, 0x23, 0x2C, 0x22, 0x14, 0x00, 0x33, 
40456
  0x1D, 0x22, 0x1F, 0x2C, 0x22, 0x15, 0x00, 0x32, 0x22, 0x21, 0x00, 0x43, 0x20, 0x00, 0x00, 0x31, 
40457
  0x20, 0x00, 0x00, 0x2C, 0x22, 0x16, 0x00, 0x35, 0x21, 0x22, 0x00, 0x1B, 0x20, 0x21, 0x00, 0x1E, 
40458
  0x13, 0x02, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x23, 0x17, 0x00, 0x35, 
40459
  0x22, 0x23, 0x00, 0x1E, 0x18, 0x05, 0x00, 0x1E, 0x19, 0x03, 0x00, 0x39, 0x22, 0x18, 0x19, 0x1C, 
40460
  0x02, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
40461
  0x05, 0x02, 0x02, 0x02, 0x01, 0x05, 0x01, 0x14, 0xDA, 0x85, 0x6C, 0xDA, 0x04, 0xDA, 0x85, 0x24, 
40462
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x86, 0x58, 0xBF, 0xFF, 
40463
  0x00, 0x0B, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0D, 
40464
  0xDA, 0x85, 0x72, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 
40465
  0x53, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x4B, 0xBF, 
40466
  0xFF, 0x00, 0x11, 0xDA, 0x86, 0x59, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 
40467
  0xDA, 0x86, 0x5A, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x86, 
40468
  0x5B, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x5C, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x86, 0x5D, 0xBF, 
40469
  0xFF, 0x00, 0x19, 0xDA, 0x86, 0x5E, 0x00, 0x05, 0x00, 0xDA, 0x85, 0x62, 0x00, 0x05, 0x01, 0xDA, 
40470
  0x81, 0x96, 0x00, 0x05, 0x02, 0xDA, 0x85, 0x4F, 0x2D, 0x03, 0x00, 0x11, 0x2B, 0x04, 0x00, 0x10, 
40471
  0x33, 0x03, 0x04, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xEE, 
40472
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x08, 0x02, 
40473
  0x00, 0x02, 0x07, 0x20, 0x01, 0x01, 0x16, 0xCE, 0x02, 0x62, 0x70, 0xDA, 0x04, 0xDA, 0x85, 0x3B, 
40474
  0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0xDA, 0x85, 0x43, 0xDA, 0x81, 0x6E, 0xDA, 
40475
  0x83, 0xA5, 0xDA, 0x80, 0xDC, 0xDA, 0x3D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 
40476
  0x00, 0x0A, 0xDA, 0x86, 0x58, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0C, 
40477
  0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x72, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 
40478
  0x2C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x85, 0x52, 0xBF, 
40479
  0xFF, 0x00, 0x01, 0xDA, 0x86, 0x4B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x86, 0x59, 0xBF, 0xFF, 0x00, 
40480
  0x11, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x86, 0x5A, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 
40481
  0x49, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x86, 0x5B, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x5C, 0xBF, 
40482
  0xFF, 0x00, 0x18, 0xDA, 0x86, 0x5D, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x86, 0x5E, 0xBF, 0xFF, 0x00, 
40483
  0x1B, 0xDA, 0x85, 0x4F, 0x00, 0x20, 0x00, 0xDA, 0x1E, 0x00, 0x20, 0x01, 0xDA, 0x80, 0x87, 0x00, 
40484
  0x20, 0x02, 0xDA, 0x86, 0x5F, 0x10, 0x20, 0x04, 0xDA, 0x85, 0x62, 0x2D, 0x03, 0x00, 0x0A, 0x1E, 
40485
  0x03, 0x08, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2B, 
40486
  0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2D, 
40487
  0x03, 0x00, 0x15, 0x2C, 0x04, 0x02, 0x00, 0x29, 0x05, 0x00, 0x00, 0x3C, 0x03, 0x04, 0x05, 0x2C, 
40488
  0x03, 0x03, 0x00, 0x31, 0x03, 0x00, 0x00, 0x41, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 
40489
  0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x35, 
40490
  0x06, 0x07, 0x00, 0x28, 0x07, 0x00, 0x00, 0x37, 0x05, 0x06, 0x07, 0x2B, 0x06, 0x00, 0x00, 0x2B, 
40491
  0x07, 0xFE, 0xFF, 0x33, 0x04, 0x06, 0x07, 0x2C, 0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2F, 
40492
  0x06, 0x00, 0x18, 0x2D, 0x07, 0x00, 0x18, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 
40493
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x0F, 0x01, 0x04, 0xDA, 0x83, 0xA2, 0xDA, 0x04, 0xD0, 
40494
  0x03, 0x65, 0x72, 0x72, 0xDA, 0x82, 0xC9, 0xDA, 0x84, 0xDC, 0xDA, 0x85, 0x3B, 0xBF, 0xFF, 0x00, 
40495
  0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0x87, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 
40496
  0x5F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x62, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x04, 
40497
  0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 
40498
  0x2A, 0x02, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x35, 0x01, 0x02, 0x00, 
40499
  0x2D, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x03, 0x00, 
40500
  0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xF5, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40501
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 
40502
  0x07, 0x00, 0x07, 0x00, 0x07, 0x8B, 0xF0, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
40503
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40504
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40505
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
40506
  0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x13, 0x00, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 
40507
  0x05, 0x00, 0x05, 0x07, 0x22, 0x01, 0x01, 0x1A, 0xCE, 0x02, 0x62, 0x63, 0xDA, 0x04, 0xDA, 0x85, 
40508
  0x29, 0xDA, 0x86, 0x64, 0xDA, 0x85, 0x43, 0xDA, 0x81, 0x6E, 0xDA, 0x83, 0xA5, 0xDA, 0x80, 0xDC, 
40509
  0xDA, 0x3D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x86, 0x58, 
40510
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 
40511
  0x00, 0x0D, 0xDA, 0x85, 0x72, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0F, 
40512
  0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 
40513
  0x4B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x86, 0x59, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 0xBF, 0xFF, 
40514
  0x00, 0x13, 0xDA, 0x86, 0x5A, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x17, 
40515
  0xDA, 0x86, 0x5B, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x5C, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x86, 
40516
  0x5D, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x86, 0x5E, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x4F, 0xBF, 
40517
  0xFF, 0x00, 0x1D, 0xDA, 0x86, 0x5F, 0x00, 0x22, 0x00, 0xDA, 0x1E, 0x00, 0x22, 0x01, 0xDA, 0x80, 
40518
  0x87, 0x00, 0x22, 0x02, 0xDA, 0x80, 0xFF, 0x00, 0x22, 0x03, 0xDA, 0x80, 0xFA, 0x00, 0x22, 0x04, 
40519
  0xDA, 0x81, 0x64, 0x00, 0x22, 0x05, 0xDA, 0x86, 0x60, 0x11, 0x22, 0x07, 0xDA, 0x85, 0x62, 0x2D, 
40520
  0x06, 0x00, 0x0A, 0x1E, 0x06, 0x09, 0x00, 0x33, 0x00, 0x01, 0x02, 0x32, 0x03, 0x04, 0x00, 0x2C, 
40521
  0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2B, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 
40522
  0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2D, 0x06, 0x00, 0x15, 0x2C, 0x07, 0x02, 0x00, 0x29, 
40523
  0x08, 0x00, 0x00, 0x3C, 0x06, 0x07, 0x08, 0x2C, 0x06, 0x03, 0x00, 0x31, 0x06, 0x00, 0x00, 0x41, 
40524
  0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x30, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x32, 
40525
  0x08, 0x09, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x37, 
40526
  0x08, 0x09, 0x0A, 0x2B, 0x09, 0x00, 0x00, 0x2B, 0x0A, 0xFE, 0xFF, 0x33, 0x07, 0x09, 0x0A, 0x2C, 
40527
  0x0A, 0x06, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2F, 0x09, 0x00, 0x18, 0x2F, 0x01, 0x00, 0x19, 0x2D, 
40528
  0x0A, 0x00, 0x19, 0x03, 0x0A, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 
40529
  0x00, 0x00, 0x04, 0x13, 0x01, 0x07, 0xDA, 0x83, 0xA2, 0xDA, 0x04, 0xDA, 0x86, 0x65, 0xDA, 0x82, 
40530
  0xC9, 0xDA, 0x84, 0xDC, 0xDA, 0x85, 0x29, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 
40531
  0x01, 0xDA, 0x80, 0x87, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xFF, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
40532
  0x80, 0xFA, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x64, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x86, 0x60, 
40533
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x62, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x07, 0x32, 
40534
  0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x2A, 
40535
  0x02, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2D, 
40536
  0x02, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x02, 0x33, 0x02, 0x03, 0x04, 0x2D, 
40537
  0x02, 0x00, 0x03, 0x2D, 0x03, 0x00, 0x04, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x03, 0x00, 0x36, 
40538
  0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40539
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
40540
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8B, 0xF9, 0x05, 0x00, 
40541
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
40542
  0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40543
  0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 
40544
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x01, 0x05, 0x00, 0x05, 0x00, 
40545
  0x05, 0x9D, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x09, 0x25, 
40546
  0x01, 0x17, 0xDA, 0x04, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xDA, 0x81, 0x6E, 0xDA, 0x84, 0xDD, 
40547
  0xDA, 0x85, 0x16, 0xDA, 0x86, 0x64, 0xDA, 0x85, 0x17, 0xDA, 0x85, 0x10, 0xDA, 0x85, 0x43, 0xBF, 
40548
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x86, 0x58, 0xBF, 0xFF, 0x00, 
40549
  0x0B, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 
40550
  0x85, 0x72, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x53, 
40551
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x4B, 0xBF, 0xFF, 
40552
  0x00, 0x11, 0xDA, 0x86, 0x59, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
40553
  0x86, 0x5A, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x86, 0x5B, 
40554
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x5C, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x86, 0x5D, 0xBF, 0xFF, 
40555
  0x00, 0x19, 0xDA, 0x86, 0x5E, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 0x00, 0x1D, 
40556
  0xDA, 0x86, 0x5F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x86, 0x60, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 
40557
  0x61, 0x00, 0x25, 0x00, 0xDA, 0x31, 0x00, 0x25, 0x01, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2C, 
40558
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x4A, 0x03, 0x02, 0x04, 0x1E, 
40559
  0x03, 0x1F, 0x00, 0x2D, 0x02, 0x00, 0x0A, 0x1E, 0x02, 0x0B, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x33, 
40560
  0x00, 0x01, 0x02, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x35, 
40561
  0x02, 0x04, 0x00, 0x2B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x35, 
40562
  0x02, 0x04, 0x00, 0x2D, 0x04, 0x00, 0x15, 0x2C, 0x05, 0x06, 0x00, 0x3B, 0x02, 0x04, 0x05, 0x1E, 
40563
  0x02, 0x07, 0x00, 0x2D, 0x04, 0x00, 0x15, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x07, 0x00, 0x35, 
40564
  0x04, 0x05, 0x00, 0x32, 0x00, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x15, 0x2C, 
40565
  0x05, 0x08, 0x00, 0x29, 0x06, 0x00, 0x00, 0x3C, 0x04, 0x05, 0x06, 0x2F, 0x01, 0x00, 0x18, 0x2F, 
40566
  0x00, 0x00, 0x19, 0x2D, 0x04, 0x00, 0x19, 0x03, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 
40567
  0xFF, 0x8C, 0x0A, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x26, 0x00, 0x26, 0x00, 0x20, 0x01, 0x22, 
40568
  0x00, 0x22, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x01, 0x24, 0x00, 0x24, 0x01, 0x24, 
40569
  0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x22, 0x01, 0x25, 
40570
  0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x02, 0x26, 0x00, 0x26, 0x00, 0x26, 
40571
  0x00, 0x26, 0x01, 0x26, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0xBF, 0xF6, 0x20, 0x8B, 0xDE, 0x01, 
40572
  0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
40573
  0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
40574
  0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x06, 0x10, 0x00, 0x10, 0x00, 0x10, 
40575
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
40576
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 
40577
  0x0A, 0x00, 0x0A, 0x00, 0x03, 0x04, 0x15, 0x00, 0x03, 0x01, 0x03, 0x00, 0x11, 0x00, 0x11, 0x00, 
40578
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
40579
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1F, 0x00, 
40580
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 
40581
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0x01, 
40582
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x16, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
40583
  0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x1B, 0xBF, 0xF0, 0x1E, 0xBF, 0xFC, 0x05, 0x00, 
40584
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40585
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40586
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x16, 0x03, 0x00, 0x03, 0x00, 0x18, 
40587
  0x00, 0x18, 0x00, 0x18, 0x01, 0x03, 0x01, 0x05, 0x01, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0xBF, 
40588
  0xC0, 0x01, 0x00, 0x04, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
40589
  0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x1D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0x1A, 0xBF, 
40590
  0xFF, 0x00, 0x04, 0xDA, 0x86, 0x1E, 0x2D, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x01, 
40591
  0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x2C, 0x03, 
40592
  0x02, 0x00, 0x33, 0x01, 0x02, 0x03, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x03, 0x00, 0x36, 0x01, 
40593
  0x00, 0x00, 0xBF, 0xFF, 0x8F, 0xE9, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x05, 0x00, 
40594
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x8F, 0xE6, 0x15, 0x00, 0x15, 
40595
  0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 
40596
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40597
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x07, 0x00, 0x07, 
40598
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
40599
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF3, 0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x06, 
40600
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCF, 0x09, 
40601
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x62, 0x72, 0x74, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
40602
  0x63, 0x62, 0x72, 0x74, 0xDA, 0x86, 0x41, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x01, 
40603
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x09, 0x32, 0x00, 0x08, 0xCE, 0x06, 0x64, 0x65, 0x66, 0x64, 
40604
  0x79, 0x6E, 0xDA, 0x04, 0xDA, 0x82, 0x95, 0xCE, 0x16, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x6D, 
40605
  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xCE, 
40606
  0x32, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 
40607
  0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 
40608
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x27, 0x2A, 0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 
40609
  0x65, 0x72, 0x73, 0xD0, 0x0D, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x2D, 0x70, 0x72, 0x65, 0x66, 
40610
  0x69, 0x78, 0xDA, 0x81, 0x26, 0xD8, 0x05, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x07, 0x6B, 0x65, 
40611
  0x79, 0x77, 0x6F, 0x72, 0x64, 0xDA, 0x80, 0xAB, 0xD0, 0x03, 0x64, 0x79, 0x6E, 0x00, 0x32, 0x00, 
40612
  0xCF, 0x05, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x00, 0x32, 0x01, 0xCF, 0x04, 0x6D, 0x6F, 0x72, 0x65, 
40613
  0x00, 0x32, 0x02, 0xDA, 0x86, 0x41, 0x03, 0x08, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40614
  0x30, 0x30, 0x0A, 0x0F, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x18, 0x1D, 
40615
  0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x21, 0x32, 0x04, 0xDA, 0x85, 0xE8, 
40616
  0x2A, 0x32, 0x05, 0xCF, 0x02, 0x6B, 0x77, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 
40617
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2C, 
40618
  0x03, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x22, 0x04, 0x03, 0x02, 0x1B, 
40619
  0x03, 0x04, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x01, 
40620
  0x04, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x3F, 0x04, 0x00, 0x00, 0x07, 
40621
  0x05, 0x04, 0x01, 0x3B, 0x04, 0x00, 0x05, 0x2B, 0x06, 0x2A, 0x00, 0x25, 0x05, 0x06, 0x03, 0x1E, 
40622
  0x05, 0x02, 0x00, 0x25, 0x05, 0x03, 0x04, 0x1B, 0x03, 0x05, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 
40623
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x01, 0x04, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x31, 
40624
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 
40625
  0x05, 0x01, 0x00, 0x2B, 0x06, 0xFE, 0xFF, 0x33, 0x00, 0x05, 0x06, 0x2C, 0x06, 0x05, 0x00, 0x35, 
40626
  0x05, 0x06, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 
40627
  0x05, 0x06, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x33, 0x08, 0x00, 0x09, 0x34, 
40628
  0x01, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x80, 
40629
  0xA4, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40630
  0x01, 0x0E, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x11, 
40631
  0x00, 0x11, 0x00, 0x2D, 0x00, 0x2A, 0x00, 0x1F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
40632
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40633
  0x00, 0x0F, 0x00, 0x03, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0B, 
40634
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40635
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x03, 0x67, 0x65, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1B, 
40636
  0x04, 0x03, 0x02, 0x03, 0x00, 0x06, 0xCE, 0x03, 0x67, 0x65, 0x74, 0x3B, 0x00, 0x00, 0x01, 0x28, 
40637
  0x03, 0x00, 0x00, 0x25, 0x03, 0x00, 0x03, 0x1D, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 
40638
  0x02, 0x00, 0x00, 0xDA, 0x86, 0x21, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x01, 0x01, 
40639
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x03, 0xCE, 0x05, 0x64, 0x65, 0x66, 0x6E, 0x2D, 
40640
  0xDA, 0x04, 0xDA, 0x85, 0xE6, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x18, 0x01, 0x01, 0xCD, 
40641
  0x7F, 0xFF, 0xFF, 0xFF, 0x11, 0x45, 0x00, 0x01, 0x0C, 0xCE, 0x04, 0x64, 0x65, 0x66, 0x6E, 0xDA, 
40642
  0x04, 0xDA, 0x81, 0x6E, 0xCE, 0x01, 0x28, 0xDA, 0x86, 0x68, 0xDA, 0x84, 0x5C, 0xDA, 0x83, 0xE8, 
40643
  0xDA, 0x81, 0x6F, 0xDA, 0x81, 0x70, 0xCE, 0x03, 0x29, 0x0A, 0x0A, 0xDA, 0x81, 0x28, 0xDA, 0x30, 
40644
  0xDA, 0x85, 0x17, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xC8, 0xD0, 0x0B, 0x73, 0x6F, 0x75, 0x72, 0x63, 
40645
  0x65, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0xDA, 0x2C, 0xDA, 0x80, 0xAE, 0xDA, 0x80, 0xAB, 0x00, 0x45, 
40646
  0x00, 0xDA, 0x81, 0x86, 0x00, 0x45, 0x01, 0xDA, 0x86, 0x74, 0x00, 0x45, 0x02, 0xDA, 0x86, 0x3D, 
40647
  0x01, 0x45, 0x04, 0xDA, 0x37, 0x03, 0x45, 0x06, 0xCF, 0x09, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
40648
  0x65, 0x72, 0x73, 0x04, 0x45, 0x07, 0xCF, 0x06, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x06, 0x45, 
40649
  0x09, 0xCF, 0x06, 0x66, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x45, 0x0B, 0xDA, 0x35, 0x0C, 0x45, 
40650
  0x0D, 0xDA, 0x81, 0x4D, 0x0D, 0x45, 0x0E, 0xCF, 0x05, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x0F, 0x45, 
40651
  0x10, 0xCF, 0x06, 0x61, 0x72, 0x67, 0x6C, 0x65, 0x6E, 0x14, 0x45, 0x12, 0xDA, 0x85, 0x62, 0x3F, 
40652
  0x03, 0x01, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 
40653
  0x07, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x31, 
40654
  0x0A, 0x00, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3A, 0x0C, 0x01, 0x0B, 0x1B, 
40655
  0x0D, 0x0C, 0x00, 0x2B, 0x0E, 0x00, 0x00, 0x3F, 0x0F, 0x0D, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2C, 
40656
  0x11, 0x01, 0x00, 0x32, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x02, 0x00, 0x35, 0x11, 0x12, 0x00, 0x1B, 
40657
  0x12, 0x11, 0x00, 0x23, 0x13, 0x0E, 0x10, 0x1E, 0x13, 0x0C, 0x00, 0x2C, 0x14, 0x03, 0x00, 0x32, 
40658
  0x12, 0x14, 0x00, 0x2C, 0x15, 0x04, 0x00, 0x35, 0x14, 0x15, 0x00, 0x3A, 0x14, 0x0D, 0x0E, 0x2C, 
40659
  0x15, 0x05, 0x00, 0x33, 0x12, 0x15, 0x14, 0x2C, 0x16, 0x06, 0x00, 0x35, 0x15, 0x16, 0x00, 0x05, 
40660
  0x0E, 0x0E, 0x01, 0x1C, 0xF4, 0xFF, 0xFF, 0x2C, 0x13, 0x07, 0x00, 0x33, 0x12, 0x13, 0x07, 0x2C, 
40661
  0x14, 0x08, 0x00, 0x35, 0x13, 0x14, 0x00, 0x32, 0x06, 0x13, 0x00, 0x2C, 0x15, 0x09, 0x00, 0x35, 
40662
  0x14, 0x15, 0x00, 0x2C, 0x13, 0x0A, 0x00, 0x31, 0x13, 0x00, 0x00, 0x2C, 0x15, 0x0B, 0x00, 0x35, 
40663
  0x13, 0x15, 0x00, 0x1E, 0x13, 0x0B, 0x00, 0x2C, 0x15, 0x0C, 0x00, 0x31, 0x15, 0x00, 0x00, 0x2C, 
40664
  0x16, 0x0B, 0x00, 0x35, 0x15, 0x16, 0x00, 0x2C, 0x16, 0x0D, 0x00, 0x32, 0x16, 0x15, 0x00, 0x43, 
40665
  0x15, 0x00, 0x00, 0x32, 0x06, 0x15, 0x00, 0x2C, 0x17, 0x09, 0x00, 0x35, 0x16, 0x17, 0x00, 0x32, 
40666
  0x01, 0x0B, 0x00, 0x2C, 0x15, 0x0E, 0x00, 0x35, 0x13, 0x15, 0x00, 0x2C, 0x16, 0x0F, 0x00, 0x32, 
40667
  0x16, 0x00, 0x00, 0x34, 0x13, 0x00, 0x00, 0x45, 0x15, 0x00, 0x00, 0x2C, 0x16, 0x10, 0x00, 0x32, 
40668
  0x16, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x31, 0x15, 0x00, 0x00, 0x45, 0x13, 0x00, 0x00, 0x03, 
40669
  0x13, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x04, 0x1C, 0x01, 0x0A, 
40670
  0xDA, 0x82, 0xA9, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 0x81, 0xF3, 0xDA, 0x30, 0xBF, 0xFF, 
40671
  0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x74, 0xBF, 0xFF, 0x00, 0x02, 
40672
  0xDA, 0x86, 0x3D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x37, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x86, 0x83, 
40673
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x86, 0x84, 0x00, 0x1C, 0x00, 0xDA, 0x43, 0x00, 0x1C, 0x01, 0xDA, 
40674
  0x82, 0x9F, 0x03, 0x1C, 0x03, 0xCF, 0x03, 0x69, 0x74, 0x68, 0x07, 0x1C, 0x04, 0xDA, 0x82, 0x33, 
40675
  0x2E, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x3A, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 
40676
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 
40677
  0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x04, 0x06, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 
40678
  0x2C, 0x07, 0x02, 0x00, 0x25, 0x06, 0x04, 0x07, 0x1E, 0x06, 0x03, 0x00, 0x2F, 0x03, 0x00, 0x07, 
40679
  0x1C, 0x05, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x06, 0x32, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x03, 0x00, 
40680
  0x35, 0x07, 0x08, 0x00, 0x2D, 0x07, 0x00, 0x04, 0x23, 0x06, 0x00, 0x07, 0x1E, 0x06, 0x04, 0x00, 
40681
  0x05, 0x07, 0x00, 0x01, 0x31, 0x07, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
40682
  0xBF, 0xFF, 0x15, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 
40683
  0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x03, 0x11, 0x00, 0x11, 0x00, 0x0D, 
40684
  0x01, 0x0F, 0xBF, 0xFF, 0x0D, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x11, 0x00, 
40685
  0x11, 0x00, 0x0D, 0x00, 0x22, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0D, 0x11, 0x0E, 0x00, 0x05, 0x01, 
40686
  0x05, 0x00, 0x05, 0x01, 0x05, 0x02, 0x07, 0xBF, 0xFF, 0x05, 0x0B, 0x10, 0x00, 0x10, 0x00, 0x10, 
40687
  0x00, 0x05, 0x01, 0x0F, 0x00, 0x05, 0x02, 0x05, 0x01, 0x11, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 
40688
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
40689
  0x00, 0x07, 0x01, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0xBF, 0xFD, 
40690
  0x05, 0x04, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
40691
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 
40692
  0x3A, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x02, 0x29, 0x00, 
40693
  0x29, 0x00, 0x29, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40694
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xDA, 0x81, 
40695
  0x86, 0x00, 0x05, 0x01, 0xDA, 0x86, 0x74, 0x00, 0x05, 0x02, 0xDA, 0x86, 0x21, 0x2C, 0x03, 0x00, 
40696
  0x00, 0x32, 0x00, 0x03, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 
40697
  0x00, 0x44, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x09, 0x6D, 0x61, 0x74, 
40698
  0x68, 0x2F, 0x65, 0x72, 0x66, 0x63, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 
40699
  0x63, 0xCF, 0x07, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40700
  0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xCE, 0x07, 0x74, 0x72, 0x75, 0x74, 0x68, 
40701
  0x79, 0x3F, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x86, 0x8B, 0x1E, 
40702
  0x00, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x03, 
40703
  0x02, 0x00, 0x00, 0x72, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0xCF, 0x0B, 0x61, 
40704
  0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40705
  0x00, 0x0D, 0x02, 0x02, 0x02, 0x01, 0x1B, 0x00, 0x06, 0xCE, 0x0B, 0x61, 0x63, 0x63, 0x75, 0x6D, 
40706
  0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x1B, 0x00, 0xDA, 0x31, 0x00, 
40707
  0x1B, 0x01, 0xDA, 0x33, 0x00, 0x1B, 0x02, 0xDA, 0x86, 0x8E, 0x02, 0x1B, 0x04, 0xDA, 0x3A, 0x04, 
40708
  0x1B, 0x06, 0xDA, 0x39, 0x0A, 0x1B, 0x08, 0xDA, 0x7E, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x01, 
40709
  0x04, 0x1B, 0x04, 0x03, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x28, 0x08, 0x00, 
40710
  0x00, 0x25, 0x07, 0x08, 0x04, 0x1E, 0x07, 0x02, 0x00, 0x03, 0x06, 0x00, 0x00, 0x3A, 0x07, 0x01, 
40711
  0x04, 0x1B, 0x08, 0x07, 0x00, 0x32, 0x06, 0x08, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x09, 0x0A, 
40712
  0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x0B, 0x00, 0x00, 0x4A, 0x0A, 0x0B, 0x04, 0x1E, 0x0A, 0x09, 
40713
  0x00, 0x3A, 0x0B, 0x01, 0x04, 0x32, 0x08, 0x0B, 0x00, 0x35, 0x08, 0x00, 0x00, 0x32, 0x06, 0x08, 
40714
  0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x49, 0x04, 0x01, 0x04, 0x1C, 0xF6, 0xFF, 
40715
  0xFF, 0x03, 0x06, 0x00, 0x00, 0x84, 0x04, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
40716
  0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x11, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
40717
  0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x0E, 0x00, 0x0E, 
40718
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0xBF, 0xFD, 0x03, 0xBF, 0xF5, 0x01, 0xCF, 0x0B, 
40719
  0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 
40720
  0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0xCF, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
40721
  0x65, 0x3C, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
40722
  0xFF, 0xFF, 0x01, 0x33, 0x00, 0x0B, 0xCE, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 
40723
  0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x33, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x33, 0x01, 0xDA, 
40724
  0x86, 0x93, 0x00, 0x33, 0x02, 0xDA, 0x7E, 0x03, 0x33, 0x04, 0xDA, 0x1E, 0x04, 0x32, 0x03, 0xDA, 
40725
  0x43, 0x06, 0x32, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x0A, 0x30, 0x08, 
40726
  0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x48, 0x14, 
40727
  0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x49, 0x1A, 0x28, 0x0C, 0xCF, 0x07, 
40728
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4A, 0x22, 0x28, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40729
  0x30, 0x30, 0x4B, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x1B, 
40730
  0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 
40731
  0x05, 0x03, 0x06, 0x1E, 0x05, 0x2A, 0x00, 0x3A, 0x07, 0x00, 0x03, 0x1B, 0x08, 0x07, 0x00, 0x2C, 
40732
  0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1E, 0x09, 0x05, 0x00, 0x32, 
40733
  0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 
40734
  0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 
40735
  0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 
40736
  0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 0x09, 0x0E, 0x0D, 0xFF, 0x1B, 
40737
  0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 
40738
  0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x27, 0x0E, 0x04, 0x08, 0x1B, 
40739
  0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x48, 0x09, 0x07, 0x0A, 0x1E, 
40740
  0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 
40741
  0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD6, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 
40742
  0x80, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40743
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40744
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40745
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40746
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40747
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40748
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 
40749
  0x65, 0x78, 0x74, 0xD7, 0x01, 0xCD, 0x03, 0xFF, 0x00, 0x00, 0x0E, 0x01, 0x00, 0xCD, 0x7F, 0xFF, 
40750
  0xFF, 0xFF, 0x07, 0x29, 0x01, 0x01, 0x09, 0xCE, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 
40751
  0x74, 0x65, 0x78, 0x74, 0xDA, 0x04, 0xD0, 0x0B, 0x6D, 0x61, 0x70, 0x2D, 0x73, 0x79, 0x6D, 0x62, 
40752
  0x6F, 0x6C, 0x73, 0xD0, 0x04, 0x6C, 0x61, 0x7A, 0x79, 0xDA, 0x83, 0x0F, 0xD0, 0x0B, 0x6E, 0x61, 
40753
  0x74, 0x69, 0x76, 0x65, 0x2D, 0x6C, 0x61, 0x7A, 0x79, 0xD0, 0x0B, 0x6E, 0x61, 0x74, 0x69, 0x76, 
40754
  0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x81, 0xCA, 0xDA, 0x82, 0xC9, 0xBF, 0xFF, 0x00, 0x00, 
40755
  0xDA, 0x84, 0x28, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x0E, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
40756
  0x2D, 0x6D, 0x61, 0x6E, 0x67, 0x6C, 0x65, 0x00, 0x29, 0x00, 0xCF, 0x0B, 0x6E, 0x61, 0x74, 0x69, 
40757
  0x76, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x02, 0x29, 0x05, 0xCF, 0x0B, 0x6D, 0x61, 0x70, 0x2D, 
40758
  0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x05, 0x29, 0x06, 0xCF, 0x04, 0x6C, 0x61, 0x7A, 0x79, 
40759
  0x06, 0x29, 0x01, 0xDA, 0x86, 0x9B, 0x0B, 0x29, 0x07, 0xDA, 0x86, 0xA4, 0x13, 0x29, 0x09, 0xCF, 
40760
  0x03, 0x6C, 0x69, 0x62, 0x1A, 0x29, 0x0B, 0xCF, 0x08, 0x6C, 0x61, 0x7A, 0x79, 0x2D, 0x6C, 0x69, 
40761
  0x62, 0x2C, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x01, 
40762
  0x00, 0x3A, 0x04, 0x01, 0x06, 0x1B, 0x06, 0x04, 0x00, 0x2E, 0x01, 0x00, 0x00, 0x20, 0x05, 0x03, 
40763
  0x00, 0x2D, 0x04, 0x00, 0x02, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1B, 0x07, 0x04, 
40764
  0x00, 0x1E, 0x06, 0x03, 0x00, 0x28, 0x08, 0x00, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x31, 0x00, 0x00, 
40765
  0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 
40766
  0x00, 0x1E, 0x06, 0x05, 0x00, 0x30, 0x0B, 0x00, 0x00, 0x35, 0x0C, 0x0B, 0x00, 0x1B, 0x0A, 0x0C, 
40767
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x2C, 0x0C, 0x03, 
40768
  0x00, 0x2C, 0x0D, 0x04, 0x00, 0x33, 0x0C, 0x0B, 0x0D, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x00, 0x0C, 
40769
  0x09, 0x2C, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x33, 0x0C, 0x07, 0x0D, 0x31, 0x06, 0x00, 
40770
  0x00, 0x44, 0x0C, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x00, 0x32, 0x0D, 0x0C, 0x00, 0x2C, 0x0D, 0x06, 
40771
  0x00, 0x36, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x02, 0xF6, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
40772
  0x00, 0x04, 0x01, 0x01, 0x08, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 0xA3, 0xBF, 0xFF, 
40773
  0x00, 0x05, 0xDA, 0x86, 0xA4, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x86, 0xA5, 0xBF, 0xFF, 0x00, 0x01, 
40774
  0xDA, 0x86, 0x9B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x86, 0xA4, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x86, 
40775
  0xA6, 0x00, 0x04, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x52, 0x01, 0x04, 0x01, 
40776
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x53, 0x28, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 
40777
  0x00, 0x30, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
40778
  0x02, 0x00, 0x00, 0x00, 0x01, 0x0D, 0x02, 0x08, 0xDA, 0x04, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x01, 
40779
  0x00, 0xDA, 0x86, 0xA3, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x86, 0xA4, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 
40780
  0x86, 0xA5, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x86, 0x9B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x86, 0xA4, 
40781
  0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 0xA8, 0xBF, 0xFF, 
40782
  0x00, 0x01, 0xDA, 0x86, 0xA9, 0x2D, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x03, 0x00, 0x2D, 0x00, 0x00, 
40783
  0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x01, 0x2D, 0x00, 0x01, 
40784
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2F, 0x00, 0x00, 
40785
  0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0x7E, 0x1C, 0x00, 
40786
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 
40787
  0x23, 0x00, 0x23, 0x00, 0x1C, 0x00, 0x1C, 0x8F, 0x7E, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
40788
  0x03, 0x00, 0x00, 0x00, 0x8F, 0x78, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40789
  0x03, 0x00, 0x03, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 
40790
  0x0E, 0x00, 0x0E, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 
40791
  0x1C, 0x00, 0x1C, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
40792
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40793
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDA, 0x84, 0x29, 
40794
  0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
40795
  0x03, 0x05, 0x00, 0x02, 0xCE, 0x0E, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x6D, 0x61, 
40796
  0x6E, 0x67, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0x12, 0xCE, 0x01, 0x5F, 0xD8, 0x12, 0x73, 0x74, 
40797
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 
40798
  0x00, 0x05, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x05, 0x01, 0xDA, 0x86, 0xA2, 0x2C, 0x02, 0x00, 0x00, 
40799
  0x2C, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x36, 0x02, 0x00, 0x00, 
40800
  0x8F, 0x76, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xC9, 0xC9, 0xC9, 0xC9, 0xCF, 
40801
  0x05, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xD8, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xCF, 0x0C, 0x66, 
40802
  0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x85, 0x94, 0xDA, 0x82, 
40803
  0x52, 0xDA, 0x82, 0x4C, 0xDA, 0x84, 0x80, 0xDA, 0x84, 0x7E, 0xCF, 0x02, 0x25, 0x3D, 0xD7, 0x00, 
40804
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 
40805
  0x03, 0xCE, 0x02, 0x25, 0x3D, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x1E, 0x06, 0x00, 
40806
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x86, 0x3F, 0x01, 0x00, 0x00, 0x26, 
40807
  0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 
40808
  0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0F, 
40809
  0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 
40810
  0x04, 0x00, 0x05, 0x0F, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 
40811
  0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 
40812
  0x08, 0x01, 0xDA, 0x83, 0x04, 0x00, 0x08, 0x02, 0xDA, 0x86, 0xB1, 0x2C, 0x04, 0x00, 0x00, 0x32, 
40813
  0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 
40814
  0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x91, 0x38, 0x00, 0x38, 
40815
  0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0xCF, 0x0D, 0x6B, 0x65, 
40816
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0D, 0x6B, 0x65, 0x79, 
40817
  0x77, 0x6F, 0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xCF, 0x01, 0x2B, 0xDA, 0x82, 0x78, 
40818
  0xCF, 0x08, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40819
  0x00, 0x0C, 0x02, 0x02, 0x02, 0x01, 0x18, 0x00, 0x09, 0xCE, 0x08, 0x67, 0x72, 0x6F, 0x75, 0x70, 
40820
  0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x18, 0x00, 0xDA, 0x31, 0x00, 0x18, 0x01, 0xDA, 
40821
  0x33, 0x00, 0x18, 0x02, 0xDA, 0x86, 0xB8, 0x01, 0x18, 0x04, 0xDA, 0x39, 0x01, 0x17, 0x01, 0xCF, 
40822
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x70, 0x04, 0x17, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40823
  0x30, 0x30, 0x33, 0x6F, 0x07, 0x17, 0x07, 0xDA, 0x1E, 0x0A, 0x17, 0x08, 0xDA, 0x80, 0x87, 0x0C, 
40824
  0x15, 0x09, 0xDA, 0x42, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 
40825
  0x49, 0x05, 0x01, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x12, 0x00, 0x3A, 0x05, 0x01, 0x06, 
40826
  0x1B, 0x07, 0x05, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x1B, 0x08, 0x05, 0x00, 
40827
  0x3B, 0x05, 0x04, 0x08, 0x1B, 0x09, 0x05, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x32, 0x09, 0x07, 0x00, 
40828
  0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 
40829
  0x40, 0x0A, 0x00, 0x00, 0x3C, 0x04, 0x08, 0x0A, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xEF, 0xFF, 0xFF, 
40830
  0x03, 0x04, 0x00, 0x00, 0x86, 0xD4, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40831
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x12, 0x00, 0x05, 0x00, 
40832
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 
40833
  0xBF, 0xFC, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x82, 0x1B, 0xDA, 0x82, 0x18, 0xCF, 0x06, 
40834
  0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x02, 
40835
  0x03, 0x02, 0x18, 0x00, 0x08, 0xCE, 0x06, 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0xDA, 0x04, 0xDA, 
40836
  0x85, 0xB7, 0xDA, 0x82, 0x51, 0x00, 0x18, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x18, 0x01, 0xDA, 0x83, 
40837
  0x71, 0x00, 0x18, 0x02, 0xDA, 0x85, 0xB5, 0x00, 0x18, 0x03, 0xDA, 0x86, 0xBD, 0x00, 0x18, 0x04, 
40838
  0xDA, 0x81, 0x15, 0x00, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x57, 0x03, 
40839
  0x13, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x56, 0x06, 0x13, 0x07, 0xDA, 0x3A, 
40840
  0x1B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 0x1B, 0x06, 0x05, 0x00, 
40841
  0x1F, 0x06, 0x0F, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 
40842
  0x2C, 0x08, 0x00, 0x00, 0x35, 0x05, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 
40843
  0x35, 0x08, 0x09, 0x00, 0x1E, 0x08, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 
40844
  0x3B, 0x04, 0x04, 0x07, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xF2, 0xFF, 0xFF, 0x28, 0x06, 0x00, 0x00, 
40845
  0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 
40846
  0x86, 0x53, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40847
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 
40848
  0x03, 0x00, 0x31, 0x00, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 
40849
  0x03, 0xCF, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xDA, 0x83, 
40850
  0x9A, 0xCF, 0x0E, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 
40851
  0x2A, 0xDA, 0x81, 0xB2, 0xCF, 0x0C, 0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 
40852
  0x72, 0x2A, 0xDA, 0x85, 0x7D, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 
40853
  0x6D, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x10, 0x62, 
40854
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD8, 
40855
  0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 
40856
  0x72, 0xCF, 0x0E, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 
40857
  0x2A, 0xDA, 0x81, 0xA0, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 
40858
  0xDA, 0x81, 0x60, 0xCF, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6E, 
40859
  0x65, 0x77, 0xD8, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6E, 0x65, 
40860
  0x77, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x83, 0x07, 0xCF, 0x01, 
40861
  0x2D, 0xDA, 0x84, 0x11, 0xDA, 0x85, 0xEB, 0xDA, 0x85, 0xDF, 0xCF, 0x07, 0x67, 0x65, 0x6F, 0x6D, 
40862
  0x65, 0x61, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x03, 0x29, 
40863
  0x00, 0x0B, 0xCE, 0x07, 0x67, 0x65, 0x6F, 0x6D, 0x65, 0x61, 0x6E, 0xDA, 0x04, 0xDA, 0x40, 0xD8, 
40864
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0xDA, 0x85, 0xFE, 0x00, 0x29, 0x00, 0xDA, 
40865
  0x81, 0x5C, 0x00, 0x29, 0x01, 0xDA, 0x86, 0xCF, 0x04, 0x16, 0x03, 0xDA, 0x83, 0xC0, 0x04, 0x11, 
40866
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6D, 0x07, 0x11, 0x05, 0xCF, 0x07, 0x5F, 
40867
  0x30, 0x30, 0x30, 0x30, 0x30, 0x6C, 0x0A, 0x11, 0x06, 0xDA, 0x1E, 0x16, 0x29, 0x03, 0xDA, 0x83, 
40868
  0xC0, 0x17, 0x29, 0x04, 0xCF, 0x05, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x17, 0x25, 0x00, 0xCF, 0x07, 
40869
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6F, 0x1A, 0x25, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40870
  0x30, 0x30, 0x6E, 0x1D, 0x25, 0x07, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
40871
  0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x13, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 
40872
  0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x09, 0x00, 0x3A, 0x04, 0x00, 0x05, 
40873
  0x1B, 0x06, 0x04, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x04, 0x07, 0x00, 
40874
  0x06, 0x03, 0x03, 0x04, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF8, 0xFF, 0xFF, 0x3F, 0x04, 0x00, 0x00, 
40875
  0x0C, 0x05, 0x03, 0x04, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 
40876
  0x2B, 0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 
40877
  0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x0A, 0x00, 0x3A, 0x05, 0x00, 0x06, 0x1B, 0x07, 0x05, 0x00, 
40878
  0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x05, 0x08, 0x00, 0x06, 0x03, 0x03, 0x05, 
40879
  0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xF7, 0xFF, 0xFF, 0x0C, 0x05, 0x03, 0x04, 
40880
  0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x36, 0x06, 0x00, 0x00, 0x82, 0xD9, 0x07, 0x00, 
40881
  0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
40882
  0x07, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x07, 0x00, 0x07, 0x01, 
40883
  0x1A, 0x00, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 
40884
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
40885
  0x12, 0x00, 0x2A, 0x00, 0x07, 0x00, 0x07, 0x01, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCF, 
40886
  0x10, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 
40887
  0x6E, 0xD8, 0x10, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6C, 0x69, 0x73, 
40888
  0x74, 0x65, 0x6E, 0xCF, 0x04, 0x62, 0x6E, 0x6F, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x13, 
40889
  0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0xCE, 0x04, 0x62, 0x6E, 0x6F, 0x74, 0x13, 0x00, 0x00, 0x00, 
40890
  0x03, 0x00, 0x00, 0x00, 0xDA, 0x86, 0x4C, 0xDA, 0x81, 0xAB, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x6D, 
40891
  0x6B, 0x64, 0x69, 0x72, 0xDA, 0x81, 0x33, 0xCF, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x74, 0x72, 
40892
  0x75, 0x63, 0x74, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xDA, 
40893
  0x82, 0xF9, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x04, 0x02, 0x04, 0x09, 0x3C, 0x01, 
40894
  0x29, 0xCE, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0xDA, 0x04, 0xDA, 
40895
  0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xCE, 0x16, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x73, 0x20, 0x64, 
40896
  0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0xDA, 0x81, 0x49, 
40897
  0xDA, 0x81, 0x3E, 0xDA, 0x80, 0xF1, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x67, 0xCE, 0x1A, 0x62, 0x61, 
40898
  0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x25, 0x73, 0x20, 0x2D, 0x20, 0x66, 0x69, 0x6C, 0x65, 
40899
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x25, 0x73, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 
40900
  0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 
40901
  0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
40902
  0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 
40903
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 
40904
  0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 
40905
  0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 
40906
  0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 
40907
  0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 
40908
  0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 
40909
  0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 
40910
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x82, 0xF6, 0xBF, 0xFF, 
40911
  0x00, 0x1B, 0xDA, 0x82, 0xF7, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x82, 0xF8, 0x00, 0x3C, 0x00, 0xDA, 
40912
  0x81, 0x39, 0x00, 0x3C, 0x01, 0xDA, 0x82, 0xFA, 0x00, 0x3C, 0x02, 0xDA, 0x82, 0xFB, 0x00, 0x3C, 
40913
  0x03, 0xDA, 0x82, 0xFC, 0x00, 0x3C, 0x04, 0xDA, 0x82, 0xF9, 0x05, 0x3C, 0x06, 0xDA, 0x82, 0xFB, 
40914
  0x08, 0x3C, 0x08, 0xDA, 0x81, 0x2A, 0x0D, 0x3C, 0x0A, 0xDA, 0x81, 0x78, 0x13, 0x3C, 0x0A, 0xCF, 
40915
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x35, 0x1A, 0x31, 0x0D, 0xDA, 0x84, 0x27, 0x1E, 0x30, 
40916
  0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x37, 0x21, 0x30, 0x0F, 0xCF, 0x07, 0x5F, 
40917
  0x30, 0x30, 0x30, 0x30, 0x38, 0x36, 0x24, 0x30, 0x10, 0xDA, 0x81, 0x15, 0x2E, 0x04, 0x00, 0x00, 
40918
  0x20, 0x02, 0x03, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 
40919
  0x1B, 0x06, 0x05, 0x00, 0x2D, 0x08, 0x00, 0x02, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 
40920
  0x2C, 0x09, 0x00, 0x00, 0x32, 0x01, 0x09, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 
40921
  0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 
40922
  0x32, 0x0B, 0x01, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x0C, 0x04, 0x00, 
40923
  0x25, 0x0B, 0x0A, 0x0C, 0x1E, 0x0B, 0x1B, 0x00, 0x33, 0x00, 0x06, 0x03, 0x2D, 0x0D, 0x00, 0x1A, 
40924
  0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x0E, 0x05, 0x00, 
40925
  0x35, 0x0C, 0x0E, 0x00, 0x1B, 0x0E, 0x0C, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0C, 0x0E, 0x0F, 
40926
  0x1B, 0x0F, 0x0C, 0x00, 0x1F, 0x0F, 0x0E, 0x00, 0x3A, 0x0C, 0x0E, 0x0F, 0x1B, 0x10, 0x0C, 0x00, 
40927
  0x33, 0x01, 0x08, 0x10, 0x2C, 0x11, 0x06, 0x00, 0x35, 0x0C, 0x11, 0x00, 0x33, 0x06, 0x08, 0x10, 
40928
  0x2C, 0x12, 0x06, 0x00, 0x35, 0x11, 0x12, 0x00, 0x33, 0x00, 0x0C, 0x11, 0x31, 0x03, 0x00, 0x00, 
40929
  0x35, 0x12, 0x04, 0x00, 0x49, 0x0F, 0x0E, 0x0F, 0x1C, 0xF3, 0xFF, 0xFF, 0x03, 0x0D, 0x00, 0x00, 
40930
  0x2C, 0x0D, 0x07, 0x00, 0x25, 0x0C, 0x0A, 0x0D, 0x1E, 0x0C, 0x05, 0x00, 0x33, 0x00, 0x01, 0x06, 
40931
  0x31, 0x03, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x1C, 0x36, 0x0D, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 
40932
  0x33, 0x0D, 0x01, 0x0A, 0x2C, 0x0D, 0x03, 0x00, 0x36, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x75, 
40933
  0x03, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
40934
  0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
40935
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x15, 0x00, 
40936
  0x15, 0x00, 0x15, 0x00, 0x07, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 
40937
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 
40938
  0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x09, 0xBF, 
40939
  0xFF, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
40940
  0x0D, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xDB, 0x01, 0xCF, 0x0B, 0x2A, 0x65, 0x72, 
40941
  0x72, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x2A, 0xDA, 0x84, 0xDC, 0xCF, 0x05, 0x78, 0x70, 0x72, 
40942
  0x69, 0x6E, 0xD8, 0x05, 0x78, 0x70, 0x72, 0x69, 0x6E, 0xCF, 0x06, 0x64, 0x6F, 0x63, 0x2D, 0x6F, 
40943
  0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x07, 0x32, 0x00, 0x0E, 
40944
  0xCE, 0x06, 0x64, 0x6F, 0x63, 0x2D, 0x6F, 0x66, 0xDA, 0x04, 0xD2, 0x02, 0x00, 0xD2, 0x01, 0x00, 
40945
  0xDA, 0x00, 0xDA, 0x81, 0xB6, 0xDA, 0x82, 0xC7, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40946
  0x00, 0x10, 0x01, 0x01, 0x01, 0x15, 0x7E, 0x00, 0x0A, 0xCE, 0x12, 0x70, 0x72, 0x69, 0x6E, 0x74, 
40947
  0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0xDA, 0x04, 0xD0, 
40948
  0x05, 0x72, 0x65, 0x64, 0x65, 0x66, 0xDA, 0x82, 0xC7, 0xDA, 0x1C, 0xD0, 0x03, 0x76, 0x61, 0x72, 
40949
  0xCE, 0x02, 0x20, 0x28, 0xCE, 0x01, 0x29, 0xDA, 0x81, 0x28, 0xDA, 0x59, 0xD0, 0x06, 0x6D, 0x6F, 
40950
  0x64, 0x75, 0x6C, 0x65, 0xD0, 0x04, 0x6B, 0x69, 0x6E, 0x64, 0xDA, 0x08, 0xCE, 0x04, 0x20, 0x20, 
40951
  0x20, 0x20, 0xDA, 0x84, 0x7D, 0xDA, 0x03, 0xDA, 0x06, 0xCE, 0x09, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 
40952
  0x69, 0x6E, 0x65, 0x20, 0xDA, 0x84, 0x66, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x49, 0x04, 
40953
  0x01, 0x04, 0x0A, 0x80, 0x8A, 0x00, 0x18, 0x2D, 0xCE, 0x0A, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 
40954
  0x72, 0x6D, 0x61, 0x74, 0xDA, 0x04, 0xD0, 0x09, 0x64, 0x6F, 0x63, 0x2D, 0x77, 0x69, 0x64, 0x74, 
40955
  0x68, 0xDA, 0x81, 0x26, 0xDA, 0x83, 0x39, 0xD5, 0x03, 0xD0, 0x04, 0x63, 0x6F, 0x64, 0x65, 0xD2, 
40956
  0x02, 0x00, 0xCE, 0x05, 0x1B, 0x5B, 0x39, 0x37, 0x6D, 0xCE, 0x05, 0x1B, 0x5B, 0x33, 0x39, 0x6D, 
40957
  0xD0, 0x04, 0x62, 0x6F, 0x6C, 0x64, 0xD2, 0x02, 0x00, 0xCE, 0x04, 0x1B, 0x5B, 0x31, 0x6D, 0xCE, 
40958
  0x05, 0x1B, 0x5B, 0x32, 0x32, 0x6D, 0xD0, 0x07, 0x69, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x73, 0xD2, 
40959
  0x02, 0x00, 0xCE, 0x04, 0x1B, 0x5B, 0x34, 0x6D, 0xCE, 0x05, 0x1B, 0x5B, 0x32, 0x34, 0x6D, 0xD5, 
40960
  0x03, 0xDA, 0x86, 0xFC, 0xD2, 0x02, 0x00, 0xCE, 0x01, 0x60, 0xDA, 0x87, 0x09, 0xDA, 0x87, 0x00, 
40961
  0xD2, 0x02, 0x00, 0xCE, 0x02, 0x2A, 0x2A, 0xDA, 0x87, 0x0B, 0xDA, 0x87, 0x04, 0xD2, 0x02, 0x00, 
40962
  0xDA, 0x84, 0x5E, 0xDA, 0x84, 0x5E, 0xDA, 0x3D, 0xDA, 0x86, 0xFD, 0xDA, 0x81, 0x6E, 0xDA, 0x86, 
40963
  0xFE, 0xDA, 0x81, 0x28, 0x00, 0x80, 0x8A, 0x00, 0xDA, 0x14, 0x00, 0x80, 0x8A, 0x01, 0xCF, 0x05, 
40964
  0x77, 0x69, 0x64, 0x74, 0x68, 0x00, 0x80, 0x8A, 0x02, 0xCF, 0x06, 0x69, 0x6E, 0x64, 0x65, 0x6E, 
40965
  0x74, 0x00, 0x80, 0x8A, 0x03, 0xCF, 0x08, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x00, 
40966
  0x80, 0x8A, 0x04, 0xCF, 0x0A, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x04, 
40967
  0x80, 0x8A, 0x06, 0xDA, 0x87, 0x10, 0x04, 0x0E, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40968
  0x35, 0x52, 0x0F, 0x80, 0x8A, 0x07, 0xCF, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 
40969
  0x68, 0x1A, 0x80, 0x8A, 0x0A, 0xCF, 0x09, 0x68, 0x61, 0x73, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 
40970
  0x1F, 0x80, 0x8A, 0x0C, 0xCF, 0x0A, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x73, 
40971
  0x21, 0x80, 0x8A, 0x0E, 0xCF, 0x05, 0x6D, 0x6F, 0x64, 0x65, 0x73, 0x23, 0x80, 0x8A, 0x10, 0xCF, 
40972
  0x0B, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x24, 0x80, 0x8A, 0x11, 
40973
  0xCF, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x26, 0x80, 0x8A, 0x13, 0xDA, 0x84, 0x40, 0x28, 
40974
  0x80, 0x8A, 0x15, 0xDA, 0x83, 0x1C, 0x2A, 0x80, 0x8A, 0x17, 0xCF, 0x02, 0x63, 0x6E, 0x2C, 0x80, 
40975
  0x8A, 0x19, 0xCF, 0x03, 0x63, 0x2B, 0x2B, 0x2E, 0x80, 0x8A, 0x1B, 0xCF, 0x04, 0x63, 0x2B, 0x3D, 
40976
  0x6E, 0x30, 0x80, 0x8A, 0x1D, 0xCF, 0x09, 0x73, 0x6B, 0x69, 0x70, 0x77, 0x68, 0x69, 0x74, 0x65, 
40977
  0x32, 0x80, 0x8A, 0x1F, 0xCF, 0x08, 0x73, 0x6B, 0x69, 0x70, 0x6C, 0x69, 0x6E, 0x65, 0x34, 0x80, 
40978
  0x8A, 0x21, 0xCF, 0x03, 0x75, 0x6C, 0x3F, 0x36, 0x80, 0x8A, 0x23, 0xCF, 0x03, 0x6F, 0x6C, 0x3F, 
40979
  0x38, 0x80, 0x8A, 0x25, 0xCF, 0x04, 0x66, 0x63, 0x62, 0x3F, 0x3A, 0x80, 0x8A, 0x27, 0xCF, 0x03, 
40980
  0x6E, 0x6C, 0x3F, 0x3B, 0x80, 0x8A, 0x28, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x62, 
40981
  0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x3D, 0x80, 0x8A, 0x2A, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x73, 0x6C, 
40982
  0x69, 0x63, 0x65, 0x3F, 0x80, 0x8A, 0x2C, 0xCF, 0x04, 0x70, 0x75, 0x73, 0x68, 0x41, 0x80, 0x8A, 
40983
  0x2E, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x43, 0x80, 0x8A, 
40984
  0x30, 0xCF, 0x0D, 0x61, 0x64, 0x64, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
40985
  0x45, 0x80, 0x8A, 0x32, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x66, 0x63, 0x62, 0x47, 
40986
  0x80, 0x8A, 0x34, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x69, 0x63, 0x62, 0x49, 0x80, 
40987
  0x8A, 0x36, 0xCF, 0x0D, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x69, 0x7A, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 
40988
  0x65, 0x56, 0x6B, 0x37, 0xCF, 0x0A, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 
40989
  0x5B, 0x6B, 0x3A, 0xCF, 0x07, 0x66, 0x6C, 0x2D, 0x6F, 0x70, 0x65, 0x6E, 0x60, 0x6B, 0x3B, 0xCF, 
40990
  0x08, 0x66, 0x6C, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x71, 0x80, 0x8A, 0x39, 0xDA, 0x85, 0x62, 
40991
  0x72, 0x80, 0x8A, 0x3A, 0xCF, 0x0E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x63, 0x6F, 
40992
  0x6C, 0x75, 0x6D, 0x6E, 0x74, 0x80, 0x8A, 0x3C, 0xCF, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x69, 
40993
  0x6E, 0x64, 0x65, 0x6E, 0x74, 0x76, 0x80, 0x8A, 0x3E, 0xCF, 0x07, 0x65, 0x6D, 0x69, 0x74, 0x2D, 
40994
  0x6E, 0x6C, 0x78, 0x80, 0x8A, 0x40, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x77, 0x6F, 0x72, 
40995
  0x64, 0x7A, 0x80, 0x8A, 0x42, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x63, 0x6F, 0x64, 0x65, 
40996
  0x7C, 0x80, 0x8A, 0x44, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x6E, 0x6F, 0x64, 0x65, 0x7D, 
40997
  0x80, 0x89, 0x45, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x69, 0x80, 0x80, 0x80, 0x89, 
40998
  0x47, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x68, 0x80, 0x83, 0x80, 0x89, 0x48, 0xDA, 
40999
  0x83, 0xC3, 0x20, 0x02, 0x03, 0x00, 0x2B, 0x05, 0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 
41000
  0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x01, 0x03, 0x00, 0x1B, 0x07, 0x01, 0x00, 0x1C, 0x07, 
41001
  0x00, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x2B, 0x09, 0x50, 0x00, 0x32, 0x08, 0x09, 0x00, 0x2C, 0x09, 
41002
  0x01, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x07, 0x08, 0x07, 0x08, 0x1B, 0x07, 
41003
  0x08, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x4A, 0x0A, 0x0B, 0x03, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x09, 
41004
  0x03, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 
41005
  0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 
41006
  0x03, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x1B, 0x0C, 
41007
  0x0B, 0x00, 0x44, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x1B, 0x10, 
41008
  0x0F, 0x00, 0x2B, 0x11, 0x00, 0x00, 0x40, 0x12, 0x00, 0x00, 0x1B, 0x13, 0x12, 0x00, 0x30, 0x14, 
41009
  0x01, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x30, 0x16, 0x02, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x30, 0x18, 
41010
  0x03, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x30, 0x1A, 0x04, 0x00, 0x1B, 0x1B, 0x1A, 0x00, 0x30, 0x1C, 
41011
  0x05, 0x00, 0x1B, 0x1D, 0x1C, 0x00, 0x30, 0x1E, 0x06, 0x00, 0x1B, 0x1F, 0x1E, 0x00, 0x30, 0x20, 
41012
  0x07, 0x00, 0x1B, 0x21, 0x20, 0x00, 0x30, 0x22, 0x08, 0x00, 0x1B, 0x23, 0x22, 0x00, 0x30, 0x24, 
41013
  0x09, 0x00, 0x1B, 0x25, 0x24, 0x00, 0x30, 0x26, 0x0A, 0x00, 0x1B, 0x27, 0x26, 0x00, 0x28, 0x28, 
41014
  0x00, 0x00, 0x30, 0x29, 0x0B, 0x00, 0x1B, 0x2A, 0x29, 0x00, 0x30, 0x2B, 0x0C, 0x00, 0x1B, 0x2C, 
41015
  0x2B, 0x00, 0x30, 0x2D, 0x0D, 0x00, 0x1B, 0x2E, 0x2D, 0x00, 0x30, 0x2F, 0x0E, 0x00, 0x1B, 0x30, 
41016
  0x2F, 0x00, 0x30, 0x31, 0x0F, 0x00, 0x1B, 0x32, 0x31, 0x00, 0x30, 0x33, 0x10, 0x00, 0x1B, 0x34, 
41017
  0x33, 0x00, 0x30, 0x35, 0x11, 0x00, 0x1B, 0x36, 0x35, 0x00, 0x30, 0x28, 0x12, 0x00, 0x2B, 0x38, 
41018
  0x00, 0x00, 0x3A, 0x37, 0x00, 0x38, 0x2B, 0x39, 0x28, 0x00, 0x25, 0x38, 0x39, 0x37, 0x1E, 0x38, 
41019
  0x1C, 0x00, 0x35, 0x37, 0x1F, 0x00, 0x07, 0x37, 0x11, 0x01, 0x2B, 0x39, 0x00, 0x00, 0x33, 0x00, 
41020
  0x39, 0x37, 0x2C, 0x3A, 0x05, 0x00, 0x35, 0x39, 0x3A, 0x00, 0x1B, 0x37, 0x39, 0x00, 0x1E, 0x0A, 
41021
  0x03, 0x00, 0x2C, 0x39, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x39, 0x07, 0x00, 0x1B, 0x3A, 
41022
  0x39, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x39, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x39, 
41023
  0x07, 0x00, 0x1B, 0x3B, 0x39, 0x00, 0x33, 0x3A, 0x37, 0x3B, 0x2C, 0x3C, 0x09, 0x00, 0x35, 0x39, 
41024
  0x3C, 0x00, 0x3F, 0x3C, 0x37, 0x00, 0x32, 0x39, 0x3C, 0x00, 0x45, 0x39, 0x00, 0x00, 0x31, 0x39, 
41025
  0x00, 0x00, 0x45, 0x39, 0x00, 0x00, 0x31, 0x39, 0x00, 0x00, 0x35, 0x3C, 0x2C, 0x00, 0x2B, 0x37, 
41026
  0x00, 0x00, 0x31, 0x37, 0x00, 0x00, 0x35, 0x37, 0x28, 0x00, 0x2C, 0x38, 0x07, 0x00, 0x31, 0x38, 
41027
  0x00, 0x00, 0x41, 0x38, 0x00, 0x00, 0x1B, 0x39, 0x38, 0x00, 0x2B, 0x3A, 0x00, 0x00, 0x30, 0x3B, 
41028
  0x13, 0x00, 0x1B, 0x3C, 0x3B, 0x00, 0x30, 0x3D, 0x14, 0x00, 0x1B, 0x3E, 0x3D, 0x00, 0x30, 0x3F, 
41029
  0x15, 0x00, 0x1B, 0x40, 0x3F, 0x00, 0x30, 0x41, 0x16, 0x00, 0x1B, 0x42, 0x41, 0x00, 0x30, 0x43, 
41030
  0x17, 0x00, 0x1B, 0x44, 0x43, 0x00, 0x1B, 0x45, 0x13, 0x00, 0x28, 0x47, 0x00, 0x00, 0x49, 0x46, 
41031
  0x45, 0x47, 0x1B, 0x47, 0x46, 0x00, 0x1F, 0x47, 0x08, 0x00, 0x3A, 0x46, 0x45, 0x47, 0x1B, 0x48, 
41032
  0x46, 0x00, 0x35, 0x46, 0x3E, 0x00, 0x32, 0x48, 0x06, 0x00, 0x35, 0x46, 0x44, 0x00, 0x49, 0x47, 
41033
  0x45, 0x47, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x39, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 
41034
  0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x0F, 0xCE, 0x0B, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x2D, 
41035
  0x6D, 0x6F, 0x64, 0x65, 0xDA, 0x04, 0xDA, 0x82, 0x51, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 
41036
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 
41037
  0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
41038
  0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 
41039
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 
41040
  0x00, 0x0E, 0xDA, 0x87, 0x17, 0x00, 0x11, 0x00, 0xDA, 0x81, 0x78, 0x00, 0x11, 0x01, 0xDA, 0x87, 
41041
  0x18, 0x02, 0x11, 0x03, 0xCF, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x05, 0x11, 0x05, 0xCF, 
41042
  0x06, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x73, 0x2D, 0x03, 0x00, 0x0E, 0x3B, 0x02, 0x03, 0x00, 0x1B, 
41043
  0x03, 0x02, 0x00, 0x2D, 0x05, 0x00, 0x0C, 0x3B, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 
41044
  0x03, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2D, 0x07, 0x00, 0x0E, 0x3C, 
41045
  0x07, 0x00, 0x06, 0x1E, 0x03, 0x03, 0x00, 0x2B, 0x06, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 
41046
  0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xC1, 0x11, 
41047
  0x00, 0x11, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 
41048
  0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 
41049
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x0F, 0xCE, 0x01, 0x63, 
41050
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 
41051
  0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 
41052
  0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41053
  0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 
41054
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 
41055
  0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 
41056
  0xDA, 0x84, 0x40, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x1C, 0x2D, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 
41057
  0x11, 0x3B, 0x01, 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xCB, 0x0E, 0x00, 0x0E, 
41058
  0x00, 0x0E, 0x00, 0x0E, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x01, 
41059
  0x11, 0xCE, 0x02, 0x63, 0x6E, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 
41060
  0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
41061
  0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 
41062
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 
41063
  0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 
41064
  0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 
41065
  0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0x00, 
41066
  0x05, 0x00, 0xDA, 0x32, 0x00, 0x05, 0x01, 0xDA, 0x87, 0x1A, 0x2D, 0x03, 0x00, 0x11, 0x06, 0x02, 
41067
  0x00, 0x03, 0x2D, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 
41068
  0x8C, 0xCC, 0x19, 0x00, 0x19, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41069
  0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x12, 0xCE, 0x03, 0x63, 0x2B, 0x2B, 0xDA, 0x04, 0xBF, 
41070
  0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 
41071
  0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 
41072
  0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 
41073
  0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 
41074
  0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
41075
  0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 
41076
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0x00, 0x08, 
41077
  0x00, 0xDA, 0x87, 0x1B, 0x03, 0x08, 0x02, 0xDA, 0x39, 0x2D, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 
41078
  0x11, 0x3B, 0x01, 0x02, 0x03, 0x1B, 0x02, 0x01, 0x00, 0x2D, 0x03, 0x00, 0x11, 0x05, 0x01, 0x03, 
41079
  0x01, 0x2F, 0x01, 0x00, 0x11, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xCD, 0x1A, 0x00, 0x1A, 
41080
  0x00, 0x1A, 0x00, 0x10, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 
41081
  0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x08, 0x01, 0x14, 0xCE, 0x04, 0x63, 0x2B, 0x3D, 0x6E, 0xDA, 
41082
  0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 
41083
  0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 
41084
  0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41085
  0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 
41086
  0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 
41087
  0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41088
  0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 
41089
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0x00, 0x08, 0x00, 0xDA, 0x32, 0x00, 0x08, 0x01, 0xDA, 
41090
  0x87, 0x1C, 0x03, 0x08, 0x03, 0xDA, 0x39, 0x2D, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x3B, 
41091
  0x02, 0x03, 0x04, 0x1B, 0x03, 0x02, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x06, 0x02, 0x04, 0x00, 0x2F, 
41092
  0x02, 0x00, 0x11, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xCE, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
41093
  0x00, 0x12, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x12, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
41094
  0x00, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x14, 0xCE, 0x09, 0x73, 0x6B, 0x69, 0x70, 0x77, 0x68, 0x69, 
41095
  0x74, 0x65, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41096
  0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 
41097
  0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 
41098
  0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
41099
  0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 
41100
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 
41101
  0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 
41102
  0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 
41103
  0x1C, 0x00, 0x0C, 0x00, 0xDA, 0x87, 0x1D, 0x00, 0x0C, 0x01, 0xDA, 0x1E, 0x2D, 0x01, 0x00, 0x11, 
41104
  0x2D, 0x03, 0x00, 0x15, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0x20, 0x1E, 0x03, 0x05, 0x00, 
41105
  0x2D, 0x04, 0x00, 0x11, 0x05, 0x02, 0x04, 0x01, 0x2F, 0x02, 0x00, 0x11, 0x1C, 0xF9, 0xFF, 0xFF, 
41106
  0x2D, 0x03, 0x00, 0x11, 0x08, 0x02, 0x03, 0x01, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xD1, 
41107
  0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
41108
  0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 
41109
  0x00, 0x13, 0x01, 0x17, 0xCE, 0x08, 0x73, 0x6B, 0x69, 0x70, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x04, 
41110
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 
41111
  0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
41112
  0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 
41113
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 
41114
  0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 
41115
  0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 
41116
  0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 
41117
  0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 
41118
  0x1D, 0xDA, 0x87, 0x1D, 0x00, 0x13, 0x00, 0xDA, 0x87, 0x1E, 0x00, 0x13, 0x01, 0xDA, 0x1E, 0x03, 
41119
  0x09, 0x03, 0xDA, 0x80, 0x87, 0x03, 0x09, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
41120
  0x53, 0x2D, 0x01, 0x00, 0x11, 0x2D, 0x03, 0x00, 0x15, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 
41121
  0x00, 0x1E, 0x03, 0x04, 0x00, 0x4B, 0x04, 0x03, 0x0A, 0x1B, 0x02, 0x04, 0x00, 0x1C, 0x02, 0x00, 
41122
  0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x05, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x05, 0x03, 0x04, 
41123
  0x01, 0x2F, 0x03, 0x00, 0x11, 0x1C, 0xF4, 0xFF, 0xFF, 0x2D, 0x03, 0x00, 0x19, 0x35, 0x02, 0x03, 
41124
  0x00, 0x2D, 0x04, 0x00, 0x11, 0x08, 0x03, 0x04, 0x01, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 
41125
  0xD5, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 
41126
  0x00, 0x19, 0x00, 0x05, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
41127
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 
41128
  0x18, 0x01, 0x1A, 0xCE, 0x03, 0x75, 0x6C, 0x3F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 
41129
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 
41130
  0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 
41131
  0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 
41132
  0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 
41133
  0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 
41134
  0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
41135
  0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 
41136
  0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 
41137
  0x00, 0x1F, 0xDA, 0x87, 0x1E, 0x00, 0x18, 0x00, 0xDA, 0x87, 0x1F, 0x02, 0x18, 0x02, 0xDA, 0x1E, 
41138
  0x07, 0x18, 0x03, 0xCF, 0x02, 0x78, 0x31, 0x09, 0x18, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41139
  0x30, 0x35, 0x55, 0x0C, 0x12, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x56, 0x12, 
41140
  0x17, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x54, 0x2D, 0x02, 0x00, 0x15, 0x35, 
41141
  0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2B, 0x01, 0x01, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 
41142
  0x03, 0x00, 0x17, 0x35, 0x01, 0x03, 0x00, 0x1B, 0x03, 0x01, 0x00, 0x26, 0x01, 0x03, 0x20, 0x1B, 
41143
  0x04, 0x01, 0x00, 0x1E, 0x01, 0x0D, 0x00, 0x26, 0x05, 0x02, 0x2A, 0x1B, 0x06, 0x05, 0x00, 0x1E, 
41144
  0x06, 0x03, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x26, 0x07, 0x02, 0x2D, 0x1B, 
41145
  0x05, 0x07, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x2B, 0x07, 0x02, 0x00, 0x03, 
41146
  0x07, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xDC, 0x0D, 
41147
  0x00, 0x0D, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x02, 0x09, 
41148
  0xBF, 0xFF, 0x07, 0x00, 0x07, 0x02, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
41149
  0x1D, 0x00, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41150
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x29, 0x01, 0x1C, 0xCE, 0x03, 0x6F, 
41151
  0x6C, 0x3F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41152
  0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 
41153
  0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 
41154
  0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
41155
  0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 
41156
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 
41157
  0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 
41158
  0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 
41159
  0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 
41160
  0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0x00, 0x29, 0x00, 0xDA, 0x87, 0x20, 0x00, 0x29, 0x01, 0xDA, 
41161
  0x85, 0xA8, 0x05, 0x0E, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x57, 0x14, 0x29, 
41162
  0x03, 0xCF, 0x02, 0x63, 0x31, 0x19, 0x29, 0x04, 0xCF, 0x02, 0x63, 0x32, 0x1A, 0x29, 0x02, 0xCF, 
41163
  0x02, 0x63, 0x2A, 0x1D, 0x23, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x58, 0x2D, 
41164
  0x01, 0x00, 0x11, 0x2D, 0x04, 0x00, 0x15, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x05, 0x30, 0x00, 0x47, 
41165
  0x04, 0x03, 0x05, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x04, 0x07, 0x00, 0x2D, 0x06, 0x00, 0x15, 0x35, 
41166
  0x05, 0x06, 0x00, 0x2B, 0x07, 0x39, 0x00, 0x48, 0x06, 0x05, 0x07, 0x1B, 0x02, 0x06, 0x00, 0x1C, 
41167
  0x02, 0x00, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x04, 0x00, 0x2D, 0x04, 0x00, 0x19, 0x35, 
41168
  0x03, 0x04, 0x00, 0x1C, 0xF0, 0xFF, 0xFF, 0x2D, 0x03, 0x00, 0x15, 0x35, 0x02, 0x03, 0x00, 0x1B, 
41169
  0x03, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x17, 0x35, 
41170
  0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x11, 0x2F, 0x01, 0x00, 0x11, 0x26, 
41171
  0x06, 0x03, 0x2E, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x06, 0x04, 0x00, 0x26, 0x08, 0x04, 0x20, 0x1B, 
41172
  0x05, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x07, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x2D, 
41173
  0x07, 0x00, 0x11, 0x08, 0x06, 0x02, 0x07, 0x07, 0x06, 0x06, 0xFE, 0x03, 0x06, 0x00, 0x00, 0x04, 
41174
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xE2, 0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 
41175
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x28, 0x00, 0x28, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0C, 0x00, 0x0C, 
41176
  0x00, 0x0C, 0x00, 0x05, 0x00, 0x38, 0x00, 0x38, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 
41177
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x01, 0x10, 
41178
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x09, 
41179
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 
41180
  0x00, 0x00, 0x00, 0x14, 0x01, 0x17, 0xCE, 0x04, 0x66, 0x63, 0x62, 0x3F, 0xDA, 0x04, 0xBF, 0xFF, 
41181
  0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
41182
  0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 
41183
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 
41184
  0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 
41185
  0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 
41186
  0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 
41187
  0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 
41188
  0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 
41189
  0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 
41190
  0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0x00, 0x14, 0x00, 0xDA, 0x87, 0x21, 0x2D, 0x02, 0x00, 
41191
  0x15, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 
41192
  0x17, 0x35, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x02, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 
41193
  0x17, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x05, 0x60, 0x00, 0x25, 0x04, 0x05, 0x01, 0x1E, 0x04, 0x04, 
41194
  0x00, 0x25, 0x04, 0x01, 0x02, 0x1E, 0x04, 0x02, 0x00, 0x25, 0x04, 0x02, 0x03, 0x1E, 0x04, 0x03, 
41195
  0x00, 0x2B, 0x01, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 
41196
  0xE8, 0x22, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x2D, 0x00, 0x2D, 
41197
  0x00, 0x2D, 0x00, 0x2D, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
41198
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 
41199
  0x00, 0x00, 0x05, 0x01, 0x18, 0xCE, 0x03, 0x6E, 0x6C, 0x3F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 
41200
  0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 
41201
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 
41202
  0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 
41203
  0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 
41204
  0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 
41205
  0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 
41206
  0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
41207
  0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 
41208
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 
41209
  0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0x00, 0x05, 0x00, 0xDA, 
41210
  0x87, 0x22, 0x2D, 0x02, 0x00, 0x15, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x03, 0x0A, 0x00, 0x25, 0x02, 
41211
  0x03, 0x01, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xE9, 0x1E, 0x00, 0x1E, 0x00, 0x10, 0x00, 
41212
  0x10, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0A, 0x01, 0x1D, 
41213
  0xCE, 0x08, 0x67, 0x65, 0x74, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0x7E, 0xDA, 
41214
  0x3D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 
41215
  0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 
41216
  0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41217
  0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 
41218
  0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 
41219
  0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41220
  0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 
41221
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 
41222
  0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 
41223
  0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 
41224
  0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0x00, 
41225
  0x0A, 0x00, 0xDA, 0x81, 0x4F, 0x00, 0x0A, 0x01, 0xDA, 0x81, 0x50, 0x00, 0x0A, 0x02, 0xDA, 0x87, 
41226
  0x24, 0x05, 0x0A, 0x03, 0xDA, 0x81, 0x50, 0x2D, 0x04, 0x00, 0x00, 0x3F, 0x03, 0x04, 0x00, 0x32, 
41227
  0x01, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2D, 
41228
  0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 0x03, 0x2C, 0x05, 0x01, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 
41229
  0xFF, 0x8C, 0xF1, 0x15, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x05, 
41230
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 
41231
  0x04, 0x01, 0x1C, 0xCE, 0x04, 0x70, 0x75, 0x73, 0x68, 0xDA, 0x04, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 
41232
  0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 
41233
  0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 
41234
  0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 
41235
  0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
41236
  0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 
41237
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 
41238
  0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 
41239
  0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 
41240
  0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 
41241
  0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 
41242
  0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 
41243
  0x87, 0x24, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x00, 0x04, 0x01, 0xDA, 0x87, 0x25, 0x2D, 0x02, 0x00, 
41244
  0x13, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 
41245
  0xF3, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x03, 0x03, 
41246
  0x03, 0x00, 0x32, 0x01, 0x26, 0xCE, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x69, 0x73, 
41247
  0x74, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 
41248
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 
41249
  0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 
41250
  0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 
41251
  0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 
41252
  0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 
41253
  0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
41254
  0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 
41255
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 
41256
  0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 
41257
  0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 
41258
  0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0x00, 
41259
  0x32, 0x00, 0xCF, 0x0C, 0x62, 0x75, 0x6C, 0x6C, 0x65, 0x74, 0x2D, 0x63, 0x68, 0x65, 0x63, 0x6B, 
41260
  0x00, 0x32, 0x01, 0xCF, 0x07, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x00, 0x32, 0x02, 0xDA, 
41261
  0x87, 0x10, 0x00, 0x32, 0x03, 0xDA, 0x87, 0x26, 0x02, 0x32, 0x05, 0xCF, 0x0A, 0x74, 0x65, 0x6D, 
41262
  0x70, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x03, 0x32, 0x06, 0xCF, 0x09, 0x6F, 0x6C, 0x64, 0x2D, 
41263
  0x73, 0x74, 0x61, 0x63, 0x6B, 0x05, 0x32, 0x07, 0xCF, 0x0E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
41264
  0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x08, 0x0E, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41265
  0x30, 0x30, 0x35, 0x59, 0x10, 0x1C, 0x0B, 0xDA, 0x1E, 0x1C, 0x2D, 0x0A, 0xCF, 0x0B, 0x69, 0x74, 
41266
  0x65, 0x6D, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x23, 0x2D, 0x0B, 0xCF, 0x0A, 0x69, 0x74, 
41267
  0x65, 0x6D, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x31, 0x01, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 
41268
  0x1B, 0x05, 0x04, 0x00, 0x2D, 0x06, 0x00, 0x13, 0x2F, 0x05, 0x00, 0x13, 0x1B, 0x07, 0x02, 0x00, 
41269
  0x2D, 0x0A, 0x00, 0x15, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x09, 0x04, 0x00, 
41270
  0x47, 0x0B, 0x07, 0x02, 0x1B, 0x08, 0x0B, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x08, 0x0A, 0x00, 
41271
  0x1E, 0x08, 0x1F, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x1E, 0x0A, 0x0A, 0x00, 
41272
  0x31, 0x0B, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x1B, 0x35, 0x0C, 0x0D, 0x00, 0x2D, 0x0D, 0x00, 0x1D, 
41273
  0x35, 0x0C, 0x0D, 0x00, 0x06, 0x0D, 0x02, 0x0C, 0x06, 0x0D, 0x0D, 0x0B, 0x1B, 0x09, 0x0D, 0x00, 
41274
  0x1C, 0x02, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x02, 0x00, 
41275
  0x1C, 0x04, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x1D, 0x35, 0x07, 0x09, 0x00, 0x1C, 0x0C, 0x00, 0x00, 
41276
  0x40, 0x09, 0x00, 0x00, 0x1B, 0x0B, 0x09, 0x00, 0x2F, 0x0B, 0x00, 0x13, 0x31, 0x0A, 0x00, 0x00, 
41277
  0x2D, 0x09, 0x00, 0x28, 0x35, 0x07, 0x09, 0x00, 0x2F, 0x05, 0x00, 0x13, 0x31, 0x0B, 0x00, 0x00, 
41278
  0x2D, 0x0C, 0x00, 0x2C, 0x35, 0x09, 0x0C, 0x00, 0x1C, 0xDA, 0xFF, 0xFF, 0x2F, 0x06, 0x00, 0x13, 
41279
  0x31, 0x05, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x2C, 0x35, 0x08, 0x09, 0x00, 0x03, 0x07, 0x00, 0x00, 
41280
  0xBF, 0xFF, 0x8C, 0xF6, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 
41281
  0x11, 0x00, 0x11, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x15, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
41282
  0x05, 0x02, 0x16, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x15, 0x00, 
41283
  0x15, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x04, 
41284
  0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 0x1D, 0x01, 0x09, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 
41285
  0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF4, 0x05, 
41286
  0x0D, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xED, 0x03, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41287
  0x09, 0x03, 0x03, 0x03, 0x06, 0x1A, 0x01, 0x21, 0xCE, 0x0D, 0x61, 0x64, 0x64, 0x2D, 0x63, 0x6F, 
41288
  0x64, 0x65, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x84, 0x5C, 0xDA, 0x84, 0x5D, 0xDA, 
41289
  0x84, 0x7D, 0xDA, 0x81, 0x28, 0xDA, 0x86, 0xAD, 0xD0, 0x02, 0x63, 0x62, 0xBF, 0xFF, 0x00, 0x00, 
41290
  0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 
41291
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 
41292
  0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 
41293
  0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 
41294
  0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 
41295
  0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 
41296
  0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
41297
  0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 
41298
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 
41299
  0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 
41300
  0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 
41301
  0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x26, 0x00, 
41302
  0x1A, 0x00, 0xDA, 0x87, 0x10, 0x00, 0x1A, 0x01, 0xDA, 0x35, 0x00, 0x1A, 0x02, 0xDA, 0x36, 0x00, 
41303
  0x1A, 0x03, 0xDA, 0x87, 0x27, 0x08, 0x1A, 0x04, 0xCF, 0x0D, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
41304
  0x65, 0x2D, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 
41305
  0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x32, 0x05, 0x04, 0x00, 0x2C, 
41306
  0x06, 0x03, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2D, 
41307
  0x07, 0x00, 0x2A, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x33, 0x04, 0x07, 0x06, 0x2C, 
41308
  0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x32, 0x06, 0x07, 0x00, 0x40, 
41309
  0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x2C, 0x35, 0x07, 0x08, 0x00, 0x2D, 
41310
  0x08, 0x00, 0x1F, 0x35, 0x06, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x1D, 0x36, 0x08, 0x00, 0x00, 0xBF, 
41311
  0xFF, 0x8D, 0x0C, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
41312
  0x00, 0x18, 0x00, 0x05, 0x01, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
41313
  0x00, 0x11, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
41314
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x00, 
41315
  0x1B, 0x01, 0x21, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x66, 0x63, 0x62, 0xDA, 0x04, 
41316
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 
41317
  0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
41318
  0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 
41319
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 
41320
  0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 
41321
  0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 
41322
  0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 
41323
  0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 
41324
  0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 
41325
  0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 
41326
  0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 
41327
  0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 
41328
  0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0x00, 0x1B, 0x00, 0xDA, 0x87, 0x10, 
41329
  0x00, 0x1B, 0x01, 0xDA, 0x87, 0x28, 0x09, 0x1B, 0x05, 0xDA, 0x35, 0x0A, 0x1B, 0x06, 0xDA, 0x36, 
41330
  0x2B, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x1B, 0x35, 0x02, 0x03, 0x00, 
41331
  0x2D, 0x04, 0x00, 0x1F, 0x35, 0x03, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x1B, 
41332
  0x35, 0x04, 0x05, 0x00, 0x2D, 0x05, 0x00, 0x11, 0x2D, 0x06, 0x00, 0x11, 0x2D, 0x08, 0x00, 0x15, 
41333
  0x35, 0x07, 0x08, 0x00, 0x1E, 0x07, 0x0B, 0x00, 0x2D, 0x09, 0x00, 0x25, 0x35, 0x08, 0x09, 0x00, 
41334
  0x1E, 0x08, 0x02, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x1F, 0x35, 0x08, 0x09, 0x00, 
41335
  0x2D, 0x06, 0x00, 0x11, 0x2D, 0x09, 0x00, 0x1D, 0x35, 0x08, 0x09, 0x00, 0x1C, 0xF4, 0xFF, 0xFF, 
41336
  0x33, 0x00, 0x05, 0x06, 0x2D, 0x07, 0x00, 0x30, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x12, 
41337
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
41338
  0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
41339
  0x07, 0x00, 0x12, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x05, 
41340
  0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 
41341
  0x12, 0x01, 0x23, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x69, 0x63, 0x62, 0xDA, 0x04, 
41342
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 
41343
  0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
41344
  0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 
41345
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 
41346
  0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 
41347
  0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 
41348
  0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 
41349
  0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 
41350
  0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 
41351
  0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 
41352
  0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 
41353
  0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 
41354
  0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 
41355
  0x28, 0x00, 0x12, 0x00, 0xDA, 0x87, 0x10, 0x00, 0x12, 0x01, 0xDA, 0x87, 0x29, 0x00, 0x12, 0x02, 
41356
  0xDA, 0x87, 0x54, 0x01, 0x12, 0x03, 0xDA, 0x35, 0x02, 0x12, 0x04, 0xDA, 0x36, 0x1B, 0x02, 0x00, 
41357
  0x00, 0x2D, 0x03, 0x00, 0x11, 0x2D, 0x04, 0x00, 0x11, 0x2D, 0x06, 0x00, 0x15, 0x35, 0x05, 0x06, 
41358
  0x00, 0x1E, 0x05, 0x0A, 0x00, 0x2D, 0x07, 0x00, 0x1F, 0x35, 0x06, 0x07, 0x00, 0x2D, 0x04, 0x00, 
41359
  0x11, 0x2D, 0x06, 0x00, 0x1D, 0x35, 0x02, 0x06, 0x00, 0x23, 0x06, 0x02, 0x00, 0x1E, 0x06, 0x02, 
41360
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0x33, 0x00, 0x03, 0x04, 0x2D, 0x05, 0x00, 
41361
  0x30, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x1F, 0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0C, 
41362
  0x00, 0x0C, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x1B, 0x00, 0x1B, 0x01, 0x0B, 
41363
  0x00, 0x07, 0x00, 0x25, 0xBF, 0xFC, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x02, 0xFE, 
41364
  0x00, 0x00, 0x17, 0x01, 0x01, 0x01, 0x07, 0x52, 0x01, 0x02, 0x2A, 0xCE, 0x0D, 0x74, 0x6F, 0x6B, 
41365
  0x65, 0x6E, 0x69, 0x7A, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x04, 0xDA, 0x81, 0x6E, 0xDA, 
41366
  0x86, 0xFC, 0xDA, 0x82, 0x51, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 
41367
  0x73, 0x68, 0xDA, 0x87, 0x00, 0xDA, 0x87, 0x04, 0xDA, 0x2C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 
41368
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 
41369
  0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 
41370
  0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 
41371
  0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 
41372
  0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 
41373
  0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
41374
  0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 
41375
  0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 
41376
  0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 
41377
  0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 
41378
  0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 
41379
  0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 
41380
  0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 
41381
  0x87, 0x29, 0x00, 0x52, 0x00, 0xDA, 0x85, 0x31, 0x00, 0x52, 0x01, 0xDA, 0x87, 0x2A, 0x01, 0x52, 
41382
  0x03, 0xCF, 0x06, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x73, 0x05, 0x52, 0x05, 0xCF, 0x05, 0x74, 0x6F, 
41383
  0x6B, 0x65, 0x6E, 0x06, 0x52, 0x06, 0xCF, 0x0C, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 
41384
  0x6E, 0x67, 0x74, 0x68, 0x08, 0x52, 0x08, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x0A, 0x52, 
41385
  0x0A, 0xCF, 0x08, 0x65, 0x6E, 0x64, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x0B, 0x4E, 0x0B, 0xDA, 0x43, 
41386
  0x0D, 0x4E, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x5A, 0x11, 0x4E, 0x0F, 0xDA, 
41387
  0x81, 0x64, 0x13, 0x19, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x30, 0x40, 0x02, 
41388
  0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x41, 0x04, 
41389
  0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x1B, 0x08, 
41390
  0x07, 0x00, 0x30, 0x09, 0x01, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x3F, 0x0C, 
41391
  0x00, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x23, 0x0C, 0x0B, 0x0D, 0x1E, 0x0C, 0x3F, 0x00, 0x3B, 0x0E, 
41392
  0x00, 0x0B, 0x1B, 0x0F, 0x0E, 0x00, 0x26, 0x0E, 0x0F, 0x0A, 0x1B, 0x10, 0x0E, 0x00, 0x1E, 0x10, 
41393
  0x03, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x26, 0x11, 0x0F, 0x20, 0x1B, 0x0E, 
41394
  0x11, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x35, 0x10, 0x0A, 0x00, 0x1C, 0x31, 0x00, 0x00, 0x26, 0x10, 
41395
  0x0F, 0x60, 0x1E, 0x10, 0x05, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 
41396
  0x08, 0x00, 0x1C, 0x2B, 0x00, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2D, 0x12, 
41397
  0x00, 0x0E, 0x35, 0x11, 0x12, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x02, 0x00, 0x35, 0x12, 
41398
  0x13, 0x00, 0x1E, 0x12, 0x1F, 0x00, 0x26, 0x11, 0x0F, 0x5C, 0x1E, 0x11, 0x08, 0x00, 0x05, 0x06, 
41399
  0x06, 0x01, 0x05, 0x0B, 0x0B, 0x01, 0x3B, 0x13, 0x00, 0x0B, 0x32, 0x05, 0x13, 0x00, 0x2C, 0x15, 
41400
  0x03, 0x00, 0x35, 0x14, 0x15, 0x00, 0x1C, 0x15, 0x00, 0x00, 0x26, 0x13, 0x0F, 0x2A, 0x1E, 0x13, 
41401
  0x0F, 0x00, 0x05, 0x14, 0x0B, 0x01, 0x3B, 0x15, 0x00, 0x14, 0x2B, 0x16, 0x2A, 0x00, 0x25, 0x14, 
41402
  0x16, 0x15, 0x1E, 0x14, 0x06, 0x00, 0x05, 0x0B, 0x0B, 0x01, 0x2C, 0x15, 0x04, 0x00, 0x31, 0x15, 
41403
  0x00, 0x00, 0x35, 0x15, 0x08, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x15, 0x05, 0x00, 0x31, 0x15, 
41404
  0x00, 0x00, 0x35, 0x15, 0x08, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x05, 0x06, 0x06, 0x01, 0x32, 0x05, 
41405
  0x0F, 0x00, 0x2C, 0x15, 0x03, 0x00, 0x35, 0x14, 0x15, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x05, 0x06, 
41406
  0x06, 0x01, 0x32, 0x05, 0x0F, 0x00, 0x2C, 0x13, 0x03, 0x00, 0x35, 0x11, 0x13, 0x00, 0x05, 0x0B, 
41407
  0x0B, 0x01, 0x1C, 0xC1, 0xFF, 0xFF, 0x35, 0x0B, 0x0A, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x0C, 
41408
  0x06, 0x00, 0x36, 0x0C, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 
41409
  0x01, 0x01, 0x0F, 0x02, 0x27, 0xCE, 0x05, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0xDA, 0x04, 0xDA, 0x87, 
41410
  0x5E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 
41411
  0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 
41412
  0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41413
  0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 
41414
  0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 
41415
  0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41416
  0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 
41417
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 
41418
  0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 
41419
  0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 
41420
  0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 
41421
  0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 
41422
  0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 
41423
  0x87, 0x28, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x85, 0x31, 
41424
  0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x87, 0x5F, 0xBF, 0xFF, 
41425
  0x01, 0x05, 0xDA, 0x87, 0x60, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x87, 0x61, 0x00, 0x0F, 0x00, 0xDA, 
41426
  0x81, 0x78, 0x00, 0x0F, 0x01, 0xDA, 0x87, 0x62, 0x03, 0x0F, 0x03, 0xDA, 0x81, 0x15, 0x31, 0x00, 
41427
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x10, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2D, 0x04, 
41428
  0x00, 0x0A, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x3F, 0x04, 0x03, 0x00, 0x2D, 0x06, 
41429
  0x01, 0x06, 0x06, 0x05, 0x06, 0x04, 0x2F, 0x05, 0x01, 0x06, 0x2D, 0x04, 0x01, 0x05, 0x32, 0x04, 
41430
  0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x2E, 0x0E, 
41431
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x2A, 0x00, 0x19, 
41432
  0x00, 0x19, 0x00, 0x19, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x00, 0xDC, 0x00, 
41433
  0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x18, 0x01, 0x07, 0xCE, 0x08, 0x65, 0x6E, 0x64, 0x74, 0x6F, 
41434
  0x6B, 0x65, 0x6E, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
41435
  0x00, 0x03, 0x00, 0x02, 0xCE, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0xDA, 0x04, 0x00, 0x03, 0x00, 
41436
  0xDA, 0x81, 0x5C, 0x00, 0x03, 0x01, 0xCF, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2B, 0x03, 0x00, 
41437
  0x00, 0x3B, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x44, 0x03, 0x00, 0x03, 0x00, 0x03, 
41438
  0xDA, 0x81, 0x28, 0xDA, 0x30, 0xDA, 0x81, 0x61, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x31, 0xBF, 
41439
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x5F, 0xBF, 0xFF, 0x00, 
41440
  0x05, 0xDA, 0x87, 0x60, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x61, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
41441
  0x87, 0x62, 0x00, 0x18, 0x00, 0xDA, 0x87, 0x63, 0x2D, 0x01, 0x00, 0x05, 0x31, 0x01, 0x00, 0x00, 
41442
  0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x1E, 0x01, 0x0C, 0x00, 0x2D, 0x02, 0x00, 0x05, 
41443
  0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2D, 0x03, 0x00, 0x06, 
41444
  0x32, 0x02, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x03, 0x32, 0x03, 0x02, 0x00, 
41445
  0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x01, 0x00, 0x05, 0x31, 0x01, 0x00, 0x00, 
41446
  0x2C, 0x02, 0x03, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x06, 
41447
  0x2D, 0x02, 0x00, 0x06, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x32, 0x0B, 0x00, 0x0B, 0x00, 
41448
  0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2C, 0x00, 
41449
  0x2C, 0x00, 0x2C, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x07, 0x00, 0x07, 0x00, 
41450
  0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8D, 0x2A, 0x05, 0x00, 0x05, 
41451
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0x00, 0x05, 0x04, 0x05, 
41452
  0x00, 0x05, 0x04, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x07, 
41453
  0x02, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x09, 0xBF, 0xFF, 
41454
  0x07, 0x01, 0x2F, 0xBF, 0xFF, 0x07, 0x02, 0x09, 0xBF, 0xFE, 0x07, 0x02, 0x19, 0x00, 0x19, 0x00, 
41455
  0x19, 0xBF, 0xFE, 0x07, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x09, 
41456
  0x00, 0x09, 0xBF, 0xFD, 0x07, 0x05, 0x0B, 0xBF, 0xFF, 0x09, 0x02, 0x1D, 0x01, 0x3A, 0x00, 0x30, 
41457
  0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0xBF, 0xFD, 0x09, 0x04, 0x0B, 0xBF, 0xFC, 0x09, 0x05, 0x26, 
41458
  0x00, 0x1C, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0B, 0x01, 0x11, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
41459
  0xBF, 0xFE, 0x0B, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF8, 0x09, 0x09, 0x0F, 0x00, 0x21, 
41460
  0x00, 0x21, 0x00, 0x21, 0xBF, 0xF3, 0x07, 0x0E, 0x0D, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0xBF, 
41461
  0xF0, 0x05, 0x00, 0x05, 0x11, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x68, 0x00, 0x00, 0x00, 
41462
  0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x02, 0x42, 0x01, 0x02, 0x28, 0xCE, 0x0C, 
41463
  0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0xDA, 0x04, 0xD0, 0x02, 
41464
  0x75, 0x6C, 0xD0, 0x02, 0x6F, 0x6C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 
41465
  0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 
41466
  0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 
41467
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 
41468
  0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
41469
  0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 
41470
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 
41471
  0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 
41472
  0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 
41473
  0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 
41474
  0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 
41475
  0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 
41476
  0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 
41477
  0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 
41478
  0x00, 0x36, 0xDA, 0x87, 0x2A, 0x00, 0x42, 0x00, 0xDA, 0x87, 0x10, 0x00, 0x42, 0x01, 0xDA, 0x87, 
41479
  0x23, 0x00, 0x42, 0x02, 0xCF, 0x0A, 0x6E, 0x65, 0x77, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 
41480
  0x01, 0x42, 0x03, 0xCF, 0x07, 0x70, 0x2D, 0x73, 0x74, 0x61, 0x72, 0x74, 0x02, 0x42, 0x04, 0xCF, 
41481
  0x05, 0x70, 0x2D, 0x65, 0x6E, 0x64, 0x04, 0x42, 0x06, 0xCF, 0x06, 0x70, 0x2D, 0x6C, 0x69, 0x6E, 
41482
  0x65, 0x06, 0x42, 0x08, 0xCF, 0x08, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 0x2D, 0x70, 0x09, 0x0F, 
41483
  0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x32, 0x1B, 0x02, 0x00, 0x00, 0x28, 0x03, 
41484
  0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x30, 0x07, 
41485
  0x01, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2D, 0x0B, 0x00, 0x15, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 
41486
  0x0A, 0x00, 0x1E, 0x0A, 0x04, 0x00, 0x47, 0x0C, 0x02, 0x00, 0x1B, 0x09, 0x0C, 0x00, 0x1C, 0x02, 
41487
  0x00, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1E, 0x09, 0x31, 0x00, 0x2D, 0x0B, 0x00, 0x27, 0x35, 0x0A, 
41488
  0x0B, 0x00, 0x1E, 0x0A, 0x07, 0x00, 0x35, 0x0B, 0x08, 0x00, 0x2D, 0x0C, 0x00, 0x19, 0x35, 0x0B, 
41489
  0x0C, 0x00, 0x2D, 0x0B, 0x00, 0x1D, 0x35, 0x02, 0x0B, 0x00, 0x1C, 0x27, 0x00, 0x00, 0x2D, 0x0C, 
41490
  0x00, 0x21, 0x35, 0x0B, 0x0C, 0x00, 0x1E, 0x0B, 0x08, 0x00, 0x35, 0x0C, 0x08, 0x00, 0x2D, 0x0C, 
41491
  0x00, 0x21, 0x2C, 0x0D, 0x00, 0x00, 0x33, 0x0C, 0x0D, 0x02, 0x2D, 0x0C, 0x00, 0x2E, 0x35, 0x02, 
41492
  0x0C, 0x00, 0x1C, 0x1D, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x23, 0x35, 0x0C, 0x0D, 0x00, 0x1E, 0x0C, 
41493
  0x08, 0x00, 0x35, 0x0D, 0x08, 0x00, 0x2D, 0x0D, 0x00, 0x23, 0x2C, 0x0E, 0x01, 0x00, 0x33, 0x0D, 
41494
  0x0E, 0x02, 0x2D, 0x0D, 0x00, 0x2E, 0x35, 0x02, 0x0D, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2D, 0x0E, 
41495
  0x00, 0x25, 0x35, 0x0D, 0x0E, 0x00, 0x1E, 0x0D, 0x06, 0x00, 0x35, 0x0E, 0x08, 0x00, 0x31, 0x02, 
41496
  0x00, 0x00, 0x2D, 0x0E, 0x00, 0x32, 0x35, 0x02, 0x0E, 0x00, 0x1C, 0x0B, 0x00, 0x00, 0x2B, 0x0F, 
41497
  0x04, 0x00, 0x06, 0x0E, 0x0F, 0x00, 0x47, 0x0F, 0x02, 0x0E, 0x1E, 0x0F, 0x06, 0x00, 0x35, 0x0E, 
41498
  0x08, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x34, 0x35, 0x02, 0x0E, 0x00, 0x1C, 0x02, 
41499
  0x00, 0x00, 0x35, 0x0E, 0x06, 0x00, 0x1C, 0xC8, 0xFF, 0xFF, 0x35, 0x09, 0x08, 0x00, 0x03, 0x02, 
41500
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 
41501
  0x26, 0xCE, 0x06, 0x70, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 
41502
  0x14, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x87, 0x10, 0xBF, 
41503
  0xFF, 0x01, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x01, 
41504
  0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 
41505
  0x87, 0x14, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x87, 0x16, 
41506
  0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 
41507
  0x01, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x01, 0x15, 
41508
  0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 0x87, 
41509
  0x1B, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x01, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 
41510
  0xFF, 0x01, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x01, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x01, 
41511
  0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x01, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x01, 0x27, 0xDA, 
41512
  0x87, 0x22, 0xBF, 0xFF, 0x01, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x01, 0x2A, 0xDA, 0x87, 0x24, 
41513
  0xBF, 0xFF, 0x01, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x01, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 
41514
  0x01, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x01, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x01, 0x34, 
41515
  0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x01, 0x36, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x87, 
41516
  0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x6E, 0xBF, 
41517
  0xFF, 0x00, 0x03, 0xDA, 0x87, 0x6F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x70, 0x00, 0x0E, 0x00, 
41518
  0xDA, 0x87, 0x71, 0x2D, 0x01, 0x00, 0x03, 0x1E, 0x01, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2D, 
41519
  0x01, 0x01, 0x11, 0x2F, 0x01, 0x00, 0x03, 0x2D, 0x02, 0x01, 0x1F, 0x35, 0x01, 0x02, 0x00, 0x2D, 
41520
  0x02, 0x01, 0x11, 0x2F, 0x02, 0x00, 0x04, 0x2D, 0x03, 0x01, 0x1D, 0x35, 0x02, 0x03, 0x00, 0x2F, 
41521
  0x02, 0x00, 0x02, 0x2D, 0x03, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8D, 0x50, 
41522
  0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 
41523
  0x09, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x09, 0x00, 0x09, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41524
  0x06, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x28, 0xCE, 0x08, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 
41525
  0x2D, 0x70, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 
41526
  0x0F, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x87, 0x11, 0xBF, 
41527
  0xFF, 0x01, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x01, 
41528
  0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 
41529
  0x87, 0x15, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x87, 0x17, 
41530
  0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 
41531
  0x01, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x01, 0x17, 
41532
  0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x87, 
41533
  0x1C, 0xBF, 0xFF, 0x01, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x01, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 
41534
  0xFF, 0x01, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x01, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x01, 
41535
  0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x01, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x01, 0x28, 0xDA, 
41536
  0x87, 0x23, 0xBF, 0xFF, 0x01, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x01, 0x2C, 0xDA, 0x87, 0x25, 
41537
  0xBF, 0xFF, 0x01, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x01, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 
41538
  0x01, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x01, 0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x01, 0x36, 
41539
  0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41540
  0x23, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x6E, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x6F, 0xBF, 
41541
  0xFF, 0x00, 0x04, 0xDA, 0x87, 0x70, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x71, 0x00, 0x1A, 0x00, 
41542
  0xDA, 0x87, 0x72, 0x00, 0x09, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x31, 0x2D, 
41543
  0x02, 0x00, 0x03, 0x2D, 0x03, 0x00, 0x03, 0x1E, 0x03, 0x06, 0x00, 0x2D, 0x04, 0x00, 0x04, 0x2D, 
41544
  0x05, 0x00, 0x03, 0x21, 0x03, 0x04, 0x05, 0x1B, 0x01, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
41545
  0x01, 0x02, 0x00, 0x1E, 0x01, 0x10, 0x00, 0x2D, 0x02, 0x00, 0x03, 0x2D, 0x03, 0x00, 0x04, 0x32, 
41546
  0x02, 0x03, 0x00, 0x2D, 0x03, 0x01, 0x2A, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 
41547
  0x04, 0x01, 0x36, 0x35, 0x03, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x01, 0x2C, 0x35, 
41548
  0x02, 0x04, 0x00, 0x28, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x03, 0x2D, 0x02, 0x00, 0x03, 0x03, 
41549
  0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8D, 0x56, 0x0F, 0x00, 0x0F, 0x00, 
41550
  0x0F, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x09, 0x01, 
41551
  0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
41552
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 
41553
  0x8D, 0x4C, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x06, 0x07, 0x00, 0x07, 0x04, 
41554
  0x13, 0x00, 0x13, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x17, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
41555
  0x07, 0x02, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x01, 0x15, 0x00, 0x20, 0x00, 0x20, 0x00, 0x36, 
41556
  0x00, 0x36, 0xBF, 0xFF, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x02, 0x15, 0x00, 0x30, 
41557
  0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xBF, 0xFE, 0x09, 0x03, 0x0B, 0x00, 0x0B, 0xBF, 
41558
  0xFD, 0x09, 0x03, 0x15, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xBF, 0xFD, 
41559
  0x09, 0x04, 0x0B, 0x00, 0x0B, 0xBF, 0xFC, 0x09, 0x04, 0x16, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 
41560
  0xBF, 0xFC, 0x09, 0x05, 0x1A, 0x00, 0x1A, 0x00, 0x0B, 0xBF, 0xFB, 0x09, 0x05, 0x2C, 0x00, 0x47, 
41561
  0x00, 0x47, 0x00, 0x47, 0xBF, 0xFB, 0x09, 0x06, 0x0B, 0xBF, 0xF9, 0x07, 0x08, 0x07, 0xBF, 0xEA, 
41562
  0x05, 0x1C, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x03, 0x12, 
41563
  0x01, 0x28, 0xCE, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0xDA, 
41564
  0x04, 0xDA, 0x84, 0x5C, 0xDA, 0x84, 0x5D, 0xDA, 0x87, 0x5E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 
41565
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 
41566
  0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 
41567
  0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 
41568
  0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 
41569
  0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 
41570
  0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
41571
  0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 
41572
  0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 
41573
  0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 
41574
  0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 
41575
  0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 
41576
  0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 
41577
  0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 
41578
  0x87, 0x29, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x87, 0x2B, 
41579
  0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2C, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x87, 0x2D, 0xBF, 0xFF, 
41580
  0x00, 0x39, 0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2E, 0x00, 0x12, 0x00, 0xDA, 
41581
  0x87, 0x10, 0x00, 0x12, 0x01, 0xDA, 0x87, 0x2F, 0x02, 0x12, 0x03, 0xDA, 0x82, 0x85, 0x2D, 0x03, 
41582
  0x00, 0x3A, 0x08, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x04, 
41583
  0x05, 0x03, 0x1E, 0x04, 0x0C, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x32, 0x05, 0x03, 0x00, 0x2C, 0x06, 
41584
  0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x39, 0x32, 0x06, 0x05, 0x00, 0x2C, 0x07, 
41585
  0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x3A, 0x2D, 0x05, 0x00, 0x3A, 0x03, 0x05, 
41586
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x74, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
41587
  0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 
41588
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0xCD, 0x00, 
41589
  0xDC, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x02, 0x09, 0x01, 0x28, 0xCE, 0x07, 0x65, 0x6D, 0x69, 
41590
  0x74, 0x2D, 0x6E, 0x6C, 0xDA, 0x04, 0xDA, 0x84, 0x7D, 0xDA, 0x87, 0x5E, 0xBF, 0xFF, 0x00, 0x00, 
41591
  0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 
41592
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 
41593
  0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 
41594
  0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 
41595
  0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 
41596
  0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 
41597
  0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
41598
  0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 
41599
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 
41600
  0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 
41601
  0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 
41602
  0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 
41603
  0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 
41604
  0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 
41605
  0x87, 0x2B, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2C, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x87, 0x2D, 
41606
  0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2E, 0xBF, 0xFF, 
41607
  0x00, 0x3C, 0xDA, 0x87, 0x2F, 0x00, 0x09, 0x00, 0xDA, 0x87, 0x10, 0x00, 0x09, 0x01, 0xDA, 0x87, 
41608
  0x30, 0x2D, 0x02, 0x00, 0x39, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x01, 
41609
  0x00, 0x35, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x3A, 0x2D, 0x03, 0x00, 
41610
  0x3A, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x7A, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41611
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 
41612
  0x03, 0x02, 0x03, 0x03, 0x38, 0x01, 0x30, 0xCE, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x77, 0x6F, 
41613
  0x72, 0x64, 0xDA, 0x04, 0xDA, 0x82, 0xE9, 0xDA, 0x84, 0x5C, 0xDA, 0x87, 0x5E, 0xBF, 0xFF, 0x00, 
41614
  0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 
41615
  0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 0xBF, 
41616
  0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 
41617
  0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
41618
  0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x18, 
41619
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 0xFF, 
41620
  0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x19, 
41621
  0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 
41622
  0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 0xBF, 
41623
  0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 
41624
  0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 
41625
  0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x26, 
41626
  0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 
41627
  0x00, 0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x37, 
41628
  0xDA, 0x87, 0x2B, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2C, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x87, 
41629
  0x2D, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2E, 0xBF, 
41630
  0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2F, 0xBF, 0xFF, 0x00, 0x3E, 0xDA, 0x87, 0x30, 0x00, 0x38, 0x00, 
41631
  0xCF, 0x04, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x38, 0x01, 0xDA, 0x87, 0x10, 0x00, 0x38, 0x02, 0xDA, 
41632
  0x37, 0x00, 0x38, 0x03, 0xDA, 0x87, 0x31, 0x04, 0x38, 0x05, 0xCF, 0x09, 0x6C, 0x61, 0x73, 0x74, 
41633
  0x2D, 0x62, 0x79, 0x74, 0x65, 0x04, 0x10, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41634
  0x34, 0x07, 0x0D, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x33, 0x1E, 0x38, 0x07, 
41635
  0xDA, 0x37, 0x1E, 0x29, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x35, 0x2D, 0x04, 
41636
  0x00, 0x39, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 
41637
  0x04, 0x00, 0x1E, 0x05, 0x0A, 0x00, 0x4B, 0x08, 0x05, 0x0A, 0x1B, 0x09, 0x08, 0x00, 0x1E, 0x08, 
41638
  0x04, 0x00, 0x4B, 0x0A, 0x05, 0x20, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x07, 
41639
  0x09, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x06, 
41640
  0x09, 0x00, 0x2D, 0x07, 0x00, 0x39, 0x2C, 0x08, 0x01, 0x00, 0x32, 0x07, 0x08, 0x00, 0x2C, 0x08, 
41641
  0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x3A, 0x05, 0x07, 0x08, 0x01, 0x2F, 0x07, 
41642
  0x00, 0x3A, 0x20, 0x02, 0x04, 0x00, 0x3F, 0x07, 0x00, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 
41643
  0x00, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x01, 0x09, 0x00, 0x2B, 0x0A, 
41644
  0x01, 0x00, 0x2D, 0x0B, 0x00, 0x3A, 0x06, 0x09, 0x0A, 0x0B, 0x06, 0x09, 0x09, 0x07, 0x2D, 0x0B, 
41645
  0x00, 0x07, 0x21, 0x0A, 0x09, 0x0B, 0x1B, 0x08, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x08, 
41646
  0x01, 0x00, 0x1E, 0x08, 0x06, 0x00, 0x2D, 0x0A, 0x00, 0x3E, 0x35, 0x09, 0x0A, 0x00, 0x31, 0x01, 
41647
  0x00, 0x00, 0x2D, 0x0A, 0x00, 0x3C, 0x35, 0x09, 0x0A, 0x00, 0x2D, 0x08, 0x00, 0x39, 0x32, 0x08, 
41648
  0x00, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2D, 0x0A, 0x00, 0x3A, 0x06, 0x09, 
41649
  0x0A, 0x07, 0x2F, 0x09, 0x00, 0x3A, 0x2D, 0x0A, 0x00, 0x3A, 0x03, 0x0A, 0x00, 0x00, 0xBF, 0xFF, 
41650
  0x8D, 0x7E, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0B, 0x02, 0x0D, 0xBF, 
41651
  0xFE, 0x0B, 0x00, 0x0B, 0x03, 0x0D, 0xBF, 0xFD, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
41652
  0x0B, 0x00, 0x0B, 0x00, 0x05, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
41653
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41654
  0x05, 0x01, 0x0B, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x17, 0x00, 0x17, 0x00, 
41655
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 
41656
  0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41657
  0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x07, 0x24, 0x01, 0x2C, 
41658
  0xCE, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0x5C, 
41659
  0xDA, 0x84, 0x5D, 0xDA, 0x84, 0x7D, 0xDA, 0x81, 0x28, 0xDA, 0x86, 0xAD, 0xDA, 0x87, 0x5E, 0xDA, 
41660
  0x82, 0xE9, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 
41661
  0xFF, 0x00, 0x02, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 
41662
  0x04, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41663
  0x87, 0x13, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 
41664
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 
41665
  0x00, 0x10, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 
41666
  0xDA, 0x84, 0x40, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 
41667
  0x1A, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 
41668
  0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 
41669
  0x21, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 
41670
  0x87, 0x21, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 
41671
  0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 
41672
  0x00, 0x2E, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 
41673
  0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 
41674
  0x2A, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x87, 0x2B, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2C, 0xBF, 
41675
  0xFF, 0x00, 0x3B, 0xDA, 0x87, 0x2D, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 
41676
  0x3A, 0xDA, 0x87, 0x2E, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2F, 0xBF, 0xFF, 0x00, 0x3E, 0xDA, 
41677
  0x87, 0x30, 0xBF, 0xFF, 0x00, 0x40, 0xDA, 0x87, 0x31, 0x00, 0x24, 0x00, 0xCF, 0x04, 0x63, 0x6F, 
41678
  0x64, 0x65, 0x00, 0x24, 0x01, 0xDA, 0x87, 0x10, 0x00, 0x24, 0x02, 0xDA, 0x87, 0x32, 0x0A, 0x24, 
41679
  0x04, 0xCF, 0x0B, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2B, 0x04, 
41680
  0x04, 0x00, 0x06, 0x03, 0x04, 0x01, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x05, 
41681
  0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 
41682
  0x03, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x06, 0x04, 0x00, 0x06, 0x05, 
41683
  0x06, 0x01, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x3C, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x05, 
41684
  0x02, 0x00, 0x33, 0x05, 0x04, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x05, 0x07, 0x00, 0x2D, 0x07, 
41685
  0x00, 0x39, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x07, 0x08, 0x00, 0x31, 0x00, 
41686
  0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x35, 0x05, 0x08, 0x00, 0x2B, 0x09, 0x0A, 0x00, 0x25, 0x08, 
41687
  0x09, 0x05, 0x1E, 0x08, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x3A, 0x2D, 0x05, 
41688
  0x00, 0x3A, 0x03, 0x05, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x3E, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 
41689
  0x8D, 0x8E, 0x36, 0x00, 0x36, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x16, 0x00, 
41690
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 
41691
  0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41692
  0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 
41693
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x12, 0x02, 
41694
  0x02, 0x02, 0x0D, 0x7E, 0x01, 0x3F, 0xCE, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x6E, 0x6F, 0x64, 
41695
  0x65, 0xDA, 0x04, 0xDA, 0x83, 0x16, 0xDA, 0x84, 0x5C, 0xDA, 0x84, 0x5D, 0xDA, 0x84, 0x7D, 0xDA, 
41696
  0x81, 0x28, 0xDA, 0x86, 0xAD, 0xDA, 0x87, 0x68, 0xDA, 0x87, 0x6C, 0xCE, 0x02, 0x2A, 0x20, 0xDA, 
41697
  0x87, 0x6D, 0xCE, 0x04, 0x25, 0x64, 0x2E, 0x20, 0xDA, 0x81, 0x4B, 0xDA, 0x87, 0x59, 0xBF, 0xFF, 
41698
  0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
41699
  0x87, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x12, 
41700
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 
41701
  0x00, 0x07, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x0C, 
41702
  0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 
41703
  0x18, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x40, 0xBF, 
41704
  0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 
41705
  0x19, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 
41706
  0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1F, 
41707
  0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 
41708
  0x00, 0x27, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x2A, 
41709
  0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 
41710
  0x26, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x28, 0xBF, 
41711
  0xFF, 0x00, 0x34, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 
41712
  0x37, 0xDA, 0x87, 0x2B, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2C, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 
41713
  0x87, 0x2D, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2E, 
41714
  0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2F, 0xBF, 0xFF, 0x00, 0x3E, 0xDA, 0x87, 0x30, 0xBF, 0xFF, 
41715
  0x00, 0x40, 0xDA, 0x87, 0x31, 0xBF, 0xFF, 0x00, 0x42, 0xDA, 0x87, 0x32, 0x00, 0x7E, 0x00, 0xDA, 
41716
  0x83, 0xC3, 0x00, 0x7E, 0x01, 0xDA, 0x87, 0x10, 0x00, 0x7E, 0x02, 0xDA, 0x87, 0x33, 0x10, 0x25, 
41717
  0x05, 0xCF, 0x03, 0x72, 0x65, 0x70, 0x10, 0x23, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41718
  0x36, 0x37, 0x13, 0x23, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x36, 0x17, 0x23, 
41719
  0x09, 0xDA, 0x87, 0x7A, 0x19, 0x23, 0x0A, 0xDA, 0x37, 0x28, 0x7E, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
41720
  0x30, 0x30, 0x30, 0x36, 0x38, 0x2C, 0x4D, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41721
  0x39, 0x2E, 0x4D, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x61, 0x31, 0x4C, 0x0A, 
41722
  0xDA, 0x43, 0x3D, 0x4A, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x63, 0x40, 0x4A, 
41723
  0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x62, 0x43, 0x4A, 0x0E, 0xCF, 0x05, 0x73, 
41724
  0x75, 0x62, 0x65, 0x6C, 0x50, 0x75, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x64, 
41725
  0x52, 0x75, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x65, 0x55, 0x74, 0x0B, 0xDA, 
41726
  0x43, 0x5F, 0x74, 0x0D, 0xCF, 0x03, 0x6C, 0x61, 0x62, 0x65, 0x72, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 
41727
  0x30, 0x30, 0x30, 0x36, 0x67, 0x68, 0x72, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41728
  0x66, 0x6B, 0x72, 0x10, 0xDA, 0x87, 0x8D, 0x2E, 0x02, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 
41729
  0x04, 0x00, 0x3C, 0x35, 0x03, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
41730
  0x04, 0x05, 0x00, 0x1E, 0x04, 0x1E, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x05, 0x01, 0x00, 0x2C, 
41731
  0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x32, 0x06, 0x05, 0x00, 0x2C, 
41732
  0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 
41733
  0x06, 0x00, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x0F, 0x00, 0x3A, 0x06, 0x00, 0x07, 0x3D, 
41734
  0x08, 0x06, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x3D, 0x08, 0x06, 0x01, 0x1B, 0x0A, 0x08, 0x00, 0x2C, 
41735
  0x06, 0x03, 0x00, 0x33, 0x06, 0x05, 0x09, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x06, 0x08, 0x00, 0x33, 
41736
  0x06, 0x01, 0x0A, 0x2D, 0x0B, 0x00, 0x40, 0x35, 0x08, 0x0B, 0x00, 0x49, 0x07, 0x00, 0x07, 0x1C, 
41737
  0xF2, 0xFF, 0xFF, 0x2D, 0x06, 0x00, 0x3E, 0x36, 0x06, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 
41738
  0x06, 0x06, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x25, 
41739
  0x05, 0x06, 0x07, 0x1E, 0x05, 0x22, 0x00, 0x2B, 0x07, 0x01, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x1B, 
41740
  0x09, 0x08, 0x00, 0x23, 0x08, 0x07, 0x09, 0x1E, 0x08, 0x1C, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x22, 
41741
  0x0B, 0x0A, 0x01, 0x1E, 0x0B, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x3C, 0x35, 
41742
  0x0C, 0x0D, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x32, 0x0B, 0x0C, 0x00, 0x2D, 
41743
  0x0C, 0x00, 0x40, 0x35, 0x0B, 0x0C, 0x00, 0x3B, 0x0B, 0x00, 0x0A, 0x1B, 0x0C, 0x0B, 0x00, 0x28, 
41744
  0x0D, 0x00, 0x00, 0x49, 0x0B, 0x0C, 0x0D, 0x1B, 0x0D, 0x0B, 0x00, 0x1F, 0x0D, 0x09, 0x00, 0x3A, 
41745
  0x0B, 0x0C, 0x0D, 0x1B, 0x0E, 0x0B, 0x00, 0x2B, 0x0F, 0x02, 0x00, 0x06, 0x0B, 0x0F, 0x01, 0x32, 
41746
  0x0E, 0x0B, 0x00, 0x35, 0x0F, 0x02, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x1C, 0xF8, 0xFF, 0xFF, 0x05, 
41747
  0x07, 0x07, 0x01, 0x1C, 0xE4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x09, 0x00, 0x25, 
41748
  0x07, 0x06, 0x08, 0x1E, 0x07, 0x26, 0x00, 0x2B, 0x08, 0x01, 0x00, 0x3F, 0x09, 0x00, 0x00, 0x1B, 
41749
  0x0A, 0x09, 0x00, 0x23, 0x09, 0x08, 0x0A, 0x1E, 0x09, 0x20, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x22, 
41750
  0x0C, 0x0B, 0x01, 0x1E, 0x0C, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x3C, 0x35, 
41751
  0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x0A, 0x00, 0x32, 0x0C, 0x0B, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x35, 
41752
  0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x32, 0x0D, 0x0C, 0x00, 0x2D, 
41753
  0x0E, 0x00, 0x40, 0x35, 0x0C, 0x0E, 0x00, 0x3B, 0x0C, 0x00, 0x0B, 0x1B, 0x0E, 0x0C, 0x00, 0x28, 
41754
  0x0F, 0x00, 0x00, 0x49, 0x0C, 0x0E, 0x0F, 0x1B, 0x0F, 0x0C, 0x00, 0x1F, 0x0F, 0x09, 0x00, 0x3A, 
41755
  0x0C, 0x0E, 0x0F, 0x1B, 0x10, 0x0C, 0x00, 0x3F, 0x0C, 0x0D, 0x00, 0x06, 0x11, 0x0C, 0x01, 0x32, 
41756
  0x10, 0x11, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x49, 0x0F, 0x0E, 0x0F, 0x1C, 0xF8, 0xFF, 0xFF, 0x05, 
41757
  0x08, 0x08, 0x01, 0x1C, 0xE0, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x09, 0x0C, 0x00, 0x25, 
41758
  0x08, 0x06, 0x09, 0x1E, 0x08, 0x06, 0x00, 0x2B, 0x0A, 0x01, 0x00, 0x3B, 0x09, 0x00, 0x0A, 0x32, 
41759
  0x09, 0x01, 0x00, 0x2D, 0x0A, 0x00, 0x42, 0x36, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 
41760
  0xFF, 0x8D, 0x95, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
41761
  0x00, 0x05, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
41762
  0x00, 0x11, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
41763
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 
41764
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x05, 0x09, 0x00, 0x09, 0x01, 0x0D, 
41765
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0D, 0x00, 0x16, 
41766
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 0x0F, 0x00, 0x1B, 0x00, 0x1B, 
41767
  0x00, 0x1B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x1B, 0x00, 0x0F, 
41768
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x37, 0x00, 0x37, 
41769
  0x00, 0x26, 0x00, 0x26, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 
41770
  0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x05, 0x0D, 0x00, 0x16, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
41771
  0x00, 0x0D, 0x01, 0x13, 0x00, 0x0F, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x01, 0x18, 0x00, 0x18, 
41772
  0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x1B, 
41773
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x3A, 
41774
  0x00, 0x37, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFC, 0x0D, 0x00, 0x0D, 0x00, 
41775
  0x0D, 0xBF, 0xFB, 0x07, 0x00, 0x07, 0x00, 0x07, 0x0A, 0x18, 0x00, 0x18, 0x00, 0x0D, 0x00, 0x0D, 
41776
  0x00, 0x0D, 0xBF, 0xF6, 0x07, 0x8C, 0xB0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41777
  0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
41778
  0x00, 0x15, 0x00, 0x12, 0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
41779
  0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFE, 0x12, 0x00, 0x03, 0x06, 0x05, 0x00, 
41780
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x08, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
41781
  0x07, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 
41782
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x07, 0x03, 
41783
  0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x06, 0x03, 
41784
  0x01, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x16, 0x03, 0x00, 0x03, 
41785
  0x06, 0x03, 0x00, 0x03, 0x0D, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 0x03, 0x22, 0x05, 0x1A, 0x16, 
41786
  0x00, 0x16, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x01, 0x05, 0x01, 0x29, 0x00, 0x15, 0x00, 0x15, 
41787
  0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 
41788
  0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
41789
  0x00, 0x32, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x02, 0x03, 
41790
  0x00, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x03, 0x03, 
41791
  0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x0F, 0x03, 0x00, 0x03, 0x09, 0x03, 
41792
  0x00, 0x03, 0x17, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41793
  0x01, 0x05, 0x01, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBE, 0xFE, 0x01, 0x81, 0x54, 
41794
  0xAB, 0xAA, 0xAA, 0x55, 0x55, 0x56, 0x05, 0x00, 0x00, 0x00, 0xCE, 0x1D, 0x0A, 0x20, 0x20, 0x20, 
41795
  0x20, 0x6E, 0x6F, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 
41796
  0x6E, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x0A, 0xCE, 0x02, 0x0A, 0x0A, 0xDA, 0x81, 0x90, 
41797
  0x00, 0x7E, 0x00, 0xDA, 0x1E, 0x00, 0x7E, 0x01, 0xCF, 0x12, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 
41798
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x48, 0x7E, 0x02, 0xCF, 
41799
  0x09, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x4C, 0x7E, 0x05, 0xCF, 0x02, 0x73, 
41800
  0x6D, 0x50, 0x7E, 0x07, 0xDA, 0x81, 0x15, 0x50, 0x6D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41801
  0x30, 0x36, 0x6A, 0x53, 0x6A, 0x0A, 0xDA, 0x81, 0x22, 0x55, 0x6A, 0x0B, 0xDA, 0x85, 0x31, 0x57, 
41802
  0x6A, 0x0C, 0xDA, 0x85, 0x32, 0x57, 0x5C, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41803
  0x6B, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, 0x1E, 0x03, 0x0B, 
41804
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x2B, 0x06, 0x00, 
41805
  0x00, 0x3A, 0x05, 0x04, 0x06, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x04, 0x06, 
41806
  0x00, 0x1B, 0x02, 0x04, 0x00, 0x1C, 0x36, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 
41807
  0x00, 0x35, 0x05, 0x00, 0x00, 0x1E, 0x05, 0x12, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 
41808
  0x00, 0x35, 0x06, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x3A, 0x07, 0x06, 0x08, 0x31, 0x07, 0x00, 
41809
  0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x06, 0x08, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x04, 
41810
  0x00, 0x33, 0x07, 0x08, 0x06, 0x2C, 0x07, 0x05, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x06, 
41811
  0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x04, 0x07, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x2C, 0x07, 0x07, 
41812
  0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 0x06, 0x07, 
41813
  0x00, 0x1C, 0x19, 0x00, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x09, 0x00, 
41814
  0x00, 0x1E, 0x09, 0x0D, 0x00, 0x2C, 0x0A, 0x09, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x00, 
41815
  0x00, 0x2C, 0x0B, 0x08, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0B, 0x0C, 0x0A, 0x2C, 0x0B, 0x05, 
41816
  0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x08, 0x0B, 
41817
  0x00, 0x1C, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x0A, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x00, 
41818
  0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x08, 0x0B, 
41819
  0x00, 0x1B, 0x06, 0x08, 0x00, 0x1B, 0x04, 0x06, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x2C, 0x03, 0x0B, 
41820
  0x00, 0x2C, 0x04, 0x0C, 0x00, 0x33, 0x03, 0x02, 0x04, 0x2C, 0x04, 0x06, 0x00, 0x35, 0x03, 0x04, 
41821
  0x00, 0x1B, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x0D, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 0x00, 
41822
  0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x0E, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x00, 
41823
  0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x05, 0x1B, 0x00, 0x3D, 0x09, 0x05, 0x00, 0x1B, 0x0A, 0x09, 
41824
  0x00, 0x3D, 0x09, 0x05, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x3D, 0x09, 0x05, 0x02, 0x1B, 0x0C, 0x09, 
41825
  0x00, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0D, 0x0B, 
41826
  0x00, 0x1E, 0x0D, 0x09, 0x00, 0x2C, 0x0E, 0x0F, 0x00, 0x2C, 0x0F, 0x10, 0x00, 0x33, 0x0E, 0x0B, 
41827
  0x0F, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1B, 0x09, 0x0E, 
41828
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x33, 0x0D, 0x0A, 
41829
  0x09, 0x2C, 0x0E, 0x06, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x08, 0x0D, 0x00, 0x1C, 0x02, 0x00, 
41830
  0x00, 0x28, 0x08, 0x00, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x2C, 0x09, 0x0C, 0x00, 0x1C, 0x02, 0x00, 
41831
  0x00, 0x28, 0x09, 0x00, 0x00, 0x1E, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0C, 0x11, 
41832
  0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x0A, 0x12, 
41833
  0x00, 0x2C, 0x0B, 0x13, 0x00, 0x33, 0x0B, 0x02, 0x08, 0x2C, 0x0B, 0x0C, 0x00, 0x33, 0x09, 0x0A, 
41834
  0x0B, 0x2C, 0x0B, 0x14, 0x00, 0x36, 0x0B, 0x00, 0x00, 0x8D, 0xC2, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
41835
  0xBF, 0xFF, 0x0D, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1A, 0x00, 
41836
  0x1A, 0x00, 0x1A, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFE, 
41837
  0x0D, 0x02, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2A, 0x00, 0x2A, 0x00, 
41838
  0x2A, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0xBF, 
41839
  0xFE, 0x0D, 0x00, 0x0D, 0x03, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x0D, 0x00, 0x0D, 0x00, 
41840
  0x0D, 0x04, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFC, 0x0D, 0x04, 0x30, 0x00, 0x30, 0x00, 0x30, 
41841
  0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0xBF, 0xFC, 
41842
  0x0D, 0x00, 0x0D, 0x05, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
41843
  0xFB, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41844
  0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x09, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x0A, 
41845
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x03, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
41846
  0x00, 0x0A, 0x00, 0x0A, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x20, 0x00, 0x35, 
41847
  0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 
41848
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x02, 
41849
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 0x0A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
41850
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xBF, 0xFB, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41851
  0x00, 0x03, 0xCE, 0x18, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 
41852
  0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0xCE, 0x0B, 0x20, 0x6E, 
41853
  0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x81, 0x90, 0x00, 0x32, 0x00, 0xDA, 
41854
  0x1E, 0x00, 0x32, 0x01, 0xDA, 0x86, 0xEA, 0x00, 0x32, 0x02, 0xCF, 0x05, 0x66, 0x6F, 0x75, 0x6E, 
41855
  0x64, 0x01, 0x2B, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x71, 0x04, 0x2B, 0x05, 
41856
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x70, 0x07, 0x2B, 0x06, 0xCF, 0x0A, 0x6D, 0x6F, 
41857
  0x64, 0x75, 0x6C, 0x65, 0x2D, 0x73, 0x65, 0x74, 0x07, 0x29, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41858
  0x30, 0x30, 0x36, 0x6F, 0x0A, 0x29, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6E, 
41859
  0x0D, 0x29, 0x08, 0xCF, 0x06, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x0D, 0x27, 0x08, 0xCF, 0x07, 
41860
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6D, 0x10, 0x27, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41861
  0x30, 0x36, 0x6C, 0x13, 0x27, 0x0A, 0xDA, 0x83, 0xC9, 0x16, 0x1D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 
41862
  0x30, 0x30, 0x30, 0x36, 0x72, 0x1D, 0x25, 0x0B, 0xCF, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2A, 
41863
  0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x03, 0x05, 0x1B, 
41864
  0x05, 0x04, 0x00, 0x1F, 0x05, 0x26, 0x00, 0x3A, 0x04, 0x03, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x28, 
41865
  0x07, 0x00, 0x00, 0x49, 0x04, 0x06, 0x07, 0x1B, 0x07, 0x04, 0x00, 0x1F, 0x07, 0x1E, 0x00, 0x3A, 
41866
  0x04, 0x06, 0x07, 0x1B, 0x08, 0x04, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x04, 0x08, 0x09, 0x1B, 
41867
  0x09, 0x04, 0x00, 0x1F, 0x09, 0x16, 0x00, 0x3A, 0x04, 0x08, 0x09, 0x1B, 0x0A, 0x04, 0x00, 0x2C, 
41868
  0x0B, 0x01, 0x00, 0x3B, 0x04, 0x0A, 0x0B, 0x1B, 0x0B, 0x04, 0x00, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 
41869
  0x04, 0x0B, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 0x3B, 0x0C, 0x0A, 0x0D, 0x1B, 
41870
  0x04, 0x0C, 0x00, 0x1B, 0x0B, 0x04, 0x00, 0x25, 0x04, 0x0B, 0x00, 0x1E, 0x04, 0x06, 0x00, 0x31, 
41871
  0x0A, 0x00, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x29, 0x02, 0x00, 0x00, 0x1C, 
41872
  0x03, 0x00, 0x00, 0x49, 0x09, 0x08, 0x09, 0x1C, 0xEB, 0xFF, 0xFF, 0x49, 0x07, 0x06, 0x07, 0x1C, 
41873
  0xE3, 0xFF, 0xFF, 0x49, 0x05, 0x03, 0x05, 0x1C, 0xDB, 0xFF, 0xFF, 0x1E, 0x02, 0x02, 0x00, 0x04, 
41874
  0x00, 0x00, 0x00, 0x2C, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x33, 0x03, 0x00, 0x04, 0x2C, 
41875
  0x03, 0x06, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8E, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
41876
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41877
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41878
  0x03, 0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x26, 0x00, 0x26, 
41879
  0x00, 0x11, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 
41880
  0x01, 0x09, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 
41881
  0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x07, 0x64, 
41882
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 
41883
  0x02, 0x03, 0x0C, 0x00, 0x03, 0xCE, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0xDA, 0x04, 
41884
  0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x18, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
41885
  0x10, 0xCE, 0x01, 0x3D, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 
41886
  0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x25, 0x02, 0x03, 0x04, 
41887
  0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 
41888
  0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 
41889
  0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xAB, 0x00, 0x0C, 0x00, 0xDA, 0x80, 0x8B, 
41890
  0x00, 0x0C, 0x01, 0xCF, 0x03, 0x76, 0x61, 0x6C, 0x00, 0x0C, 0x02, 0xDA, 0x87, 0xA7, 0x2C, 0x04, 
41891
  0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 
41892
  0x01, 0x00, 0x33, 0x05, 0x03, 0x01, 0x31, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x2C, 0x05, 
41893
  0x02, 0x00, 0x33, 0x05, 0x00, 0x04, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0xDD, 
41894
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41895
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 
41896
  0x85, 0x1A, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0xD8, 0x08, 0x6D, 0x61, 
41897
  0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0xCF, 0x05, 0x2A, 0x65, 0x72, 0x72, 0x2A, 0xDA, 0x86, 0x65, 
41898
  0xCF, 0x0F, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 
41899
  0x74, 0xD3, 0x00, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD8, 0x09, 
41900
  0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xCF, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 
41901
  0x65, 0x64, 0x3F, 0xDA, 0x2B, 0xDA, 0x86, 0x22, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 
41902
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x04, 0x76, 0x61, 0x72, 
41903
  0x2D, 0xDA, 0x04, 0xDA, 0x82, 0x55, 0xDA, 0x85, 0xE6, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x86, 0x00, 
41904
  0x06, 0x01, 0xDA, 0x86, 0x74, 0x00, 0x06, 0x02, 0xDA, 0x86, 0x22, 0x2C, 0x04, 0x00, 0x00, 0x2C, 
41905
  0x05, 0x01, 0x00, 0x33, 0x04, 0x00, 0x05, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x03, 
41906
  0x03, 0x00, 0x00, 0x4E, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
41907
  0x82, 0x25, 0xDA, 0x81, 0xB0, 0xCF, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 
41908
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x83, 0x55, 0xCF, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 
41909
  0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0xD8, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x63, 
41910
  0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0xCF, 0x02, 0x70, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
41911
  0x00, 0x05, 0x01, 0x01, 0x01, 0x05, 0x0A, 0x00, 0x02, 0xCE, 0x02, 0x70, 0x70, 0xDA, 0x04, 0xDA, 
41912
  0x83, 0x32, 0xDA, 0x85, 0x14, 0xDA, 0x81, 0x26, 0xDA, 0x85, 0x1A, 0xDA, 0x83, 0xE6, 0x00, 0x0A, 
41913
  0x00, 0xDA, 0x1E, 0x00, 0x0A, 0x01, 0xDA, 0x87, 0xBB, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
41914
  0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 0x00, 0x32, 0x02, 0x00, 
41915
  0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2C, 0x02, 0x04, 0x00, 0x36, 0x02, 0x00, 
41916
  0x00, 0x87, 0x6A, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 
41917
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xCF, 0x04, 0x6F, 0x6E, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 
41918
  0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x04, 0x6F, 0x6E, 0x65, 
41919
  0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x87, 
41920
  0xBE, 0x2B, 0x02, 0x01, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
41921
  0x00, 0x26, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0x83, 0x8F, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 
41922
  0x00, 0x2F, 0x00, 0x2C, 0x00, 0x2C, 0xDA, 0x80, 0x80, 0xDA, 0x5F, 0xCF, 0x05, 0x6C, 0x61, 0x62, 
41923
  0x65, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
41924
  0xFF, 0x04, 0x0C, 0x00, 0x03, 0xCE, 0x05, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0xDA, 0x04, 0xDA, 0x80, 
41925
  0xAB, 0xD6, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0E, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
41926
  0xFF, 0xFF, 0x0B, 0x39, 0x00, 0x07, 0xCE, 0x06, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x04, 
41927
  0xDA, 0x5C, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xAE, 0xD0, 0x06, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 
41928
  0xDA, 0x80, 0xDC, 0xD0, 0x02, 0x69, 0x30, 0xDA, 0x80, 0xAB, 0xDA, 0x83, 0x42, 0xDA, 0x87, 0xAA, 
41929
  0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1A, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x09, 0x70, 
41930
  0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x39, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 
41931
  0xDA, 0x82, 0x81, 0x00, 0x39, 0x00, 0xCF, 0x03, 0x74, 0x61, 0x67, 0x00, 0x39, 0x01, 0xDA, 0x80, 
41932
  0xC7, 0x00, 0x39, 0x02, 0xCF, 0x06, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x02, 0x39, 0x04, 0xDA, 
41933
  0x7E, 0x05, 0x39, 0x05, 0xDA, 0x85, 0xE7, 0x08, 0x39, 0x06, 0xCF, 0x07, 0x70, 0x61, 0x79, 0x6C, 
41934
  0x6F, 0x61, 0x64, 0x0B, 0x39, 0x07, 0xCF, 0x03, 0x66, 0x69, 0x62, 0x2C, 0x04, 0x00, 0x00, 0x35, 
41935
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 
41936
  0x05, 0x03, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x03, 0x06, 0x00, 0x1B, 0x06, 0x03, 0x00, 0x2C, 
41937
  0x07, 0x00, 0x00, 0x35, 0x03, 0x07, 0x00, 0x1B, 0x07, 0x03, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 
41938
  0x09, 0x01, 0x00, 0x31, 0x09, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x32, 
41939
  0x00, 0x08, 0x00, 0x46, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x33, 
41940
  0x0A, 0x0B, 0x03, 0x31, 0x09, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x2C, 
41941
  0x0A, 0x05, 0x00, 0x33, 0x09, 0x08, 0x0A, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x33, 
41942
  0x09, 0x07, 0x03, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x32, 0x09, 0x07, 0x00, 0x45, 
41943
  0x03, 0x00, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x33, 0x0A, 0x04, 0x03, 0x45, 0x09, 0x00, 0x00, 0x32, 
41944
  0x05, 0x06, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x33, 0x0B, 0x03, 0x04, 0x45, 
41945
  0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x33, 0x0B, 0x00, 0x05, 0x45, 0x03, 0x00, 0x00, 0x2C, 
41946
  0x0C, 0x09, 0x00, 0x33, 0x0C, 0x04, 0x07, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x33, 
41947
  0x0D, 0x03, 0x06, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x33, 
41948
  0x0B, 0x08, 0x09, 0x32, 0x0A, 0x0C, 0x00, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x81, 
41949
  0x8C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41950
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41951
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41952
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41953
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41954
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41955
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41956
  0x00, 0x05, 0xDA, 0x80, 0xB3, 0x00, 0x0C, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x0C, 0x01, 0xDA, 0x80, 
41957
  0xC7, 0x00, 0x0C, 0x02, 0xDA, 0x87, 0xC1, 0x2C, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 
41958
  0x04, 0x00, 0x05, 0x45, 0x03, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 
41959
  0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x33, 0x06, 0x03, 0x04, 0x45, 
41960
  0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x81, 0xA0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41961
  0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41962
  0x03, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 
41963
  0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xCF, 0x0C, 0x74, 
41964
  0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x70, 0xDA, 0x79, 0xCF, 0x11, 0x62, 
41965
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 
41966
  0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 
41967
  0x67, 0x6C, 0x65, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 
41968
  0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 
41969
  0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x06, 0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0xD7, 
41970
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x06, 0xCE, 0x06, 
41971
  0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x33, 0x00, 0x0E, 0x01, 
41972
  0xDA, 0x87, 0xD6, 0x00, 0x0E, 0x02, 0xDA, 0x7E, 0x00, 0x0D, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41973
  0x30, 0x30, 0x32, 0x4C, 0x03, 0x0D, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4B, 
41974
  0x06, 0x0D, 0x05, 0xDA, 0x1E, 0x29, 0x02, 0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x00, 
41975
  0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x09, 0x00, 0x3A, 0x03, 0x00, 0x04, 0x1B, 0x05, 0x03, 
41976
  0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x1B, 0x02, 0x05, 
41977
  0x00, 0x49, 0x04, 0x00, 0x04, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x86, 0x0B, 0x03, 
41978
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41979
  0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x11, 0x66, 0x69, 
41980
  0x62, 0x65, 0x72, 0x2F, 0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0xDA, 
41981
  0x85, 0x71, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
41982
  0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xCF, 0x05, 
41983
  0x64, 0x65, 0x62, 0x75, 0x67, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 
41984
  0x00, 0x02, 0xCE, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x38, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 
41985
  0x00, 0xDA, 0x83, 0xDD, 0xDA, 0x83, 0xDB, 0xCF, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 
41986
  0x3E, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
41987
  0xFF, 0x01, 0x33, 0x00, 0x0B, 0xCE, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x3D, 
41988
  0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x33, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x33, 0x01, 0xDA, 0x87, 
41989
  0xE1, 0x00, 0x33, 0x02, 0xDA, 0x7E, 0x03, 0x33, 0x04, 0xDA, 0x1E, 0x04, 0x32, 0x03, 0xDA, 0x43, 
41990
  0x06, 0x32, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x51, 0x0A, 0x30, 0x08, 0xDA, 
41991
  0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x52, 0x14, 0x29, 
41992
  0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x53, 0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 
41993
  0x30, 0x30, 0x30, 0x30, 0x30, 0x54, 0x22, 0x28, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41994
  0x30, 0x55, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 
41995
  0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 
41996
  0x03, 0x06, 0x1E, 0x05, 0x2A, 0x00, 0x3A, 0x07, 0x00, 0x03, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 
41997
  0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 
41998
  0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 
41999
  0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 
42000
  0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 
42001
  0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 
42002
  0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 
42003
  0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 
42004
  0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x47, 0x09, 0x07, 0x0A, 0x1E, 0x09, 
42005
  0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 
42006
  0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD6, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 0x8A, 
42007
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42008
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42009
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42010
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42011
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42012
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42013
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0xD8, 0x07, 
42014
  0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6A, 
42015
  0x6F, 0x69, 0x6E, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0xCF, 
42016
  0x03, 0x64, 0x65, 0x63, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 
42017
  0x02, 0x00, 0x02, 0xCE, 0x03, 0x64, 0x65, 0x63, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x1E, 0x00, 
42018
  0x02, 0x01, 0xDA, 0x87, 0xED, 0x07, 0x02, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x80, 0x8A, 0x20, 
42019
  0x00, 0x20, 0xCF, 0x0B, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0xD8, 
42020
  0x0B, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0xCF, 0x0C, 0x6F, 0x73, 
42021
  0x2F, 0x73, 0x65, 0x74, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 
42022
  0x65, 0x74, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0xCF, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
42023
  0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 
42024
  0x6C, 0x69, 0x63, 0x65, 0xDA, 0x80, 0xAD, 0xDA, 0x80, 0xB1, 0xCF, 0x05, 0x74, 0x61, 0x62, 0x6C, 
42025
  0x65, 0xDA, 0x82, 0xC2, 0xCF, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 
42026
  0x65, 0x61, 0x74, 0xDA, 0x84, 0x5D, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 
42027
  0x6C, 0x65, 0x72, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 
42028
  0xCF, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 
42029
  0x0D, 0xDA, 0x80, 0xB5, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 
42030
  0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6C, 
42031
  0x6C, 0xDA, 0x04, 0xDA, 0x80, 0xB0, 0x00, 0x04, 0x00, 0xDA, 0x31, 0x00, 0x04, 0x01, 0xDA, 0x81, 
42032
  0x4D, 0x00, 0x04, 0x02, 0xDA, 0x80, 0xB5, 0x30, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
42033
  0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 
42034
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x03, 0xCE, 0x04, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 
42035
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 
42036
  0x02, 0xDA, 0x80, 0xB5, 0x2D, 0x00, 0x00, 0x01, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 
42037
  0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0xF2, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x8E, 
42038
  0xF2, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x6F, 0x73, 
42039
  0x2F, 0x70, 0x69, 0x70, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x70, 0x69, 0x70, 0x65, 0xCF, 0x11, 
42040
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 
42041
  0x6C, 0xD7, 0x01, 0xCD, 0x01, 0xDD, 0x00, 0x00, 0x08, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
42042
  0x01, 0x13, 0x01, 0x23, 0xCE, 0x11, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x70, 0x64, 
42043
  0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x82, 0xBC, 0xBF, 0xFF, 0x00, 0x00, 
42044
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
42045
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
42046
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 
42047
  0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
42048
  0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 
42049
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 
42050
  0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 
42051
  0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 
42052
  0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 
42053
  0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x00, 
42054
  0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 
42055
  0x82, 0xF6, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0xF7, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x82, 0xF8, 
42056
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x82, 0xF9, 0xBF, 0xFF, 0x00, 0x1E, 0xDA, 0x82, 0xE5, 0x00, 0x13, 
42057
  0x00, 0xCF, 0x07, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x73, 0x00, 0x13, 0x01, 0xDA, 0x88, 0x00, 
42058
  0x02, 0x13, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x39, 0x05, 0x13, 0x04, 0xCF, 
42059
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 0x08, 0x12, 0x05, 0xCF, 0x06, 0x62, 0x75, 0x6E, 
42060
  0x64, 0x6C, 0x65, 0x2D, 0x03, 0x00, 0x13, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 
42061
  0x04, 0x00, 0x00, 0x49, 0x02, 0x03, 0x04, 0x1B, 0x04, 0x02, 0x00, 0x1F, 0x04, 0x0C, 0x00, 0x3A, 
42062
  0x02, 0x03, 0x04, 0x1B, 0x05, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 
42063
  0x02, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x19, 0x35, 
42064
  0x06, 0x07, 0x00, 0x49, 0x04, 0x03, 0x04, 0x1C, 0xF5, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 
42065
  0xFF, 0x91, 0x96, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42066
  0x00, 0x05, 0x00, 0x05, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42067
  0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 0x0E, 0x73, 0x74, 0x72, 
42068
  0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0xD8, 0x0E, 0x73, 0x74, 0x72, 
42069
  0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0xCF, 0x06, 0x73, 0x74, 0x72, 
42070
  0x75, 0x63, 0x74, 0xDA, 0x81, 0xAD, 0xCF, 0x0C, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 
42071
  0x61, 0x73, 0x6B, 0x73, 0xD8, 0x0C, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 0x61, 0x73, 
42072
  0x6B, 0x73, 0xCF, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0xD7, 
42073
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x06, 
42074
  0x00, 0x04, 0xCE, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0xDA, 
42075
  0x04, 0xCF, 0x11, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x61, 
42076
  0x6C, 0x69, 0x61, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x06, 0x01, 0xCF, 0x08, 0x72, 
42077
  0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x06, 0x03, 
42078
  0xDA, 0x88, 0x0C, 0x2C, 0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x34, 
42079
  0x02, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x8F, 0xA3, 0x05, 0x00, 0x05, 
42080
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
42081
  0x73, 0x74, 0x65, 0x70, 0xDA, 0x84, 0xFB, 0xCF, 0x0E, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 
42082
  0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xDA, 0x77, 0xCF, 0x09, 0x70, 0x65, 0x67, 0x2F, 0x6D, 
42083
  0x61, 0x74, 0x63, 0x68, 0xD8, 0x09, 0x70, 0x65, 0x67, 0x2F, 0x6D, 0x61, 0x74, 0x63, 0x68, 0xCF, 
42084
  0x14, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 
42085
  0x61, 0x74, 0x74, 0x65, 0x6E, 0xD8, 0x14, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 0x72, 
42086
  0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xCF, 0x09, 0x77, 0x68, 0x65, 
42087
  0x6E, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 
42088
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x17, 0x00, 0x06, 0xCE, 0x09, 0x77, 0x68, 0x65, 0x6E, 0x2D, 
42089
  0x77, 0x69, 0x74, 0x68, 0xDA, 0x04, 0xDA, 0x81, 0x47, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
42090
  0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0D, 0x2C, 0x00, 0x05, 0xDA, 0x80, 0xE2, 0xDA, 
42091
  0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAE, 0xD0, 0x05, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x80, 0xDC, 
42092
  0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xAB, 0xDA, 0x83, 0x42, 0xDA, 0x80, 0xDE, 0xCF, 0x01, 0x3D, 0xDA, 
42093
  0x80, 0xDF, 0xDA, 0x87, 0xC9, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 0x2C, 0x00, 0xDA, 0x64, 
42094
  0x00, 0x2C, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x2C, 0x02, 0xDA, 0x80, 0xCA, 0x02, 0x2C, 0x04, 0xDA, 
42095
  0x31, 0x05, 0x2C, 0x05, 0xDA, 0x82, 0xCD, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 
42096
  0x04, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x05, 0x03, 0x00, 0x46, 
42097
  0x03, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x03, 0x34, 
42098
  0x01, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x33, 
42099
  0x07, 0x06, 0x08, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x07, 0x04, 0x03, 0x45, 
42100
  0x06, 0x00, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 
42101
  0x08, 0x05, 0x00, 0x33, 0x08, 0x05, 0x03, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x32, 
42102
  0x08, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x2C, 0x0A, 0x09, 0x00, 0x33, 
42103
  0x09, 0x03, 0x0A, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x0A, 0x00, 0x33, 0x09, 0x05, 0x04, 0x45, 
42104
  0x03, 0x00, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x33, 0x0A, 0x08, 0x05, 0x31, 0x03, 0x00, 0x00, 0x45, 
42105
  0x09, 0x00, 0x00, 0x2C, 0x08, 0x0C, 0x00, 0x33, 0x08, 0x06, 0x07, 0x32, 0x00, 0x09, 0x00, 0x45, 
42106
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x81, 0x73, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42107
  0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42108
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42109
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42110
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42111
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42112
  0xDA, 0x80, 0x83, 0x00, 0x17, 0x01, 0xDA, 0x80, 0xC7, 0x01, 0x17, 0x03, 0xDA, 0x82, 0x5E, 0x03, 
42113
  0x17, 0x04, 0xCF, 0x04, 0x63, 0x74, 0x6F, 0x72, 0x05, 0x17, 0x05, 0xCF, 0x04, 0x64, 0x74, 0x6F, 
42114
  0x72, 0x06, 0x17, 0x00, 0xDA, 0x88, 0x17, 0x08, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42115
  0x30, 0x30, 0x39, 0x3D, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x01, 0x1B, 
42116
  0x04, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x02, 0x1B, 0x05, 0x02, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x32, 
42117
  0x03, 0x04, 0x00, 0x46, 0x02, 0x00, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1C, 
42118
  0x02, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x32, 0x06, 0x03, 0x00, 0x45, 0x06, 0x00, 0x00, 0x31, 
42119
  0x06, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 
42120
  0x08, 0x02, 0x00, 0x33, 0x08, 0x02, 0x07, 0x45, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x81, 
42121
  0xB3, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x03, 
42122
  0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 
42123
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
42124
  0x80, 0xBA, 0xD7, 0x01, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
42125
  0xFF, 0x02, 0x06, 0x01, 0x09, 0xCE, 0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x72, 
42126
  0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x04, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
42127
  0x72, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x87, 0xD5, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
42128
  0x80, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xB6, 
42129
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 
42130
  0x00, 0x06, 0xDA, 0x80, 0xB9, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xCD, 0x00, 0x06, 0x01, 0xDA, 0x80, 
42131
  0xC7, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xBA, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 
42132
  0x03, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x36, 0x03, 0x00, 0x00, 0xBF, 
42133
  0xFF, 0x8F, 0x10, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 
42134
  0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xD8, 0x0C, 
42135
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xCF, 0x05, 0x63, 0x6F, 
42136
  0x75, 0x6E, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 
42137
  0xFF, 0xFF, 0x01, 0x80, 0xA3, 0x00, 0x2A, 0xCE, 0x05, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xDA, 0x04, 
42138
  0xDA, 0x2F, 0x00, 0x80, 0xA3, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xA3, 0x01, 0xDA, 0x33, 0x00, 
42139
  0x80, 0xA3, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xA3, 0x03, 0xDA, 0x88, 0x25, 0x00, 0x80, 0xA3, 
42140
  0x04, 0xDA, 0x7E, 0x02, 0x80, 0xA2, 0x06, 0xDA, 0x81, 0xFC, 0x02, 0x80, 0xA2, 0x06, 0xCF, 0x07, 
42141
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x44, 0x04, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42142
  0x30, 0x31, 0x46, 0x07, 0x11, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x45, 0x0A, 
42143
  0x11, 0x09, 0xDA, 0x1E, 0x15, 0x29, 0x09, 0xDA, 0x82, 0x00, 0x16, 0x29, 0x08, 0xDA, 0x82, 0x01, 
42144
  0x16, 0x29, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x48, 0x19, 0x29, 0x0B, 0xCF, 
42145
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x47, 0x1C, 0x29, 0x0C, 0xDA, 0x1E, 0x2D, 0x4A, 0x0A, 
42146
  0xDA, 0x82, 0x00, 0x2F, 0x4A, 0x0B, 0xDA, 0x82, 0x04, 0x30, 0x4A, 0x09, 0xDA, 0x82, 0x01, 0x31, 
42147
  0x4A, 0x0C, 0xDA, 0x82, 0x05, 0x31, 0x4A, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
42148
  0x4A, 0x34, 0x4A, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x49, 0x37, 0x4A, 0x0F, 
42149
  0xDA, 0x1E, 0x4E, 0x75, 0x0B, 0xDA, 0x82, 0x00, 0x50, 0x75, 0x0C, 0xDA, 0x82, 0x04, 0x52, 0x75, 
42150
  0x0D, 0xDA, 0x82, 0x08, 0x53, 0x75, 0x0A, 0xDA, 0x82, 0x01, 0x54, 0x75, 0x0E, 0xDA, 0x82, 0x05, 
42151
  0x55, 0x75, 0x0F, 0xDA, 0x82, 0x09, 0x55, 0x75, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42152
  0x31, 0x4C, 0x58, 0x75, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4B, 0x5B, 0x75, 
42153
  0x12, 0xDA, 0x1E, 0x79, 0x80, 0xA2, 0x0B, 0xDA, 0x82, 0x0C, 0x7D, 0x80, 0xA2, 0x0C, 0xDA, 0x82, 
42154
  0x0D, 0x7E, 0x80, 0xA2, 0x0A, 0xDA, 0x82, 0x0E, 0x7E, 0x80, 0xA2, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
42155
  0x30, 0x30, 0x30, 0x31, 0x4E, 0x80, 0x81, 0x80, 0xA2, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42156
  0x30, 0x31, 0x4D, 0x80, 0x84, 0x80, 0xA2, 0x0F, 0xDA, 0x1E, 0x80, 0x85, 0x80, 0x99, 0x0D, 0xDA, 
42157
  0x43, 0x80, 0x85, 0x80, 0x99, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4F, 0x80, 
42158
  0x89, 0x80, 0x97, 0x12, 0xDA, 0x82, 0x12, 0x80, 0x8B, 0x80, 0x97, 0x13, 0xDA, 0x82, 0x13, 0x80, 
42159
  0x8D, 0x80, 0x97, 0x14, 0xDA, 0x82, 0x14, 0x2B, 0x04, 0x00, 0x00, 0x3F, 0x05, 0x02, 0x00, 0x1B, 
42160
  0x06, 0x05, 0x00, 0x26, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x0E, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 
42161
  0x07, 0x01, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x09, 0x00, 0x3A, 0x07, 0x01, 0x08, 0x1B, 
42162
  0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x1E, 0x07, 0x02, 0x00, 0x05, 
42163
  0x04, 0x04, 0x01, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF8, 0xFF, 0xFF, 0x1C, 0x91, 0x00, 0x00, 0x26, 
42164
  0x07, 0x06, 0x01, 0x1E, 0x07, 0x17, 0x00, 0x3D, 0x08, 0x02, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 
42165
  0x08, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x01, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 
42166
  0x0B, 0x0F, 0x00, 0x3A, 0x0A, 0x01, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x49, 0x08, 0x09, 0x08, 0x28, 
42167
  0x0D, 0x00, 0x00, 0x25, 0x0A, 0x0D, 0x08, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x3A, 
42168
  0x0A, 0x09, 0x08, 0x32, 0x0C, 0x0A, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x05, 
42169
  0x04, 0x04, 0x01, 0x49, 0x0B, 0x01, 0x0B, 0x1C, 0xF2, 0xFF, 0xFF, 0x1C, 0x79, 0x00, 0x00, 0x26, 
42170
  0x08, 0x06, 0x02, 0x1E, 0x08, 0x20, 0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 
42171
  0x09, 0x02, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 
42172
  0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 0x0E, 0x15, 0x00, 0x3A, 
42173
  0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x49, 0x09, 0x0A, 0x09, 0x28, 0x10, 0x00, 0x00, 0x25, 
42174
  0x0D, 0x10, 0x09, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x49, 0x0C, 0x0B, 0x0C, 0x28, 
42175
  0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x0C, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 
42176
  0x0D, 0x0A, 0x09, 0x3A, 0x10, 0x0B, 0x0C, 0x33, 0x0F, 0x0D, 0x10, 0x35, 0x11, 0x00, 0x00, 0x1E, 
42177
  0x11, 0x02, 0x00, 0x05, 0x04, 0x04, 0x01, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xEC, 0xFF, 0xFF, 0x1C, 
42178
  0x58, 0x00, 0x00, 0x26, 0x09, 0x06, 0x03, 0x1E, 0x09, 0x2A, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 
42179
  0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x02, 0x1B, 
42180
  0x0D, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 
42181
  0x11, 0x00, 0x00, 0x49, 0x10, 0x01, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1F, 0x11, 0x1C, 0x00, 0x3A, 
42182
  0x10, 0x01, 0x11, 0x1B, 0x12, 0x10, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x13, 0x00, 0x00, 0x25, 
42183
  0x10, 0x13, 0x0A, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x15, 0x00, 0x00, 0x49, 0x0E, 0x0C, 0x0E, 0x28, 
42184
  0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0E, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x49, 
42185
  0x0F, 0x0D, 0x0F, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0F, 0x1E, 0x10, 0x02, 0x00, 0x1C, 
42186
  0x0B, 0x00, 0x00, 0x3A, 0x10, 0x0B, 0x0A, 0x3A, 0x13, 0x0C, 0x0E, 0x3A, 0x14, 0x0D, 0x0F, 0x33, 
42187
  0x12, 0x10, 0x13, 0x31, 0x14, 0x00, 0x00, 0x35, 0x15, 0x00, 0x00, 0x1E, 0x15, 0x02, 0x00, 0x05, 
42188
  0x04, 0x04, 0x01, 0x49, 0x11, 0x01, 0x11, 0x1C, 0xE5, 0xFF, 0xFF, 0x1C, 0x2D, 0x00, 0x00, 0x31, 
42189
  0x06, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 
42190
  0x06, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0A, 0x0C, 0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x2A, 
42191
  0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 
42192
  0x0E, 0x20, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x2B, 0x0D, 0x00, 0x00, 0x23, 
42193
  0x10, 0x0D, 0x06, 0x1E, 0x10, 0x12, 0x00, 0x3A, 0x11, 0x0B, 0x0D, 0x1B, 0x12, 0x11, 0x00, 0x3A, 
42194
  0x11, 0x02, 0x0D, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x11, 0x13, 0x12, 0x1B, 0x14, 0x11, 0x00, 0x28, 
42195
  0x15, 0x00, 0x00, 0x25, 0x11, 0x15, 0x14, 0x1E, 0x11, 0x04, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x1C, 
42196
  0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0B, 0x0D, 0x14, 0x3A, 0x15, 0x13, 0x14, 0x3C, 
42197
  0x0C, 0x0D, 0x15, 0x05, 0x0D, 0x0D, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 
42198
  0x08, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1E, 
42199
  0x0D, 0x02, 0x00, 0x05, 0x04, 0x04, 0x01, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xE1, 0xFF, 0xFF, 0x03, 
42200
  0x04, 0x00, 0x00, 0x84, 0x71, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42201
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42202
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42203
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42204
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42205
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42206
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42207
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42208
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42209
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42210
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42211
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42212
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42213
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42214
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42215
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42216
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42217
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42218
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42219
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42220
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF4, 0x01, 0xCF, 0x0F, 0x6C, 0x6F, 0x61, 
42221
  0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x82, 0x41, 0xCF, 
42222
  0x10, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 
42223
  0x2A, 0xDA, 0x82, 0x36, 0xDA, 0x82, 0xF5, 0xD7, 0x01, 0xCD, 0x01, 0xDD, 0x00, 0x00, 0x0A, 0x01, 
42224
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0F, 0x01, 0x1D, 0xCE, 0x10, 0x62, 0x75, 0x6E, 0x64, 
42225
  0x6C, 0x65, 0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x81, 
42226
  0x8B, 0xDA, 0x82, 0xBC, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
42227
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
42228
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
42229
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 
42230
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 
42231
  0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
42232
  0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 
42233
  0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
42234
  0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 
42235
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 
42236
  0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0x00, 0x0F, 0x00, 0xDA, 
42237
  0x81, 0x29, 0x00, 0x0F, 0x01, 0xCF, 0x0A, 0x6E, 0x65, 0x77, 0x2D, 0x63, 0x6F, 0x6E, 0x66, 0x69, 
42238
  0x67, 0x00, 0x0F, 0x02, 0xDA, 0x82, 0xF5, 0x03, 0x0F, 0x04, 0xDA, 0x81, 0x39, 0x06, 0x0F, 0x06, 
42239
  0xDA, 0x81, 0x22, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x0D, 0x35, 0x03, 0x04, 0x00, 0x1B, 
42240
  0x04, 0x03, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x3B, 0x05, 0x04, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x31, 
42241
  0x01, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x00, 0x06, 0x00, 0x34, 
42242
  0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x18, 0x35, 0x08, 0x09, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 
42243
  0xFF, 0x91, 0x43, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
42244
  0x01, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFB, 
42245
  0x03, 0xDB, 0x01, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 
42246
  0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x0F, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
42247
  0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 
42248
  0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 0xCF, 0x07, 0x62, 0x75, 0x66, 
42249
  0x66, 0x65, 0x72, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 
42250
  0x06, 0x00, 0x02, 0xCE, 0x07, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 
42251
  0xDA, 0x82, 0x4E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x88, 0x3D, 0x31, 0x00, 
42252
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 
42253
  0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6A, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 
42254
  0x00, 0x2D, 0xDA, 0x80, 0x82, 0xDA, 0x5D, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 
42255
  0x6E, 0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x68, 0xDA, 0x84, 0x85, 
42256
  0xDA, 0x84, 0x83, 0xDA, 0x83, 0xF2, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x01, 0x01, 
42257
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x25, 0x00, 0x08, 0xCE, 0x03, 0x6C, 0x65, 0x74, 0xDA, 0x04, 
42258
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xDA, 
42259
  0x83, 0x2A, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x83, 0x28, 0x2B, 
42260
  0x03, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x03, 0x2B, 0x04, 0x01, 0x00, 0x25, 0x03, 0x04, 0x02, 0x03, 
42261
  0x03, 0x00, 0x00, 0x79, 0x15, 0x00, 0x15, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCE, 0x27, 0x65, 
42262
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 
42263
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
42264
  0x74, 0x6F, 0x20, 0x6C, 0x65, 0x74, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0xB5, 0xDA, 
42265
  0x30, 0xDA, 0x82, 0xB1, 0xDA, 0x2C, 0x00, 0x25, 0x00, 0xDA, 0x83, 0xA6, 0x00, 0x25, 0x01, 0xDA, 
42266
  0x80, 0xC7, 0x00, 0x25, 0x02, 0xDA, 0x83, 0xF2, 0x08, 0x25, 0x04, 0xDA, 0x37, 0x09, 0x25, 0x05, 
42267
  0xDA, 0x43, 0x0D, 0x25, 0x07, 0xDA, 0x83, 0xC0, 0x11, 0x1E, 0x0A, 0xDA, 0x3A, 0x14, 0x1E, 0x0C, 
42268
  0xDA, 0x46, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 
42269
  0x05, 0x00, 0x1E, 0x04, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x3F, 0x03, 
42270
  0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x31, 0x06, 
42271
  0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x23, 0x08, 0x05, 0x04, 0x1E, 0x08, 
42272
  0x0F, 0x00, 0x3A, 0x09, 0x00, 0x05, 0x1B, 0x0A, 0x09, 0x00, 0x05, 0x0B, 0x05, 0x01, 0x3A, 0x09, 
42273
  0x00, 0x0B, 0x1B, 0x0C, 0x09, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x0A, 0x0C, 0x2C, 0x0D, 
42274
  0x04, 0x00, 0x35, 0x09, 0x0D, 0x00, 0x32, 0x07, 0x09, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x35, 0x0D, 
42275
  0x0E, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x32, 0x07, 0x01, 0x00, 0x2C, 0x09, 
42276
  0x06, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2B, 0x09, 0x00, 0x00, 0x32, 0x07, 0x09, 0x00, 0x2C, 0x09, 
42277
  0x07, 0x00, 0x36, 0x09, 0x00, 0x00, 0x81, 0x1A, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
42278
  0x03, 0x00, 0x20, 0x00, 0x20, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
42279
  0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 
42280
  0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
42281
  0x05, 0xBF, 0xFD, 0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
42282
  0x00, 0x03, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0xD8, 0x08, 0x66, 0x66, 
42283
  0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0xCF, 0x0C, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 
42284
  0x69, 0x6E, 0x74, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x02, 
42285
  0x14, 0x00, 0x06, 0xCE, 0x0C, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 
42286
  0x6F, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x30, 0x00, 0x14, 0x00, 0xCF, 0x04, 0x69, 0x6E, 0x74, 0x6F, 
42287
  0x00, 0x14, 0x01, 0xDA, 0x81, 0x5C, 0x00, 0x14, 0x02, 0xDA, 0x88, 0x48, 0x00, 0x13, 0x01, 0xCF, 
42288
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x76, 0x03, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42289
  0x30, 0x30, 0x33, 0x75, 0x06, 0x13, 0x05, 0xDA, 0x1E, 0x2E, 0x02, 0x00, 0x00, 0x28, 0x04, 0x00, 
42290
  0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x0F, 0x00, 0x3A, 0x03, 0x01, 
42291
  0x04, 0x1B, 0x05, 0x03, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x03, 0x06, 
42292
  0x00, 0x1E, 0x03, 0x04, 0x00, 0x32, 0x00, 0x05, 0x00, 0x35, 0x06, 0x02, 0x00, 0x1C, 0x04, 0x00, 
42293
  0x00, 0x32, 0x00, 0x05, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x49, 0x04, 0x01, 
42294
  0x04, 0x1C, 0xF2, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x86, 0xFA, 0x01, 0x04, 0x03, 0x00, 0x03, 
42295
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 
42296
  0x01, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x03, 
42297
  0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x84, 0x52, 
42298
  0xDA, 0x83, 0xA3, 0xDA, 0x82, 0xC9, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 
42299
  0x6F, 0x69, 0x6E, 0xDA, 0x84, 0x62, 0xCF, 0x05, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0xDA, 0x80, 0xB0, 
42300
  0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x63, 0x64, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 
42301
  0x2F, 0x67, 0x63, 0x64, 0xCF, 0x02, 0x2B, 0x2B, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
42302
  0x01, 0x01, 0x01, 0x02, 0x08, 0x00, 0x02, 0xCE, 0x02, 0x2B, 0x2B, 0xDA, 0x04, 0xDA, 0x82, 0x78, 
42303
  0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x88, 0x53, 0x2C, 0x03, 
42304
  0x00, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x33, 0x03, 0x00, 0x04, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 
42305
  0x01, 0x00, 0x33, 0x04, 0x00, 0x02, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0x8B, 
42306
  0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xCF, 
42307
  0x03, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x01, 0x01, 0xCD, 0x7F, 
42308
  0xFF, 0xFF, 0xFF, 0x06, 0x19, 0x00, 0x04, 0xCE, 0x03, 0x73, 0x65, 0x71, 0xDA, 0x04, 0xDA, 0x5C, 
42309
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x03, 0x09, 0x00, 0x02, 0xCE, 
42310
  0x10, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2D, 0x62, 0x6F, 0x64, 
42311
  0x79, 0xDA, 0x04, 0xDA, 0x85, 0x7B, 0xCE, 0x0F, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x6C, 0x6F, 
42312
  0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0xDA, 0x83, 0x13, 0x00, 0x09, 0x00, 0xDA, 0x80, 0xC7, 
42313
  0x00, 0x09, 0x01, 0xCF, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x6D, 0x70, 0x74, 0x79, 
42314
  0x2D, 0x62, 0x6F, 0x64, 0x79, 0x3F, 0x02, 0x00, 0x00, 0x26, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x06, 
42315
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x02, 0x04, 0x00, 0x2C, 0x02, 0x02, 
42316
  0x00, 0x36, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x82, 0x51, 0x0A, 0x00, 0x07, 0x00, 0x03, 
42317
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0xDA, 0x80, 0xAB, 
42318
  0xDA, 0x80, 0xB3, 0xDA, 0x30, 0xDA, 0x83, 0xEA, 0x00, 0x19, 0x00, 0xDA, 0x84, 0x1D, 0x00, 0x19, 
42319
  0x01, 0xDA, 0x80, 0xC7, 0x00, 0x19, 0x02, 0xDA, 0x88, 0x56, 0x02, 0x19, 0x04, 0xDA, 0x86, 0x05, 
42320
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 
42321
  0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 
42322
  0x33, 0x08, 0x04, 0x06, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x31, 0x08, 0x00, 0x00, 
42323
  0x34, 0x01, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x04, 0x06, 
42324
  0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x09, 0x00, 0x08, 0x45, 0x06, 0x00, 0x00, 
42325
  0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x07, 0x06, 0x31, 0x04, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 
42326
  0x03, 0x08, 0x00, 0x00, 0x82, 0xA1, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
42327
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42328
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42329
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 
42330
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0B, 0x00, 0x06, 0xCE, 
42331
  0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x0B, 0x00, 0xDA, 0x81, 0x5C, 
42332
  0x00, 0x0B, 0x01, 0xDA, 0x88, 0x5D, 0x00, 0x0B, 0x02, 0xDA, 0x83, 0xC0, 0x00, 0x0A, 0x00, 0xCF, 
42333
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x71, 0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42334
  0x30, 0x30, 0x30, 0x70, 0x06, 0x0A, 0x05, 0xDA, 0x1E, 0x2B, 0x02, 0x01, 0x00, 0x28, 0x04, 0x00, 
42335
  0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x06, 0x00, 0x3A, 0x03, 0x00, 
42336
  0x04, 0x1B, 0x05, 0x03, 0x00, 0x0A, 0x02, 0x02, 0x05, 0x49, 0x04, 0x00, 0x04, 0x1C, 0xFB, 0xFF, 
42337
  0xFF, 0x03, 0x02, 0x00, 0x00, 0x82, 0xE6, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42338
  0x00, 0x03, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x08, 0x6F, 
42339
  0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 
42340
  0x6C, 0xCF, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xDA, 0x83, 0xC8, 0xCF, 0x07, 0x2A, 0x64, 
42341
  0x65, 0x62, 0x75, 0x67, 0x2A, 0xDA, 0x85, 0x17, 0xCF, 0x03, 0x2D, 0x3E, 0x3E, 0xD7, 0x00, 0xCD, 
42342
  0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 
42343
  0x04, 0xCE, 0x03, 0x2D, 0x3E, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 0xBD, 0x00, 0x05, 0x00, 0xDA, 0x1E, 
42344
  0x00, 0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 0x88, 0x66, 0x01, 0x05, 0x04, 0xCF, 
42345
  0x03, 0x66, 0x6F, 0x70, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x33, 0x04, 0x00, 0x01, 
42346
  0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 
42347
  0x02, 0x06, 0x25, 0x00, 0x06, 0xCE, 0x03, 0x66, 0x6F, 0x70, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 
42348
  0xD8, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x82, 0xB5, 
42349
  0xDA, 0x82, 0xB1, 0xDA, 0x71, 0x00, 0x25, 0x00, 0xDA, 0x82, 0xB2, 0x00, 0x25, 0x01, 0xDA, 0x32, 
42350
  0x00, 0x25, 0x02, 0xDA, 0x88, 0x69, 0x17, 0x25, 0x05, 0xDA, 0x82, 0xCA, 0x19, 0x25, 0x06, 0xDA, 
42351
  0x82, 0x33, 0x21, 0x25, 0x04, 0xDA, 0x38, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
42352
  0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 
42353
  0x06, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 
42354
  0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 
42355
  0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 
42356
  0x01, 0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 
42357
  0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 0x01, 0x1B, 0x06, 0x04, 0x00, 0x31, 
42358
  0x05, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x33, 
42359
  0x04, 0x06, 0x07, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x32, 
42360
  0x01, 0x04, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x36, 0x07, 0x00, 0x00, 0x85, 0x7C, 0x1E, 0x00, 0x1E, 
42361
  0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 
42362
  0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 
42363
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42364
  0x00, 0x05, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
42365
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x7B, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 
42366
  0x03, 0x00, 0x03, 0xCF, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 
42367
  0xDA, 0x84, 0x3E, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x07, 0x65, 0x76, 
42368
  0x2F, 0x72, 0x65, 0x61, 0x64, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 
42369
  0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 0xDA, 0x82, 0xEF, 0xD7, 0x01, 
42370
  0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x01, 0x1B, 0xCE, 0x0F, 
42371
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x70, 0x6F, 0x6C, 0x69, 0x73, 0x74, 0xDA, 
42372
  0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
42373
  0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 
42374
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
42375
  0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 
42376
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 
42377
  0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 
42378
  0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 
42379
  0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0x00, 
42380
  0x18, 0x00, 0xDA, 0x82, 0xEF, 0x01, 0x18, 0x02, 0xCF, 0x07, 0x76, 0x69, 0x73, 0x69, 0x74, 0x65, 
42381
  0x64, 0x03, 0x18, 0x04, 0xCF, 0x0C, 0x63, 0x79, 0x63, 0x6C, 0x65, 0x2D, 0x64, 0x65, 0x74, 0x65, 
42382
  0x63, 0x74, 0x05, 0x18, 0x06, 0xCF, 0x05, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x07, 0x18, 0x08, 0xDA, 
42383
  0x84, 0x40, 0x09, 0x18, 0x0A, 0xCF, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x0C, 0x17, 0x0C, 0xCF, 
42384
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x75, 0x0F, 0x17, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42385
  0x30, 0x30, 0x37, 0x74, 0x12, 0x17, 0x0E, 0xDA, 0x81, 0x64, 0x44, 0x01, 0x00, 0x00, 0x1B, 0x02, 
42386
  0x01, 0x00, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 
42387
  0x05, 0x00, 0x40, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x30, 0x09, 0x00, 0x00, 0x1B, 0x0A, 
42388
  0x09, 0x00, 0x2D, 0x0C, 0x00, 0x10, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x28, 0x0D, 
42389
  0x00, 0x00, 0x49, 0x0B, 0x0C, 0x0D, 0x1B, 0x0D, 0x0B, 0x00, 0x1F, 0x0D, 0x07, 0x00, 0x3A, 0x0B, 
42390
  0x0C, 0x0D, 0x1B, 0x0E, 0x0B, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x35, 0x0B, 0x0A, 0x00, 0x49, 0x0D, 
42391
  0x0C, 0x0D, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 
42392
  0x00, 0x07, 0x01, 0x01, 0x01, 0x08, 0x38, 0x02, 0x1C, 0xCE, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 
42393
  0xDA, 0x04, 0xDA, 0x30, 0xCE, 0x04, 0x20, 0x2D, 0x3E, 0x20, 0xDA, 0x84, 0x62, 0xCE, 0x29, 0x63, 
42394
  0x79, 0x63, 0x6C, 0x65, 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 
42395
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 
42396
  0x63, 0x69, 0x65, 0x73, 0x3A, 0x20, 0x25, 0x73, 0xDA, 0x81, 0x49, 0xD0, 0x0C, 0x64, 0x65, 0x70, 
42397
  0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0xDA, 0x82, 0x7C, 0xD8, 0x09, 0x61, 0x72, 
42398
  0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 
42399
  0x01, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 
42400
  0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 
42401
  0x0B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 
42402
  0xFF, 0x01, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 
42403
  0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 
42404
  0x81, 0x12, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x81, 0x14, 
42405
  0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 
42406
  0x01, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x02, 
42407
  0xDA, 0x88, 0x73, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x74, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x88, 
42408
  0x75, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 0x40, 0x00, 0x38, 0x00, 0xDA, 0x81, 0x64, 0x00, 0x38, 
42409
  0x01, 0xDA, 0x88, 0x76, 0x1F, 0x2A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x73, 
42410
  0x22, 0x2A, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x72, 0x25, 0x2A, 0x06, 0xDA, 
42411
  0x81, 0x15, 0x2E, 0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x08, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 
42412
  0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2D, 0x04, 0x00, 0x02, 0x3B, 0x03, 0x04, 0x00, 0x1E, 0x03, 
42413
  0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x04, 0x3B, 0x03, 0x04, 0x00, 0x1E, 0x03, 
42414
  0x0A, 0x00, 0x2D, 0x04, 0x00, 0x08, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x05, 
42415
  0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x32, 0x05, 0x04, 0x00, 0x2C, 0x06, 
42416
  0x04, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x03, 0x00, 0x04, 0x29, 0x04, 0x00, 0x00, 0x3C, 0x03, 
42417
  0x00, 0x04, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x01, 0x0D, 0x35, 0x03, 0x04, 0x00, 0x2C, 0x05, 
42418
  0x05, 0x00, 0x3B, 0x04, 0x03, 0x05, 0x20, 0x04, 0x02, 0x00, 0x2C, 0x04, 0x06, 0x00, 0x1B, 0x03, 
42419
  0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 
42420
  0x07, 0x00, 0x3A, 0x04, 0x03, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x04, 
42421
  0x01, 0x00, 0x49, 0x05, 0x03, 0x05, 0x1C, 0xFA, 0xFF, 0xFF, 0x2D, 0x03, 0x00, 0x04, 0x28, 0x04, 
42422
  0x00, 0x00, 0x3C, 0x03, 0x00, 0x04, 0x2D, 0x03, 0x00, 0x02, 0x29, 0x04, 0x00, 0x00, 0x3C, 0x03, 
42423
  0x00, 0x04, 0x2D, 0x03, 0x00, 0x08, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x35, 0x03, 
42424
  0x04, 0x00, 0x2D, 0x04, 0x00, 0x06, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 
42425
  0x00, 0x00, 0xBF, 0xFF, 0x00, 0x90, 0x9E, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42426
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x1B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x54, 
42427
  0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 
42428
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 
42429
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42430
  0x00, 0x07, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
42431
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 
42432
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x90, 0x9A, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 
42433
  0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x0B, 0x0D, 0x00, 0x0D, 0x00, 
42434
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1B, 0x00, 
42435
  0x1B, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xEE, 0x03, 0x54, 0x01, 0x00, 0x00, 0xDB, 0x01, 0xCF, 0x09, 
42436
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x09, 0x74, 0x61, 0x62, 0x6C, 0x65, 
42437
  0x2F, 0x6E, 0x65, 0x77, 0xCF, 0x04, 0x69, 0x6E, 0x74, 0x3F, 0xD8, 0x04, 0x69, 0x6E, 0x74, 0x3F, 
42438
  0xCF, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x85, 0x75, 
42439
  0xCF, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xD8, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
42440
  0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0xD8, 0x0C, 
42441
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0xCF, 0x0D, 0x62, 0x75, 
42442
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x81, 0x70, 0xDA, 0x82, 
42443
  0xEE, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x06, 0x36, 0x01, 0x1D, 
42444
  0xCE, 0x10, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 
42445
  0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x88, 0x7C, 0xDA, 0x82, 0x7C, 0xDA, 0x83, 0x56, 0xD7, 0x00, 0xCD, 
42446
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x01, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x73, 0x6F, 
42447
  0x72, 0x74, 0x65, 0x64, 0xDA, 0x04, 0xDA, 0x88, 0x6B, 0xDA, 0x80, 0xF2, 0x00, 0x06, 0x00, 0xDA, 
42448
  0x33, 0x00, 0x06, 0x01, 0xDA, 0x80, 0xFD, 0x00, 0x06, 0x02, 0xCF, 0x06, 0x73, 0x6F, 0x72, 0x74, 
42449
  0x65, 0x64, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x32, 0x03, 
42450
  0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x83, 0xD2, 0x09, 0x00, 0x09, 0x00, 
42451
  0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCE, 0x30, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 
42452
  0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x25, 0x73, 0x2C, 0x20, 0x62, 0x72, 
42453
  0x65, 0x61, 0x6B, 0x73, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x20, 0x62, 
42454
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x25, 0x6E, 0xDA, 0x81, 0x49, 0xBF, 0xFF, 0x00, 0x00, 
42455
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
42456
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
42457
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 
42458
  0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
42459
  0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 
42460
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 
42461
  0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 
42462
  0xDA, 0x82, 0xED, 0x00, 0x36, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x36, 0x01, 0xDA, 0x82, 0xEE, 0x01, 
42463
  0x36, 0x03, 0xCF, 0x08, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x67, 0x65, 0x04, 0x25, 0x05, 0xCF, 
42464
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x6F, 0x07, 0x25, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42465
  0x30, 0x30, 0x37, 0x6E, 0x0A, 0x25, 0x07, 0xDA, 0x81, 0x64, 0x11, 0x23, 0x09, 0xDA, 0x82, 0x3C, 
42466
  0x16, 0x23, 0x0A, 0xCF, 0x04, 0x64, 0x65, 0x70, 0x73, 0x16, 0x23, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 
42467
  0x30, 0x30, 0x30, 0x37, 0x71, 0x19, 0x23, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
42468
  0x70, 0x1C, 0x23, 0x0C, 0xDA, 0x81, 0x15, 0x2E, 0x33, 0x05, 0xCF, 0x0D, 0x62, 0x72, 0x65, 0x61, 
42469
  0x6B, 0x61, 0x67, 0x65, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 
42470
  0x00, 0x2D, 0x05, 0x00, 0x10, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x28, 0x06, 0x00, 
42471
  0x00, 0x49, 0x04, 0x05, 0x06, 0x1B, 0x06, 0x04, 0x00, 0x1F, 0x06, 0x1D, 0x00, 0x3A, 0x04, 0x05, 
42472
  0x06, 0x1B, 0x07, 0x04, 0x00, 0x25, 0x04, 0x07, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x16, 0x00, 
42473
  0x00, 0x31, 0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x0D, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 
42474
  0x00, 0x2C, 0x0A, 0x00, 0x00, 0x3B, 0x08, 0x09, 0x0A, 0x20, 0x08, 0x02, 0x00, 0x2C, 0x08, 0x01, 
42475
  0x00, 0x1B, 0x0A, 0x08, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x08, 0x0A, 0x0B, 0x1B, 0x0B, 0x08, 
42476
  0x00, 0x1F, 0x0B, 0x09, 0x00, 0x3A, 0x08, 0x0A, 0x0B, 0x1B, 0x0C, 0x08, 0x00, 0x25, 0x08, 0x0C, 
42477
  0x00, 0x1E, 0x08, 0x03, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x3C, 0x03, 0x07, 0x0D, 0x49, 0x0B, 0x0A, 
42478
  0x0B, 0x1C, 0xF8, 0xFF, 0xFF, 0x49, 0x06, 0x05, 0x06, 0x1C, 0xE4, 0xFF, 0xFF, 0x28, 0x05, 0x00, 
42479
  0x00, 0x49, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x0C, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x02, 
42480
  0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 
42481
  0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x33, 0x06, 0x00, 0x05, 0x2C, 0x07, 0x05, 
42482
  0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x36, 0x04, 0x00, 
42483
  0x00, 0xBF, 0xFF, 0x90, 0x8B, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 
42484
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x07, 
42485
  0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
42486
  0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0F, 
42487
  0x00, 0x0B, 0x00, 0x21, 0x00, 0x21, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0xBF, 0xFC, 0x05, 0x00, 0x05, 
42488
  0x06, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1A, 0x00, 0x1A, 
42489
  0x00, 0x1A, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 
42490
  0x00, 0x05, 0xDB, 0x01, 0xCF, 0x0A, 0x65, 0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
42491
  0xD8, 0x0A, 0x65, 0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xCF, 0x0A, 0x6F, 0x73, 
42492
  0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 
42493
  0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0xD8, 
42494
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0xDA, 0x81, 0x05, 0xDA, 0x80, 0xF2, 
42495
  0xCF, 0x07, 0x62, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x11, 
42496
  0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x07, 0x62, 0x72, 0x73, 0x68, 
42497
  0x69, 0x66, 0x74, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
42498
  0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
42499
  0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x16, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
42500
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x16, 0x03, 0x03, 0x04, 0x05, 
42501
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 
42502
  0x08, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 
42503
  0x65, 0x65, 0x70, 0xCF, 0x05, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0xDA, 0x81, 0x91, 0xCF, 0x09, 0x65, 
42504
  0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 
42505
  0x65, 0x61, 0x64, 0xCF, 0x0E, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 
42506
  0x65, 0x61, 0x6B, 0xDA, 0x84, 0x99, 0xCF, 0x06, 0x67, 0x65, 0x6E, 0x73, 0x79, 0x6D, 0xDA, 0x5C, 
42507
  0xCF, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x81, 0x90, 0xCF, 0x13, 0x62, 0x75, 0x66, 0x66, 
42508
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x33, 0x32, 0xD8, 
42509
  0x13, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 
42510
  0x61, 0x74, 0x33, 0x32, 0xCF, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
42511
  0x65, 0xD8, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xCF, 0x0A, 
42512
  0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x82, 0x3F, 0xCF, 0x09, 0x2A, 
42513
  0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x2A, 0xD0, 0x07, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 
42514
  0x64, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x74, 0x6F, 0x75, 0x63, 0x68, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 
42515
  0x74, 0x6F, 0x75, 0x63, 0x68, 0xCF, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0xD7, 
42516
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x02, 0x03, 0x00, 0x0F, 0x00, 0x06, 0xCE, 0x08, 
42517
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0xDA, 0x04, 0x00, 0x0F, 0x00, 0xDA, 0x1E, 0x00, 
42518
  0x0F, 0x01, 0xDA, 0x33, 0x00, 0x0F, 0x02, 0xDA, 0x85, 0xB5, 0x00, 0x0F, 0x03, 0xDA, 0x88, 0xB1, 
42519
  0x02, 0x0F, 0x05, 0xDA, 0x3A, 0x03, 0x0F, 0x06, 0xDA, 0x39, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 
42520
  0x01, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x28, 0x08, 0x00, 0x00, 0x4A, 0x07, 
42521
  0x08, 0x05, 0x1E, 0x07, 0x08, 0x00, 0x3A, 0x08, 0x01, 0x05, 0x25, 0x09, 0x08, 0x00, 0x1E, 0x09, 
42522
  0x03, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x05, 0x01, 0x05, 0x1C, 0xF7, 
42523
  0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x84, 0xA6, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x01, 
42524
  0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x1C, 0x00, 0x28, 0x01, 
42525
  0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 
42526
  0x77, 0x68, 0x65, 0x72, 0x65, 0xD8, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x77, 0x68, 
42527
  0x65, 0x72, 0x65, 0xCF, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xDA, 0x84, 0x64, 0xCF, 0x0E, 
42528
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x12, 
42529
  0xCF, 0x04, 0x73, 0x6F, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x02, 0x02, 
42530
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xAD, 0x00, 0x2F, 0xCE, 0x04, 0x73, 0x6F, 0x6D, 0x65, 
42531
  0xDA, 0x04, 0xDA, 0x2F, 0x00, 0x80, 0xAD, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xAD, 0x01, 0xDA, 
42532
  0x33, 0x00, 0x80, 0xAD, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xAD, 0x03, 0xDA, 0x88, 0xB8, 0x00, 
42533
  0x80, 0xAD, 0x04, 0xDA, 0x7E, 0x02, 0x80, 0xAC, 0x06, 0xDA, 0x81, 0xFC, 0x02, 0x80, 0xAC, 0x06, 
42534
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x74, 0x04, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
42535
  0x30, 0x30, 0x30, 0x34, 0x76, 0x07, 0x13, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
42536
  0x75, 0x0A, 0x13, 0x09, 0xDA, 0x1E, 0x0D, 0x11, 0x0A, 0xDA, 0x80, 0x87, 0x17, 0x2D, 0x09, 0xDA, 
42537
  0x82, 0x00, 0x18, 0x2D, 0x08, 0xDA, 0x82, 0x01, 0x18, 0x2D, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42538
  0x30, 0x30, 0x34, 0x78, 0x1B, 0x2D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x77, 
42539
  0x1E, 0x2D, 0x0C, 0xDA, 0x1E, 0x27, 0x2B, 0x0A, 0xDA, 0x80, 0x87, 0x31, 0x50, 0x0A, 0xDA, 0x82, 
42540
  0x00, 0x33, 0x50, 0x0B, 0xDA, 0x82, 0x04, 0x34, 0x50, 0x09, 0xDA, 0x82, 0x01, 0x35, 0x50, 0x0C, 
42541
  0xDA, 0x82, 0x05, 0x35, 0x50, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x7A, 0x38, 
42542
  0x50, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x79, 0x3B, 0x50, 0x0F, 0xDA, 0x1E, 
42543
  0x4A, 0x4E, 0x0D, 0xDA, 0x80, 0x87, 0x54, 0x7D, 0x0B, 0xDA, 0x82, 0x00, 0x56, 0x7D, 0x0C, 0xDA, 
42544
  0x82, 0x04, 0x58, 0x7D, 0x0D, 0xDA, 0x82, 0x08, 0x59, 0x7D, 0x0A, 0xDA, 0x82, 0x01, 0x5A, 0x7D, 
42545
  0x0E, 0xDA, 0x82, 0x05, 0x5B, 0x7D, 0x0F, 0xDA, 0x82, 0x09, 0x5B, 0x7D, 0x01, 0xCF, 0x07, 0x5F, 
42546
  0x30, 0x30, 0x30, 0x30, 0x34, 0x42, 0x5E, 0x7D, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42547
  0x34, 0x41, 0x61, 0x7D, 0x12, 0xDA, 0x1E, 0x77, 0x7B, 0x10, 0xDA, 0x80, 0x87, 0x80, 0x81, 0x80, 
42548
  0xAC, 0x0B, 0xDA, 0x82, 0x0C, 0x80, 0x85, 0x80, 0xAC, 0x0C, 0xDA, 0x82, 0x0D, 0x80, 0x86, 0x80, 
42549
  0xAC, 0x0A, 0xDA, 0x82, 0x0E, 0x80, 0x86, 0x80, 0xAC, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42550
  0x30, 0x34, 0x44, 0x80, 0x89, 0x80, 0xAC, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
42551
  0x43, 0x80, 0x8C, 0x80, 0xAC, 0x0F, 0xDA, 0x1E, 0x80, 0x8D, 0x80, 0xA1, 0x0D, 0xDA, 0x43, 0x80, 
42552
  0x8D, 0x80, 0xA1, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x45, 0x80, 0x91, 0x80, 
42553
  0x9F, 0x12, 0xDA, 0x82, 0x12, 0x80, 0x93, 0x80, 0x9F, 0x13, 0xDA, 0x82, 0x13, 0x80, 0x95, 0x80, 
42554
  0x9F, 0x14, 0xDA, 0x82, 0x14, 0x80, 0xA6, 0x80, 0xAA, 0x10, 0xDA, 0x80, 0x87, 0x28, 0x04, 0x00, 
42555
  0x00, 0x3F, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x26, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x10, 
42556
  0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x01, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x0B, 
42557
  0x00, 0x3A, 0x07, 0x01, 0x08, 0x1B, 0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x07, 0x00, 
42558
  0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 
42559
  0x00, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF6, 0xFF, 0xFF, 0x1C, 0x99, 0x00, 0x00, 0x26, 0x07, 0x06, 
42560
  0x01, 0x1E, 0x07, 0x19, 0x00, 0x3D, 0x08, 0x02, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x08, 0x00, 
42561
  0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x01, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x11, 
42562
  0x00, 0x3A, 0x0A, 0x01, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x49, 0x08, 0x09, 0x08, 0x28, 0x0D, 0x00, 
42563
  0x00, 0x25, 0x0A, 0x0D, 0x08, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x3A, 0x0A, 0x09, 
42564
  0x08, 0x32, 0x0C, 0x0A, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x0A, 0x0D, 0x00, 0x1E, 0x0D, 0x03, 
42565
  0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0B, 0x1C, 0xF0, 0xFF, 
42566
  0xFF, 0x1C, 0x7F, 0x00, 0x00, 0x26, 0x08, 0x06, 0x02, 0x1E, 0x08, 0x22, 0x00, 0x3D, 0x09, 0x02, 
42567
  0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 0x09, 0x02, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x28, 0x09, 0x00, 
42568
  0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 
42569
  0x00, 0x1F, 0x0E, 0x17, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x49, 0x09, 0x0A, 
42570
  0x09, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x09, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x10, 0x00, 
42571
  0x00, 0x49, 0x0C, 0x0B, 0x0C, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x0C, 0x1E, 0x0D, 0x02, 
42572
  0x00, 0x1C, 0x0B, 0x00, 0x00, 0x3A, 0x0D, 0x0A, 0x09, 0x3A, 0x10, 0x0B, 0x0C, 0x33, 0x0F, 0x0D, 
42573
  0x10, 0x35, 0x11, 0x00, 0x00, 0x1B, 0x0D, 0x11, 0x00, 0x1E, 0x11, 0x03, 0x00, 0x1B, 0x04, 0x0D, 
42574
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xEA, 0xFF, 0xFF, 0x1C, 0x5C, 0x00, 
42575
  0x00, 0x26, 0x09, 0x06, 0x03, 0x1E, 0x09, 0x2C, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 
42576
  0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x02, 0x1B, 0x0D, 0x0A, 
42577
  0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x11, 0x00, 
42578
  0x00, 0x49, 0x10, 0x01, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1F, 0x11, 0x1E, 0x00, 0x3A, 0x10, 0x01, 
42579
  0x11, 0x1B, 0x12, 0x10, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 
42580
  0x0A, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x17, 0x00, 0x00, 0x49, 0x0E, 0x0C, 0x0E, 0x28, 0x13, 0x00, 
42581
  0x00, 0x25, 0x10, 0x13, 0x0E, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x49, 0x0F, 0x0D, 
42582
  0x0F, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0F, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x0D, 0x00, 
42583
  0x00, 0x3A, 0x10, 0x0B, 0x0A, 0x3A, 0x13, 0x0C, 0x0E, 0x3A, 0x14, 0x0D, 0x0F, 0x33, 0x12, 0x10, 
42584
  0x13, 0x31, 0x14, 0x00, 0x00, 0x35, 0x15, 0x00, 0x00, 0x1B, 0x10, 0x15, 0x00, 0x1E, 0x15, 0x03, 
42585
  0x00, 0x1B, 0x04, 0x10, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x11, 0x01, 0x11, 0x1C, 0xE3, 0xFF, 
42586
  0xFF, 0x1C, 0x2F, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 
42587
  0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0A, 0x0C, 
42588
  0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x2A, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 
42589
  0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 0x0E, 0x22, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 
42590
  0x00, 0x2B, 0x0D, 0x00, 0x00, 0x23, 0x10, 0x0D, 0x06, 0x1E, 0x10, 0x12, 0x00, 0x3A, 0x11, 0x0B, 
42591
  0x0D, 0x1B, 0x12, 0x11, 0x00, 0x3A, 0x11, 0x02, 0x0D, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x11, 0x13, 
42592
  0x12, 0x1B, 0x14, 0x11, 0x00, 0x28, 0x15, 0x00, 0x00, 0x25, 0x11, 0x15, 0x14, 0x1E, 0x11, 0x04, 
42593
  0x00, 0x29, 0x0A, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0B, 0x0D, 
42594
  0x14, 0x3A, 0x15, 0x13, 0x14, 0x3C, 0x0C, 0x0D, 0x15, 0x05, 0x0D, 0x0D, 0x01, 0x1C, 0xEE, 0xFF, 
42595
  0xFF, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x0C, 0x00, 
42596
  0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x10, 0x0D, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x04, 0x10, 
42597
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xDF, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
42598
  0x00, 0x88, 0xD3, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42599
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42600
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42601
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42602
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42603
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42604
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42605
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42606
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42607
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42608
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42609
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42610
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42611
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42612
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42613
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42614
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42615
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42616
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42617
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42618
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42619
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF3, 0x01, 0xCF, 0x0F, 0x6D, 
42620
  0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xD8, 0x0F, 
42621
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xDA, 
42622
  0x87, 0x12, 0xDA, 0x86, 0xF9, 0xCF, 0x03, 0x61, 0x73, 0x6D, 0xD8, 0x03, 0x61, 0x73, 0x6D, 0xDA, 
42623
  0x85, 0xAE, 0xDA, 0x85, 0xAC, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x72, 0x65, 0x78, 
42624
  0x70, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x72, 0x65, 0x78, 0x70, 0xCF, 0x09, 0x65, 
42625
  0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xDA, 0x80, 0xD1, 0xCF, 0x04, 0x74, 0x68, 0x61, 
42626
  0x77, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x0B, 0x2A, 0x00, 0x03, 
42627
  0xCE, 0x04, 0x74, 0x68, 0x61, 0x77, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x6B, 0xDA, 0x70, 
42628
  0xDA, 0x61, 0xDA, 0x83, 0x9D, 0xDA, 0x62, 0xDA, 0x68, 0xDA, 0x88, 0x16, 0xDA, 0x81, 0xF3, 0xDA, 
42629
  0x86, 0x68, 0x00, 0x2A, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x2A, 0x01, 0xDA, 0x88, 0xCE, 0x04, 0x2A, 
42630
  0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4A, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 
42631
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 
42632
  0x01, 0x00, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x04, 
42633
  0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 
42634
  0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2C, 0x06, 
42635
  0x04, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x07, 
42636
  0x05, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x36, 0x07, 
42637
  0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x07, 0x00, 0x31, 0x00, 
42638
  0x00, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x01, 0x07, 0x00, 0x2C, 0x08, 
42639
  0x06, 0x00, 0x36, 0x08, 0x00, 0x00, 0x2C, 0x08, 0x09, 0x00, 0x25, 0x07, 0x03, 0x08, 0x1E, 0x07, 
42640
  0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x36, 0x08, 0x00, 0x00, 0x03, 0x00, 
42641
  0x00, 0x00, 0x88, 0xF2, 0x01, 0x05, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 
42642
  0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 
42643
  0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x1C, 0x00, 
42644
  0x1C, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 
42645
  0x04, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFC, 0x03, 0x00, 
42646
  0x03, 0x00, 0x03, 0x05, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x03, 0xDA, 0x82, 0x9E, 0xDA, 
42647
  0x82, 0x93, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xDA, 0x81, 0x46, 
42648
  0xCF, 0x0D, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xD8, 
42649
  0x0D, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xCF, 0x08, 
42650
  0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x2D, 
42651
  0x01, 0x01, 0x01, 0x52, 0x81, 0x6E, 0x00, 0x1F, 0x24, 0xCE, 0x08, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 
42652
  0x61, 0x69, 0x6E, 0xDA, 0x04, 0xDA, 0x83, 0x40, 0xDA, 0x82, 0xC9, 0xCE, 0x0A, 0x4A, 0x41, 0x4E, 
42653
  0x45, 0x54, 0x5F, 0x50, 0x41, 0x54, 0x48, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 
42654
  0x6E, 0x76, 0xDA, 0x81, 0x1D, 0xD2, 0x02, 0x00, 0xDA, 0x81, 0x16, 0xDA, 0x81, 0x19, 0xDA, 0x88, 
42655
  0xB2, 0xCE, 0x01, 0x3B, 0xDA, 0x85, 0x2C, 0xDA, 0x82, 0xE8, 0xDA, 0x83, 0xDB, 0xD7, 0x00, 0xCD, 
42656
  0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x0C, 0x39, 0x00, 0x0B, 0xCE, 0x12, 0x6D, 0x6F, 
42657
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 
42658
  0xDA, 0x04, 0xDA, 0x81, 0xB2, 0xDA, 0x81, 0xB3, 0xDA, 0x81, 0x26, 0xDA, 0x87, 0x68, 0xDA, 0x82, 
42659
  0x30, 0xCE, 0x06, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0xDA, 0x81, 0xBB, 0xCE, 0x05, 0x3A, 0x73, 
42660
  0x79, 0x73, 0x3A, 0xDA, 0x82, 0x72, 0xDA, 0x83, 0x89, 0xDA, 0x30, 0xD8, 0x0C, 0x61, 0x72, 0x72, 
42661
  0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x00, 0x39, 0x00, 0xDA, 0x81, 0x22, 0x00, 
42662
  0x39, 0x01, 0xCF, 0x12, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x73, 
42663
  0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x01, 0x39, 0x03, 0xCF, 0x06, 0x63, 0x6F, 0x70, 0x69, 0x65, 
42664
  0x73, 0x02, 0x39, 0x04, 0xCF, 0x0A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 
42665
  0x08, 0x39, 0x06, 0xDA, 0x82, 0x26, 0x08, 0x32, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42666
  0x35, 0x72, 0x0B, 0x32, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x71, 0x0E, 0x32, 
42667
  0x09, 0xDA, 0x86, 0x86, 0x0F, 0x32, 0x0A, 0xDA, 0x82, 0xCC, 0x13, 0x32, 0x0B, 0xCF, 0x07, 0x70, 
42668
  0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x17, 0x20, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42669
  0x35, 0x73, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x2C, 0x05, 
42670
  0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 
42671
  0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x06, 0x08, 0x1B, 0x08, 
42672
  0x07, 0x00, 0x1F, 0x08, 0x26, 0x00, 0x3A, 0x07, 0x06, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x1B, 0x0A, 
42673
  0x07, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x07, 0x0B, 0x00, 0x1B, 0x0B, 
42674
  0x07, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x04, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 
42675
  0x0C, 0x00, 0x1E, 0x0C, 0x07, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x32, 0x0E, 0x0B, 0x00, 0x2C, 0x0F, 
42676
  0x06, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1B, 0x07, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x07, 
42677
  0x0D, 0x00, 0x1E, 0x07, 0x10, 0x00, 0x1B, 0x04, 0x09, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x33, 0x0C, 
42678
  0x00, 0x0B, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2B, 0x0D, 0x01, 0x00, 0x32, 0x0D, 
42679
  0x0A, 0x00, 0x2C, 0x0E, 0x09, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x34, 0x0D, 
42680
  0x00, 0x00, 0x45, 0x0C, 0x00, 0x00, 0x32, 0x03, 0x0C, 0x00, 0x2C, 0x0E, 0x0A, 0x00, 0x35, 0x0D, 
42681
  0x0E, 0x00, 0x49, 0x08, 0x06, 0x08, 0x1C, 0xDB, 0xFF, 0xFF, 0x2B, 0x08, 0x01, 0x00, 0x06, 0x07, 
42682
  0x08, 0x04, 0x32, 0x06, 0x07, 0x00, 0x34, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x0B, 0x00, 0x35, 0x08, 
42683
  0x09, 0x00, 0x03, 0x06, 0x00, 0x00, 0x8B, 0x4E, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0B, 0x00, 
42684
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42685
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 
42686
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 
42687
  0x22, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x1B, 0x00, 0x1B, 0x00, 
42688
  0x1B, 0x00, 0x1B, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
42689
  0x1A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x05, 0x14, 0x00, 0x14, 
42690
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF2, 0x01, 0xDA, 0x87, 0x68, 0xDA, 0x81, 
42691
  0x25, 0xCE, 0x0D, 0x4A, 0x41, 0x4E, 0x45, 0x54, 0x5F, 0x50, 0x52, 0x4F, 0x46, 0x49, 0x4C, 0x45, 
42692
  0xD0, 0x0B, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x70, 0x61, 0x74, 0x68, 0xCE, 0x08, 0x4E, 
42693
  0x4F, 0x5F, 0x43, 0x4F, 0x4C, 0x4F, 0x52, 0xDA, 0x82, 0x51, 0xD8, 0x06, 0x73, 0x74, 0x64, 0x6F, 
42694
  0x75, 0x74, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0xDA, 0x87, 0x39, 
42695
  0xCE, 0x01, 0x52, 0xCE, 0x01, 0x78, 0xCE, 0x01, 0x4E, 0xCE, 0x01, 0x6C, 0xCE, 0x01, 0x45, 0xCE, 
42696
  0x01, 0x70, 0xCE, 0x01, 0x73, 0xCE, 0x01, 0x64, 0xCE, 0x01, 0x42, 0xCE, 0x01, 0x77, 0xCE, 0x01, 
42697
  0x68, 0xCE, 0x01, 0x6B, 0xCE, 0x01, 0x55, 0xCE, 0x01, 0x76, 0xCE, 0x01, 0x65, 0xCE, 0x01, 0x50, 
42698
  0xCE, 0x01, 0x69, 0xCE, 0x01, 0x4C, 0xCE, 0x01, 0x6E, 0xCE, 0x01, 0x72, 0xCE, 0x01, 0x62, 0xCE, 
42699
  0x01, 0x75, 0xDA, 0x84, 0x12, 0xCE, 0x01, 0x6D, 0xCE, 0x01, 0x71, 0xDA, 0x3D, 0xDA, 0x88, 0x6B, 
42700
  0xDA, 0x81, 0x82, 0xDA, 0x82, 0x3F, 0xDA, 0x85, 0x7D, 0xDA, 0x85, 0x7E, 0xDA, 0x85, 0x17, 0xDA, 
42701
  0x86, 0xF1, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x03, 0x03, 0x03, 0x0B, 0x33, 0x00, 
42702
  0x01, 0x0A, 0xCE, 0x08, 0x72, 0x75, 0x6E, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x04, 0xCF, 0x04, 
42703
  0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x08, 0xDA, 0x82, 0xC7, 0xDA, 0x85, 0x17, 0xDA, 0x85, 0x41, 0xD0, 
42704
  0x01, 0x79, 0xDA, 0x80, 0xDC, 0xDA, 0x85, 0x71, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xDA, 0x85, 
42705
  0x10, 0x00, 0x33, 0x00, 0xDA, 0x83, 0x49, 0x00, 0x33, 0x01, 0xCF, 0x07, 0x73, 0x75, 0x62, 0x61, 
42706
  0x72, 0x67, 0x73, 0x00, 0x33, 0x02, 0xCF, 0x03, 0x61, 0x72, 0x67, 0x00, 0x33, 0x03, 0xCF, 0x08, 
42707
  0x72, 0x75, 0x6E, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x02, 0x33, 0x05, 0xDA, 0x82, 0xCC, 0x06, 0x0F, 
42708
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x61, 0x17, 0x31, 0x09, 0xDA, 0x85, 0x50, 
42709
  0x19, 0x31, 0x0A, 0xCF, 0x09, 0x77, 0x72, 0x61, 0x70, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x1D, 0x31, 
42710
  0x0B, 0xDA, 0x31, 0x1E, 0x31, 0x08, 0xDA, 0x7E, 0x2C, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x05, 
42711
  0x1B, 0x05, 0x04, 0x00, 0x1E, 0x04, 0x2F, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x3B, 0x06, 0x05, 0x07, 
42712
  0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x06, 0x00, 0x00, 
42713
  0x2C, 0x09, 0x02, 0x00, 0x3B, 0x08, 0x05, 0x09, 0x2B, 0x0A, 0x00, 0x00, 0x3A, 0x09, 0x08, 0x0A, 
42714
  0x1B, 0x06, 0x09, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x06, 0x21, 0x00, 0x2C, 0x0A, 0x03, 0x00, 
42715
  0x3B, 0x09, 0x00, 0x0A, 0x1E, 0x09, 0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 
42716
  0x2C, 0x08, 0x05, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x0A, 0x08, 0x00, 
42717
  0x33, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x35, 0x08, 0x0B, 0x00, 0x1B, 0x0B, 0x08, 0x00, 
42718
  0x28, 0x08, 0x00, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0C, 0x0D, 0x00, 
42719
  0x1E, 0x0C, 0x0E, 0x00, 0x37, 0x08, 0x0B, 0x08, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0E, 0x08, 0x00, 
42720
  0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0F, 0x09, 0x00, 0x4A, 0x0E, 0x0F, 0x0D, 0x1E, 0x0E, 0x06, 0x00, 
42721
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x0F, 0x0A, 0x00, 0x35, 0x0D, 0x0F, 0x00, 0x32, 0x0B, 0x08, 0x00, 
42722
  0x35, 0x0F, 0x0D, 0x00, 0x1C, 0xF0, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
42723
  0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
42724
  0xFF, 0x00, 0x04, 0x01, 0x03, 0xCE, 0x09, 0x77, 0x72, 0x61, 0x70, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 
42725
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x0C, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x07, 
42726
  0x00, 0x04, 0x00, 0xDA, 0x89, 0x0D, 0x2D, 0x01, 0x00, 0x01, 0x34, 0x01, 0x00, 0x00, 0x2D, 0x01, 
42727
  0x00, 0x07, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0xA8, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
42728
  0x07, 0x91, 0xA4, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x01, 0x17, 0x00, 0x17, 0x00, 0x13, 
42729
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x13, 
42730
  0xBF, 0xFF, 0x03, 0x00, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
42731
  0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 
42732
  0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 
42733
  0x19, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x09, 0x00, 
42734
  0x09, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x82, 0x00, 0x00, 0x00, 0xDA, 
42735
  0x81, 0x9A, 0xDA, 0x85, 0x43, 0xDA, 0x85, 0x1C, 0xDA, 0x86, 0x1B, 0xDA, 0x86, 0x53, 0xD8, 0x05, 
42736
  0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x81, 0xC5, 0xD0, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xD8, 
42737
  0x07, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0xDA, 0x87, 0xF9, 0xCE, 0x06, 0x4A, 0x61, 0x6E, 
42738
  0x65, 0x74, 0x20, 0xCE, 0x06, 0x31, 0x2E, 0x33, 0x38, 0x2E, 0x30, 0xCE, 0x08, 0x64, 0x64, 0x63, 
42739
  0x31, 0x32, 0x32, 0x39, 0x35, 0xDA, 0x84, 0x5C, 0xDA, 0x81, 0x1E, 0xCE, 0x13, 0x20, 0x2D, 0x20, 
42740
  0x27, 0x28, 0x64, 0x6F, 0x63, 0x29, 0x27, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x68, 0x65, 0x6C, 0x70, 
42741
  0xDA, 0x81, 0x90, 0xDA, 0x83, 0xE6, 0xDA, 0x85, 0x6D, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x51, 
42742
  0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x71, 0xDA, 0x83, 0x32, 0xDA, 0x84, 0xDC, 0xDA, 0x83, 0x39, 
42743
  0xDA, 0x81, 0x26, 0xDA, 0x85, 0x42, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0D, 0x05, 0x00, 
42744
  0x05, 0x0A, 0x25, 0x00, 0x01, 0x09, 0xCE, 0x04, 0x72, 0x65, 0x70, 0x6C, 0xDA, 0x04, 0xDA, 0x81, 
42745
  0x9A, 0xDA, 0x85, 0x10, 0xDA, 0x85, 0x1C, 0xDA, 0x85, 0x26, 0xDA, 0x81, 0xC5, 0xD0, 0x04, 0x72, 
42746
  0x65, 0x70, 0x6C, 0xDA, 0x85, 0x1D, 0xDA, 0x85, 0x24, 0xDA, 0x85, 0x1E, 0xDA, 0x85, 0x1F, 0x00, 
42747
  0x25, 0x00, 0xDA, 0x85, 0x4F, 0x00, 0x25, 0x01, 0xCF, 0x08, 0x6F, 0x6E, 0x73, 0x69, 0x67, 0x6E, 
42748
  0x61, 0x6C, 0x00, 0x25, 0x02, 0xDA, 0x83, 0x49, 0x00, 0x25, 0x03, 0xDA, 0x85, 0x54, 0x00, 0x25, 
42749
  0x04, 0xDA, 0x85, 0x52, 0x00, 0x25, 0x05, 0xCF, 0x04, 0x72, 0x65, 0x70, 0x6C, 0x06, 0x25, 0x07, 
42750
  0xDA, 0x83, 0x49, 0x0C, 0x25, 0x09, 0xDA, 0x85, 0x4F, 0x0C, 0x16, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
42751
  0x30, 0x30, 0x30, 0x36, 0x48, 0x20, 0x02, 0x05, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 0x08, 
42752
  0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 
42753
  0x00, 0x20, 0x00, 0x04, 0x00, 0x30, 0x09, 0x00, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x1C, 0x02, 0x00, 
42754
  0x00, 0x1B, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x1E, 0x01, 0x03, 0x00, 0x1B, 0x0A, 0x01, 
42755
  0x00, 0x1C, 0x07, 0x00, 0x00, 0x2B, 0x0B, 0x01, 0x00, 0x29, 0x0C, 0x00, 0x00, 0x33, 0x07, 0x0B, 
42756
  0x0C, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x2C, 0x0B, 0x02, 
42757
  0x00, 0x2C, 0x0C, 0x03, 0x00, 0x33, 0x0B, 0x07, 0x0C, 0x2C, 0x0B, 0x04, 0x00, 0x2C, 0x0C, 0x05, 
42758
  0x00, 0x33, 0x03, 0x0B, 0x0C, 0x2C, 0x0B, 0x06, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x33, 0x0B, 0x09, 
42759
  0x0C, 0x2C, 0x0B, 0x08, 0x00, 0x33, 0x04, 0x0B, 0x0A, 0x43, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 
42760
  0x00, 0x2C, 0x0B, 0x09, 0x00, 0x36, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 
42761
  0x02, 0x02, 0x08, 0x15, 0x01, 0x09, 0xDA, 0x85, 0x6C, 0xDA, 0x04, 0xDA, 0x85, 0x3D, 0xDA, 0x85, 
42762
  0x9D, 0xDA, 0x85, 0x9E, 0xCE, 0x05, 0x72, 0x65, 0x70, 0x6C, 0x3A, 0xDA, 0x85, 0x2C, 0xDA, 0x84, 
42763
  0x60, 0xDA, 0x81, 0x28, 0xDA, 0x85, 0x6D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x4F, 0xBF, 0xFF, 
42764
  0x00, 0x01, 0xDA, 0x89, 0x1B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x49, 0xBF, 0xFF, 0x00, 0x03, 
42765
  0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 
42766
  0x1C, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x49, 0x00, 0x15, 0x00, 0xDA, 0x85, 0x62, 0x00, 0x15, 
42767
  0x01, 0xDA, 0x15, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2B, 
42768
  0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 0x03, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x32, 
42769
  0x01, 0x02, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x2C, 
42770
  0x05, 0x04, 0x00, 0x33, 0x04, 0x03, 0x05, 0x2C, 0x04, 0x05, 0x00, 0x32, 0x02, 0x04, 0x00, 0x2C, 
42771
  0x05, 0x06, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2D, 0x02, 0x00, 0x07, 0x33, 0x04, 0x00, 0x02, 0x2C, 
42772
  0x02, 0x07, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0xD7, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
42773
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFC, 
42774
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 
42775
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8E, 0xD1, 0x03, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 
42776
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 
42777
  0x00, 0x03, 0x0B, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 
42778
  0x00, 0x29, 0x00, 0x1C, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42779
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42780
  0x03, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x81, 0x6E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x81, 
42781
  0x6E, 0x01, 0xDA, 0x88, 0xD5, 0x04, 0x81, 0x6E, 0x03, 0xCF, 0x0B, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
42782
  0x64, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x05, 0x81, 0x6E, 0x04, 0xCF, 0x07, 0x6E, 0x6F, 0x2D, 0x66, 
42783
  0x69, 0x6C, 0x65, 0x06, 0x81, 0x6E, 0x05, 0xCF, 0x05, 0x71, 0x75, 0x69, 0x65, 0x74, 0x07, 0x81, 
42784
  0x6E, 0x06, 0xCF, 0x09, 0x72, 0x61, 0x77, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x08, 0x81, 0x6E, 
42785
  0x07, 0xCF, 0x0A, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x6F, 0x70, 0x74, 0x73, 0x09, 0x81, 0x6E, 
42786
  0x08, 0xCF, 0x0D, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x6F, 0x6E, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 
42787
  0x0A, 0x81, 0x6E, 0x09, 0xDA, 0x87, 0x11, 0x0B, 0x81, 0x6E, 0x0A, 0xCF, 0x0A, 0x64, 0x65, 0x62, 
42788
  0x75, 0x67, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x0C, 0x81, 0x6E, 0x0B, 0xCF, 0x0C, 0x63, 0x6F, 0x6D, 
42789
  0x70, 0x69, 0x6C, 0x65, 0x2D, 0x6F, 0x6E, 0x6C, 0x79, 0x0D, 0x81, 0x6E, 0x0C, 0xCF, 0x0A, 0x77, 
42790
  0x61, 0x72, 0x6E, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x0E, 0x81, 0x6E, 0x0D, 0xCF, 0x0B, 0x65, 
42791
  0x72, 0x72, 0x6F, 0x72, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x0F, 0x81, 0x6E, 0x0E, 0xCF, 0x0C, 
42792
  0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x14, 0x3B, 0x10, 0xCF, 
42793
  0x02, 0x6A, 0x70, 0x20, 0x3B, 0x12, 0xCF, 0x08, 0x70, 0x61, 0x74, 0x68, 0x2D, 0x73, 0x65, 0x70, 
42794
  0x27, 0x3B, 0x11, 0xDA, 0x82, 0x2D, 0x28, 0x34, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42795
  0x38, 0x62, 0x2A, 0x34, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x63, 0x2D, 0x34, 
42796
  0x16, 0xDA, 0x43, 0x3F, 0x45, 0x10, 0xCF, 0x08, 0x6A, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 
42797
  0x4C, 0x54, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x64, 0x55, 0x81, 0x6E, 0x10, 
42798
  0xCF, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 
42799
  0x80, 0x9D, 0x81, 0x6E, 0x12, 0xCF, 0x08, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 0x80, 
42800
  0x9F, 0x81, 0x6E, 0x14, 0xCF, 0x09, 0x64, 0x6F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x80, 
42801
  0xA0, 0x81, 0x6E, 0x15, 0xDA, 0x43, 0x80, 0xA2, 0x81, 0x6E, 0x17, 0xCF, 0x07, 0x6C, 0x65, 0x6E, 
42802
  0x61, 0x72, 0x67, 0x73, 0x80, 0xA6, 0x80, 0xFD, 0x1A, 0xDA, 0x89, 0x0A, 0x80, 0xA7, 0x80, 0xB3, 
42803
  0x1B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x68, 0x80, 0xBF, 0x80, 0xFC, 0x1C, 0xDA, 
42804
  0x89, 0x09, 0x80, 0xC8, 0x80, 0xD9, 0x1B, 0xDA, 0x83, 0x49, 0x80, 0xDC, 0x80, 0xFB, 0x1D, 0xDA, 
42805
  0x83, 0x49, 0x80, 0xFD, 0x81, 0x02, 0x18, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x69, 
42806
  0x81, 0x2A, 0x81, 0x6D, 0x1C, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x81, 
42807
  0x38, 0x81, 0x6D, 0x1E, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x81, 0x5D, 
42808
  0x81, 0x69, 0x1F, 0xCF, 0x0D, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 
42809
  0x65, 0x74, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 
42810
  0x03, 0x00, 0x28, 0x03, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x2A, 0x06, 
42811
  0x00, 0x00, 0x29, 0x07, 0x00, 0x00, 0x29, 0x08, 0x00, 0x00, 0x29, 0x09, 0x00, 0x00, 0x2A, 0x0A, 
42812
  0x00, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 
42813
  0x00, 0x00, 0x2C, 0x0F, 0x02, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x03, 0x00, 0x35, 0x0F, 
42814
  0x10, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x1E, 0x0F, 0x26, 0x00, 0x2C, 0x13, 0x04, 0x00, 0x35, 0x12, 
42815
  0x13, 0x00, 0x2C, 0x13, 0x05, 0x00, 0x32, 0x12, 0x13, 0x00, 0x2C, 0x14, 0x06, 0x00, 0x35, 0x13, 
42816
  0x14, 0x00, 0x1E, 0x13, 0x03, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x11, 
42817
  0x08, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x32, 0x12, 0x10, 0x00, 0x2C, 0x13, 0x09, 0x00, 0x35, 0x11, 
42818
  0x13, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x14, 0x0A, 0x00, 0x35, 0x13, 0x14, 0x00, 0x1B, 0x11, 
42819
  0x13, 0x00, 0x2B, 0x13, 0x01, 0x00, 0x3F, 0x14, 0x11, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x23, 0x14, 
42820
  0x13, 0x15, 0x1E, 0x14, 0x08, 0x00, 0x1B, 0x16, 0x13, 0x00, 0x3B, 0x17, 0x11, 0x16, 0x31, 0x17, 
42821
  0x00, 0x00, 0x2C, 0x19, 0x0B, 0x00, 0x35, 0x18, 0x19, 0x00, 0x05, 0x13, 0x13, 0x01, 0x1C, 0xF8, 
42822
  0xFF, 0xFF, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x14, 0x0C, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2C, 0x14, 
42823
  0x0D, 0x00, 0x32, 0x14, 0x13, 0x00, 0x2C, 0x15, 0x01, 0x00, 0x35, 0x14, 0x15, 0x00, 0x2C, 0x0F, 
42824
  0x0E, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x03, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x10, 
42825
  0x0F, 0x00, 0x1E, 0x0F, 0x05, 0x00, 0x2C, 0x11, 0x0F, 0x00, 0x32, 0x11, 0x10, 0x00, 0x2C, 0x12, 
42826
  0x01, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x0F, 0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 
42827
  0x03, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x11, 0x00, 0x35, 0x10, 
42828
  0x11, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1E, 0x10, 0x06, 0x00, 0x2C, 0x11, 0x12, 0x00, 0x31, 0x11, 
42829
  0x00, 0x00, 0x2C, 0x11, 0x13, 0x00, 0x35, 0x09, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x09, 
42830
  0x0F, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x30, 0x11, 0x01, 0x00, 0x30, 0x12, 
42831
  0x02, 0x00, 0x30, 0x13, 0x03, 0x00, 0x30, 0x14, 0x04, 0x00, 0x30, 0x15, 0x05, 0x00, 0x30, 0x16, 
42832
  0x06, 0x00, 0x30, 0x17, 0x07, 0x00, 0x30, 0x18, 0x08, 0x00, 0x30, 0x19, 0x09, 0x00, 0x30, 0x1A, 
42833
  0x0A, 0x00, 0x30, 0x1B, 0x0B, 0x00, 0x30, 0x1C, 0x0C, 0x00, 0x30, 0x1D, 0x0D, 0x00, 0x30, 0x1E, 
42834
  0x0E, 0x00, 0x30, 0x1F, 0x0F, 0x00, 0x30, 0x20, 0x10, 0x00, 0x30, 0x21, 0x11, 0x00, 0x30, 0x22, 
42835
  0x12, 0x00, 0x30, 0x23, 0x13, 0x00, 0x30, 0x24, 0x14, 0x00, 0x30, 0x25, 0x15, 0x00, 0x30, 0x26, 
42836
  0x16, 0x00, 0x30, 0x27, 0x17, 0x00, 0x30, 0x28, 0x18, 0x00, 0x30, 0x29, 0x19, 0x00, 0x30, 0x2A, 
42837
  0x1A, 0x00, 0x2C, 0x2B, 0x14, 0x00, 0x2C, 0x2C, 0x15, 0x00, 0x33, 0x2B, 0x11, 0x2C, 0x2C, 0x2B, 
42838
  0x16, 0x00, 0x33, 0x12, 0x2B, 0x13, 0x2C, 0x2B, 0x17, 0x00, 0x2C, 0x2C, 0x18, 0x00, 0x33, 0x2B, 
42839
  0x14, 0x2C, 0x2C, 0x2B, 0x19, 0x00, 0x33, 0x15, 0x2B, 0x16, 0x2C, 0x2B, 0x1A, 0x00, 0x2C, 0x2C, 
42840
  0x1B, 0x00, 0x33, 0x2B, 0x17, 0x2C, 0x2C, 0x2B, 0x1C, 0x00, 0x33, 0x18, 0x2B, 0x19, 0x2C, 0x2B, 
42841
  0x1D, 0x00, 0x2C, 0x2C, 0x1E, 0x00, 0x33, 0x2B, 0x1A, 0x2C, 0x2C, 0x2B, 0x1F, 0x00, 0x33, 0x1B, 
42842
  0x2B, 0x1C, 0x2C, 0x2B, 0x20, 0x00, 0x2C, 0x2C, 0x21, 0x00, 0x33, 0x2B, 0x1D, 0x2C, 0x2C, 0x2B, 
42843
  0x22, 0x00, 0x33, 0x1E, 0x2B, 0x1F, 0x2C, 0x2B, 0x23, 0x00, 0x2C, 0x2C, 0x24, 0x00, 0x33, 0x2B, 
42844
  0x20, 0x2C, 0x2C, 0x2B, 0x25, 0x00, 0x33, 0x21, 0x2B, 0x22, 0x2C, 0x2B, 0x26, 0x00, 0x2C, 0x2C, 
42845
  0x27, 0x00, 0x33, 0x2B, 0x23, 0x2C, 0x2C, 0x2B, 0x28, 0x00, 0x33, 0x24, 0x2B, 0x25, 0x2C, 0x2B, 
42846
  0x29, 0x00, 0x2C, 0x2C, 0x2A, 0x00, 0x33, 0x2B, 0x26, 0x2C, 0x2C, 0x2B, 0x2B, 0x00, 0x33, 0x27, 
42847
  0x2B, 0x28, 0x2C, 0x2B, 0x2C, 0x00, 0x2C, 0x2C, 0x2D, 0x00, 0x33, 0x2B, 0x29, 0x2C, 0x31, 0x2A, 
42848
  0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x30, 0x13, 0x1B, 0x00, 0x1B, 0x14, 
42849
  0x13, 0x00, 0x2B, 0x15, 0x00, 0x00, 0x3F, 0x16, 0x00, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x23, 0x18, 
42850
  0x15, 0x17, 0x1E, 0x18, 0x59, 0x00, 0x3A, 0x19, 0x00, 0x15, 0x1B, 0x1A, 0x19, 0x00, 0x1B, 0x1B, 
42851
  0x07, 0x00, 0x1E, 0x07, 0x0A, 0x00, 0x2B, 0x1C, 0x00, 0x00, 0x2B, 0x1D, 0x01, 0x00, 0x33, 0x1A, 
42852
  0x1C, 0x1D, 0x2C, 0x1D, 0x2E, 0x00, 0x35, 0x1C, 0x1D, 0x00, 0x2C, 0x1E, 0x2B, 0x00, 0x25, 0x1D, 
42853
  0x1E, 0x1C, 0x1B, 0x19, 0x1D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x19, 0x1B, 0x00, 0x1E, 0x19, 
42854
  0x09, 0x00, 0x2B, 0x1B, 0x01, 0x00, 0x32, 0x1A, 0x1B, 0x00, 0x2C, 0x1C, 0x2E, 0x00, 0x35, 0x1B, 
42855
  0x1C, 0x00, 0x32, 0x1B, 0x15, 0x00, 0x35, 0x1C, 0x14, 0x00, 0x06, 0x15, 0x15, 0x1C, 0x1C, 0x41, 
42856
  0x00, 0x00, 0x32, 0x00, 0x15, 0x00, 0x2C, 0x1C, 0x2F, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x1B, 0x1C, 
42857
  0x1B, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x1E, 0x0E, 0x19, 0x00, 0x31, 0x1A, 0x00, 0x00, 0x2C, 0x1D, 
42858
  0x30, 0x00, 0x35, 0x1B, 0x1D, 0x00, 0x31, 0x1B, 0x00, 0x00, 0x2C, 0x1E, 0x31, 0x00, 0x35, 0x1D, 
42859
  0x1E, 0x00, 0x1B, 0x1B, 0x1D, 0x00, 0x2C, 0x1D, 0x00, 0x00, 0x3C, 0x1B, 0x1D, 0x1C, 0x2C, 0x1D, 
42860
  0x32, 0x00, 0x3C, 0x1B, 0x1D, 0x0D, 0x2C, 0x1D, 0x33, 0x00, 0x3C, 0x1B, 0x1D, 0x0C, 0x1E, 0x0A, 
42861
  0x07, 0x00, 0x2C, 0x1D, 0x34, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1B, 0x1D, 0x1E, 0x2C, 0x1D, 
42862
  0x35, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1B, 0x1D, 0x1E, 0x33, 0x1B, 0x1C, 0x1A, 0x2C, 0x1E, 
42863
  0x36, 0x00, 0x35, 0x1D, 0x1E, 0x00, 0x1C, 0x22, 0x00, 0x00, 0x2C, 0x1D, 0x37, 0x00, 0x35, 0x1B, 
42864
  0x1D, 0x00, 0x1B, 0x1D, 0x1B, 0x00, 0x2C, 0x1B, 0x00, 0x00, 0x3C, 0x1D, 0x1B, 0x1C, 0x2C, 0x1B, 
42865
  0x32, 0x00, 0x3C, 0x1D, 0x1B, 0x0D, 0x2C, 0x1B, 0x33, 0x00, 0x3C, 0x1D, 0x1B, 0x0C, 0x1E, 0x0A, 
42866
  0x07, 0x00, 0x2C, 0x1B, 0x34, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1D, 0x1B, 0x1E, 0x2C, 0x1B, 
42867
  0x35, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1D, 0x1B, 0x1E, 0x1E, 0x0B, 0x08, 0x00, 0x2C, 0x1B, 
42868
  0x38, 0x00, 0x33, 0x1A, 0x1B, 0x08, 0x2C, 0x1B, 0x39, 0x00, 0x32, 0x1B, 0x1D, 0x00, 0x2C, 0x1E, 
42869
  0x3A, 0x00, 0x35, 0x1B, 0x1E, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x2C, 0x1B, 0x38, 0x00, 0x33, 0x1A, 
42870
  0x1B, 0x08, 0x2C, 0x1B, 0x39, 0x00, 0x32, 0x1B, 0x1D, 0x00, 0x2C, 0x1E, 0x3B, 0x00, 0x35, 0x1B, 
42871
  0x1E, 0x00, 0x33, 0x1D, 0x1C, 0x1A, 0x2C, 0x1E, 0x36, 0x00, 0x35, 0x1B, 0x1E, 0x00, 0x1B, 0x15, 
42872
  0x17, 0x00, 0x1C, 0xA7, 0xFF, 0xFF, 0x1B, 0x18, 0x03, 0x00, 0x1E, 0x18, 0x03, 0x00, 0x1B, 0x19, 
42873
  0x18, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x19, 0x04, 0x00, 0x1E, 0x19, 0x6B, 0x00, 0x1E, 0x0B, 
42874
  0x09, 0x00, 0x2C, 0x18, 0x3C, 0x00, 0x2C, 0x1A, 0x3D, 0x00, 0x2C, 0x1B, 0x3E, 0x00, 0x33, 0x18, 
42875
  0x1A, 0x1B, 0x2C, 0x18, 0x38, 0x00, 0x32, 0x18, 0x08, 0x00, 0x2C, 0x18, 0x3A, 0x00, 0x36, 0x18, 
42876
  0x00, 0x00, 0x1E, 0x05, 0x02, 0x00, 0x1C, 0x15, 0x00, 0x00, 0x2C, 0x1A, 0x04, 0x00, 0x35, 0x18, 
42877
  0x1A, 0x00, 0x2C, 0x1B, 0x3F, 0x00, 0x35, 0x1A, 0x1B, 0x00, 0x2C, 0x1C, 0x40, 0x00, 0x35, 0x1B, 
42878
  0x1C, 0x00, 0x2C, 0x1C, 0x41, 0x00, 0x2C, 0x1D, 0x42, 0x00, 0x2C, 0x1E, 0x2B, 0x00, 0x33, 0x1C, 
42879
  0x1D, 0x1E, 0x2C, 0x1C, 0x43, 0x00, 0x2C, 0x1D, 0x44, 0x00, 0x33, 0x1C, 0x1D, 0x18, 0x2C, 0x1C, 
42880
  0x45, 0x00, 0x2C, 0x1D, 0x45, 0x00, 0x33, 0x1C, 0x1A, 0x1D, 0x2C, 0x1C, 0x46, 0x00, 0x32, 0x1B, 
42881
  0x1C, 0x00, 0x2C, 0x1D, 0x47, 0x00, 0x35, 0x1C, 0x1D, 0x00, 0x2C, 0x1A, 0x48, 0x00, 0x35, 0x18, 
42882
  0x1A, 0x00, 0x2C, 0x1A, 0x37, 0x00, 0x35, 0x18, 0x1A, 0x00, 0x1B, 0x1A, 0x18, 0x00, 0x30, 0x18, 
42883
  0x1C, 0x00, 0x1B, 0x1B, 0x18, 0x00, 0x30, 0x18, 0x1D, 0x00, 0x1B, 0x1C, 0x18, 0x00, 0x1E, 0x0A, 
42884
  0x07, 0x00, 0x2C, 0x18, 0x34, 0x00, 0x29, 0x1D, 0x00, 0x00, 0x3C, 0x1A, 0x18, 0x1D, 0x2C, 0x18, 
42885
  0x35, 0x00, 0x29, 0x1D, 0x00, 0x00, 0x3C, 0x1A, 0x18, 0x1D, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x18, 
42886
  0x1C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x18, 0x49, 0x00, 0x1B, 0x1D, 0x18, 0x00, 0x30, 0x18, 
42887
  0x1E, 0x00, 0x1B, 0x1E, 0x18, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x2C, 0x18, 0x4A, 0x00, 0x1C, 0x02, 
42888
  0x00, 0x00, 0x2C, 0x18, 0x4B, 0x00, 0x2C, 0x1F, 0x4C, 0x00, 0x32, 0x1F, 0x18, 0x00, 0x2C, 0x20, 
42889
  0x01, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x29, 0x18, 0x00, 0x00, 0x1C, 0x02, 
42890
  0x00, 0x00, 0x28, 0x18, 0x00, 0x00, 0x2C, 0x1F, 0x4D, 0x00, 0x32, 0x1F, 0x18, 0x00, 0x2C, 0x20, 
42891
  0x01, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x29, 0x18, 0x00, 0x00, 0x1C, 0x02, 
42892
  0x00, 0x00, 0x28, 0x18, 0x00, 0x00, 0x2C, 0x1F, 0x4E, 0x00, 0x32, 0x1F, 0x18, 0x00, 0x2C, 0x20, 
42893
  0x01, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x2C, 0x18, 0x32, 0x00, 0x32, 0x18, 0x0D, 0x00, 0x2C, 0x1F, 
42894
  0x01, 0x00, 0x35, 0x18, 0x1F, 0x00, 0x2C, 0x18, 0x33, 0x00, 0x32, 0x18, 0x0D, 0x00, 0x2C, 0x1F, 
42895
  0x01, 0x00, 0x35, 0x18, 0x1F, 0x00, 0x2C, 0x18, 0x0F, 0x00, 0x31, 0x18, 0x00, 0x00, 0x2C, 0x1F, 
42896
  0x4F, 0x00, 0x35, 0x18, 0x1F, 0x00, 0x1B, 0x1F, 0x18, 0x00, 0x1E, 0x18, 0x0B, 0x00, 0x2C, 0x20, 
42897
  0x38, 0x00, 0x29, 0x21, 0x00, 0x00, 0x33, 0x1F, 0x20, 0x21, 0x2C, 0x20, 0x39, 0x00, 0x32, 0x20, 
42898
  0x1A, 0x00, 0x2C, 0x21, 0x3B, 0x00, 0x35, 0x20, 0x21, 0x00, 0x2C, 0x20, 0x50, 0x00, 0x28, 0x21, 
42899
  0x00, 0x00, 0x3C, 0x1A, 0x20, 0x21, 0x28, 0x18, 0x00, 0x00, 0x33, 0x1E, 0x18, 0x1A, 0x2C, 0x18, 
42900
  0x51, 0x00, 0x36, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 
42901
  0x01, 0x01, 0x01, 0x02, 0x0D, 0x01, 0x1A, 0xCE, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 
42902
  0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0xDA, 0x04, 0xD8, 0x0B, 0x73, 0x63, 0x61, 0x6E, 0x2D, 
42903
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xDA, 0x86, 0x71, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 
42904
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 
42905
  0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 
42906
  0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 
42907
  0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 
42908
  0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 
42909
  0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
42910
  0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 
42911
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 
42912
  0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
42913
  0x89, 0x2F, 0x00, 0x0D, 0x00, 0xDA, 0x43, 0x00, 0x0D, 0x01, 0xDA, 0x89, 0x30, 0x03, 0x0D, 0x02, 
42914
  0xDA, 0x1E, 0x07, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x65, 0x05, 0x02, 
42915
  0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x1B, 0x02, 0x03, 0x00, 0x31, 0x02, 
42916
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 
42917
  0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 
42918
  0x00, 0x00, 0xBF, 0xFF, 0x91, 0xFA, 0x15, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 
42919
  0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xCD, 
42920
  0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x2F, 0x01, 0x1C, 
42921
  0xCE, 0x08, 0x63, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x86, 0x53, 0xCE, 
42922
  0x06, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xF4, 0xDA, 0x3D, 0xCE, 0x07, 0x2E, 0x6A, 
42923
  0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x81, 0x28, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 
42924
  0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x0A, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 
42925
  0x61, 0x67, 0x65, 0xDA, 0x04, 0xDA, 0x87, 0xB2, 0xD8, 0x07, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 
42926
  0x6C, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x49, 0x00, 0x04, 0x01, 0xCF, 0x0A, 0x6D, 0x61, 0x6B, 0x65, 
42927
  0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x02, 
42928
  0x01, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8B, 0x0A, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
42929
  0x81, 0x72, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 
42930
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 
42931
  0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 
42932
  0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 
42933
  0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 
42934
  0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 
42935
  0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
42936
  0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 
42937
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 
42938
  0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
42939
  0x89, 0x30, 0x00, 0x2F, 0x00, 0xDA, 0x43, 0x00, 0x2F, 0x01, 0xCF, 0x08, 0x63, 0x2D, 0x73, 0x77, 
42940
  0x69, 0x74, 0x63, 0x68, 0x03, 0x2F, 0x02, 0xDA, 0x81, 0x22, 0x07, 0x2F, 0x05, 0xDA, 0x83, 0x61, 
42941
  0x24, 0x2F, 0x07, 0xCF, 0x0B, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2D, 0x70, 0x61, 0x74, 0x68, 
42942
  0x05, 0x02, 0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x1B, 0x02, 0x03, 0x00, 
42943
  0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 
42944
  0x05, 0x07, 0x00, 0x02, 0x2D, 0x09, 0x00, 0x00, 0x3F, 0x08, 0x09, 0x00, 0x23, 0x09, 0x07, 0x08, 
42945
  0x1E, 0x09, 0x06, 0x00, 0x05, 0x07, 0x00, 0x02, 0x2D, 0x0A, 0x00, 0x00, 0x3A, 0x08, 0x0A, 0x07, 
42946
  0x1B, 0x06, 0x08, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x32, 0x08, 0x02, 0x00, 
42947
  0x2C, 0x0A, 0x02, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x1E, 0x08, 0x08, 0x00, 0x2B, 0x0A, 0x00, 0x00, 
42948
  0x2B, 0x0B, 0xF9, 0xFF, 0x33, 0x02, 0x0A, 0x0B, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 0x00, 
42949
  0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x04, 0x00, 
42950
  0x32, 0x07, 0x08, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x1B, 0x06, 0x08, 0x00, 
42951
  0x1B, 0x07, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x35, 0x08, 0x09, 0x00, 
42952
  0x32, 0x07, 0x08, 0x00, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2A, 0x08, 0x00, 0x00, 
42953
  0x2F, 0x08, 0x00, 0x04, 0x2B, 0x08, 0x03, 0x00, 0x03, 0x08, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x2C, 
42954
  0x1F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0C, 0x02, 
42955
  0x15, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x19, 0x00, 0x10, 0x00, 0x10, 0xBF, 
42956
  0xFF, 0x0E, 0x00, 0x0E, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x39, 
42957
  0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 
42958
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x0E, 0xBF, 0xFF, 0x0C, 0x06, 0x1E, 0x00, 
42959
  0x1E, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 0x0C, 0xBF, 0xF6, 0x0A, 
42960
  0x00, 0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
42961
  0x07, 0x00, 0xDA, 0x04, 0xDA, 0x88, 0xE9, 0xDA, 0x82, 0xC9, 0x2C, 0x00, 0x00, 0x00, 0x28, 0x01, 
42962
  0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2B, 0x01, 
42963
  0x01, 0x00, 0x03, 0x01, 0x00, 0x00, 0x92, 0x64, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
42964
  0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
42965
  0xFF, 0xFF, 0x00, 0x06, 0x01, 0x18, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 
42966
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 
42967
  0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
42968
  0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 
42969
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 
42970
  0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 
42971
  0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
42972
  0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 
42973
  0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 
42974
  0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 
42975
  0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x06, 0x00, 0xDA, 0x43, 0x31, 0x00, 0x00, 
42976
  0x00, 0x2D, 0x02, 0x00, 0x10, 0x35, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 0x0D, 0x2B, 0x02, 0x02, 
42977
  0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x63, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 
42978
  0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
42979
  0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 
42980
  0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 
42981
  0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 
42982
  0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 
42983
  0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 
42984
  0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 
42985
  0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 
42986
  0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 
42987
  0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 
42988
  0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 
42989
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x09, 0x2B, 
42990
  0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x29, 0x12, 0x00, 0x12, 0x00, 0x0A, 
42991
  0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 
42992
  0x0D, 0x01, 0x19, 0xCE, 0x08, 0x6C, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 
42993
  0x85, 0xDD, 0xDA, 0x81, 0x6E, 0xDA, 0x85, 0x43, 0xDA, 0x85, 0xD5, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
42994
  0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 
42995
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 
42996
  0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 
42997
  0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 
42998
  0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 
42999
  0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 
43000
  0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
43001
  0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 
43002
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 
43003
  0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x0D, 0x00, 0xDA, 0x43, 
43004
  0x00, 0x0D, 0x01, 0xCF, 0x08, 0x6C, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x05, 0x02, 0x00, 
43005
  0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 
43006
  0x00, 0x33, 0x03, 0x02, 0x04, 0x2C, 0x02, 0x02, 0x00, 0x2D, 0x04, 0x00, 0x08, 0x32, 0x02, 0x04, 
43007
  0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2B, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 
43008
  0x00, 0xBF, 0xFF, 0x92, 0x39, 0x1E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
43009
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x0A, 0x00, 0x0A, 0xCD, 
43010
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x24, 0x01, 0x1C, 
43011
  0xCE, 0x08, 0x45, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x88, 0x6B, 0xDA, 
43012
  0x09, 0xCF, 0x08, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xCF, 0x0C, 0x45, 0x2D, 0x65, 
43013
  0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0xDA, 0x83, 0x48, 0xDA, 0x1A, 0xDA, 0x0E, 
43014
  0xDA, 0x85, 0x78, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 
43015
  0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 
43016
  0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 
43017
  0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
43018
  0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 
43019
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 
43020
  0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 
43021
  0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 
43022
  0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 
43023
  0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 
43024
  0xDA, 0x89, 0x30, 0x00, 0x24, 0x00, 0xDA, 0x43, 0x00, 0x24, 0x01, 0xCF, 0x08, 0x45, 0x2D, 0x73, 
43025
  0x77, 0x69, 0x74, 0x63, 0x68, 0x07, 0x24, 0x02, 0xDA, 0x89, 0x09, 0x12, 0x24, 0x04, 0xDA, 0x82, 
43026
  0xFA, 0x16, 0x24, 0x07, 0xDA, 0x86, 0x4E, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x05, 
43027
  0x02, 0x00, 0x02, 0x2D, 0x03, 0x00, 0x00, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 
43028
  0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x05, 0x04, 0x00, 0x01, 0x2D, 0x06, 0x00, 0x00, 0x3A, 
43029
  0x05, 0x06, 0x04, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x04, 0x06, 0x00, 0x2C, 
43030
  0x06, 0x02, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x06, 0x04, 0x07, 0x45, 0x05, 0x00, 0x00, 0x1B, 
43031
  0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 
43032
  0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1E, 
43033
  0x08, 0x05, 0x00, 0x35, 0x09, 0x07, 0x00, 0x34, 0x02, 0x00, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1C, 
43034
  0x04, 0x00, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x3B, 0x09, 0x07, 0x0A, 0x01, 0x09, 0x00, 0x00, 0x2C, 
43035
  0x08, 0x07, 0x00, 0x03, 0x08, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x41, 0x0C, 0x00, 0x0C, 0x01, 0x2B, 
43036
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x01, 0x31, 0x00, 0x28, 0x00, 0x28, 
43037
  0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0C, 
43038
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0C, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 
43039
  0x01, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x0C, 0x02, 0x15, 0x00, 0x15, 0x00, 0x0E, 0xBF, 
43040
  0xF9, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
43041
  0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 
43042
  0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 
43043
  0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 
43044
  0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 
43045
  0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 
43046
  0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 
43047
  0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 
43048
  0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 
43049
  0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 
43050
  0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 
43051
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x2A, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x08, 0x2B, 
43052
  0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x24, 0x12, 0x00, 0x12, 0x00, 0x0A, 
43053
  0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
43054
  0x06, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 
43055
  0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 
43056
  0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 
43057
  0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 
43058
  0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 
43059
  0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 
43060
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 
43061
  0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 
43062
  0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 
43063
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 
43064
  0x00, 0x10, 0xDA, 0x89, 0x30, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x06, 0x29, 0x00, 0x00, 
43065
  0x00, 0x2F, 0x00, 0x00, 0x03, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 
43066
  0x22, 0x12, 0x00, 0x12, 0x00, 0x27, 0x00, 0x27, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 
43067
  0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 
43068
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 
43069
  0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
43070
  0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 
43071
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 
43072
  0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 
43073
  0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 
43074
  0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 
43075
  0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 
43076
  0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43077
  0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x29, 
43078
  0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x0A, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 
43079
  0xFF, 0x92, 0x61, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x05, 
43080
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x10, 0x01, 0x18, 0xDA, 0x04, 0xDA, 0x88, 0x36, 
43081
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 
43082
  0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 
43083
  0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 
43084
  0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 
43085
  0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 
43086
  0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
43087
  0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 
43088
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 
43089
  0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43090
  0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 
43091
  0x00, 0x10, 0x00, 0xDA, 0x43, 0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 
43092
  0x01, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 
43093
  0x00, 0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 0x03, 
43094
  0x04, 0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 0x02, 
43095
  0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x4F, 0x2D, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 
43096
  0x00, 0x12, 0x00, 0x12, 0x00, 0x37, 0x00, 0x37, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4B, 
43097
  0x00, 0x63, 0x00, 0x63, 0x00, 0x08, 0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 
43098
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x18, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
43099
  0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 
43100
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 
43101
  0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 
43102
  0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 
43103
  0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 
43104
  0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 
43105
  0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
43106
  0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 
43107
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 
43108
  0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x06, 0x00, 0xDA, 0x43, 
43109
  0x31, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x10, 0x35, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 0x0C, 
43110
  0x2B, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x62, 0x24, 0x00, 0x24, 0x00, 
43111
  0x24, 0x00, 0x24, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x04, 0x00, 0x00, 0xCD, 
43112
  0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x14, 0x00, 0xDA, 0x04, 0xD0, 0x0A, 0x65, 0x78, 0x65, 0x63, 0x75, 
43113
  0x74, 0x61, 0x62, 0x6C, 0x65, 0xCE, 0x05, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0x26, 0xCE, 
43114
  0x07, 0x75, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x20, 0xCE, 0x19, 0x20, 0x5B, 0x6F, 0x70, 0x74, 0x69, 
43115
  0x6F, 0x6E, 0x73, 0x5D, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 0x72, 0x67, 0x73, 
43116
  0x2E, 0x2E, 0x2E, 0xDA, 0x81, 0x90, 0xCE, 0x86, 0xED, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
43117
  0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0x20, 0x28, 
43118
  0x2D, 0x68, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43119
  0x3A, 0x20, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x68, 0x65, 0x6C, 0x70, 
43120
  0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x2D, 0x76, 
43121
  0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x50, 0x72, 0x69, 
43122
  0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 
43123
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x20, 
43124
  0x28, 0x2D, 0x73, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43125
  0x3A, 0x20, 0x55, 0x73, 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x20, 
43126
  0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x65, 0x74, 0x6C, 0x69, 
43127
  0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
43128
  0x61, 0x6C, 0x69, 0x74, 0x79, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0x20, 0x28, 
43129
  0x2D, 0x65, 0x29, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43130
  0x3A, 0x20, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 
43131
  0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 
43132
  0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x2D, 0x45, 0x29, 0x20, 
43133
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x2E, 
43134
  0x2E, 0x20, 0x3A, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 
43135
  0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 
43136
  0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x72, 
43137
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x64, 0x65, 0x62, 0x75, 
43138
  0x67, 0x20, 0x28, 0x2D, 0x64, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43139
  0x20, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x62, 0x75, 
43140
  0x67, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 
43141
  0x50, 0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x28, 0x2D, 0x72, 0x29, 
43142
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x45, 
43143
  0x6E, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 0x4C, 0x20, 0x61, 0x66, 
43144
  0x74, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
43145
  0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x6E, 0x6F, 0x70, 0x72, 
43146
  0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x2D, 0x52, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43147
  0x20, 0x20, 0x3A, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x6C, 0x6F, 0x61, 
43148
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 
43149
  0x65, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x4A, 0x41, 0x4E, 0x45, 0x54, 0x5F, 0x50, 0x52, 
43150
  0x4F, 0x46, 0x49, 0x4C, 0x45, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 
43151
  0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 0x20, 
43152
  0x28, 0x2D, 0x70, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x4B, 0x65, 0x65, 
43153
  0x70, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 
43154
  0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x6F, 0x70, 
43155
  0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x70, 0x65, 
43156
  0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x71, 0x75, 
43157
  0x69, 0x65, 0x74, 0x20, 0x28, 0x2D, 0x71, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43158
  0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x48, 0x69, 0x64, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x6F, 0x20, 
43159
  0x28, 0x71, 0x75, 0x69, 0x65, 0x74, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x66, 0x6C, 0x79, 0x63, 
43160
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x28, 0x2D, 0x6B, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43161
  0x20, 0x20, 0x3A, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 
43162
  0x70, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 
43163
  0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x28, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 
43164
  0x29, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x28, 0x2D, 
43165
  0x6D, 0x29, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x20, 0x3A, 0x20, 0x53, 0x65, 
43166
  0x74, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6F, 
43167
  0x72, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 
43168
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x63, 0x6F, 0x6D, 
43169
  0x70, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x2D, 0x63, 0x29, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
43170
  0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x3A, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
43171
  0x65, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 
43172
  0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 0x67, 
43173
  0x65, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x28, 0x2D, 0x69, 0x29, 
43174
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x4C, 0x6F, 
43175
  0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 0x72, 
43176
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 
43177
  0x67, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 
43178
  0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x0A, 0x20, 
43179
  0x20, 0x2D, 0x2D, 0x6E, 0x6F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x28, 0x2D, 0x6E, 0x29, 0x20, 
43180
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 
43181
  0x6C, 0x65, 0x20, 0x41, 0x4E, 0x53, 0x49, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x6F, 0x75, 
43182
  0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 0x4C, 
43183
  0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x28, 0x2D, 0x4E, 0x29, 0x20, 
43184
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x45, 0x6E, 0x61, 
43185
  0x62, 0x6C, 0x65, 0x20, 0x41, 0x4E, 0x53, 0x49, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x6F, 
43186
  0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 
43187
  0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x28, 0x2D, 
43188
  0x6C, 0x29, 0x20, 0x6C, 0x69, 0x62, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x55, 0x73, 
43189
  0x65, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 
43190
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x6F, 0x72, 
43191
  0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 
43192
  0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x20, 0x28, 0x2D, 0x77, 0x29, 0x20, 0x6C, 
43193
  0x65, 0x76, 0x65, 0x6C, 0x20, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
43194
  0x6C, 0x69, 0x6E, 0x74, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x65, 0x76, 
43195
  0x65, 0x6C, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 
43196
  0x22, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x22, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x6C, 0x69, 0x6E, 
43197
  0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x2D, 0x78, 0x29, 0x20, 0x6C, 0x65, 0x76, 
43198
  0x65, 0x6C, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 
43199
  0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x2D, 0x20, 
43200
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x22, 0x6E, 0x6F, 0x6E, 0x65, 
43201
  0x22, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x2D, 
43202
  0x62, 0x29, 0x20, 0x64, 0x69, 0x72, 0x70, 0x61, 0x74, 0x68, 0x20, 0x20, 0x3A, 0x20, 0x49, 0x6E, 
43203
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 
43204
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x0A, 
43205
  0x20, 0x20, 0x2D, 0x2D, 0x72, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x2D, 
43206
  0x42, 0x29, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x52, 0x65, 0x69, 0x6E, 
43207
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x62, 
43208
  0x79, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x0A, 0x20, 0x20, 
43209
  0x2D, 0x2D, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x2D, 0x75, 0x29, 
43210
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x55, 0x6E, 0x69, 0x6E, 0x73, 0x74, 
43211
  0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 
43212
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 
43213
  0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x2D, 0x55, 0x29, 0x20, 
43214
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 
43215
  0x6C, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
43216
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x70, 0x72, 0x75, 0x6E, 
43217
  0x65, 0x20, 0x28, 0x2D, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43218
  0x20, 0x20, 0x3A, 0x20, 0x55, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
43219
  0x61, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
43220
  0x20, 0x61, 0x72, 0x65, 0x20, 0x6F, 0x72, 0x70, 0x68, 0x61, 0x6E, 0x65, 0x64, 0x0A, 0x20, 0x20, 
43221
  0x2D, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x28, 0x2D, 0x4C, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 
43222
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x4C, 0x69, 0x73, 0x74, 0x20, 0x61, 
43223
  0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x62, 0x75, 0x6E, 
43224
  0x64, 0x6C, 0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43225
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 
43226
  0x20, 0x53, 0x74, 0x6F, 0x70, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6F, 
43227
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x86, 0x64, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x01, 
43228
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x03, 
43229
  0x00, 0x2C, 0x02, 0x04, 0x00, 0x33, 0x01, 0x00, 0x02, 0x2C, 0x02, 0x05, 0x00, 0x35, 0x01, 0x02, 
43230
  0x00, 0x2C, 0x00, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x05, 0x00, 0x35, 0x00, 0x02, 
43231
  0x00, 0x2B, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x07, 0x00, 0x35, 0x02, 0x03, 
43232
  0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x92, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 
43233
  0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 
43234
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x1E, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xE0, 
43235
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43236
  0x00, 0x06, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 
43237
  0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
43238
  0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 
43239
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 
43240
  0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 
43241
  0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 
43242
  0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 
43243
  0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 
43244
  0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 
43245
  0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 
43246
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x0B, 0x2A, 0x00, 
43247
  0x00, 0x00, 0x2F, 0x00, 0x00, 0x08, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
43248
  0x92, 0x27, 0x12, 0x00, 0x12, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 
43249
  0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0C, 0x01, 0x18, 0xDA, 0x04, 
43250
  0xDA, 0x88, 0x01, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 
43251
  0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 
43252
  0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 
43253
  0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
43254
  0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 
43255
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 
43256
  0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 
43257
  0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 
43258
  0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 
43259
  0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 
43260
  0xDA, 0x89, 0x30, 0x00, 0x0C, 0x00, 0xDA, 0x43, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 
43261
  0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 
43262
  0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 
43263
  0x2B, 0x02, 0x01, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x5B, 0x12, 0x00, 0x12, 0x00, 
43264
  0x26, 0x00, 0x26, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3A, 0x00, 0x52, 0x00, 0x52, 0x00, 
43265
  0x08, 0x00, 0x08, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43266
  0x05, 0x0C, 0x00, 0xDA, 0x04, 0xDA, 0x89, 0x13, 0xDA, 0x84, 0x12, 0xDA, 0x89, 0x14, 0xDA, 0x81, 
43267
  0x90, 0xDA, 0x86, 0x64, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x2C, 0x02, 0x02, 0x00, 
43268
  0x33, 0x00, 0x01, 0x02, 0x2C, 0x01, 0x03, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x00, 
43269
  0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x04, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x00, 
43270
  0x03, 0x02, 0x00, 0x00, 0x92, 0x21, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
43271
  0x12, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 
43272
  0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0x01, 0x19, 0xCE, 0x08, 
43273
  0x65, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x00, 
43274
  0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
43275
  0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 
43276
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 
43277
  0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 
43278
  0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 
43279
  0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 
43280
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 
43281
  0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
43282
  0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 
43283
  0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x0A, 0x00, 
43284
  0xDA, 0x43, 0x00, 0x0A, 0x01, 0xCF, 0x08, 0x65, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2A, 
43285
  0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x05, 0x02, 0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 
43286
  0x03, 0x04, 0x02, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2B, 
43287
  0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x3D, 0x0C, 0x00, 0x0C, 0x01, 0x22, 
43288
  0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x0A, 0x00, 0x0A, 0xCD, 
43289
  0x00, 0xD4, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0C, 0x01, 0x18, 
43290
  0xDA, 0x04, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0B, 0x5A, 0x01, 
43291
  0x26, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x75, 0x6E, 0x65, 0xDA, 
43292
  0x04, 0xDA, 0x83, 0xD9, 0xD0, 0x0B, 0x61, 0x75, 0x74, 0x6F, 0x2D, 0x72, 0x65, 0x6D, 0x6F, 0x76, 
43293
  0x65, 0xDA, 0x82, 0x51, 0xDA, 0x88, 0x7C, 0xDA, 0x82, 0x7C, 0xDA, 0x30, 0xCE, 0x08, 0x70, 0x72, 
43294
  0x75, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0xCE, 0x08, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 
43295
  0xDA, 0x81, 0x90, 0xCE, 0x0A, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0xCE, 
43296
  0x0D, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0xBF, 0xFF, 
43297
  0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 
43298
  0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 
43299
  0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 
43300
  0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 
43301
  0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
43302
  0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 
43303
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 
43304
  0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 
43305
  0xDA, 0x82, 0xEF, 0x00, 0x5A, 0x00, 0xDA, 0x82, 0xF0, 0x02, 0x5A, 0x02, 0xCF, 0x04, 0x74, 0x6F, 
43306
  0x70, 0x6F, 0x06, 0x5A, 0x04, 0xCF, 0x05, 0x72, 0x74, 0x6F, 0x70, 0x6F, 0x08, 0x5A, 0x06, 0xCF, 
43307
  0x06, 0x65, 0x78, 0x65, 0x6D, 0x70, 0x74, 0x0A, 0x5A, 0x08, 0xCF, 0x07, 0x74, 0x6F, 0x2D, 0x64, 
43308
  0x72, 0x6F, 0x70, 0x0A, 0x38, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x77, 0x0D, 
43309
  0x38, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x76, 0x10, 0x38, 0x0B, 0xDA, 0x81, 
43310
  0x64, 0x14, 0x38, 0x0C, 0xDA, 0x82, 0x3C, 0x16, 0x20, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
43311
  0x30, 0x37, 0x78, 0x27, 0x32, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x7A, 0x2A, 
43312
  0x32, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x79, 0x2D, 0x32, 0x10, 0xDA, 0x81, 
43313
  0x15, 0x3D, 0x4A, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x42, 0x40, 0x4A, 0x0B, 
43314
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x41, 0x43, 0x4A, 0x0C, 0xDA, 0x81, 0x64, 0x49, 
43315
  0x5A, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x44, 0x4C, 0x5A, 0x0B, 0xCF, 0x07, 
43316
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x43, 0x4F, 0x59, 0x0C, 0xDA, 0x81, 0x64, 0x2D, 0x02, 0x00, 
43317
  0x13, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x00, 
43318
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x44, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 
43319
  0x00, 0x40, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x49, 0x09, 0x04, 
43320
  0x0A, 0x1B, 0x0A, 0x09, 0x00, 0x1F, 0x0A, 0x2A, 0x00, 0x3A, 0x09, 0x04, 0x0A, 0x1B, 0x0B, 0x09, 
43321
  0x00, 0x31, 0x0B, 0x00, 0x00, 0x2D, 0x0C, 0x00, 0x0D, 0x35, 0x09, 0x0C, 0x00, 0x1B, 0x0C, 0x09, 
43322
  0x00, 0x3B, 0x09, 0x06, 0x0B, 0x1B, 0x0D, 0x09, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x09, 0x0D, 
43323
  0x00, 0x1C, 0x07, 0x00, 0x00, 0x2C, 0x0F, 0x01, 0x00, 0x3B, 0x0E, 0x0C, 0x0F, 0x31, 0x0E, 0x00, 
43324
  0x00, 0x2C, 0x10, 0x02, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x09, 0x0F, 0x00, 0x1E, 0x09, 0x13, 
43325
  0x00, 0x29, 0x0D, 0x00, 0x00, 0x3C, 0x06, 0x0B, 0x0D, 0x2C, 0x0E, 0x03, 0x00, 0x3B, 0x0D, 0x0C, 
43326
  0x0E, 0x20, 0x0D, 0x02, 0x00, 0x2C, 0x0D, 0x04, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x28, 0x0F, 0x00, 
43327
  0x00, 0x49, 0x0D, 0x0E, 0x0F, 0x1B, 0x0F, 0x0D, 0x00, 0x1F, 0x0F, 0x07, 0x00, 0x3A, 0x0D, 0x0E, 
43328
  0x0F, 0x1B, 0x10, 0x0D, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x3C, 0x06, 0x10, 0x0D, 0x49, 0x0F, 0x0E, 
43329
  0x0F, 0x1C, 0xFA, 0xFF, 0xFF, 0x1C, 0x04, 0x00, 0x00, 0x32, 0x08, 0x0B, 0x00, 0x2C, 0x0E, 0x05, 
43330
  0x00, 0x35, 0x0D, 0x0E, 0x00, 0x49, 0x0A, 0x04, 0x0A, 0x1C, 0xD7, 0xFF, 0xFF, 0x3F, 0x09, 0x08, 
43331
  0x00, 0x2C, 0x0A, 0x06, 0x00, 0x2C, 0x0B, 0x07, 0x00, 0x33, 0x0A, 0x09, 0x0B, 0x2C, 0x0B, 0x08, 
43332
  0x00, 0x35, 0x0A, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x09, 0x08, 0x0B, 0x1B, 0x0B, 0x09, 
43333
  0x00, 0x1F, 0x0B, 0x09, 0x00, 0x3A, 0x09, 0x08, 0x0B, 0x1B, 0x0C, 0x09, 0x00, 0x2C, 0x09, 0x09, 
43334
  0x00, 0x32, 0x09, 0x0C, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x09, 0x0D, 0x00, 0x49, 0x0B, 0x08, 
43335
  0x0B, 0x1C, 0xF8, 0xFF, 0xFF, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x09, 0x08, 0x0B, 0x1B, 0x0B, 0x09, 
43336
  0x00, 0x1F, 0x0B, 0x0C, 0x00, 0x3A, 0x09, 0x08, 0x0B, 0x1B, 0x0C, 0x09, 0x00, 0x2C, 0x09, 0x0A, 
43337
  0x00, 0x32, 0x09, 0x0C, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x09, 0x0D, 0x00, 0x31, 0x0C, 0x00, 
43338
  0x00, 0x2D, 0x0D, 0x00, 0x11, 0x35, 0x09, 0x0D, 0x00, 0x49, 0x0B, 0x08, 0x0B, 0x1C, 0xF5, 0xFF, 
43339
  0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0xB0, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x10, 
43340
  0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 
43341
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
43342
  0x00, 0x07, 0x01, 0x0F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x23, 0x00, 0x23, 
43343
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0B, 0x00, 0x07, 0x02, 0x0B, 0x00, 0x0B, 0x01, 0x13, 
43344
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43345
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x07, 0x04, 
43346
  0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFA, 0x05, 0x00, 0x05, 0x07, 0x17, 0x00, 0x05, 0x00, 0x05, 
43347
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43348
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 
43349
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 
43350
  0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 
43351
  0xDB, 0x01, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 
43352
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 
43353
  0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 
43354
  0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 
43355
  0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 
43356
  0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 
43357
  0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
43358
  0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 
43359
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 
43360
  0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43361
  0x89, 0x30, 0x00, 0x0C, 0x00, 0xDA, 0x43, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2A, 
43362
  0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 
43363
  0x02, 0x03, 0x04, 0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 
43364
  0x02, 0x01, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x57, 0x12, 0x00, 0x12, 0x00, 0x21, 
43365
  0x00, 0x21, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x35, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x08, 
43366
  0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
43367
  0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 
43368
  0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 
43369
  0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 
43370
  0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 
43371
  0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 
43372
  0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 
43373
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 
43374
  0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 
43375
  0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 
43376
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 
43377
  0x00, 0x10, 0xDA, 0x89, 0x30, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x0E, 0x2B, 0x00, 0x01, 
43378
  0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x26, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 
43379
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x18, 0x01, 
43380
  0x1B, 0xDA, 0x04, 0xDA, 0x80, 0xED, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 
43381
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 
43382
  0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 
43383
  0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 
43384
  0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 
43385
  0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 
43386
  0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43387
  0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 
43388
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 
43389
  0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
43390
  0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x18, 0x00, 0xDA, 0x43, 0x02, 0x0E, 
43391
  0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x67, 0x05, 0x0E, 0x03, 0xCF, 0x07, 0x5F, 
43392
  0x30, 0x30, 0x30, 0x30, 0x38, 0x66, 0x08, 0x0E, 0x04, 0xDA, 0x80, 0xCE, 0x2C, 0x02, 0x00, 0x00, 
43393
  0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x28, 0x03, 0x00, 0x00, 0x49, 0x01, 0x02, 0x03, 
43394
  0x1B, 0x03, 0x01, 0x00, 0x1F, 0x03, 0x08, 0x00, 0x3A, 0x01, 0x02, 0x03, 0x1B, 0x04, 0x01, 0x00, 
43395
  0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x01, 0x05, 0x00, 0x49, 0x03, 0x02, 0x03, 
43396
  0x1C, 0xF9, 0xFF, 0xFF, 0x2A, 0x01, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x04, 0x28, 0x02, 0x00, 0x00, 
43397
  0x2D, 0x03, 0x00, 0x03, 0x25, 0x01, 0x02, 0x03, 0x1E, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 0x00, 
43398
  0x2F, 0x02, 0x00, 0x03, 0x2B, 0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x5F, 
43399
  0x1A, 0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
43400
  0x12, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x12, 0x00, 0x12, 0x00, 0x33, 0x00, 0x33, 0x00, 
43401
  0x4B, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x47, 0x00, 0x5F, 0x00, 0x5F, 0x00, 0x08, 0x00, 0x08, 0xCD, 
43402
  0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 
43403
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 
43404
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 
43405
  0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 
43406
  0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 
43407
  0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 
43408
  0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 
43409
  0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
43410
  0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 
43411
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 
43412
  0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43413
  0x89, 0x30, 0x2A, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x09, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 
43414
  0x00, 0x00, 0xBF, 0xFF, 0x92, 0x28, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 
43415
  0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 
43416
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 
43417
  0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 
43418
  0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 
43419
  0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 
43420
  0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 
43421
  0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
43422
  0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 
43423
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 
43424
  0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43425
  0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 
43426
  0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x03, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 
43427
  0xBF, 0xFF, 0x92, 0x23, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
43428
  0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x10, 0x01, 0x18, 0xDA, 0x04, 0xD7, 0x01, 
43429
  0xCD, 0x03, 0xFF, 0x00, 0x00, 0x24, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x25, 0x80, 0xD3, 
43430
  0x01, 0x01, 0x2D, 0xCE, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 
43431
  0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x81, 0x27, 0xCE, 0x08, 0x69, 0x6E, 0x66, 0x6F, 0x2E, 0x6A, 
43432
  0x64, 0x6E, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x7E, 0xDA, 0x81, 0x82, 0xDA, 0x09, 0xDA, 0x81, 0x6D, 
43433
  0xCE, 0x36, 0x75, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x66, 0x65, 
43434
  0x72, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x6F, 
43435
  0x72, 0x20, 0x25, 0x76, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x20, 
43436
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0xDA, 0x81, 0x49, 0xCE, 0x02, 0x5C, 0x2F, 0xD8, 
43437
  0x10, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x65, 
43438
  0x74, 0xDA, 0x82, 0x51, 0xCE, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 
43439
  0x65, 0x20, 0x25, 0x76, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
43440
  0x61, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 
43441
  0x6F, 0x72, 0x73, 0xCE, 0x1C, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 
43442
  0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 
43443
  0x65, 0xCE, 0x1E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x25, 0x76, 0x20, 0x69, 0x73, 0x20, 
43444
  0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 
43445
  0x64, 0xDA, 0x81, 0x33, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 
43446
  0x65, 0x74, 0xCE, 0x0A, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 
43447
  0xEF, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x3E, 0xDA, 0x81, 0x8B, 0xDA, 0x81, 0x38, 0xDA, 0x85, 0x04, 
43448
  0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xCE, 0x20, 0x69, 0x6E, 
43449
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
43450
  0x2C, 0x20, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0xDA, 0x81, 
43451
  0x90, 0xCE, 0x0A, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0xDA, 0x82, 0xEC, 
43452
  0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xEB, 0xCE, 0x2C, 0x65, 0x78, 0x65, 0x63, 0x75, 
43453
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x20, 0x68, 0x61, 
43454
  0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 
43455
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x25, 0x73, 0xDA, 0x84, 0x5A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
43456
  0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 
43457
  0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 
43458
  0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
43459
  0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 
43460
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 
43461
  0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 
43462
  0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 
43463
  0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 
43464
  0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0x00, 0x80, 0xD3, 
43465
  0x00, 0xDA, 0x81, 0x22, 0x00, 0x80, 0xD3, 0x01, 0xCF, 0x06, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 
43466
  0x00, 0x80, 0xD3, 0x02, 0xDA, 0x82, 0xF2, 0x03, 0x80, 0xD3, 0x04, 0xDA, 0x81, 0x22, 0x06, 0x80, 
43467
  0xD3, 0x06, 0xDA, 0x81, 0x2A, 0x0D, 0x80, 0xD3, 0x08, 0xCF, 0x0D, 0x69, 0x6E, 0x66, 0x6F, 0x66, 
43468
  0x69, 0x6C, 0x65, 0x2D, 0x73, 0x72, 0x63, 0x31, 0x12, 0x80, 0xD3, 0x0A, 0xCF, 0x0D, 0x69, 0x6E, 
43469
  0x66, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x72, 0x63, 0x32, 0x21, 0x80, 0xD3, 0x0C, 0xCF, 
43470
  0x0C, 0x69, 0x6E, 0x66, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x72, 0x63, 0x21, 0x29, 0x0C, 
43471
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x45, 0x29, 0x31, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 
43472
  0x30, 0x30, 0x30, 0x37, 0x46, 0x31, 0x80, 0xD3, 0x0E, 0xCF, 0x04, 0x69, 0x6E, 0x66, 0x6F, 0x38, 
43473
  0x80, 0xD3, 0x0F, 0xDA, 0x81, 0x29, 0x38, 0x3F, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43474
  0x37, 0x47, 0x46, 0x4D, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x48, 0x4F, 0x54, 
43475
  0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x49, 0x5D, 0x64, 0x12, 0xCF, 0x07, 0x5F, 
43476
  0x30, 0x30, 0x30, 0x30, 0x37, 0x4A, 0x70, 0x80, 0xD3, 0x14, 0xCF, 0x0D, 0x69, 0x6E, 0x66, 0x6F, 
43477
  0x66, 0x69, 0x6C, 0x65, 0x2D, 0x64, 0x65, 0x73, 0x74, 0x79, 0x80, 0xD3, 0x16, 0xCF, 0x0E, 0x69, 
43478
  0x6E, 0x69, 0x74, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x7E, 0x80, 0xD3, 
43479
  0x18, 0xCF, 0x0D, 0x69, 0x6E, 0x69, 0x74, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x64, 0x65, 0x73, 0x74, 
43480
  0x80, 0x8A, 0x80, 0xD3, 0x1A, 0xCF, 0x10, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x2D, 
43481
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x80, 0x9F, 0x80, 0xD3, 0x1C, 0xCF, 0x03, 0x6D, 0x61, 
43482
  0x6E, 0x80, 0xAB, 0x80, 0xBE, 0x1F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4B, 0x80, 
43483
  0xAE, 0x80, 0xBE, 0x21, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4C, 0x80, 0xCD, 0x80, 
43484
  0xD2, 0x21, 0xCF, 0x07, 0x62, 0x69, 0x6E, 0x70, 0x61, 0x74, 0x68, 0x31, 0x00, 0x00, 0x00, 0x2D, 
43485
  0x04, 0x00, 0x03, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2D, 0x06, 0x00, 0x02, 0x35, 
43486
  0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x33, 0x04, 0x06, 0x07, 0x2C, 
43487
  0x07, 0x01, 0x00, 0x32, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 
43488
  0x08, 0x07, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x04, 0x06, 0x09, 0x2C, 0x0A, 0x02, 0x00, 0x35, 
43489
  0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x35, 
43490
  0x0C, 0x0D, 0x00, 0x1E, 0x0C, 0x03, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x31, 
43491
  0x0A, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 
43492
  0x0D, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1B, 
43493
  0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x35, 
43494
  0x0E, 0x0F, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1B, 
43495
  0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x06, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x2C, 0x10, 0x05, 0x00, 0x35, 
43496
  0x0F, 0x10, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1B, 
43497
  0x0E, 0x0D, 0x00, 0x2C, 0x10, 0x06, 0x00, 0x3B, 0x0F, 0x0E, 0x10, 0x2C, 0x11, 0x06, 0x00, 0x3B, 
43498
  0x10, 0x01, 0x11, 0x20, 0x10, 0x02, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1E, 
43499
  0x0F, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x32, 0x11, 0x04, 0x00, 0x2C, 
43500
  0x12, 0x08, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x32, 0x11, 0x0F, 0x00, 0x2C, 
43501
  0x12, 0x0A, 0x00, 0x35, 0x11, 0x12, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x0B, 0x00, 0x35, 
43502
  0x12, 0x13, 0x00, 0x1B, 0x11, 0x12, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 
43503
  0x12, 0x0C, 0x00, 0x32, 0x12, 0x0F, 0x00, 0x2C, 0x13, 0x08, 0x00, 0x35, 0x12, 0x13, 0x00, 0x28, 
43504
  0x12, 0x00, 0x00, 0x49, 0x11, 0x0F, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1E, 0x12, 0x02, 0x00, 0x1C, 
43505
  0x03, 0x00, 0x00, 0x2C, 0x11, 0x0D, 0x00, 0x01, 0x11, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 
43506
  0x12, 0x00, 0x06, 0x35, 0x11, 0x12, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x03, 0x00, 0x35, 
43507
  0x12, 0x13, 0x00, 0x31, 0x12, 0x00, 0x00, 0x2C, 0x13, 0x0B, 0x00, 0x35, 0x11, 0x13, 0x00, 0x1B, 
43508
  0x12, 0x11, 0x00, 0x1E, 0x12, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x11, 0x0E, 0x00, 0x32, 
43509
  0x11, 0x0F, 0x00, 0x2C, 0x13, 0x08, 0x00, 0x35, 0x11, 0x13, 0x00, 0x2D, 0x12, 0x00, 0x07, 0x35, 
43510
  0x11, 0x12, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x13, 0x00, 0x04, 0x35, 0x12, 0x13, 0x00, 0x31, 
43511
  0x12, 0x00, 0x00, 0x2C, 0x14, 0x0F, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2C, 0x12, 0x01, 0x00, 0x32, 
43512
  0x0F, 0x12, 0x00, 0x2D, 0x14, 0x00, 0x05, 0x35, 0x12, 0x14, 0x00, 0x1B, 0x14, 0x12, 0x00, 0x1E, 
43513
  0x0C, 0x04, 0x00, 0x32, 0x0C, 0x14, 0x00, 0x2D, 0x16, 0x00, 0x0A, 0x35, 0x15, 0x16, 0x00, 0x2C, 
43514
  0x15, 0x10, 0x00, 0x33, 0x04, 0x06, 0x15, 0x2C, 0x16, 0x02, 0x00, 0x35, 0x15, 0x16, 0x00, 0x1B, 
43515
  0x16, 0x15, 0x00, 0x2C, 0x17, 0x11, 0x00, 0x32, 0x0F, 0x17, 0x00, 0x2D, 0x18, 0x00, 0x05, 0x35, 
43516
  0x17, 0x18, 0x00, 0x1B, 0x18, 0x17, 0x00, 0x31, 0x16, 0x00, 0x00, 0x2C, 0x1A, 0x03, 0x00, 0x35, 
43517
  0x19, 0x1A, 0x00, 0x1E, 0x19, 0x04, 0x00, 0x32, 0x16, 0x18, 0x00, 0x2D, 0x1B, 0x00, 0x0A, 0x35, 
43518
  0x1A, 0x1B, 0x00, 0x2C, 0x19, 0x00, 0x00, 0x33, 0x04, 0x06, 0x19, 0x2C, 0x1A, 0x02, 0x00, 0x35, 
43519
  0x19, 0x1A, 0x00, 0x1B, 0x1A, 0x19, 0x00, 0x2C, 0x1B, 0x12, 0x00, 0x32, 0x1A, 0x1B, 0x00, 0x2C, 
43520
  0x1C, 0x13, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x2C, 0x1D, 0x14, 0x00, 0x25, 0x1C, 0x1D, 0x1B, 0x1E, 
43521
  0x1C, 0x07, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x1D, 0x00, 0x04, 0x35, 0x1B, 0x1D, 0x00, 0x32, 
43522
  0x1A, 0x1B, 0x00, 0x2D, 0x1E, 0x00, 0x0B, 0x35, 0x1D, 0x1E, 0x00, 0x40, 0x1B, 0x00, 0x00, 0x2C, 
43523
  0x1C, 0x15, 0x00, 0x2C, 0x1D, 0x06, 0x00, 0x33, 0x1C, 0x04, 0x1D, 0x2C, 0x1C, 0x16, 0x00, 0x33, 
43524
  0x0F, 0x1C, 0x1B, 0x44, 0x1B, 0x00, 0x00, 0x1B, 0x1C, 0x1B, 0x00, 0x32, 0x1C, 0x01, 0x00, 0x2C, 
43525
  0x1E, 0x17, 0x00, 0x35, 0x1D, 0x1E, 0x00, 0x31, 0x1C, 0x00, 0x00, 0x2D, 0x1F, 0x00, 0x0C, 0x35, 
43526
  0x1E, 0x1F, 0x00, 0x30, 0x1F, 0x00, 0x00, 0x2C, 0x20, 0x18, 0x00, 0x32, 0x1F, 0x20, 0x00, 0x2C, 
43527
  0x21, 0x19, 0x00, 0x35, 0x20, 0x21, 0x00, 0x1B, 0x1F, 0x20, 0x00, 0x28, 0x21, 0x00, 0x00, 0x37, 
43528
  0x20, 0x1F, 0x21, 0x1B, 0x21, 0x20, 0x00, 0x31, 0x1F, 0x00, 0x00, 0x2C, 0x22, 0x1A, 0x00, 0x35, 
43529
  0x20, 0x22, 0x00, 0x2C, 0x23, 0x1B, 0x00, 0x25, 0x22, 0x20, 0x23, 0x1E, 0x22, 0x02, 0x00, 0x1C, 
43530
  0x09, 0x00, 0x00, 0x2C, 0x20, 0x1C, 0x00, 0x31, 0x20, 0x00, 0x00, 0x2C, 0x23, 0x1D, 0x00, 0x35, 
43531
  0x20, 0x23, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x23, 0x00, 0x12, 0x35, 0x20, 0x23, 0x00, 0x39, 
43532
  0x20, 0x21, 0x1F, 0x2C, 0x1F, 0x1E, 0x00, 0x32, 0x1F, 0x0F, 0x00, 0x2C, 0x20, 0x1D, 0x00, 0x35, 
43533
  0x1F, 0x20, 0x00, 0x2C, 0x21, 0x1F, 0x00, 0x3B, 0x20, 0x1C, 0x21, 0x1E, 0x20, 0x0E, 0x00, 0x2C, 
43534
  0x21, 0x20, 0x00, 0x31, 0x21, 0x00, 0x00, 0x2C, 0x22, 0x21, 0x00, 0x35, 0x21, 0x22, 0x00, 0x2C, 
43535
  0x22, 0x22, 0x00, 0x33, 0x21, 0x06, 0x22, 0x2C, 0x23, 0x02, 0x00, 0x35, 0x22, 0x23, 0x00, 0x1B, 
43536
  0x21, 0x22, 0x00, 0x2C, 0x22, 0x23, 0x00, 0x32, 0x22, 0x21, 0x00, 0x2C, 0x23, 0x24, 0x00, 0x35, 
43537
  0x22, 0x23, 0x00, 0x03, 0x0F, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0F, 0x00, 
43538
  0x00, 0x00, 0x1B, 0x80, 0xA5, 0x02, 0x3A, 0xCE, 0x06, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 
43539
  0x04, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x82, 0xDA, 0x09, 0xDA, 0x88, 0x7C, 0xDA, 
43540
  0x83, 0x37, 0xDA, 0x81, 0x6D, 0xDA, 0x81, 0x28, 0xDA, 0x30, 0xDA, 0x85, 0xAC, 0xDA, 0x82, 0x18, 
43541
  0xCE, 0x02, 0x2C, 0x20, 0xDA, 0x84, 0x62, 0xCE, 0x15, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 
43542
  0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x20, 0xD0, 0x04, 
43543
  0x69, 0x6E, 0x66, 0x6F, 0xD0, 0x05, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0xD0, 0x05, 0x63, 0x68, 0x65, 
43544
  0x63, 0x6B, 0xDA, 0x82, 0x95, 0xDA, 0x85, 0xE6, 0xDA, 0x86, 0x71, 0xD0, 0x05, 0x68, 0x6F, 0x6F, 
43545
  0x6B, 0x73, 0xD0, 0x05, 0x62, 0x75, 0x69, 0x6C, 0x64, 0xD0, 0x07, 0x69, 0x6E, 0x73, 0x74, 0x61, 
43546
  0x6C, 0x6C, 0xDA, 0x81, 0x38, 0xDA, 0x81, 0x5A, 0xCE, 0x2B, 0x6E, 0x6F, 0x20, 0x66, 0x69, 0x6C, 
43547
  0x65, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x69, 0x73, 
43548
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 
43549
  0x6E, 0x64, 0x6C, 0x65, 0x3F, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 
43550
  0xFF, 0x01, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 
43551
  0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 
43552
  0x81, 0x0B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 
43553
  0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 
43554
  0x01, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 
43555
  0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x81, 
43556
  0x14, 0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x82, 0xED, 0xBF, 
43557
  0xFF, 0x01, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x01, 
43558
  0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
43559
  0x81, 0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x89, 0x76, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0xF2, 
43560
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x2A, 0xBF, 0xFF, 
43561
  0x00, 0x08, 0xDA, 0x89, 0x77, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x78, 0xBF, 0xFF, 0x00, 0x0C, 
43562
  0xDA, 0x89, 0x79, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x7A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 
43563
  0x7B, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x7C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x29, 0xBF, 
43564
  0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x7D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x89, 0x7E, 0xBF, 0xFF, 0x00, 
43565
  0x12, 0xDA, 0x89, 0x7F, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x80, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 
43566
  0x89, 0x81, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x89, 0x82, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x89, 0x83, 
43567
  0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x89, 0x84, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x89, 0x85, 0x0D, 0x47, 
43568
  0x01, 0xDA, 0x89, 0x7C, 0x0F, 0x2D, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4D, 
43569
  0x15, 0x2D, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4F, 0x18, 0x2D, 0x05, 0xCF, 
43570
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4E, 0x1B, 0x2D, 0x06, 0xDA, 0x81, 0x15, 0x2C, 0x47, 
43571
  0x03, 0xDA, 0x88, 0x93, 0x34, 0x47, 0x02, 0xCF, 0x07, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 
43572
  0x4A, 0x80, 0xA5, 0x01, 0xCF, 0x05, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0x4E, 0x80, 0xA5, 0x03, 0xDA, 
43573
  0x87, 0xA6, 0x53, 0x80, 0xA5, 0x05, 0xDA, 0x87, 0xA2, 0x55, 0x6D, 0x07, 0xCF, 0x07, 0x5F, 0x30, 
43574
  0x30, 0x30, 0x30, 0x37, 0x50, 0x55, 0x6D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
43575
  0x52, 0x58, 0x6D, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x51, 0x5B, 0x6D, 0x09, 
43576
  0xDA, 0x3A, 0x5C, 0x6D, 0x0A, 0xDA, 0x46, 0x6C, 0x80, 0xA5, 0x07, 0xCF, 0x09, 0x61, 0x6C, 0x6C, 
43577
  0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0x73, 0x2D, 0x00, 0x00, 0x14, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 
43578
  0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x42, 0x00, 0x2D, 0x01, 
43579
  0x00, 0x14, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 
43580
  0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x01, 0x02, 0x00, 0x40, 0x02, 
43581
  0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x40, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x3B, 0x04, 
43582
  0x01, 0x05, 0x20, 0x04, 0x02, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x28, 0x05, 
43583
  0x00, 0x00, 0x49, 0x04, 0x02, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x14, 0x00, 0x3A, 0x04, 
43584
  0x02, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x07, 
43585
  0x08, 0x00, 0x1E, 0x07, 0x05, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x3B, 0x08, 0x06, 0x09, 0x1B, 0x04, 
43586
  0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x08, 
43587
  0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x03, 0x07, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x35, 0x04, 
43588
  0x08, 0x00, 0x49, 0x05, 0x02, 0x05, 0x1C, 0xED, 0xFF, 0xFF, 0x2D, 0x02, 0x01, 0x15, 0x31, 0x02, 
43589
  0x00, 0x00, 0x2C, 0x04, 0x09, 0x00, 0x35, 0x02, 0x04, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x05, 
43590
  0x0A, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 
43591
  0x02, 0x05, 0x1E, 0x04, 0x0A, 0x00, 0x2C, 0x05, 0x0B, 0x00, 0x32, 0x02, 0x05, 0x00, 0x2C, 0x06, 
43592
  0x0C, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x0D, 0x00, 0x32, 0x06, 0x05, 0x00, 0x2C, 0x07, 
43593
  0x07, 0x00, 0x35, 0x06, 0x07, 0x00, 0x01, 0x06, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x1C, 0x2C, 0x05, 
43594
  0x04, 0x00, 0x3C, 0x04, 0x05, 0x03, 0x2D, 0x04, 0x00, 0x1C, 0x2C, 0x05, 0x0E, 0x00, 0x3C, 0x04, 
43595
  0x05, 0x01, 0x2D, 0x01, 0x00, 0x01, 0x2C, 0x02, 0x0F, 0x00, 0x3B, 0x00, 0x01, 0x02, 0x1B, 0x01, 
43596
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x2C, 0x04, 0x10, 0x00, 0x3B, 0x02, 0x03, 0x04, 0x1B, 0x03, 
43597
  0x02, 0x00, 0x2D, 0x04, 0x00, 0x0F, 0x31, 0x04, 0x00, 0x00, 0x2D, 0x05, 0x01, 0x0E, 0x35, 0x04, 
43598
  0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 
43599
  0x00, 0x00, 0x49, 0x06, 0x05, 0x08, 0x1B, 0x08, 0x06, 0x00, 0x1F, 0x08, 0x14, 0x00, 0x3A, 0x06, 
43600
  0x05, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x1B, 0x0A, 0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 
43601
  0x11, 0x00, 0x35, 0x06, 0x0B, 0x00, 0x1E, 0x06, 0x0B, 0x00, 0x2C, 0x0C, 0x12, 0x00, 0x3B, 0x0B, 
43602
  0x0A, 0x0C, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0D, 
43603
  0x13, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x32, 0x07, 0x0C, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x35, 0x0D, 
43604
  0x0E, 0x00, 0x49, 0x08, 0x05, 0x08, 0x1C, 0xED, 0xFF, 0xFF, 0x2D, 0x06, 0x00, 0x1C, 0x2C, 0x08, 
43605
  0x14, 0x00, 0x3C, 0x06, 0x08, 0x07, 0x2D, 0x06, 0x00, 0x0F, 0x2C, 0x08, 0x04, 0x00, 0x33, 0x05, 
43606
  0x06, 0x08, 0x2D, 0x06, 0x00, 0x1C, 0x31, 0x06, 0x00, 0x00, 0x2D, 0x08, 0x01, 0x0F, 0x35, 0x06, 
43607
  0x08, 0x00, 0x1E, 0x01, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x0F, 0x2C, 0x09, 0x0F, 0x00, 0x33, 0x05, 
43608
  0x08, 0x09, 0x2D, 0x08, 0x00, 0x1C, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x09, 0x01, 0x0F, 0x35, 0x08, 
43609
  0x09, 0x00, 0x2D, 0x08, 0x00, 0x0F, 0x2C, 0x09, 0x15, 0x00, 0x33, 0x05, 0x08, 0x09, 0x2D, 0x08, 
43610
  0x00, 0x1C, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x09, 0x01, 0x0F, 0x35, 0x08, 0x09, 0x00, 0x2D, 0x09, 
43611
  0x00, 0x0F, 0x2C, 0x0A, 0x16, 0x00, 0x33, 0x05, 0x09, 0x0A, 0x2D, 0x09, 0x00, 0x1C, 0x31, 0x09, 
43612
  0x00, 0x00, 0x2D, 0x0A, 0x01, 0x0F, 0x35, 0x09, 0x0A, 0x00, 0x2D, 0x0B, 0x00, 0x1C, 0x2C, 0x0C, 
43613
  0x17, 0x00, 0x3B, 0x0A, 0x0B, 0x0C, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x18, 0x00, 0x35, 0x0B, 
43614
  0x0C, 0x00, 0x1E, 0x0B, 0x05, 0x00, 0x2C, 0x0A, 0x19, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 
43615
  0x1A, 0x00, 0x35, 0x0A, 0x0C, 0x00, 0x2D, 0x0A, 0x00, 0x1C, 0x31, 0x0A, 0x00, 0x00, 0x2D, 0x0B, 
43616
  0x01, 0x0C, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x03, 0x08, 0x00, 0x2D, 0x0B, 0x00, 0x0F, 0x2C, 0x0C, 
43617
  0x10, 0x00, 0x33, 0x05, 0x0B, 0x0C, 0x2D, 0x0B, 0x00, 0x1C, 0x31, 0x0B, 0x00, 0x00, 0x2D, 0x0B, 
43618
  0x01, 0x0F, 0x36, 0x0B, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x90, 0xEE, 0x0D, 
43619
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 
43620
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x01, 0x13, 0x00, 0x13, 0x00, 0x1F, 
43621
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
43622
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x30, 
43623
  0x00, 0x30, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 
43624
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
43625
  0x1E, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x09, 0x01, 
43626
  0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
43627
  0x0B, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 
43628
  0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x13, 0x00, 
43629
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x07, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
43630
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 
43631
  0x16, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x16, 0x00, 0x16, 0x00, 0x5C, 0x00, 0x5C, 0x00, 0x5C, 0x00, 
43632
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
43633
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 
43634
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x07, 0x00, 
43635
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 
43636
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
43637
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x01, 
43638
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
43639
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x90, 0xCD, 0x0F, 0x00, 0x0F, 0x00, 
43640
  0x0F, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x02, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
43641
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
43642
  0x05, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x01, 0x1D, 0x00, 
43643
  0x1D, 0x00, 0x1D, 0xBF, 0xFF, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 
43644
  0x02, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
43645
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
43646
  0x01, 0x28, 0x00, 0x28, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x05, 
43647
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 
43648
  0x00, 0x13, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43649
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43650
  0x00, 0x05, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
43651
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43652
  0x00, 0x05, 0x00, 0x05, 0x03, 0x05, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
43653
  0x00, 0x05, 0x00, 0x05, 0x02, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x05, 
43654
  0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 
43655
  0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43656
  0x00, 0x05, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x02, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 
43657
  0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 
43658
  0x01, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 
43659
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
43660
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43661
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43662
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
43663
  0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x05, 0x18, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43664
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x14, 
43665
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
43666
  0xBF, 0xC2, 0x03, 0x02, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xBF, 0xFF, 0x00, 
43667
  0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
43668
  0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 
43669
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 
43670
  0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 
43671
  0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 
43672
  0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 
43673
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 
43674
  0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
43675
  0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 
43676
  0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x10, 0x00, 
43677
  0xDA, 0x43, 0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 0x01, 0x31, 0x02, 
43678
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 
43679
  0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 
43680
  0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 0x02, 0x00, 0x03, 0x02, 
43681
  0x00, 0x00, 0xBF, 0xFF, 0x92, 0x4B, 0x2B, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 
43682
  0x12, 0x00, 0x35, 0x00, 0x35, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x49, 0x00, 0x61, 0x00, 
43683
  0x61, 0x00, 0x08, 0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
43684
  0xFF, 0xFF, 0x01, 0x10, 0x01, 0x18, 0xDA, 0x04, 0xDA, 0x88, 0x8A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
43685
  0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 
43686
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 
43687
  0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 
43688
  0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 
43689
  0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 
43690
  0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 
43691
  0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
43692
  0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 
43693
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 
43694
  0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x10, 0x00, 0xDA, 0x43, 
43695
  0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 0x01, 0x31, 0x02, 0x00, 0x00, 
43696
  0x2C, 0x03, 0x00, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 
43697
  0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x03, 0x00, 
43698
  0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 
43699
  0xBF, 0xFF, 0x92, 0x53, 0x2D, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
43700
  0x37, 0x00, 0x37, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0x63, 0x00, 0x63, 0x00, 
43701
  0x08, 0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43702
  0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 
43703
  0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
43704
  0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 
43705
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 
43706
  0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 
43707
  0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 
43708
  0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 
43709
  0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 
43710
  0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 
43711
  0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 
43712
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x2A, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x07, 0x2B, 0x00, 
43713
  0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x37, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 
43714
  0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x09, 
43715
  0x01, 0x18, 0xDA, 0x04, 0xDA, 0x81, 0x25, 0xDA, 0x82, 0xC9, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
43716
  0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 0xBF, 
43717
  0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 
43718
  0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
43719
  0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x25, 
43720
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 
43721
  0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x10, 
43722
  0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 
43723
  0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 0xBF, 
43724
  0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x0F, 
43725
  0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x00, 0x09, 0x00, 0xDA, 0x43, 0x05, 
43726
  0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 0x01, 0x2C, 0x01, 0x00, 0x00, 0x32, 
43727
  0x01, 0x02, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2B, 0x02, 0x02, 0x00, 0x03, 
43728
  0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x2A, 0x2F, 0x00, 0x26, 0x00, 0x26, 0x00, 0x14, 0x00, 0x14, 
43729
  0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 
43730
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
43731
  0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x1F, 
43732
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 
43733
  0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x08, 
43734
  0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 
43735
  0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x27, 0xBF, 
43736
  0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 
43737
  0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
43738
  0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2D, 
43739
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 
43740
  0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0x29, 0x00, 0x00, 0x00, 0x2F, 
43741
  0x00, 0x00, 0x05, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x25, 0x12, 
43742
  0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0xCD, 0x7F, 
43743
  0xFF, 0xFF, 0xFF, 0x04, 0x13, 0x01, 0x1C, 0xCE, 0x09, 0x64, 0x6F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 
43744
  0x65, 0x72, 0xDA, 0x04, 0xD5, 0x19, 0xCE, 0x0A, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 
43745
  0x72, 0x6E, 0xDA, 0x88, 0xF6, 0xCE, 0x06, 0x2D, 0x64, 0x65, 0x62, 0x75, 0x67, 0xDA, 0x88, 0xF4, 
43746
  0xCE, 0x06, 0x2D, 0x70, 0x72, 0x75, 0x6E, 0x65, 0xDA, 0x88, 0xFC, 0xCE, 0x0A, 0x2D, 0x6E, 0x6F, 
43747
  0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x88, 0xED, 0xCE, 0x08, 0x2D, 0x63, 0x6F, 0x6D, 
43748
  0x70, 0x69, 0x6C, 0x65, 0xDA, 0x87, 0x39, 0xCE, 0x0B, 0x2D, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
43749
  0x73, 0x69, 0x6F, 0x6E, 0xDA, 0x88, 0xF1, 0xCE, 0x06, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 
43750
  0x88, 0xFD, 0xCE, 0x05, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0xDA, 0x88, 0xF7, 0xCE, 0x08, 0x2D, 0x6C, 
43751
  0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0xDA, 0x88, 0xF0, 0xCE, 0x08, 0x2D, 0x76, 0x65, 0x72, 0x73, 
43752
  0x69, 0x6F, 0x6E, 0xDA, 0x88, 0xFA, 0xCE, 0x06, 0x2D, 0x71, 0x75, 0x69, 0x65, 0x74, 0xDA, 0x89, 
43753
  0x04, 0xCE, 0x0B, 0x2D, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 0xDA, 0x88, 
43754
  0xF2, 0xCE, 0x05, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0xDA, 0x88, 0xFE, 0xCE, 0x0B, 0x2D, 0x75, 0x70, 
43755
  0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x88, 0xF9, 0xCE, 0x09, 0x2D, 0x66, 0x6C, 
43756
  0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0xDA, 0x88, 0xF8, 0xCE, 0x0A, 0x2D, 0x72, 0x65, 0x69, 0x6E, 
43757
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x88, 0xF5, 0xCE, 0x06, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 
43758
  0xDA, 0x88, 0xEF, 0xCE, 0x06, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x88, 0xF3, 0xCE, 0x05, 
43759
  0x2D, 0x72, 0x65, 0x70, 0x6C, 0xDA, 0x89, 0x00, 0xCE, 0x0B, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 
43760
  0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x88, 0xEE, 0xCE, 0x08, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 
43761
  0x74, 0x68, 0xDA, 0x89, 0x03, 0xCE, 0x08, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 
43762
  0x89, 0x01, 0xCE, 0x0A, 0x2D, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x89, 
43763
  0x02, 0xCE, 0x05, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0xDA, 0x88, 0xFB, 0xCE, 0x08, 0x2D, 0x6E, 0x6F, 
43764
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xDA, 0x88, 0xFF, 0xCE, 0x0E, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 
43765
  0x6E, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x2D, 0xDA, 0x81, 0x90, 0xDA, 0x88, 0xF7, 0xBF, 0xFF, 
43766
  0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD5, 0xBF, 0xFF, 0x00, 0x03, 
43767
  0xDA, 0x89, 0x1F, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x20, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 
43768
  0x21, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x23, 0xBF, 
43769
  0xFF, 0x00, 0x08, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 
43770
  0x0A, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
43771
  0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x29, 
43772
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 
43773
  0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 
43774
  0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2E, 
43775
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 
43776
  0x00, 0x12, 0xDA, 0x89, 0x31, 0x00, 0x13, 0x00, 0xDA, 0x32, 0x00, 0x13, 0x01, 0xDA, 0x43, 0x00, 
43777
  0x13, 0x02, 0xDA, 0x89, 0x32, 0x06, 0x13, 0x03, 0xDA, 0x82, 0xCA, 0x2C, 0x04, 0x00, 0x00, 0x3B, 
43778
  0x03, 0x04, 0x00, 0x20, 0x03, 0x02, 0x00, 0x1B, 0x03, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x12, 0x3A, 
43779
  0x04, 0x05, 0x03, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x04, 0x00, 0x2D, 0x05, 0x00, 0x12, 0x32, 
43780
  0x01, 0x05, 0x00, 0x36, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x05, 0x00, 0x00, 0x2C, 
43781
  0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x12, 0x2C, 0x07, 0x03, 0x00, 0x3A, 
43782
  0x05, 0x06, 0x07, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x67, 0x19, 0x00, 0x19, 0x00, 0x19, 
43783
  0x00, 0x19, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43784
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x39, 
43785
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x08, 0x17, 0x01, 0x05, 0xCE, 0x09, 0x67, 
43786
  0x65, 0x74, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x04, 0xD0, 0x0B, 0x72, 0x65, 0x70, 0x6C, 
43787
  0x2D, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x88, 0xB5, 0xDA, 0x85, 0x9D, 0xD8, 0x0C, 0x70, 
43788
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 0xDA, 0x89, 0x1E, 0xDA, 0x85, 
43789
  0x2C, 0xDA, 0x84, 0x60, 0xDA, 0x81, 0x28, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x83, 0x49, 0x00, 0x17, 
43790
  0x00, 0xDA, 0x15, 0x00, 0x17, 0x01, 0xCF, 0x09, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x6D, 0x70, 
43791
  0x74, 0x03, 0x07, 0x03, 0xCF, 0x0D, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 0x70, 0x72, 0x6F, 
43792
  0x6D, 0x70, 0x74, 0x0B, 0x17, 0x04, 0xDA, 0x85, 0x31, 0x2D, 0x03, 0x00, 0x1A, 0x2C, 0x04, 0x00, 
43793
  0x00, 0x3B, 0x02, 0x03, 0x04, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x31, 0x00, 0x00, 
43794
  0x00, 0x36, 0x03, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 
43795
  0x00, 0x3D, 0x03, 0x02, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 0x00, 0x03, 
43796
  0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x03, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x05, 
43797
  0x00, 0x33, 0x05, 0x04, 0x06, 0x2C, 0x05, 0x06, 0x00, 0x32, 0x03, 0x05, 0x00, 0x2C, 0x05, 0x07, 
43798
  0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x96, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0B, 
43799
  0x00, 0x0B, 0x00, 0x44, 0x00, 0x44, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0B, 
43800
  0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43801
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x03, 0x03, 0x06, 
43802
  0x0D, 0x00, 0x04, 0xCE, 0x08, 0x67, 0x65, 0x74, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x04, 0xDA, 
43803
  0x88, 0xEB, 0xDA, 0x81, 0x60, 0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 
43804
  0x68, 0xDA, 0x89, 0x0F, 0xDA, 0x85, 0x80, 0xDA, 0x81, 0x59, 0x00, 0x0D, 0x00, 0xDA, 0x87, 0xCC, 
43805
  0x00, 0x0D, 0x01, 0xDA, 0x85, 0x62, 0x00, 0x0D, 0x02, 0xDA, 0x81, 0x96, 0x00, 0x0D, 0x03, 0xDA, 
43806
  0x89, 0x36, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 
43807
  0x05, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 
43808
  0x06, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x33, 0x06, 0x07, 0x01, 0x2C, 0x06, 
43809
  0x05, 0x00, 0x36, 0x06, 0x00, 0x00, 0x92, 0x9A, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 
43810
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
43811
  0x0B, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 0x07, 0x01, 0x07, 0xCE, 0x08, 
43812
  0x67, 0x65, 0x74, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x83, 
43813
  0x49, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x89, 0xBB, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x89, 0x36, 0xBF, 
43814
  0xFF, 0x00, 0x1D, 0xCF, 0x06, 0x67, 0x65, 0x74, 0x74, 0x65, 0x72, 0x00, 0x07, 0x00, 0xDA, 0x85, 
43815
  0x62, 0x00, 0x07, 0x01, 0xDA, 0x15, 0x00, 0x07, 0x02, 0xDA, 0x89, 0x37, 0x31, 0x01, 0x00, 0x00, 
43816
  0x2D, 0x04, 0x00, 0x1B, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x04, 0x00, 0x1A, 0x33, 0x03, 0x00, 0x04, 
43817
  0x2D, 0x04, 0x00, 0x1D, 0x36, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0xA2, 0x13, 0x00, 0x13, 0x00, 
43818
  0x13, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x91, 0xDE, 0x03, 0x00, 0x03, 0x00, 0x03, 
43819
  0x00, 0x03, 0x02, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 
43820
  0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 0x11, 0x00, 0x11, 0x00, 0x11, 
43821
  0x00, 0x11, 0x00, 0x03, 0x00, 0x03, 0x01, 0x21, 0x00, 0x21, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 
43822
  0x00, 0x17, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 
43823
  0x00, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x0E, 0x00, 0x05, 
43824
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 
43825
  0x05, 0x00, 0x05, 0x02, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
43826
  0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x00, 0x03, 0x00, 0x35, 0x00, 
43827
  0x35, 0x00, 0x35, 0x00, 0x35, 0x02, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x13, 0x00, 
43828
  0x13, 0x00, 0x13, 0xBF, 0xFF, 0x11, 0x00, 0x11, 0x02, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
43829
  0xBF, 0xFE, 0x11, 0x00, 0x11, 0x04, 0x03, 0x00, 0x03, 0x33, 0x0A, 0x39, 0x0A, 0xBF, 0xFF, 0x0A, 
43830
  0xBF, 0xC6, 0x0A, 0x0F, 0x0A, 0x08, 0x0A, 0xBF, 0xE4, 0x0A, 0xBF, 0xFE, 0x0A, 0x3F, 0x0A, 0xBF, 
43831
  0xEE, 0x08, 0x13, 0x0A, 0xBF, 0x9D, 0x0A, 0x28, 0x0A, 0x34, 0x08, 0xBF, 0xC6, 0x0A, 0x1B, 0x0A, 
43832
  0x1B, 0x08, 0xBF, 0xCF, 0x0A, 0x39, 0x08, 0xBF, 0xC9, 0x0A, 0xBF, 0xFB, 0x0A, 0x28, 0x08, 0x08, 
43833
  0x08, 0xBF, 0xE4, 0x0A, 0xBF, 0xF3, 0x0A, 0xBF, 0xFB, 0x0A, 0xBF, 0xD9, 0x03, 0x00, 0x03, 0x00, 
43834
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43835
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43836
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43837
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43838
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43839
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x68, 0x03, 0x00, 0x03, 0x05, 0x03, 0x01, 0x10, 0x00, 
43840
  0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x20, 0x00, 
43841
  0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x09, 0x00, 0x09, 0x00, 
43842
  0x09, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
43843
  0x07, 0xBF, 0xFF, 0x05, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x09, 0x01, 0x09, 
43844
  0x02, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0D, 0x01, 0x0D, 
43845
  0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 
43846
  0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF7, 
43847
  0x09, 0x0B, 0x16, 0x00, 0x16, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 
43848
  0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 
43849
  0x0F, 0x01, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
43850
  0xFF, 0x0D, 0x03, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x11, 
43851
  0x00, 0x11, 0x00, 0x11, 0x01, 0x09, 0xBF, 0xE2, 0x03, 0x20, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
43852
  0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
43853
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x02, 0x09, 0x00, 0x09, 0x01, 0x3D, 0x00, 0x3D, 0x00, 
43854
  0x4C, 0x00, 0x4C, 0x00, 0x5A, 0x00, 0x5A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
43855
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
43856
  0x0B, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 0x00, 
43857
  0x09, 0x04, 0x09, 0x00, 0x09, 0x04, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 
43858
  0x0B, 0x00, 0x0B, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0x01, 0x09, 0x00, 
43859
  0x09, 0x02, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
43860
  0x09, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
43861
  0x09, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
43862
  0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
43863
  0x09, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 
43864
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
43865
  0x0B, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xE2, 0x03, 0xF9, 0x7F, 0x05, 0x2C, 
43866
  0x00, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x65, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x85, 0x16, 0xCF, 
43867
  0x06, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0xDA, 0x88, 0xEB, 0xCF, 0x0A, 0x63, 0x66, 0x75, 0x6E, 
43868
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
43869
  0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x0A, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
43870
  0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x09, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
43871
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x89, 0xC3, 0x31, 0x00, 0x00, 0x00, 0x2C, 
43872
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 
43873
  0x03, 0x00, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xCF, 
43874
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 
43875
  0x2F, 0x61, 0x63, 0x6F, 0x73, 0xCF, 0x04, 0x6D, 0x65, 0x61, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
43876
  0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x02, 0x18, 0x00, 0x07, 0xCE, 0x04, 0x6D, 0x65, 0x61, 0x6E, 
43877
  0xDA, 0x04, 0xDA, 0x40, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 
43878
  0x0B, 0x00, 0x06, 0xCE, 0x03, 0x73, 0x75, 0x6D, 0xDA, 0x04, 0x00, 0x0B, 0x00, 0xDA, 0x81, 0x5C, 
43879
  0x00, 0x0B, 0x01, 0xCF, 0x03, 0x73, 0x75, 0x6D, 0x00, 0x0B, 0x02, 0xDA, 0x83, 0xC0, 0x00, 0x0A, 
43880
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x69, 0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 
43881
  0x30, 0x30, 0x30, 0x30, 0x30, 0x68, 0x06, 0x0A, 0x05, 0xDA, 0x1E, 0x2B, 0x02, 0x00, 0x00, 0x28, 
43882
  0x04, 0x00, 0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x06, 0x00, 0x3A, 
43883
  0x03, 0x00, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x06, 0x02, 0x02, 0x05, 0x49, 0x04, 0x00, 0x04, 0x1C, 
43884
  0xFB, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x82, 0xC8, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
43885
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0x00, 
43886
  0x18, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x18, 0x01, 0xDA, 0x89, 0xC9, 0x0A, 0x18, 0x03, 0xDA, 0x83, 
43887
  0xC0, 0x0B, 0x18, 0x04, 0xDA, 0x86, 0xD5, 0x0B, 0x16, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
43888
  0x30, 0x30, 0x6B, 0x0E, 0x16, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6A, 0x11, 
43889
  0x16, 0x07, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
43890
  0x1E, 0x02, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 
43891
  0x3F, 0x04, 0x00, 0x00, 0x0C, 0x05, 0x03, 0x04, 0x03, 0x05, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 
43892
  0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 
43893
  0x1F, 0x06, 0x07, 0x00, 0x3A, 0x05, 0x00, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x06, 0x03, 0x03, 0x07, 
43894
  0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xFA, 0xFF, 0xFF, 0x0C, 0x05, 0x03, 0x04, 
43895
  0x03, 0x05, 0x00, 0x00, 0x82, 0xCF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x08, 0x00, 
43896
  0x08, 0x00, 0x08, 0x00, 0x11, 0x00, 0x05, 0x00, 0x05, 0x02, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 
43897
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x12, 0x00, 0x1F, 0x00, 0x07, 0x00, 
43898
  0x07, 0x01, 0x07, 0x00, 0x07, 0xCF, 0x09, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 
43899
  0xDA, 0x80, 0xDC, 0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0xD7, 0x00, 0xCD, 
43900
  0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x00, 0x0B, 
43901
  0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 
43902
  0x32, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x32, 0x01, 0xDA, 0x89, 0xD4, 0x00, 0x32, 0x02, 0xDA, 0x7E, 
43903
  0x03, 0x32, 0x04, 0xDA, 0x1E, 0x04, 0x31, 0x03, 0xDA, 0x43, 0x06, 0x31, 0x06, 0xCF, 0x07, 0x5F, 
43904
  0x30, 0x30, 0x30, 0x30, 0x30, 0x42, 0x0A, 0x2F, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 
43905
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x43, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
43906
  0x30, 0x30, 0x30, 0x44, 0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x45, 
43907
  0x22, 0x28, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x46, 0x29, 0x02, 0x00, 0x00, 
43908
  0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 
43909
  0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x29, 0x00, 
43910
  0x3A, 0x07, 0x00, 0x03, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 
43911
  0x1B, 0x09, 0x07, 0x00, 0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 
43912
  0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 
43913
  0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 
43914
  0x3B, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 
43915
  0x35, 0x0D, 0x0C, 0x00, 0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 
43916
  0x28, 0x0B, 0x00, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 
43917
  0x1C, 0x03, 0x00, 0x00, 0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 
43918
  0x24, 0x09, 0x07, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 
43919
  0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD7, 0xFF, 0xFF, 
43920
  0x03, 0x02, 0x00, 0x00, 0x83, 0x7B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43921
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43922
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43923
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43924
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43925
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43926
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
43927
  0x72, 0x6E, 0x67, 0x2D, 0x69, 0x6E, 0x74, 0xD8, 0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 
43928
  0x67, 0x2D, 0x69, 0x6E, 0x74, 0xCF, 0x04, 0x74, 0x61, 0x6B, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
43929
  0x00, 0x00, 0x0D, 0x02, 0x02, 0x02, 0x07, 0x38, 0x00, 0x0C, 0xCE, 0x04, 0x74, 0x61, 0x6B, 0x65, 
43930
  0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x03, 0x03, 
43931
  0x03, 0x00, 0x18, 0x00, 0x08, 0xCE, 0x0C, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x6E, 0x2D, 0x73, 0x6C, 
43932
  0x69, 0x63, 0x65, 0xDA, 0x04, 0x00, 0x18, 0x00, 0xDA, 0x31, 0x00, 0x18, 0x01, 0xDA, 0x32, 0x00, 
43933
  0x18, 0x02, 0xDA, 0x33, 0x00, 0x18, 0x03, 0xCF, 0x0C, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x6E, 0x2D, 
43934
  0x73, 0x6C, 0x69, 0x63, 0x65, 0x01, 0x18, 0x05, 0xDA, 0x37, 0x03, 0x18, 0x07, 0xDA, 0x82, 0x3C, 
43935
  0x0C, 0x18, 0x09, 0xDA, 0x35, 0x15, 0x18, 0x0B, 0xDA, 0x36, 0x3F, 0x04, 0x02, 0x00, 0x1B, 0x05, 
43936
  0x04, 0x00, 0x06, 0x06, 0x05, 0x01, 0x1B, 0x07, 0x06, 0x00, 0x24, 0x09, 0x01, 0x00, 0x1E, 0x09, 
43937
  0x03, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x23, 0x09, 0x0A, 0x07, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x08, 
43938
  0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2B, 0x0C, 
43939
  0x00, 0x00, 0x48, 0x0B, 0x0C, 0x01, 0x1E, 0x0B, 0x02, 0x00, 0x48, 0x0B, 0x01, 0x05, 0x1E, 0x0B, 
43940
  0x03, 0x00, 0x1B, 0x0A, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0A, 0x05, 0x00, 0x1B, 0x0B, 
43941
  0x0A, 0x00, 0x33, 0x02, 0x09, 0x0B, 0x36, 0x00, 0x00, 0x00, 0x84, 0xAF, 0x0C, 0x00, 0x03, 0x01, 
43942
  0x0A, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
43943
  0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 
43944
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xDA, 0x3C, 0xDA, 0x3D, 0xDA, 
43945
  0x83, 0x37, 0xDA, 0x30, 0x00, 0x38, 0x00, 0xDA, 0x32, 0x00, 0x38, 0x01, 0xDA, 0x33, 0x00, 0x38, 
43946
  0x02, 0xDA, 0x89, 0xDE, 0x14, 0x26, 0x06, 0xDA, 0x81, 0x01, 0x16, 0x26, 0x08, 0xCF, 0x07, 0x5F, 
43947
  0x30, 0x30, 0x30, 0x30, 0x32, 0x31, 0x16, 0x25, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43948
  0x32, 0x33, 0x19, 0x25, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x32, 0x1C, 0x25, 
43949
  0x0A, 0xDA, 0x43, 0x1D, 0x25, 0x0B, 0xDA, 0x1E, 0x27, 0x38, 0x07, 0xDA, 0x7E, 0x28, 0x38, 0x06, 
43950
  0xDA, 0x82, 0xAD, 0x29, 0x37, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x34, 0x31, 
43951
  0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 
43952
  0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 
43953
  0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 
43954
  0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 
43955
  0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x13, 0x00, 0x1B, 
43956
  0x06, 0x00, 0x00, 0x44, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 
43957
  0x07, 0x01, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1F, 0x09, 0x0B, 0x00, 0x3A, 0x07, 0x01, 0x09, 0x1B, 
43958
  0x0A, 0x09, 0x00, 0x1B, 0x0B, 0x07, 0x00, 0x07, 0x06, 0x06, 0x01, 0x24, 0x07, 0x06, 0x00, 0x1E, 
43959
  0x07, 0x02, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x08, 0x0A, 0x0B, 0x49, 0x09, 0x01, 0x09, 0x1C, 
43960
  0xF6, 0xFF, 0xFF, 0x03, 0x08, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 
43961
  0x06, 0x00, 0x00, 0x1B, 0x08, 0x00, 0x00, 0x22, 0x09, 0x08, 0x00, 0x1E, 0x09, 0x0C, 0x00, 0x49, 
43962
  0x06, 0x01, 0x06, 0x28, 0x0B, 0x00, 0x00, 0x25, 0x0A, 0x0B, 0x06, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 
43963
  0x07, 0x00, 0x00, 0x3A, 0x0A, 0x01, 0x06, 0x32, 0x07, 0x0A, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 
43964
  0x0B, 0x0C, 0x00, 0x07, 0x08, 0x08, 0x01, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x84, 
43965
  0xBA, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
43966
  0x14, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 
43967
  0x00, 0x12, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x04, 0x19, 0x01, 0x19, 0x00, 
43968
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
43969
  0x3D, 0x00, 0x3A, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x02, 
43970
  0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 0x0D, 0x00, 
43971
  0x0D, 0x00, 0x09, 0x00, 0x2E, 0x01, 0x19, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFE, 0x07, 
43972
  0x00, 0x07, 0xBF, 0xFD, 0x05, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x6F, 0x77, 0xD8, 
43973
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x6F, 0x77, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 
43974
  0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 0x70, 0x65, 0x72, 0xD8, 0x12, 0x73, 
43975
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 0x70, 0x65, 
43976
  0x72, 0xCF, 0x0B, 0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x2A, 0xDA, 0x85, 
43977
  0x7E, 0xDA, 0x88, 0x8E, 0xDA, 0x88, 0x8C, 0xCF, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 0x65, 
43978
  0x61, 0x76, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
43979
  0xFF, 0xFF, 0x02, 0x05, 0x00, 0x02, 0xCE, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 0x65, 0x61, 
43980
  0x76, 0x65, 0xDA, 0x04, 0xDA, 0x82, 0xB5, 0xDA, 0x85, 0xC6, 0x00, 0x05, 0x00, 0xCF, 0x04, 0x63, 
43981
  0x6F, 0x6C, 0x73, 0x00, 0x05, 0x01, 0xDA, 0x89, 0xED, 0x2C, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 
43982
  0x00, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x36, 0x02, 0x00, 0x00, 0x86, 0xF0, 0x03, 
43983
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
43984
  0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xDA, 0x82, 0xD1, 0xCF, 0x0E, 0x6D, 0x6F, 0x64, 0x75, 
43985
  0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0xDA, 0x82, 0x35, 0xCF, 0x08, 0x6F, 
43986
  0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0xDA, 0x81, 0x3D, 0xCF, 0x09, 0x70, 0x72, 0x6F, 0x70, 
43987
  0x61, 0x67, 0x61, 0x74, 0x65, 0xDA, 0x87, 0xC9, 0xCF, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 
43988
  0x77, 0x65, 0x61, 0x6B, 0x2D, 0x6B, 0x65, 0x79, 0x73, 0xD8, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 
43989
  0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x6B, 0x65, 0x79, 0x73, 0xCF, 0x03, 0x64, 0x79, 0x6E, 0xDA, 
43990
  0x81, 0x26, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0xD8, 0x08, 0x6F, 0x73, 
43991
  0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 
43992
  0x07, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x04, 0x63, 0x6F, 0x6E, 0x64, 0xD7, 0x00, 
43993
  0xCD, 0x02, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x05, 0x00, 
43994
  0x01, 0x03, 0xCE, 0x04, 0x63, 0x6F, 0x6E, 0x64, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xDA, 0x83, 0x20, 
43995
  0x00, 0x05, 0x01, 0xDA, 0x89, 0xFC, 0x01, 0x05, 0x03, 0xCF, 0x03, 0x61, 0x75, 0x78, 0x30, 0x02, 
43996
  0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x36, 0x03, 
43997
  0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x02, 0x1A, 0x01, 0x05, 0xCE, 
43998
  0x03, 0x61, 0x75, 0x78, 0xDA, 0x04, 0xDA, 0x82, 0x81, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x00, 
43999
  0xDA, 0x83, 0x20, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x89, 0xFC, 0x00, 0x1A, 0x00, 0xDA, 0x43, 0x00, 
44000
  0x1A, 0x01, 0xDA, 0x89, 0xFF, 0x04, 0x1A, 0x02, 0xCF, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6C, 0x65, 
44001
  0x6E, 0x2E, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x3F, 0x02, 0x03, 0x00, 0x08, 0x03, 0x02, 
44002
  0x00, 0x1B, 0x02, 0x03, 0x00, 0x26, 0x04, 0x02, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 
44003
  0x00, 0x26, 0x05, 0x02, 0x01, 0x1E, 0x05, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x00, 0x3A, 0x06, 0x07, 
44004
  0x00, 0x03, 0x06, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x00, 0x3A, 0x06, 0x07, 0x00, 0x05, 0x07, 0x00, 
44005
  0x01, 0x2D, 0x09, 0x00, 0x00, 0x3A, 0x08, 0x09, 0x07, 0x05, 0x07, 0x00, 0x02, 0x31, 0x07, 0x00, 
44006
  0x00, 0x35, 0x09, 0x01, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x33, 0x07, 0x06, 0x08, 0x31, 0x09, 0x00, 
44007
  0x00, 0x2C, 0x07, 0x01, 0x00, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x80, 0xF8, 0x03, 0x01, 0x15, 
44008
  0x00, 0x15, 0x00, 0x12, 0x00, 0x05, 0x01, 0x09, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x07, 
44009
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x14, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x10, 0x00, 0x10, 
44010
  0x01, 0x15, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
44011
  0x09, 0x80, 0xF8, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 
44012
  0xCF, 0x0A, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 
44013
  0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x64, 0x72, 0x6F, 
44014
  0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x85, 0xAC, 0xD7, 0x00, 0xCD, 0x00, 
44015
  0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x0B, 0x24, 0x00, 0x03, 0xCE, 0x0A, 0x64, 0x72, 0x6F, 
44016
  0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 0x00, 0xCD, 
44017
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x02, 0x10, 0x00, 0x07, 0xCE, 0x10, 0x64, 0x72, 
44018
  0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 
44019
  0xDA, 0x85, 0xB3, 0xDA, 0x85, 0xB7, 0x00, 0x10, 0x00, 0xDA, 0x31, 0x00, 0x10, 0x01, 0xDA, 0x82, 
44020
  0x1A, 0x00, 0x10, 0x02, 0xDA, 0x33, 0x00, 0x10, 0x03, 0xCF, 0x10, 0x64, 0x72, 0x6F, 0x70, 0x2D, 
44021
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x01, 0x10, 0x05, 0xDA, 0x37, 
44022
  0x05, 0x10, 0x07, 0xDA, 0x43, 0x0D, 0x10, 0x09, 0xDA, 0x35, 0x3F, 0x04, 0x02, 0x00, 0x1B, 0x05, 
44023
  0x04, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 
44024
  0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x09, 
44025
  0x03, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x1B, 0x09, 
44026
  0x08, 0x00, 0x32, 0x02, 0x09, 0x00, 0x36, 0x00, 0x00, 0x00, 0x84, 0xFD, 0x0C, 0x00, 0x03, 0x01, 
44027
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 
44028
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xDA, 0x3C, 0xDA, 0x3D, 0xDA, 
44029
  0x83, 0x8E, 0xDA, 0x83, 0x91, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x03, 
44030
  0x00, 0x13, 0x00, 0x09, 0xCE, 0x0F, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 
44031
  0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x31, 0x00, 0x13, 0x01, 0xDA, 
44032
  0x82, 0x1A, 0x00, 0x13, 0x02, 0xDA, 0x33, 0x00, 0x13, 0x03, 0xCF, 0x0F, 0x64, 0x72, 0x6F, 0x70, 
44033
  0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x02, 0x13, 0x05, 0xDA, 0x7E, 
44034
  0x02, 0x12, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x66, 0x05, 0x12, 0x07, 0xCF, 
44035
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x65, 0x08, 0x12, 0x08, 0xDA, 0x43, 0x09, 0x12, 0x09, 
44036
  0xDA, 0x1E, 0x31, 0x02, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x28, 0x07, 
44037
  0x00, 0x00, 0x49, 0x06, 0x02, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x0C, 0x00, 0x3A, 0x06, 
44038
  0x02, 0x07, 0x1B, 0x08, 0x07, 0x00, 0x1B, 0x09, 0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x06, 
44039
  0x01, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x3C, 0x05, 
44040
  0x08, 0x06, 0x49, 0x07, 0x02, 0x07, 0x1C, 0xF5, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x85, 0x04, 
44041
  0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44042
  0x03, 0x00, 0x03, 0x00, 0x22, 0x00, 0x22, 0x00, 0x03, 0x00, 0x03, 0x00, 0x2C, 0x00, 0x2C, 0x00, 
44043
  0x03, 0x00, 0x03, 0xBF, 0xFD, 0x01, 0xDA, 0x83, 0x97, 0xDA, 0x83, 0x9A, 0xD7, 0x00, 0xCD, 0x00, 
44044
  0xDC, 0x00, 0x00, 0x08, 0x03, 0x02, 0x03, 0x00, 0x10, 0x00, 0x07, 0xCE, 0x04, 0x66, 0x69, 0x6E, 
44045
  0x64, 0xDA, 0x04, 0x00, 0x10, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x10, 0x01, 0xDA, 0x33, 0x00, 0x10, 
44046
  0x02, 0xDA, 0x85, 0xB5, 0x00, 0x10, 0x03, 0xCF, 0x04, 0x66, 0x69, 0x6E, 0x64, 0x00, 0x10, 0x04, 
44047
  0xDA, 0x3A, 0x01, 0x10, 0x05, 0xDA, 0x39, 0x08, 0x0F, 0x07, 0xDA, 0x82, 0x1E, 0x28, 0x04, 0x00, 
44048
  0x00, 0x1B, 0x05, 0x02, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x07, 0x00, 0x00, 0x25, 0x06, 0x04, 
44049
  0x07, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 0x06, 0x01, 0x04, 0x1B, 0x07, 0x06, 
44050
  0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x05, 0x07, 
44051
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x96, 0x03, 
44052
  0x01, 0x03, 0x02, 0x0C, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x13, 0x01, 0x0F, 0x00, 0x05, 
44053
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x07, 0xBF, 0xFA, 0x03, 0xBF, 0xFA, 0x01, 
44054
  0x00, 0x24, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x24, 0x01, 0xDA, 0x33, 0x00, 0x24, 0x02, 0xCF, 0x0A, 
44055
  0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 
44056
  0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 
44057
  0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 
44058
  0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 
44059
  0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 
44060
  0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x33, 0x06, 
44061
  0x00, 0x01, 0x2C, 0x06, 0x07, 0x00, 0x36, 0x06, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 
44062
  0x08, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x09, 0x00, 0x33, 0x07, 
44063
  0x00, 0x01, 0x2C, 0x07, 0x07, 0x00, 0x36, 0x07, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x08, 
44064
  0x0A, 0x00, 0x35, 0x07, 0x08, 0x00, 0x03, 0x01, 0x00, 0x00, 0x85, 0x0C, 0x05, 0x00, 0x05, 0x00, 
44065
  0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 0x05, 
44066
  0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 0x00, 
44067
  0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x03, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x05, 
44068
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFC, 0x03, 0x04, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 
44069
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x06, 0x01, 
44070
  0xDA, 0x33, 0x00, 0x06, 0x02, 0xDA, 0x8A, 0x02, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
44071
  0x35, 0x03, 0x04, 0x00, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 
44072
  0x85, 0x16, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0E, 0x65, 
44073
  0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0xD8, 0x0E, 0x65, 
44074
  0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0xCF, 0x04, 0x77, 
44075
  0x69, 0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
44076
  0xFF, 0xFF, 0x04, 0x18, 0x00, 0x06, 0xCE, 0x04, 0x77, 0x69, 0x74, 0x68, 0xDA, 0x04, 0xDA, 0x80, 
44077
  0xAB, 0xDA, 0x81, 0x47, 0xDA, 0x88, 0x1A, 0xDA, 0x80, 0xB3, 0x00, 0x18, 0x01, 0xDA, 0x80, 0xC7, 
44078
  0x01, 0x18, 0x03, 0xDA, 0x82, 0x5E, 0x03, 0x18, 0x04, 0xDA, 0x88, 0x1D, 0x05, 0x18, 0x05, 0xDA, 
44079
  0x88, 0x1E, 0x06, 0x18, 0x00, 0xDA, 0x8A, 0x15, 0x09, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44080
  0x30, 0x30, 0x30, 0x38, 0x3D, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x01, 
44081
  0x1B, 0x04, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x02, 0x1B, 0x05, 0x02, 0x00, 0x2E, 0x00, 0x00, 0x00, 
44082
  0x2C, 0x06, 0x00, 0x00, 0x33, 0x06, 0x03, 0x04, 0x45, 0x02, 0x00, 0x00, 0x1E, 0x05, 0x03, 0x00, 
44083
  0x1B, 0x06, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x06, 0x03, 0x00, 
44084
  0x45, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 
44085
  0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x08, 0x02, 0x07, 0x45, 0x06, 0x00, 0x00, 
44086
  0x03, 0x06, 0x00, 0x00, 0x81, 0xA9, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 
44087
  0x01, 0x00, 0x01, 0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
44088
  0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 
44089
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x88, 0x1C, 0xDA, 0x87, 0xAA, 0xCF, 0x0C, 0x73, 0x74, 
44090
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0xDA, 0x82, 0xE8, 0xDA, 0x80, 0xBD, 
44091
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 
44092
  0x16, 0x00, 0x04, 0xCE, 0x10, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 
44093
  0x64, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xCF, 0x04, 0x63, 0x6F, 0x72, 0x6F, 0xD8, 
44094
  0x0B, 0x65, 0x76, 0x2F, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x83, 0x42, 0xDA, 
44095
  0x83, 0xF2, 0x00, 0x16, 0x00, 0xCF, 0x03, 0x73, 0x65, 0x63, 0x00, 0x16, 0x01, 0xDA, 0x80, 0xC7, 
44096
  0x00, 0x16, 0x02, 0xDA, 0x80, 0xBD, 0x02, 0x16, 0x04, 0xDA, 0x31, 0x2C, 0x04, 0x00, 0x00, 0x35, 
44097
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 
44098
  0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x46, 0x05, 0x00, 0x00, 0x2C, 
44099
  0x06, 0x02, 0x00, 0x28, 0x07, 0x00, 0x00, 0x33, 0x06, 0x00, 0x07, 0x31, 0x04, 0x00, 0x00, 0x45, 
44100
  0x03, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 
44101
  0x08, 0x04, 0x00, 0x33, 0x08, 0x05, 0x03, 0x31, 0x06, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 
44102
  0x07, 0x00, 0x00, 0x8F, 0x28, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
44103
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44104
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44105
  0xDA, 0x85, 0x08, 0xDA, 0x85, 0x04, 0xCF, 0x0E, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 
44106
  0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0xDA, 0x82, 0x37, 0xCF, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 
44107
  0x72, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0xD8, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
44108
  0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0xCF, 0x0D, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 
44109
  0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD8, 0x0D, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x2D, 
44110
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x7F, 0xDA, 0x71, 0xDA, 0x83, 0xF6, 0xDA, 0x80, 0xF8, 0xCF, 
44111
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 
44112
  0x2F, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x83, 0x50, 0xDA, 0x83, 0x4D, 0xDA, 0x8A, 0x11, 0xDA, 0x8A, 
44113
  0x0F, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0xDA, 0x89, 0x11, 0xCF, 0x10, 0x65, 
44114
  0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 
44115
  0x88, 0x22, 0xDA, 0x82, 0xF7, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0x01, 
44116
  0x03, 0x20, 0x01, 0x23, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x77, 0x68, 0x6F, 
44117
  0x69, 0x73, 0xDA, 0x04, 0xDA, 0x81, 0x38, 0xDA, 0x82, 0x7C, 0xDA, 0x88, 0xB2, 0xBF, 0xFF, 0x00, 
44118
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
44119
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 
44120
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
44121
  0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 
44122
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 
44123
  0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 
44124
  0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 
44125
  0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
44126
  0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 
44127
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 
44128
  0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 
44129
  0xDA, 0x82, 0xF6, 0x00, 0x20, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x20, 0x01, 0xDA, 0x82, 0xF7, 0x00, 
44130
  0x20, 0x02, 0xDA, 0x39, 0x04, 0x20, 0x04, 0xCF, 0x05, 0x72, 0x70, 0x61, 0x74, 0x68, 0x07, 0x1F, 
44131
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x34, 0x0A, 0x1F, 0x07, 0xCF, 0x07, 0x5F, 
44132
  0x30, 0x30, 0x30, 0x30, 0x38, 0x33, 0x0D, 0x1F, 0x08, 0xDA, 0x81, 0x29, 0x15, 0x1F, 0x05, 0xDA, 
44133
  0x81, 0x3A, 0x19, 0x1F, 0x0A, 0xCF, 0x08, 0x68, 0x61, 0x73, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x28, 
44134
  0x02, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x35, 0x03, 0x04, 0x00, 0x1B, 
44135
  0x04, 0x03, 0x00, 0x2D, 0x06, 0x00, 0x10, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x28, 
44136
  0x07, 0x00, 0x00, 0x49, 0x05, 0x06, 0x07, 0x1B, 0x07, 0x05, 0x00, 0x1F, 0x07, 0x14, 0x00, 0x3A, 
44137
  0x05, 0x06, 0x07, 0x1B, 0x08, 0x05, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x0D, 0x35, 
44138
  0x05, 0x09, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x3B, 0x09, 0x05, 0x0A, 0x20, 0x09, 0x02, 0x00, 0x2C, 
44139
  0x09, 0x01, 0x00, 0x1B, 0x05, 0x09, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 
44140
  0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x02, 0x08, 0x00, 0x1C, 
44141
  0x03, 0x00, 0x00, 0x49, 0x07, 0x06, 0x07, 0x1C, 0xED, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0xBF, 
44142
  0xFF, 0x91, 0x5A, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 
44143
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 
44144
  0x00, 0x17, 0x00, 0x17, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x15, 
44145
  0x00, 0x15, 0x00, 0x15, 0x00, 0x07, 0x01, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFB, 0x05, 0x00, 
44146
  0x05, 0xBF, 0xFB, 0x03, 0xDB, 0x01, 0xCF, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 
44147
  0x83, 0x48, 0xDA, 0x82, 0xF1, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
44148
  0x03, 0x0D, 0x01, 0x16, 0xCE, 0x11, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 
44149
  0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x3F, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 
44150
  0x82, 0x51, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 
44151
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 
44152
  0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 
44153
  0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 
44154
  0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 
44155
  0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 
44156
  0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
44157
  0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 
44158
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0x00, 0x0D, 
44159
  0x00, 0xDA, 0x81, 0x29, 0x00, 0x0D, 0x01, 0xDA, 0x82, 0xF1, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 
44160
  0x00, 0x04, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 
44161
  0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x02, 
44162
  0x04, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 
44163
  0x90, 0xC8, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
44164
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 0x08, 0x63, 
44165
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 
44166
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x00, 0x0B, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 
44167
  0x61, 0x72, 0x65, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x32, 0x00, 0xDA, 0x81, 0x5C, 0x00, 
44168
  0x32, 0x01, 0xDA, 0x8A, 0x31, 0x00, 0x32, 0x02, 0xDA, 0x7E, 0x03, 0x32, 0x04, 0xDA, 0x1E, 0x04, 
44169
  0x31, 0x03, 0xDA, 0x43, 0x06, 0x31, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x77, 
44170
  0x0A, 0x2F, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44171
  0x30, 0x78, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x79, 0x1A, 0x28, 
44172
  0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7A, 0x22, 0x28, 0x0D, 0xCF, 0x07, 0x5F, 
44173
  0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 
44174
  0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 
44175
  0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x29, 0x00, 0x3A, 0x07, 0x00, 0x03, 0x1B, 0x08, 
44176
  0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1E, 0x09, 
44177
  0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 
44178
  0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x07, 
44179
  0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 
44180
  0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 0x09, 0x0E, 
44181
  0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x1B, 0x0D, 
44182
  0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x27, 0x0E, 
44183
  0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x26, 0x09, 0x07, 0x00, 0x1E, 0x09, 
44184
  0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 
44185
  0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD7, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 0x76, 
44186
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44187
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44188
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44189
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44190
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44191
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44192
  0x03, 0x00, 0x03, 0xCF, 0x0B, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x62, 0x75, 0x69, 0x6C, 0x64, 
44193
  0xDA, 0x89, 0x14, 0xCF, 0x01, 0x3C, 0xDA, 0x80, 0xF4, 0xDA, 0x85, 0x33, 0xDA, 0x85, 0x29, 0xCF, 
44194
  0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0xDA, 0x88, 0x7D, 0xCF, 0x08, 0x63, 
44195
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 
44196
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x00, 0x0B, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 
44197
  0x61, 0x72, 0x65, 0x3E, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x32, 0x00, 0xDA, 0x81, 0x5C, 0x00, 
44198
  0x32, 0x01, 0xDA, 0x8A, 0x3C, 0x00, 0x32, 0x02, 0xDA, 0x7E, 0x03, 0x32, 0x04, 0xDA, 0x1E, 0x04, 
44199
  0x31, 0x03, 0xDA, 0x43, 0x06, 0x31, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4C, 
44200
  0x0A, 0x2F, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44201
  0x30, 0x4D, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4E, 0x1A, 0x28, 
44202
  0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4F, 0x22, 0x28, 0x0D, 0xCF, 0x07, 0x5F, 
44203
  0x30, 0x30, 0x30, 0x30, 0x30, 0x50, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 
44204
  0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 
44205
  0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x29, 0x00, 0x3A, 0x07, 0x00, 0x03, 0x1B, 0x08, 
44206
  0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1E, 0x09, 
44207
  0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 
44208
  0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x07, 
44209
  0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 
44210
  0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 0x09, 0x0E, 
44211
  0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x1B, 0x0D, 
44212
  0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x27, 0x0E, 
44213
  0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x22, 0x09, 0x07, 0x00, 0x1E, 0x09, 
44214
  0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 
44215
  0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD7, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 0x85, 
44216
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44217
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44218
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44219
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44220
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44221
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44222
  0x03, 0x00, 0x03, 0xCF, 0x0B, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x61, 0x62, 0x6C, 0x65, 0x3F, 
44223
  0xDA, 0x40, 0xCF, 0x0B, 0x73, 0x63, 0x61, 0x6E, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xDA, 
44224
  0x89, 0x3A, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xD8, 0x09, 0x6E, 
44225
  0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 
44226
  0x65, 0x65, 0xD8, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0xCF, 0x08, 0x63, 0x6F, 
44227
  0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 
44228
  0x01, 0x01, 0x03, 0x00, 0x02, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0xDA, 
44229
  0x04, 0xDA, 0x83, 0x45, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8A, 0x4A, 0x31, 
44230
  0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8A, 0xF7, 0x03, 0x00, 0x03, 
44231
  0x00, 0x03, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x77, 
44232
  0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
44233
  0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x83, 0x18, 0xDA, 0x83, 0x16, 0xCF, 0x0D, 0x67, 0x63, 
44234
  0x73, 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xD8, 0x0D, 0x67, 0x63, 0x73, 
44235
  0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 0x63, 
44236
  0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x63, 0x72, 
44237
  0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
44238
  0x74, 0x61, 0x6E, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0xCF, 0x08, 
44239
  0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x08, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 
44240
  0x61, 0x64, 0xDA, 0x85, 0xB6, 0xDA, 0x85, 0xB3, 0xCF, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 
44241
  0xD8, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0xCF, 0x10, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
44242
  0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x2A, 0xDA, 0x81, 0xA1, 0xDA, 0x80, 0x83, 
44243
  0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 0x03, 0x02, 0x03, 0x04, 0x1D, 0x00, 0x01, 0x07, 
44244
  0xCE, 0x06, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 0xDA, 0x04, 0xCE, 0x1B, 0x65, 0x78, 0x70, 0x65, 
44245
  0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x31, 0x20, 
44246
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0xDA, 0x88, 0x44, 0xCE, 0x23, 0x65, 0x78, 0x70, 0x65, 
44247
  0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 
44248
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xD1, 
44249
  0x01, 0xDA, 0x82, 0x91, 0x00, 0x1D, 0x00, 0xDA, 0x83, 0xA6, 0x00, 0x1D, 0x01, 0xCF, 0x03, 0x74, 
44250
  0x72, 0x75, 0x00, 0x1D, 0x02, 0xCF, 0x03, 0x66, 0x61, 0x6C, 0x00, 0x1D, 0x03, 0xDA, 0x80, 0x83, 
44251
  0x01, 0x1D, 0x05, 0xDA, 0x37, 0x17, 0x1D, 0x07, 0xCF, 0x04, 0x66, 0x61, 0x6C, 0x32, 0x19, 0x1D, 
44252
  0x09, 0xDA, 0x89, 0xFF, 0x3F, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x07, 0x00, 0x00, 
44253
  0x25, 0x06, 0x07, 0x05, 0x1E, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 
44254
  0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x03, 0x00, 
44255
  0x2C, 0x07, 0x02, 0x00, 0x01, 0x07, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x3D, 0x07, 0x07, 0x00, 
44256
  0x1E, 0x07, 0x07, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x3D, 0x08, 0x08, 0x00, 
44257
  0x35, 0x07, 0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x02, 0x00, 
44258
  0x1B, 0x07, 0x06, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2B, 0x0A, 0x00, 0x00, 
44259
  0x31, 0x0A, 0x00, 0x00, 0x36, 0x09, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 
44260
  0x01, 0x05, 0x35, 0x01, 0x0B, 0xDA, 0x8A, 0x00, 0xDA, 0x04, 0xDA, 0x82, 0x95, 0xDA, 0x80, 0xAB, 
44261
  0xDA, 0x82, 0x81, 0xDA, 0x5C, 0xDA, 0x80, 0xB3, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0xA6, 0xBF, 
44262
  0xFF, 0x00, 0x01, 0xDA, 0x8A, 0x5F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8A, 0x60, 0xBF, 0xFF, 0x00, 
44263
  0x03, 0xDA, 0x80, 0x83, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x37, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8A, 
44264
  0x61, 0x00, 0x35, 0x00, 0xDA, 0x43, 0x00, 0x35, 0x01, 0xDA, 0x89, 0xFF, 0x08, 0x35, 0x04, 0xCF, 
44265
  0x02, 0x62, 0x6C, 0x0D, 0x35, 0x03, 0xCF, 0x02, 0x62, 0x72, 0x21, 0x35, 0x07, 0xDA, 0x80, 0x8B, 
44266
  0x2E, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x47, 0x02, 0x00, 0x03, 0x1E, 0x02, 0x03, 0x00, 
44267
  0x2D, 0x03, 0x00, 0x01, 0x03, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x00, 
44268
  0x1B, 0x04, 0x03, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x06, 0x03, 0x05, 0x00, 0x2D, 0x06, 0x00, 0x00, 
44269
  0x3A, 0x05, 0x06, 0x03, 0x1B, 0x03, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 
44270
  0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x0E, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x07, 0x04, 0x03, 
44271
  0x45, 0x06, 0x00, 0x00, 0x2B, 0x08, 0x02, 0x00, 0x06, 0x07, 0x08, 0x00, 0x31, 0x07, 0x00, 0x00, 
44272
  0x35, 0x08, 0x01, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x33, 0x09, 0x06, 0x08, 0x2D, 0x09, 0x00, 0x07, 
44273
  0x31, 0x09, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 
44274
  0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x09, 0x06, 0x03, 
44275
  0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x09, 0x04, 0x07, 0x45, 0x06, 0x00, 0x00, 
44276
  0x2B, 0x0A, 0x02, 0x00, 0x06, 0x09, 0x0A, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 0x01, 0x00, 
44277
  0x2C, 0x0B, 0x04, 0x00, 0x33, 0x0B, 0x06, 0x0A, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 
44278
  0x33, 0x0A, 0x08, 0x09, 0x2D, 0x0A, 0x00, 0x07, 0x31, 0x0A, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 
44279
  0x03, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x82, 0xF6, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 
44280
  0x05, 0x00, 0x05, 0x03, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 
44281
  0x11, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
44282
  0x0B, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
44283
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
44284
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x27, 0x00, 0x27, 0x00, 0x22, 0x00, 0x22, 0xBF, 
44285
  0xFF, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
44286
  0x00, 0x0B, 0x82, 0xF2, 0x0C, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x11, 0x00, 
44287
  0x11, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x12, 0x00, 0x12, 0x01, 0x0D, 0x00, 
44288
  0x0D, 0x00, 0x0D, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
44289
  0x0D, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 0x03, 0x00, 0x03, 0xA3, 0x00, 0x00, 
44290
  0x00, 0xDA, 0x80, 0xCA, 0xDA, 0x88, 0x1A, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x70, 
44291
  0x69, 0x64, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x69, 0x64, 0xCF, 0x07, 0x61, 
44292
  0x73, 0x73, 0x65, 0x72, 0x74, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x02, 0x02, 
44293
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x12, 0x00, 0x05, 0xCE, 0x07, 0x61, 0x73, 0x73, 0x65, 0x72, 
44294
  0x74, 0x66, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x81, 0x49, 0xDA, 0x82, 0x81, 0xDA, 
44295
  0x80, 0xB3, 0x00, 0x12, 0x00, 0xDA, 0x1E, 0x00, 0x12, 0x01, 0xDA, 0x81, 0x4C, 0x00, 0x12, 0x02, 
44296
  0xDA, 0x81, 0x4D, 0x00, 0x12, 0x03, 0xDA, 0x8A, 0x66, 0x02, 0x12, 0x05, 0xDA, 0x46, 0x2C, 0x05, 
44297
  0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x07, 
44298
  0x05, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x32, 0x08, 0x01, 0x00, 0x34, 0x02, 
44299
  0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x05, 0x05, 0x31, 0x07, 
44300
  0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x06, 0x08, 0x45, 0x07, 
44301
  0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x80, 0xD2, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 
44302
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44303
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 0x6D, 0x61, 0x74, 
44304
  0x68, 0x2F, 0x72, 0x6E, 0x67, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0xCF, 
44305
  0x05, 0x65, 0x70, 0x72, 0x69, 0x6E, 0xDA, 0x84, 0x5F, 0xCF, 0x06, 0x2A, 0x65, 0x78, 0x69, 0x74, 
44306
  0x2A, 0xDA, 0x85, 0x43, 0xDA, 0x85, 0xC8, 0xDA, 0x85, 0xC6, 0xCF, 0x03, 0x63, 0x68, 0x72, 0xD7, 
44307
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x03, 0x14, 0x00, 0x03, 0xCE, 0x03, 
44308
  0x63, 0x68, 0x72, 0xDA, 0x04, 0xDA, 0x82, 0x30, 0xCE, 0x23, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 
44309
  0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 
44310
  0x67, 0x74, 0x68, 0x20, 0x31, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0x25, 0x76, 0xDA, 0x81, 0x4B, 
44311
  0x00, 0x14, 0x00, 0xDA, 0x83, 0x1C, 0x00, 0x14, 0x01, 0xDA, 0x8A, 0x6D, 0x03, 0x0A, 0x04, 0xCF, 
44312
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
44313
  0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x3F, 0x05, 0x00, 0x00, 
44314
  0x26, 0x06, 0x05, 0x01, 0x1B, 0x02, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x02, 0x04, 0x00, 
44315
  0x1E, 0x02, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x03, 0x00, 0x00, 
44316
  0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x00, 
44317
  0x31, 0x02, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x81, 0x98, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
44318
  0x0B, 0x00, 0x0B, 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 
44319
  0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x03, 0x00, 0x03, 0x00, 
44320
  0x03, 0xCF, 0x0C, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 
44321
  0x84, 0x32, 0xDA, 0x82, 0x22, 0xDA, 0x82, 0x20, 0xCF, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 
44322
  0x70, 0x6C, 0x61, 0x63, 0x65, 0xD8, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 
44323
  0x63, 0x65, 0xDA, 0x81, 0x4E, 0xDA, 0x81, 0x49, 0xDA, 0x85, 0x13, 0xDA, 0x85, 0x10, 0xCF, 0x06, 
44324
  0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
44325
  0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 
44326
  0x82, 0x51, 0xDA, 0x82, 0x5C, 0x00, 0x07, 0x00, 0xDA, 0x83, 0xC9, 0x00, 0x07, 0x01, 0xDA, 0x8A, 
44327
  0x75, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 
44328
  0x00, 0x33, 0x04, 0x00, 0x02, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x53, 0x03, 0x00, 
44329
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x10, 0x62, 0x75, 0x66, 
44330
  0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0xD8, 0x10, 0x62, 
44331
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0xCF, 
44332
  0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 
44333
  0x74, 0x36, 0x34, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 
44334
  0x2D, 0x75, 0x69, 0x6E, 0x74, 0x36, 0x34, 0xCF, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
44335
  0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0xD8, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
44336
  0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0xDA, 0x86, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
44337
  0x00, 0x16, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x12, 0x66, 0x00, 0x0D, 0xCE, 0x05, 0x76, 
44338
  0x61, 0x72, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x86, 0x7E, 0xDA, 0x82, 0xE9, 0xDA, 0x2C, 0xDA, 0x83, 
44339
  0x4D, 0xDA, 0x82, 0x30, 0xDA, 0x06, 0xCE, 0x11, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 
44340
  0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0xDA, 0x81, 0x28, 0xDA, 0x5C, 0xDA, 0x82, 
44341
  0x98, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xC7, 0xCF, 0x02, 0x6F, 0x72, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 
44342
  0xC9, 0xDA, 0x83, 0x85, 0xDA, 0x85, 0x04, 0xDA, 0x83, 0xF2, 0x00, 0x66, 0x00, 0xDA, 0x81, 0x86, 
44343
  0x00, 0x66, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x66, 0x02, 0xDA, 0x86, 0x3F, 0x04, 0x66, 0x04, 0xCF, 
44344
  0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x08, 0x66, 0x06, 0xCF, 0x05, 0x66, 
44345
  0x62, 0x6F, 0x64, 0x79, 0x0E, 0x66, 0x08, 0xDA, 0x86, 0x83, 0x10, 0x66, 0x0A, 0xCF, 0x08, 0x6D, 
44346
  0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x10, 0x2C, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
44347
  0x30, 0x34, 0x54, 0x13, 0x2C, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x53, 0x16, 
44348
  0x2C, 0x0D, 0xDA, 0x82, 0x3C, 0x2E, 0x66, 0x0C, 0xDA, 0x82, 0xCC, 0x31, 0x66, 0x0D, 0xCF, 0x09, 
44349
  0x6F, 0x6C, 0x64, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x34, 0x66, 0x0E, 0xDA, 0x31, 0x31, 0x00, 
44350
  0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 
44351
  0x03, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 
44352
  0x05, 0x00, 0x2B, 0x07, 0x02, 0x00, 0x2B, 0x08, 0xFE, 0xFF, 0x33, 0x04, 0x07, 0x08, 0x2C, 0x08, 
44353
  0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x44, 0x09, 0x00, 0x00, 0x1B, 0x0A, 
44354
  0x09, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 
44355
  0x18, 0x00, 0x3A, 0x0B, 0x08, 0x0C, 0x1B, 0x0D, 0x0B, 0x00, 0x31, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 
44356
  0x03, 0x00, 0x35, 0x0B, 0x0E, 0x00, 0x1E, 0x0B, 0x04, 0x00, 0x29, 0x0E, 0x00, 0x00, 0x3C, 0x0A, 
44357
  0x0D, 0x0E, 0x1C, 0x0D, 0x00, 0x00, 0x31, 0x0D, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x35, 0x0E, 
44358
  0x0F, 0x00, 0x1E, 0x0E, 0x04, 0x00, 0x2C, 0x0F, 0x05, 0x00, 0x3C, 0x0A, 0x0F, 0x0D, 0x1C, 0x06, 
44359
  0x00, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x32, 0x0F, 0x0D, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 
44360
  0x10, 0x00, 0x01, 0x0F, 0x00, 0x00, 0x49, 0x0C, 0x08, 0x0C, 0x1C, 0xE9, 0xFF, 0xFF, 0x2C, 0x0C, 
44361
  0x08, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0B, 
44362
  0x0D, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x35, 0x0B, 0x0E, 0x00, 0x1B, 0x0E, 
44363
  0x0B, 0x00, 0x2C, 0x0F, 0x09, 0x00, 0x32, 0x0F, 0x00, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x10, 
44364
  0x0A, 0x00, 0x32, 0x10, 0x0B, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x32, 0x0D, 0x0F, 0x00, 0x46, 0x0B, 
44365
  0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x2C, 0x11, 
44366
  0x0B, 0x00, 0x32, 0x11, 0x0F, 0x00, 0x44, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x0C, 0x00, 0x33, 0x11, 
44367
  0x0D, 0x10, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x0D, 0x00, 0x33, 0x11, 0x0C, 0x0F, 0x45, 0x10, 
44368
  0x00, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x32, 0x11, 0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x12, 
44369
  0x0E, 0x00, 0x33, 0x12, 0x0F, 0x0C, 0x45, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x33, 0x12, 
44370
  0x0E, 0x06, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x13, 0x0B, 0x00, 0x2B, 0x14, 0x00, 0x00, 0x32, 0x13, 
44371
  0x14, 0x00, 0x46, 0x12, 0x00, 0x00, 0x2C, 0x14, 0x0F, 0x00, 0x33, 0x14, 0x0C, 0x12, 0x31, 0x0E, 
44372
  0x00, 0x00, 0x45, 0x13, 0x00, 0x00, 0x2C, 0x14, 0x09, 0x00, 0x32, 0x14, 0x0A, 0x00, 0x45, 0x12, 
44373
  0x00, 0x00, 0x2C, 0x15, 0x10, 0x00, 0x33, 0x15, 0x0C, 0x12, 0x45, 0x14, 0x00, 0x00, 0x2C, 0x15, 
44374
  0x11, 0x00, 0x33, 0x15, 0x0B, 0x10, 0x33, 0x11, 0x0F, 0x13, 0x32, 0x14, 0x0E, 0x00, 0x45, 0x12, 
44375
  0x00, 0x00, 0x03, 0x12, 0x00, 0x00, 0x89, 0x3B, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
44376
  0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
44377
  0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44378
  0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x01, 0x14, 
44379
  0x00, 0x14, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x02, 0x13, 
44380
  0x00, 0x13, 0xBF, 0xFE, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0xBF, 
44381
  0xFC, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
44382
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44383
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44384
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44385
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44386
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44387
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44388
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x12, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 
44389
  0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 0xD8, 0x12, 0x6E, 0x65, 
44390
  0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 
44391
  0xDA, 0x89, 0x1C, 0xDA, 0x89, 0x18, 0xCF, 0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 
44392
  0x6F, 0x6E, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0xCF, 0x0C, 
44393
  0x6E, 0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 0x77, 0x6E, 0xD8, 0x0C, 0x6E, 0x65, 
44394
  0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 0x77, 0x6E, 0xCF, 0x03, 0x66, 0x6F, 0x72, 0xD7, 
44395
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x08, 
44396
  0x00, 0x05, 0xCE, 0x03, 0x66, 0x6F, 0x72, 0xDA, 0x04, 0xDA, 0x80, 0xF4, 0xDA, 0x82, 0x78, 0xDA, 
44397
  0x84, 0x05, 0x00, 0x08, 0x00, 0xDA, 0x43, 0x00, 0x08, 0x01, 0xDA, 0x35, 0x00, 0x08, 0x02, 0xDA, 
44398
  0x82, 0x82, 0x00, 0x08, 0x03, 0xDA, 0x80, 0xC7, 0x00, 0x08, 0x04, 0xDA, 0x8A, 0x8E, 0x33, 0x00, 
44399
  0x01, 0x02, 0x2B, 0x05, 0x01, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x05, 
44400
  0x06, 0x07, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x82, 0x33, 
44401
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
44402
  0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 
44403
  0x77, 0x65, 0x72, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 
44404
  0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0xCF, 0x05, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x86, 
44405
  0x70, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0xDA, 0x81, 0x5F, 0xDA, 0x82, 
44406
  0xF2, 0xDA, 0x89, 0x68, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x08, 
44407
  0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xCF, 0x04, 0x6E, 0x61, 0x6E, 0x3F, 0xD7, 0x00, 
44408
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x04, 0x6E, 
44409
  0x61, 0x6E, 0x3F, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x1E, 0x00, 0x02, 0x01, 0xDA, 0x8A, 0x97, 
44410
  0x4A, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x64, 0x25, 0x00, 0x25, 0xCF, 0x08, 0x77, 0x68, 
44411
  0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 
44412
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x08, 0x77, 0x68, 0x65, 0x6E, 0x2D, 
44413
  0x6C, 0x65, 0x74, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0x83, 0x00, 0x08, 0x00, 0xDA, 0x83, 
44414
  0xA6, 0x00, 0x08, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x08, 0x02, 0xDA, 0x8A, 0x9A, 0x2C, 0x04, 0x00, 
44415
  0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 
44416
  0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x83, 0x06, 0x03, 
44417
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 
44418
  0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x00, 
44419
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x6F, 0x72, 0x65, 
44420
  0x76, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x82, 0x5D, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x06, 
44421
  0x01, 0xDA, 0x8A, 0x9D, 0x2C, 0x03, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 
44422
  0x34, 0x00, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x82, 0x48, 0x03, 0x00, 
44423
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x10, 0x64, 0x65, 0x62, 0x75, 0x67, 
44424
  0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0xDA, 0x84, 0xDD, 0xCF, 0x03, 
44425
  0x64, 0x69, 0x76, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x21, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
44426
  0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x03, 0x64, 0x69, 0x76, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 
44427
  0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 
44428
  0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0D, 0x03, 0x03, 
44429
  0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 
44430
  0x05, 0x0D, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 
44431
  0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x02, 0x2A, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
44432
  0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2A, 0x3D, 
44433
  0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0B, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
44434
  0xFF, 0x00, 0x13, 0xDA, 0x84, 0x5E, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 
44435
  0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 
44436
  0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x04, 0x03, 0x03, 
44437
  0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0A, 0x03, 
44438
  0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 
44439
  0x00, 0x00, 0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x04, 
44440
  0x00, 0x08, 0x02, 0xDA, 0x8A, 0xA4, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 
44441
  0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 
44442
  0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x8F, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 
44443
  0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0xCF, 0x07, 0x70, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 
44444
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 
44445
  0x23, 0x00, 0x04, 0xCE, 0x07, 0x70, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0xDA, 0x04, 0xDA, 0x5C, 
44446
  0xDA, 0x80, 0xAE, 0xD0, 0x07, 0x70, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0xDA, 0x80, 0xDC, 0xDA, 
44447
  0x81, 0x8D, 0xDA, 0x83, 0x42, 0xDA, 0x80, 0xDE, 0xDA, 0x82, 0x56, 0xDA, 0x0E, 0xDA, 0x83, 0xF2, 
44448
  0x00, 0x23, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x23, 0x01, 0xDA, 0x8A, 0xA8, 0x02, 0x23, 0x03, 0xDA, 
44449
  0x31, 0x05, 0x23, 0x04, 0xDA, 0x82, 0xCD, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 
44450
  0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x46, 
44451
  0x02, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x02, 0x34, 
44452
  0x00, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x33, 
44453
  0x06, 0x05, 0x07, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x32, 0x06, 0x03, 0x00, 0x45, 
44454
  0x05, 0x00, 0x00, 0x33, 0x03, 0x02, 0x04, 0x31, 0x05, 0x00, 0x00, 0x46, 0x06, 0x00, 0x00, 0x2C, 
44455
  0x05, 0x06, 0x00, 0x32, 0x05, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x2C, 
44456
  0x08, 0x08, 0x00, 0x33, 0x07, 0x08, 0x02, 0x45, 0x05, 0x00, 0x00, 0x32, 0x05, 0x04, 0x00, 0x46, 
44457
  0x02, 0x00, 0x00, 0x2C, 0x07, 0x09, 0x00, 0x33, 0x07, 0x06, 0x02, 0x45, 0x05, 0x00, 0x00, 0x03, 
44458
  0x05, 0x00, 0x00, 0x81, 0x2A, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x16, 0x00, 0x16, 0x00, 0x03, 
44459
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44460
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44461
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44462
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x08, 0x66, 0x69, 0x62, 0x65, 
44463
  0x72, 0x2D, 0x66, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 
44464
  0xFF, 0xFF, 0xFF, 0x05, 0x0B, 0x00, 0x03, 0xCE, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 
44465
  0x6E, 0xDA, 0x04, 0xDA, 0x80, 0xAE, 0xD0, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 
44466
  0xD2, 0x00, 0x01, 0xDA, 0x82, 0xB5, 0xDA, 0x80, 0xDC, 0x00, 0x0B, 0x00, 0xCF, 0x05, 0x66, 0x6C, 
44467
  0x61, 0x67, 0x73, 0x00, 0x0B, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x0B, 0x02, 0xDA, 0x8A, 0xAC, 0x2C, 
44468
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x03, 0x04, 0x05, 0x34, 
44469
  0x01, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x33, 
44470
  0x04, 0x03, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x82, 0xC3, 0x14, 0x00, 0x14, 
44471
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
44472
  0x00, 0x03, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 
44473
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x03, 0x02, 0x03, 0x04, 0x1D, 0x00, 0x09, 0xCE, 
44474
  0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x04, 0xDA, 
44475
  0x08, 0xDA, 0x82, 0xC7, 0xDA, 0x85, 0xE6, 0xDA, 0x86, 0x36, 0x00, 0x1D, 0x00, 0xDA, 0x87, 0xA2, 
44476
  0x00, 0x1D, 0x01, 0xDA, 0x80, 0x8B, 0x00, 0x1D, 0x02, 0xCF, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 
44477
  0x74, 0x65, 0x00, 0x1D, 0x03, 0xDA, 0x8A, 0xB2, 0x01, 0x1D, 0x05, 0xDA, 0x82, 0xCC, 0x05, 0x1C, 
44478
  0x07, 0xDA, 0x46, 0x08, 0x1C, 0x08, 0xDA, 0x82, 0xCD, 0x0B, 0x1C, 0x09, 0xDA, 0x15, 0x0F, 0x17, 
44479
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x77, 0x3B, 0x04, 0x00, 0x01, 0x1B, 0x05, 
44480
  0x04, 0x00, 0x1E, 0x05, 0x1A, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x3A, 0x06, 0x05, 0x07, 0x1B, 0x07, 
44481
  0x06, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x3A, 0x06, 0x05, 0x08, 0x1B, 0x08, 0x06, 0x00, 0x2C, 0x09, 
44482
  0x02, 0x00, 0x3A, 0x06, 0x05, 0x09, 0x1B, 0x09, 0x06, 0x00, 0x1E, 0x09, 0x04, 0x00, 0x1E, 0x02, 
44483
  0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x06, 0x00, 0x31, 0x08, 
44484
  0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x06, 0x0A, 0x00, 0x1C, 0x02, 
44485
  0x00, 0x00, 0x1B, 0x06, 0x08, 0x00, 0x1E, 0x06, 0x04, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x3B, 0x0A, 
44486
  0x08, 0x0B, 0x03, 0x0A, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x9A, 
44487
  0x0E, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0xBF, 
44488
  0xFF, 0x05, 0x02, 0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x05, 0x03, 0x07, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
44489
  0x1D, 0x01, 0x0B, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
44490
  0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0xBF, 0xFB, 0x03, 0xCF, 0x02, 0x3E, 
44491
  0x3D, 0xDA, 0x84, 0x14, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xD8, 
44492
  0x09, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 
44493
  0x2F, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x81, 0x59, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 
44494
  0x6C, 0x6F, 0x6F, 0x72, 0xDA, 0x84, 0x82, 0xCF, 0x0C, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 
44495
  0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 0x0C, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 
44496
  0x74, 0x65, 0x73, 0xCF, 0x10, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 0x63, 
44497
  0x6B, 0x2D, 0x73, 0x65, 0x74, 0xDA, 0x89, 0x6D, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
44498
  0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0xDA, 0x81, 0xB3, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
44499
  0x67, 0x61, 0x6D, 0x6D, 0x61, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 0x6D, 
44500
  0x61, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0xD8, 0x09, 0x6D, 0x61, 
44501
  0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0xDA, 0x85, 0x3A, 0xDA, 0x85, 0x35, 0xCF, 0x0A, 0x74, 
44502
  0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 0x79, 0x70, 0x65, 0xDA, 0x75, 0xCF, 0x0D, 0x73, 0x74, 0x72, 
44503
  0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x81, 0x4B, 0xCF, 0x0A, 0x6D, 
44504
  0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x32, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
44505
  0x61, 0x74, 0x61, 0x6E, 0x32, 0xDA, 0x85, 0xD9, 0xDA, 0x85, 0xD7, 0xCF, 0x05, 0x73, 0x74, 0x64, 
44506
  0x69, 0x6E, 0xDA, 0x89, 0x0F, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD8, 
44507
  0x08, 0x65, 0x76, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xCF, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 
44508
  0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0xD8, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 
44509
  0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0xCF, 0x0A, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 
44510
  0x65, 0x61, 0x6B, 0xD8, 0x0A, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0xCF, 
44511
  0x04, 0x6B, 0x65, 0x65, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x17, 0x02, 0x02, 0xCD, 
44512
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 0xB3, 0x00, 0x2F, 0xCE, 0x04, 0x6B, 0x65, 0x65, 0x70, 0xDA, 
44513
  0x04, 0xDA, 0x30, 0xDA, 0x2F, 0x00, 0x80, 0xB3, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xB3, 0x01, 
44514
  0xDA, 0x33, 0x00, 0x80, 0xB3, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xB3, 0x03, 0xDA, 0x8A, 0xCF, 
44515
  0x01, 0x80, 0xB3, 0x05, 0xDA, 0x7E, 0x03, 0x80, 0xB2, 0x07, 0xDA, 0x81, 0xFC, 0x03, 0x80, 0xB2, 
44516
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x50, 0x05, 0x15, 0x01, 0xCF, 0x07, 0x5F, 
44517
  0x30, 0x30, 0x30, 0x30, 0x31, 0x52, 0x08, 0x15, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44518
  0x31, 0x51, 0x0B, 0x15, 0x0A, 0xDA, 0x1E, 0x0E, 0x13, 0x0B, 0xDA, 0x80, 0x87, 0x19, 0x30, 0x0A, 
44519
  0xDA, 0x82, 0x00, 0x1A, 0x30, 0x09, 0xDA, 0x82, 0x01, 0x1A, 0x30, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
44520
  0x30, 0x30, 0x30, 0x31, 0x54, 0x1D, 0x30, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
44521
  0x53, 0x20, 0x30, 0x0D, 0xDA, 0x1E, 0x29, 0x2E, 0x0B, 0xDA, 0x80, 0x87, 0x34, 0x54, 0x0B, 0xDA, 
44522
  0x82, 0x00, 0x36, 0x54, 0x0C, 0xDA, 0x82, 0x04, 0x37, 0x54, 0x0A, 0xDA, 0x82, 0x01, 0x38, 0x54, 
44523
  0x0D, 0xDA, 0x82, 0x05, 0x38, 0x54, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x56, 
44524
  0x3B, 0x54, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x55, 0x3E, 0x54, 0x10, 0xDA, 
44525
  0x1E, 0x4D, 0x52, 0x0E, 0xDA, 0x80, 0x87, 0x58, 0x80, 0x82, 0x0C, 0xDA, 0x82, 0x00, 0x5A, 0x80, 
44526
  0x82, 0x0D, 0xDA, 0x82, 0x04, 0x5C, 0x80, 0x82, 0x0E, 0xDA, 0x82, 0x08, 0x5D, 0x80, 0x82, 0x0B, 
44527
  0xDA, 0x82, 0x01, 0x5E, 0x80, 0x82, 0x0F, 0xDA, 0x82, 0x05, 0x5F, 0x80, 0x82, 0x10, 0xDA, 0x82, 
44528
  0x09, 0x5F, 0x80, 0x82, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x58, 0x62, 0x80, 
44529
  0x82, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x57, 0x65, 0x80, 0x82, 0x13, 0xDA, 
44530
  0x1E, 0x7B, 0x80, 0x80, 0x11, 0xDA, 0x80, 0x87, 0x80, 0x86, 0x80, 0xB2, 0x0C, 0xDA, 0x82, 0x0C, 
44531
  0x80, 0x8A, 0x80, 0xB2, 0x0D, 0xDA, 0x82, 0x0D, 0x80, 0x8B, 0x80, 0xB2, 0x0B, 0xDA, 0x82, 0x0E, 
44532
  0x80, 0x8B, 0x80, 0xB2, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x5A, 0x80, 0x8E, 
44533
  0x80, 0xB2, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x59, 0x80, 0x91, 0x80, 0xB2, 
44534
  0x10, 0xDA, 0x1E, 0x80, 0x92, 0x80, 0xA6, 0x0E, 0xDA, 0x43, 0x80, 0x92, 0x80, 0xA6, 0x07, 0xCF, 
44535
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x30, 0x80, 0x96, 0x80, 0xA4, 0x13, 0xDA, 0x82, 0x12, 
44536
  0x80, 0x98, 0x80, 0xA4, 0x14, 0xDA, 0x82, 0x13, 0x80, 0x9A, 0x80, 0xA4, 0x15, 0xDA, 0x82, 0x14, 
44537
  0x80, 0xAB, 0x80, 0xB0, 0x11, 0xDA, 0x80, 0x87, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 
44538
  0x3F, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x26, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x11, 0x00, 
44539
  0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 0x0C, 0x00, 
44540
  0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x08, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 0x00, 
44541
  0x1B, 0x0B, 0x08, 0x00, 0x1E, 0x08, 0x04, 0x00, 0x32, 0x05, 0x0B, 0x00, 0x2C, 0x0D, 0x00, 0x00, 
44542
  0x35, 0x0C, 0x0D, 0x00, 0x49, 0x09, 0x01, 0x09, 0x1C, 0xF5, 0xFF, 0xFF, 0x1C, 0x9D, 0x00, 0x00, 
44543
  0x26, 0x08, 0x07, 0x01, 0x1E, 0x08, 0x1A, 0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 
44544
  0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 
44545
  0x1F, 0x0C, 0x12, 0x00, 0x3A, 0x0B, 0x01, 0x0C, 0x1B, 0x0D, 0x0B, 0x00, 0x49, 0x09, 0x0A, 0x09, 
44546
  0x28, 0x0E, 0x00, 0x00, 0x25, 0x0B, 0x0E, 0x09, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x0B, 0x00, 0x00, 
44547
  0x3A, 0x0B, 0x0A, 0x09, 0x32, 0x0D, 0x0B, 0x00, 0x35, 0x0E, 0x00, 0x00, 0x1B, 0x0B, 0x0E, 0x00, 
44548
  0x1E, 0x0E, 0x04, 0x00, 0x32, 0x05, 0x0B, 0x00, 0x2C, 0x10, 0x00, 0x00, 0x35, 0x0F, 0x10, 0x00, 
44549
  0x49, 0x0C, 0x01, 0x0C, 0x1C, 0xEF, 0xFF, 0xFF, 0x1C, 0x82, 0x00, 0x00, 0x26, 0x09, 0x07, 0x02, 
44550
  0x1E, 0x09, 0x23, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 
44551
  0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 
44552
  0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x18, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 
44553
  0x1B, 0x10, 0x0E, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0A, 
44554
  0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x28, 0x11, 0x00, 0x00, 
44555
  0x25, 0x0E, 0x11, 0x0D, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x0E, 0x0B, 0x0A, 
44556
  0x3A, 0x11, 0x0C, 0x0D, 0x33, 0x10, 0x0E, 0x11, 0x35, 0x12, 0x00, 0x00, 0x1B, 0x0E, 0x12, 0x00, 
44557
  0x1E, 0x12, 0x04, 0x00, 0x32, 0x05, 0x0E, 0x00, 0x2C, 0x13, 0x00, 0x00, 0x35, 0x11, 0x13, 0x00, 
44558
  0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xE9, 0xFF, 0xFF, 0x1C, 0x5E, 0x00, 0x00, 0x26, 0x0A, 0x07, 0x03, 
44559
  0x1E, 0x0A, 0x2D, 0x00, 0x3D, 0x0B, 0x02, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x01, 
44560
  0x1B, 0x0D, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x02, 0x1B, 0x0E, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 
44561
  0x28, 0x0F, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x28, 0x12, 0x00, 0x00, 0x49, 0x11, 0x01, 0x12, 
44562
  0x1B, 0x12, 0x11, 0x00, 0x1F, 0x12, 0x1F, 0x00, 0x3A, 0x11, 0x01, 0x12, 0x1B, 0x13, 0x11, 0x00, 
44563
  0x49, 0x0B, 0x0C, 0x0B, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0B, 0x1E, 0x11, 0x02, 0x00, 
44564
  0x1C, 0x18, 0x00, 0x00, 0x49, 0x0F, 0x0D, 0x0F, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0F, 
44565
  0x1E, 0x11, 0x02, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x49, 0x10, 0x0E, 0x10, 0x28, 0x14, 0x00, 0x00, 
44566
  0x25, 0x11, 0x14, 0x10, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x3A, 0x11, 0x0C, 0x0B, 
44567
  0x3A, 0x14, 0x0D, 0x0F, 0x3A, 0x15, 0x0E, 0x10, 0x33, 0x13, 0x11, 0x14, 0x31, 0x15, 0x00, 0x00, 
44568
  0x35, 0x16, 0x00, 0x00, 0x1B, 0x11, 0x16, 0x00, 0x1E, 0x16, 0x04, 0x00, 0x32, 0x05, 0x11, 0x00, 
44569
  0x2C, 0x15, 0x00, 0x00, 0x35, 0x14, 0x15, 0x00, 0x49, 0x12, 0x01, 0x12, 0x1C, 0xE2, 0xFF, 0xFF, 
44570
  0x1C, 0x30, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 
44571
  0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0B, 0x0D, 0x00, 
44572
  0x1B, 0x0D, 0x0B, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 
44573
  0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x23, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 
44574
  0x2B, 0x0E, 0x00, 0x00, 0x23, 0x11, 0x0E, 0x07, 0x1E, 0x11, 0x12, 0x00, 0x3A, 0x12, 0x0C, 0x0E, 
44575
  0x1B, 0x13, 0x12, 0x00, 0x3A, 0x12, 0x02, 0x0E, 0x1B, 0x14, 0x12, 0x00, 0x49, 0x12, 0x14, 0x13, 
44576
  0x1B, 0x15, 0x12, 0x00, 0x28, 0x16, 0x00, 0x00, 0x25, 0x12, 0x16, 0x15, 0x1E, 0x12, 0x04, 0x00, 
44577
  0x29, 0x0B, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0C, 0x0E, 0x15, 
44578
  0x3A, 0x16, 0x14, 0x15, 0x3C, 0x0D, 0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 
44579
  0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x0B, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x34, 0x0D, 0x00, 0x00, 
44580
  0x35, 0x0E, 0x00, 0x00, 0x1B, 0x11, 0x0E, 0x00, 0x1E, 0x0E, 0x04, 0x00, 0x32, 0x05, 0x11, 0x00, 
44581
  0x2C, 0x13, 0x00, 0x00, 0x35, 0x12, 0x13, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xDE, 0xFF, 0xFF, 
44582
  0x03, 0x05, 0x00, 0x00, 0x84, 0x80, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44583
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44584
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44585
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44586
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44587
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44588
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44589
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44590
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44591
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44592
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44593
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44594
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44595
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44596
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44597
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44598
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44599
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44600
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44601
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44602
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44603
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44604
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF4, 0x01, 0xCF, 0x0B, 0x61, 0x72, 
44605
  0x72, 0x61, 0x79, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x88, 0x6B, 0xCF, 0x0B, 0x62, 0x75, 
44606
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xDA, 0x81, 0x5E, 0xCF, 0x08, 0x68, 0x61, 
44607
  0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 
44608
  0x02, 0x00, 0x04, 0x00, 0x03, 0xCE, 0x08, 0x68, 0x61, 0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0xDA, 
44609
  0x04, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x04, 0x01, 0xDA, 0x82, 0xAD, 0x00, 0x04, 0x02, 
44610
  0xDA, 0x8A, 0xE0, 0x3B, 0x03, 0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x4A, 0x04, 0x05, 0x03, 0x03, 
44611
  0x04, 0x00, 0x00, 0x85, 0x2E, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x03, 0x62, 0x6F, 
44612
  0x72, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0E, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
44613
  0x00, 0x13, 0xCE, 0x03, 0x62, 0x6F, 0x72, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 
44614
  0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 
44615
  0x02, 0x05, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x11, 0x03, 0x03, 0x04, 0x03, 
44616
  0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x11, 
44617
  0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 
44618
  0x03, 0x00, 0x00, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0xD8, 
44619
  0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0xDA, 0x88, 0x0F, 0xD7, 0x01, 
44620
  0xCD, 0x02, 0xFF, 0x00, 0x00, 0x21, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0D, 0x63, 0x01, 
44621
  0x04, 0x16, 0xCE, 0x11, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x2D, 
44622
  0x61, 0x6C, 0x69, 0x61, 0x73, 0xDA, 0x04, 0xDA, 0x83, 0x45, 0xDA, 0x86, 0x70, 0xDA, 0x82, 0xE9, 
44623
  0xDA, 0x29, 0xDA, 0x81, 0xF8, 0xDA, 0x81, 0x26, 0xCE, 0x14, 0x6E, 0x6F, 0x20, 0x66, 0x66, 0x69, 
44624
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0xDA, 0x86, 
44625
  0xA0, 0xDA, 0x81, 0xCA, 0xDA, 0x86, 0x9E, 0xDA, 0x86, 0x9F, 0xDA, 0x83, 0xBA, 0xDA, 0x86, 0x3D, 
44626
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x84, 0x28, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0xA2, 0xBF, 0xFF, 
44627
  0x00, 0x03, 0xDA, 0x86, 0x9B, 0x00, 0x63, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x63, 0x01, 0xDA, 0x86, 
44628
  0x73, 0x00, 0x63, 0x02, 0xDA, 0x88, 0x10, 0x00, 0x63, 0x03, 0xDA, 0x80, 0xC7, 0x00, 0x63, 0x04, 
44629
  0xDA, 0x88, 0x0F, 0x03, 0x63, 0x06, 0xCF, 0x0D, 0x72, 0x65, 0x61, 0x6C, 0x2D, 0x72, 0x65, 0x74, 
44630
  0x2D, 0x74, 0x79, 0x70, 0x65, 0x09, 0x63, 0x08, 0xCF, 0x04, 0x6D, 0x65, 0x74, 0x61, 0x11, 0x63, 
44631
  0x09, 0xCF, 0x09, 0x61, 0x72, 0x67, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0x16, 0x63, 0x0C, 0xCF, 
44632
  0x0B, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x1B, 0x63, 0x0E, 0xCF, 
44633
  0x09, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x21, 0x63, 0x0F, 0xCF, 0x12, 0x63, 
44634
  0x6F, 0x6D, 0x70, 0x75, 0x74, 0x65, 0x64, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x61, 0x72, 0x67, 
44635
  0x73, 0x26, 0x2D, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x54, 0x2F, 0x63, 0x13, 
44636
  0xCF, 0x04, 0x6C, 0x6C, 0x69, 0x62, 0x32, 0x63, 0x14, 0xDA, 0x86, 0xA6, 0x35, 0x63, 0x15, 0xCF, 
44637
  0x02, 0x6D, 0x73, 0x38, 0x63, 0x16, 0xDA, 0x86, 0xA5, 0x3B, 0x63, 0x17, 0xCF, 0x0A, 0x72, 0x61, 
44638
  0x77, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3D, 0x63, 0x19, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 
44639
  0x65, 0x2D, 0x73, 0x69, 0x67, 0x3F, 0x63, 0x1B, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x70, 
44640
  0x74, 0x72, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 
44641
  0x05, 0x00, 0x2B, 0x07, 0x00, 0x00, 0x2B, 0x08, 0xFE, 0xFF, 0x33, 0x03, 0x07, 0x08, 0x2C, 0x08, 
44642
  0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x0A, 
44643
  0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2B, 0x0A, 0x02, 0x00, 0x32, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 
44644
  0x03, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x09, 0x0A, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x32, 0x0B, 
44645
  0x09, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2B, 0x0D, 
44646
  0x01, 0x00, 0x32, 0x0D, 0x09, 0x00, 0x2C, 0x0E, 0x04, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 
44647
  0x0D, 0x00, 0x34, 0x0E, 0x00, 0x00, 0x46, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x11, 
44648
  0x00, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x2D, 0x11, 0x00, 0x00, 0x31, 0x11, 
44649
  0x00, 0x00, 0x2C, 0x12, 0x05, 0x00, 0x35, 0x11, 0x12, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x1E, 0x12, 
44650
  0x03, 0x00, 0x1B, 0x11, 0x12, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x13, 0x06, 0x00, 0x01, 0x13, 
44651
  0x00, 0x00, 0x28, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x07, 0x00, 0x3A, 0x12, 0x11, 0x13, 0x1B, 0x13, 
44652
  0x12, 0x00, 0x2C, 0x14, 0x08, 0x00, 0x3A, 0x12, 0x11, 0x14, 0x1B, 0x14, 0x12, 0x00, 0x2C, 0x15, 
44653
  0x09, 0x00, 0x3A, 0x12, 0x11, 0x15, 0x1B, 0x15, 0x12, 0x00, 0x2C, 0x16, 0x0A, 0x00, 0x3A, 0x12, 
44654
  0x11, 0x16, 0x1B, 0x16, 0x12, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x12, 0x15, 0x00, 0x1B, 0x17, 
44655
  0x12, 0x00, 0x30, 0x18, 0x00, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x30, 0x1A, 0x01, 0x00, 0x1B, 0x1B, 
44656
  0x1A, 0x00, 0x1E, 0x16, 0x15, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x46, 0x1C, 0x00, 0x00, 0x30, 0x1D, 
44657
  0x02, 0x00, 0x35, 0x1E, 0x1D, 0x00, 0x31, 0x1E, 0x00, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x30, 0x1E, 
44658
  0x03, 0x00, 0x35, 0x1F, 0x1E, 0x00, 0x31, 0x1F, 0x00, 0x00, 0x45, 0x1E, 0x00, 0x00, 0x2C, 0x20, 
44659
  0x0B, 0x00, 0x33, 0x20, 0x1D, 0x1E, 0x34, 0x0C, 0x00, 0x00, 0x45, 0x1F, 0x00, 0x00, 0x2C, 0x1E, 
44660
  0x0C, 0x00, 0x32, 0x1E, 0x01, 0x00, 0x34, 0x08, 0x00, 0x00, 0x32, 0x1C, 0x1F, 0x00, 0x45, 0x1D, 
44661
  0x00, 0x00, 0x03, 0x1D, 0x00, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x46, 0x1C, 0x00, 0x00, 0x35, 0x1D, 
44662
  0x1B, 0x00, 0x35, 0x1E, 0x19, 0x00, 0x2C, 0x20, 0x0B, 0x00, 0x33, 0x20, 0x1D, 0x1E, 0x34, 0x0C, 
44663
  0x00, 0x00, 0x45, 0x1F, 0x00, 0x00, 0x2C, 0x1E, 0x0C, 0x00, 0x32, 0x1E, 0x01, 0x00, 0x34, 0x08, 
44664
  0x00, 0x00, 0x32, 0x1C, 0x1F, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x03, 0x1D, 0x00, 0x00, 0xBF, 0xFF, 
44665
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x07, 0x01, 0x12, 0xCE, 0x08, 0x6D, 
44666
  0x61, 0x6B, 0x65, 0x2D, 0x73, 0x69, 0x67, 0xDA, 0x04, 0xD0, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 
44667
  0x6C, 0x74, 0xD8, 0x0D, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 
44668
  0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x73, 0xBF, 
44669
  0xFF, 0x00, 0x02, 0xDA, 0x88, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xC7, 0xBF, 0xFF, 0x00, 
44670
  0x04, 0xDA, 0x88, 0x0F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xEB, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
44671
  0x8A, 0xEC, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xED, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8A, 0xEE, 
44672
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xEF, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8A, 0xF0, 0xBF, 0xFF, 
44673
  0x00, 0x12, 0xDA, 0x8A, 0xF1, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 0xF2, 0xBF, 0xFF, 0x00, 0x14, 
44674
  0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8A, 0xF3, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x86, 
44675
  0xA5, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8A, 0xF4, 0x00, 0x07, 0x00, 0xDA, 0x8A, 0xF5, 0x2C, 0x01, 
44676
  0x00, 0x00, 0x2D, 0x02, 0x00, 0x06, 0x32, 0x01, 0x02, 0x00, 0x2D, 0x01, 0x00, 0x0F, 0x34, 0x01, 
44677
  0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x97, 0x07, 0x00, 
44678
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
44679
  0x04, 0x00, 0x00, 0x00, 0x03, 0x13, 0x01, 0x14, 0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x70, 
44680
  0x74, 0x72, 0xDA, 0x04, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
44681
  0xCE, 0x1C, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 0x6E, 0x64, 
44682
  0x20, 0x66, 0x66, 0x69, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x25, 0x76, 0xDA, 0x81, 
44683
  0x49, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x73, 0xBF, 
44684
  0xFF, 0x00, 0x02, 0xDA, 0x88, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xC7, 0xBF, 0xFF, 0x00, 
44685
  0x04, 0xDA, 0x88, 0x0F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xEB, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
44686
  0x8A, 0xEC, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xED, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8A, 0xEE, 
44687
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xEF, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8A, 0xF0, 0xBF, 0xFF, 
44688
  0x00, 0x12, 0xDA, 0x8A, 0xF1, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 0xF2, 0xBF, 0xFF, 0x00, 0x14, 
44689
  0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8A, 0xF3, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x86, 
44690
  0xA5, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8A, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8A, 0xF5, 0x00, 
44691
  0x13, 0x00, 0xDA, 0x8A, 0xF6, 0x0B, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
44692
  0x55, 0x2D, 0x02, 0x00, 0x16, 0x1E, 0x02, 0x05, 0x00, 0x2D, 0x03, 0x00, 0x13, 0x35, 0x02, 0x03, 
44693
  0x00, 0x1B, 0x01, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x14, 0x2D, 0x02, 0x00, 
44694
  0x17, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x01, 0x02, 
44695
  0x00, 0x1E, 0x01, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x2D, 0x03, 0x00, 
44696
  0x17, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 
44697
  0x99, 0x1C, 0x00, 0x1C, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x10, 
44698
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44699
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x02, 0xF6, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 
44700
  0x04, 0x01, 0x01, 0x15, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 
44701
  0x01, 0xDA, 0x86, 0x73, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x10, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
44702
  0x80, 0xC7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x0F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xEB, 
44703
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8A, 0xEC, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xED, 0xBF, 0xFF, 
44704
  0x00, 0x0C, 0xDA, 0x8A, 0xEE, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xEF, 0xBF, 0xFF, 0x00, 0x0F, 
44705
  0xDA, 0x8A, 0xF0, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8A, 0xF1, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 
44706
  0xF2, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8A, 0xF3, 0xBF, 
44707
  0xFF, 0x00, 0x16, 0xDA, 0x86, 0xA5, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8A, 0xF4, 0xBF, 0xFF, 0x00, 
44708
  0x19, 0xDA, 0x8A, 0xF5, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x8A, 0xF6, 0x00, 0x04, 0x00, 0xCF, 0x07, 
44709
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x56, 0x01, 0x04, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
44710
  0x30, 0x36, 0x57, 0x28, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x03, 
44711
  0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0B, 
44712
  0x02, 0x15, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 
44713
  0x86, 0x73, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x88, 0x10, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x80, 0xC7, 
44714
  0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x88, 0x0F, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x8A, 0xEB, 0xBF, 0xFF, 
44715
  0x01, 0x08, 0xDA, 0x8A, 0xEC, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x8A, 0xED, 0xBF, 0xFF, 0x01, 0x0C, 
44716
  0xDA, 0x8A, 0xEE, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x8A, 0xEF, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x8A, 
44717
  0xF0, 0xBF, 0xFF, 0x01, 0x12, 0xDA, 0x8A, 0xF1, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x8A, 0xF2, 0xBF, 
44718
  0xFF, 0x01, 0x14, 0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x8A, 0xF3, 0xBF, 0xFF, 0x01, 
44719
  0x16, 0xDA, 0x86, 0xA5, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x8A, 0xF4, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 
44720
  0x8A, 0xF5, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x8A, 0xF6, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8A, 0xFE, 
44721
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8A, 0xFF, 0x2D, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x03, 0x00, 0x2D, 
44722
  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x01, 0x2D, 
44723
  0x01, 0x01, 0x1B, 0x35, 0x00, 0x01, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 
44724
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0x9C, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 
44725
  0x17, 0x00, 0x17, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x17, 0x00, 0x17, 0x8F, 0x9C, 0x17, 
44726
  0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x03, 0x00, 0x00, 0x00, 0xCD, 0x02, 0xF6, 0x00, 0x00, 0x03, 
44727
  0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01, 0x15, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
44728
  0x86, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x73, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x10, 0xBF, 
44729
  0xFF, 0x00, 0x03, 0xDA, 0x80, 0xC7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x0F, 0xBF, 0xFF, 0x00, 
44730
  0x06, 0xDA, 0x8A, 0xEB, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8A, 0xEC, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
44731
  0x8A, 0xED, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8A, 0xEE, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xEF, 
44732
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8A, 0xF0, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8A, 0xF1, 0xBF, 0xFF, 
44733
  0x00, 0x13, 0xDA, 0x8A, 0xF2, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x00, 0x15, 
44734
  0xDA, 0x8A, 0xF3, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x86, 0xA5, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8A, 
44735
  0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8A, 0xF5, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x8A, 0xF6, 0x00, 
44736
  0x04, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x58, 0x01, 0x04, 0x01, 0xCF, 0x07, 
44737
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x59, 0x28, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x30, 
44738
  0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 
44739
  0x00, 0x00, 0x00, 0x0B, 0x02, 0x15, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x86, 0xBF, 
44740
  0xFF, 0x01, 0x01, 0xDA, 0x86, 0x73, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x88, 0x10, 0xBF, 0xFF, 0x01, 
44741
  0x03, 0xDA, 0x80, 0xC7, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x88, 0x0F, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 
44742
  0x8A, 0xEB, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x8A, 0xEC, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x8A, 0xED, 
44743
  0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x8A, 0xEE, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x8A, 0xEF, 0xBF, 0xFF, 
44744
  0x01, 0x0F, 0xDA, 0x8A, 0xF0, 0xBF, 0xFF, 0x01, 0x12, 0xDA, 0x8A, 0xF1, 0xBF, 0xFF, 0x01, 0x13, 
44745
  0xDA, 0x8A, 0xF2, 0xBF, 0xFF, 0x01, 0x14, 0xDA, 0x86, 0xA6, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x8A, 
44746
  0xF3, 0xBF, 0xFF, 0x01, 0x16, 0xDA, 0x86, 0xA5, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x8A, 0xF4, 0xBF, 
44747
  0xFF, 0x01, 0x19, 0xDA, 0x8A, 0xF5, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x8A, 0xF6, 0xBF, 0xFF, 0x00, 
44748
  0x00, 0xDA, 0x8B, 0x00, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x01, 0x2D, 0x00, 0x00, 0x01, 0x1E, 
44749
  0x00, 0x03, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2F, 
44750
  0x00, 0x00, 0x01, 0x2D, 0x01, 0x01, 0x19, 0x35, 0x00, 0x01, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 
44751
  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0x9C, 0x2D, 0x00, 0x2D, 0x00, 
44752
  0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2D, 0x00, 
44753
  0x2D, 0x8F, 0x9C, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x00, 0x8F, 0x8B, 
44754
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
44755
  0x0F, 0x00, 0x05, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
44756
  0x14, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x14, 0x00, 
44757
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x23, 0x00, 0x23, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
44758
  0x1D, 0x00, 0x05, 0x04, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
44759
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 
44760
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44761
  0x00, 0x05, 0x04, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 
44762
  0x02, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x17, 0x00, 0x17, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x01, 
44763
  0x2D, 0x00, 0x2D, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44764
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x00, 0x07, 
44765
  0x01, 0x16, 0x00, 0x22, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
44766
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x40, 0x80, 0xD8, 0x0A, 0x00, 0x00, 0x00, 
44767
  0x00, 0xDB, 0x03, 0xDA, 0x85, 0xF0, 0xDA, 0x85, 0xD5, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x64, 0x61, 
44768
  0x74, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x64, 0x61, 0x74, 0x65, 0xCF, 0x0B, 0x62, 0x75, 0x66, 
44769
  0x66, 0x65, 0x72, 0x2F, 0x62, 0x6C, 0x69, 0x74, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
44770
  0x2F, 0x62, 0x6C, 0x69, 0x74, 0xCF, 0x0B, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 
44771
  0x63, 0x65, 0xDA, 0x2C, 0xCF, 0x08, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xD7, 0x00, 
44772
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0x00, 
44773
  0x03, 0xCE, 0x08, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xDA, 0x04, 0x00, 0x02, 0x00, 
44774
  0xDA, 0x31, 0x00, 0x02, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x02, 0x02, 0xDA, 0x8B, 0x07, 0x34, 0x01, 
44775
  0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3A, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x61, 0x70, 0x70, 0x6C, 
44776
  0x79, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x03, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
44777
  0x00, 0x0C, 0xCE, 0x05, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x3F, 0x02, 0x01, 0x00, 0x26, 0x03, 0x02, 
44778
  0x00, 0x1D, 0x03, 0x09, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3A, 0x05, 0x01, 0x04, 0x05, 0x04, 0x04, 
44779
  0x01, 0x25, 0x03, 0x04, 0x02, 0x1D, 0x03, 0x03, 0x00, 0x31, 0x05, 0x00, 0x00, 0x1C, 0xFB, 0xFF, 
44780
  0xFF, 0x34, 0x05, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xDA, 0x85, 0xB9, 0xDA, 0x85, 0xB7, 0xCF, 
44781
  0x0A, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
44782
  0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x68, 0x61, 0x73, 0x2D, 
44783
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x3F, 0xDA, 0x04, 0xDA, 0x88, 0xB2, 0x00, 0x06, 0x00, 0xDA, 0x82, 
44784
  0x62, 0x00, 0x06, 0x01, 0xDA, 0x83, 0xC9, 0x00, 0x06, 0x02, 0xDA, 0x8B, 0x0D, 0x32, 0x01, 0x00, 
44785
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x4A, 0x04, 0x05, 
44786
  0x03, 0x03, 0x04, 0x00, 0x00, 0x85, 0x33, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 
44787
  0x00, 0x03, 0xDA, 0x85, 0x4D, 0xDA, 0x85, 0x1F, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
44788
  0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0xD8, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 0x65, 
44789
  0x6D, 0x6F, 0x76, 0x65, 0xCF, 0x04, 0x70, 0x72, 0x69, 0x6E, 0xD8, 0x04, 0x70, 0x72, 0x69, 0x6E, 
44790
  0xDA, 0x85, 0x3F, 0xDA, 0x85, 0x3B, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 
44791
  0x72, 0x72, 0x6F, 0x72, 0xDA, 0x0F, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
44792
  0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 
44793
  0x75, 0x69, 0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x0A, 0x62, 0x75, 0x66, 0x66, 
44794
  0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 0x81, 0x58, 0xCF, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 
44795
  0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0xD8, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x6A, 0x6F, 0x69, 
44796
  0x6E, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 
44797
  0x3D, 0xDA, 0x86, 0x40, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 
44798
  0xFF, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x03, 0xCE, 0x09, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 
44799
  0x6F, 0x2D, 0xDA, 0x04, 0xDA, 0x59, 0xDA, 0x85, 0xE6, 0xDA, 0x86, 0x7E, 0x00, 0x06, 0x00, 0xDA, 
44800
  0x81, 0x86, 0x00, 0x06, 0x01, 0xDA, 0x86, 0x74, 0x00, 0x06, 0x02, 0xDA, 0x86, 0x40, 0x2C, 0x03, 
44801
  0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x00, 0x03, 0x04, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x03, 
44802
  0x02, 0x00, 0x36, 0x03, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
44803
  0x00, 0x03, 0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 0x72, 0x73, 0xD7, 0x00, 0xCD, 
44804
  0x00, 0xDD, 0x00, 0x00, 0x12, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x11, 0x80, 0x82, 0x00, 
44805
  0x1B, 0xCE, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 0x72, 0x73, 0xDA, 0x04, 0xDA, 0x82, 
44806
  0x65, 0xCE, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x65, 0x76, 0x65, 0x6E, 
44807
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
44808
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x72, 0x73, 0xDA, 0x5C, 0xDA, 0x30, 0xDA, 
44809
  0x80, 0xAB, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xAE, 0xD0, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 
44810
  0x61, 0x72, 0x73, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDB, 0xDA, 0x83, 0x42, 0xDA, 0x80, 0xDE, 0xDA, 
44811
  0x88, 0x1C, 0xDA, 0x80, 0xDF, 0xDA, 0x87, 0xC9, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 0x80, 
44812
  0x82, 0x00, 0xCF, 0x04, 0x76, 0x61, 0x72, 0x73, 0x00, 0x80, 0x82, 0x01, 0xDA, 0x80, 0xC7, 0x00, 
44813
  0x80, 0x82, 0x02, 0xDA, 0x8B, 0x1D, 0x01, 0x80, 0x82, 0x04, 0xDA, 0x37, 0x0A, 0x16, 0x06, 0xCF, 
44814
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x79, 0x0B, 0x16, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44815
  0x30, 0x30, 0x32, 0x7A, 0x0B, 0x16, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x41, 
44816
  0x0E, 0x16, 0x08, 0xDA, 0x43, 0x15, 0x80, 0x82, 0x06, 0xCF, 0x04, 0x74, 0x65, 0x6D, 0x70, 0x17, 
44817
  0x29, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x42, 0x18, 0x29, 0x05, 0xCF, 0x07, 
44818
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x43, 0x18, 0x29, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
44819
  0x30, 0x32, 0x44, 0x1B, 0x29, 0x09, 0xDA, 0x43, 0x28, 0x80, 0x82, 0x07, 0xCF, 0x07, 0x73, 0x61, 
44820
  0x76, 0x65, 0x6F, 0x6C, 0x64, 0x2A, 0x3C, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 
44821
  0x45, 0x2B, 0x3C, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x46, 0x2B, 0x3C, 0x04, 
44822
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x47, 0x2E, 0x3C, 0x0A, 0xDA, 0x43, 0x3B, 0x80, 
44823
  0x82, 0x08, 0xCF, 0x06, 0x73, 0x65, 0x74, 0x6E, 0x65, 0x77, 0x3D, 0x4F, 0x09, 0xCF, 0x07, 0x5F, 
44824
  0x30, 0x30, 0x30, 0x30, 0x32, 0x48, 0x3E, 0x4F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44825
  0x32, 0x49, 0x3E, 0x4F, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4A, 0x41, 0x4F, 
44826
  0x0B, 0xDA, 0x43, 0x4E, 0x80, 0x82, 0x09, 0xCF, 0x0A, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x65, 
44827
  0x6F, 0x6C, 0x64, 0x51, 0x80, 0x82, 0x0A, 0xDA, 0x39, 0x54, 0x80, 0x82, 0x0B, 0xDA, 0x31, 0x57, 
44828
  0x80, 0x82, 0x0C, 0xDA, 0x81, 0x2A, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 
44829
  0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x02, 0x00, 0x1C, 0x03, 
44830
  0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 
44831
  0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x07, 0x05, 0x04, 0x1E, 0x07, 0x09, 0x00, 0x1B, 0x08, 
44832
  0x05, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x32, 0x06, 0x09, 0x00, 0x2C, 0x0B, 
44833
  0x03, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF7, 0xFF, 0xFF, 0x40, 0x05, 
44834
  0x00, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x08, 0x05, 0x04, 0x1E, 0x08, 
44835
  0x0F, 0x00, 0x1B, 0x09, 0x05, 0x00, 0x0B, 0x0A, 0x09, 0x02, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0B, 
44836
  0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 
44837
  0x0B, 0x0A, 0x45, 0x0A, 0x00, 0x00, 0x32, 0x07, 0x0A, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 
44838
  0x0C, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x08, 
44839
  0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x09, 0x05, 0x04, 0x1E, 0x09, 0x0F, 0x00, 0x1B, 0x0A, 
44840
  0x05, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0B, 0x00, 0x00, 0x05, 0x0C, 0x0A, 0x01, 0x31, 0x0C, 
44841
  0x00, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x0C, 0x0B, 0x0D, 0x45, 0x0B, 
44842
  0x00, 0x00, 0x32, 0x08, 0x0B, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x05, 0x05, 
44843
  0x05, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x09, 0x05, 0x00, 0x2B, 0x05, 
44844
  0x00, 0x00, 0x23, 0x0A, 0x05, 0x04, 0x1E, 0x0A, 0x0F, 0x00, 0x1B, 0x0B, 0x05, 0x00, 0x31, 0x0B, 
44845
  0x00, 0x00, 0x35, 0x0C, 0x00, 0x00, 0x0B, 0x0D, 0x0B, 0x02, 0x31, 0x0D, 0x00, 0x00, 0x35, 0x0E, 
44846
  0x06, 0x00, 0x2C, 0x0D, 0x05, 0x00, 0x33, 0x0D, 0x0C, 0x0E, 0x45, 0x0C, 0x00, 0x00, 0x32, 0x09, 
44847
  0x0C, 0x00, 0x2C, 0x0E, 0x03, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF1, 
44848
  0xFF, 0xFF, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x05, 0x0A, 0x00, 0x1B, 0x0A, 0x05, 0x00, 0x2C, 0x0B, 
44849
  0x02, 0x00, 0x35, 0x05, 0x0B, 0x00, 0x1B, 0x0B, 0x05, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x35, 0x05, 
44850
  0x0C, 0x00, 0x1B, 0x0C, 0x05, 0x00, 0x46, 0x05, 0x00, 0x00, 0x2C, 0x0E, 0x06, 0x00, 0x2C, 0x0F, 
44851
  0x07, 0x00, 0x33, 0x0E, 0x0F, 0x05, 0x34, 0x08, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x0D, 
44852
  0x00, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x2C, 0x0F, 0x09, 0x00, 0x33, 0x0E, 0x0D, 0x0F, 0x45, 0x05, 
44853
  0x00, 0x00, 0x2C, 0x0E, 0x04, 0x00, 0x33, 0x0E, 0x0B, 0x05, 0x45, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 
44854
  0x0A, 0x00, 0x32, 0x0E, 0x0B, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x33, 0x0F, 
44855
  0x0A, 0x05, 0x45, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x0B, 0x00, 0x32, 0x0F, 0x0B, 0x00, 0x45, 0x05, 
44856
  0x00, 0x00, 0x2C, 0x10, 0x0C, 0x00, 0x2C, 0x11, 0x0D, 0x00, 0x33, 0x10, 0x05, 0x11, 0x45, 0x0F, 
44857
  0x00, 0x00, 0x2C, 0x10, 0x0E, 0x00, 0x33, 0x10, 0x0A, 0x0B, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x11, 
44858
  0x0F, 0x00, 0x33, 0x11, 0x0F, 0x0A, 0x31, 0x05, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x0F, 
44859
  0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x07, 0x00, 0x00, 0x32, 0x0D, 0x0E, 0x00, 0x34, 0x09, 
44860
  0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x85, 0xF3, 
44861
  0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x17, 0x00, 
44862
  0x17, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x27, 0x00, 
44863
  0x27, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x10, 0x00, 0x10, 0x00, 
44864
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3F, 0x00, 
44865
  0x3F, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
44866
  0x10, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x2F, 0x00, 
44867
  0x2F, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x38, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x0F, 0x00, 
44868
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
44869
  0x13, 0x00, 0x13, 0x00, 0x33, 0x00, 0x33, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x2D, 0x00, 
44870
  0x2D, 0x00, 0x2D, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x03, 0x00, 
44871
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
44872
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
44873
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
44874
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
44875
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
44876
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
44877
  0x05, 0x00, 0x05, 0xCF, 0x07, 0x70, 0x72, 0x65, 0x77, 0x61, 0x6C, 0x6B, 0xD7, 0x00, 0xCD, 0x02, 
44878
  0xFE, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x07, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x70, 0x72, 
44879
  0x65, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x04, 0xDA, 0x5F, 0x00, 0x07, 0x00, 0xDA, 0x31, 0x00, 0x07, 
44880
  0x01, 0xDA, 0x64, 0x00, 0x07, 0x02, 0xDA, 0x8B, 0x33, 0x2E, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 
44881
  0x00, 0x31, 0x01, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x00, 
44882
  0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x04, 
44883
  0x01, 0x04, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x64, 
44884
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x33, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2D, 0x01, 0x00, 0x00, 
44885
  0x32, 0x01, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x02, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xC4, 
44886
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x85, 0xC1, 0x01, 0x03, 0x09, 0x00, 0x20, 0x00, 0x20, 
44887
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0xCF, 0x05, 0x6D, 0x61, 0x74, 0x63, 
44888
  0x68, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x2D, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
44889
  0x17, 0x81, 0x0D, 0x00, 0x06, 0x2F, 0xCE, 0x05, 0x6D, 0x61, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 
44890
  0x83, 0x29, 0xDA, 0x82, 0xE9, 0xDA, 0x86, 0x70, 0xDA, 0x29, 0xDA, 0x82, 0x4C, 0xDA, 0x5C, 0xDA, 
44891
  0x80, 0xAB, 0xDA, 0x30, 0xDA, 0x83, 0x19, 0xCF, 0x03, 0x61, 0x6E, 0x64, 0xDA, 0x87, 0xAA, 0xDA, 
44892
  0x80, 0xF2, 0xDA, 0x82, 0xB1, 0xDA, 0x83, 0x21, 0xDA, 0x87, 0x68, 0xDA, 0x81, 0x5A, 0xDA, 0x80, 
44893
  0xB3, 0xDA, 0x2C, 0xDA, 0x83, 0xD9, 0xD0, 0x06, 0x62, 0x72, 0x61, 0x6E, 0x63, 0x68, 0xDA, 0x88, 
44894
  0x7D, 0xDA, 0x82, 0x81, 0xDA, 0x8B, 0x11, 0x00, 0x81, 0x0D, 0x00, 0xDA, 0x1E, 0x00, 0x81, 0x0D, 
44895
  0x01, 0xCF, 0x05, 0x63, 0x61, 0x73, 0x65, 0x73, 0x00, 0x81, 0x0D, 0x02, 0xDA, 0x8B, 0x36, 0x04, 
44896
  0x81, 0x0D, 0x03, 0xCF, 0x06, 0x6F, 0x64, 0x64, 0x6C, 0x65, 0x6E, 0x0C, 0x81, 0x0D, 0x06, 0xCF, 
44897
  0x04, 0x65, 0x6C, 0x73, 0x65, 0x1A, 0x81, 0x0D, 0x07, 0xCF, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 
44898
  0x72, 0x6E, 0x73, 0x24, 0x81, 0x0D, 0x0A, 0xCF, 0x05, 0x78, 0x2D, 0x73, 0x79, 0x6D, 0x26, 0x81, 
44899
  0x0D, 0x0C, 0xDA, 0x83, 0xC0, 0x32, 0x81, 0x0D, 0x0E, 0xCF, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
44900
  0x6C, 0x73, 0x34, 0x81, 0x0D, 0x10, 0xCF, 0x0E, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 
44901
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x36, 0x81, 0x0D, 0x12, 0xCF, 0x04, 0x65, 0x6D, 0x69, 0x74, 
44902
  0x38, 0x81, 0x0D, 0x14, 0xCF, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x62, 0x72, 0x61, 0x6E, 0x63, 
44903
  0x68, 0x3A, 0x81, 0x0D, 0x16, 0xCF, 0x07, 0x67, 0x65, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0x3C, 0x81, 
44904
  0x0D, 0x18, 0xCF, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 
44905
  0x79, 0x6D, 0x3E, 0x81, 0x0D, 0x1A, 0xCF, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 0x2D, 0x70, 0x61, 
44906
  0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x31, 0x40, 0x81, 0x0D, 0x1C, 0xCF, 0x0F, 0x76, 0x69, 0x73, 
44907
  0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x32, 0x40, 0x80, 0xC4, 0x07, 
44908
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x32, 0x43, 0x80, 0xC4, 0x1E, 0xCF, 0x07, 0x5F, 
44909
  0x30, 0x30, 0x30, 0x30, 0x34, 0x31, 0x47, 0x80, 0xC4, 0x20, 0xDA, 0x88, 0xE6, 0x49, 0x80, 0xC4, 
44910
  0x21, 0xCF, 0x0A, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x4B, 0x80, 0xC4, 
44911
  0x1F, 0xCF, 0x03, 0x62, 0x32, 0x67, 0x4D, 0x80, 0xC4, 0x22, 0xCF, 0x03, 0x67, 0x75, 0x6E, 0x4F, 
44912
  0x80, 0xC4, 0x23, 0xCF, 0x05, 0x70, 0x72, 0x65, 0x64, 0x73, 0x58, 0x80, 0xC4, 0x24, 0xCF, 0x04, 
44913
  0x61, 0x6E, 0x64, 0x61, 0x5F, 0x80, 0xC4, 0x25, 0xCF, 0x05, 0x75, 0x6E, 0x69, 0x66, 0x79, 0x5F, 
44914
  0x73, 0x1F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x34, 0x62, 0x73, 0x26, 0xCF, 0x07, 
44915
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x33, 0x65, 0x73, 0x27, 0xCF, 0x04, 0x73, 0x79, 0x6D, 0x73, 
44916
  0x72, 0x80, 0x83, 0x22, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x36, 0x75, 0x80, 0x83, 
44917
  0x26, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x35, 0x78, 0x80, 0x83, 0x27, 0xDA, 0x82, 
44918
  0x5E, 0x79, 0x80, 0x83, 0x28, 0xDA, 0x8B, 0x52, 0x80, 0x8A, 0x80, 0xA6, 0x26, 0xCF, 0x07, 0x5F, 
44919
  0x30, 0x30, 0x30, 0x30, 0x34, 0x37, 0x80, 0x91, 0x80, 0xA6, 0x1D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44920
  0x30, 0x30, 0x34, 0x39, 0x80, 0x94, 0x80, 0xA6, 0x28, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44921
  0x34, 0x38, 0x80, 0x98, 0x80, 0xA6, 0x2A, 0xDA, 0x3A, 0x80, 0x9A, 0x80, 0xA6, 0x2B, 0xDA, 0x46, 
44922
  0x80, 0xA5, 0x80, 0xC4, 0x26, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x73, 0x80, 0xB4, 0x80, 0xB8, 0x27, 
44923
  0xCF, 0x09, 0x70, 0x72, 0x65, 0x64, 0x2D, 0x6A, 0x6F, 0x69, 0x6E, 0x80, 0xC6, 0x81, 0x0D, 0x1E, 
44924
  0xDA, 0x84, 0x40, 0x80, 0xCA, 0x81, 0x05, 0x20, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
44925
  0x62, 0x80, 0xCD, 0x81, 0x05, 0x21, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x61, 0x80, 
44926
  0xD0, 0x81, 0x05, 0x22, 0xDA, 0x83, 0xC3, 0x80, 0xD7, 0x80, 0xFF, 0x24, 0xCF, 0x09, 0x63, 0x6F, 
44927
  0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x80, 0xDB, 0x80, 0xFF, 0x25, 0xCF, 0x06, 0x74, 0x72, 
44928
  0x75, 0x74, 0x68, 0x79, 0x80, 0xDD, 0x80, 0xF2, 0x26, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44929
  0x34, 0x63, 0x80, 0xF6, 0x80, 0xFF, 0x23, 0xCF, 0x07, 0x69, 0x66, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 
44930
  0x3F, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 
44931
  0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 
44932
  0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 
44933
  0x1B, 0x06, 0x05, 0x00, 0x1E, 0x03, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x2B, 0x09, 0xFE, 0xFF, 
44934
  0x33, 0x01, 0x08, 0x09, 0x2C, 0x09, 0x02, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 
44935
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x07, 0x01, 0x00, 0x2B, 0x08, 0x02, 0x00, 0x32, 0x08, 0x07, 0x00, 
44936
  0x2C, 0x09, 0x03, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x31, 0x00, 0x00, 0x00, 
44937
  0x2C, 0x0B, 0x04, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x09, 0x00, 0x00, 
44938
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 
44939
  0x1B, 0x0A, 0x09, 0x00, 0x40, 0x0B, 0x00, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x4A, 0x0D, 0x00, 0x0A, 
44940
  0x1E, 0x0D, 0x07, 0x00, 0x2C, 0x0E, 0x06, 0x00, 0x33, 0x0E, 0x0A, 0x00, 0x45, 0x0E, 0x00, 0x00, 
44941
  0x32, 0x0C, 0x0E, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x0D, 0x08, 0x00, 
44942
  0x32, 0x0D, 0x0A, 0x00, 0x44, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x44, 0x0F, 0x00, 0x00, 
44943
  0x1B, 0x10, 0x0F, 0x00, 0x30, 0x11, 0x00, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x30, 0x13, 0x01, 0x00, 
44944
  0x1B, 0x14, 0x13, 0x00, 0x30, 0x15, 0x02, 0x00, 0x1B, 0x16, 0x15, 0x00, 0x30, 0x17, 0x03, 0x00, 
44945
  0x1B, 0x18, 0x17, 0x00, 0x30, 0x19, 0x04, 0x00, 0x1B, 0x1A, 0x19, 0x00, 0x30, 0x1B, 0x05, 0x00, 
44946
  0x1B, 0x1C, 0x1B, 0x00, 0x28, 0x1E, 0x00, 0x00, 0x49, 0x1D, 0x07, 0x1E, 0x1B, 0x1E, 0x1D, 0x00, 
44947
  0x1F, 0x1E, 0x80, 0x00, 0x3A, 0x1D, 0x07, 0x1E, 0x3D, 0x1F, 0x1D, 0x00, 0x1B, 0x20, 0x1F, 0x00, 
44948
  0x3D, 0x1F, 0x1D, 0x01, 0x1B, 0x21, 0x1F, 0x00, 0x44, 0x1D, 0x00, 0x00, 0x1B, 0x1F, 0x1D, 0x00, 
44949
  0x44, 0x1D, 0x00, 0x00, 0x1B, 0x22, 0x1D, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x23, 0x1D, 0x00, 
44950
  0x28, 0x1D, 0x00, 0x00, 0x28, 0x24, 0x00, 0x00, 0x33, 0x1F, 0x1D, 0x24, 0x31, 0x20, 0x00, 0x00, 
44951
  0x35, 0x1D, 0x1A, 0x00, 0x2C, 0x1D, 0x09, 0x00, 0x31, 0x1D, 0x00, 0x00, 0x40, 0x1D, 0x00, 0x00, 
44952
  0x1B, 0x24, 0x1D, 0x00, 0x33, 0x24, 0x22, 0x23, 0x28, 0x1D, 0x00, 0x00, 0x28, 0x25, 0x00, 0x00, 
44953
  0x33, 0x1D, 0x25, 0x20, 0x35, 0x1D, 0x1C, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x25, 0x1D, 0x00, 
44954
  0x28, 0x26, 0x00, 0x00, 0x49, 0x1D, 0x1F, 0x26, 0x1B, 0x26, 0x1D, 0x00, 0x1F, 0x26, 0x10, 0x00, 
44955
  0x3A, 0x1D, 0x1F, 0x26, 0x1B, 0x27, 0x1D, 0x00, 0x3F, 0x1D, 0x27, 0x00, 0x2B, 0x29, 0x01, 0x00, 
44956
  0x23, 0x28, 0x29, 0x1D, 0x1E, 0x28, 0x08, 0x00, 0x2C, 0x1D, 0x0A, 0x00, 0x31, 0x1D, 0x00, 0x00, 
44957
  0x34, 0x27, 0x00, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x32, 0x25, 0x1D, 0x00, 0x2C, 0x2A, 0x07, 0x00, 
44958
  0x35, 0x29, 0x2A, 0x00, 0x49, 0x26, 0x1F, 0x26, 0x1C, 0xF1, 0xFF, 0xFF, 0x28, 0x26, 0x00, 0x00, 
44959
  0x49, 0x1D, 0x22, 0x26, 0x1B, 0x26, 0x1D, 0x00, 0x1F, 0x26, 0x0D, 0x00, 0x3A, 0x1D, 0x22, 0x26, 
44960
  0x1B, 0x27, 0x26, 0x00, 0x1B, 0x28, 0x1D, 0x00, 0x2C, 0x1D, 0x0A, 0x00, 0x32, 0x1D, 0x27, 0x00, 
44961
  0x34, 0x28, 0x00, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x32, 0x25, 0x1D, 0x00, 0x2C, 0x2A, 0x07, 0x00, 
44962
  0x35, 0x29, 0x2A, 0x00, 0x49, 0x26, 0x22, 0x26, 0x1C, 0xF4, 0xFF, 0xFF, 0x31, 0x25, 0x00, 0x00, 
44963
  0x2C, 0x26, 0x0B, 0x00, 0x35, 0x1D, 0x26, 0x00, 0x32, 0x24, 0x25, 0x00, 0x2C, 0x26, 0x0C, 0x00, 
44964
  0x35, 0x1D, 0x26, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x26, 0x1D, 0x00, 0x31, 0x1F, 0x00, 0x00, 
44965
  0x2C, 0x27, 0x0D, 0x00, 0x35, 0x1D, 0x27, 0x00, 0x31, 0x1D, 0x00, 0x00, 0x2C, 0x28, 0x0B, 0x00, 
44966
  0x35, 0x27, 0x28, 0x00, 0x1B, 0x1D, 0x27, 0x00, 0x28, 0x28, 0x00, 0x00, 0x49, 0x27, 0x1D, 0x28, 
44967
  0x1B, 0x28, 0x27, 0x00, 0x1F, 0x28, 0x11, 0x00, 0x3A, 0x27, 0x1D, 0x28, 0x3D, 0x29, 0x27, 0x00, 
44968
  0x1B, 0x2A, 0x29, 0x00, 0x3D, 0x29, 0x27, 0x01, 0x1B, 0x2B, 0x29, 0x00, 0x31, 0x2B, 0x00, 0x00, 
44969
  0x2C, 0x29, 0x0E, 0x00, 0x35, 0x27, 0x29, 0x00, 0x2C, 0x29, 0x06, 0x00, 0x33, 0x29, 0x2A, 0x27, 
44970
  0x45, 0x27, 0x00, 0x00, 0x32, 0x26, 0x27, 0x00, 0x2C, 0x2C, 0x07, 0x00, 0x35, 0x29, 0x2C, 0x00, 
44971
  0x49, 0x28, 0x1D, 0x28, 0x1C, 0xF0, 0xFF, 0xFF, 0x31, 0x23, 0x00, 0x00, 0x2C, 0x27, 0x0F, 0x00, 
44972
  0x35, 0x1D, 0x27, 0x00, 0x1E, 0x1D, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x2C, 0x28, 0x09, 0x00, 
44973
  0x31, 0x28, 0x00, 0x00, 0x34, 0x23, 0x00, 0x00, 0x45, 0x27, 0x00, 0x00, 0x2C, 0x29, 0x10, 0x00, 
44974
  0x31, 0x29, 0x00, 0x00, 0x34, 0x26, 0x00, 0x00, 0x31, 0x27, 0x00, 0x00, 0x45, 0x28, 0x00, 0x00, 
44975
  0x1B, 0x27, 0x28, 0x00, 0x32, 0x24, 0x27, 0x00, 0x2C, 0x29, 0x07, 0x00, 0x35, 0x28, 0x29, 0x00, 
44976
  0x31, 0x24, 0x00, 0x00, 0x2C, 0x27, 0x11, 0x00, 0x35, 0x1D, 0x27, 0x00, 0x2C, 0x27, 0x10, 0x00, 
44977
  0x31, 0x27, 0x00, 0x00, 0x34, 0x26, 0x00, 0x00, 0x31, 0x21, 0x00, 0x00, 0x45, 0x27, 0x00, 0x00, 
44978
  0x32, 0x1D, 0x27, 0x00, 0x35, 0x28, 0x14, 0x00, 0x49, 0x1E, 0x07, 0x1E, 0x1C, 0x81, 0xFF, 0xFF, 
44979
  0x31, 0x06, 0x00, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x1E, 0x1D, 0x00, 0x31, 0x0C, 0x00, 0x00, 
44980
  0x2C, 0x20, 0x12, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x1B, 0x20, 0x1F, 0x00, 0x28, 0x21, 0x00, 0x00, 
44981
  0x49, 0x1F, 0x20, 0x21, 0x1B, 0x21, 0x1F, 0x00, 0x1F, 0x21, 0x37, 0x00, 0x3A, 0x1F, 0x20, 0x21, 
44982
  0x1B, 0x22, 0x1F, 0x00, 0x2C, 0x23, 0x13, 0x00, 0x25, 0x1F, 0x23, 0x22, 0x1E, 0x1F, 0x2D, 0x00, 
44983
  0x31, 0x1E, 0x00, 0x00, 0x2C, 0x24, 0x14, 0x00, 0x35, 0x23, 0x24, 0x00, 0x1B, 0x24, 0x23, 0x00, 
44984
  0x31, 0x1E, 0x00, 0x00, 0x2C, 0x25, 0x14, 0x00, 0x35, 0x23, 0x25, 0x00, 0x1B, 0x25, 0x23, 0x00, 
44985
  0x3F, 0x23, 0x1E, 0x00, 0x1B, 0x26, 0x23, 0x00, 0x26, 0x27, 0x26, 0x00, 0x1E, 0x27, 0x03, 0x00, 
44986
  0x28, 0x23, 0x00, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x26, 0x29, 0x26, 0x01, 0x1E, 0x29, 0x06, 0x00, 
44987
  0x2B, 0x2A, 0x00, 0x00, 0x31, 0x2A, 0x00, 0x00, 0x35, 0x2A, 0x1E, 0x00, 0x1B, 0x28, 0x2A, 0x00, 
44988
  0x1C, 0x09, 0x00, 0x00, 0x31, 0x1E, 0x00, 0x00, 0x2C, 0x2B, 0x12, 0x00, 0x35, 0x2A, 0x2B, 0x00, 
44989
  0x2C, 0x2C, 0x10, 0x00, 0x31, 0x2C, 0x00, 0x00, 0x34, 0x2A, 0x00, 0x00, 0x45, 0x2B, 0x00, 0x00, 
44990
  0x1B, 0x28, 0x2B, 0x00, 0x1B, 0x23, 0x28, 0x00, 0x2C, 0x27, 0x15, 0x00, 0x33, 0x27, 0x24, 0x25, 
44991
  0x31, 0x23, 0x00, 0x00, 0x45, 0x26, 0x00, 0x00, 0x1B, 0x23, 0x26, 0x00, 0x3F, 0x26, 0x1E, 0x00, 
44992
  0x2B, 0x27, 0x00, 0x00, 0x33, 0x1E, 0x27, 0x26, 0x2C, 0x28, 0x16, 0x00, 0x35, 0x27, 0x28, 0x00, 
44993
  0x32, 0x1E, 0x23, 0x00, 0x2C, 0x27, 0x07, 0x00, 0x35, 0x26, 0x27, 0x00, 0x1C, 0x04, 0x00, 0x00, 
44994
  0x32, 0x1E, 0x22, 0x00, 0x2C, 0x24, 0x07, 0x00, 0x35, 0x23, 0x24, 0x00, 0x49, 0x21, 0x20, 0x21, 
44995
  0x1C, 0xCA, 0xFF, 0xFF, 0x31, 0x1E, 0x00, 0x00, 0x2C, 0x20, 0x12, 0x00, 0x35, 0x1F, 0x20, 0x00, 
44996
  0x2C, 0x21, 0x10, 0x00, 0x31, 0x21, 0x00, 0x00, 0x34, 0x1F, 0x00, 0x00, 0x45, 0x20, 0x00, 0x00, 
44997
  0x03, 0x20, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 
44998
  0x0C, 0xCE, 0x04, 0x65, 0x6D, 0x69, 0x74, 0xDA, 0x04, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
44999
  0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x3B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x36, 0xBF, 
45000
  0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x3C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x3D, 0xBF, 0xFF, 0x00, 
45001
  0x07, 0xDA, 0x8B, 0x3E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x3F, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
45002
  0x83, 0xC0, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x40, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x41, 
45003
  0x00, 0x04, 0x00, 0xDA, 0x1E, 0x00, 0x04, 0x01, 0xDA, 0x8B, 0x42, 0x2D, 0x02, 0x00, 0x0C, 0x32, 
45004
  0x02, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xA8, 0x12, 
45005
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 
45006
  0x06, 0x01, 0x0E, 0xCE, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x62, 0x72, 0x61, 0x6E, 0x63, 0x68, 
45007
  0xDA, 0x04, 0xDA, 0x8B, 0x3A, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 
45008
  0x01, 0xDA, 0x8B, 0x3B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x36, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
45009
  0x8B, 0x3C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x3D, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x3E, 
45010
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x3F, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC0, 0xBF, 0xFF, 
45011
  0x00, 0x0E, 0xDA, 0x8B, 0x40, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x41, 0xBF, 0xFF, 0x00, 0x12, 
45012
  0xDA, 0x8B, 0x42, 0x00, 0x06, 0x00, 0xDA, 0x8B, 0x5C, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x72, 0x65, 
45013
  0x73, 0x75, 0x6C, 0x74, 0x00, 0x06, 0x02, 0xDA, 0x8B, 0x43, 0x2D, 0x03, 0x00, 0x0C, 0x2C, 0x04, 
45014
  0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 
45015
  0x00, 0x00, 0xBF, 0xFF, 0x87, 0xA9, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 
45016
  0x28, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x03, 0x17, 0x01, 0x12, 0xCE, 0x07, 
45017
  0x67, 0x65, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x86, 0x7A, 0xDA, 0x80, 
45018
  0xAB, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x3B, 0xBF, 0xFF, 
45019
  0x00, 0x02, 0xDA, 0x8B, 0x36, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x3C, 0xBF, 0xFF, 0x00, 0x06, 
45020
  0xDA, 0x8B, 0x3D, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x3E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 
45021
  0x3F, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC0, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x40, 0xBF, 
45022
  0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x41, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8B, 0x42, 0xBF, 0xFF, 0x00, 
45023
  0x14, 0xDA, 0x8B, 0x43, 0x00, 0x17, 0x00, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x2D, 
45024
  0x73, 0x79, 0x6D, 0x00, 0x17, 0x01, 0xDA, 0x82, 0xAD, 0x00, 0x17, 0x02, 0xDA, 0x8B, 0x44, 0x02, 
45025
  0x17, 0x04, 0xCF, 0x0A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2D, 0x6B, 0x65, 0x79, 0x05, 0x17, 
45026
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x42, 0x0A, 0x17, 0x07, 0xDA, 0x81, 0x2A, 
45027
  0x32, 0x00, 0x01, 0x00, 0x45, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2D, 0x06, 0x00, 0x0E, 
45028
  0x3B, 0x05, 0x06, 0x04, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x03, 0x06, 0x00, 0x00, 
45029
  0x2C, 0x07, 0x00, 0x00, 0x35, 0x05, 0x07, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x2D, 0x05, 0x00, 0x0E, 
45030
  0x3C, 0x05, 0x04, 0x07, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x01, 0x45, 0x05, 0x00, 0x00, 
45031
  0x2C, 0x08, 0x02, 0x00, 0x33, 0x08, 0x07, 0x05, 0x45, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 
45032
  0x2D, 0x09, 0x00, 0x12, 0x35, 0x08, 0x09, 0x00, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xAD, 
45033
  0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
45034
  0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
45035
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xCD, 0x00, 
45036
  0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x05, 0x1A, 0x01, 0x11, 0xCE, 0x0E, 0x67, 0x65, 0x74, 
45037
  0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 
45038
  0x2B, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x08, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0xCE, 0x06, 
45039
  0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xDA, 0x82, 
45040
  0x81, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 
45041
  0x3B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x36, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x3C, 0xBF, 
45042
  0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x3D, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x3E, 0xBF, 0xFF, 0x00, 
45043
  0x0A, 0xDA, 0x8B, 0x3F, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC0, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
45044
  0x8B, 0x40, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x41, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8B, 0x42, 
45045
  0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x8B, 0x43, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x8B, 0x44, 0x00, 0x1A, 
45046
  0x00, 0xDA, 0x8B, 0x64, 0x00, 0x1A, 0x01, 0xDA, 0x8B, 0x45, 0x02, 0x1A, 0x03, 0xCF, 0x07, 0x5F, 
45047
  0x30, 0x30, 0x30, 0x30, 0x33, 0x43, 0x07, 0x1A, 0x04, 0xDA, 0x81, 0x2A, 0x2D, 0x03, 0x00, 0x10, 
45048
  0x3B, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 
45049
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x10, 
45050
  0x3C, 0x02, 0x00, 0x04, 0x2C, 0x02, 0x01, 0x00, 0x32, 0x02, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 
45051
  0x2C, 0x05, 0x02, 0x00, 0x32, 0x05, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 
45052
  0x33, 0x06, 0x02, 0x05, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x04, 0x02, 
45053
  0x45, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x12, 0x35, 0x05, 0x06, 0x00, 
45054
  0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xB6, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 
45055
  0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x1E, 0x00, 0x1E, 0x00, 
45056
  0x1E, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 
45057
  0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xCD, 0x00, 0xDC, 0x00, 
45058
  0x00, 0x17, 0x04, 0x04, 0x04, 0x13, 0x80, 0xD2, 0x01, 0x27, 0xCE, 0x0F, 0x76, 0x69, 0x73, 0x69, 
45059
  0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x31, 0xDA, 0x04, 0xDA, 0x81, 0x96, 
45060
  0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x70, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xDA, 0x82, 0x4F, 0xDA, 0x30, 
45061
  0xDA, 0x82, 0x98, 0xDA, 0x68, 0xDA, 0x61, 0xCF, 0x01, 0x26, 0xDA, 0x84, 0x83, 0xCE, 0x26, 0x65, 
45062
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 
45063
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 
45064
  0x74, 0x74, 0x65, 0x72, 0x6E, 0xDA, 0x81, 0x49, 0xDA, 0x86, 0x70, 0xCE, 0x37, 0x65, 0x78, 0x70, 
45065
  0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x73, 
45066
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x27, 0x26, 0x20, 
45067
  0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2C, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
45068
  0x64, 0x20, 0x25, 0x71, 0xCE, 0x30, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 
45069
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 
45070
  0x26, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2C, 0x20, 0x66, 0x6F, 
45071
  0x75, 0x6E, 0x64, 0x20, 0x25, 0x71, 0xCF, 0x01, 0x40, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
45072
  0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x3B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x36, 0xBF, 0xFF, 0x00, 
45073
  0x03, 0xDA, 0x8B, 0x3C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x3D, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
45074
  0x8B, 0x3E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x3F, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC0, 
45075
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x40, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x41, 0xBF, 0xFF, 
45076
  0x00, 0x12, 0xDA, 0x8B, 0x42, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x8B, 0x43, 0xBF, 0xFF, 0x00, 0x16, 
45077
  0xDA, 0x8B, 0x44, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x8B, 0x45, 0x00, 0x80, 0xD2, 0x00, 0xDA, 0x8B, 
45078
  0x4B, 0x00, 0x80, 0xD2, 0x01, 0xDA, 0x8B, 0x64, 0x00, 0x80, 0xD2, 0x02, 0xDA, 0x82, 0xAD, 0x00, 
45079
  0x80, 0xD2, 0x03, 0xDA, 0x88, 0xE6, 0x00, 0x80, 0xD2, 0x04, 0xDA, 0x8B, 0x46, 0x08, 0x80, 0xD2, 
45080
  0x06, 0xDA, 0x81, 0x2A, 0x0C, 0x80, 0xD2, 0x08, 0xDA, 0x82, 0x33, 0x0F, 0x20, 0x0A, 0xCF, 0x07, 
45081
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x44, 0x15, 0x1F, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45082
  0x30, 0x33, 0x45, 0x20, 0x80, 0xD2, 0x0A, 0xCF, 0x05, 0x69, 0x73, 0x61, 0x72, 0x72, 0x25, 0x2F, 
45083
  0x0D, 0xDA, 0x1E, 0x31, 0x43, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x47, 0x36, 
45084
  0x40, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x46, 0x48, 0x4F, 0x0E, 0xCF, 0x07, 
45085
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x48, 0x4F, 0x5D, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45086
  0x30, 0x33, 0x4A, 0x52, 0x5D, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x49, 0x55, 
45087
  0x5C, 0x10, 0xDA, 0x43, 0x56, 0x5C, 0x11, 0xCF, 0x0B, 0x73, 0x75, 0x62, 0x2D, 0x70, 0x61, 0x74, 
45088
  0x74, 0x65, 0x72, 0x6E, 0x60, 0x80, 0xA9, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
45089
  0x4C, 0x63, 0x80, 0xA9, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4B, 0x66, 0x80, 
45090
  0xA8, 0x10, 0xDA, 0x43, 0x67, 0x80, 0xA8, 0x11, 0xDA, 0x8B, 0x79, 0x80, 0xAB, 0x80, 0xBD, 0x10, 
45091
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4E, 0x80, 0xB0, 0x80, 0xBA, 0x12, 0xCF, 0x07, 
45092
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4D, 0x80, 0xC2, 0x80, 0xCA, 0x11, 0xCF, 0x07, 0x5F, 0x30, 
45093
  0x30, 0x30, 0x30, 0x33, 0x4F, 0x2E, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x25, 0x05, 0x03, 
45094
  0x06, 0x1E, 0x05, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2D, 0x06, 0x00, 
45095
  0x16, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x08, 0x01, 
45096
  0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x25, 0x09, 0x08, 
45097
  0x0A, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x09, 0x0A, 0x00, 0x1C, 0x0E, 0x00, 
45098
  0x00, 0x2C, 0x0D, 0x03, 0x00, 0x25, 0x0C, 0x08, 0x0D, 0x1B, 0x0D, 0x0C, 0x00, 0x1E, 0x0C, 0x08, 
45099
  0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x2C, 0x10, 0x05, 
45100
  0x00, 0x25, 0x0F, 0x0E, 0x10, 0x1B, 0x0B, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0B, 0x0D, 
45101
  0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x25, 0x0B, 0x08, 
45102
  0x0C, 0x1E, 0x0B, 0x0C, 0x00, 0x3A, 0x0C, 0x00, 0x03, 0x1B, 0x0D, 0x0C, 0x00, 0x1E, 0x0C, 0x04, 
45103
  0x00, 0x32, 0x0D, 0x06, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x36, 0x0E, 0x00, 0x00, 0x31, 0x06, 0x00, 
45104
  0x00, 0x40, 0x0E, 0x00, 0x00, 0x1B, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x03, 0x0E, 0x03, 0x0F, 0x00, 
45105
  0x00, 0x2C, 0x0E, 0x03, 0x00, 0x25, 0x0D, 0x08, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0D, 0x10, 
45106
  0x00, 0x3F, 0x10, 0x03, 0x00, 0x2B, 0x12, 0x02, 0x00, 0x25, 0x11, 0x12, 0x10, 0x1B, 0x10, 0x11, 
45107
  0x00, 0x1E, 0x11, 0x08, 0x00, 0x2B, 0x12, 0x00, 0x00, 0x31, 0x12, 0x00, 0x00, 0x35, 0x12, 0x03, 
45108
  0x00, 0x2C, 0x14, 0x08, 0x00, 0x25, 0x13, 0x14, 0x12, 0x1B, 0x0F, 0x13, 0x00, 0x1C, 0x02, 0x00, 
45109
  0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1B, 0x0C, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0C, 0x0E, 
45110
  0x00, 0x1E, 0x0C, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x0E, 0x09, 
45111
  0x00, 0x25, 0x0D, 0x08, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 
45112
  0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x25, 0x0F, 0x08, 0x10, 0x1B, 0x0D, 0x0F, 
45113
  0x00, 0x1E, 0x0D, 0x0E, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x03, 0x0F, 0x1B, 0x0F, 0x0E, 
45114
  0x00, 0x1F, 0x0F, 0x09, 0x00, 0x3A, 0x0E, 0x03, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x11, 0x0E, 
45115
  0x00, 0x33, 0x00, 0x06, 0x10, 0x31, 0x11, 0x00, 0x00, 0x35, 0x0E, 0x04, 0x00, 0x49, 0x0F, 0x03, 
45116
  0x0F, 0x1C, 0xF8, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x0A, 0x4C, 0x00, 0x31, 0x06, 0x00, 
45117
  0x00, 0x2D, 0x0F, 0x00, 0x18, 0x35, 0x0E, 0x0F, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x03, 
45118
  0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x44, 0x00, 0x3A, 0x0E, 0x03, 0x0F, 0x1B, 0x10, 0x0F, 
45119
  0x00, 0x1B, 0x11, 0x0E, 0x00, 0x2C, 0x12, 0x0B, 0x00, 0x25, 0x0E, 0x11, 0x12, 0x1E, 0x0E, 0x39, 
45120
  0x00, 0x3F, 0x12, 0x03, 0x00, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x14, 0x0C, 0x00, 0x35, 0x13, 0x14, 
45121
  0x00, 0x48, 0x14, 0x12, 0x13, 0x1E, 0x14, 0x05, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x31, 0x12, 0x00, 
45122
  0x00, 0x2C, 0x13, 0x0E, 0x00, 0x35, 0x12, 0x13, 0x00, 0x05, 0x12, 0x10, 0x02, 0x3F, 0x13, 0x03, 
45123
  0x00, 0x23, 0x14, 0x12, 0x13, 0x1E, 0x14, 0x0B, 0x00, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x0C, 
45124
  0x00, 0x35, 0x12, 0x13, 0x00, 0x32, 0x03, 0x12, 0x00, 0x2C, 0x15, 0x0F, 0x00, 0x35, 0x13, 0x15, 
45125
  0x00, 0x2C, 0x12, 0x10, 0x00, 0x32, 0x12, 0x13, 0x00, 0x2C, 0x15, 0x0E, 0x00, 0x35, 0x12, 0x15, 
45126
  0x00, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x0C, 0x00, 0x35, 0x12, 0x13, 0x00, 0x31, 0x12, 0x00, 
45127
  0x00, 0x35, 0x13, 0x03, 0x00, 0x31, 0x13, 0x00, 0x00, 0x2C, 0x14, 0x01, 0x00, 0x35, 0x12, 0x14, 
45128
  0x00, 0x2C, 0x14, 0x06, 0x00, 0x4A, 0x13, 0x12, 0x14, 0x1E, 0x13, 0x0A, 0x00, 0x31, 0x10, 0x00, 
45129
  0x00, 0x2C, 0x14, 0x0C, 0x00, 0x35, 0x12, 0x14, 0x00, 0x31, 0x12, 0x00, 0x00, 0x35, 0x14, 0x03, 
45130
  0x00, 0x2C, 0x12, 0x11, 0x00, 0x32, 0x12, 0x14, 0x00, 0x2C, 0x15, 0x0E, 0x00, 0x35, 0x12, 0x15, 
45131
  0x00, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x0C, 0x00, 0x35, 0x12, 0x13, 0x00, 0x31, 0x12, 0x00, 
45132
  0x00, 0x35, 0x13, 0x03, 0x00, 0x2C, 0x12, 0x0F, 0x00, 0x33, 0x12, 0x06, 0x10, 0x45, 0x12, 0x00, 
45133
  0x00, 0x31, 0x12, 0x00, 0x00, 0x40, 0x12, 0x00, 0x00, 0x3C, 0x00, 0x13, 0x12, 0x1C, 0x06, 0x00, 
45134
  0x00, 0x33, 0x00, 0x06, 0x10, 0x31, 0x11, 0x00, 0x00, 0x35, 0x0E, 0x04, 0x00, 0x49, 0x0F, 0x03, 
45135
  0x0F, 0x1C, 0xBD, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x10, 0x03, 0x00, 0x25, 0x0F, 0x08, 
45136
  0x10, 0x1B, 0x10, 0x0F, 0x00, 0x1E, 0x0F, 0x10, 0x00, 0x3F, 0x12, 0x03, 0x00, 0x2B, 0x14, 0x02, 
45137
  0x00, 0x25, 0x13, 0x14, 0x12, 0x1B, 0x12, 0x13, 0x00, 0x1E, 0x13, 0x08, 0x00, 0x2B, 0x14, 0x00, 
45138
  0x00, 0x31, 0x14, 0x00, 0x00, 0x35, 0x14, 0x03, 0x00, 0x2C, 0x16, 0x12, 0x00, 0x25, 0x15, 0x16, 
45139
  0x14, 0x1B, 0x11, 0x15, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x11, 0x12, 0x00, 0x1B, 0x0E, 0x11, 
45140
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x04, 0x00, 0x00, 
45141
  0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x11, 0x03, 0x00, 0x25, 0x10, 0x08, 0x11, 0x1B, 0x11, 0x10, 
45142
  0x00, 0x1E, 0x10, 0x06, 0x00, 0x3F, 0x12, 0x03, 0x00, 0x2B, 0x14, 0x02, 0x00, 0x47, 0x13, 0x12, 
45143
  0x14, 0x1B, 0x0F, 0x13, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1E, 0x0F, 0x07, 
45144
  0x00, 0x2B, 0x10, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x35, 0x10, 0x03, 0x00, 0x33, 0x00, 0x01, 
45145
  0x02, 0x31, 0x10, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x87, 
45146
  0xBC, 0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x18, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
45147
  0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x10, 
45148
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x36, 
45149
  0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x10, 
45150
  0x00, 0x05, 0x04, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x04, 0x12, 0x00, 0x07, 0x00, 0x07, 0x01, 
45151
  0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 
45152
  0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 
45153
  0x07, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 
45154
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF7, 0x05, 0x0A, 0x07, 0x00, 0x07, 0x03, 0x0B, 
45155
  0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 
45156
  0xBF, 0xF3, 0x05, 0x0E, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
45157
  0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF2, 
45158
  0x05, 0x13, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
45159
  0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x17, 0x00, 0x28, 0x00, 
45160
  0x28, 0x00, 0x28, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 
45161
  0x16, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x51, 0x00, 
45162
  0x51, 0x00, 0x51, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x28, 0x00, 0x28, 0x00, 
45163
  0x28, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 0x00, 0x13, 0x00, 
45164
  0x0D, 0x01, 0x53, 0x00, 0x53, 0x00, 0x53, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
45165
  0x0F, 0x00, 0x0F, 0x02, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x2A, 0x00, 
45166
  0x2A, 0x00, 0x2A, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
45167
  0x0B, 0xBF, 0xF3, 0x09, 0x00, 0x09, 0x00, 0x09, 0x10, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 
45168
  0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 
45169
  0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45170
  0xBF, 0xDC, 0x05, 0x25, 0x07, 0x00, 0x07, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 
45171
  0x1D, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xD8, 0x05, 0x2A, 0x2D, 
45172
  0x00, 0x2D, 0x00, 0x2D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xD6, 0x05, 0xCD, 0x00, 0xFC, 
45173
  0x00, 0x00, 0x19, 0x06, 0x06, 0x06, 0x12, 0x80, 0xD4, 0x01, 0x01, 0x2C, 0xCE, 0x0F, 0x76, 0x69, 
45174
  0x73, 0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x32, 0xDA, 0x04, 0xDA, 
45175
  0x81, 0x96, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x70, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xDA, 0x30, 0xDA, 
45176
  0x85, 0xB3, 0xDA, 0x84, 0x0F, 0xDA, 0x68, 0xDA, 0x61, 0xDA, 0x82, 0x56, 0xDA, 0x8B, 0x6C, 0xDA, 
45177
  0x82, 0x4F, 0xDA, 0x82, 0x98, 0xDA, 0x88, 0x1C, 0xDA, 0x8B, 0x70, 0xDA, 0x86, 0x70, 0xBF, 0xFF, 
45178
  0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x3B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
45179
  0x8B, 0x36, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x3C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x3D, 
45180
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x3E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x3F, 0xBF, 0xFF, 
45181
  0x00, 0x0C, 0xDA, 0x83, 0xC0, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x40, 0xBF, 0xFF, 0x00, 0x10, 
45182
  0xDA, 0x8B, 0x41, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8B, 0x42, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x8B, 
45183
  0x43, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x8B, 0x44, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x8B, 0x45, 0xBF, 
45184
  0xFF, 0x00, 0x1A, 0xDA, 0x8B, 0x46, 0x00, 0x80, 0xD4, 0x00, 0xDA, 0x8B, 0x4E, 0x00, 0x80, 0xD4, 
45185
  0x01, 0xDA, 0x8B, 0x4C, 0x00, 0x80, 0xD4, 0x02, 0xDA, 0x8B, 0x4D, 0x00, 0x80, 0xD4, 0x03, 0xDA, 
45186
  0x8B, 0x64, 0x00, 0x80, 0xD4, 0x04, 0xDA, 0x82, 0xAD, 0x00, 0x80, 0xD4, 0x05, 0xDA, 0x88, 0xE6, 
45187
  0x00, 0x80, 0xD4, 0x06, 0xDA, 0x8B, 0x47, 0x08, 0x80, 0xD4, 0x08, 0xDA, 0x81, 0x2A, 0x0C, 0x80, 
45188
  0xD4, 0x0A, 0xDA, 0x82, 0x33, 0x0F, 0x20, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
45189
  0x50, 0x15, 0x1F, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x51, 0x20, 0x80, 0xD4, 
45190
  0x0C, 0xDA, 0x8B, 0x73, 0x2C, 0x32, 0x0E, 0xCF, 0x08, 0x72, 0x65, 0x73, 0x74, 0x2D, 0x69, 0x64, 
45191
  0x78, 0x32, 0x3C, 0x0E, 0xCF, 0x0B, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x6C, 0x65, 
45192
  0x6E, 0x3E, 0x45, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x52, 0x45, 0x5D, 0x05, 
45193
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x54, 0x48, 0x5D, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 
45194
  0x30, 0x30, 0x30, 0x33, 0x53, 0x4B, 0x5C, 0x10, 0xDA, 0x43, 0x4C, 0x5C, 0x11, 0xDA, 0x8B, 0x79, 
45195
  0x5D, 0x6F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x56, 0x60, 0x6F, 0x0F, 0xCF, 
45196
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x55, 0x63, 0x6E, 0x10, 0xDA, 0x43, 0x64, 0x6E, 0x11, 
45197
  0xDA, 0x8B, 0x79, 0x76, 0x80, 0x88, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x58, 
45198
  0x7B, 0x80, 0x85, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x57, 0x80, 0x91, 0x80, 
45199
  0xA3, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x5A, 0x80, 0x96, 0x80, 0xA0, 0x14, 
45200
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x59, 0x80, 0xA8, 0x80, 0xB5, 0x11, 0xDA, 0x1E, 
45201
  0x80, 0xB7, 0x80, 0xBF, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x2E, 0x06, 
45202
  0x00, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x25, 0x07, 0x05, 0x08, 0x1E, 0x07, 0x02, 0x00, 0x04, 0x00, 
45203
  0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2D, 0x08, 0x00, 0x16, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 
45204
  0x07, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 
45205
  0x09, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x25, 0x0B, 0x0A, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 
45206
  0x03, 0x00, 0x1B, 0x0B, 0x0C, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x25, 0x0E, 
45207
  0x0A, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1E, 0x0E, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x11, 
45208
  0x04, 0x00, 0x35, 0x10, 0x11, 0x00, 0x2C, 0x12, 0x05, 0x00, 0x25, 0x11, 0x10, 0x12, 0x1B, 0x0D, 
45209
  0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1B, 0x0C, 
45210
  0x0B, 0x00, 0x1E, 0x0C, 0x1B, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x18, 0x35, 0x0D, 
45211
  0x0E, 0x00, 0x32, 0x00, 0x0D, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x30, 0x0E, 
45212
  0x00, 0x00, 0x32, 0x0E, 0x05, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x0E, 
45213
  0x0F, 0x00, 0x1E, 0x0F, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x3F, 0x10, 
45214
  0x05, 0x00, 0x1B, 0x0D, 0x10, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x0F, 
45215
  0x00, 0x18, 0x35, 0x0D, 0x0F, 0x00, 0x2C, 0x0F, 0x08, 0x00, 0x33, 0x0F, 0x0E, 0x0D, 0x45, 0x0D, 
45216
  0x00, 0x00, 0x32, 0x00, 0x0D, 0x00, 0x2C, 0x10, 0x06, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x0E, 
45217
  0x09, 0x00, 0x25, 0x0D, 0x0A, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 
45218
  0x0E, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x25, 0x0F, 0x0A, 0x10, 0x1B, 0x0D, 
45219
  0x0F, 0x00, 0x1E, 0x0D, 0x18, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x05, 0x0F, 0x1B, 0x0F, 
45220
  0x0E, 0x00, 0x1F, 0x0F, 0x13, 0x00, 0x3A, 0x0E, 0x05, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x11, 
45221
  0x0E, 0x00, 0x32, 0x08, 0x10, 0x00, 0x2D, 0x12, 0x00, 0x16, 0x35, 0x0E, 0x12, 0x00, 0x2C, 0x12, 
45222
  0x0B, 0x00, 0x28, 0x13, 0x00, 0x00, 0x33, 0x12, 0x13, 0x0E, 0x45, 0x0E, 0x00, 0x00, 0x32, 0x00, 
45223
  0x0E, 0x00, 0x2C, 0x13, 0x06, 0x00, 0x35, 0x12, 0x13, 0x00, 0x33, 0x00, 0x01, 0x02, 0x33, 0x08, 
45224
  0x10, 0x11, 0x35, 0x0E, 0x06, 0x00, 0x49, 0x0F, 0x05, 0x0F, 0x1C, 0xEE, 0xFF, 0xFF, 0x04, 0x00, 
45225
  0x00, 0x00, 0x1E, 0x0C, 0x12, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x05, 0x0F, 0x1B, 0x0F, 
45226
  0x0E, 0x00, 0x1F, 0x0F, 0x0D, 0x00, 0x3A, 0x0E, 0x05, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x11, 
45227
  0x0E, 0x00, 0x2C, 0x12, 0x0C, 0x00, 0x25, 0x0E, 0x11, 0x12, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x06, 
45228
  0x00, 0x00, 0x33, 0x00, 0x01, 0x02, 0x33, 0x08, 0x10, 0x11, 0x35, 0x0E, 0x06, 0x00, 0x49, 0x0F, 
45229
  0x05, 0x0F, 0x1C, 0xF4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x0F, 0x0D, 0x00, 0x25, 0x0E, 
45230
  0x0A, 0x0F, 0x1E, 0x0E, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x11, 
45231
  0x03, 0x00, 0x25, 0x10, 0x0A, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1E, 0x10, 0x10, 0x00, 0x3F, 0x13, 
45232
  0x05, 0x00, 0x2B, 0x15, 0x02, 0x00, 0x25, 0x14, 0x15, 0x13, 0x1B, 0x13, 0x14, 0x00, 0x1E, 0x14, 
45233
  0x08, 0x00, 0x2B, 0x15, 0x00, 0x00, 0x31, 0x15, 0x00, 0x00, 0x35, 0x15, 0x05, 0x00, 0x2C, 0x17, 
45234
  0x0E, 0x00, 0x25, 0x16, 0x17, 0x15, 0x1B, 0x12, 0x16, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x12, 
45235
  0x13, 0x00, 0x1B, 0x0F, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1E, 0x0F, 
45236
  0x07, 0x00, 0x2C, 0x10, 0x0F, 0x00, 0x33, 0x10, 0x08, 0x05, 0x45, 0x10, 0x00, 0x00, 0x32, 0x00, 
45237
  0x10, 0x00, 0x2C, 0x11, 0x06, 0x00, 0x36, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x03, 0x00, 0x25, 0x11, 
45238
  0x0A, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1E, 0x11, 0x10, 0x00, 0x3F, 0x14, 0x05, 0x00, 0x2B, 0x16, 
45239
  0x02, 0x00, 0x25, 0x15, 0x16, 0x14, 0x1B, 0x14, 0x15, 0x00, 0x1E, 0x15, 0x08, 0x00, 0x2B, 0x16, 
45240
  0x00, 0x00, 0x31, 0x16, 0x00, 0x00, 0x35, 0x16, 0x05, 0x00, 0x2C, 0x18, 0x10, 0x00, 0x25, 0x17, 
45241
  0x18, 0x16, 0x1B, 0x13, 0x17, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x13, 0x14, 0x00, 0x1B, 0x10, 
45242
  0x13, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x10, 0x12, 0x00, 0x1E, 0x10, 0x12, 0x00, 0x2B, 0x11, 
45243
  0x01, 0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 0x05, 0x00, 0x3A, 0x12, 0x01, 0x11, 0x1B, 0x11, 
45244
  0x12, 0x00, 0x1E, 0x12, 0x04, 0x00, 0x32, 0x11, 0x08, 0x00, 0x2C, 0x13, 0x06, 0x00, 0x36, 0x13, 
45245
  0x00, 0x00, 0x2B, 0x13, 0x01, 0x00, 0x31, 0x13, 0x00, 0x00, 0x35, 0x13, 0x05, 0x00, 0x31, 0x08, 
45246
  0x00, 0x00, 0x40, 0x14, 0x00, 0x00, 0x1B, 0x15, 0x01, 0x00, 0x3C, 0x15, 0x13, 0x14, 0x03, 0x15, 
45247
  0x00, 0x00, 0x2C, 0x13, 0x03, 0x00, 0x25, 0x12, 0x0A, 0x13, 0x1B, 0x13, 0x12, 0x00, 0x1E, 0x12, 
45248
  0x06, 0x00, 0x3F, 0x14, 0x05, 0x00, 0x2B, 0x16, 0x02, 0x00, 0x47, 0x15, 0x14, 0x16, 0x1B, 0x11, 
45249
  0x15, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x11, 0x13, 0x00, 0x1E, 0x11, 0x0F, 0x00, 0x2B, 0x12, 
45250
  0x01, 0x00, 0x32, 0x05, 0x12, 0x00, 0x2C, 0x13, 0x11, 0x00, 0x35, 0x12, 0x13, 0x00, 0x31, 0x02, 
45251
  0x00, 0x00, 0x34, 0x12, 0x00, 0x00, 0x2C, 0x14, 0x06, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2B, 0x12, 
45252
  0x00, 0x00, 0x31, 0x12, 0x00, 0x00, 0x35, 0x12, 0x05, 0x00, 0x33, 0x00, 0x01, 0x02, 0x33, 0x03, 
45253
  0x04, 0x12, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x12, 0x0F, 0x00, 0x33, 0x12, 0x08, 0x05, 0x45, 0x12, 
45254
  0x00, 0x00, 0x32, 0x00, 0x12, 0x00, 0x2C, 0x13, 0x06, 0x00, 0x36, 0x13, 0x00, 0x00, 0xBF, 0xFF, 
45255
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x01, 0xDA, 0x04, 0xDA, 
45256
  0x8B, 0x6C, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x2C, 0x02, 0x00, 0x00, 0x25, 0x01, 0x00, 0x02, 0x03, 
45257
  0x01, 0x00, 0x00, 0x87, 0xF7, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x87, 0xEE, 0x03, 0x02, 0x09, 0x00, 
45258
  0x09, 0x00, 0x05, 0x00, 0x18, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 
45259
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
45260
  0x10, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 
45261
  0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 
45262
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x27, 0x00, 0x1B, 0x00, 
45263
  0x1B, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 0xBF, 0xFE, 0x09, 
45264
  0xBF, 0xFF, 0x07, 0x04, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
45265
  0x07, 0x00, 0x07, 0x00, 0x07, 0x04, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
45266
  0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 
45267
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1A, 
45268
  0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 
45269
  0x00, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x05, 0x09, 0x07, 0x00, 0x07, 
45270
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x09, 
45271
  0x01, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x07, 
45272
  0x07, 0x00, 0x07, 0xBF, 0xF0, 0x05, 0x10, 0x15, 0x00, 0x15, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 
45273
  0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x3A, 0x00, 0x3A, 
45274
  0x00, 0x3A, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45275
  0x00, 0x07, 0xBF, 0xED, 0x05, 0x14, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 
45276
  0x07, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 
45277
  0x07, 0x00, 0x07, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 
45278
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xE9, 0x05, 0x18, 0x1A, 0x00, 0x1A, 
45279
  0x00, 0x1A, 0x00, 0x12, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 
45280
  0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x0C, 
45281
  0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1D, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 
45282
  0x00, 0x07, 0xBF, 0xE3, 0x05, 0x1F, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x09, 0x00, 
45283
  0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x09, 0x00, 0x09, 0x00, 
45284
  0x09, 0x03, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x87, 0x9B, 0x15, 
45285
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
45286
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x01, 0x1E, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 
45287
  0x00, 0x29, 0x00, 0x29, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
45288
  0x00, 0x11, 0x00, 0x03, 0x03, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
45289
  0x00, 0x24, 0x00, 0x24, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 
45290
  0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x03, 0x03, 0x00, 0x03, 
45291
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
45292
  0x02, 0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x32, 0x03, 0x00, 0x03, 
45293
  0x33, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45294
  0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 
45295
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45296
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x01, 0x05, 
45297
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x12, 0x00, 0x0D, 0x00, 0x0D, 
45298
  0x00, 0x07, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
45299
  0xBF, 0xFE, 0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
45300
  0x05, 0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 
45301
  0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
45302
  0x00, 0x05, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1F, 0x00, 0x1F, 
45303
  0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
45304
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x33, 0x00, 0x33, 
45305
  0x00, 0x33, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x0D, 0x00, 0x0D, 
45306
  0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 
45307
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
45308
  0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 
45309
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xE9, 0x03, 0x00, 0x03, 0x1A, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
45310
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45311
  0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 
45312
  0x07, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x03, 0x1F, 0x00, 0x19, 0x00, 0x19, 
45313
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 
45314
  0xBF, 0xFE, 0x19, 0x00, 0x19, 0x03, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
45315
  0x1B, 0x00, 0x1B, 0xBF, 0xFD, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
45316
  0x15, 0xBF, 0xFE, 0x07, 0x07, 0x1F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 
45317
  0x00, 0x09, 0x00, 0x09, 0xBF, 0xF7, 0x05, 0x0A, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x03, 
45318
  0x00, 0x03, 0x0D, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45319
  0x00, 0x03, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x86, 0x42, 0xD7, 0x00, 0xCD, 
45320
  0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x03, 
45321
  0xCE, 0x04, 0x64, 0x65, 0x66, 0x2D, 0xDA, 0x04, 0xDA, 0x80, 0xAB, 0xDA, 0x85, 0xE6, 0x00, 0x06, 
45322
  0x00, 0xDA, 0x81, 0x86, 0x00, 0x06, 0x01, 0xDA, 0x86, 0x74, 0x00, 0x06, 0x02, 0xDA, 0x86, 0x42, 
45323
  0x2C, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x04, 0x00, 0x05, 0x34, 0x01, 0x00, 0x00, 
45324
  0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x49, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45325
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x03, 0x74, 0x72, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
45326
  0x0C, 0x02, 0x02, 0x02, 0x11, 0x52, 0x00, 0x0B, 0xDA, 0x81, 0x99, 0xDA, 0x04, 0xDA, 0x81, 0x5A, 
45327
  0xDA, 0x82, 0x51, 0xDA, 0x2B, 0xCE, 0x35, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
45328
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x63, 0x61, 0x74, 
45329
  0x63, 0x68, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 
45330
  0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0xDA, 0x5C, 0xDA, 0x80, 
45331
  0xAE, 0xD0, 0x03, 0x74, 0x72, 0x79, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0x8D, 0xDA, 0x83, 0x42, 0xDA, 
45332
  0x80, 0xDE, 0xDA, 0x87, 0xAA, 0xDA, 0x0E, 0xDA, 0x2C, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 0x81, 0xDA, 
45333
  0x83, 0xF2, 0x00, 0x52, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x52, 0x01, 0xCF, 0x05, 0x63, 0x61, 0x74, 
45334
  0x63, 0x68, 0x00, 0x52, 0x02, 0xDA, 0x8B, 0x90, 0x06, 0x11, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
45335
  0x30, 0x30, 0x30, 0x34, 0x11, 0x16, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 
45336
  0x1A, 0x52, 0x05, 0xDA, 0x85, 0x8D, 0x1C, 0x52, 0x06, 0xDA, 0x87, 0xCE, 0x1C, 0x23, 0x05, 0xCF, 
45337
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x23, 0x52, 0x04, 0xDA, 0x82, 0xCD, 0x23, 0x2A, 
45338
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x2A, 0x52, 0x07, 0xDA, 0x31, 0x31, 
45339
  0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
45340
  0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1E, 0x05, 0x09, 0x00, 0x2B, 
45341
  0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 
45342
  0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
45343
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2C, 
45344
  0x03, 0x03, 0x00, 0x01, 0x03, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 
45345
  0x03, 0x01, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 0x01, 0x1B, 
45346
  0x06, 0x04, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x03, 0x05, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 
45347
  0x07, 0x04, 0x00, 0x35, 0x04, 0x07, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 
45348
  0x06, 0x03, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 
45349
  0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1B, 0x07, 0x03, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 
45350
  0x09, 0x05, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x33, 0x09, 0x0A, 0x03, 0x31, 0x00, 0x00, 0x00, 0x45, 
45351
  0x08, 0x00, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x2C, 0x0A, 0x08, 0x00, 0x33, 0x09, 0x08, 0x0A, 0x45, 
45352
  0x03, 0x00, 0x00, 0x2C, 0x09, 0x09, 0x00, 0x32, 0x09, 0x07, 0x00, 0x45, 0x08, 0x00, 0x00, 0x33, 
45353
  0x07, 0x03, 0x04, 0x31, 0x08, 0x00, 0x00, 0x46, 0x09, 0x00, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x32, 
45354
  0x08, 0x07, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x2C, 0x0B, 0x0C, 0x00, 0x33, 
45355
  0x0A, 0x03, 0x0B, 0x45, 0x08, 0x00, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 
45356
  0x0A, 0x0D, 0x00, 0x35, 0x03, 0x0A, 0x00, 0x2C, 0x0B, 0x0E, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x34, 
45357
  0x03, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x0F, 0x00, 0x33, 0x0B, 0x08, 0x0A, 0x31, 
45358
  0x04, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x0A, 0x10, 0x00, 0x33, 0x0A, 0x09, 0x03, 0x45, 
45359
  0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x81, 0x5A, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x10, 
45360
  0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x25, 
45361
  0x00, 0x25, 0x00, 0x25, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45362
  0x00, 0x03, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45363
  0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0xBF, 0xFF, 
45364
  0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0xBF, 0xFE, 0x03, 
45365
  0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45366
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45367
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x10, 
45368
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
45369
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 
45370
  0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0xD8, 0x0C, 0x61, 
45371
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0xCF, 0x09, 0x6E, 0x65, 0x74, 
45372
  0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x66, 0x6C, 0x75, 0x73, 
45373
  0x68, 0xDA, 0x83, 0x7F, 0xDA, 0x83, 0x7D, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 
45374
  0x74, 0x65, 0x6E, 0xDA, 0x83, 0xB2, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 
45375
  0x6D, 0x31, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x6D, 0x31, 0xCF, 0x04, 
45376
  0x70, 0x6F, 0x73, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 
45377
  0x06, 0x00, 0x02, 0xCE, 0x04, 0x70, 0x6F, 0x73, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 
45378
  0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8B, 0xA0, 0x2B, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 
45379
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0x01, 0x03, 0x03, 0x00, 
45380
  0x00, 0x83, 0x8D, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 0xCF, 0x08, 
45381
  0x6F, 0x73, 0x2F, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x75, 0x6D, 0x61, 
45382
  0x73, 0x6B, 0xDA, 0x86, 0x3D, 0xDA, 0x86, 0x7E, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 
45383
  0x65, 0x6E, 0x76, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xCF, 0x05, 
45384
  0x74, 0x72, 0x75, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
45385
  0x00, 0x03, 0x00, 0x02, 0xCE, 0x05, 0x74, 0x72, 0x75, 0x65, 0x3F, 0xDA, 0x04, 0x00, 0x03, 0x00, 
45386
  0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8B, 0xA7, 0x29, 0x03, 0x00, 0x00, 0x25, 0x02, 0x00, 0x03, 
45387
  0x03, 0x02, 0x00, 0x00, 0x73, 0x27, 0x00, 0x27, 0x00, 0x27, 0xCF, 0x04, 0x6A, 0x75, 0x78, 0x74, 
45388
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x09, 
45389
  0x24, 0x00, 0x07, 0xCE, 0x04, 0x6A, 0x75, 0x78, 0x74, 0xDA, 0x04, 0xCF, 0x05, 0x74, 0x75, 0x70, 
45390
  0x6C, 0x65, 0xDA, 0x5C, 0xDA, 0x8B, 0x0B, 0xDA, 0x82, 0xB5, 0xDA, 0x30, 0xDA, 0x8B, 0x6C, 0xDA, 
45391
  0x2C, 0xDA, 0x80, 0xAE, 0xD0, 0x04, 0x6A, 0x75, 0x78, 0x74, 0x00, 0x24, 0x00, 0xCF, 0x04, 0x66, 
45392
  0x75, 0x6E, 0x73, 0x00, 0x24, 0x01, 0xDA, 0x8B, 0xAA, 0x03, 0x24, 0x03, 0xDA, 0x38, 0x06, 0x24, 
45393
  0x05, 0xCF, 0x05, 0x24, 0x61, 0x72, 0x67, 0x73, 0x06, 0x16, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
45394
  0x30, 0x30, 0x32, 0x6A, 0x09, 0x16, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x69, 
45395
  0x0C, 0x16, 0x08, 0xDA, 0x31, 0x2C, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 
45396
  0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 
45397
  0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x00, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x0C, 
45398
  0x00, 0x3A, 0x06, 0x00, 0x07, 0x1B, 0x08, 0x06, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x33, 0x06, 0x08, 
45399
  0x05, 0x2C, 0x09, 0x03, 0x00, 0x35, 0x06, 0x09, 0x00, 0x32, 0x03, 0x06, 0x00, 0x2C, 0x0A, 0x04, 
45400
  0x00, 0x35, 0x09, 0x0A, 0x00, 0x49, 0x07, 0x00, 0x07, 0x1C, 0xF5, 0xFF, 0xFF, 0x2C, 0x06, 0x05, 
45401
  0x00, 0x32, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2B, 0x07, 0x00, 
45402
  0x00, 0x32, 0x03, 0x07, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x07, 
45403
  0x00, 0x2C, 0x09, 0x08, 0x00, 0x33, 0x08, 0x09, 0x06, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 
45404
  0x00, 0x36, 0x08, 0x00, 0x00, 0x85, 0x25, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 
45405
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45406
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 
45407
  0x03, 0x00, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x25, 0x00, 0x25, 0x00, 
45408
  0x25, 0x00, 0x25, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
45409
  0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xD7, 0x00, 0xCD, 
45410
  0x00, 0xDC, 0x00, 0x00, 0x04, 0x02, 0x00, 0x02, 0x02, 0x04, 0x00, 0x03, 0xCE, 0x0C, 0x61, 0x6C, 
45411
  0x6C, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x04, 0xDA, 0x82, 0x95, 0xDA, 
45412
  0x83, 0x51, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x49, 0x00, 0x04, 0x01, 0xDA, 0x83, 0x5E, 0x00, 0x04, 
45413
  0x02, 0xDA, 0x8B, 0xB3, 0x2C, 0x03, 0x00, 0x00, 0x33, 0x03, 0x00, 0x01, 0x2C, 0x03, 0x01, 0x00, 
45414
  0x36, 0x03, 0x00, 0x00, 0x8C, 0x9A, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x09, 0x61, 
45415
  0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3F, 0xD8, 0x09, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 
45416
  0x63, 0x74, 0x3F, 0xCF, 0x0C, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 
45417
  0x65, 0xD8, 0x0C, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xCF, 
45418
  0x07, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 
45419
  0x02, 0x02, 0x02, 0x00, 0x0F, 0x00, 0x07, 0xCE, 0x07, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 
45420
  0xDA, 0x04, 0x00, 0x0F, 0x00, 0xDA, 0x88, 0x75, 0x00, 0x0F, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x0F, 
45421
  0x02, 0xDA, 0x8B, 0xBA, 0x00, 0x0F, 0x01, 0xDA, 0x82, 0x62, 0x02, 0x0F, 0x04, 0xDA, 0x3A, 0x04, 
45422
  0x0F, 0x05, 0xDA, 0x39, 0x08, 0x0E, 0x06, 0xDA, 0x1E, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x01, 
45423
  0x04, 0x1B, 0x04, 0x03, 0x00, 0x3B, 0x03, 0x01, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x49, 0x04, 0x01, 
45424
  0x04, 0x1F, 0x04, 0x08, 0x00, 0x3A, 0x03, 0x01, 0x04, 0x1B, 0x06, 0x03, 0x00, 0x32, 0x06, 0x05, 
45425
  0x00, 0x35, 0x03, 0x00, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0xF8, 0xFF, 
45426
  0xFF, 0x03, 0x05, 0x00, 0x00, 0x83, 0x2F, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45427
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45428
  0x00, 0x10, 0x00, 0x10, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 
45429
  0x88, 0xD9, 0xDA, 0x80, 0xB9, 0xD7, 0x01, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 
45430
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x01, 0x08, 0xCE, 0x0C, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 
45431
  0x68, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x83, 0x35, 0xDA, 0x88, 0x3A, 0xBF, 0xFF, 
45432
  0x00, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 
45433
  0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 
45434
  0xB8, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xCD, 0x00, 0x06, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x06, 0x02, 
45435
  0xDA, 0x80, 0xB9, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x31, 
45436
  0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x0B, 0x05, 
45437
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 0xCF, 0x0E, 0x6F, 0x73, 
45438
  0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD8, 0x0E, 0x6F, 0x73, 
45439
  0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xCF, 0x11, 0x74, 0x61, 
45440
  0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0xD8, 
45441
  0x11, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x76, 0x61, 0x6C, 0x75, 
45442
  0x65, 0x73, 0xCF, 0x06, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
45443
  0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x06, 0x66, 0x61, 0x6C, 0x73, 0x65, 
45444
  0x3F, 0xDA, 0x04, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8B, 0xC4, 0x2A, 0x03, 
45445
  0x00, 0x00, 0x25, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x74, 0x29, 0x00, 0x29, 0x00, 0x29, 
45446
  0xDA, 0x81, 0x85, 0xDA, 0x81, 0x82, 0xDA, 0x80, 0xB7, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
45447
  0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0x00, 0x02, 0xCE, 0x0C, 0x65, 0x76, 
45448
  0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x04, 0xDA, 0x8B, 0x6C, 0xDA, 
45449
  0x80, 0xAE, 0xD0, 0x09, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x88, 0xA4, 
45450
  0x00, 0x0C, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x01, 0xDA, 0x80, 0xB7, 0x2C, 0x03, 0x00, 0x00, 
45451
  0x31, 0x03, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 
45452
  0x33, 0x04, 0x05, 0x02, 0x34, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 
45453
  0x32, 0x04, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8E, 0xFD, 0x05, 0x00, 
45454
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
45455
  0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x10, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 
45456
  0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x15, 0x02, 
45457
  0x02, 0x02, 0x0E, 0x41, 0x00, 0x01, 0x09, 0xCE, 0x10, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 
45458
  0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xDA, 0x04, 0xDA, 0x81, 0xB2, 0xDA, 0x81, 
45459
  0xB3, 0xDA, 0x81, 0x26, 0xCE, 0x06, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0xDA, 0x81, 0x28, 0xDA, 
45460
  0x81, 0xE6, 0xDA, 0x88, 0xE0, 0xCE, 0x06, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0xDA, 0x81, 0xDB, 
45461
  0xDA, 0x88, 0xDF, 0xCE, 0x0B, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 
45462
  0xDA, 0x81, 0xCD, 0xCE, 0x0B, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 
45463
  0xDA, 0x81, 0xC0, 0x00, 0x41, 0x00, 0xCF, 0x03, 0x65, 0x78, 0x74, 0x00, 0x41, 0x01, 0xCF, 0x06, 
45464
  0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x00, 0x41, 0x02, 0xDA, 0x8B, 0xCA, 0x05, 0x41, 0x04, 0xDA, 
45465
  0x82, 0x26, 0x07, 0x41, 0x06, 0xCF, 0x0B, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x70, 0x72, 0x65, 0x66, 
45466
  0x69, 0x78, 0x0B, 0x41, 0x08, 0xCF, 0x09, 0x64, 0x79, 0x6E, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 
45467
  0x19, 0x41, 0x0B, 0xCF, 0x09, 0x61, 0x6C, 0x6C, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x27, 0x41, 
45468
  0x0E, 0xCF, 0x09, 0x73, 0x79, 0x73, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x35, 0x41, 0x11, 0xCF, 
45469
  0x0C, 0x63, 0x75, 0x72, 0x61, 0x6C, 0x6C, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2C, 0x03, 0x00, 
45470
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 
45471
  0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x03, 
45472
  0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x07, 0x06, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x03, 
45473
  0x00, 0x32, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2C, 0x0A, 0x05, 
45474
  0x00, 0x33, 0x09, 0x01, 0x0A, 0x45, 0x09, 0x00, 0x00, 0x33, 0x04, 0x08, 0x09, 0x2C, 0x0B, 0x06, 
45475
  0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x09, 0x06, 
45476
  0x00, 0x1B, 0x0B, 0x09, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x32, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x04, 
45477
  0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x33, 0x0C, 0x01, 0x0D, 0x45, 0x0C, 0x00, 
45478
  0x00, 0x33, 0x04, 0x0B, 0x0C, 0x2C, 0x0E, 0x06, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x09, 
45479
  0x00, 0x31, 0x0C, 0x00, 0x00, 0x35, 0x0C, 0x06, 0x00, 0x1B, 0x0E, 0x0C, 0x00, 0x2C, 0x0F, 0x0A, 
45480
  0x00, 0x32, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x04, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x10, 0x0B, 
45481
  0x00, 0x33, 0x0F, 0x01, 0x10, 0x45, 0x0F, 0x00, 0x00, 0x33, 0x04, 0x0E, 0x0F, 0x2C, 0x11, 0x06, 
45482
  0x00, 0x35, 0x10, 0x11, 0x00, 0x2C, 0x0F, 0x0C, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x35, 0x0F, 0x06, 
45483
  0x00, 0x1B, 0x11, 0x0F, 0x00, 0x2C, 0x12, 0x0C, 0x00, 0x32, 0x12, 0x00, 0x00, 0x2C, 0x13, 0x04, 
45484
  0x00, 0x35, 0x12, 0x13, 0x00, 0x2C, 0x13, 0x0D, 0x00, 0x33, 0x12, 0x01, 0x13, 0x45, 0x12, 0x00, 
45485
  0x00, 0x33, 0x04, 0x11, 0x12, 0x2C, 0x14, 0x06, 0x00, 0x35, 0x13, 0x14, 0x00, 0x03, 0x04, 0x00, 
45486
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x0A, 0x01, 0x01, 0x07, 0xCE, 
45487
  0x0B, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0xDA, 0x04, 0xDA, 0x85, 
45488
  0xB3, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0xD1, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0xD2, 0xBF, 
45489
  0xFF, 0x00, 0x02, 0xDA, 0x8B, 0xCA, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x26, 0x00, 0x0A, 0x00, 
45490
  0xCF, 0x03, 0x70, 0x72, 0x65, 0x00, 0x0A, 0x01, 0xDA, 0x8B, 0xD3, 0x05, 0x0A, 0x02, 0xCF, 0x07, 
45491
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6E, 0x30, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x04, 0x32, 
45492
  0x02, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 
45493
  0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 
45494
  0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x10, 0x01, 0x04, 0xCE, 0x08, 
45495
  0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x82, 0x30, 0xDA, 0x81, 0xBB, 
45496
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0xD9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0xD3, 0x00, 0x10, 
45497
  0x00, 0xCF, 0x09, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6F, 0x24, 0x30, 0x06, 0x10, 0x01, 0xCF, 
45498
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x70, 0x2B, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
45499
  0x35, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
45500
  0x1B, 0x01, 0x02, 0x00, 0x1E, 0x02, 0x08, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 
45501
  0x35, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 
45502
  0x36, 0x04, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0x3C, 0x24, 0x00, 0x24, 0x00, 
45503
  0x24, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x15, 0x00, 0x15, 0x00, 0x43, 0x00, 0x43, 0x00, 
45504
  0x43, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x15, 0x8B, 0x3C, 0x15, 0x00, 0x09, 
45505
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45506
  0x01, 0x00, 0x00, 0x00, 0x8B, 0x39, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
45507
  0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x1F, 0x00, 
45508
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x03, 0x00, 
45509
  0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
45510
  0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x12, 0x00, 
45511
  0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 
45512
  0x1E, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
45513
  0x03, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 
45514
  0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xEC, 0x01, 0x10, 0x00, 0x00, 0x00, 0xCF, 0x0C, 0x64, 0x65, 
45515
  0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x84, 0xB4, 0xDA, 0x8A, 0x12, 
45516
  0xDA, 0x8A, 0x05, 0xCF, 0x10, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 
45517
  0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x80, 0xE5, 0xCF, 0x0C, 0x2A, 0x65, 0x78, 0x65, 0x63, 0x75, 
45518
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2A, 0xDA, 0x89, 0x4B, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x77, 0x68, 
45519
  0x69, 0x63, 0x68, 0xDA, 0x81, 0x1D, 0xCF, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 
45520
  0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 0xD8, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 
45521
  0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 0xCF, 0x04, 0x61, 0x73, 0x2D, 0x3E, 0xD7, 0x00, 0xCD, 0x02, 
45522
  0xFF, 0x00, 0x00, 0x07, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x02, 0x05, 
45523
  0xCE, 0x04, 0x61, 0x73, 0x2D, 0x3E, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x5D, 0xDA, 0x83, 0xF2, 0x00, 
45524
  0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xDA, 0x80, 0x84, 0x00, 0x07, 0x02, 0xDA, 0x80, 0x85, 
45525
  0x00, 0x07, 0x03, 0xDA, 0x8B, 0xE4, 0x00, 0x07, 0x04, 0xDA, 0x80, 0x86, 0x1B, 0x04, 0x00, 0x00, 
45526
  0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x02, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x30, 0x05, 0x01, 0x00, 
45527
  0x35, 0x05, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 
45528
  0x01, 0x00, 0x06, 0x01, 0x06, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 
45529
  0x01, 0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
45530
  0x8B, 0xE4, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x86, 0x00, 0x06, 0x00, 0xDA, 0x80, 0x87, 0x2D, 
45531
  0x02, 0x00, 0x01, 0x25, 0x01, 0x00, 0x02, 0x1E, 0x01, 0x03, 0x00, 0x2D, 0x02, 0x00, 0x08, 0x03, 
45532
  0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xCE, 0x2A, 0x00, 0x2A, 0x00, 0x26, 
45533
  0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x07, 0x00, 0x00, 0xCD, 0x7F, 
45534
  0xFF, 0xFF, 0xFF, 0x03, 0x1C, 0x01, 0x01, 0x05, 0xDA, 0x80, 0x88, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 
45535
  0x5D, 0xDA, 0x83, 0xF2, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 
45536
  0x73, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x72, 0x06, 0x1C, 
45537
  0x01, 0xDA, 0x64, 0x09, 0x1C, 0x02, 0xDA, 0x80, 0x8B, 0x0E, 0x1C, 0x00, 0xDA, 0x80, 0x8C, 0x2D, 
45538
  0x00, 0x00, 0x06, 0x20, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x02, 0x2D, 
45539
  0x02, 0x00, 0x06, 0x3A, 0x00, 0x01, 0x02, 0x1B, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 
45540
  0x00, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 
45541
  0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x00, 0x03, 0x00, 0x2D, 0x04, 0x00, 0x04, 0x32, 
45542
  0x02, 0x04, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x05, 0x03, 0x00, 0x45, 
45543
  0x04, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x04, 0x2D, 0x05, 0x00, 0x02, 0x2D, 0x06, 0x00, 0x06, 0x49, 
45544
  0x03, 0x05, 0x06, 0x2F, 0x03, 0x00, 0x06, 0x2E, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 
45545
  0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x06, 0x02, 0x08, 0xDA, 0x04, 
45546
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 
45547
  0x02, 0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0xE4, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
45548
  0x80, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x64, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x80, 0x8B, 0x00, 
45549
  0x06, 0x00, 0xDA, 0x80, 0x87, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 0x00, 0x02, 0x1E, 0x01, 0x03, 
45550
  0x00, 0x2D, 0x02, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
45551
  0x85, 0xCE, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x85, 0xCC, 0x03, 
45552
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 
45553
  0x00, 0x05, 0x01, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 
45554
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 
45555
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x85, 0xCB, 0x03, 0x01, 0x03, 
45556
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0x56, 0x01, 0x00, 0x00, 0xCF, 
45557
  0x07, 0x7A, 0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 
45558
  0x02, 0x02, 0x02, 0x00, 0x13, 0x00, 0x06, 0xCE, 0x07, 0x7A, 0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 
45559
  0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x83, 0x71, 0x00, 0x13, 0x01, 0xCF, 0x02, 0x76, 0x73, 0x00, 
45560
  0x13, 0x02, 0xDA, 0x8B, 0xE9, 0x01, 0x13, 0x04, 0xDA, 0x7E, 0x02, 0x13, 0x05, 0xCF, 0x02, 0x6B, 
45561
  0x6B, 0x03, 0x13, 0x06, 0xCF, 0x02, 0x76, 0x6B, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 
45562
  0x28, 0x05, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x05, 0x28, 0x08, 0x00, 0x00, 
45563
  0x25, 0x07, 0x08, 0x05, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x49, 0x06, 0x01, 0x06, 
45564
  0x28, 0x08, 0x00, 0x00, 0x25, 0x07, 0x08, 0x06, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 
45565
  0x3A, 0x07, 0x00, 0x05, 0x3A, 0x08, 0x01, 0x06, 0x3C, 0x04, 0x07, 0x08, 0x1C, 0xF3, 0xFF, 0xFF, 
45566
  0x03, 0x04, 0x00, 0x00, 0x86, 0x44, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 0x0D, 0x01, 
45567
  0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x14, 0x01, 0x0D, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 
45568
  0x14, 0x01, 0x0E, 0x00, 0x19, 0x00, 0x05, 0xBF, 0xFB, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 0x0C, 0x61, 
45569
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0xDA, 0x88, 0xE0, 0xCF, 0x0F, 
45570
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xDA, 
45571
  0x83, 0x91, 0xDA, 0x86, 0x29, 0xDA, 0x86, 0x27, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
45572
  0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0xDA, 0x81, 0xB6, 0xCF, 0x06, 0x6C, 0x65, 0x6E, 0x67, 0x74, 
45573
  0x68, 0xDA, 0x8B, 0x68, 0xCF, 0x11, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6D, 0x61, 
45574
  0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x2A, 0xDA, 0x81, 0xA2, 0xDA, 0x41, 0xDA, 0x3E, 0xCF, 0x0E, 
45575
  0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 0xD8, 0x0E, 
45576
  0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 0xCF, 0x06, 
45577
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xDA, 0x81, 0x28, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x74, 0x69, 
45578
  0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x02, 
45579
  0x02, 0x02, 0x01, 0x26, 0x00, 0x0B, 0xCE, 0x0C, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 
45580
  0x6E, 0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x26, 0x00, 0xDA, 0x31, 0x00, 0x26, 0x01, 
45581
  0xDA, 0x33, 0x00, 0x26, 0x02, 0xDA, 0x8B, 0xF7, 0x01, 0x26, 0x04, 0xDA, 0x39, 0x02, 0x26, 0x05, 
45582
  0xCF, 0x04, 0x73, 0x70, 0x61, 0x6E, 0x03, 0x26, 0x06, 0xCF, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 
45583
  0x6F, 0x72, 0x79, 0x04, 0x26, 0x07, 0xCF, 0x06, 0x69, 0x73, 0x2D, 0x6E, 0x65, 0x77, 0x04, 0x25, 
45584
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x72, 0x07, 0x25, 0x09, 0xCF, 0x07, 0x5F, 
45585
  0x30, 0x30, 0x30, 0x30, 0x33, 0x71, 0x0A, 0x25, 0x0A, 0xDA, 0x1E, 0x0D, 0x25, 0x0B, 0xDA, 0x80, 
45586
  0x87, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x28, 0x06, 0x00, 
45587
  0x00, 0x29, 0x07, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 
45588
  0x00, 0x1F, 0x09, 0x1D, 0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x08, 0x00, 0x31, 0x0A, 0x00, 
45589
  0x00, 0x35, 0x08, 0x00, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x1E, 0x07, 0x09, 0x00, 0x2A, 0x07, 0x00, 
45590
  0x00, 0x1B, 0x06, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x32, 0x04, 0x05, 
45591
  0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x08, 0x0C, 0x00, 0x1C, 0x0D, 0x00, 0x00, 0x25, 0x08, 0x0B, 
45592
  0x06, 0x1E, 0x08, 0x05, 0x00, 0x32, 0x05, 0x0A, 0x00, 0x2C, 0x0D, 0x00, 0x00, 0x35, 0x0C, 0x0D, 
45593
  0x00, 0x1C, 0x07, 0x00, 0x00, 0x1B, 0x06, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x40, 0x05, 0x00, 
45594
  0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x0D, 0x00, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x49, 0x09, 0x01, 
45595
  0x09, 0x1C, 0xE4, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x86, 0xE1, 0x03, 0x00, 0x03, 0x01, 0x03, 
45596
  0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45597
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x01, 0x12, 0x00, 0x25, 0x00, 0x36, 0x00, 0x36, 
45598
  0x00, 0x46, 0x00, 0x46, 0x00, 0x46, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0xBF, 0xFE, 0x05, 0x02, 0x16, 
45599
  0x00, 0x16, 0x00, 0x16, 0xBF, 0xFE, 0x05, 0x03, 0x0B, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x2C, 0x00, 
45600
  0x2C, 0x00, 0x2C, 0xBF, 0xFB, 0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 0xDA, 0x80, 0xBB, 0xD7, 0x01, 
45601
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x01, 
45602
  0x0A, 0xCE, 0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 
45603
  0xDA, 0x04, 0xDA, 0x8B, 0x16, 0xDA, 0x8A, 0x4E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 
45604
  0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x00, 
45605
  0x04, 0xDA, 0x80, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
45606
  0x80, 0xB9, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x80, 0xBA, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xCD, 0x00, 
45607
  0x06, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xBB, 0x2C, 0x03, 0x00, 0x00, 0x2C, 
45608
  0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x36, 
45609
  0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x15, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45610
  0x00, 0x05, 0xDB, 0x00, 0xCF, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0xD7, 
45611
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x01, 0x04, 0x00, 0x01, 0x03, 0xCE, 
45612
  0x09, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x88, 0x8C, 0x00, 
45613
  0x04, 0x00, 0xDA, 0x31, 0x00, 0x04, 0x01, 0xDA, 0x33, 0x00, 0x04, 0x02, 0xDA, 0x8C, 0x01, 0x30, 
45614
  0x03, 0x00, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0xCD, 
45615
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 0x08, 0x01, 0x05, 0xCE, 0x0E, 0x73, 0x6F, 
45616
  0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 0x04, 0xBF, 0xFF, 
45617
  0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x33, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8C, 
45618
  0x01, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x80, 0x87, 0x31, 0x00, 0x00, 0x00, 
45619
  0x2D, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 
45620
  0x35, 0x03, 0x04, 0x00, 0x23, 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0xD8, 
45621
  0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x29, 0x00, 0x29, 0x83, 
45622
  0xD8, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xDA, 0x8B, 0xAD, 0xDA, 
45623
  0x82, 0xB5, 0xDA, 0x83, 0xF7, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
45624
  0x02, 0x08, 0x00, 0x02, 0xCE, 0x02, 0x2D, 0x2D, 0xDA, 0x04, 0xDA, 0x84, 0x11, 0xDA, 0x82, 0x5C, 
45625
  0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0xF7, 0x2C, 0x03, 0x00, 0x00, 0x2B, 
45626
  0x04, 0x01, 0x00, 0x33, 0x03, 0x00, 0x04, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 
45627
  0x04, 0x00, 0x02, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0x8C, 0x2F, 0x00, 0x2F, 
45628
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xCF, 0x0D, 0x2A, 0x6C, 
45629
  0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x2A, 0xDA, 0x85, 0x76, 0xCF, 0x05, 
45630
  0x79, 0x69, 0x65, 0x6C, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x04, 0x02, 0x01, 0x00, 0x01, 
45631
  0x00, 0x02, 0xCE, 0x05, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x38, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 
45632
  0x00, 0xDA, 0x82, 0x17, 0xDA, 0x82, 0x15, 0xCF, 0x06, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xD7, 
45633
  0x00, 0xCD, 0x00, 0x08, 0x00, 0x20, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x06, 0x63, 0x61, 
45634
  0x6E, 0x63, 0x65, 0x6C, 0x4C, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x0E, 0x66, 0x66, 
45635
  0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0xD8, 0x0E, 0x66, 0x66, 
45636
  0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0xCF, 0x06, 0x65, 0x64, 
45637
  0x65, 0x66, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 0x01, 0x01, 0xCD, 0x7F, 
45638
  0xFF, 0xFF, 0xFF, 0x0D, 0x2F, 0x00, 0x05, 0xDA, 0x89, 0x89, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 
45639
  0xAE, 0xD0, 0x06, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDB, 0xDA, 
45640
  0x80, 0xAB, 0xDA, 0x83, 0x42, 0xDA, 0x80, 0xDE, 0xDA, 0x88, 0x1C, 0xDA, 0x80, 0xDF, 0xDA, 0x87, 
45641
  0xC9, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 0x81, 0x00, 0x2F, 0x00, 0xDA, 0x64, 0x00, 0x2F, 0x01, 0xDA, 
45642
  0x80, 0xC7, 0x00, 0x2F, 0x02, 0xDA, 0x8C, 0x10, 0x02, 0x2F, 0x04, 0xDA, 0x31, 0x05, 0x2F, 0x05, 
45643
  0xDA, 0x82, 0xCD, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 
45644
  0x05, 0x00, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x05, 0x03, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 
45645
  0x07, 0x01, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x03, 0x34, 0x01, 0x00, 0x00, 0x45, 
45646
  0x06, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x33, 0x07, 0x06, 0x08, 0x45, 
45647
  0x03, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x07, 0x04, 0x03, 0x45, 0x06, 0x00, 0x00, 0x2C, 
45648
  0x07, 0x06, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x33, 
45649
  0x08, 0x05, 0x03, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x32, 0x08, 0x04, 0x00, 0x45, 
45650
  0x03, 0x00, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x2C, 0x0A, 0x09, 0x00, 0x33, 0x09, 0x03, 0x0A, 0x45, 
45651
  0x08, 0x00, 0x00, 0x2C, 0x09, 0x0A, 0x00, 0x33, 0x09, 0x05, 0x04, 0x45, 0x03, 0x00, 0x00, 0x2C, 
45652
  0x0A, 0x0B, 0x00, 0x33, 0x0A, 0x00, 0x03, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x0C, 0x00, 0x33, 
45653
  0x0A, 0x08, 0x05, 0x31, 0x09, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x0B, 0x00, 0x33, 
45654
  0x09, 0x06, 0x07, 0x31, 0x03, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x81, 
45655
  0x80, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 
45656
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45657
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45658
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45659
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45660
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0B, 
45661
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x80, 0xD2, 0xCF, 0x0A, 
45662
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 
45663
  0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 0x74, 
45664
  0x65, 0xD8, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xDA, 0x86, 0x3C, 0xD7, 
45665
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x09, 
45666
  0x00, 0x03, 0xCE, 0x08, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xDA, 0x04, 0xDA, 0x82, 
45667
  0xC9, 0xDA, 0x59, 0xDA, 0x86, 0x7E, 0x00, 0x09, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x09, 0x01, 0xDA, 
45668
  0x86, 0x74, 0x00, 0x09, 0x02, 0xDA, 0x86, 0x3C, 0x44, 0x03, 0x00, 0x00, 0x32, 0x00, 0x03, 0x00, 
45669
  0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x00, 0x03, 0x00, 
45670
  0x34, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x36, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x03, 
45671
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x12, 
45672
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 
45673
  0x78, 0x3F, 0xDA, 0x81, 0xBB, 0xCF, 0x02, 0x69, 0x6E, 0xDA, 0x82, 0x58, 0xCF, 0x09, 0x6F, 0x73, 
45674
  0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0xDA, 0x88, 0xEC, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 
45675
  0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 0x0B, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 
45676
  0x69, 0x67, 0x6E, 0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0xDA, 0x81, 
45677
  0x9E, 0xDA, 0x81, 0x9A, 0xCF, 0x0A, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 
45678
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x00, 0x0F, 0x00, 0x07, 0xCE, 
45679
  0x0A, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0xDA, 0x04, 0x00, 0x0F, 0x00, 
45680
  0xDA, 0x85, 0xF7, 0x00, 0x0F, 0x01, 0xDA, 0x8C, 0x20, 0x01, 0x0F, 0x03, 0xDA, 0x39, 0x01, 0x0E, 
45681
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x7A, 0x04, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 
45682
  0x30, 0x30, 0x30, 0x30, 0x33, 0x79, 0x08, 0x0E, 0x07, 0xDA, 0x3A, 0x0A, 0x0E, 0x08, 0xDA, 0x46, 
45683
  0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 
45684
  0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x09, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x3D, 0x06, 0x04, 0x00, 
45685
  0x1B, 0x07, 0x06, 0x00, 0x3D, 0x06, 0x04, 0x01, 0x1B, 0x08, 0x06, 0x00, 0x3C, 0x03, 0x07, 0x08, 
45686
  0x49, 0x05, 0x00, 0x05, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x87, 0x16, 0x03, 0x00, 
45687
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45688
  0x03, 0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x04, 0x62, 
45689
  0x61, 0x6E, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0D, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
45690
  0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x04, 0x62, 0x61, 0x6E, 0x64, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 
45691
  0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 
45692
  0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0xFF, 0xFF, 0x3D, 0x04, 0x00, 0x00, 0x10, 0x03, 
45693
  0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 
45694
  0x00, 0x05, 0x10, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 
45695
  0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6D, 
45696
  0x70, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6D, 0x70, 0xCF, 0x0F, 0x6D, 0x61, 
45697
  0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x0F, 0x6D, 
45698
  0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xDA, 0x82, 
45699
  0xB2, 0xDA, 0x82, 0xE9, 0xDA, 0x86, 0x4B, 0xDA, 0x86, 0x53, 0xCF, 0x06, 0x78, 0x70, 0x72, 0x69, 
45700
  0x6E, 0x66, 0xD8, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x72, 
45701
  0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 
45702
  0xCF, 0x0B, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 0x79, 0x74, 0x65, 0xD8, 0x0B, 0x70, 
45703
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 0x79, 0x74, 0x65, 0xCF, 0x04, 0x6E, 0x61, 0x74, 0x3F, 
45704
  0xD8, 0x04, 0x6E, 0x61, 0x74, 0x3F, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 
45705
  0x6B, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 0x6B, 0xCF, 0x09, 0x6D, 0x61, 
45706
  0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x32, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 
45707
  0x70, 0x32, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 
45708
  0x6F, 0x70, 0x65, 0x6E, 0xCF, 0x15, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 
45709
  0x72, 0x2D, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xD8, 0x15, 0x66, 0x66, 0x69, 
45710
  0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
45711
  0x6F, 0x6E, 0xDA, 0x82, 0x32, 0xDA, 0x82, 0x30, 0xCF, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
45712
  0x6C, 0x69, 0x6E, 0x65, 0x61, 0x67, 0x65, 0xD8, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 
45713
  0x69, 0x6E, 0x65, 0x61, 0x67, 0x65, 0xCF, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 
45714
  0x69, 0x74, 0xD8, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0xCF, 0x0A, 
45715
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 
45716
  0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0xCF, 0x07, 0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 
45717
  0x85, 0x6D, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0xD8, 0x0A, 
45718
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0xCF, 0x0B, 0x65, 0x76, 0x2F, 0x64, 
45719
  0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x8A, 0x1D, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x66, 
45720
  0x75, 0x6C, 0x6C, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x66, 0x75, 0x6C, 0x6C, 0xCF, 0x06, 0x66, 0x72, 
45721
  0x65, 0x65, 0x7A, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x11, 0x01, 0x01, 0x01, 0x0C, 
45722
  0x4C, 0x00, 0x0E, 0xCE, 0x06, 0x66, 0x72, 0x65, 0x65, 0x7A, 0x65, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 
45723
  0x6A, 0xDA, 0x70, 0xDA, 0x81, 0xF8, 0xDA, 0x2C, 0xDA, 0x61, 0xDA, 0x68, 0xDA, 0x84, 0x7A, 0xD8, 
45724
  0x08, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x69, 0xDA, 0x82, 0x4E, 0xDA, 0x81, 
45725
  0x28, 0x00, 0x4C, 0x00, 0xDA, 0x1E, 0x00, 0x4C, 0x01, 0xDA, 0x8C, 0x48, 0x04, 0x4C, 0x03, 0xDA, 
45726
  0x82, 0xD5, 0x07, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x46, 0x17, 0x1E, 
45727
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x47, 0x20, 0x45, 0x07, 0xCF, 0x08, 0x74, 
45728
  0x65, 0x6D, 0x70, 0x2D, 0x74, 0x61, 0x62, 0x20, 0x3D, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45729
  0x30, 0x34, 0x49, 0x23, 0x3D, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x48, 0x26, 
45730
  0x3D, 0x09, 0xDA, 0x3A, 0x27, 0x3D, 0x0A, 0xDA, 0x46, 0x2A, 0x3D, 0x0B, 0xDA, 0x8B, 0xED, 0x2D, 
45731
  0x3D, 0x0C, 0xCF, 0x02, 0x76, 0x76, 0x2F, 0x3D, 0x0D, 0xDA, 0x85, 0xA8, 0x39, 0x3D, 0x0E, 0xCF, 
45732
  0x03, 0x6E, 0x65, 0x77, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
45733
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x04, 0x03, 0x05, 
45734
  0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x00, 0x00, 
45735
  0x2C, 0x07, 0x02, 0x00, 0x25, 0x06, 0x03, 0x07, 0x1B, 0x04, 0x06, 0x00, 0x1E, 0x04, 0x07, 0x00, 
45736
  0x32, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 
45737
  0x2C, 0x06, 0x04, 0x00, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x25, 0x05, 0x03, 0x06, 
45738
  0x1B, 0x06, 0x05, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0x04, 0x00, 0x00, 
45739
  0x2C, 0x08, 0x06, 0x00, 0x25, 0x07, 0x03, 0x08, 0x1B, 0x05, 0x07, 0x00, 0x1E, 0x05, 0x27, 0x00, 
45740
  0x44, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x06, 0x00, 0x08, 
45741
  0x1B, 0x08, 0x06, 0x00, 0x1F, 0x08, 0x19, 0x00, 0x3A, 0x06, 0x00, 0x08, 0x1B, 0x09, 0x08, 0x00, 
45742
  0x1B, 0x0A, 0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x06, 0x01, 0x00, 0x1B, 0x0B, 0x06, 0x00, 
45743
  0x31, 0x0A, 0x00, 0x00, 0x35, 0x06, 0x01, 0x00, 0x1B, 0x0C, 0x06, 0x00, 0x3B, 0x06, 0x07, 0x0B, 
45744
  0x1B, 0x0D, 0x06, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x25, 0x0E, 0x0F, 0x0D, 0x1E, 0x0E, 0x03, 0x00, 
45745
  0x1B, 0x06, 0x0C, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x32, 0x0C, 0x0D, 0x00, 0x2C, 0x10, 0x07, 0x00, 
45746
  0x35, 0x0F, 0x10, 0x00, 0x1B, 0x06, 0x0F, 0x00, 0x1B, 0x0E, 0x06, 0x00, 0x3C, 0x07, 0x0B, 0x0E, 
45747
  0x49, 0x08, 0x00, 0x08, 0x1C, 0xE8, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x08, 0x00, 
45748
  0x35, 0x06, 0x08, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x08, 0x01, 0x00, 0x32, 0x07, 0x08, 0x00, 
45749
  0x2C, 0x06, 0x09, 0x00, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x0A, 0x00, 0x25, 0x06, 0x03, 0x07, 
45750
  0x1E, 0x06, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x36, 0x07, 0x00, 0x00, 
45751
  0x03, 0x00, 0x00, 0x00, 0x88, 0xD7, 0x01, 0x05, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 
45752
  0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x17, 0x00, 
45753
  0x05, 0xBF, 0xFF, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45754
  0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x17, 
45755
  0x00, 0x05, 0xBF, 0xFC, 0x03, 0x05, 0x05, 0x00, 0x05, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
45756
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x11, 0x00, 
45757
  0x11, 0x00, 0x09, 0x01, 0x12, 0x00, 0x09, 0x01, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 
45758
  0x12, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 0xBF, 0xFB, 0x07, 
45759
  0x00, 0x07, 0x06, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 
45760
  0x00, 0x07, 0x02, 0x05, 0x00, 0x05, 0xBF, 0xF0, 0x03, 0x11, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
45761
  0xEF, 0x03, 0xCF, 0x06, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
45762
  0x00, 0x09, 0x02, 0x01, 0x02, 0x07, 0x19, 0x00, 0x04, 0xCE, 0x06, 0x61, 0x73, 0x73, 0x65, 0x72, 
45763
  0x74, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xCE, 0x14, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 
45764
  0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x6A, 0xDA, 0x81, 
45765
  0x4B, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0xCE, 0x05, 
45766
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x01, 0x00, 0x00, 0x00, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 
45767
  0x19, 0x00, 0xDA, 0x1E, 0x00, 0x19, 0x01, 0xDA, 0x85, 0x8D, 0x00, 0x19, 0x02, 0xDA, 0x8C, 0x53, 
45768
  0x02, 0x19, 0x04, 0xDA, 0x46, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 
45769
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x33, 0x06, 0x04, 0x00, 0x45, 0x05, 0x00, 0x00, 0x1E, 0x01, 0x03, 
45770
  0x00, 0x1B, 0x06, 0x01, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x32, 0x07, 0x00, 
45771
  0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x04, 
45772
  0x00, 0x32, 0x08, 0x06, 0x00, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x33, 0x08, 0x04, 
45773
  0x04, 0x31, 0x07, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x33, 0x08, 0x05, 
45774
  0x06, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x80, 0x96, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
45775
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1D, 0x00, 0x1D, 
45776
  0x00, 0x1D, 0x00, 0x1D, 0x00, 0x11, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45777
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x2A, 
45778
  0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x70, 0x61, 0x74, 0x68, 0x2A, 0xDA, 0x88, 0xE9, 0xDA, 
45779
  0x8B, 0x39, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0D, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
45780
  0xFF, 0x04, 0x23, 0x00, 0x07, 0xCE, 0x03, 0x61, 0x6E, 0x64, 0xDA, 0x04, 0xDA, 0x82, 0x4C, 0xDA, 
45781
  0x82, 0x81, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0x00, 0x23, 0x00, 0xDA, 0x80, 0x85, 0x00, 0x23, 0x01, 
45782
  0xDA, 0x8B, 0x39, 0x00, 0x23, 0x02, 0xDA, 0x39, 0x02, 0x23, 0x04, 0xDA, 0x37, 0x03, 0x23, 0x05, 
45783
  0xDA, 0x43, 0x08, 0x22, 0x08, 0xDA, 0x46, 0x19, 0x21, 0x0B, 0xDA, 0x81, 0x2A, 0x29, 0x02, 0x00, 
45784
  0x00, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x22, 0x06, 0x05, 
45785
  0x00, 0x1E, 0x06, 0x1D, 0x00, 0x07, 0x05, 0x05, 0x01, 0x3A, 0x07, 0x00, 0x05, 0x1B, 0x08, 0x07, 
45786
  0x00, 0x07, 0x07, 0x04, 0x01, 0x25, 0x09, 0x05, 0x07, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x02, 0x08, 
45787
  0x00, 0x1C, 0x14, 0x00, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x07, 0x0A, 
45788
  0x00, 0x1E, 0x07, 0x06, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x33, 0x0A, 0x08, 0x02, 0x31, 0x08, 0x00, 
45789
  0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0x0B, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 
45790
  0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x33, 0x0A, 0x0B, 0x08, 0x45, 0x0A, 0x00, 
45791
  0x00, 0x2C, 0x0C, 0x01, 0x00, 0x33, 0x0C, 0x0A, 0x02, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x02, 0x00, 
45792
  0x00, 0x1C, 0xE3, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x81, 0x33, 0x03, 0x01, 0x0C, 0x00, 0x03, 
45793
  0x01, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x17, 0x00, 0x12, 
45794
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 
45795
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x16, 0x01, 
45796
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xF8, 0x03, 
45797
  0xBF, 0xF9, 0x01, 0xDA, 0x89, 0x48, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x17, 0x02, 0x01, 
45798
  0x02, 0x0A, 0x3A, 0x00, 0x02, 0x0F, 0xDA, 0x8B, 0xDB, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x82, 0x91, 
45799
  0xD2, 0x01, 0x00, 0xD0, 0x08, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xCF, 0x01, 0x24, 
45800
  0xDA, 0x83, 0xC8, 0xDA, 0x30, 0xCF, 0x02, 0x24, 0x26, 0xDA, 0x8B, 0x6C, 0xDA, 0x82, 0x7C, 0xDA, 
45801
  0x80, 0xAE, 0x00, 0x3A, 0x00, 0xDA, 0x89, 0x0A, 0x00, 0x3A, 0x01, 0xDA, 0x81, 0x86, 0x00, 0x3A, 
45802
  0x02, 0xDA, 0x89, 0x48, 0x00, 0x3A, 0x03, 0xCF, 0x0E, 0x6D, 0x61, 0x78, 0x2D, 0x70, 0x61, 0x72, 
45803
  0x61, 0x6D, 0x2D, 0x73, 0x65, 0x65, 0x6E, 0x01, 0x3A, 0x04, 0xCF, 0x06, 0x76, 0x61, 0x72, 0x61, 
45804
  0x72, 0x67, 0x03, 0x3A, 0x06, 0xCF, 0x0F, 0x73, 0x61, 0x77, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 
45805
  0x61, 0x6C, 0x2D, 0x61, 0x72, 0x67, 0x06, 0x3A, 0x08, 0xDA, 0x85, 0xE8, 0x08, 0x3A, 0x0A, 0xDA, 
45806
  0x82, 0x9D, 0x0C, 0x3A, 0x0C, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x64, 0x13, 
45807
  0x3A, 0x0E, 0xCF, 0x0B, 0x6E, 0x61, 0x6D, 0x65, 0x2D, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0x15, 
45808
  0x26, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x55, 0x16, 0x26, 0x0F, 0xCF, 0x07, 
45809
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x56, 0x19, 0x26, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45810
  0x30, 0x34, 0x57, 0x1C, 0x26, 0x13, 0xDA, 0x43, 0x25, 0x3A, 0x10, 0xCF, 0x07, 0x66, 0x6E, 0x2D, 
45811
  0x61, 0x72, 0x67, 0x73, 0x2B, 0x03, 0xFF, 0xFF, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 
45812
  0x1B, 0x06, 0x05, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 
45813
  0x30, 0x09, 0x01, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x32, 0x00, 0x0A, 0x00, 0x2C, 0x0C, 0x01, 0x00, 
45814
  0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x01, 0x05, 0x00, 0x31, 0x01, 0x00, 0x00, 
45815
  0x45, 0x0E, 0x00, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 
45816
  0x1B, 0x0E, 0x0D, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2B, 0x0F, 0x00, 0x00, 
45817
  0x2B, 0x12, 0x01, 0x00, 0x06, 0x11, 0x12, 0x03, 0x1B, 0x12, 0x11, 0x00, 0x23, 0x11, 0x0F, 0x12, 
45818
  0x1E, 0x11, 0x0B, 0x00, 0x1B, 0x13, 0x0F, 0x00, 0x2C, 0x14, 0x03, 0x00, 0x33, 0x08, 0x14, 0x13, 
45819
  0x2C, 0x15, 0x04, 0x00, 0x35, 0x14, 0x15, 0x00, 0x32, 0x10, 0x14, 0x00, 0x2C, 0x16, 0x05, 0x00, 
45820
  0x35, 0x15, 0x16, 0x00, 0x05, 0x0F, 0x0F, 0x01, 0x1C, 0xF5, 0xFF, 0xFF, 0x1E, 0x04, 0x0A, 0x00, 
45821
  0x2C, 0x11, 0x06, 0x00, 0x32, 0x08, 0x11, 0x00, 0x2C, 0x12, 0x04, 0x00, 0x35, 0x11, 0x12, 0x00, 
45822
  0x2C, 0x12, 0x07, 0x00, 0x32, 0x12, 0x11, 0x00, 0x45, 0x11, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 
45823
  0x1C, 0x02, 0x00, 0x00, 0x2C, 0x0F, 0x08, 0x00, 0x34, 0x10, 0x00, 0x00, 0x34, 0x0F, 0x00, 0x00, 
45824
  0x46, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x31, 0x12, 0x00, 0x00, 0x34, 0x0E, 0x00, 0x00, 
45825
  0x32, 0x11, 0x0C, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x03, 0x0F, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
45826
  0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x07, 0x01, 0x07, 0xCE, 0x0F, 0x73, 0x61, 0x77, 0x2D, 0x73, 
45827
  0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x61, 0x72, 0x67, 0xDA, 0x04, 0xDA, 0x84, 0x7A, 0xBF, 
45828
  0xFF, 0x00, 0x00, 0xDA, 0x89, 0x0A, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 
45829
  0x02, 0xDA, 0x89, 0x48, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8C, 0x61, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
45830
  0x8C, 0x62, 0x00, 0x07, 0x00, 0xCF, 0x03, 0x6E, 0x75, 0x6D, 0x00, 0x07, 0x01, 0xDA, 0x8C, 0x63, 
45831
  0x2D, 0x02, 0x00, 0x03, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
45832
  0x2F, 0x02, 0x00, 0x03, 0x2D, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x89, 0x60, 
45833
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 
45834
  0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x08, 0x30, 0x01, 0x0A, 0xCE, 0x0A, 0x6F, 0x6E, 0x2D, 0x62, 
45835
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0xDA, 0x04, 0xDA, 0x8C, 0x5F, 0xDA, 0x81, 0xBB, 0xCF, 0x02, 
45836
  0x24, 0x30, 0xDA, 0x83, 0xC8, 0xDA, 0x8C, 0x60, 0xDA, 0x3D, 0xDA, 0x89, 0x3A, 0xDA, 0x8C, 0x33, 
45837
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x89, 0x0A, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 
45838
  0x00, 0x02, 0xDA, 0x89, 0x48, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8C, 0x61, 0xBF, 0xFF, 0x00, 0x04, 
45839
  0xDA, 0x8C, 0x62, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8C, 0x63, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 
45840
  0xE8, 0x00, 0x30, 0x00, 0xDA, 0x1E, 0x00, 0x30, 0x01, 0xDA, 0x82, 0x9D, 0x21, 0x2E, 0x05, 0xDA, 
45841
  0x8C, 0x6B, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 
45842
  0x03, 0x00, 0x1E, 0x02, 0x2B, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x25, 0x03, 0x04, 0x00, 0x1E, 0x03, 
45843
  0x0A, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x06, 0x35, 0x04, 
45844
  0x05, 0x00, 0x2D, 0x04, 0x00, 0x08, 0x2C, 0x05, 0x02, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x04, 
45845
  0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x25, 0x04, 0x05, 0x00, 0x1E, 0x04, 
45846
  0x07, 0x00, 0x29, 0x05, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x04, 0x2D, 0x05, 0x00, 0x08, 0x32, 0x05, 
45847
  0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x32, 0x00, 
45848
  0x05, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 
45849
  0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 
45850
  0x07, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x08, 
45851
  0x00, 0x06, 0x35, 0x07, 0x08, 0x00, 0x2D, 0x07, 0x00, 0x08, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x07, 
45852
  0x03, 0x00, 0x36, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 
45853
  0x00, 0x00, 0xBF, 0xFF, 0x89, 0x64, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x02, 
45854
  0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x03, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 
45855
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0xBF, 0xFB, 0x07, 0x07, 
45856
  0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x03, 0x21, 0x00, 0x21, 0x00, 
45857
  0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 
45858
  0x0F, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
45859
  0x0F, 0xBF, 0xFD, 0x0B, 0xBF, 0xF4, 0x07, 0xBF, 0xFF, 0x05, 0x89, 0x5C, 0x03, 0x01, 0x03, 0x01, 
45860
  0x03, 0x00, 0x03, 0x03, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x15, 0x11, 0x00, 
45861
  0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x14, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x14, 0x00, 0x14, 0x00, 
45862
  0x14, 0x00, 0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x22, 0x00, 0x22, 0x00, 0x10, 0x00, 
45863
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x10, 0x00, 
45864
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x01, 0x23, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 
45865
  0x32, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x03, 0x00, 
45866
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x58, 
45867
  0x01, 0x00, 0x00, 0xDA, 0x81, 0x12, 0xDA, 0x81, 0x7C, 0xCF, 0x08, 0x67, 0x65, 0x6E, 0x65, 0x72, 
45868
  0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
45869
  0xFF, 0xFF, 0x08, 0x18, 0x00, 0x03, 0xCE, 0x08, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 
45870
  0xDA, 0x04, 0xDA, 0x88, 0x59, 0xDA, 0x80, 0xB3, 0xDA, 0x8C, 0x08, 0xDA, 0x83, 0xEA, 0xDA, 0x80, 
45871
  0xAE, 0xD0, 0x08, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0xDA, 0x80, 0xDC, 0xDA, 0x85, 
45872
  0x93, 0x00, 0x18, 0x00, 0xDA, 0x84, 0x1D, 0x00, 0x18, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x18, 0x02, 
45873
  0xDA, 0x8C, 0x6E, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x46, 
45874
  0x04, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 
45875
  0x05, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x32, 0x07, 0x05, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 
45876
  0x07, 0x03, 0x00, 0x33, 0x07, 0x00, 0x06, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x2C, 
45877
  0x08, 0x05, 0x00, 0x33, 0x07, 0x08, 0x04, 0x31, 0x05, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 
45878
  0x05, 0x06, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x33, 0x05, 0x06, 0x07, 0x45, 0x04, 0x00, 0x00, 0x03, 
45879
  0x04, 0x00, 0x00, 0x82, 0xB8, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
45880
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45881
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45882
  0x00, 0x03, 0x00, 0x03, 0xDA, 0x8A, 0x81, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 
45883
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x27, 0x00, 0x07, 0xCE, 0x02, 0x6F, 0x72, 0xDA, 0x04, 
45884
  0xDA, 0x82, 0x4C, 0xDA, 0x82, 0x81, 0xDA, 0x82, 0xB5, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 
45885
  0xB3, 0x00, 0x27, 0x00, 0xDA, 0x80, 0x85, 0x00, 0x27, 0x01, 0xDA, 0x8A, 0x81, 0x01, 0x27, 0x03, 
45886
  0xDA, 0x37, 0x03, 0x27, 0x05, 0xDA, 0x43, 0x05, 0x27, 0x07, 0xDA, 0x39, 0x0A, 0x26, 0x0A, 0xCF, 
45887
  0x02, 0x66, 0x69, 0x17, 0x25, 0x0C, 0xCF, 0x03, 0x24, 0x66, 0x69, 0x3F, 0x02, 0x00, 0x00, 0x1B, 
45888
  0x03, 0x02, 0x00, 0x07, 0x04, 0x03, 0x01, 0x1B, 0x05, 0x04, 0x00, 0x3B, 0x06, 0x00, 0x05, 0x1B, 
45889
  0x07, 0x06, 0x00, 0x22, 0x08, 0x05, 0x00, 0x1E, 0x08, 0x1F, 0x00, 0x07, 0x05, 0x05, 0x01, 0x3A, 
45890
  0x09, 0x00, 0x05, 0x1B, 0x0A, 0x09, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 
45891
  0x09, 0x0B, 0x00, 0x1E, 0x09, 0x07, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x33, 0x0B, 0x0A, 0x0A, 0x31, 
45892
  0x07, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x07, 0x0B, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x2C, 
45893
  0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x33, 
45894
  0x0B, 0x0C, 0x0A, 0x2C, 0x0D, 0x02, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x33, 
45895
  0x0D, 0x0C, 0x0C, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0E, 0x02, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 
45896
  0x0E, 0x05, 0x00, 0x33, 0x0E, 0x0B, 0x0D, 0x2C, 0x0E, 0x02, 0x00, 0x35, 0x07, 0x0E, 0x00, 0x1C, 
45897
  0xE1, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x81, 0x45, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 
45898
  0x01, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x01, 0x0D, 0x00, 0x05, 0x01, 0x12, 
45899
  0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45900
  0xBF, 0xFF, 0x0E, 0x03, 0x1B, 0x00, 0x1B, 0x00, 0x12, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
45901
  0x1D, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x12, 0x00, 0x12, 
45902
  0x00, 0x12, 0x00, 0x12, 0xBF, 0xF9, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x70, 
45903
  0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x8C, 0x4B, 0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 
45904
  0x6E, 0x65, 0x63, 0x74, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 
45905
  0x74, 0xCF, 0x07, 0x2A, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2A, 0xDA, 0x86, 0xF1, 0xCF, 0x09, 0x6D, 
45906
  0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x32, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 
45907
  0x6F, 0x67, 0x32, 0xCF, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 
45908
  0x76, 0xDA, 0x83, 0x54, 0xCF, 0x04, 0x64, 0x6F, 0x63, 0x2A, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
45909
  0x00, 0x0F, 0x01, 0x00, 0x01, 0x13, 0x45, 0x00, 0x01, 0x06, 0xCE, 0x04, 0x64, 0x6F, 0x63, 0x2A, 
45910
  0xDA, 0x04, 0xDA, 0x82, 0x30, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 
45911
  0x0D, 0x3C, 0x00, 0x04, 0xCE, 0x0B, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 
45912
  0x78, 0xDA, 0x04, 0xDA, 0x8B, 0xB4, 0xDA, 0x82, 0x18, 0xDA, 0x83, 0x4B, 0xD8, 0x08, 0x64, 0x65, 
45913
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0xDA, 0x81, 0xF8, 0xDA, 0x81, 0x90, 0xDA, 0x84, 0x5C, 0xDA, 
45914
  0x84, 0x62, 0xCE, 0x0B, 0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0xDA, 
45915
  0x81, 0x28, 0xDA, 0x86, 0xF9, 0xCE, 0x0B, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x3A, 
45916
  0x0A, 0x0A, 0xCE, 0x36, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x28, 0x64, 0x6F, 
45917
  0x63, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 
45918
  0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x61, 
45919
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x00, 0x3C, 0x00, 0xCF, 0x04, 0x66, 
45920
  0x6C, 0x74, 0x72, 0x00, 0x3C, 0x01, 0xCF, 0x0B, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 
45921
  0x64, 0x65, 0x78, 0x05, 0x3C, 0x02, 0xDA, 0x83, 0xA6, 0x0F, 0x3C, 0x05, 0xCF, 0x08, 0x64, 0x79, 
45922
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x32, 0x00, 
45923
  0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x2C, 0x05, 
45924
  0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x32, 0x00, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 
45925
  0x06, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x35, 0x04, 
45926
  0x06, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x07, 
45927
  0x06, 0x00, 0x32, 0x02, 0x07, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 
45928
  0x08, 0x00, 0x32, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x09, 0x00, 0x35, 0x08, 0x09, 0x00, 0x28, 0x07, 
45929
  0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x33, 0x08, 0x07, 0x09, 0x2A, 0x07, 0x00, 0x00, 0x31, 0x07, 
45930
  0x00, 0x00, 0x2C, 0x09, 0x0A, 0x00, 0x35, 0x07, 0x09, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 
45931
  0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x07, 0x09, 0x00, 0x2C, 0x09, 
45932
  0x06, 0x00, 0x32, 0x05, 0x09, 0x00, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2C, 0x0A, 
45933
  0x0B, 0x00, 0x32, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x28, 0x09, 
45934
  0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x33, 0x0A, 0x09, 0x0B, 0x2A, 0x09, 0x00, 0x00, 0x31, 0x09, 
45935
  0x00, 0x00, 0x2C, 0x0B, 0x0A, 0x00, 0x35, 0x09, 0x0B, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 
45936
  0x05, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x09, 0x0C, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x09, 
45937
  0x05, 0x00, 0x36, 0x09, 0x00, 0x00, 0x8D, 0xB5, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 
45938
  0x11, 0x00, 0x03, 0x01, 0x2C, 0x00, 0x2C, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x11, 0x00, 
45939
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x2E, 0x00, 0x2E, 0x00, 
45940
  0x2E, 0x00, 0x2E, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
45941
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
45942
  0x03, 0x00, 0x03, 0x01, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x16, 0x00, 0x16, 0x00, 
45943
  0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
45944
  0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
45945
  0x81, 0x26, 0xDA, 0x82, 0x51, 0xD2, 0x0D, 0x01, 0xDA, 0x82, 0x99, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 
45946
  0xB3, 0xDA, 0x80, 0xAE, 0xDA, 0x82, 0x81, 0xDA, 0x82, 0x9B, 0xDA, 0x82, 0x98, 0xDA, 0x82, 0x5C, 
45947
  0xCF, 0x06, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x82, 0xBB, 0xDA, 0x82, 0x9A, 0xDA, 0x82, 
45948
  0x55, 0xDA, 0x82, 0x5D, 0xDA, 0x88, 0xB2, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
45949
  0x01, 0x01, 0x06, 0x09, 0x00, 0x02, 0xCE, 0x18, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x73, 0x70, 
45950
  0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 
45951
  0xDA, 0x04, 0xDA, 0x87, 0x94, 0xCE, 0x12, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 
45952
  0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x0A, 0xCE, 0x05, 0x20, 0x20, 0x20, 0x20, 0x28, 
45953
  0xCE, 0x07, 0x20, 0x2E, 0x2E, 0x2E, 0x29, 0x0A, 0x0A, 0xCE, 0x33, 0x20, 0x20, 0x20, 0x20, 0x53, 
45954
  0x65, 0x65, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6A, 0x61, 0x6E, 0x65, 0x74, 
45955
  0x2D, 0x6C, 0x61, 0x6E, 0x67, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x64, 0x6F, 0x63, 0x73, 0x2F, 0x73, 
45956
  0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x73, 0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x0A, 0x0A, 0xDA, 0x81, 
45957
  0x90, 0x00, 0x09, 0x00, 0xDA, 0x1E, 0x00, 0x09, 0x01, 0xCF, 0x18, 0x70, 0x72, 0x69, 0x6E, 0x74, 
45958
  0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x65, 0x6E, 
45959
  0x74, 0x72, 0x79, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 
45960
  0x02, 0x03, 0x04, 0x2C, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x04, 0x00, 0x33, 0x00, 0x02, 0x03, 0x2C, 
45961
  0x02, 0x05, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8D, 0xD4, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45962
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0xB0, 
45963
  0xDA, 0x81, 0xB6, 0xDA, 0x06, 0xDA, 0x86, 0xF5, 0xDA, 0x86, 0xF6, 0xDA, 0x03, 0xDA, 0x86, 0xEF, 
45964
  0xCE, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0xDA, 0x87, 0x9B, 0xDA, 0x81, 0x90, 0xDA, 
45965
  0x82, 0x15, 0x00, 0x45, 0x00, 0xDA, 0x80, 0x8B, 0x00, 0x45, 0x01, 0xDA, 0x8C, 0x7D, 0x0C, 0x41, 
45966
  0x04, 0xDA, 0x1E, 0x20, 0x3E, 0x08, 0xDA, 0x82, 0x2B, 0x22, 0x3E, 0x09, 0xDA, 0x82, 0x29, 0x25, 
45967
  0x3E, 0x07, 0xCF, 0x07, 0x6D, 0x6F, 0x64, 0x2D, 0x65, 0x6E, 0x76, 0x31, 0x00, 0x00, 0x00, 0x2C, 
45968
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x05, 0x00, 0x30, 0x03, 0x00, 0x00, 0x31, 
45969
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x31, 
45970
  0x00, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 
45971
  0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1E, 0x03, 0x2E, 0x00, 0x2C, 
45972
  0x05, 0x04, 0x00, 0x32, 0x00, 0x05, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 
45973
  0x05, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x36, 0x06, 0x00, 0x00, 0x31, 
45974
  0x00, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 
45975
  0x08, 0x08, 0x00, 0x35, 0x07, 0x08, 0x00, 0x3D, 0x06, 0x07, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x3D, 
45976
  0x06, 0x07, 0x01, 0x1B, 0x09, 0x06, 0x00, 0x2C, 0x07, 0x09, 0x00, 0x3A, 0x06, 0x07, 0x08, 0x1B, 
45977
  0x07, 0x06, 0x00, 0x1E, 0x06, 0x13, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x33, 
45978
  0x08, 0x0A, 0x0B, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x0A, 0x00, 0x3A, 0x0B, 0x07, 0x0C, 0x2C, 
45979
  0x0C, 0x0B, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x0C, 0x00, 0x33, 0x0C, 0x0D, 0x0E, 0x2C, 
45980
  0x0C, 0x0D, 0x00, 0x33, 0x09, 0x0C, 0x0A, 0x2C, 0x0C, 0x0A, 0x00, 0x32, 0x0C, 0x0B, 0x00, 0x43, 
45981
  0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x0E, 0x00, 0x36, 0x0B, 0x00, 0x00, 0x2C, 
45982
  0x0A, 0x0F, 0x00, 0x2C, 0x0B, 0x10, 0x00, 0x33, 0x0A, 0x00, 0x0B, 0x2C, 0x0A, 0x11, 0x00, 0x36, 
45983
  0x0A, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x0E, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2C, 
45984
  0x03, 0x12, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0xCD, 
45985
  0x00, 0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x03, 0xDA, 0x04, 0xD8, 0x0B, 
45986
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
45987
  0x80, 0x8B, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0x7D, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2D, 0x01, 
45988
  0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 
45989
  0x8D, 0xDF, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x8D, 0xDE, 0x05, 0x00, 0x05, 0x00, 0x05, 
45990
  0xBF, 0xFF, 0x03, 0x02, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x06, 0x0E, 
45991
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x0D, 
45992
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x33, 
45993
  0x00, 0x33, 0x00, 0x33, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
45994
  0x00, 0x0D, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x0D, 0x03, 0x30, 0x00, 0x30, 0x00, 0x30, 
45995
  0x00, 0x30, 0x01, 0x29, 0x00, 0x29, 0xBF, 0xFD, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
45996
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x04, 
45997
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 
45998
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x0B, 0x62, 0x75, 0x66, 
45999
  0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0xDA, 0x87, 0x5E, 0xCF, 0x03, 0x2D, 0x3F, 0x3E, 
46000
  0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 
46001
  0x05, 0x00, 0x01, 0x04, 0xCE, 0x03, 0x2D, 0x3F, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 0xBD, 0x00, 0x05, 
46002
  0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 0x8C, 0x96, 0x01, 
46003
  0x05, 0x04, 0xDA, 0x88, 0x69, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x33, 0x04, 0x00, 
46004
  0x01, 0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x02, 
46005
  0x02, 0x02, 0x09, 0x2F, 0x00, 0x07, 0xDA, 0x88, 0x6A, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 
46006
  0x88, 0x6B, 0xDA, 0x82, 0xB5, 0xDA, 0x5C, 0xDA, 0x82, 0xB1, 0xDA, 0x71, 0xDA, 0x82, 0x81, 0xDA, 
46007
  0x83, 0xF2, 0x00, 0x2F, 0x00, 0xDA, 0x82, 0xB2, 0x00, 0x2F, 0x01, 0xDA, 0x32, 0x00, 0x2F, 0x02, 
46008
  0xDA, 0x88, 0x69, 0x17, 0x2F, 0x05, 0xDA, 0x82, 0xCA, 0x19, 0x2F, 0x06, 0xDA, 0x82, 0x33, 0x1C, 
46009
  0x2F, 0x07, 0xDA, 0x80, 0x8B, 0x22, 0x2F, 0x08, 0xDA, 0x38, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 
46010
  0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 
46011
  0x0C, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 0x00, 0x32, 0x01, 
46012
  0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 
46013
  0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x40, 0x04, 
46014
  0x00, 0x00, 0x32, 0x01, 0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 
46015
  0x06, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 0x01, 0x1B, 0x06, 
46016
  0x04, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x04, 0x07, 0x00, 0x1B, 0x07, 0x04, 0x00, 0x32, 0x05, 
46017
  0x07, 0x00, 0x40, 0x08, 0x00, 0x00, 0x32, 0x08, 0x06, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x09, 
46018
  0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x32, 0x07, 0x00, 0x00, 0x46, 0x0A, 0x00, 0x00, 0x32, 0x01, 
46019
  0x08, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x33, 0x0D, 
46020
  0x07, 0x0B, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x33, 0x0D, 0x0A, 0x0C, 0x45, 0x0B, 
46021
  0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x85, 0x8B, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 
46022
  0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 
46023
  0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 
46024
  0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x0E, 0x00, 
46025
  0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
46026
  0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46027
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x8A, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 
46028
  0x00, 0x03, 0xCF, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0xD8, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 
46029
  0xCF, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 
46030
  0x65, 0xDA, 0x11, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x6F, 0x70, 0x6E, 
46031
  0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x6F, 0x70, 0x6E, 0xDA, 0x8A, 0x1C, 
46032
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 
46033
  0x0C, 0x00, 0x02, 0xDA, 0x85, 0x95, 0xDA, 0x04, 0xDA, 0x80, 0xAE, 0xD0, 0x04, 0x63, 0x6F, 0x72, 
46034
  0x6F, 0xDA, 0x8A, 0xB0, 0xDA, 0x82, 0xB5, 0xDA, 0x80, 0xDC, 0xDA, 0x85, 0x93, 0x00, 0x0C, 0x00, 
46035
  0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x01, 0xDA, 0x8A, 0x1C, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
46036
  0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x02, 0x03, 0x04, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x03, 
46037
  0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x33, 0x03, 0x02, 
46038
  0x04, 0x2C, 0x03, 0x03, 0x00, 0x36, 0x03, 0x00, 0x00, 0x82, 0xBE, 0x14, 0x00, 0x14, 0x00, 0x14, 
46039
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46040
  0x00, 0x03, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xDA, 
46041
  0x8C, 0x94, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x74, 0x61, 0x6B, 0x65, 0xDA, 0x80, 0xD3, 0xCF, 0x0C, 
46042
  0x2A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2A, 0xDA, 0x85, 0x44, 0xCF, 
46043
  0x0E, 0x2A, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x2A, 0xDA, 
46044
  0x85, 0x42, 0xCF, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x76, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
46045
  0x00, 0x15, 0x01, 0x01, 0x01, 0x15, 0x4C, 0x00, 0x0A, 0xCE, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 
46046
  0x76, 0xDA, 0x04, 0xDA, 0x82, 0xC8, 0xDA, 0x82, 0x7C, 0xDA, 0x81, 0x26, 0xDA, 0x78, 0xDA, 0x85, 
46047
  0x42, 0xCE, 0x0A, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x5B, 0x25, 0x73, 0x5D, 0xDA, 0x81, 0x4B, 
46048
  0xCE, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0xDA, 0x82, 0xFE, 0xDA, 0x85, 0x2C, 0xCE, 0x17, 0x20, 
46049
  0x6F, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6C, 0x75, 
46050
  0x6D, 0x6E, 0x20, 0x25, 0x64, 0x3A, 0xCE, 0x07, 0x20, 0x25, 0x6A, 0x20, 0x69, 0x73, 0x20, 0xDA, 
46051
  0x81, 0x28, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x98, 0xDA, 0x84, 0x64, 0xDA, 0x83, 0x32, 
46052
  0xDA, 0x85, 0x14, 0xDA, 0x84, 0x5A, 0xDA, 0x82, 0x9A, 0x00, 0x4C, 0x00, 0xDA, 0x1E, 0x00, 0x4C, 
46053
  0x01, 0xDA, 0x8C, 0xA4, 0x09, 0x4C, 0x04, 0xDA, 0x80, 0xCE, 0x0B, 0x4C, 0x05, 0xDA, 0x83, 0x1C, 
46054
  0x10, 0x4C, 0x06, 0xCF, 0x02, 0x63, 0x66, 0x19, 0x4C, 0x08, 0xCF, 0x05, 0x66, 0x6D, 0x74, 0x2D, 
46055
  0x31, 0x1D, 0x25, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6B, 0x2D, 0x4C, 0x0A, 
46056
  0xCF, 0x05, 0x66, 0x6D, 0x74, 0x2D, 0x32, 0x32, 0x4C, 0x0C, 0xDA, 0x81, 0x4C, 0x35, 0x4C, 0x0E, 
46057
  0xDA, 0x81, 0x2A, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 
46058
  0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 
46059
  0x03, 0x04, 0x00, 0x3D, 0x02, 0x03, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x3D, 0x02, 0x03, 0x01, 0x1B, 
46060
  0x05, 0x02, 0x00, 0x2C, 0x02, 0x04, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 
46061
  0x02, 0x06, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1E, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x32, 
46062
  0x08, 0x06, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x1C, 
46063
  0x02, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
46064
  0x0B, 0x08, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 
46065
  0x0A, 0x0B, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 
46066
  0x0C, 0x0D, 0x00, 0x1B, 0x0A, 0x0C, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x09, 0x09, 0x00, 0x1C, 
46067
  0x06, 0x00, 0x00, 0x2C, 0x0B, 0x0A, 0x00, 0x33, 0x0B, 0x04, 0x05, 0x2C, 0x0C, 0x06, 0x00, 0x35, 
46068
  0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x0B, 0x00, 0x33, 
46069
  0x08, 0x0A, 0x0B, 0x2C, 0x0C, 0x0C, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2C, 
46070
  0x0E, 0x0D, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x2C, 0x10, 0x0E, 0x00, 0x33, 
46071
  0x10, 0x0E, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x0F, 0x00, 0x32, 0x11, 0x00, 0x00, 0x45, 
46072
  0x10, 0x00, 0x00, 0x2C, 0x12, 0x10, 0x00, 0x33, 0x12, 0x0C, 0x10, 0x45, 0x11, 0x00, 0x00, 0x2C, 
46073
  0x12, 0x02, 0x00, 0x2C, 0x13, 0x11, 0x00, 0x2C, 0x14, 0x12, 0x00, 0x33, 0x12, 0x13, 0x14, 0x45, 
46074
  0x10, 0x00, 0x00, 0x2C, 0x13, 0x13, 0x00, 0x33, 0x13, 0x10, 0x0E, 0x45, 0x12, 0x00, 0x00, 0x2C, 
46075
  0x13, 0x14, 0x00, 0x33, 0x13, 0x0F, 0x11, 0x32, 0x12, 0x0E, 0x00, 0x45, 0x10, 0x00, 0x00, 0x03, 
46076
  0x10, 0x00, 0x00, 0x85, 0x46, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 
46077
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 
46078
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
46079
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 
46080
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x12, 0x00, 0x0E, 
46081
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x0E, 0x00, 0x03, 
46082
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
46083
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46084
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46085
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x83, 0x99, 0xDA, 
46086
  0x83, 0x97, 0xDA, 0x85, 0xE3, 0xDA, 0x85, 0xE1, 0xCF, 0x07, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 
46087
  0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, 0x02, 
46088
  0xCE, 0x07, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xDA, 0x04, 0xDA, 0x88, 0x49, 0x00, 0x04, 
46089
  0x00, 0xDA, 0x81, 0x5C, 0x00, 0x04, 0x01, 0xDA, 0x8C, 0xAF, 0x40, 0x02, 0x00, 0x00, 0x32, 0x02, 
46090
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x36, 0x03, 0x00, 0x00, 0x87, 0x08, 0x03, 0x00, 0x03, 0x00, 
46091
  0x03, 0x00, 0x03, 0xCF, 0x12, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x75, 
46092
  0x6E, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0xD8, 0x12, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 
46093
  0x63, 0x68, 0x2F, 0x75, 0x6E, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 
46094
  0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x89, 0xBE, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x70, 
46095
  0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 
46096
  0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0xCF, 0x04, 0x63, 0x6F, 0x6D, 0x70, 0xD7, 0x00, 0xCD, 0x02, 
46097
  0xFF, 0x00, 0x00, 0x18, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x00, 0x04, 0x03, 
46098
  0xCE, 0x04, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 0x04, 0xDA, 0x2C, 0x00, 0x3A, 0x00, 0xCF, 0x09, 0x66, 
46099
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x00, 0x3A, 0x01, 0xDA, 0x8C, 0xB7, 0x02, 0x3A, 
46100
  0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x72, 0x2E, 0x01, 0x00, 0x00, 0x3F, 0x02, 
46101
  0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x26, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 
46102
  0x00, 0x00, 0x26, 0x04, 0x03, 0x01, 0x1E, 0x04, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x05, 
46103
  0x00, 0x06, 0x03, 0x05, 0x00, 0x00, 0x26, 0x05, 0x03, 0x02, 0x1E, 0x05, 0x07, 0x00, 0x3D, 0x06, 
46104
  0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x3D, 0x06, 0x00, 0x01, 0x1B, 0x08, 0x06, 0x00, 0x30, 0x06, 
46105
  0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x26, 0x06, 0x03, 0x03, 0x1E, 0x06, 0x09, 0x00, 0x3D, 0x09, 
46106
  0x00, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 0x09, 0x00, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x3D, 0x09, 
46107
  0x00, 0x02, 0x1B, 0x0C, 0x09, 0x00, 0x30, 0x09, 0x01, 0x00, 0x03, 0x09, 0x00, 0x00, 0x26, 0x09, 
46108
  0x03, 0x04, 0x1E, 0x09, 0x0B, 0x00, 0x3D, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x3D, 0x0D, 
46109
  0x00, 0x01, 0x1B, 0x0F, 0x0D, 0x00, 0x3D, 0x0D, 0x00, 0x02, 0x1B, 0x10, 0x0D, 0x00, 0x3D, 0x0D, 
46110
  0x00, 0x03, 0x1B, 0x11, 0x0D, 0x00, 0x30, 0x0D, 0x02, 0x00, 0x03, 0x0D, 0x00, 0x00, 0x3D, 0x0D, 
46111
  0x00, 0x00, 0x1B, 0x12, 0x0D, 0x00, 0x3D, 0x0D, 0x00, 0x01, 0x1B, 0x13, 0x0D, 0x00, 0x3D, 0x0D, 
46112
  0x00, 0x02, 0x1B, 0x14, 0x0D, 0x00, 0x3D, 0x0D, 0x00, 0x03, 0x1B, 0x15, 0x0D, 0x00, 0x30, 0x0D, 
46113
  0x03, 0x00, 0x2B, 0x16, 0x04, 0x00, 0x2B, 0x17, 0xFF, 0xFF, 0x33, 0x00, 0x16, 0x17, 0x2C, 0x17, 
46114
  0x00, 0x00, 0x35, 0x16, 0x17, 0x00, 0x31, 0x0D, 0x00, 0x00, 0x34, 0x16, 0x00, 0x00, 0x36, 0x01, 
46115
  0x00, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
46116
  0x06, 0x01, 0x03, 0xDA, 0x8C, 0xB9, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x31, 0xBF, 0xFF, 
46117
  0x00, 0x08, 0xCF, 0x01, 0x67, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x02, 
46118
  0x00, 0x08, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x07, 0x36, 0x02, 
46119
  0x00, 0x00, 0xBF, 0xFF, 0x83, 0x0F, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2E, 0x00, 0x2E, 0x00, 
46120
  0x2E, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x09, 
46121
  0x01, 0x04, 0xDA, 0x8C, 0xB9, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 
46122
  0x0B, 0xDA, 0x8C, 0xBC, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xCA, 0x00, 0x09, 0x00, 0xDA, 0x1E, 
46123
  0x34, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x0C, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 
46124
  0x2D, 0x03, 0x00, 0x0B, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x0A, 
46125
  0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x10, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 
46126
  0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x00, 
46127
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x01, 0x05, 0xDA, 0x8C, 0xB9, 0xDA, 0x04, 0xBF, 
46128
  0xFF, 0x00, 0x0E, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8C, 0xBC, 0xBF, 0xFF, 0x00, 0x10, 
46129
  0xDA, 0x82, 0xCA, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x43, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x34, 0x00, 
46130
  0x00, 0x00, 0x2D, 0x02, 0x00, 0x11, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 
46131
  0x00, 0x10, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x0F, 0x35, 0x01, 
46132
  0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x0E, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 
46133
  0x83, 0x11, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x35, 0x00, 
46134
  0x35, 0x00, 0x35, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
46135
  0x01, 0x01, 0x00, 0x0C, 0x01, 0x05, 0xDA, 0x8C, 0xB9, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
46136
  0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8C, 0xBC, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xCA, 0xBF, 
46137
  0xFF, 0x00, 0x15, 0xDA, 0x43, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x02, 
46138
  0x00, 0x15, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x14, 0x35, 0x02, 
46139
  0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x13, 0x35, 0x01, 0x03, 0x00, 0x31, 0x01, 
46140
  0x00, 0x00, 0x2D, 0x02, 0x00, 0x12, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x13, 0x24, 0x00, 
46141
  0x24, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
46142
  0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x83, 0x08, 0x01, 0x04, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46143
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 0x00, 
46144
  0x03, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x1E, 0xBF, 0xFD, 0x03, 
46145
  0x00, 0x03, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x20, 
46146
  0x00, 0x20, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x05, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
46147
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x22, 0x00, 0x22, 0x01, 0x05, 0x00, 0x05, 0x00, 
46148
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x01, 0x0E, 0x00, 
46149
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x80, 0xDD, 
46150
  0x3F, 0x00, 0xCF, 0x08, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 0x6E, 0x76, 0xD7, 0x00, 0xCD, 0x00, 
46151
  0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x03, 0xDA, 
46152
  0x81, 0xA8, 0xDA, 0x04, 0xDA, 0x80, 0xAE, 0xD0, 0x08, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 0x6E, 
46153
  0x76, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0xA4, 0xDA, 0x83, 0x42, 0x00, 0x0F, 0x00, 0xDA, 0x83, 0x49, 
46154
  0x00, 0x0F, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x0F, 0x02, 0xDA, 0x8C, 0xBD, 0x46, 0x03, 0x00, 0x00, 
46155
  0x2C, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x33, 0x05, 0x06, 0x03, 0x34, 0x01, 0x00, 0x00, 
46156
  0x45, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x33, 0x05, 0x04, 0x06, 
46157
  0x31, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x32, 0x05, 0x03, 0x00, 
46158
  0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x85, 0xED, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46159
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46160
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 0xD7, 
46161
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x03, 0x02, 0x03, 0x01, 0x06, 0x00, 0x04, 0xCE, 0x06, 
46162
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 0xDA, 0x04, 0xDA, 0x83, 0x45, 0x00, 0x06, 0x00, 0xCF, 0x03, 
46163
  0x63, 0x6E, 0x64, 0x00, 0x06, 0x01, 0xDA, 0x8A, 0x5F, 0x00, 0x06, 0x02, 0xCF, 0x04, 0x66, 0x61, 
46164
  0x6C, 0x73, 0x00, 0x06, 0x03, 0xDA, 0x8C, 0xC0, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 
46165
  0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 
46166
  0x8A, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x65, 
46167
  0x61, 0x63, 0x68, 0x6B, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x02, 0x02, 0xCD, 0x7F, 
46168
  0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 0xCE, 0x05, 0x65, 0x61, 0x63, 0x68, 0x6B, 0xDA, 0x04, 
46169
  0xDA, 0x82, 0x5A, 0xDA, 0x82, 0x4A, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x82, 
46170
  0x62, 0x00, 0x05, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x05, 0x03, 0xDA, 0x8C, 0xC5, 0x2C, 0x04, 0x00, 
46171
  0x00, 0x33, 0x00, 0x01, 0x04, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 
46172
  0x00, 0x82, 0x38, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x6D, 0x61, 
46173
  0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x70, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 
46174
  0x6F, 0x67, 0x31, 0x70, 0xDA, 0x82, 0x80, 0xDA, 0x82, 0x7D, 0xCF, 0x04, 0x68, 0x61, 0x73, 0x68, 
46175
  0xD8, 0x04, 0x68, 0x61, 0x73, 0x68, 0xCF, 0x08, 0x72, 0x6F, 0x6F, 0x74, 0x2D, 0x65, 0x6E, 0x76, 
46176
  0xDA, 0x00, 0xCF, 0x0B, 0x2A, 0x64, 0x6F, 0x63, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2A, 0xDA, 
46177
  0x86, 0xFB, 0xDA, 0x82, 0xF8, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x04, 0x02, 0x04, 
46178
  0x0C, 0x30, 0x01, 0x25, 0xCE, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 
46179
  0x2D, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x28, 
46180
  0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xCE, 0x24, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 0x69, 0x6F, 
46181
  0x6E, 0x20, 0x61, 0x74, 0x20, 0x25, 0x73, 0x2C, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x6C, 
46182
  0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x81, 0x49, 0xDA, 
46183
  0x81, 0x21, 0xDA, 0x30, 0xDA, 0x81, 0x5F, 0xDA, 0x84, 0x26, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 0x00, 
46184
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
46185
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 
46186
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
46187
  0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 
46188
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 
46189
  0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 
46190
  0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 
46191
  0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
46192
  0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 
46193
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 
46194
  0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 
46195
  0xDA, 0x82, 0xF6, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0xF7, 0x00, 0x30, 0x00, 0xDA, 0x81, 0x39, 
46196
  0x00, 0x30, 0x01, 0xDA, 0x82, 0xFA, 0x00, 0x30, 0x02, 0xDA, 0x82, 0xFB, 0x00, 0x30, 0x03, 0xDA, 
46197
  0x82, 0xFC, 0x00, 0x30, 0x04, 0xDA, 0x82, 0xF8, 0x04, 0x30, 0x06, 0xDA, 0x82, 0xFB, 0x08, 0x30, 
46198
  0x08, 0xDA, 0x81, 0x3A, 0x0B, 0x30, 0x0A, 0xDA, 0x81, 0x2A, 0x13, 0x30, 0x0B, 0xDA, 0x84, 0x27, 
46199
  0x23, 0x30, 0x0F, 0xDA, 0x84, 0x27, 0x20, 0x02, 0x03, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x1C, 0x02, 
46200
  0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x08, 
46201
  0x00, 0x08, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2D, 0x0A, 0x00, 0x02, 0x35, 0x09, 
46202
  0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 
46203
  0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x33, 0x0B, 0x0A, 0x06, 0x2C, 0x0D, 0x02, 0x00, 0x35, 0x0C, 
46204
  0x0D, 0x00, 0x1B, 0x0B, 0x0C, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x32, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 
46205
  0x04, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1E, 0x0D, 0x05, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x32, 0x0E, 
46206
  0x0B, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x32, 0x01, 0x0B, 0x00, 0x2D, 0x0E, 
46207
  0x00, 0x0A, 0x35, 0x0D, 0x0E, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0F, 0x07, 0x00, 0x35, 0x0E, 
46208
  0x0F, 0x00, 0x1B, 0x0F, 0x0E, 0x00, 0x32, 0x08, 0x0F, 0x00, 0x2C, 0x11, 0x08, 0x00, 0x35, 0x10, 
46209
  0x11, 0x00, 0x1E, 0x03, 0x04, 0x00, 0x32, 0x0F, 0x03, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x35, 0x11, 
46210
  0x12, 0x00, 0x2C, 0x11, 0x0A, 0x00, 0x32, 0x11, 0x0F, 0x00, 0x2C, 0x12, 0x0B, 0x00, 0x35, 0x11, 
46211
  0x12, 0x00, 0x03, 0x0F, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x67, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46212
  0x05, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
46213
  0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
46214
  0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 
46215
  0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
46216
  0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
46217
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF2, 0x03, 0xDB, 0x01, 0xCF, 0x0D, 0x2A, 0x70, 
46218
  0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x2A, 0xD0, 0x0B, 0x70, 0x65, 0x67, 
46219
  0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0xCF, 0x05, 0x72, 0x61, 0x6E, 0x67, 0x65, 0xD8, 
46220
  0x05, 0x72, 0x61, 0x6E, 0x67, 0x65, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 
46221
  0x74, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 0x74, 0xCF, 0x0B, 0x6F, 0x73, 
46222
  0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x81, 0x21, 0xCF, 0x01, 0x2A, 0xDA, 
46223
  0x8A, 0xA7, 0xDA, 0x87, 0x6A, 0xDA, 0x87, 0x68, 0xCF, 0x0F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 
46224
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0xDA, 0x78, 0xCF, 0x0C, 0x61, 0x72, 0x72, 
46225
  0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0xDA, 0x82, 0xB1, 0xCF, 0x0A, 0x66, 0x69, 
46226
  0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 0x6F, 0x74, 0xD8, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 
46227
  0x72, 0x6F, 0x6F, 0x74, 0xCF, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 
46228
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0xD8, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 
46229
  0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 0x6D, 
46230
  0x65, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 0x6D, 0x65, 0xCF, 0x09, 0x6F, 0x73, 
46231
  0x2F, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x6E, 0x61, 
46232
  0x6D, 0x65, 0xCF, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xDA, 0x8A, 
46233
  0xFB, 0xCF, 0x07, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 0x65, 0xD8, 0x07, 0x75, 0x6E, 0x74, 0x72, 
46234
  0x61, 0x63, 0x65, 0xCF, 0x05, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x8C, 0x57, 0xCF, 0x0A, 0x65, 
46235
  0x76, 0x2F, 0x72, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xD8, 0x0A, 0x65, 0x76, 0x2F, 0x72, 0x73, 
46236
  0x65, 0x6C, 0x65, 0x63, 0x74, 0xDA, 0x89, 0xCE, 0xDA, 0x89, 0xCC, 0xCF, 0x11, 0x73, 0x74, 0x72, 
46237
  0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 0x11, 
46238
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 
46239
  0x73, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x81, 0x76, 
46240
  0xCF, 0x06, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 0xDA, 0x82, 0xD3, 0xCF, 0x06, 0x72, 0x65, 0x74, 
46241
  0x75, 0x72, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x01, 0x02, 0x01, 0x06, 
46242
  0x00, 0x03, 0xCE, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0xDA, 0x04, 0xDA, 0x88, 0x86, 0x00, 
46243
  0x06, 0x00, 0xDA, 0x81, 0x50, 0x00, 0x06, 0x01, 0xDA, 0x83, 0xC9, 0x00, 0x06, 0x02, 0xDA, 0x8C, 
46244
  0xED, 0x32, 0x00, 0x01, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 
46245
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x81, 0xA7, 0x0D, 0x00, 0x0D, 0x00, 0x03, 
46246
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x86, 0x38, 0xDA, 0x86, 0x36, 0xCF, 0x0A, 0x61, 0x72, 
46247
  0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0xDA, 0x30, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 
46248
  0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
46249
  0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 0xCF, 0x0D, 0x2A, 0x72, 0x65, 0x70, 0x6C, 0x2D, 0x70, 0x72, 
46250
  0x6F, 0x6D, 0x70, 0x74, 0x2A, 0xDA, 0x89, 0xB9, 0xCF, 0x06, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 
46251
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 
46252
  0x06, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x84, 0x2F, 0x00, 0x06, 
46253
  0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8C, 0xF4, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
46254
  0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 
46255
  0x00, 0x66, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0xCF, 0x0F, 0x2A, 
46256
  0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2A, 0xDA, 0x86, 
46257
  0x6F, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x6F, 0x66, 0xDA, 0x10, 0xCF, 
46258
  0x04, 0x6E, 0x6F, 0x74, 0x3D, 0xDA, 0x82, 0x56, 0xCF, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 
46259
  0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD8, 0x11, 0x66, 0x69, 0x62, 
46260
  0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xDA, 0x81, 
46261
  0x5D, 0xDA, 0x81, 0x5A, 0xCF, 0x03, 0x6E, 0x6F, 0x74, 0xDA, 0x82, 0x51, 0xDA, 0x89, 0x42, 0xDA, 
46262
  0x89, 0x3F, 0xCF, 0x04, 0x71, 0x75, 0x69, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
46263
  0x01, 0x00, 0x01, 0x03, 0x0A, 0x00, 0x02, 0xCE, 0x04, 0x71, 0x75, 0x69, 0x74, 0xDA, 0x04, 0xDA, 
46264
  0x85, 0x43, 0xDA, 0x82, 0xC9, 0xDA, 0x85, 0x44, 0x00, 0x0A, 0x00, 0xDA, 0x83, 0xC9, 0x00, 0x0A, 
46265
  0x01, 0xDA, 0x8C, 0xFD, 0x2C, 0x02, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 
46266
  0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 0x03, 0x00, 0x00, 
46267
  0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0xB6, 0x03, 0x00, 
46268
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 
46269
  0xFA, 0x01, 0xDA, 0x7C, 0xDA, 0x73, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 
46270
  0x6E, 0x63, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0xCF, 0x0D, 
46271
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD8, 0x0D, 0x64, 
46272
  0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xCF, 0x04, 0x2D, 0x3F, 
46273
  0x3E, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
46274
  0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x04, 0x2D, 0x3F, 0x3E, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 
46275
  0xBD, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 
46276
  0x8D, 0x04, 0x01, 0x05, 0x04, 0xDA, 0x88, 0x69, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 
46277
  0x33, 0x04, 0x00, 0x01, 0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
46278
  0x00, 0x0E, 0x02, 0x02, 0x02, 0x09, 0x31, 0x00, 0x07, 0xDA, 0x88, 0x6A, 0xDA, 0x04, 0xDA, 0x1C, 
46279
  0xDA, 0x70, 0xDA, 0x88, 0x6B, 0xDA, 0x82, 0xB5, 0xDA, 0x5C, 0xDA, 0x82, 0xB1, 0xDA, 0x71, 0xDA, 
46280
  0x82, 0x81, 0xDA, 0x83, 0xF2, 0x00, 0x31, 0x00, 0xDA, 0x82, 0xB2, 0x00, 0x31, 0x01, 0xDA, 0x32, 
46281
  0x00, 0x31, 0x02, 0xDA, 0x88, 0x69, 0x17, 0x31, 0x05, 0xDA, 0x82, 0xCA, 0x19, 0x31, 0x06, 0xDA, 
46282
  0x82, 0x33, 0x1C, 0x31, 0x07, 0xDA, 0x80, 0x8B, 0x24, 0x31, 0x08, 0xDA, 0x38, 0x31, 0x01, 0x00, 
46283
  0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 
46284
  0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 
46285
  0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 
46286
  0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 
46287
  0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 0x01, 0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 
46288
  0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 
46289
  0x01, 0x1B, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x04, 0x07, 0x00, 0x1B, 0x07, 0x04, 
46290
  0x00, 0x31, 0x05, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x40, 0x09, 0x00, 
46291
  0x00, 0x33, 0x08, 0x06, 0x09, 0x2C, 0x0B, 0x05, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x08, 0x0A, 
46292
  0x00, 0x32, 0x07, 0x00, 0x00, 0x46, 0x09, 0x00, 0x00, 0x32, 0x01, 0x08, 0x00, 0x2C, 0x0C, 0x06, 
46293
  0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x33, 0x0D, 0x07, 0x0B, 0x45, 0x0C, 0x00, 
46294
  0x00, 0x2C, 0x0D, 0x08, 0x00, 0x33, 0x0D, 0x09, 0x0C, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 
46295
  0x00, 0x85, 0x9B, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 
46296
  0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
46297
  0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 
46298
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x10, 
46299
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 
46300
  0x00, 0x05, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46301
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x9A, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 
46302
  0x03, 0xDA, 0x86, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x03, 
46303
  0x0D, 0x00, 0x04, 0xCE, 0x09, 0x76, 0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xDA, 0x04, 
46304
  0xDA, 0x83, 0xC8, 0xDA, 0x82, 0xC7, 0xDA, 0x82, 0xC9, 0x00, 0x0D, 0x00, 0xDA, 0x81, 0x86, 0x00, 
46305
  0x0D, 0x01, 0xDA, 0x83, 0xBF, 0x00, 0x0D, 0x02, 0xDA, 0x86, 0x3E, 0x03, 0x0D, 0x04, 0xDA, 0x83, 
46306
  0xCA, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 
46307
  0x00, 0x31, 0x01, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x06, 0x05, 
46308
  0x00, 0x44, 0x05, 0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 
46309
  0x00, 0x04, 0x00, 0x00, 0x00, 0x5F, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 
46310
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 
46311
  0xCF, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0xD8, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x73, 
46312
  0x36, 0x34, 0xDA, 0x80, 0xB6, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 
46313
  0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0x00, 0x02, 0xCE, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 
46314
  0x77, 0x6E, 0xDA, 0x04, 0xDA, 0x8B, 0x6C, 0xDA, 0x80, 0xAE, 0xD0, 0x05, 0x73, 0x70, 0x61, 0x77, 
46315
  0x6E, 0xDA, 0x80, 0xB0, 0x00, 0x0C, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x01, 0xDA, 0x80, 0xB6, 
46316
  0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 
46317
  0x2C, 0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 0x02, 0x34, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 
46318
  0x2C, 0x04, 0x03, 0x00, 0x32, 0x04, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 
46319
  0x8E, 0xF7, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46320
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x83, 0x58, 0xDA, 0x83, 0x56, 0xDA, 
46321
  0x82, 0xF0, 0xDA, 0x89, 0x52, 0xDA, 0x84, 0x7C, 0xDA, 0x84, 0x7A, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 
46322
  0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 
46323
  0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x80, 0xBC, 0xD7, 0x00, 0xCD, 0x00, 
46324
  0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x02, 0xCE, 
46325
  0x0F, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 
46326
  0xDA, 0x04, 0xDA, 0x8B, 0x6C, 0xDA, 0x80, 0xAE, 0xD0, 0x0C, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 
46327
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x88, 0xA4, 0xD0, 0x01, 0x6E, 0x00, 0x0F, 0x00, 0xDA, 
46328
  0x80, 0xC7, 0x00, 0x0F, 0x01, 0xDA, 0x80, 0xBC, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 
46329
  0x46, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 0x02, 
46330
  0x34, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 
46331
  0x33, 0x04, 0x03, 0x05, 0x2C, 0x04, 0x04, 0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 
46332
  0x03, 0x02, 0x00, 0x00, 0x8F, 0x1A, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46333
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46334
  0x05, 0x00, 0x05, 0xDA, 0x87, 0xCC, 0xDA, 0x87, 0xC5, 0xCF, 0x12, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
46335
  0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x81, 0xF7, 
46336
  0xCF, 0x01, 0x25, 0xDA, 0x86, 0xB4, 0xDA, 0x83, 0xB6, 0xDA, 0x1C, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 
46337
  0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x66, 0x6F, 0x72, 0x6B, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 
46338
  0x6F, 0x73, 0x69, 0x78, 0x2D, 0x66, 0x6F, 0x72, 0x6B, 0xDA, 0x82, 0xF4, 0xD7, 0x01, 0xCD, 0x03, 
46339
  0xFF, 0x00, 0x00, 0x16, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x10, 0x52, 0x01, 0x01, 0x23, 
46340
  0xCE, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
46341
  0xDA, 0x04, 0xD0, 0x06, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 
46342
  0xDA, 0x81, 0x3E, 0xCE, 0x1D, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
46343
  0x65, 0x20, 0x25, 0x76, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 
46344
  0x6C, 0x65, 0xDA, 0x81, 0x49, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xCE, 0x07, 0x2E, 0x62, 0x61, 
46345
  0x63, 0x6B, 0x75, 0x70, 0xDA, 0x81, 0x28, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 
46346
  0xDA, 0x80, 0xDF, 0xDA, 0x81, 0x6D, 0xCE, 0x0A, 0x6F, 0x6C, 0x64, 0x2D, 0x62, 0x75, 0x6E, 0x64, 
46347
  0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 
46348
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 
46349
  0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 
46350
  0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 
46351
  0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 
46352
  0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 
46353
  0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
46354
  0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 
46355
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 
46356
  0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 
46357
  0xDA, 0x82, 0xF3, 0x00, 0x52, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x52, 0x01, 0xDA, 0x81, 0x22, 0x00, 
46358
  0x52, 0x02, 0xDA, 0x88, 0x38, 0x00, 0x52, 0x03, 0xDA, 0x82, 0xF4, 0x03, 0x52, 0x05, 0xDA, 0x81, 
46359
  0x39, 0x09, 0x52, 0x06, 0xDA, 0x89, 0x76, 0x0C, 0x52, 0x09, 0xDA, 0x81, 0x2A, 0x13, 0x1A, 0x0A, 
46360
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x30, 0x23, 0x52, 0x0A, 0xCF, 0x0A, 0x62, 0x61, 
46361
  0x63, 0x6B, 0x75, 0x70, 0x2D, 0x64, 0x69, 0x72, 0x2B, 0x52, 0x0E, 0xCF, 0x14, 0x62, 0x61, 0x63, 
46362
  0x6B, 0x75, 0x70, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x73, 0x6F, 0x75, 0x72, 0x63, 
46363
  0x65, 0x31, 0x4E, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x31, 0x34, 0x4E, 0x11, 
46364
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x32, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 0x00, 
46365
  0x0D, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x44, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x00, 
46366
  0x00, 0x3B, 0x07, 0x05, 0x08, 0x20, 0x07, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1B, 0x06, 0x07, 
46367
  0x00, 0x2D, 0x09, 0x00, 0x02, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0A, 0x01, 
46368
  0x00, 0x32, 0x01, 0x0A, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 0x03, 
46369
  0x00, 0x25, 0x0B, 0x0C, 0x0A, 0x1B, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x05, 0x00, 
46370
  0x00, 0x2C, 0x0B, 0x04, 0x00, 0x32, 0x0B, 0x01, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 
46371
  0x00, 0x2C, 0x0A, 0x06, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x07, 0x00, 0x35, 0x0A, 0x0B, 
46372
  0x00, 0x33, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x09, 
46373
  0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2D, 0x0D, 0x00, 
46374
  0x09, 0x35, 0x0C, 0x0D, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x33, 0x00, 0x0A, 0x0D, 0x2D, 0x0E, 0x00, 
46375
  0x17, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x0A, 
46376
  0x00, 0x32, 0x0F, 0x10, 0x00, 0x2C, 0x11, 0x0B, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x0F, 0x10, 
46377
  0x00, 0x28, 0x11, 0x00, 0x00, 0x37, 0x10, 0x0F, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x31, 0x0F, 0x00, 
46378
  0x00, 0x2C, 0x12, 0x0C, 0x00, 0x35, 0x10, 0x12, 0x00, 0x2C, 0x13, 0x0D, 0x00, 0x25, 0x12, 0x10, 
46379
  0x13, 0x1E, 0x12, 0x02, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2C, 0x10, 0x0E, 0x00, 0x33, 0x0E, 0x10, 
46380
  0x00, 0x2D, 0x13, 0x00, 0x16, 0x35, 0x10, 0x13, 0x00, 0x2C, 0x10, 0x0F, 0x00, 0x33, 0x0E, 0x09, 
46381
  0x10, 0x2C, 0x13, 0x09, 0x00, 0x35, 0x10, 0x13, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x14, 0x00, 
46382
  0x04, 0x35, 0x13, 0x14, 0x00, 0x32, 0x10, 0x13, 0x00, 0x2D, 0x15, 0x00, 0x0B, 0x35, 0x14, 0x15, 
46383
  0x00, 0x31, 0x0E, 0x00, 0x00, 0x2D, 0x13, 0x00, 0x09, 0x35, 0x10, 0x13, 0x00, 0x39, 0x10, 0x11, 
46384
  0x0F, 0x31, 0x0E, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x09, 0x35, 0x0F, 0x10, 0x00, 0x03, 0x00, 0x00, 
46385
  0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x14, 0x02, 0x21, 
46386
  0xDA, 0x89, 0x89, 0xDA, 0x04, 0xDA, 0x82, 0xBC, 0xDA, 0x81, 0x6D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
46387
  0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 
46388
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 
46389
  0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 
46390
  0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 
46391
  0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 
46392
  0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 
46393
  0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
46394
  0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 
46395
  0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 
46396
  0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x01, 0x00, 
46397
  0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x88, 
46398
  0x38, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x39, 0xBF, 
46399
  0xFF, 0x01, 0x06, 0xDA, 0x89, 0x76, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x81, 0x2A, 0xBF, 0xFF, 0x01, 
46400
  0x0A, 0xDA, 0x8D, 0x1E, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x8D, 0x1F, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 
46401
  0x8D, 0x20, 0x2D, 0x00, 0x01, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x11, 0x35, 0x00, 
46402
  0x01, 0x00, 0x2D, 0x01, 0x01, 0x06, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 
46403
  0x02, 0x00, 0x2D, 0x02, 0x01, 0x02, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
46404
  0x03, 0x00, 0x2D, 0x03, 0x01, 0x01, 0x2C, 0x04, 0x01, 0x00, 0x2D, 0x05, 0x01, 0x00, 0x33, 0x03, 
46405
  0x04, 0x05, 0x34, 0x01, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x16, 0x36, 0x03, 
46406
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x3B, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x2F, 
46407
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x07, 
46408
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x91, 0x30, 
46409
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
46410
  0x11, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
46411
  0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46412
  0x05, 0x00, 0x05, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x15, 0x00, 0x15, 0x00, 
46413
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1F, 0x00, 
46414
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46415
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46416
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 
46417
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x0F, 0x00, 
46418
  0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x05, 0x06, 0x05, 0x00, 0x05, 
46419
  0x00, 0x05, 0xBF, 0xEE, 0x03, 0x47, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xCF, 0x09, 0x61, 0x72, 0x72, 
46420
  0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 
46421
  0x77, 0xCF, 0x06, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
46422
  0x06, 0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x06, 0xCE, 0x06, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 
46423
  0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 0x01, 0xDA, 0x8D, 0x25, 0x00, 0x0E, 
46424
  0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 0x3A, 0x04, 0x0E, 0x04, 0xDA, 0x39, 0x08, 0x0D, 
46425
  0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x3B, 
46426
  0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 0x03, 0x00, 0x03, 0x1F, 0x03, 0x07, 0x00, 0x3A, 
46427
  0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x23, 0x02, 0x05, 0x04, 0x1E, 0x02, 0x02, 0x00, 0x1B, 
46428
  0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0x3F, 0x0A, 0x00, 0x0A, 
46429
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
46430
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xCF, 0x08, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 
46431
  0x6E, 0x64, 0xD8, 0x08, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xCF, 0x0F, 0x6E, 0x65, 
46432
  0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0xDA, 0x83, 0xB8, 
46433
  0xCF, 0x04, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x82, 0x53, 0xCF, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 
46434
  0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
46435
  0xFF, 0x01, 0x08, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 0xDA, 
46436
  0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x02, 
46437
  0xCE, 0x05, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 0x00, 0xDA, 
46438
  0x1E, 0x00, 0x06, 0x01, 0xCF, 0x05, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0x2B, 0x02, 0x00, 0x00, 0x32, 
46439
  0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0x00, 0x03, 
46440
  0x03, 0x00, 0x00, 0x83, 0x8C, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x27, 0x00, 0x27, 
46441
  0x00, 0x08, 0x00, 0xDA, 0x31, 0x00, 0x08, 0x01, 0xDA, 0x86, 0x74, 0x00, 0x08, 0x02, 0xDA, 0x8D, 
46442
  0x2C, 0x3F, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 
46443
  0x00, 0x1E, 0x04, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
46444
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x05, 
46445
  0x01, 0x04, 0xDA, 0x8D, 0x2E, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 
46446
  0x01, 0xDA, 0x86, 0x74, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0x2C, 0x00, 0x05, 0x00, 0xDA, 0x82, 
46447
  0xCD, 0x2D, 0x01, 0x00, 0x01, 0x34, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 
46448
  0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x86, 0x05, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
46449
  0x00, 0x18, 0x86, 0x04, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x01, 
46450
  0x05, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 
46451
  0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x10, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
46452
  0x13, 0xCE, 0x07, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 
46453
  0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 
46454
  0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x14, 0x03, 
46455
  0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 
46456
  0x00, 0x05, 0x14, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 
46457
  0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0xD8, 
46458
  0x07, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 
46459
  0x62, 0x65, 0xDA, 0x8C, 0x82, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 
46460
  0x65, 0x78, 0x65, 0x63, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x65, 
46461
  0x78, 0x65, 0x63, 0xCF, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0xD7, 0x00, 0xCD, 
46462
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x15, 0x00, 0x07, 0xCE, 0x08, 0x64, 0x69, 
46463
  0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x15, 0x00, 0xDA, 0x81, 0x5C, 
46464
  0x00, 0x15, 0x01, 0xDA, 0x8D, 0x3A, 0x01, 0x15, 0x03, 0xDA, 0x39, 0x03, 0x15, 0x05, 0xCF, 0x04, 
46465
  0x73, 0x65, 0x65, 0x6E, 0x03, 0x14, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x74, 
46466
  0x06, 0x14, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x73, 0x09, 0x14, 0x08, 0xDA, 
46467
  0x1E, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x44, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 
46468
  0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x00, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x0D, 
46469
  0x00, 0x3A, 0x06, 0x00, 0x07, 0x1B, 0x08, 0x06, 0x00, 0x3A, 0x06, 0x05, 0x08, 0x1E, 0x06, 0x02, 
46470
  0x00, 0x1C, 0x06, 0x00, 0x00, 0x29, 0x09, 0x00, 0x00, 0x3C, 0x05, 0x08, 0x09, 0x32, 0x03, 0x08, 
46471
  0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x49, 0x07, 0x00, 0x07, 0x1C, 0xF4, 0xFF, 
46472
  0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0xF5, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 
46473
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 
46474
  0x00, 0x26, 0x00, 0x26, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 
46475
  0x01, 0xCF, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x77, 
46476
  0x6F, 0x72, 0x64, 0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 
46477
  0x2D, 0x77, 0x6F, 0x72, 0x64, 0xCF, 0x04, 0x61, 0x6E, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
46478
  0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0D, 0x00, 0x06, 0xCE, 0x04, 0x61, 0x6E, 0x79, 0x3F, 
46479
  0xDA, 0x04, 0x00, 0x0D, 0x00, 0xDA, 0x33, 0x00, 0x0D, 0x01, 0xDA, 0x8D, 0x42, 0x00, 0x0D, 0x02, 
46480
  0xDA, 0x7E, 0x00, 0x0C, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4E, 0x03, 0x0C, 
46481
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4D, 0x06, 0x0C, 0x05, 0xDA, 0x1E, 0x28, 
46482
  0x02, 0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 
46483
  0x04, 0x08, 0x00, 0x3A, 0x03, 0x00, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 
46484
  0x04, 0x00, 0x00, 0x1B, 0x02, 0x05, 0x00, 0x49, 0x04, 0x00, 0x04, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 
46485
  0x02, 0x00, 0x00, 0x86, 0x14, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46486
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 
46487
  0xCF, 0x04, 0x63, 0x61, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x0C, 0x01, 0x01, 
46488
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x1C, 0x00, 0x01, 0x06, 0xCE, 0x04, 0x63, 0x61, 0x73, 0x65, 
46489
  0xDA, 0x04, 0xDA, 0x82, 0x4C, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0xB5, 0xDA, 0x80, 0xB3, 
46490
  0x00, 0x1C, 0x00, 0xCF, 0x08, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x00, 0x1C, 0x01, 
46491
  0xDA, 0x83, 0x20, 0x00, 0x1C, 0x02, 0xDA, 0x8D, 0x47, 0x03, 0x1C, 0x04, 0xCF, 0x03, 0x61, 0x74, 
46492
  0x6D, 0x0A, 0x1C, 0x06, 0xDA, 0x80, 0x8B, 0x0C, 0x1C, 0x08, 0xDA, 0x89, 0xFF, 0x31, 0x00, 0x00, 
46493
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x03, 
46494
  0x00, 0x1B, 0x05, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 
46495
  0x00, 0x1B, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x30, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 
46496
  0x00, 0x1E, 0x04, 0x04, 0x00, 0x2B, 0x09, 0x00, 0x00, 0x31, 0x09, 0x00, 0x00, 0x36, 0x08, 0x00, 
46497
  0x00, 0x2C, 0x09, 0x02, 0x00, 0x33, 0x09, 0x06, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x35, 0x09, 0x0A, 
46498
  0x00, 0x2B, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x08, 0x00, 0x2C, 0x0B, 0x04, 
46499
  0x00, 0x33, 0x0B, 0x09, 0x0A, 0x2C, 0x0B, 0x03, 0x00, 0x36, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xDC, 
46500
  0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x03, 0x1F, 0x01, 0x08, 0xDA, 0x8A, 0x00, 0xDA, 0x04, 0xDA, 
46501
  0x87, 0xAA, 0xDA, 0x82, 0xB5, 0xDA, 0x82, 0x81, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8D, 0x4A, 0xBF, 
46502
  0xFF, 0x00, 0x01, 0xDA, 0x83, 0x20, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0x47, 0xBF, 0xFF, 0x00, 
46503
  0x04, 0xDA, 0x8D, 0x4B, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0x8B, 0x00, 0x1F, 0x00, 0xDA, 0x43, 
46504
  0x00, 0x1F, 0x01, 0xDA, 0x89, 0xFF, 0x04, 0x1F, 0x02, 0xDA, 0x8A, 0x01, 0x2E, 0x01, 0x00, 0x00, 
46505
  0x2D, 0x03, 0x00, 0x01, 0x3F, 0x02, 0x03, 0x00, 0x08, 0x03, 0x02, 0x00, 0x1B, 0x02, 0x03, 0x00, 
46506
  0x26, 0x04, 0x02, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0x05, 0x02, 0x01, 
46507
  0x1E, 0x05, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x01, 0x3A, 0x06, 0x07, 0x00, 0x03, 0x06, 0x00, 0x00, 
46508
  0x2D, 0x07, 0x00, 0x01, 0x3A, 0x06, 0x07, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x06, 
46509
  0x33, 0x07, 0x08, 0x06, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x05, 0x06, 0x00, 0x01, 
46510
  0x2D, 0x09, 0x00, 0x01, 0x3A, 0x08, 0x09, 0x06, 0x05, 0x06, 0x00, 0x02, 0x31, 0x06, 0x00, 0x00, 
46511
  0x35, 0x09, 0x01, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x33, 0x06, 0x07, 0x08, 0x31, 0x09, 0x00, 0x00, 
46512
  0x2C, 0x06, 0x01, 0x00, 0x36, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x81, 0x08, 0x03, 0x01, 0x15, 0x00, 
46513
  0x15, 0x00, 0x12, 0x00, 0x05, 0x01, 0x09, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x07, 0x00, 
46514
  0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
46515
  0x14, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x01, 0x15, 0x00, 0x10, 0x00, 0x10, 0xBF, 
46516
  0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x81, 0x06, 0x0C, 0x00, 0x0C, 0x00, 
46517
  0x0C, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0C, 0x00, 
46518
  0x03, 0x01, 0x03, 0x00, 0x03, 0x07, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x0C, 0x00, 
46519
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x05, 0x00, 0x05, 
46520
  0x00, 0x05, 0x00, 0x05, 0x42, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 
46521
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 
46522
  0x16, 0x00, 0x04, 0xCE, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 
46523
  0x82, 0x55, 0xDA, 0x83, 0xF6, 0xDA, 0x83, 0xF7, 0xDA, 0x82, 0x5D, 0xDA, 0x80, 0xB3, 0x00, 0x16, 
46524
  0x00, 0xDA, 0x32, 0x00, 0x16, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x16, 0x02, 0xDA, 0x8D, 0x4C, 0x02, 
46525
  0x16, 0x04, 0xDA, 0x84, 0x21, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 
46526
  0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x02, 
46527
  0x00, 0x2B, 0x07, 0x00, 0x00, 0x33, 0x06, 0x04, 0x07, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x03, 
46528
  0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x32, 0x08, 0x05, 
46529
  0x00, 0x34, 0x01, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x06, 0x05, 
46530
  0x00, 0x33, 0x06, 0x03, 0x07, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x82, 0x42, 0x03, 
46531
  0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46532
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46533
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x07, 0x6D, 0x61, 0x72, 0x73, 
46534
  0x68, 0x61, 0x6C, 0xDA, 0x89, 0x41, 0xCF, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 
46535
  0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0xD3, 0x1E, 0xD0, 0x01, 0x53, 
46536
  0xD2, 0x03, 0x00, 0xCF, 0x06, 0x69, 0x66, 0x2D, 0x6E, 0x6F, 0x74, 0xD0, 0x01, 0x73, 0x01, 0xD0, 
46537
  0x02, 0x68, 0x2A, 0xD2, 0x02, 0x00, 0xCF, 0x03, 0x61, 0x6E, 0x79, 0xD0, 0x01, 0x68, 0xD0, 0x01, 
46538
  0x41, 0xD2, 0x03, 0x00, 0xDA, 0x8D, 0x53, 0xD0, 0x01, 0x61, 0x01, 0xD0, 0x02, 0x41, 0x2A, 0xD2, 
46539
  0x02, 0x00, 0xDA, 0x8D, 0x57, 0xDA, 0x8D, 0x5A, 0xD0, 0x02, 0x57, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 
46540
  0x8D, 0x57, 0xD0, 0x01, 0x57, 0xD0, 0x02, 0x64, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 0xD0, 
46541
  0x01, 0x64, 0xD0, 0x02, 0x53, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 0xDA, 0x8D, 0x52, 0xDA, 
46542
  0x8D, 0x63, 0xD2, 0x02, 0x00, 0xDA, 0x8C, 0xD3, 0xCE, 0x02, 0x30, 0x39, 0xDA, 0x8D, 0x54, 0xD2, 
46543
  0x02, 0x00, 0xDA, 0x82, 0x5C, 0xCE, 0x07, 0x20, 0x09, 0x0D, 0x0A, 0x00, 0x0C, 0x0B, 0xDA, 0x8D, 
46544
  0x58, 0xD2, 0x04, 0x00, 0xDA, 0x8C, 0xD3, 0xDA, 0x8D, 0x67, 0xCE, 0x02, 0x61, 0x66, 0xCE, 0x02, 
46545
  0x41, 0x46, 0xD0, 0x01, 0x77, 0xD2, 0x04, 0x00, 0xDA, 0x8C, 0xD3, 0xCE, 0x02, 0x61, 0x7A, 0xCE, 
46546
  0x02, 0x41, 0x5A, 0xDA, 0x8D, 0x67, 0xD0, 0x02, 0x61, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 
46547
  0xDA, 0x8D, 0x5B, 0xD0, 0x02, 0x57, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 0xDA, 0x8D, 0x60, 
46548
  0xD0, 0x02, 0x73, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x57, 0xDA, 0x8D, 0x54, 0xD0, 0x02, 0x48, 
46549
  0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 0xD0, 0x01, 0x48, 0xD0, 0x02, 0x64, 0x2A, 0xD2, 0x02, 
46550
  0x00, 0xDA, 0x8D, 0x57, 0xDA, 0x8D, 0x63, 0xDA, 0x8D, 0x5B, 0xD2, 0x03, 0x00, 0xDA, 0x8C, 0xD3, 
46551
  0xDA, 0x8D, 0x6F, 0xDA, 0x8D, 0x70, 0xD0, 0x02, 0x77, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x57, 
46552
  0xDA, 0x8D, 0x6E, 0xD0, 0x02, 0x48, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x57, 0xDA, 0x8D, 0x79, 
46553
  0xD0, 0x02, 0x61, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x57, 0xDA, 0x8D, 0x5B, 0xD0, 0x02, 0x73, 
46554
  0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 0xDA, 0x8D, 0x54, 0xD0, 0x02, 0x44, 0x2B, 0xD2, 0x02, 
46555
  0x00, 0xDA, 0x88, 0xB8, 0xD0, 0x01, 0x44, 0xD0, 0x02, 0x77, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 
46556
  0xB8, 0xDA, 0x8D, 0x6E, 0xD0, 0x02, 0x41, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB8, 0xDA, 0x8D, 
46557
  0x5A, 0xD0, 0x02, 0x44, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x57, 0xDA, 0x8D, 0x87, 0xDA, 0x8D, 
46558
  0x79, 0xD2, 0x03, 0x00, 0xDA, 0x8D, 0x53, 0xDA, 0x8D, 0x58, 0x01, 0xDA, 0x8D, 0x60, 0xD2, 0x03, 
46559
  0x00, 0xDA, 0x8D, 0x53, 0xDA, 0x8D, 0x6E, 0x01, 0xD0, 0x02, 0x68, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 
46560
  0x88, 0xB8, 0xDA, 0x8D, 0x58, 0xD0, 0x02, 0x53, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x57, 0xDA, 
46561
  0x8D, 0x52, 0xDA, 0x8D, 0x87, 0xD2, 0x03, 0x00, 0xDA, 0x8D, 0x53, 0xDA, 0x8D, 0x63, 0x01, 0xCF, 
46562
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0xDA, 0x86, 0xD2, 0xCF, 0x10, 0x66, 0x69, 
46563
  0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0xD8, 0x10, 
46564
  0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 
46565
  0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 
46566
  0x2F, 0x63, 0x6F, 0x73, 0xCF, 0x0C, 0x2A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x66, 0x6F, 0x72, 
46567
  0x6D, 0x2A, 0xDA, 0x82, 0xC8, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 0x69, 0x72, 0xDA, 
46568
  0x81, 0x3F, 0xDA, 0x8D, 0x31, 0xDA, 0x8D, 0x2F, 0xCF, 0x0A, 0x67, 0x63, 0x69, 0x6E, 0x74, 0x65, 
46569
  0x72, 0x76, 0x61, 0x6C, 0xD8, 0x0A, 0x67, 0x63, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 
46570
  0xCF, 0x0C, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xD8, 0x0C, 
46571
  0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x83, 0xFB, 0xD7, 
46572
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0A, 
46573
  0x00, 0x03, 0xCE, 0x06, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 0xDA, 
46574
  0x82, 0x81, 0x00, 0x0A, 0x00, 0xDA, 0x8B, 0x5C, 0x00, 0x0A, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x0A, 
46575
  0x02, 0xDA, 0x83, 0xFB, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 
46576
  0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x28, 0x06, 0x00, 0x00, 0x33, 0x05, 0x00, 0x06, 
46577
  0x31, 0x03, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xF0, 0x03, 0x00, 
46578
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46579
  0x03, 0xCF, 0x06, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xDA, 0x84, 0x49, 0xDA, 0x86, 0x45, 0xD7, 
46580
  0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x09, 
46581
  0x00, 0x01, 0x02, 0xCE, 0x03, 0x75, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x81, 0xF8, 0xDA, 0x80, 0xB3, 
46582
  0x00, 0x09, 0x00, 0xCF, 0x07, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x00, 0x09, 0x01, 0xDA, 
46583
  0x86, 0x45, 0x30, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 
46584
  0x04, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x45, 0x02, 
46585
  0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x04, 
46586
  0x0A, 0x00, 0x01, 0xDA, 0x8B, 0xDB, 0xDA, 0x04, 0xDA, 0x81, 0x28, 0xDA, 0x85, 0xD5, 0xDA, 0x85, 
46587
  0xDD, 0xDA, 0x81, 0x6E, 0x00, 0x0A, 0x00, 0xCF, 0x09, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4D, 
46588
  0x24, 0x30, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2C, 0x03, 
46589
  0x01, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x03, 0x01, 0x04, 0x2C, 0x03, 0x03, 0x00, 0x31, 0x03, 
46590
  0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8C, 0x81, 0x1C, 0x00, 0x1C, 0x00, 
46591
  0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x8C, 
46592
  0x81, 0x0F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46593
  0x00, 0x03, 0xCF, 0x10, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 
46594
  0x6C, 0x6C, 0x65, 0x64, 0xDA, 0x2F, 0xCF, 0x07, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0xDA, 
46595
  0x86, 0x71, 0xCF, 0x07, 0x69, 0x66, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
46596
  0x00, 0x00, 0x0B, 0x03, 0x02, 0x03, 0x03, 0x1A, 0x00, 0x07, 0xCE, 0x07, 0x69, 0x66, 0x2D, 0x77, 
46597
  0x69, 0x74, 0x68, 0xDA, 0x04, 0xDA, 0x81, 0x47, 0xDA, 0x88, 0x1A, 0xDA, 0x80, 0x83, 0x00, 0x1A, 
46598
  0x01, 0xDA, 0x8B, 0x5D, 0x00, 0x1A, 0x02, 0xCF, 0x06, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x01, 
46599
  0x1A, 0x04, 0xDA, 0x82, 0x5E, 0x03, 0x1A, 0x05, 0xDA, 0x88, 0x1D, 0x05, 0x1A, 0x06, 0xDA, 0x88, 
46600
  0x1E, 0x06, 0x1A, 0x00, 0xDA, 0x8D, 0xAA, 0x08, 0x0D, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
46601
  0x30, 0x30, 0x61, 0x3D, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x3D, 0x03, 0x00, 0x01, 0x1B, 
46602
  0x05, 0x03, 0x00, 0x3D, 0x03, 0x00, 0x02, 0x1B, 0x06, 0x03, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x32, 
46603
  0x04, 0x05, 0x00, 0x46, 0x03, 0x00, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1C, 
46604
  0x02, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x07, 0x00, 0x00, 0x31, 
46605
  0x01, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x2C, 
46606
  0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x08, 0x03, 0x09, 0x31, 
46607
  0x02, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x81, 0xBA, 0x01, 0x00, 0x01, 
46608
  0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00, 0x03, 0x01, 0x15, 
46609
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x07, 
46610
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46611
  0x03, 0xCF, 0x06, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0xDA, 0x81, 0x8A, 0xCF, 0x0A, 0x6D, 0x61, 
46612
  0x74, 0x68, 0x2F, 0x6C, 0x64, 0x65, 0x78, 0x70, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 
46613
  0x64, 0x65, 0x78, 0x70, 0xDA, 0x82, 0xBF, 0xDA, 0x82, 0xBC, 0xCF, 0x0E, 0x70, 0x61, 0x72, 0x73, 
46614
  0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0xDA, 0x0C, 0xCF, 0x07, 0x65, 0x76, 
46615
  0x2F, 0x63, 0x68, 0x61, 0x6E, 0xDA, 0x80, 0xAC, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 
46616
  0x69, 0x6E, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0xCF, 0x02, 0x2B, 0x3D, 
46617
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
46618
  0x08, 0x00, 0x03, 0xCE, 0x02, 0x2B, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x78, 0xDA, 0x82, 0x5C, 0x00, 
46619
  0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x04, 0x00, 0x08, 0x02, 0xDA, 0x8D, 0xB6, 
46620
  0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 
46621
  0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 
46622
  0x80, 0x8D, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 
46623
  0x34, 0xCF, 0x06, 0x63, 0x61, 0x74, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
46624
  0x0A, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x19, 0x00, 0x04, 0xCE, 0x06, 0x63, 0x61, 
46625
  0x74, 0x73, 0x65, 0x71, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x88, 0x59, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 
46626
  0xB3, 0xDA, 0x82, 0xB1, 0xDA, 0x83, 0xEA, 0x00, 0x19, 0x00, 0xDA, 0x84, 0x1D, 0x00, 0x19, 0x01, 
46627
  0xDA, 0x80, 0xC7, 0x00, 0x19, 0x02, 0xDA, 0x8D, 0xB9, 0x02, 0x19, 0x04, 0xDA, 0x86, 0x05, 0x2C, 
46628
  0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 
46629
  0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 
46630
  0x08, 0x04, 0x06, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x31, 0x08, 0x00, 0x00, 0x34, 
46631
  0x01, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x04, 0x06, 0x45, 
46632
  0x08, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x09, 0x00, 0x08, 0x45, 0x06, 0x00, 0x00, 0x2C, 
46633
  0x09, 0x03, 0x00, 0x33, 0x09, 0x07, 0x06, 0x31, 0x04, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 
46634
  0x08, 0x00, 0x00, 0x82, 0xA9, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
46635
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46636
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46637
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x6A, 0xDA, 0x82, 0x67, 0xCF, 0x12, 0x65, 0x76, 
46638
  0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 
46639
  0xD8, 0x12, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 
46640
  0x69, 0x73, 0x6F, 0x72, 0xCF, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x65, 
46641
  0x61, 0x72, 0xDA, 0x81, 0x61, 0xCF, 0x13, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 
46642
  0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x36, 0x34, 0xD8, 0x13, 0x62, 0x75, 0x66, 0x66, 
46643
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x36, 0x34, 0xCF, 
46644
  0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0xD8, 0x0A, 0x66, 0x66, 0x69, 
46645
  0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0xCF, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x61, 
46646
  0x72, 0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD8, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
46647
  0x61, 0x72, 0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x6C, 
46648
  0x6F, 0x63, 0x6B, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x12, 0x62, 
46649
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x33, 
46650
  0x32, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 
46651
  0x69, 0x6E, 0x74, 0x33, 0x32, 0xCF, 0x02, 0x3C, 0x3D, 0xDA, 0x84, 0x0F, 0xCF, 0x07, 0x63, 0x6F, 
46652
  0x6D, 0x6D, 0x65, 0x6E, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 
46653
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x01, 0xCE, 0x07, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 
46654
  0x74, 0xDA, 0x04, 0x00, 0x01, 0x00, 0xDA, 0x8D, 0xCA, 0x04, 0x00, 0x00, 0x00, 0x80, 0xDF, 0x01, 
46655
  0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
46656
  0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0A, 0x00, 0x03, 0xCE, 0x08, 0x63, 
46657
  0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0xDA, 0x04, 0xDA, 0x83, 0x45, 0xDA, 0x82, 0x9A, 0x00, 
46658
  0x0A, 0x00, 0xDA, 0x8C, 0xC3, 0x00, 0x0A, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x0A, 0x02, 0xDA, 0x8D, 
46659
  0xCD, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x06, 
46660
  0x00, 0x2C, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x04, 0x00, 
46661
  0x00, 0x03, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 
46662
  0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0xDA, 
46663
  0x85, 0xBB, 0xDA, 0x85, 0xAF, 0xCF, 0x05, 0x64, 0x65, 0x65, 0x70, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 
46664
  0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x05, 0x64, 0x65, 0x65, 
46665
  0x70, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0xCF, 0xDA, 0x82, 0x51, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 
46666
  0x06, 0x01, 0xDA, 0x80, 0x87, 0x00, 0x06, 0x02, 0xDA, 0x8D, 0xD0, 0x32, 0x00, 0x01, 0x00, 0x2C, 
46667
  0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 
46668
  0x04, 0x00, 0x00, 0x89, 0x20, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46669
  0xCF, 0x08, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
46670
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x08, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 
46671
  0x61, 0x6E, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x07, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 
46672
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8D, 0xD3, 0x31, 0x00, 0x00, 0x00, 0x2C, 
46673
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 
46674
  0x03, 0x00, 0x00, 0x71, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xCF, 
46675
  0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xD8, 0x0B, 0x73, 0x74, 
46676
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
46677
  0x6C, 0x6F, 0x67, 0x31, 0x30, 0xDA, 0x84, 0x81, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 
46678
  0x6D, 0x2D, 0x69, 0x6E, 0x74, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 
46679
  0x6E, 0x74, 0xCF, 0x0B, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xD8, 
46680
  0x0B, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xCF, 0x0C, 0x6F, 0x73, 
46681
  0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x70, 
46682
  0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6C, 
46683
  0x6F, 0x73, 0x65, 0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xCF, 0x0F, 
46684
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xD8, 
46685
  0x0F, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 
46686
  0xCF, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xD8, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 
46687
  0xCF, 0x0D, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0xDA, 
46688
  0x89, 0x13, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0xDA, 0x86, 0x64, 0xCF, 0x0E, 
46689
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD8, 0x0E, 
46690
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xCF, 0x02, 
46691
  0x2D, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
46692
  0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x02, 0x2D, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 0xBD, 0x00, 
46693
  0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 0x8D, 0xEA, 
46694
  0x01, 0x05, 0x04, 0xDA, 0x88, 0x69, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x33, 0x04, 
46695
  0x00, 0x01, 0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 
46696
  0x02, 0x02, 0x02, 0x06, 0x23, 0x00, 0x06, 0xDA, 0x88, 0x6A, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 
46697
  0xDA, 0x88, 0x6B, 0xDA, 0x82, 0xB5, 0xDA, 0x82, 0xB1, 0xDA, 0x71, 0x00, 0x23, 0x00, 0xDA, 0x82, 
46698
  0xB2, 0x00, 0x23, 0x01, 0xDA, 0x32, 0x00, 0x23, 0x02, 0xDA, 0x88, 0x69, 0x17, 0x23, 0x05, 0xDA, 
46699
  0x82, 0xCA, 0x19, 0x23, 0x06, 0xDA, 0x82, 0x33, 0x1F, 0x23, 0x04, 0xDA, 0x38, 0x31, 0x01, 0x00, 
46700
  0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 
46701
  0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 
46702
  0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 
46703
  0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 
46704
  0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 0x01, 0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 
46705
  0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 
46706
  0x01, 0x1B, 0x06, 0x04, 0x00, 0x32, 0x05, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 0x04, 0x06, 
46707
  0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x04, 0x07, 0x00, 0x32, 0x01, 0x04, 
46708
  0x00, 0x2C, 0x08, 0x05, 0x00, 0x36, 0x08, 0x00, 0x00, 0x85, 0x6F, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 
46709
  0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
46710
  0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 
46711
  0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46712
  0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
46713
  0x00, 0x05, 0x85, 0x6E, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x12, 0x73, 
46714
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 
46715
  0x6C, 0xDA, 0x86, 0xAD, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xD8, 0x08, 
46716
  0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xCF, 0x0B, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 
46717
  0x6E, 0x63, 0x69, 0x65, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 
46718
  0x00, 0x14, 0x00, 0x07, 0xCE, 0x0B, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x69, 0x65, 
46719
  0x73, 0xDA, 0x04, 0x00, 0x14, 0x00, 0xDA, 0x33, 0x00, 0x14, 0x01, 0xDA, 0x8D, 0xF0, 0x01, 0x14, 
46720
  0x03, 0xCF, 0x05, 0x66, 0x72, 0x65, 0x71, 0x73, 0x01, 0x13, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
46721
  0x30, 0x30, 0x33, 0x6E, 0x04, 0x13, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6D, 
46722
  0x07, 0x13, 0x06, 0xDA, 0x1E, 0x09, 0x13, 0x07, 0xDA, 0x32, 0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 
46723
  0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 
46724
  0x0E, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x3A, 0x04, 0x03, 0x06, 0x1B, 0x07, 
46725
  0x04, 0x00, 0x1E, 0x07, 0x05, 0x00, 0x2B, 0x09, 0x01, 0x00, 0x06, 0x08, 0x09, 0x07, 0x1B, 0x04, 
46726
  0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x3C, 0x03, 0x06, 0x04, 0x49, 0x05, 
46727
  0x00, 0x05, 0x1C, 0xF3, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0xC8, 0x03, 0x00, 0x03, 0x01, 
46728
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 
46729
  0x14, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0xBF, 0xFE, 0x03, 
46730
  0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0D, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x67, 0x6E, 0x61, 
46731
  0x74, 0x75, 0x72, 0x65, 0xDA, 0x8A, 0xF9, 0xCF, 0x05, 0x2A, 0x6F, 0x75, 0x74, 0x2A, 0xD0, 0x03, 
46732
  0x6F, 0x75, 0x74, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 
46733
  0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xCF, 0x09, 0x77, 
46734
  0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0C, 
46735
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x15, 0x00, 0x06, 0xCE, 0x09, 0x77, 0x69, 0x74, 
46736
  0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0xDA, 0x04, 0xD2, 0x01, 0x00, 0xDA, 0x5C, 0xDA, 0x30, 0xDA, 
46737
  0x83, 0xF2, 0x00, 0x15, 0x00, 0xDA, 0x8B, 0x52, 0x00, 0x15, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x15, 
46738
  0x02, 0xDA, 0x8D, 0xFB, 0x00, 0x15, 0x03, 0xDA, 0x43, 0x02, 0x15, 0x05, 0xDA, 0x37, 0x04, 0x15, 
46739
  0x07, 0xDA, 0x83, 0xC0, 0x2B, 0x03, 0x00, 0x00, 0x3F, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 
46740
  0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x23, 0x08, 0x03, 0x05, 0x1E, 0x08, 0x08, 0x00, 
46741
  0x3A, 0x09, 0x00, 0x03, 0x2C, 0x0A, 0x00, 0x00, 0x33, 0x07, 0x09, 0x0A, 0x2C, 0x0B, 0x01, 0x00, 
46742
  0x35, 0x0A, 0x0B, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xF8, 0xFF, 0xFF, 0x34, 0x07, 0x00, 0x00, 
46743
  0x45, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x32, 0x0A, 0x08, 0x00, 0x34, 0x01, 0x00, 0x00, 
46744
  0x45, 0x09, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x81, 0x67, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 
46745
  0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46746
  0x05, 0x01, 0x05, 0xBF, 0xFE, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46747
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x61, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
46748
  0x00, 0x00, 0x0E, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x2C, 0x00, 0x04, 0xCE, 0x05, 
46749
  0x64, 0x65, 0x6C, 0x61, 0x79, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x82, 0x55, 0xDA, 0x82, 0x5C, 0xDA, 
46750
  0x80, 0xB3, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xAE, 0x00, 0x2C, 0x00, 0xDA, 0x80, 0x85, 0x00, 0x2C, 
46751
  0x01, 0xDA, 0x8D, 0xFF, 0x02, 0x2C, 0x03, 0xCF, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x05, 0x2C, 
46752
  0x05, 0xCF, 0x06, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
46753
  0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 
46754
  0x00, 0x46, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x28, 0x09, 0x00, 0x00, 0x33, 0x08, 0x03, 
46755
  0x09, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x33, 0x09, 0x05, 
46756
  0x0A, 0x45, 0x08, 0x00, 0x00, 0x46, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x29, 0x0C, 0x00, 
46757
  0x00, 0x33, 0x0B, 0x05, 0x0C, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x31, 0x0C, 0x00, 
46758
  0x00, 0x34, 0x00, 0x00, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 0x33, 0x0D, 0x03, 
46759
  0x0B, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x33, 0x0D, 0x0A, 0x0C, 0x45, 0x0B, 0x00, 
46760
  0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x05, 0x03, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x0A, 0x00, 
46761
  0x00, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x0C, 0x09, 0x0A, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0A, 0x05, 
46762
  0x00, 0x33, 0x0A, 0x06, 0x07, 0x32, 0x08, 0x0B, 0x00, 0x45, 0x09, 0x00, 0x00, 0x31, 0x09, 0x00, 
46763
  0x00, 0x45, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x8F, 0x64, 0x0E, 0x00, 0x0E, 0x00, 0x03, 
46764
  0x01, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46765
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46766
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46767
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46768
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46769
  0x00, 0x03, 0xCF, 0x02, 0x2D, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 
46770
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2D, 0x3D, 0xDA, 0x04, 0xDA, 
46771
  0x84, 0x11, 0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x04, 
46772
  0x00, 0x08, 0x02, 0xDA, 0x8E, 0x04, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 
46773
  0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 
46774
  0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x8E, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 
46775
  0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0xCF, 0x0F, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 
46776
  0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xD8, 0x0F, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 
46777
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x6C, 
46778
  0x65, 0x65, 0x70, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xCF, 0x17, 0x66, 
46779
  0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 
46780
  0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0xD8, 0x17, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 
46781
  0x69, 0x6E, 0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 
46782
  0x8D, 0x53, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x03, 0x02, 0x03, 0x01, 0x05, 0x00, 
46783
  0x04, 0xCE, 0x06, 0x69, 0x66, 0x2D, 0x6E, 0x6F, 0x74, 0xDA, 0x04, 0xDA, 0x82, 0x81, 0x00, 0x05, 
46784
  0x00, 0xDA, 0x8B, 0x5C, 0x00, 0x05, 0x01, 0xCF, 0x04, 0x74, 0x68, 0x65, 0x6E, 0x00, 0x05, 0x02, 
46785
  0xDA, 0x8B, 0x3D, 0x00, 0x05, 0x03, 0xDA, 0x8D, 0x53, 0x2C, 0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 
46786
  0x02, 0x31, 0x01, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xE6, 0x03, 
46787
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 0xFB, 0xDA, 0x81, 0xF8, 0xCF, 0x0A, 
46788
  0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
46789
  0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x05, 0x00, 0x01, 0x02, 0xCE, 0x0A, 0x66, 0x69, 0x6C, 0x65, 
46790
  0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0xDA, 0x04, 0xDA, 0x85, 0x93, 0xDA, 0x80, 0xDC, 0x00, 0x05, 
46791
  0x00, 0xCF, 0x04, 0x66, 0x69, 0x6C, 0x65, 0x00, 0x05, 0x01, 0xDA, 0x8E, 0x10, 0x30, 0x02, 0x00, 
46792
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 
46793
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x0A, 0x01, 0x03, 0xDA, 0x85, 
46794
  0x95, 0xDA, 0x04, 0xDA, 0x85, 0x80, 0xDA, 0x81, 0x59, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8E, 0x13, 
46795
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8E, 0x10, 0x05, 0x09, 0x01, 0xDA, 0x85, 0x31, 0x2D, 0x00, 0x00, 
46796
  0x00, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 
46797
  0x00, 0x1B, 0x01, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x38, 0x02, 0x01, 0x03, 0x1C, 0xF8, 0xFF, 
46798
  0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0x71, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 
46799
  0x00, 0x16, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x87, 0x70, 0x03, 
46800
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x0C, 0x70, 0x61, 
46801
  0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 0xDA, 0x89, 0xBA, 0xCF, 0x0B, 0x6E, 
46802
  0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 
46803
  0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0xCF, 0x07, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 
46804
  0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x01, 0x04, 0x00, 0x01, 0x03, 
46805
  0xCE, 0x07, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x80, 0xF2, 0x00, 0x04, 
46806
  0x00, 0xDA, 0x31, 0x00, 0x04, 0x01, 0xDA, 0x33, 0x00, 0x04, 0x02, 0xDA, 0x8E, 0x17, 0x30, 0x03, 
46807
  0x00, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0xCD, 0x00, 
46808
  0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 0x08, 0x01, 0x05, 0xCE, 0x0C, 0x73, 0x6F, 0x72, 
46809
  0x74, 0x2D, 0x62, 0x79, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
46810
  0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x33, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8E, 0x17, 0x00, 0x08, 
46811
  0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x80, 0x87, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 
46812
  0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 
46813
  0x00, 0x23, 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0xCB, 0x28, 0x00, 0x28, 
46814
  0x00, 0x28, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x25, 0x00, 0x25, 0x83, 0xCB, 0x0D, 0x00, 
46815
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x75, 
46816
  0x36, 0x34, 0xD8, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0xDA, 0x83, 0xF9, 0xD7, 0x00, 
46817
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 
46818
  0x03, 0xCE, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 0x81, 0x00, 
46819
  0x08, 0x00, 0xDA, 0x8B, 0x5C, 0x00, 0x08, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x08, 0x02, 0xDA, 0x83, 
46820
  0xF9, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 
46821
  0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 
46822
  0x00, 0x80, 0xEB, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46823
  0x00, 0x03, 0xCF, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
46824
  0x74, 0x2D, 0x61, 0x74, 0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 
46825
  0x6D, 0x61, 0x74, 0x2D, 0x61, 0x74, 0xCF, 0x05, 0x65, 0x61, 0x63, 0x68, 0x70, 0xD7, 0x00, 0xCD, 
46826
  0x00, 0xDD, 0x00, 0x00, 0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 
46827
  0xCE, 0x05, 0x65, 0x61, 0x63, 0x68, 0x70, 0xDA, 0x04, 0xDA, 0x82, 0x5B, 0xDA, 0x82, 0x4A, 0x00, 
46828
  0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x82, 0x62, 0x00, 0x05, 0x02, 0xDA, 0x80, 0xC7, 
46829
  0x00, 0x05, 0x03, 0xDA, 0x8E, 0x21, 0x2C, 0x04, 0x00, 0x00, 0x33, 0x00, 0x01, 0x04, 0x31, 0x02, 
46830
  0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x82, 0x3D, 0x03, 0x00, 0x03, 0x00, 
46831
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 
46832
  0x75, 0x6E, 0x74, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 
46833
  0x74, 0xCF, 0x09, 0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0xDA, 0x81, 0x25, 0xCF, 
46834
  0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 
46835
  0x81, 0x9C, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 
46836
  0x75, 0x66, 0x66, 0x69, 0x78, 0x3F, 0xDA, 0x81, 0xF4, 0xCF, 0x05, 0x6A, 0x75, 0x78, 0x74, 0x2A, 
46837
  0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
46838
  0x02, 0x00, 0x01, 0x02, 0xCE, 0x05, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0xDA, 0x04, 0x00, 0x02, 0x00, 
46839
  0xDA, 0x8B, 0xAF, 0x00, 0x02, 0x01, 0xDA, 0x8E, 0x29, 0x30, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 
46840
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x14, 
46841
  0x01, 0x07, 0xDA, 0x8E, 0x2B, 0xDA, 0x04, 0xDA, 0x30, 0xDA, 0x2C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
46842
  0x8B, 0xAF, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8E, 0x29, 0x00, 0x14, 0x00, 0xDA, 0x81, 0x4D, 0x01, 
46843
  0x14, 0x02, 0xDA, 0x39, 0x02, 0x10, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x68, 
46844
  0x05, 0x10, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x67, 0x08, 0x10, 0x06, 0xDA, 
46845
  0x31, 0x40, 0x01, 0x00, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x28, 0x05, 0x00, 
46846
  0x00, 0x49, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x0A, 0x00, 0x3A, 0x04, 0x03, 
46847
  0x05, 0x1B, 0x06, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x04, 0x06, 0x00, 0x32, 0x02, 0x04, 
46848
  0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 0x08, 0x00, 0x49, 0x05, 0x03, 0x05, 0x1C, 0xF7, 0xFF, 
46849
  0xFF, 0x2B, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 
46850
  0x00, 0xBF, 0xFF, 0x85, 0x1D, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46851
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
46852
  0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x1C, 0x03, 
46853
  0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 
46854
  0x84, 0x5A, 0xCF, 0x03, 0x64, 0x6F, 0x63, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
46855
  0x00, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x03, 0x64, 0x6F, 0x63, 0xDA, 0x04, 0xDA, 0x82, 0x98, 
46856
  0xDA, 0x8C, 0x7E, 0x00, 0x07, 0x00, 0xDA, 0x80, 0x8B, 0x00, 0x07, 0x01, 0xDA, 0x8E, 0x2F, 0x2C, 
46857
  0x03, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 
46858
  0x04, 0x02, 0x00, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x8D, 0xFB, 0x03, 0x00, 0x03, 
46859
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x83, 0xD5, 0x00, 0x04, 0x00, 
46860
  0xCF, 0x05, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x00, 0x04, 0x01, 0xDA, 0x88, 0xAC, 0x2C, 0x02, 0x00, 
46861
  0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8B, 0x0F, 0x03, 
46862
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x06, 0x01, 0xCF, 
46863
  0x0C, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x31, 0x00, 0x00, 
46864
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
46865
  0x00, 0x36, 0x03, 0x00, 0x00, 0x8C, 0x31, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x26, 0x00, 0x26, 
46866
  0x00, 0x26, 0xDA, 0x81, 0xCA, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 
46867
  0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x09, 0x00, 0x02, 0xCE, 0x0D, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 
46868
  0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x81, 0xA2, 0xDA, 0x81, 0x9A, 0xDA, 
46869
  0x81, 0x26, 0xDA, 0x83, 0xCE, 0x00, 0x09, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x09, 0x01, 0xCF, 0x0D, 
46870
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x2C, 0x02, 0x00, 
46871
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 
46872
  0x00, 0x35, 0x03, 0x02, 0x00, 0x32, 0x00, 0x03, 0x00, 0x2C, 0x02, 0x03, 0x00, 0x36, 0x02, 0x00, 
46873
  0x00, 0x8C, 0x25, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x35, 0x00, 0x28, 
46874
  0x00, 0x28, 0x00, 0x28, 0xDA, 0x81, 0xC5, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0A, 0x02, 
46875
  0x02, 0x02, 0x07, 0x1C, 0x00, 0x01, 0x06, 0xCE, 0x0D, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 
46876
  0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x81, 0xA1, 0xDA, 0x82, 0x35, 0xDA, 0x81, 
46877
  0x26, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0x00, 0x1C, 0x00, 
46878
  0xDA, 0x81, 0x22, 0x00, 0x1C, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x1C, 0x02, 0xCF, 0x0D, 0x73, 0x6F, 
46879
  0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x05, 0x1C, 0x04, 0xCF, 0x02, 
46880
  0x6D, 0x6C, 0x0D, 0x1C, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x42, 0x10, 0x1C, 
46881
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x43, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 
46882
  0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 
46883
  0x03, 0x00, 0x29, 0x05, 0x00, 0x00, 0x3C, 0x04, 0x00, 0x05, 0x30, 0x05, 0x00, 0x00, 0x2C, 0x06, 
46884
  0x03, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 
46885
  0x06, 0x00, 0x28, 0x07, 0x00, 0x00, 0x37, 0x06, 0x05, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x06, 
46886
  0x00, 0x00, 0x3C, 0x04, 0x00, 0x06, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x06, 
46887
  0x08, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x25, 0x08, 0x06, 0x09, 0x1E, 0x08, 0x02, 0x00, 0x03, 0x07, 
46888
  0x00, 0x00, 0x39, 0x06, 0x07, 0x05, 0x03, 0x06, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 
46889
  0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x04, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xDA, 0x86, 0x53, 0xBF, 
46890
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 
46891
  0x02, 0xDA, 0x8E, 0x39, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8E, 0x3A, 0x2D, 0x00, 0x00, 0x00, 0x31, 
46892
  0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x01, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 
46893
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x2A, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
46894
  0x00, 0x11, 0x8C, 0x27, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0F, 0x01, 
46895
  0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
46896
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
46897
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x03, 0x00, 0x00, 0x00, 0xD0, 
46898
  0x05, 0x66, 0x72, 0x65, 0x73, 0x68, 0xCE, 0x14, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6C, 0x61, 0x72, 
46899
  0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x79, 0x20, 0xCE, 0x09, 0x20, 0x64, 
46900
  0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0xDA, 0x81, 0x28, 0xDA, 0x83, 0x4D, 0xCE, 0x0C, 0x6D, 
46901
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0xCE, 0x08, 0x20, 0x75, 0x6E, 
46902
  0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x00, 0x48, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x48, 0x01, 0xDA, 0x81, 
46903
  0x4D, 0x00, 0x48, 0x02, 0xDA, 0x85, 0xF1, 0x00, 0x48, 0x03, 0xCF, 0x09, 0x72, 0x65, 0x71, 0x75, 
46904
  0x69, 0x72, 0x65, 0x2D, 0x31, 0x04, 0x48, 0x06, 0xDA, 0x82, 0x2B, 0x06, 0x48, 0x07, 0xDA, 0x82, 
46905
  0x29, 0x0F, 0x48, 0x08, 0xDA, 0x82, 0x3B, 0x15, 0x48, 0x0A, 0xDA, 0x8E, 0x3A, 0x1B, 0x48, 0x0C, 
46906
  0xCF, 0x03, 0x6D, 0x6C, 0x73, 0x24, 0x48, 0x0E, 0xDA, 0x87, 0xA6, 0x3A, 0x48, 0x11, 0xDA, 0x8B, 
46907
  0xD2, 0x45, 0x48, 0x12, 0xDA, 0x83, 0x49, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
46908
  0x04, 0x05, 0x00, 0x3D, 0x05, 0x04, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x3D, 0x05, 0x04, 0x01, 0x1B, 
46909
  0x07, 0x05, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x2C, 
46910
  0x05, 0x01, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x32, 0x05, 0x08, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 
46911
  0x05, 0x08, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x32, 
46912
  0x09, 0x0A, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 
46913
  0x0B, 0x06, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x32, 0x0B, 0x0C, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 
46914
  0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x35, 
46915
  0x0E, 0x02, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x3A, 
46916
  0x0F, 0x08, 0x06, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x03, 
46917
  0x0E, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x0F, 0x0A, 0x00, 0x1E, 0x0F, 0x08, 0x00, 0x2C, 
46918
  0x10, 0x09, 0x00, 0x2C, 0x11, 0x0A, 0x00, 0x33, 0x10, 0x06, 0x11, 0x2C, 0x11, 0x0B, 0x00, 0x35, 
46919
  0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 
46920
  0x12, 0x0C, 0x00, 0x35, 0x11, 0x12, 0x00, 0x1E, 0x11, 0x05, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 
46921
  0x12, 0x0C, 0x00, 0x1B, 0x10, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x10, 0x07, 0x00, 0x1B, 
46922
  0x11, 0x10, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x2C, 0x10, 0x0D, 0x00, 0x2C, 
46923
  0x12, 0x0E, 0x00, 0x33, 0x10, 0x07, 0x12, 0x2C, 0x12, 0x0B, 0x00, 0x35, 0x10, 0x12, 0x00, 0x01, 
46924
  0x10, 0x00, 0x00, 0x32, 0x06, 0x01, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x12, 0x10, 0x00, 0x3C, 
46925
  0x08, 0x06, 0x12, 0x03, 0x12, 0x00, 0x00, 0x8C, 0x35, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x03, 
46926
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x01, 0x0B, 0x00, 0x0B, 
46927
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
46928
  0x00, 0x0B, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 
46929
  0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x29, 0x00, 0x12, 
46930
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 
46931
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 
46932
  0x00, 0x15, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0xBF, 0xFF, 
46933
  0x07, 0x00, 0x07, 0x02, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x18, 0x01, 
46934
  0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 0xBF, 0xFC, 0x07, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x22, 
46935
  0x00, 0x06, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x06, 0x02, 0xDA, 0x86, 0x4C, 0x34, 0x01, 0x00, 0x00, 
46936
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x33, 0x00, 0x01, 0x03, 0x2C, 0x04, 0x01, 0x00, 
46937
  0x36, 0x04, 0x00, 0x00, 0x8C, 0x4A, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0x00, 
46938
  0x03, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
46939
  0xFF, 0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x01, 
46940
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 
46941
  0x81, 0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x81, 0x0E, 
46942
  0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 
46943
  0x01, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x02, 0x00, 
46944
  0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x02, 0x01, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x02, 0x03, 0xDA, 0x81, 
46945
  0x39, 0xBF, 0xFF, 0x02, 0x05, 0xDA, 0x81, 0x92, 0xBF, 0xFF, 0x02, 0x07, 0xDA, 0x81, 0x93, 0xBF, 
46946
  0xFF, 0x02, 0x08, 0xDA, 0x81, 0x94, 0xBF, 0xFF, 0x02, 0x0A, 0xDA, 0x81, 0x95, 0xBF, 0xFF, 0x02, 
46947
  0x0C, 0xDA, 0x81, 0x96, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0xA5, 0x2D, 0x00, 0x02, 0x00, 0x31, 
46948
  0x00, 0x00, 0x00, 0x2D, 0x01, 0x01, 0x04, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x00, 0x01, 0x2C, 
46949
  0x02, 0x00, 0x00, 0x3C, 0x01, 0x02, 0x00, 0x2C, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x02, 0x00, 0x32, 
46950
  0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x35, 0x00, 0x01, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 
46951
  0x01, 0x03, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x01, 0x00, 0x90, 0x63, 0x22, 0x00, 0x22, 
46952
  0x00, 0x22, 0x00, 0x22, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 
46953
  0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x90, 0x5B, 0x14, 0x00, 0x14, 0x00, 
46954
  0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x26, 0x00, 
46955
  0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
46956
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
46957
  0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x90, 0x53, 0x13, 0x00, 0x13, 0x00, 0x13, 
46958
  0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
46959
  0x00, 0x05, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
46960
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46961
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46962
  0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x05, 0x03, 
46963
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46964
  0x05, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46965
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x81, 0x01, 0x00, 0x00, 0xDB, 0x01, 0xD7, 
46966
  0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x0F, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x29, 
46967
  0x00, 0x01, 0x09, 0xCE, 0x07, 0x64, 0x6F, 0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0xDA, 0x04, 0xDA, 0x83, 
46968
  0xC8, 0xDA, 0x8A, 0xB3, 0xDA, 0x81, 0x8A, 0xDA, 0x81, 0xA3, 0xDA, 0x81, 0x8C, 0xDA, 0x81, 0x91, 
46969
  0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0x00, 0x29, 0x00, 0xDA, 
46970
  0x87, 0xA2, 0x00, 0x29, 0x01, 0xDA, 0x81, 0x29, 0x00, 0x29, 0x02, 0xCF, 0x04, 0x68, 0x6F, 0x6F, 
46971
  0x6B, 0x00, 0x29, 0x03, 0xDA, 0x81, 0x4D, 0x00, 0x29, 0x04, 0xDA, 0x81, 0x14, 0x06, 0x29, 0x05, 
46972
  0xCF, 0x05, 0x68, 0x6F, 0x6F, 0x6B, 0x66, 0x0C, 0x29, 0x08, 0xDA, 0x81, 0x92, 0x19, 0x29, 0x09, 
46973
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x69, 0x1C, 0x29, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 
46974
  0x30, 0x30, 0x30, 0x37, 0x6A, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 
46975
  0x00, 0x32, 0x00, 0x05, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 
46976
  0x00, 0x1E, 0x05, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x02, 
46977
  0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x3B, 0x09, 0x00, 
46978
  0x0A, 0x20, 0x09, 0x02, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x05, 
46979
  0x00, 0x35, 0x0A, 0x0B, 0x00, 0x30, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x32, 0x09, 0x0B, 
46980
  0x00, 0x2C, 0x0C, 0x07, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x28, 0x0C, 0x00, 
46981
  0x00, 0x37, 0x0B, 0x09, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0D, 0x05, 
46982
  0x00, 0x35, 0x0B, 0x0D, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0B, 0x0D, 
46983
  0x00, 0x2C, 0x0E, 0x09, 0x00, 0x25, 0x0D, 0x0B, 0x0E, 0x1E, 0x0D, 0x02, 0x00, 0x03, 0x0C, 0x00, 
46984
  0x00, 0x39, 0x0B, 0x0C, 0x09, 0x03, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 
46985
  0x00, 0x00, 0x03, 0x0C, 0x01, 0x07, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xCE, 0x0D, 0x72, 0x75, 0x6E, 
46986
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x68, 0x6F, 0x6F, 0x6B, 0x20, 0xDA, 0x81, 0x8F, 0xDA, 0x81, 0x90, 
46987
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x87, 0xA2, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 
46988
  0x00, 0x02, 0xDA, 0x8E, 0x46, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x04, 
46989
  0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8E, 0x47, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 
46990
  0x92, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x02, 0x2C, 0x02, 0x01, 0x00, 0x33, 0x00, 0x01, 
46991
  0x02, 0x2D, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x35, 0x00, 0x01, 
46992
  0x00, 0x2D, 0x01, 0x00, 0x03, 0x34, 0x01, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x05, 0x36, 0x01, 0x00, 
46993
  0x00, 0xBF, 0xFF, 0x90, 0x6D, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
46994
  0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x90, 0x68, 0x25, 0x00, 
46995
  0x25, 0x00, 0x25, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
46996
  0x13, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
46997
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46998
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 
46999
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x2E, 
47000
  0x00, 0x00, 0x00, 0xDA, 0x80, 0xED, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x01, 
47001
  0x01, 0x0E, 0x46, 0x01, 0x1A, 0xCE, 0x1A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x75, 0x6E, 
47002
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2D, 0x75, 0x6E, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x65, 
47003
  0x64, 0xDA, 0x04, 0xDA, 0x89, 0x8F, 0xD0, 0x09, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 
47004
  0x6C, 0xDA, 0x88, 0xB2, 0xDA, 0x81, 0x38, 0xDA, 0x82, 0x7C, 0xDA, 0x83, 0xD9, 0xCE, 0x07, 0x72, 
47005
  0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0xDA, 0x81, 0x90, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 
47006
  0x81, 0x67, 0xDA, 0x4F, 0xDA, 0x81, 0x3E, 0xDA, 0x81, 0x3F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
47007
  0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 
47008
  0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 
47009
  0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
47010
  0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 
47011
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 
47012
  0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 
47013
  0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0x00, 0x46, 0x00, 0xDA, 0x81, 0x29, 
47014
  0x00, 0x46, 0x01, 0xDA, 0x82, 0xED, 0x03, 0x46, 0x03, 0xDA, 0x89, 0x85, 0x09, 0x46, 0x04, 0xDA, 
47015
  0x89, 0x9B, 0x12, 0x18, 0x08, 0xDA, 0x87, 0xA2, 0x1C, 0x46, 0x07, 0xDA, 0x81, 0x3A, 0x20, 0x3F, 
47016
  0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x6C, 0x23, 0x3F, 0x0A, 0xCF, 0x07, 0x5F, 
47017
  0x30, 0x30, 0x30, 0x30, 0x37, 0x6B, 0x26, 0x3F, 0x0B, 0xDA, 0x8E, 0x13, 0x2F, 0x3D, 0x0C, 0xCF, 
47018
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x6D, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x0D, 
47019
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x40, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 
47020
  0x3B, 0x05, 0x03, 0x06, 0x20, 0x05, 0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1B, 0x04, 0x05, 0x00, 
47021
  0x2C, 0x06, 0x01, 0x00, 0x32, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 
47022
  0x1E, 0x06, 0x0A, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x0E, 0x35, 0x07, 0x08, 0x00, 
47023
  0x1B, 0x08, 0x07, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x08, 0x00, 0x07, 0x31, 0x03, 0x00, 0x00, 
47024
  0x2D, 0x09, 0x00, 0x0F, 0x35, 0x07, 0x09, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x3B, 0x06, 0x03, 0x07, 
47025
  0x20, 0x06, 0x02, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 
47026
  0x2C, 0x09, 0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x0A, 0x00, 0x00, 
47027
  0x49, 0x08, 0x09, 0x0A, 0x1B, 0x0A, 0x08, 0x00, 0x1F, 0x0A, 0x1B, 0x00, 0x3A, 0x08, 0x09, 0x0A, 
47028
  0x1B, 0x0B, 0x08, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x32, 0x08, 0x0B, 0x00, 0x2C, 0x0C, 0x07, 0x00, 
47029
  0x35, 0x08, 0x0C, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x32, 0x0B, 0x08, 0x00, 0x2C, 0x0C, 0x09, 0x00, 
47030
  0x35, 0x08, 0x0C, 0x00, 0x1B, 0x0C, 0x08, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x25, 0x08, 0x0C, 0x0D, 
47031
  0x1E, 0x08, 0x05, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0E, 0x0B, 0x00, 0x35, 0x0D, 0x0E, 0x00, 
47032
  0x1C, 0x07, 0x00, 0x00, 0x2C, 0x0E, 0x0C, 0x00, 0x25, 0x0D, 0x0C, 0x0E, 0x1E, 0x0D, 0x04, 0x00, 
47033
  0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0F, 0x0D, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x49, 0x0A, 0x09, 0x0A, 
47034
  0x1C, 0xE6, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 
47035
  0x31, 0x08, 0x00, 0x00, 0x2D, 0x0A, 0x00, 0x09, 0x35, 0x09, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 
47036
  0xBF, 0xFF, 0x90, 0x7A, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 
47037
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
47038
  0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
47039
  0x07, 0x00, 0x07, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x10, 0x00, 
47040
  0x10, 0x00, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47041
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
47042
  0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
47043
  0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFC, 
47044
  0x05, 0x00, 0x05, 0x05, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
47045
  0xF3, 0x03, 0xDB, 0x01, 0xDA, 0x88, 0x8A, 0xDA, 0x88, 0x71, 0xC9, 0xDA, 0x8A, 0x2F, 0xDA, 0x89, 
47046
  0x68, 0xD7, 0x01, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x13, 0x03, 0x02, 0x03, 0x0B, 0x3B, 0x01, 0x01, 
47047
  0x22, 0xCE, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0xDA, 0x04, 
47048
  0xDA, 0x81, 0x38, 0xDA, 0x81, 0x33, 0xCE, 0x34, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 
47049
  0x74, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
47050
  0x72, 0x79, 0x20, 0x25, 0x76, 0x20, 0x28, 0x6F, 0x72, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6C, 0x72, 
47051
  0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x29, 0xDA, 0x81, 0x49, 0xDA, 
47052
  0x81, 0x27, 0xDA, 0x81, 0x28, 0xDA, 0x89, 0x72, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 
47053
  0xDE, 0xDA, 0x80, 0xDF, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
47054
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
47055
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
47056
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 
47057
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 
47058
  0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
47059
  0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 
47060
  0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
47061
  0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 
47062
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0x00, 0x3B, 
47063
  0x00, 0xDA, 0x81, 0x29, 0x00, 0x3B, 0x01, 0xCF, 0x08, 0x64, 0x65, 0x73, 0x74, 0x2D, 0x64, 0x69, 
47064
  0x72, 0x00, 0x3B, 0x02, 0xCF, 0x09, 0x69, 0x73, 0x2D, 0x62, 0x61, 0x63, 0x6B, 0x75, 0x70, 0x00, 
47065
  0x3B, 0x03, 0xDA, 0x82, 0xF3, 0x00, 0x3B, 0x04, 0xDA, 0x43, 0x04, 0x3B, 0x06, 0xDA, 0x89, 0x85, 
47066
  0x0A, 0x3B, 0x07, 0xDA, 0x81, 0x3A, 0x0E, 0x15, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
47067
  0x37, 0x53, 0x17, 0x3B, 0x0A, 0xDA, 0x81, 0x2A, 0x25, 0x3B, 0x0D, 0xCF, 0x0C, 0x69, 0x6E, 0x73, 
47068
  0x74, 0x61, 0x6C, 0x6C, 0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0x2B, 0x3A, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 
47069
  0x30, 0x30, 0x30, 0x37, 0x54, 0x2E, 0x3A, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
47070
  0x55, 0x2B, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x0D, 0x35, 0x05, 0x06, 
47071
  0x00, 0x1B, 0x06, 0x05, 0x00, 0x40, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x08, 0x06, 
47072
  0x09, 0x20, 0x08, 0x02, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x31, 0x01, 0x00, 
47073
  0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x02, 
47074
  0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x32, 0x09, 0x01, 0x00, 0x2C, 0x0B, 0x03, 
47075
  0x00, 0x35, 0x09, 0x0B, 0x00, 0x2D, 0x0A, 0x00, 0x02, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 
47076
  0x00, 0x2C, 0x0B, 0x04, 0x00, 0x33, 0x01, 0x0A, 0x0B, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 
47077
  0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2C, 0x0B, 0x04, 
47078
  0x00, 0x33, 0x01, 0x0A, 0x0B, 0x2C, 0x0B, 0x06, 0x00, 0x32, 0x0A, 0x0B, 0x00, 0x2C, 0x0D, 0x05, 
47079
  0x00, 0x35, 0x0B, 0x0D, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x07, 
47080
  0x00, 0x32, 0x0E, 0x0F, 0x00, 0x2C, 0x10, 0x08, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x0E, 0x0F, 
47081
  0x00, 0x28, 0x10, 0x00, 0x00, 0x37, 0x0F, 0x0E, 0x10, 0x1B, 0x10, 0x0F, 0x00, 0x31, 0x0E, 0x00, 
47082
  0x00, 0x2C, 0x11, 0x09, 0x00, 0x35, 0x0F, 0x11, 0x00, 0x2C, 0x12, 0x0A, 0x00, 0x25, 0x11, 0x0F, 
47083
  0x12, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x12, 0x00, 
47084
  0x09, 0x35, 0x0F, 0x12, 0x00, 0x39, 0x0F, 0x10, 0x0E, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 
47085
  0x00, 0xDC, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x19, 0x7A, 0x02, 0x2E, 0xDA, 0x89, 0x89, 0xDA, 
47086
  0x04, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x8D, 0x1D, 0xDA, 0x81, 0x28, 0xDA, 0x80, 0xF0, 
47087
  0xDA, 0x81, 0x57, 0xDA, 0x80, 0xEF, 0xDA, 0x86, 0x70, 0xDA, 0x80, 0xA4, 0xDA, 0x81, 0x3E, 0xDA, 
47088
  0x82, 0xF6, 0xDA, 0x81, 0x39, 0xDA, 0x30, 0xDA, 0x81, 0x67, 0xCE, 0x09, 0x66, 0x69, 0x6C, 0x65, 
47089
  0x5F, 0x25, 0x30, 0x36, 0x64, 0xDA, 0x81, 0x4B, 0xDA, 0x82, 0xF8, 0xCE, 0x12, 0x75, 0x6E, 0x65, 
47090
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x76, 0xDA, 
47091
  0x81, 0x49, 0xCE, 0x18, 0x28, 0x64, 0x65, 0x66, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 
47092
  0x6C, 0x20, 0x5B, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5D, 0xCE, 0x05, 0x0A, 0x20, 
47093
  0x20, 0x25, 0x6A, 0xDA, 0x81, 0x70, 0xCE, 0x02, 0x29, 0x0A, 0xDA, 0x87, 0x5E, 0xDA, 0x81, 0x72, 
47094
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 
47095
  0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 
47096
  0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 
47097
  0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 
47098
  0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 
47099
  0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
47100
  0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 
47101
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 
47102
  0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 
47103
  0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 
47104
  0x29, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x8E, 0x55, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x8E, 0x56, 0xBF, 
47105
  0xFF, 0x01, 0x03, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x43, 0xBF, 0xFF, 0x01, 0x06, 
47106
  0xDA, 0x89, 0x85, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x81, 0x3A, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x8E, 
47107
  0x57, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x2A, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x8E, 0x58, 0x01, 
47108
  0x7A, 0x01, 0xCF, 0x0E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2D, 0x73, 0x6F, 0x75, 0x72, 
47109
  0x63, 0x65, 0x09, 0x7A, 0x02, 0xCF, 0x07, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x19, 0x62, 
47110
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x57, 0x1C, 0x62, 0x06, 0xCF, 0x07, 0x5F, 
47111
  0x30, 0x30, 0x30, 0x30, 0x37, 0x56, 0x1F, 0x62, 0x07, 0xDA, 0x8E, 0x13, 0x25, 0x62, 0x09, 0xDA, 
47112
  0x81, 0x63, 0x28, 0x62, 0x0A, 0xDA, 0x81, 0x78, 0x32, 0x62, 0x08, 0xCF, 0x07, 0x72, 0x65, 0x6C, 
47113
  0x70, 0x61, 0x74, 0x68, 0x32, 0x60, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x58, 
47114
  0x4A, 0x5B, 0x0E, 0xDA, 0x81, 0x2D, 0x65, 0x7A, 0x05, 0xDA, 0x81, 0x64, 0x65, 0x72, 0x01, 0xCF, 
47115
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x5A, 0x68, 0x72, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
47116
  0x30, 0x30, 0x37, 0x59, 0x6B, 0x72, 0x08, 0xDA, 0x64, 0x40, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x00, 
47117
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 
47118
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 
47119
  0x00, 0x2D, 0x04, 0x01, 0x02, 0x1E, 0x04, 0x0E, 0x00, 0x2D, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 
47120
  0x00, 0x2D, 0x05, 0x00, 0x04, 0x35, 0x04, 0x05, 0x00, 0x2D, 0x05, 0x01, 0x01, 0x2D, 0x06, 0x01, 
47121
  0x0A, 0x2C, 0x07, 0x02, 0x00, 0x33, 0x05, 0x06, 0x07, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x05, 0x06, 
47122
  0x00, 0x32, 0x04, 0x05, 0x00, 0x2D, 0x07, 0x00, 0x0B, 0x35, 0x06, 0x07, 0x00, 0x2D, 0x04, 0x01, 
47123
  0x07, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x04, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x45, 
47124
  0x00, 0x3A, 0x05, 0x04, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x04, 
47125
  0x00, 0x35, 0x05, 0x08, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x3A, 0x08, 0x05, 0x09, 0x1B, 0x09, 0x08, 
47126
  0x00, 0x2C, 0x0A, 0x06, 0x00, 0x3A, 0x08, 0x05, 0x0A, 0x1B, 0x0A, 0x08, 0x00, 0x3F, 0x05, 0x02, 
47127
  0x00, 0x2B, 0x08, 0xFF, 0xFF, 0x33, 0x07, 0x05, 0x08, 0x2C, 0x0B, 0x07, 0x00, 0x35, 0x08, 0x0B, 
47128
  0x00, 0x2D, 0x05, 0x01, 0x0A, 0x32, 0x08, 0x05, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x35, 0x05, 0x0B, 
47129
  0x00, 0x1B, 0x08, 0x05, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x25, 0x05, 0x0A, 0x0B, 0x1E, 0x05, 0x0A, 
47130
  0x00, 0x2C, 0x0C, 0x0A, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x33, 0x0C, 0x0D, 0x08, 0x31, 0x09, 0x00, 
47131
  0x00, 0x45, 0x0B, 0x00, 0x00, 0x32, 0x01, 0x0B, 0x00, 0x2C, 0x0D, 0x0C, 0x00, 0x35, 0x0C, 0x0D, 
47132
  0x00, 0x1C, 0x22, 0x00, 0x00, 0x2C, 0x0C, 0x0D, 0x00, 0x25, 0x0B, 0x0A, 0x0C, 0x1E, 0x0B, 0x1B, 
47133
  0x00, 0x2D, 0x0D, 0x01, 0x04, 0x05, 0x0C, 0x0D, 0x01, 0x2F, 0x0C, 0x01, 0x04, 0x2C, 0x0D, 0x0E, 
47134
  0x00, 0x2D, 0x0E, 0x01, 0x04, 0x32, 0x0D, 0x0E, 0x00, 0x2C, 0x0E, 0x0F, 0x00, 0x35, 0x0D, 0x0E, 
47135
  0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x2D, 0x0D, 0x01, 0x01, 0x2D, 0x0F, 0x01, 0x0A, 0x33, 0x0D, 0x0F, 
47136
  0x0E, 0x2C, 0x0F, 0x03, 0x00, 0x35, 0x0D, 0x0F, 0x00, 0x32, 0x07, 0x0D, 0x00, 0x2D, 0x10, 0x00, 
47137
  0x0A, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x0F, 0x10, 0x00, 0x2C, 0x10, 0x0B, 0x00, 0x33, 0x0F, 0x10, 
47138
  0x0E, 0x32, 0x08, 0x09, 0x00, 0x45, 0x0D, 0x00, 0x00, 0x32, 0x01, 0x0D, 0x00, 0x2C, 0x10, 0x0C, 
47139
  0x00, 0x35, 0x0F, 0x10, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0C, 0x11, 0x00, 0x32, 0x0C, 0x07, 
47140
  0x00, 0x2C, 0x0D, 0x12, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x49, 0x06, 0x04, 0x06, 0x1C, 0xBC, 0xFF, 
47141
  0xFF, 0x2C, 0x04, 0x13, 0x00, 0x31, 0x04, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 
47142
  0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x01, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x09, 
47143
  0x00, 0x3A, 0x06, 0x01, 0x07, 0x1B, 0x08, 0x06, 0x00, 0x2C, 0x06, 0x14, 0x00, 0x33, 0x05, 0x06, 
47144
  0x08, 0x2C, 0x09, 0x15, 0x00, 0x35, 0x06, 0x09, 0x00, 0x49, 0x07, 0x01, 0x07, 0x1C, 0xF8, 0xFF, 
47145
  0xFF, 0x2C, 0x06, 0x16, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x17, 0x00, 0x35, 0x06, 0x07, 
47146
  0x00, 0x2D, 0x07, 0x01, 0x0D, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x07, 0x18, 0x00, 0x36, 0x07, 0x00, 
47147
  0x00, 0x00, 0xBF, 0xFF, 0x91, 0x18, 0x07, 0x00, 0x07, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 
47148
  0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x1F, 0x00, 
47149
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 
47150
  0x38, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
47151
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x09, 0x00, 0x09, 0x00, 
47152
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x30, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 
47153
  0x24, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 
47154
  0x09, 0x01, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x16, 0x00, 0x16, 0x00, 
47155
  0x16, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 
47156
  0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x13, 0x01, 0x22, 0x00, 0x22, 
47157
  0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x2E, 0x00, 0x2E, 
47158
  0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFB, 0x09, 0x06, 
47159
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xF7, 0x07, 0x00, 0x07, 0x0A, 0x07, 0x00, 0x07, 
47160
  0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
47161
  0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 
47162
  0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x91, 0x10, 0x05, 0x01, 
47163
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
47164
  0x10, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47165
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 
47166
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 
47167
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47168
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47169
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
47170
  0x05, 0xBF, 0xF4, 0x03, 0x97, 0x24, 0x00, 0x00, 0xDB, 0x01, 0xDA, 0x8D, 0x18, 0xDA, 0x88, 0x36, 
47171
  0xDA, 0x84, 0x23, 0xC9, 0xDA, 0x8C, 0xCE, 0xC9, 0xC9, 0xC9, 0xC9, 0xDA, 0x82, 0x42, 0xD3, 0x03, 
47172
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x88, 0x58, 0x01, 0xDA, 0x06, 0xCE, 0x54, 0x28, 0x6F, 
47173
  0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 
47174
  0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 
47175
  0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 
47176
  0x63, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
47177
  0x20, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 
47178
  0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x82, 0x43, 0xDA, 0x82, 0x44, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47179
  0x00, 0xDA, 0x21, 0x81, 0x0E, 0x01, 0xDA, 0x06, 0xCE, 0x32, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
47180
  0x63, 0x6F, 0x73, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47181
  0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 
47182
  0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 
47183
  0x45, 0xDA, 0x82, 0x46, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x4A, 0x01, 
47184
  0xDA, 0x06, 0xCE, 0x3E, 0x28, 0x65, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x64, 0x73, 0x20, 0x26, 
47185
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 
47186
  0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 
47187
  0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
47188
  0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x82, 0x47, 0xDA, 0x82, 0x64, 0xD3, 0x03, 0xDA, 
47189
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x1E, 0x28, 0x65, 0x76, 
47190
  0x65, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
47191
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x65, 
47192
  0xDA, 0x82, 0x6F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x73, 0x72, 0x63, 0x2F, 
47193
  0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x63, 0x80, 0xD2, 0x01, 
47194
  0xDA, 0x06, 0xCE, 0x7F, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 
47195
  0x2D, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x26, 0x20, 0x6B, 
47196
  0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 
47197
  0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 
47198
  0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
47199
  0x74, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x62, 0x75, 
47200
  0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
47201
  0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 
47202
  0x6C, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x70, 0xDA, 0x82, 0x71, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47203
  0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x87, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x39, 0x28, 0x73, 0x74, 
47204
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x70, 0x61, 0x74, 
47205
  0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
47206
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
47207
  0x6F, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 
47208
  0x61, 0x74, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 
47209
  0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
47210
  0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 
47211
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 
47212
  0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
47213
  0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x6F, 
47214
  0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 
47215
  0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 
47216
  0x75, 0x6C, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
47217
  0x63, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 
47218
  0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 0x57, 
47219
  0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
47220
  0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 
47221
  0x74, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 
47222
  0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47223
  0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x72, 0xDA, 0x82, 0x73, 0xD3, 0x03, 
47224
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
47225
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x63, 0x80, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x53, 0x28, 0x61, 
47226
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 
47227
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 
47228
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
47229
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
47230
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
47231
  0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x74, 0xDA, 0x82, 0x75, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47232
  0xDA, 0x04, 0x82, 0x2A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9C, 0x28, 0x66, 0x6F, 0x72, 0x76, 0x20, 
47233
  0x69, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 0x26, 0x20, 0x62, 
47234
  0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x43, 0x2D, 0x73, 0x74, 0x79, 
47235
  0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 0x6F, 0x72, 0x20, 
47236
  0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 
47237
  0x65, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 
47238
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x69, 0x60, 0x0A, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
47239
  0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
47240
  0x6F, 0x6F, 0x70, 0x2C, 0x20, 0x75, 0x6E, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 
47241
  0x61, 0x6C, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
47242
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x82, 0x76, 0xDA, 0x82, 
47243
  0x8A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x4C, 0x01, 0xDA, 0x06, 
47244
  0xCE, 0x81, 0x1A, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x73, 
47245
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 
47246
  0x75, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 
47247
  0x74, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 
47248
  0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 
47249
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x75, 0x73, 0x75, 0x61, 
47250
  0x6C, 0x6C, 0x79, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x6E, 
47251
  0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x65, 0x64, 
47252
  0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x61, 
47253
  0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
47254
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
47255
  0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
47256
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
47257
  0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
47258
  0x65, 0x77, 0x20, 0x64, 0x75, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
47259
  0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 
47260
  0x73, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
47261
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
47262
  0x82, 0x8B, 0xDA, 0x82, 0x8C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 
47263
  0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x65, 0x76, 0x2E, 0x63, 0x84, 0x63, 0x01, 0xDA, 0x06, 
47264
  0xCE, 0x80, 0xA4, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 
47265
  0x6E, 0x65, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 
47266
  0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x63, 
47267
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 
47268
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 
47269
  0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 
47270
  0x6E, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 
47271
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
47272
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x75, 
47273
  0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x74, 0x68, 
47274
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x8D, 0xDA, 0x82, 0x8E, 0xD3, 
47275
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x80, 0x91, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 
47276
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 
47277
  0x20, 0x72, 0x6E, 0x67, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x61, 
47278
  0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x69, 
47279
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 0x2C, 0x20, 
47280
  0x31, 0x29, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x4E, 0x47, 0x2E, 
47281
  0xDA, 0x08, 0xDA, 0x82, 0x8F, 0xCF, 0x06, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0xD3, 0x03, 0xDA, 
47282
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xAC, 0x01, 0xDA, 0x06, 0xCE, 0x1C, 0x54, 0x68, 0x65, 
47283
  0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x74, 
47284
  0x75, 0x72, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x67, 0x2E, 0xDA, 0x08, 0xC8, 0x69, 0x57, 0x14, 0x8B, 
47285
  0x0A, 0xBF, 0x05, 0x40, 0xDA, 0x82, 0x90, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
47286
  0x89, 0x22, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x61, 0x28, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x20, 0x78, 
47287
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
47288
  0x29, 0x0A, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 
47289
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x6C, 0x79, 0x2E, 0x0A, 0x60, 0x6F, 0x6E, 
47290
  0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 
47291
  0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 
47292
  0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x65, 0x76, 0x65, 0x72, 0x20, 0x61, 
47293
  0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 0x63, 
47294
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x69, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 
47295
  0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6C, 
47296
  0x6C, 0x6F, 0x77, 0x73, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x65, 
47297
  0x61, 0x73, 0x69, 0x6C, 0x79, 0x20, 0x73, 0x65, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x69, 
47298
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 
47299
  0x68, 0x65, 0x69, 0x72, 0x0A, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x62, 
47300
  0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x65, 0x78, 
47301
  0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 
47302
  0x6E, 0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
47303
  0x20, 0x69, 0x74, 0x73, 0x65, 0x6C, 0x66, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x0A, 
47304
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 
47305
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 
47306
  0x79, 0x20, 0x60, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x77, 
47307
  0x69, 0x74, 0x68, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
47308
  0x65, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x91, 0xDA, 0x82, 
47309
  0xE5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x86, 0x03, 0xDA, 0x06, 0xCE, 
47310
  0x80, 0xCF, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x62, 0x69, 
47311
  0x6E, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 
47312
  0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 
47313
  0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 
47314
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 
47315
  0x74, 0x73, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x73, 
47316
  0x74, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x20, 0x77, 0x69, 
47317
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
47318
  0x74, 0x6F, 0x0A, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x28, 0x64, 0x79, 0x6E, 
47319
  0x20, 0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0x29, 0x20, 0x22, 0x2F, 0x62, 0x69, 
47320
  0x6E, 0x22, 0x29, 0x60, 0x20, 0x62, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
47321
  0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 
47322
  0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 
47323
  0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xE6, 0xDA, 0x82, 0xFD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47324
  0xDA, 0x04, 0x83, 0x8E, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x6E, 0x65, 0x67, 0x3F, 0x20, 0x78, 
47325
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
47326
  0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 
47327
  0x82, 0xFE, 0xDA, 0x83, 0x00, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x90, 
47328
  0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x2F, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 
47329
  0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
47330
  0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 0x28, 0x2F, 0x20, 0x78, 0x20, 0x6E, 0x29, 0x29, 0x2E, 
47331
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x01, 0xDA, 0x80, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47332
  0x03, 0x00, 0xDA, 0x04, 0x8E, 0xEA, 0x03, 0xDA, 0x06, 0xCE, 0x29, 0x28, 0x6E, 0x65, 0x74, 0x2F, 
47333
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x41, 
47334
  0x6C, 0x69, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 
47335
  0x73, 0x65, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x05, 0xDA, 0x83, 0x09, 0xD3, 0x03, 0xDA, 0x03, 
47336
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x80, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 0x28, 0x62, 
47337
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 
47338
  0x20, 0x26, 0x20, 0x62, 0x79, 0x74, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
47339
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
47340
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 
47341
  0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x79, 0x74, 
47342
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
47343
  0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 
47344
  0x6F, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 
47345
  0x6E, 0x67, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x30, 0x2D, 
47346
  0x32, 0x35, 0x35, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x0A, 0xDA, 0x83, 0x0B, 0xD3, 0x02, 0xDA, 0x06, 
47347
  0xCE, 0x80, 0x99, 0x28, 0x63, 0x6D, 0x70, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
47348
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x2D, 0x31, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
47349
  0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 
47350
  0x68, 0x61, 0x6E, 0x20, 0x79, 0x2C, 0x20, 0x31, 0x20, 0x69, 0x66, 0x20, 0x79, 0x20, 0x69, 0x73, 
47351
  0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 
47352
  0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x30, 0x20, 
47353
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0x20, 0x54, 0x6F, 0x20, 0x72, 0x65, 
47354
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x2C, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x20, 
47355
  0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 
47356
  0x74, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 
47357
  0x0C, 0xDA, 0x83, 0x0E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 
47358
  0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x66, 0x69, 0x2E, 0x63, 0x86, 0xDD, 0x01, 0xDA, 0x06, 
47359
  0xCE, 0x81, 0x1C, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x26, 
47360
  0x6F, 0x70, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x61, 0x64, 0x20, 
47361
  0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 
47362
  0x6F, 0x72, 0x20, 0x64, 0x6C, 0x6C, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
47363
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47364
  0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x6F, 
47365
  0x72, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 
47366
  0x72, 0x6F, 0x6D, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 
47367
  0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x60, 
47368
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 
47369
  0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 
47370
  0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x67, 
47371
  0x65, 0x74, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 
47372
  0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x69, 0x73, 0x20, 
47373
  0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
47374
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x62, 
47375
  0x69, 0x6E, 0x61, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
47376
  0x20, 0x60, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x60, 0x2E, 0xDA, 
47377
  0x08, 0xDA, 0x83, 0x0F, 0xDA, 0x82, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
47378
  0x68, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 0x20, 0x78, 
47379
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
47380
  0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x95, 0xDA, 
47381
  0x83, 0x10, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x80, 0xD0, 0x01, 0xDA, 
47382
  0x06, 0xCE, 0x80, 0x90, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 
47383
  0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 
47384
  0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
47385
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x66, 
47386
  0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x60, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 
47387
  0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x62, 0x79, 0x74, 
47388
  0x65, 0x60, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 
47389
  0x60, 0x62, 0x79, 0x74, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2E, 0x20, 0x52, 0x65, 0x74, 
47390
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 
47391
  0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x11, 0xDA, 0x83, 0x12, 0xD3, 0x03, 0xDA, 0x03, 
47392
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xBB, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAF, 0x28, 0x6D, 0x61, 
47393
  0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x66, 0x6D, 0x74, 
47394
  0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x69, 
47395
  0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x63, 
47396
  0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
47397
  0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x65, 
47398
  0x72, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 
47399
  0x0A, 0x61, 0x20, 0x60, 0x66, 0x6D, 0x74, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
47400
  0x74, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 
47401
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 
47402
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 
47403
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 
47404
  0x13, 0xDA, 0x83, 0x1E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0x67, 0x01, 
47405
  0xDA, 0x06, 0xCE, 0x80, 0x86, 0x28, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 
47406
  0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
47407
  0x74, 0x69, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 
47408
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
47409
  0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x73, 0x69, 
47410
  0x6E, 0x63, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x75, 0x61, 0x72, 0x79, 0x20, 0x31, 0x2C, 0x20, 0x31, 
47411
  0x39, 0x37, 0x30, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x65, 0x70, 
47412
  0x6F, 0x63, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 
47413
  0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x1F, 
47414
  0xDA, 0x83, 0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xB8, 0x01, 0xDA, 
47415
  0x06, 0xCE, 0x44, 0x28, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
47416
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
47417
  0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 
47418
  0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
47419
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x21, 0xDA, 0x83, 0x28, 0xD3, 
47420
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x91, 0x01, 0xDA, 0x06, 0xCE, 0x1C, 0x28, 
47421
  0x6F, 0x64, 0x64, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
47422
  0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x64, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x29, 
47423
  0xDA, 0x83, 0x2B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 0x63, 0x2F, 
47424
  0x63, 0x6F, 0x72, 0x65, 0x2F, 0x69, 0x6F, 0x2E, 0x63, 0x82, 0xA1, 0x01, 0xDA, 0x06, 0xCE, 0x5F, 
47425
  0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6D, 0x74, 0x20, 
47426
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 0x72, 0x69, 
47427
  0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 
47428
  0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x20, 0x66, 
47429
  0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x74, 0x6F, 
47430
  0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 
47431
  0x08, 0xDA, 0x83, 0x2C, 0xDA, 0x83, 0x2D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 
47432
  0x95, 0x83, 0x15, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 
47433
  0x61, 0x6C, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 
47434
  0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x61, 
47435
  0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 
47436
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
47437
  0x61, 0x74, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x2E, 0xDA, 0x83, 
47438
  0x2F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x59, 0x01, 0xDA, 0x06, 0xCE, 
47439
  0x3D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 
47440
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x61, 
47441
  0x73, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 
47442
  0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x2E, 0xDA, 0x08, 
47443
  0xDA, 0x83, 0x30, 0xDA, 0x83, 0x31, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 
47444
  0x61, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 0x70, 0x65, 
47445
  0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 
47446
  0x70, 0x70, 0x60, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xDA, 0x86, 0x72, 0xCB, 
47447
  0xDA, 0x08, 0xDA, 0x83, 0x32, 0xDA, 0x83, 0x33, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 
47448
  0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
47449
  0x63, 0x81, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE8, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 
47450
  0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x20, 0x74, 0x61, 0x62, 0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 
47451
  0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 
47452
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 
47453
  0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x69, 0x6E, 0x67, 
47454
  0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 
47455
  0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, 0x61, 0x62, 
47456
  0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 
47457
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 
47458
  0x74, 0x6C, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
47459
  0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 
47460
  0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x69, 
47461
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 
47462
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 
47463
  0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
47464
  0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xD2, 0xDA, 0x83, 0x34, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47465
  0xDA, 0x8E, 0x86, 0x8D, 0x18, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xFD, 0x28, 0x65, 0x76, 0x2F, 0x61, 
47466
  0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 
47467
  0x29, 0x0A, 0x0A, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x63, 
47468
  0x6B, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 
47469
  0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 
47470
  0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
47471
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
47472
  0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
47473
  0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 
47474
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 
47475
  0x6E, 0x74, 0x69, 0x72, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x75, 0x6E, 0x74, 
47476
  0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x62, 0x65, 0x63, 0x6F, 
47477
  0x6D, 0x65, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x61, 
47478
  0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 
47479
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
47480
  0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 
47481
  0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x35, 0xDA, 0x83, 0x36, 
47482
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x12, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 
47483
  0x65, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x6C, 0x69, 0x62, 0x2E, 0x63, 0x82, 0xAB, 0x01, 0xDA, 0x06, 
47484
  0xCE, 0x31, 0x28, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 0x20, 0x78, 
47485
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
47486
  0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 
47487
  0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x37, 0xDA, 0x83, 0x38, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
47488
  0x03, 0x00, 0xDA, 0x04, 0x8C, 0xA7, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x57, 0x68, 0x65, 0x74, 0x68, 
47489
  0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6C, 
47490
  0x6F, 0x72, 0x69, 0x7A, 0x65, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 
47491
  0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
47492
  0x20, 0x60, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 0xDA, 0x86, 
47493
  0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x39, 0xDA, 0x83, 0x3A, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x59, 
47494
  0x28, 0x62, 0x78, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
47495
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 
47496
  0x65, 0x20, 0x78, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 
47497
  0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 
47498
  0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 
47499
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x3B, 0xDA, 0x83, 
47500
  0x3D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x33, 0x01, 0xDA, 0x06, 0xCE, 
47501
  0x3E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 
47502
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x63, 0x20, 0x66, 0x72, 0x6F, 
47503
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x71, 0x75, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 
47504
  0x5E, 0x32, 0x20, 0x3D, 0x20, 0x61, 0x5E, 0x32, 0x20, 0x2B, 0x20, 0x62, 0x5E, 0x32, 0x2E, 0xDA, 
47505
  0x08, 0xDA, 0x83, 0x3E, 0xDA, 0x83, 0x3F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
47506
  0x91, 0xB0, 0x01, 0xDA, 0x06, 0xCE, 0x4B, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 
47507
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 
47508
  0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 
47509
  0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
47510
  0x20, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x72, 
47511
  0x74, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x40, 0xDA, 0x83, 0x41, 0xD3, 0x02, 
47512
  0xDA, 0x06, 0xCE, 0x81, 0x62, 0x28, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x66, 0x69, 0x62, 
47513
  0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x73, 0x75, 
47514
  0x6D, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x75, 0x73, 0x70, 
47515
  0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47516
  0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 
47517
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
47518
  0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 
47519
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x6F, 
47520
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 
47521
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 
47522
  0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 
47523
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
47524
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 
47525
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
47526
  0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 
47527
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 0x69, 0x74, 
47528
  0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x72, 
47529
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 
47530
  0x65, 0x72, 0x27, 0x73, 0x20, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 0x66, 0x75, 
47531
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
47532
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 
47533
  0x78, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
47534
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x42, 0xDA, 0x83, 0x44, 0xD3, 
47535
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xBA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC0, 
47536
  0x28, 0x65, 0x76, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
47537
  0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 
47538
  0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
47539
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
47540
  0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 
47541
  0x6F, 0x6C, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6E, 0x76, 0x69, 
47542
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 
47543
  0x64, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 
47544
  0x65, 0x78, 0x74, 0x60, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 
47545
  0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x60, 0x65, 0x6E, 0x76, 
47546
  0x60, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x76, 0x61, 
47547
  0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 
47548
  0xDA, 0x08, 0xDA, 0x83, 0x45, 0xDA, 0x83, 0x4A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47549
  0x04, 0x8C, 0x9C, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 0x61, 0x6C, 0x6C, 0x2D, 0x64, 0x79, 
47550
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 
47551
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
47552
  0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 
47553
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
47554
  0x6E, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 
47555
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x0A, 0x66, 0x69, 0x62, 0x65, 
47556
  0x72, 0x27, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 
47557
  0x20, 0x49, 0x66, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 
47558
  0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
47559
  0x73, 0x68, 0x6F, 0x77, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x20, 0x62, 
47560
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x0A, 0x28, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x70, 0x72, 
47561
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x29, 0x2E, 
47562
  0xDA, 0x08, 0xDA, 0x83, 0x4B, 0xDA, 0x83, 0x68, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xF4, 0x28, 
47563
  0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 0x73, 0x68, 0x69, 
47564
  0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
47565
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x62, 0x69, 0x74, 
47566
  0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 
47567
  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
47568
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 
47569
  0x73, 0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 
47570
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x6D, 
47571
  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
47572
  0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 
47573
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 
47574
  0x64, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 
47575
  0x76, 0x65, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
47576
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
47577
  0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 
47578
  0x76, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x69, 0xDA, 0x83, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47579
  0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x80, 0xAC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 0x61, 0x72, 
47580
  0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 0x6F, 0x70, 
47581
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 
47582
  0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 
47583
  0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
47584
  0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x20, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
47585
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 
47586
  0x6F, 0x75, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
47587
  0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
47588
  0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
47589
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
47590
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x6C, 0xDA, 0x83, 0x6D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47591
  0xDA, 0x04, 0x86, 0x57, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1B, 0x28, 0x75, 0x70, 0x64, 0x61, 0x74, 
47592
  0x65, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 
47593
  0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x76, 
47594
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 
47595
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 
47596
  0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
47597
  0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x76, 0x69, 0x61, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 
47598
  0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2C, 0x0A, 0x61, 0x6E, 
47599
  0x64, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
47600
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 
47601
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x65, 
47602
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 
47603
  0x0A, 0x4D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 
47604
  0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
47605
  0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
47606
  0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 
47607
  0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x69, 
47608
  0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
47609
  0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x6E, 0xDA, 0x83, 0x77, 0xD3, 0x03, 0xDA, 
47610
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x78, 0x01, 0xDA, 0x06, 0xCE, 0x54, 0x28, 0x74, 
47611
  0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 
47612
  0x61, 0x62, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x29, 0x0A, 0x0A, 
47613
  0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
47614
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 
47615
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
47616
  0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x69, 0xDA, 0x83, 0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47617
  0xDA, 0x8E, 0x86, 0x8D, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x6F, 
47618
  0x2D, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x63, 
47619
  0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6F, 0x66, 
47620
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x69, 
47621
  0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
47622
  0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 
47623
  0x67, 0x20, 0x49, 0x4F, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6F, 0x72, 0x20, 0x69, 0x73, 
47624
  0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x79, 0xDA, 0x83, 0x7A, 
47625
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
47626
  0xC8, 0x28, 0x65, 0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 
47627
  0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 
47628
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
47629
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 
47630
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6D, 
47631
  0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x6F, 0x76, 0x65, 0x72, 
47632
  0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
47633
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 
47634
  0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x2E, 0x20, 0x4F, 
47635
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 
47636
  0x6E, 0x20, 0x61, 0x6E, 0x20, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
47637
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 
47638
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x7B, 0xDA, 0x83, 
47639
  0x82, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x13, 0x01, 0xDA, 0x06, 0xCE, 
47640
  0x27, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
47641
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x6E, 0x67, 0x65, 
47642
  0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x83, 0xDA, 0x83, 0x84, 
47643
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x6D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
47644
  0xCD, 0x28, 0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 0x20, 0x76, 
47645
  0x29, 0x0A, 0x0A, 0x50, 0x75, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 
47646
  0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 
47647
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 
47648
  0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 0x64, 0x73, 
47649
  0x60, 0x20, 0x76, 0x69, 0x61, 0x0A, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
47650
  0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x4D, 0x69, 0x73, 0x73, 0x69, 0x6E, 
47651
  0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
47652
  0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
47653
  0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 
47654
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
47655
  0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x64, 
47656
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 
47657
  0xDA, 0x83, 0x85, 0xDA, 0x83, 0x88, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 
47658
  0xEC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB5, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x20, 0x6E, 0x20, 0x69, 
47659
  0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x44, 0x72, 0x6F, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
47660
  0x72, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
47661
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 
47662
  0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 
47663
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 
47664
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x69, 0x6E, 0x73, 0x74, 
47665
  0x61, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 
47666
  0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 
47667
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x64, 0x72, 0x6F, 0x70, 0x73, 0x20, 0x74, 0x68, 
47668
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
47669
  0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 
47670
  0x89, 0xDA, 0x83, 0x9C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x9F, 
47671
  0x01, 0xDA, 0x06, 0xCE, 0x6C, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x74, 
47672
  0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 
47673
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 
47674
  0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
47675
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x69, 0x6E, 0x67, 
47676
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 
47677
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
47678
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x9D, 0xDA, 0x83, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47679
  0xDA, 0x80, 0x95, 0x83, 0x9E, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xDA, 0x28, 0x6E, 0x65, 0x74, 0x2F, 
47680
  0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x64, 
47681
  0x65, 0x73, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 
47682
  0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x61, 
47683
  0x20, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 
47684
  0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x64, 0x65, 
47685
  0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x74, 
47686
  0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 
47687
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x20, 0x54, 
47688
  0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
47689
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 
47690
  0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
47691
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 
47692
  0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x73, 0x74, 
47693
  0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x9F, 0xDA, 0x83, 0xA0, 0xD3, 0x04, 0xDA, 
47694
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xDF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE4, 0x28, 0x77, 
47695
  0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
47696
  0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 
47697
  0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 
47698
  0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 
47699
  0x61, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x0A, 0x64, 0x79, 0x6E, 0x61, 
47700
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x73, 0x65, 0x74, 
47701
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
47702
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 
47703
  0x0A, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 
47704
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 
47705
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 
47706
  0x6F, 0x70, 0x65, 0x72, 0x6C, 0x79, 0x0A, 0x75, 0x6E, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x61, 0x73, 
47707
  0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
47708
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x6C, 0x6F, 0x63, 0x61, 
47709
  0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0xA1, 0xDA, 0x83, 0xAB, 0xD3, 0x03, 0xDA, 
47710
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x62, 
47711
  0x79, 0x74, 0x65, 0x73, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 
47712
  0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
47713
  0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
47714
  0x64, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
47715
  0x3C, 0xDA, 0x81, 0x25, 0xCE, 0x14, 0x2F, 0x75, 0x73, 0x72, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 
47716
  0x2F, 0x6C, 0x69, 0x62, 0x2F, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0x79, 0xD3, 0x03, 0xDA, 
47717
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x57, 0x01, 0xDA, 0x06, 0xCE, 0x68, 0x28, 0x73, 0x70, 
47718
  0x69, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 
47719
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 
47720
  0x74, 0x65, 0x20, 0x60, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x60, 0x20, 0x74, 0x6F, 
47721
  0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x74, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 
47722
  0x60, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 
47723
  0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
47724
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x72, 0xDA, 0x83, 0xAC, 0xD3, 0x03, 0xDA, 
47725
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x39, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x6D, 0x61, 
47726
  0x78, 0x2D, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
47727
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 
47728
  0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
47729
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
47730
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xAD, 0xDA, 0x83, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47731
  0xDA, 0x04, 0x8F, 0x51, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0x98, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 
47732
  0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 
47733
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x74, 0x79, 0x70, 
47734
  0x65, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x74, 0x61, 
47735
  0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x61, 0x73, 0x79, 0x6E, 
47736
  0x63, 0x68, 0x72, 0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
47737
  0x60, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x60, 0x20, 0x61, 0x6E, 0x64, 
47738
  0x20, 0x60, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 
47739
  0x70, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
47740
  0x6E, 0x65, 0x77, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
47741
  0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xB0, 0xDA, 0x83, 0xB9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47742
  0x00, 0xDA, 0x8E, 0xA6, 0x86, 0x75, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB1, 0x28, 0x66, 0x66, 0x69, 
47743
  0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x73, 0x69, 
47744
  0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
47745
  0x0A, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 
47746
  0x74, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
47747
  0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 
47748
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 
47749
  0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 
47750
  0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 
47751
  0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 
47752
  0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 
47753
  0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
47754
  0x83, 0xBA, 0xDA, 0x83, 0xBB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0xA0, 
47755
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA8, 0x28, 0x6F, 0x73, 0x2F, 0x64, 0x69, 0x72, 0x20, 0x64, 0x69, 
47756
  0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x29, 0x0A, 0x0A, 0x49, 
47757
  0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 
47758
  0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x75, 0x62, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
47759
  0x72, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 
47760
  0x6F, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 
47761
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x70, 
47762
  0x61, 0x72, 0x74, 0x73, 0x2C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
47763
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x72, 
47764
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 
47765
  0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2E, 0xDA, 0x08, 
47766
  0xDA, 0x80, 0xF1, 0xDA, 0x83, 0xBC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 
47767
  0xDA, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xC7, 0x28, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x20, 0x66, 
47768
  0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x64, 0x75, 
47769
  0x63, 0x65, 0x2C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x20, 0x61, 0x73, 
47770
  0x20, 0x66, 0x6F, 0x6C, 0x64, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 
47771
  0x6E, 0x79, 0x20, 0x6C, 0x61, 0x6E, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x72, 
47772
  0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x0A, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 
47773
  0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 
47774
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x66, 
47775
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 
47776
  0x63, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x70, 
47777
  0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x60, 0x20, 0x74, 0x6F, 0x0A, 0x65, 0x61, 
47778
  0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 
47779
  0x64, 0x65, 0x72, 0x2E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 
47780
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x32, 0x20, 0x61, 0x72, 0x67, 0x75, 
47781
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x60, 0x28, 0x66, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 
47782
  0x20, 0x65, 0x6C, 0x29, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0A, 0x60, 0x61, 0x63, 
47783
  0x63, 0x75, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 
47784
  0x69, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 
47785
  0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x76, 
47786
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 
47787
  0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x0A, 
47788
  0x60, 0x66, 0x60, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 
47789
  0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
47790
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x60, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x60, 
47791
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x63, 0x61, 0x6C, 
47792
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x60, 0x2E, 0x20, 0x60, 0x72, 0x65, 0x64, 0x75, 0x63, 
47793
  0x65, 0x60, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
47794
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6E, 0x61, 
47795
  0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x60, 0x2E, 0xDA, 0x08, 
47796
  0xDA, 0x83, 0xBD, 0xDA, 0x83, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 
47797
  0x71, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0xB1, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x20, 
47798
  0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x61, 0x62, 0x7C, 0x6B, 0x65, 
47799
  0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
47800
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 
47801
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 
47802
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
47803
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x61, 0x72, 
47804
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 
47805
  0x6F, 0x72, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 
47806
  0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 
47807
  0x6F, 0x6E, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x74, 0x2E, 0x20, 0x49, 0x66, 
47808
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 
47809
  0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
47810
  0x65, 0x78, 0x69, 0x73, 0x74, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
47811
  0x69, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 
47812
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x76, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 
47813
  0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
47814
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 
47815
  0x6F, 0x64, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 
47816
  0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x3A, 
47817
  0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x3A, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
47818
  0x2C, 0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x2C, 0x20, 0x3A, 0x63, 0x68, 0x61, 0x72, 0x61, 
47819
  0x63, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x3A, 0x66, 0x69, 0x66, 0x6F, 0x2C, 0x20, 0x3A, 0x73, 0x6F, 
47820
  0x63, 0x6B, 0x65, 0x74, 0x2C, 0x20, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x2C, 0x20, 0x6F, 0x72, 0x20, 
47821
  0x3A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x2D, 0x70, 
47822
  0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x55, 
47823
  0x6E, 0x69, 0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 
47824
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x38, 0x72, 0x37, 0x34, 
47825
  0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 
47826
  0x73, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 
47827
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x6B, 
47828
  0x65, 0x20, 0x22, 0x72, 0x77, 0x78, 0x72, 0x2D, 0x2D, 0x72, 0x2D, 0x2D, 0x22, 0x0A, 0x0A, 0x2A, 
47829
  0x20, 0x3A, 0x75, 0x69, 0x64, 0x20, 0x2D, 0x20, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x75, 0x69, 0x64, 
47830
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x67, 0x69, 0x64, 0x20, 0x2D, 0x20, 0x46, 0x69, 0x6C, 0x65, 0x20, 
47831
  0x67, 0x69, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x2D, 0x20, 
47832
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x20, 
47833
  0x74, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x64, 0x65, 0x76, 
47834
  0x20, 0x2D, 0x20, 0x52, 0x65, 0x61, 0x6C, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6F, 
47835
  0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 
47836
  0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x2D, 0x20, 
47837
  0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 
47838
  0x62, 0x79, 0x74, 0x65, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 
47839
  0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6C, 0x6F, 
47840
  0x63, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x30, 0x20, 0x6F, 
47841
  0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6C, 
47842
  0x6F, 0x63, 0x6B, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x2D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 
47843
  0x66, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 
47844
  0x2E, 0x20, 0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 
47845
  0x2A, 0x20, 0x3A, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 
47846
  0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 
47847
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x0A, 
47848
  0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 
47849
  0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 
47850
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x20, 0x28, 
47851
  0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x63, 0x68, 0x61, 0x6E, 
47852
  0x67, 0x65, 0x64, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
47853
  0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 
47854
  0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6D, 0x6F, 0x64, 
47855
  0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x28, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x63, 
47856
  0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x29, 0x0A, 0xDA, 0x08, 0xDA, 0x80, 0xF0, 0xDA, 0x83, 0xC5, 
47857
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x55, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 
47858
  0x64, 0x65, 0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x76, 
47859
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 0x6C, 
47860
  0x6C, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6C, 0x6F, 0x62, 
47861
  0x61, 0x6C, 0x20, 0x64, 0x65, 0x66, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xC6, 0xDA, 0x83, 0xCB, 0xD3, 
47862
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x26, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x28, 
47863
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x62, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
47864
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 
47865
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 
47866
  0xCC, 0xDA, 0x83, 0xCD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x26, 
47867
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x28, 0x28, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 
47868
  0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 
47869
  0x61, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 
47870
  0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
47871
  0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
47872
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 
47873
  0x6C, 0x75, 0x74, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 
47874
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
47875
  0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 
47876
  0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x2E, 0x73, 0x6F, 0x20, 0x66, 
47877
  0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x73, 0x79, 0x73, 0x74, 
47878
  0x65, 0x6D, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x2E, 0x64, 0x6C, 0x6C, 0x20, 
47879
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 
47880
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 
47881
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 
47882
  0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 
47883
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 
47884
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
47885
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
47886
  0xDA, 0x83, 0xCE, 0xDA, 0x83, 0xCF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 
47887
  0x82, 0x7C, 0x01, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x75, 
47888
  0x6E, 0x63, 0x29, 0x0A, 0x0A, 0x45, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x72, 0x61, 0x63, 
47889
  0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
47890
  0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
47891
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xD0, 0xDA, 0x83, 0xD1, 
47892
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 
47893
  0x65, 0x2F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2E, 0x63, 0x80, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
47894
  0x0C, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x6F, 
47895
  0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 
47896
  0x53, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 
47897
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x20, 0x61, 0x74, 
47898
  0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 
47899
  0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 
47900
  0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 
47901
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 
47902
  0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 
47903
  0x62, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 
47904
  0x61, 0x6D, 0x70, 0x6C, 0x65, 0x0A, 0x0A, 0x09, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x62, 
47905
  0x72, 0x65, 0x61, 0x6B, 0x20, 0x22, 0x63, 0x6F, 0x72, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 
47906
  0x22, 0x20, 0x31, 0x30, 0x20, 0x34, 0x29, 0x0A, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x65, 
47907
  0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x61, 
47908
  0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x31, 0x30, 0x2C, 0x20, 0x34, 0x74, 0x68, 0x20, 0x63, 
47909
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
47910
  0x65, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
47911
  0x83, 0xD2, 0xDA, 0x83, 0xD3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xB7, 
47912
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9F, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 
47913
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 
47914
  0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 
47915
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 
47916
  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x69, 
47917
  0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x0A, 0x54, 
47918
  0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
47919
  0x72, 0x6F, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2C, 0x20, 
47920
  0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x20, 0x73, 
47921
  0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x6C, 0x69, 
47922
  0x6E, 0x74, 0x66, 0x60, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x15, 0xDA, 0x83, 
47923
  0xD4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
47924
  0x72, 0x65, 0x2F, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x2E, 0x63, 0x86, 0x9F, 0x01, 0xDA, 0x06, 0xCE, 
47925
  0x80, 0xBE, 0x28, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x62, 0x75, 0x66, 
47926
  0x66, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x29, 
47927
  0x0A, 0x0A, 0x55, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x20, 0x76, 0x61, 
47928
  0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
47929
  0x72, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6C, 
47930
  0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 
47931
  0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 
47932
  0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x65, 0x73, 
47933
  0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x2E, 
47934
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 
47935
  0x75, 0x65, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
47936
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
47937
  0xDA, 0x08, 0xDA, 0x83, 0xD5, 0xDA, 0x83, 0xD6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47938
  0x8E, 0xD0, 0x82, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x67, 0x63, 0x63, 0x6F, 0x6C, 0x6C, 
47939
  0x65, 0x63, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 
47940
  0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x59, 0x6F, 
47941
  0x75, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x70, 0x72, 0x6F, 0x62, 0x61, 0x62, 0x6C, 
47942
  0x79, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
47943
  0x6D, 0x61, 0x6E, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xD7, 0xDA, 0x83, 
47944
  0xD8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x26, 0x01, 0xDA, 0x06, 0xCE, 
47945
  0x80, 0x9F, 0x28, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x74, 0x29, 0x0A, 0x0A, 0x52, 
47946
  0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 
47947
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
47948
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x72, 0x72, 
47949
  0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47950
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 
47951
  0x72, 0x61, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
47952
  0x20, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 
47953
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47954
  0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
47955
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xD9, 0xDA, 0x83, 0xE5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47956
  0xDA, 0x8E, 0xBC, 0x82, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x66, 0x6C, 0x75, 0x73, 0x68, 
47957
  0x29, 0x0A, 0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 
47958
  0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x69, 0x66, 0x20, 
47959
  0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x74, 
47960
  0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 
47961
  0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xE6, 0xDA, 0x83, 0xE7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47962
  0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD5, 0x28, 0x62, 0x75, 
47963
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
47964
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 
47965
  0x75, 0x73, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
47966
  0x65, 0x73, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 
47967
  0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 
47968
  0x6C, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 0x20, 
47969
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
47970
  0x73, 0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47971
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47972
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 
47973
  0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 
47974
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
47975
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 
47976
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xE8, 0xDA, 0x83, 0xE9, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 
47977
  0xC7, 0x28, 0x2F, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
47978
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x6F, 0x74, 0x69, 0x65, 0x6E, 0x74, 0x20, 
47979
  0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 
47980
  0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 
47981
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
47982
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47983
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x72, 0x6F, 0x63, 0x61, 0x6C, 0x20, 
47984
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 
47985
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
47986
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x20, 0x72, 0x65, 0x70, 
47987
  0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 
47988
  0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 
47989
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x03, 0xDA, 0x83, 0xEA, 
47990
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x54, 0x01, 0xDA, 0x06, 0xCE, 0x89, 
47991
  0x51, 0x28, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 
47992
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x70, 
47993
  0x75, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6D, 0x61, 0x63, 0x72, 
47994
  0x6F, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x69, 0x73, 
47995
  0x20, 0x73, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
47996
  0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x4C, 0x69, 0x73, 0x70, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
47997
  0x0A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x61, 0x6C, 0x74, 0x68, 0x6F, 0x75, 0x67, 0x68, 
47998
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x6D, 
47999
  0x75, 0x63, 0x68, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x73, 
48000
  0x63, 0x6F, 0x70, 0x65, 0x2E, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 
48001
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x0A, 0x73, 0x68, 0x6F, 0x75, 
48002
  0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x68, 
48003
  0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 
48004
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 
48005
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x6F, 0x72, 0x0A, 0x63, 0x6F, 0x6E, 
48006
  0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x73, 0x2E, 0x20, 0x41, 0x20, 0x62, 0x69, 0x6E, 
48007
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
48008
  0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48009
  0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x73, 
48010
  0x6F, 0x6D, 0x65, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x0A, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
48011
  0x20, 0x6F, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
48012
  0x61, 0x72, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 
48013
  0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 
48014
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x3A, 0x76, 0x65, 0x72, 0x62, 0x20, 0x6F, 0x62, 
48015
  0x6A, 0x65, 0x63, 0x74, 0x2F, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x0A, 
48016
  0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 
48017
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 
48018
  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x65, 0x66, 0x2C, 0x20, 
48019
  0x60, 0x3A, 0x76, 0x65, 0x72, 0x62, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 
48020
  0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x0A, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
48021
  0x72, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 
48022
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 
48023
  0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 
48024
  0x75, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x72, 0x65, 
48025
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x0A, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 
48026
  0x6F, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 
48027
  0x6F, 0x70, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 
48028
  0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48029
  0x6E, 0x67, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 
48030
  0x6C, 0x65, 0x20, 0x76, 0x65, 0x72, 0x62, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 
48031
  0x20, 0x60, 0x3A, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x72, 
48032
  0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
48033
  0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 
48034
  0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 
48035
  0x69, 0x6C, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x74, 0x72, 0x75, 0x74, 
48036
  0x68, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x60, 0x20, 
48037
  0x2D, 0x2D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 
48038
  0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 
48039
  0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 
48040
  0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 
48041
  0x69, 0x74, 0x68, 0x0A, 0x20, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6E, 
48042
  0x64, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
48043
  0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x6F, 0x73, 
48044
  0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x65, 0x70, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
48045
  0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x68, 0x61, 0x6C, 0x66, 0x0A, 0x20, 0x20, 
48046
  0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 
48047
  0x64, 0x29, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 
48048
  0x6F, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x72, 
48049
  0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 
48050
  0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 
48051
  0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x5D, 0x2E, 0x0A, 0x0A, 
48052
  0x2A, 0x20, 0x60, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6C, 0x6F, 0x6F, 
48053
  0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 
48054
  0x73, 0x74, 0x65, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x77, 0x61, 0x72, 
48055
  0x64, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x73, 
48056
  0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x0A, 0x20, 0x20, 0x74, 0x77, 0x6F, 
48057
  0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 
48058
  0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48059
  0x28, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x20, 0x65, 0x6E, 0x64, 0x20, 
48060
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
48061
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x0A, 0x20, 0x20, 0x28, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 
48062
  0x76, 0x65, 0x21, 0x29, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x2E, 0x0A, 
48063
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x2D, 0x74, 0x6F, 0x60, 0x20, 0x2D, 0x2D, 
48064
  0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 
48065
  0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 
48066
  0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 
48067
  0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x5D, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6B, 0x65, 
48068
  0x79, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 
48069
  0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x69, 0x6E, 0x20, 
48070
  0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
48071
  0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x20, 0x2D, 0x2D, 
48072
  0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 
48073
  0x65, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 
48074
  0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 
48075
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 
48076
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x69, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x74, 0x65, 
48077
  0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 
48078
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
48079
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 
48080
  0x72, 0x2E, 0x0A, 0x0A, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
48081
  0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
48082
  0x6E, 0x61, 0x6C, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x74, 
48083
  0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 
48084
  0x65, 0x72, 0x2E, 0x20, 0x43, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x73, 
48085
  0x20, 0x61, 0x72, 0x65, 0x20, 0x6F, 0x66, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
48086
  0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 
48087
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 
48088
  0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 
48089
  0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 
48090
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x61, 
48091
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x77, 
48092
  0x6F, 0x72, 0x64, 0x2D, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x60, 
48093
  0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
48094
  0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 
48095
  0x68, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x60, 
48096
  0x20, 0x2D, 0x2D, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
48097
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
48098
  0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x60, 
48099
  0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 
48100
  0x20, 0x60, 0x3A, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 
48101
  0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x73, 0x20, 0x66, 
48102
  0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
48103
  0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 
48104
  0x69, 0x6F, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
48105
  0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48106
  0x6E, 0x67, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x73, 0x20, 
48107
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 
48108
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
48109
  0x20, 0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
48110
  0x65, 0x0A, 0x20, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 
48111
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x72, 
48112
  0x6D, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 
48113
  0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x64, 
48114
  0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 
48115
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x0A, 0x20, 
48116
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x66, 0x74, 0x65, 
48117
  0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 
48118
  0x61, 0x73, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x60, 0x2C, 0x20, 0x62, 0x75, 
48119
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 
48120
  0x74, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
48121
  0x74, 0x68, 0x65, 0x0A, 0x20, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 0x6E, 0x65, 0x72, 
48122
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x70, 0x65, 
48123
  0x61, 0x74, 0x20, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73, 
48124
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x20, 
48125
  0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x0A, 
48126
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 
48127
  0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 
48128
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
48129
  0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x68, 0x65, 
48130
  0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x0A, 0x20, 0x20, 
48131
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
48132
  0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 
48133
  0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
48134
  0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
48135
  0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 
48136
  0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x0A, 0x20, 0x20, 0x69, 0x73, 0x20, 
48137
  0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x6F, 
48138
  0x6F, 0x70, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 
48139
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 
48140
  0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0xEB, 0xDA, 0x82, 0xF6, 0xD3, 0x03, 0xDA, 
48141
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x48, 0x03, 0xDA, 0x06, 0xCE, 0x7E, 0x28, 0x62, 0x75, 
48142
  0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
48143
  0x72, 0x79, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 
48144
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 
48145
  0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
48146
  0x72, 0x79, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
48147
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x72, 0x65, 
48148
  0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 
48149
  0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0x29, 0x60, 0xDA, 0x08, 0xDA, 0x84, 0x23, 
48150
  0xDA, 0x84, 0x28, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x72, 0x03, 0xDA, 
48151
  0x06, 0xCE, 0x37, 0x20, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6E, 0x61, 0x74, 0x69, 
48152
  0x76, 0x65, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 
48153
  0x66, 0x69, 0x2F, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 
48154
  0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 
48155
  0xDA, 0x84, 0x29, 0xDA, 0x84, 0x2A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 
48156
  0x87, 0x21, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xDB, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 
48157
  0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x6F, 0x69, 0x6E, 
48158
  0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x26, 0x6F, 0x70, 
48159
  0x74, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x0A, 
48160
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
48161
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 
48162
  0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 
48163
  0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 
48164
  0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 
48165
  0x20, 0x72, 0x65, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 
48166
  0x66, 0x72, 0x65, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x72, 
48167
  0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x2C, 0x20, 
48168
  0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x6E, 0x61, 0x67, 
48169
  0x65, 0x64, 0x2C, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 
48170
  0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x70, 0x75, 0x6C, 
48171
  0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
48172
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x41, 0x74, 0x74, 0x65, 
48173
  0x6D, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 
48174
  0x72, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
48175
  0x66, 0x65, 0x72, 0x20, 0x62, 0x65, 0x79, 0x6F, 0x6E, 0x64, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, 
48176
  0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 
48177
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
48178
  0x72, 0x6F, 0x72, 0x2E, 0x20, 0x41, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6D, 0x61, 0x6E, 
48179
  0x79, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 
48180
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 
48181
  0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x70, 
48182
  0x6F, 0x74, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
48183
  0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x20, 0x6D, 
48184
  0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x52, 0x65, 
48185
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 
48186
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x2B, 0xDA, 0x84, 0x2C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48187
  0x03, 0x00, 0xDA, 0x04, 0x8B, 0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x81, 0x28, 0x64, 0x65, 0x62, 
48188
  0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
48189
  0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x72, 
48190
  0x65, 0x70, 0x6C, 0x2D, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 
48191
  0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x4F, 
48192
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 
48193
  0x6E, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x69, 
48194
  0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x74, 0x65, 0x20, 0x6E, 0x65, 0x73, 0x74, 
48195
  0x65, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
48196
  0x84, 0x2D, 0xDA, 0x85, 0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x84, 
48197
  0xEB, 0x01, 0xDA, 0x06, 0xCE, 0x4B, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 
48198
  0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 
48199
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 
48200
  0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x77, 0x61, 0x69, 0x74, 
48201
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
48202
  0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xA4, 0xDA, 0x85, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48203
  0xDA, 0x04, 0x86, 0x82, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF1, 0x28, 0x75, 0x70, 0x64, 0x61, 0x74, 
48204
  0x65, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x20, 0x26, 0x20, 
48205
  0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 
48206
  0x65, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
48207
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2C, 0x20, 0x72, 
48208
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 
48209
  0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 
48210
  0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 
48211
  0x66, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x75, 0x6E, 0x63, 0x60, 
48212
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 
48213
  0x49, 0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 
48214
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6C, 
48215
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x0A, 0x61, 0x6C, 0x6F, 0x6E, 
48216
  0x67, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x75, 0x6E, 0x63, 0x60, 0x20, 0x61, 0x73, 0x20, 0x77, 
48217
  0x65, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x73, 
48218
  0x60, 0x2C, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xA6, 
48219
  0xDA, 0x85, 0xA9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0xD7, 0x01, 0xDA, 
48220
  0x06, 0xCE, 0x80, 0xCE, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 
48221
  0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 
48222
  0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x74, 0x61, 
48223
  0x6B, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
48224
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x69, 
48225
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
48226
  0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x61, 0x74, 0x69, 0x73, 
48227
  0x66, 0x79, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
48228
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x6F, 0x72, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x66, 
48229
  0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x52, 0x65, 
48230
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 
48231
  0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 
48232
  0x69, 0x6E, 0x67, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 
48233
  0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xAA, 0xDA, 0x85, 0xC2, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
48234
  0x00, 0xDA, 0x04, 0x8C, 0x69, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x99, 0x28, 0x69, 0x6D, 0x70, 0x6F, 
48235
  0x72, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
48236
  0x0A, 0x49, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
48237
  0x2E, 0x20, 0x46, 0x69, 0x72, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 
48238
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
48239
  0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x69, 0x74, 0x73, 
48240
  0x0A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 
48241
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
48242
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x70, 0x72, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 
48243
  0x67, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
48244
  0x20, 0x61, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0x0A, 0x28, 0x75, 0x73, 0x65, 
48245
  0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x61, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x70, 0x72, 0x65, 
48246
  0x66, 0x69, 0x78, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 
48247
  0x74, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x29, 0x2E, 0x20, 0x49, 0x66, 0x20, 
48248
  0x6E, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 
48249
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
48250
  0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
48251
  0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2E, 0x20, 0x4F, 
48252
  0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x20, 
48253
  0x22, 0x60, 0x3A, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x74, 0x72, 0x75, 0x65, 0x60, 0x22, 
48254
  0x0A, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x74, 0x68, 
48255
  0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
48256
  0x6C, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x22, 0x60, 0x3A, 0x65, 0x78, 0x69, 0x74, 0x20, 0x74, 
48257
  0x72, 0x75, 0x65, 0x60, 0x22, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 
48258
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x0A, 0x61, 
48259
  0x6E, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 
48260
  0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6F, 0x70, 
48261
  0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
48262
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 
48263
  0x60, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x31, 0x29, 0x60, 0x0A, 0x74, 0x6F, 
48264
  0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0x20, 0x44, 0x79, 0x6E, 0x61, 
48265
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 
48266
  0x6C, 0x20, 0x4E, 0x4F, 0x54, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 
48267
  0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x3A, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x77, 0x69, 
48268
  0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x0A, 0x76, 0x61, 0x6C, 0x75, 
48269
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
48270
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2E, 0x20, 0x55, 0x73, 
48271
  0x65, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x5B, 0x66, 0x6F, 0x6F, 0x20, 0x62, 0x61, 
48272
  0x72, 0x20, 0x62, 0x61, 0x7A, 0x5D, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
48273
  0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x0A, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x62, 0x69, 
48274
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
48275
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
48276
  0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0xC3, 0xDA, 0x85, 0xFC, 0xD3, 
48277
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 
48278
  0x2F, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x63, 0x82, 0x5D, 0x01, 0xDA, 0x06, 0xCE, 0x35, 0x28, 
48279
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x0A, 0x0A, 
48280
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
48281
  0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 
48282
  0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x53, 0xDA, 0x82, 0xD4, 0xD3, 0x03, 0xDA, 0x03, 
48283
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xFF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x99, 0x28, 0x64, 0x65, 
48284
  0x65, 0x70, 0x2D, 0x6E, 0x6F, 0x74, 0x3D, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 
48285
  0x6B, 0x65, 0x20, 0x60, 0x6E, 0x6F, 0x74, 0x3D, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6D, 
48286
  0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x28, 0x61, 0x72, 
48287
  0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x62, 0x75, 
48288
  0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 
48289
  0x64, 0x65, 0x72, 0x65, 0x64, 0x0A, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 
48290
  0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 
48291
  0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x4D, 0x75, 
48292
  0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x60, 
48293
  0x6E, 0x6F, 0x74, 0x3D, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xCF, 0xDA, 0x85, 0xFD, 0xD3, 0x03, 
48294
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x16, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x6D, 
48295
  0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
48296
  0x72, 0x6E, 0x73, 0x20, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 
48297
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xFE, 0xDA, 0x85, 0xFF, 
48298
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x82, 0x54, 0x01, 0xDA, 0x06, 0xCE, 
48299
  0x82, 0x06, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 
48300
  0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 
48301
  0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 
48302
  0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
48303
  0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
48304
  0x64, 0x65, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
48305
  0x20, 0x68, 0x61, 0x73, 0x20, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 0x65, 0x64, 0x0A, 0x2A, 0x20, 
48306
  0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 
48307
  0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x6F, 
48308
  0x75, 0x74, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x2D, 0x20, 0x74, 0x68, 
48309
  0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 
48310
  0x6E, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x6D, 0x6F, 
48311
  0x64, 0x65, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x2D, 0x20, 
48312
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 
48313
  0x65, 0x6E, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x65, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x73, 
48314
  0x65, 0x72, 0x28, 0x30, 0x2D, 0x37, 0x29, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
48315
  0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 
48316
  0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
48317
  0x6C, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 
48318
  0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x61, 0x73, 
48319
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 
48320
  0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 
48321
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 
48322
  0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x20, 0x62, 
48323
  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x72, 0x0A, 
48324
  0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x69, 0x76, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48325
  0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 
48326
  0x79, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 
48327
  0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x0A, 
48328
  0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x77, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 
48329
  0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x65, 0x6E, 
48330
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x74, 
48331
  0x20, 0x79, 0x65, 0x74, 0x20, 0x72, 0x75, 0x6E, 0xDA, 0x08, 0xDA, 0x80, 0xDE, 0xDA, 0x86, 0x00, 
48332
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xAD, 0x01, 0xDA, 0x06, 0xCE, 0x7D, 
48333
  0x28, 0x74, 0x61, 0x62, 0x73, 0x65, 0x71, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6B, 0x65, 0x79, 
48334
  0x2D, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x26, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2D, 0x62, 0x6F, 
48335
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 
48336
  0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x63, 0x63, 0x75, 
48337
  0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48338
  0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 
48339
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 
48340
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 
48341
  0xDA, 0x08, 0xDA, 0x86, 0x01, 0xDA, 0x86, 0x06, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48342
  0x04, 0x83, 0xF3, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x32, 0x28, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 
48343
  0x6C, 0x61, 0x74, 0x65, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x29, 
48344
  0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x65, 
48345
  0x64, 0x75, 0x63, 0x65, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 
48346
  0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 
48347
  0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
48348
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x6C, 0x61, 
48349
  0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
48350
  0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 
48351
  0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 
48352
  0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x60, 
48353
  0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x69, 0x6E, 
48354
  0x69, 0x74, 0x60, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
48355
  0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
48356
  0x72, 0x61, 0x79, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
48357
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 
48358
  0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x0A, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
48359
  0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x60, 
48360
  0x69, 0x6E, 0x64, 0x60, 0x29, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
48361
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x07, 
48362
  0xDA, 0x83, 0x90, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6E, 0x01, 0xDA, 0x06, 
48363
  0xCE, 0x21, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 
48364
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
48365
  0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x8E, 0xDA, 0x86, 0x0B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48366
  0x03, 0x00, 0xDA, 0x04, 0x86, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC0, 0x28, 0x6D, 0x65, 0x72, 
48367
  0x67, 0x65, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x65, 0x72, 
48368
  0x67, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x62, 
48369
  0x6C, 0x65, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
48370
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 
48371
  0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 
48372
  0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6F, 0x6E, 
48373
  0x65, 0x0A, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x20, 
48374
  0x60, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6C, 0x61, 
48375
  0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 
48376
  0x63, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 
48377
  0x6F, 0x6E, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
48378
  0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
48379
  0x0C, 0xDA, 0x86, 0x13, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0x94, 0x28, 0x6D, 0x6F, 0x64, 0x20, 
48380
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
48381
  0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x70, 0x70, 
48382
  0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x6F, 
48383
  0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 
48384
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48385
  0x78, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x6D, 
48386
  0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x60, 0x28, 
48387
  0x6D, 0x6F, 0x64, 0x20, 0x78, 0x20, 0x30, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x66, 
48388
  0x69, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x60, 0x78, 0x60, 0x2E, 0xDA, 
48389
  0x08, 0xDA, 0x86, 0x14, 0xDA, 0x86, 0x16, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 
48390
  0x85, 0xB6, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0x61, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 
48391
  0x75, 0x74, 0x65, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 
48392
  0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 
48393
  0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x6F, 0x6E, 0x20, 0x74, 
48394
  0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
48395
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 
48396
  0x64, 0x65, 0x2E, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
48397
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48398
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
48399
  0x73, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
48400
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
48401
  0x67, 0x72, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 
48402
  0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
48403
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 
48404
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x60, 0x66, 0x6C, 0x61, 
48405
  0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
48406
  0x20, 0x6D, 0x61, 0x64, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48407
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 
48408
  0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
48409
  0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 
48410
  0x6D, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x3A, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 
48411
  0x20, 0x2D, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x69, 
48412
  0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
48413
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 
48414
  0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x27, 0x65, 0x27, 0x2C, 0x20, 0x74, 
48415
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
48416
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 
48417
  0x74, 0x65, 0x64, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 
48418
  0x77, 0x73, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
48419
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x50, 0x41, 0x54, 0x48, 0x20, 0x66, 0x6F, 
48420
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 0x6F, 
48421
  0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x6F, 0x75, 
48422
  0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x2C, 0x20, 0x74, 0x68, 0x65, 
48423
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
48424
  0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 
48425
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 
48426
  0x68, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x78, 0x20, 0x2D, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 
48427
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 
48428
  0x6F, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x7A, 0x65, 0x72, 0x6F, 0x2E, 
48429
  0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 
48430
  0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 
48431
  0x6C, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x69, 
48432
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x28, 
48433
  0x69, 0x66, 0x20, 0x73, 0x74, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 
48434
  0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
48435
  0x65, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
48436
  0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0x60, 0x20, 0x28, 
48437
  0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x20, 0x70, 0x72, 
48438
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x29, 0x2E, 0x0A, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x20, 
48439
  0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 
48440
  0x74, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
48441
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 
48442
  0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x74, 0x20, 0x63, 0x61, 
48443
  0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 
48444
  0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 0x3A, 0x6F, 0x75, 
48445
  0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x2C, 0x20, 0x77, 0x68, 0x69, 
48446
  0x63, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 
48447
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6F, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
48448
  0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x3A, 0x69, 
48449
  0x6E, 0x2C, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 
48450
  0x72, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x65, 
48451
  0x2F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 
48452
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 
48453
  0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48454
  0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 
48455
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 
48456
  0x6E, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x6E, 0x73, 0x75, 0x72, 
48457
  0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 
48458
  0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 
48459
  0x61, 0x6D, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48460
  0x64, 0x65, 0x61, 0x64, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x17, 0xDA, 0x86, 
48461
  0x18, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x25, 0x01, 0xDA, 0x06, 0xCE, 
48462
  0x29, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 
48463
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6C, 0x6F, 0x67, 
48464
  0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x28, 0x78, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x19, 0xDA, 
48465
  0x86, 0x1A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0xE0, 0x01, 0xDA, 0x06, 
48466
  0xCE, 0x81, 0x3D, 0x28, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x70, 0x61, 0x74, 
48467
  0x68, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6B, 0x77, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
48468
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
48469
  0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 
48470
  0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
48471
  0x65, 0x2E, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 
48472
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 
48473
  0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
48474
  0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2E, 0x20, 0x4D, 
48475
  0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x69, 0x6C, 0x6C, 
48476
  0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x68, 0x6F, 
48477
  0x77, 0x65, 0x76, 0x65, 0x72, 0x2C, 0x20, 0x73, 0x6F, 0x0A, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 
48478
  0x61, 0x72, 0x79, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 
48479
  0x20, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 
48480
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 
48481
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x64, 0x6F, 0x66, 0x69, 
48482
  0x6C, 0x65, 0x60, 0x2E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
48483
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x0A, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x76, 
48484
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x64, 
48485
  0x69, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
48486
  0xDA, 0x08, 0xDA, 0x86, 0x1B, 0xDA, 0x86, 0x67, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48487
  0x8E, 0xD0, 0x81, 0x6B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
48488
  0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
48489
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 
48490
  0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
48491
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 
48492
  0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 
48493
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
48494
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 
48495
  0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 
48496
  0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 
48497
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48498
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
48499
  0xDA, 0x08, 0xDA, 0x86, 0x68, 0xDA, 0x86, 0x69, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48500
  0x21, 0x81, 0x1D, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x62, 
48501
  0x72, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
48502
  0x68, 0x65, 0x20, 0x63, 0x75, 0x62, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x6F, 0x66, 0x20, 
48503
  0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x6A, 0xDA, 0x86, 0x41, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
48504
  0x00, 0xDA, 0x04, 0x80, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x61, 0x28, 0x64, 0x65, 0x66, 0x64, 
48505
  0x79, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 
48506
  0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 
48507
  0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
48508
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
48509
  0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
48510
  0x67, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x0A, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x69, 0x73, 0x20, 
48511
  0x61, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x2C, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 
48512
  0x6C, 0x6C, 0x79, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48513
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
48514
  0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x0A, 0x61, 
48515
  0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 
48516
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x79, 0x70, 0x6F, 0x73, 0x2E, 0x20, 0x60, 0x64, 0x65, 0x66, 0x64, 
48517
  0x79, 0x6E, 0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x65, 0x74, 
48518
  0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
48519
  0x73, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x72, 
48520
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x60, 0x64, 0x79, 0x6E, 0x60, 0x20, 0x61, 0x6E, 0x64, 
48521
  0x20, 0x60, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 
48522
  0x6C, 0x69, 0x61, 0x73, 0x20, 0x2A, 0x6D, 0x75, 0x73, 0x74, 0x2A, 0x20, 0x73, 0x74, 0x61, 0x72, 
48523
  0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
48524
  0x68, 0x65, 0x20, 0x60, 0x2A, 0x60, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
48525
  0x2C, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x0A, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
48526
  0x20, 0x22, 0x65, 0x61, 0x72, 0x6D, 0x75, 0x66, 0x66, 0x73, 0x22, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
48527
  0x08, 0xDA, 0x86, 0x6B, 0xDA, 0x86, 0x79, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 0x30, 0x28, 0x67, 
48528
  0x65, 0x74, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 
48529
  0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 
48530
  0x6C, 0x75, 0x65, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 
48531
  0x79, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
48532
  0x75, 0x72, 0x65, 0x20, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
48533
  0x72, 0x6E, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 
48534
  0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x53, 0x69, 0x6D, 
48535
  0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
48536
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 
48537
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 
48538
  0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x66, 0x6F, 
48539
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
48540
  0x74, 0x75, 0x72, 0x65, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
48541
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 
48542
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 
48543
  0x70, 0x65, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x73, 0x65, 
48544
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 
48545
  0x79, 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x74, 
48546
  0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 
48547
  0xDA, 0x86, 0x7A, 0xDA, 0x86, 0x21, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x41, 
48548
  0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x64, 0x65, 0x66, 0x6E, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
48549
  0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 
48550
  0x20, 0x61, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
48551
  0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 
48552
  0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 
48553
  0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x7C, 0xDA, 0x86, 0x89, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48554
  0xDA, 0x21, 0x81, 0x24, 0x01, 0xDA, 0x06, 0xCE, 0x3D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 
48555
  0x72, 0x66, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
48556
  0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x72, 
48557
  0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
48558
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x8A, 0xDA, 0x86, 0x8B, 0xD3, 0x03, 
48559
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x72, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x74, 0x72, 
48560
  0x75, 0x74, 0x68, 0x79, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 
48561
  0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0xDA, 
48562
  0x08, 0xDA, 0x86, 0x8C, 0xDA, 0x86, 0x8E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
48563
  0x83, 0xFF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xDC, 0x28, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 
48564
  0x61, 0x74, 0x65, 0x32, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 
48565
  0x20, 0x32, 0x2D, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 
48566
  0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 
48567
  0x74, 0x65, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
48568
  0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 
48569
  0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 
48570
  0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
48571
  0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
48572
  0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
48573
  0x72, 0x61, 0x79, 0x20, 0x61, 0x73, 0x20, 0x69, 0x73, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x74, 0x68, 
48574
  0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0A, 
48575
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 
48576
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x69, 0x6E, 
48577
  0x64, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x8F, 0xDA, 0x86, 0x91, 0xD3, 0x03, 0xDA, 0x03, 
48578
  0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0x35, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x3A, 0x28, 0x6F, 0x73, 
48579
  0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x6F, 
48580
  0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 
48581
  0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
48582
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
48583
  0x67, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
48584
  0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x74, 0x69, 0x6D, 0x65, 0x60, 
48585
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2E, 0x20, 0x54, 
48586
  0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
48587
  0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x63, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 
48588
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x72, 0x75, 0x6C, 0x65, 0x73, 
48589
  0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x53, 0x4F, 0x20, 0x43, 0x38, 0x39, 0x20, 
48590
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 
48591
  0x65, 0x28, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x73, 
48592
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 
48593
  0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 
48594
  0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 
48595
  0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 
48596
  0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 
48597
  0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 
48598
  0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x92, 0xDA, 0x86, 0x93, 0xD3, 
48599
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x7D, 0x01, 0xDA, 0x06, 0xCE, 0x65, 0x28, 
48600
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 
48601
  0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 
48602
  0x3C, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 
48603
  0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
48604
  0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 
48605
  0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 
48606
  0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x94, 0xDA, 0x86, 0x9B, 0xD3, 0x03, 0xDA, 0x03, 
48607
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x78, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xB7, 0x28, 0x66, 0x66, 
48608
  0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
48609
  0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6E, 0x61, 0x6D, 0x65, 
48610
  0x64, 0x20, 0x6D, 0x61, 0x70, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x6C, 0x61, 
48611
  0x7A, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 
48612
  0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 
48613
  0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 0x70, 0x6C, 
48614
  0x69, 0x63, 0x69, 0x74, 0x6C, 0x79, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x73, 0x20, 
48615
  0x77, 0x65, 0x6C, 0x6C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 
48616
  0x72, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x66, 
48617
  0x6F, 0x72, 0x20, 0x65, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
48618
  0x69, 0x6E, 0x67, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48619
  0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x9C, 0xDA, 0x86, 0xAE, 0xD3, 0x03, 0xDA, 0x03, 
48620
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 0x3D, 0x28, 0x70, 0x72, 
48621
  0x69, 0x6E, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 
48622
  0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 
48623
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 
48624
  0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xAF, 0xDA, 
48625
  0x86, 0xB0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x81, 0xD6, 0x01, 0xDA, 
48626
  0x06, 0xCE, 0x71, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 
48627
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x53, 
48628
  0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
48629
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 
48630
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 
48631
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
48632
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
48633
  0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x94, 0xDA, 0x82, 0x52, 0xD3, 0x03, 0xDA, 0x03, 
48634
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x83, 0x01, 0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x69, 0x64, 0x65, 
48635
  0x6D, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
48636
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 
48637
  0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
48638
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6C, 0x66, 0x20, 0x77, 0x68, 0x65, 0x6E, 
48639
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x4C, 0xDA, 
48640
  0x84, 0x80, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x35, 0x01, 0xDA, 0x06, 
48641
  0xCE, 0x3B, 0x28, 0x6D, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 
48642
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 
48643
  0x72, 0x69, 0x63, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 
48644
  0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
48645
  0x84, 0x7E, 0xDA, 0x86, 0xB1, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x91, 
48646
  0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x25, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 
48647
  0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
48648
  0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 0x28, 0x25, 0x20, 0x78, 0x20, 0x6E, 0x29, 0x29, 0x2E, 
48649
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0xB2, 0xDA, 0x86, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48650
  0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xC4, 0x01, 0xDA, 0x06, 0xCE, 0x52, 0x28, 0x6B, 0x65, 0x79, 
48651
  0x77, 0x6F, 0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
48652
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 
48653
  0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
48654
  0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 
48655
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0xDA, 0x08, 
48656
  0xDA, 0x86, 0xB6, 0xDA, 0x86, 0xB7, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x68, 0x28, 0x2B, 0x20, 0x26, 
48657
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
48658
  0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x78, 0x73, 0x2E, 
48659
  0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 
48660
  0x67, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 
48661
  0x62, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 
48662
  0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
48663
  0x6E, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x78, 0xDA, 0x86, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 
48664
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xCE, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x40, 0x28, 0x67, 0x72, 
48665
  0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 
48666
  0x72, 0x6F, 0x75, 0x70, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 
48667
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48668
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 
48669
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x74, 
48670
  0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x54, 
48671
  0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x74, 
48672
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 
48673
  0x74, 0x69, 0x6E, 0x63, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 
48674
  0x75, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
48675
  0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
48676
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 
48677
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
48678
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
48679
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
48680
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 
48681
  0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x66, 0x60, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
48682
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x65, 
48683
  0x71, 0x75, 0x61, 0x6C, 0x73, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 
48684
  0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6B, 0x65, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 
48685
  0x86, 0xB9, 0xDA, 0x82, 0x1B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x5C, 
48686
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8A, 0x28, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 
48687
  0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 
48688
  0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x74, 0x61, 0x6B, 0x65, 
48689
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 
48690
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 
48691
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x0A, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
48692
  0x60, 0x28, 0x70, 0x72, 0x65, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x60, 
48693
  0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
48694
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 
48695
  0xDA, 0x08, 0xDA, 0x82, 0x18, 0xDA, 0x86, 0xBD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48696
  0x04, 0x86, 0x4F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB9, 0x28, 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 
48697
  0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 
48698
  0x29, 0x0A, 0x0A, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48699
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 
48700
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x4C, 0x6F, 
48701
  0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 
48702
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x76, 0x69, 0x61, 0x0A, 
48703
  0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 
48704
  0x79, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 
48705
  0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 
48706
  0x64, 0x66, 0x6C, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 
48707
  0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 
48708
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xBE, 0xDA, 0x86, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48709
  0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x8E, 0x01, 0xDA, 0x06, 0xCE, 0x74, 0x28, 0x74, 0x61, 0x62, 0x6C, 
48710
  0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
48711
  0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 
48712
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 
48713
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48714
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 
48715
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 
48716
  0x61, 0x6E, 0x64, 0x20, 0x76, 0x69, 0x63, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x61, 0x2E, 0xDA, 
48717
  0x08, 0xDA, 0x83, 0x9A, 0xDA, 0x86, 0xC3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
48718
  0x8B, 0x18, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 
48719
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x72, 
48720
  0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 
48721
  0x74, 0x68, 0x73, 0x60, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x81, 0xB2, 0xDA, 0x86, 0xC4, 
48722
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 0x7E, 
48723
  0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x74, 
48724
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 0x54, 0x68, 
48725
  0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 
48726
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 
48727
  0x61, 0x74, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 
48728
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x77, 
48729
  0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x64, 
48730
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x2E, 0xDA, 0x86, 
48731
  0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x7D, 0xDA, 0x86, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48732
  0x00, 0xDA, 0x8E, 0x7C, 0x81, 0x6E, 0x01, 0xDA, 0x06, 0xCE, 0x69, 0x28, 0x61, 0x72, 0x72, 0x61, 
48733
  0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 
48734
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 0x70, 
48735
  0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 
48736
  0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
48737
  0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48738
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 
48739
  0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xC6, 0xDA, 0x86, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 
48740
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x5B, 0x28, 0x62, 0x75, 
48741
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x62, 
48742
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 
48743
  0x65, 0x61, 0x72, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 
48744
  0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 
48745
  0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
48746
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xC8, 0xDA, 0x86, 0xC9, 
48747
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 
48748
  0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
48749
  0x66, 0x6F, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 
48750
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0x60, 0xDA, 0x86, 0x72, 
48751
  0xCB, 0xDA, 0x08, 0xDA, 0x81, 0xA0, 0xDA, 0x86, 0xCA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48752
  0xDA, 0x8E, 0xBC, 0x80, 0xFE, 0x01, 0xDA, 0x06, 0xCE, 0x64, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 
48753
  0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 
48754
  0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 
48755
  0x2E, 0x20, 0x27, 0x62, 0x79, 0x74, 0x65, 0x73, 0x27, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 
48756
  0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
48757
  0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 
48758
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
48759
  0xDA, 0x81, 0x60, 0xDA, 0x86, 0xCB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x14, 0x73, 
48760
  0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 
48761
  0x68, 0x2E, 0x63, 0x82, 0x4D, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0x3B, 0x28, 0x66, 0x69, 0x6C, 0x65, 
48762
  0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
48763
  0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x66, 
48764
  0x6C, 0x61, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
48765
  0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x20, 
48766
  0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x65, 
48767
  0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
48768
  0x65, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x53, 0x65, 0x65, 0x20, 
48769
  0x60, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0x60, 0x20, 
48770
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 
48771
  0x61, 0x67, 0x73, 0x2E, 0x0A, 0x0A, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 
48772
  0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 
48773
  0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 
48774
  0x68, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x63, 0x6F, 
48775
  0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
48776
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x67, 0x69, 0x76, 
48777
  0x65, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x61, 0x73, 
48778
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x60, 0x2E, 
48779
  0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 
48780
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x64, 0x65, 0x70, 
48781
  0x65, 0x6E, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x2C, 0x20, 0x62, 
48782
  0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 
48783
  0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x73, 
48784
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x74, 0x79, 0x70, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 
48785
  0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
48786
  0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 
48787
  0x61, 0x69, 0x73, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x66, 0x69, 0x6C, 0x65, 
48788
  0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 
48789
  0x73, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48790
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x72, 
48791
  0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 
48792
  0x74, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x69, 0x72, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 
48793
  0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
48794
  0x72, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48795
  0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 
48796
  0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x0A, 0x45, 
48797
  0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
48798
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x73, 0x70, 0x65, 
48799
  0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x6F, 0x73, 
48800
  0x74, 0x20, 0x4F, 0x53, 0x2E, 0x0A, 0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x68, 
48801
  0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x70, 
48802
  0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 
48803
  0x2E, 0x0A, 0x0A, 0x4C, 0x69, 0x6E, 0x75, 0x78, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 
48804
  0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 
48805
  0x20, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x65, 
48806
  0x76, 0x65, 0x6E, 0x74, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x64, 0x60, 0x20, 
48807
  0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6B, 
48808
  0x65, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 
48809
  0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0x60, 0x20, 0x66, 
48810
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 
48811
  0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2E, 
48812
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x2D, 
48813
  0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x74, 
48814
  0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x64, 0x69, 
48815
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 
48816
  0x20, 0x46, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
48817
  0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
48818
  0x60, 0x3A, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x2C, 0x20, 0x61, 0x6E, 
48819
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 
48820
  0x73, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
48821
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x3A, 0x64, 0x69, 0x72, 0x2D, 0x6E, 0x61, 0x6D, 
48822
  0x65, 0x60, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x60, 
48823
  0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x69, 0x7A, 0x65, 0x64, 
48824
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 
48825
  0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 
48826
  0x65, 0x64, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 
48827
  0x61, 0x73, 0x20, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 
48828
  0x6E, 0x64, 0x20, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x2D, 0x74, 0x6F, 0x20, 0x65, 0x76, 0x65, 
48829
  0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x0A, 0xDA, 0x08, 0xDA, 0x86, 0xCC, 0xCF, 0x08, 0x6D, 0x61, 0x74, 
48830
  0x68, 0x2F, 0x6E, 0x61, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xBA, 
48831
  0x01, 0xDA, 0x06, 0xCE, 0x1B, 0x4E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
48832
  0x72, 0x20, 0x28, 0x49, 0x45, 0x45, 0x45, 0x2D, 0x37, 0x35, 0x34, 0x20, 0x4E, 0x61, 0x4E, 0x29, 
48833
  0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xDA, 0x86, 0xCD, 0xD3, 0x03, 
48834
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8C, 0xBF, 0x01, 0xDA, 0x06, 0xCE, 0x66, 0x28, 
48835
  0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 
48836
  0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
48837
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 
48838
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x63, 0x61, 0x6C, 
48839
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x28, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 
48840
  0x65, 0x61, 0x6D, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x72, 
48841
  0x65, 0x61, 0x6D, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x07, 0xDA, 0x86, 0xCE, 0xD3, 0x02, 0xDA, 
48842
  0x06, 0xCE, 0x80, 0xDB, 0x28, 0x2D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
48843
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 
48844
  0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 
48845
  0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
48846
  0x72, 0x6E, 0x73, 0x20, 0x30, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 0x73, 
48847
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x72, 0x65, 
48848
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 
48849
  0x76, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 
48850
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 
48851
  0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
48852
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 
48853
  0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x69, 0x6E, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
48854
  0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x74, 0x20, 0x6F, 
48855
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 
48856
  0x08, 0xDA, 0x84, 0x11, 0xDA, 0x85, 0xEB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
48857
  0x8C, 0x4C, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x95, 0x28, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 
48858
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 
48859
  0x72, 0x63, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 
48860
  0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x29, 0x0A, 0x0A, 0x4D, 0x65, 
48861
  0x72, 0x67, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x73, 0x6F, 0x75, 
48862
  0x72, 0x63, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x61, 
48863
  0x72, 0x67, 0x65, 0x74, 0x60, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
48864
  0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x60, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
48865
  0x60, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 
48866
  0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x0A, 0x54, 
48867
  0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x65, 
48868
  0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 
48869
  0x69, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 
48870
  0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x6D, 0x6F, 
48871
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x60, 
48872
  0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 
48873
  0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x64, 0x20, 0x66, 
48874
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 
48875
  0x20, 0x6D, 0x61, 0x72, 0x6B, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 
48876
  0x74, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 
48877
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 
48878
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 
48879
  0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
48880
  0x20, 0x60, 0x6F, 0x6E, 0x6C, 0x79, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
48881
  0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x20, 0x6B, 0x65, 
48882
  0x79, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6F, 0x6E, 0x6C, 0x79, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 
48883
  0x85, 0xDF, 0xDA, 0x86, 0xCF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xD6, 
48884
  0x01, 0xDA, 0x06, 0xCE, 0x46, 0x28, 0x67, 0x65, 0x6F, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x78, 0x73, 
48885
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 
48886
  0x65, 0x6F, 0x6D, 0x65, 0x74, 0x72, 0x69, 0x63, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x6F, 0x66, 
48887
  0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 
48888
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xD0, 
48889
  0xDA, 0x86, 0xD8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xD9, 0x82, 0x92, 0x01, 
48890
  0xDA, 0x06, 0xCE, 0x3E, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6C, 
48891
  0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x29, 0x0A, 0x0A, 
48892
  0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 
48893
  0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 
48894
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xD9, 0xDA, 0x86, 0xDA, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x34, 
48895
  0x28, 0x62, 0x6E, 0x6F, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48896
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x69, 
48897
  0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
48898
  0x72, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xDB, 0xDA, 0x86, 0x4C, 0xD3, 0x03, 0xDA, 0x03, 
48899
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x45, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 0x28, 0x72, 0x65, 
48900
  0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
48901
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x6F, 
48902
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 
48903
  0x76, 0x65, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 
48904
  0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
48905
  0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x69, 0x6E, 0x0A, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
48906
  0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48907
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
48908
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x66, 
48909
  0x72, 0x6F, 0x6D, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
48910
  0x64, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
48911
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xAB, 0xDA, 0x86, 0xDD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48912
  0x03, 0x00, 0xDA, 0x4C, 0x88, 0x07, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF7, 0x28, 0x6F, 0x73, 0x2F, 
48913
  0x6D, 0x6B, 0x64, 0x69, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
48914
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 
48915
  0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x77, 0x69, 
48916
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 
48917
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x64, 0x69, 
48918
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 
48919
  0x69, 0x76, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x69, 
48920
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 
48921
  0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
48922
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
48923
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x72, 
48924
  0x65, 0x61, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 
48925
  0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 
48926
  0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
48927
  0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
48928
  0x73, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x33, 0xDA, 0x86, 0xDE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48929
  0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x81, 0xD7, 0x01, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x66, 0x66, 0x69, 
48930
  0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x29, 
48931
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
48932
  0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6F, 
48933
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 
48934
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
48935
  0x74, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 
48936
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0xDA, 0x08, 0xDA, 0x86, 0xDF, 0xDA, 
48937
  0x82, 0xF9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x75, 0x03, 0xDA, 0x06, 
48938
  0xCE, 0x81, 0x1C, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6D, 
48939
  0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 
48940
  0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 
48941
  0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 
48942
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, 0x20, 0x64, 0x75, 0x72, 
48943
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x73, 
48944
  0x74, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 
48945
  0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 
48946
  0x29, 0x60, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x64, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 
48947
  0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 
48948
  0x69, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x63, 0x6F, 
48949
  0x72, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x6E, 0x64, 
48950
  0x6C, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x75, 0x63, 0x68, 
48951
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 
48952
  0x72, 0x6F, 0x70, 0x65, 0x72, 0x6C, 0x79, 0x20, 0x74, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x20, 
48953
  0x20, 0x20, 0x20, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x20, 
48954
  0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 
48955
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2E, 0xDA, 
48956
  0x08, 0xDA, 0x86, 0xE0, 0xDA, 0x86, 0xE7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
48957
  0x89, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x57, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 
48958
  0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6F, 0x6E, 
48959
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x6E, 0x67, 0x20, 
48960
  0x69, 0x6E, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x20, 0x61, 
48961
  0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6D, 
48962
  0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x84, 
48963
  0xDC, 0xDA, 0x86, 0xE8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x41, 
48964
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB0, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
48965
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 
48966
  0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 
48967
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x6C, 0x79, 
48968
  0x20, 0x28, 0x6E, 0x6F, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 
48969
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48970
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x73, 
48971
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
48972
  0x65, 0x6E, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 
48973
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 
48974
  0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48975
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xE9, 0xDA, 0x86, 0xEA, 0xD3, 0x03, 
48976
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8D, 0xFD, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAA, 0x28, 
48977
  0x64, 0x6F, 0x63, 0x2D, 0x6F, 0x66, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 
48978
  0x68, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x6D, 
48979
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
48980
  0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 
48981
  0x65, 0x6E, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 
48982
  0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x74, 0x73, 0x20, 0x64, 0x6F, 
48983
  0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x54, 0x68, 0x69, 
48984
  0x73, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 
48985
  0x62, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
48986
  0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 
48987
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xEB, 0xDA, 0x87, 
48988
  0xA7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xD9, 0x01, 0xDA, 0x06, 0xCE, 
48989
  0x74, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x20, 0x76, 0x61, 
48990
  0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x64, 0x65, 0x66, 
48991
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
48992
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
48993
  0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 
48994
  0x60, 0x28, 0x64, 0x65, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x20, 0x28, 0x69, 0x66, 0x20, 0x28, 0x3D, 
48995
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x20, 0x76, 0x61, 0x6C, 0x20, 0x73, 0x79, 
48996
  0x6D, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xA8, 0xDA, 0x87, 0xAD, 
48997
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x89, 0x01, 0xDA, 0x06, 0xCE, 
48998
  0x7F, 0x28, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 
48999
  0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 
49000
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 
49001
  0x66, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
49002
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 0x78, 0x73, 0x29, 0x60, 
49003
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 
49004
  0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 
49005
  0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 
49006
  0xDA, 0x08, 0xDA, 0x85, 0x1A, 0xDA, 0x87, 0xAE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49007
  0x21, 0x81, 0x23, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 
49008
  0x66, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
49009
  0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
49010
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xAF, 0xDA, 0x87, 0xB0, 0xD3, 0x04, 
49011
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x38, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x57, 0x68, 
49012
  0x65, 0x72, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 
49013
  0x6E, 0x67, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 
49014
  0x20, 0x74, 0x6F, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x65, 0xDA, 0x87, 0xB1, 
49015
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xEF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
49016
  0x8D, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 
49017
  0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 
49018
  0x68, 0x20, 0x60, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x6D, 
49019
  0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x69, 0x6D, 0x61, 
49020
  0x67, 0x65, 0x73, 0x29, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0A, 
49021
  0x60, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x78, 0x29, 0x60, 
49022
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
49023
  0x60, 0x28, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x78, 0x20, 0x6D, 0x61, 0x6B, 0x65, 
49024
  0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 
49025
  0xDA, 0x87, 0xB2, 0xDA, 0x87, 0xB3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 
49026
  0x86, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x26, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 
49027
  0x74, 0x65, 0x20, 0x66, 0x66, 0x69, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 
49028
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 
49029
  0x65, 0x78, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x61, 
49030
  0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 
49031
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x69, 0x74, 
49032
  0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 
49033
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 
49034
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 
49035
  0x73, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 
49036
  0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x66, 0x69, 
49037
  0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x43, 0x2F, 0x43, 0x2B, 0x2B, 0x2F, 
49038
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x6F, 
49039
  0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 
49040
  0x6F, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49041
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
49042
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
49043
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x69, 0x73, 
49044
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x64, 0x2E, 0xDA, 0x08, 
49045
  0xDA, 0x87, 0xB4, 0xDA, 0x87, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 
49046
  0x82, 0xA4, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x3F, 
49047
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
49048
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 
49049
  0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x2B, 0xDA, 0x86, 0x22, 0xD3, 0x04, 0xDA, 0x03, 
49050
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x4B, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x28, 0x76, 0x61, 0x72, 0x2D, 
49051
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 
49052
  0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 
49053
  0x76, 0x61, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 
49054
  0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 
49055
  0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xB6, 0xDA, 0x82, 0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49056
  0xDA, 0x04, 0x8B, 0x72, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x01, 0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
49057
  0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x54, 0x72, 
49058
  0x79, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 
49059
  0x75, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
49060
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 
49061
  0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 
49062
  0x74, 0x68, 0x73, 0x60, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
49063
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x28, 0x66, 0x75, 0x6C, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x20, 
49064
  0x6B, 0x69, 0x6E, 0x64, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
49065
  0x6B, 0x69, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x3A, 
49066
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 
49067
  0x0A, 0x6F, 0x72, 0x20, 0x3A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 
49068
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
49069
  0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 0x74, 
49070
  0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 
49071
  0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x0A, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
49072
  0x6F, 0x72, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xB0, 
49073
  0xDA, 0x87, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x61, 0x01, 
49074
  0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 0x70, 
49075
  0x72, 0x6F, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
49076
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 
49077
  0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 
49078
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 
49079
  0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x70, 
49080
  0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 
49081
  0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49082
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x55, 0xDA, 
49083
  0x87, 0xB9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x7C, 0x01, 0xDA, 
49084
  0x06, 0xCE, 0x80, 0xE5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 
49085
  0x6F, 0x6D, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 
49086
  0x20, 0x62, 0x75, 0x66, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 
49087
  0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x73, 0x20, 0x64, 0x61, 0x74, 
49088
  0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 
49089
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x73, 0x20, 
49090
  0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
49091
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 
49092
  0x63, 0x6B, 0x65, 0x74, 0x2D, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 
49093
  0x20, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x63, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x72, 0x6F, 
49094
  0x6D, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 
49095
  0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 
49096
  0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 
49097
  0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 
49098
  0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xBA, 0xDA, 0x87, 
49099
  0xBB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x67, 0x01, 0xDA, 0x06, 0xCE, 
49100
  0x68, 0x28, 0x70, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 
49101
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x20, 
49102
  0x6F, 0x72, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 0x6F, 0x75, 0x74, 0x2A, 0x29, 0x60, 
49103
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 
49104
  0x69, 0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 
49105
  0x6E, 0x20, 0x2A, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
49106
  0x2A, 0x20, 0x22, 0x25, 0x71, 0x22, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xBC, 0xDA, 0x87, 
49107
  0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 
49108
  0x23, 0x28, 0x6F, 0x6E, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
49109
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x74, 
49110
  0x6F, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xBF, 0xDA, 0x80, 0x80, 0xD3, 0x03, 0xDA, 0x03, 
49111
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAB, 0x28, 0x77, 0x61, 
49112
  0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 0x0A, 0x49, 0x74, 0x65, 0x72, 
49113
  0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 
49114
  0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x73, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 
49115
  0x70, 0x70, 0x6C, 0x79, 0x20, 0x60, 0x66, 0x60, 0x0A, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x6D, 
49116
  0x2E, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
49117
  0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
49118
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x73, 
49119
  0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x0A, 0x74, 0x61, 0x62, 0x6C, 0x65, 
49120
  0x2C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 
49121
  0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 
49122
  0x6E, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x5F, 0xDA, 0x87, 0xC1, 0xD3, 
49123
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x9C, 0x01, 0xDA, 0x06, 0xCE, 0x7B, 0x28, 
49124
  0x6C, 0x61, 0x62, 0x65, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
49125
  0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x20, 
49126
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 
49127
  0x78, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x64, 0x2E, 0x20, 
49128
  0x60, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 
49129
  0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
49130
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 
49131
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
49132
  0x87, 0xC2, 0xDA, 0x87, 0xCF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 
49133
  0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2E, 0x63, 0x84, 0x3B, 
49134
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE3, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x66, 0x6C, 
49135
  0x75, 0x73, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 
49136
  0x61, 0x72, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 
49137
  0x74, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x71, 
49138
  0x75, 0x65, 0x75, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 
49139
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
49140
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 
49141
  0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 
49142
  0x64, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x72, 0x65, 0x73, 0x65, 
49143
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 
49144
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x73, 
49145
  0x6F, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 
49146
  0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
49147
  0x65, 0x78, 0x74, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
49148
  0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xD0, 0xDA, 0x87, 
49149
  0xD1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
49150
  0x72, 0x65, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x63, 0x6F, 0x01, 0xDA, 0x06, 0xCE, 0x73, 
49151
  0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x70, 0x20, 0x74, 0x75, 
49152
  0x70, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x0A, 0x0A, 
49153
  0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 
49154
  0x70, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 
49155
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49156
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 
49157
  0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
49158
  0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x79, 0xDA, 0x87, 0xD2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49159
  0x00, 0xDA, 0x80, 0x8F, 0x82, 0x49, 0x01, 0xDA, 0x06, 0xCE, 0x67, 0x28, 0x62, 0x75, 0x66, 0x66, 
49160
  0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x20, 0x62, 0x75, 
49161
  0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x54, 0x6F, 0x67, 
49162
  0x67, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 
49163
  0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 
49164
  0x64, 0x65, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 
49165
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
49166
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xD3, 0xDA, 0x87, 0xD4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49167
  0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x52, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x28, 0x65, 0x76, 0x2F, 0x72, 
49168
  0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 
49169
  0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x20, 
49170
  0x72, 0x65, 0x61, 0x64, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x72, 
49171
  0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x08, 
49172
  0xDA, 0x87, 0xD5, 0xDA, 0x87, 0xD6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 
49173
  0x07, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8B, 0x28, 0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0x20, 0x69, 
49174
  0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 
49175
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
49176
  0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 
49177
  0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 
49178
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
49179
  0x2C, 0x0A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x65, 0x76, 0x61, 0x6C, 
49180
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
49181
  0x73, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
49182
  0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xD7, 0xDA, 0x87, 0xDB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49183
  0x00, 0xDA, 0x8F, 0x63, 0x82, 0x92, 0x01, 0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x66, 0x69, 0x62, 0x65, 
49184
  0x72, 0x2F, 0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0x20, 0x66, 0x69, 
49185
  0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 
49186
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 
49187
  0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 
49188
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x71, 0xDA, 0x87, 
49189
  0xDC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x83, 0x89, 0x01, 0xDA, 0x06, 0xCE, 
49190
  0x80, 0xE1, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
49191
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 
49192
  0x65, 0x72, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x2D, 0x69, 0x6E, 0x74, 
49193
  0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 
49194
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 
49195
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x63, 0x74, 0x69, 
49196
  0x6F, 0x6E, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 
49197
  0x74, 0x68, 0x65, 0x20, 0x60, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x60, 0x20, 0x61, 0x72, 
49198
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 
49199
  0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 
49200
  0x72, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x68, 0x61, 
49201
  0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
49202
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 
49203
  0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 
49204
  0x6C, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xDD, 0xDA, 0x87, 0xDE, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 
49205
  0x80, 0xAD, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 
49206
  0x0A, 0x0A, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 
49207
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 
49208
  0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x75, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 
49209
  0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 
49210
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x73, 0x70, 0x65, 0x63, 0x74, 
49211
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 
49212
  0x74, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
49213
  0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
49214
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
49215
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 
49216
  0x08, 0xDA, 0x87, 0xDF, 0xDA, 0x83, 0xDD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49217
  0x86, 0x19, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 
49218
  0x20, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 
49219
  0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
49220
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 
49221
  0x65, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 
49222
  0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x69, 
49223
  0x74, 0x0A, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xDB, 0xDA, 
49224
  0x87, 0xE1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x87, 0x01, 0xDA, 0x06, 
49225
  0xCE, 0x65, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x3D, 0x20, 0x26, 0x20, 0x78, 
49226
  0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
49227
  0x66, 0x20, 0x60, 0x3E, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 
49228
  0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 
49229
  0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 
49230
  0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
49231
  0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xE2, 0xDA, 0x87, 0xE9, 0xD3, 
49232
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x83, 0x16, 0x01, 0xDA, 0x06, 0xCE, 0x84, 
49233
  0xA3, 0x28, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x62, 
49234
  0x69, 0x64, 0x64, 0x65, 0x6E, 0x2D, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6C, 0x69, 0x74, 0x69, 
49235
  0x65, 0x73, 0x29, 0x0A, 0x0A, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x65, 0x61, 
49236
  0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 
49237
  0x76, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 
49238
  0x65, 0x74, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 
49239
  0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x72, 
49240
  0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2E, 0x20, 0x4F, 0x6E, 0x63, 0x65, 0x20, 0x61, 
49241
  0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x73, 0x61, 
49242
  0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 
49243
  0x6F, 0x20, 0x77, 0x61, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 0x65, 0x6E, 0x61, 0x62, 
49244
  0x6C, 0x65, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6C, 0x69, 0x74, 
49245
  0x69, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49246
  0x61, 0x6C, 0x6C, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 
49247
  0x6C, 0x6C, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x49, 0x4F, 0x20, 0x74, 0x6F, 
49248
  0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x2C, 
49249
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 
49250
  0x6E, 0x76, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x65, 
49251
  0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 
49252
  0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x0A, 0x2A, 0x20, 
49253
  0x3A, 0x66, 0x66, 0x69, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 
49254
  0x46, 0x46, 0x49, 0x20, 0x28, 0x72, 0x65, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x64, 0x65, 0x64, 
49255
  0x20, 0x69, 0x66, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
49256
  0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 
49257
  0x66, 0x66, 0x69, 0x2D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 
49258
  0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 
49259
  0x77, 0x20, 0x46, 0x46, 0x49, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 
49260
  0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 
49261
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x2D, 0x6A, 
49262
  0x69, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x61, 
49263
  0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 
49264
  0x60, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x2D, 0x75, 0x73, 0x65, 0x20, 0x2D, 0x20, 0x64, 
49265
  0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
49266
  0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x62, 0x6F, 0x75, 
49267
  0x6E, 0x64, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
49268
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2D, 0x75, 0x6E, 0x73, 0x61, 
49269
  0x66, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 
49270
  0x3A, 0x66, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 
49271
  0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
49272
  0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x73, 0x2D, 0x72, 
49273
  0x65, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 
49274
  0x65, 0x61, 0x64, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
49275
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 
49276
  0x3A, 0x66, 0x73, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 
49277
  0x6C, 0x6F, 0x77, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x6D, 
49278
  0x70, 0x6F, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 
49279
  0x66, 0x73, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 
49280
  0x6C, 0x6F, 0x77, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 
49281
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 
49282
  0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 0x3A, 0x68, 0x72, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 
49283
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x68, 0x69, 0x67, 0x68, 0x2D, 0x72, 0x65, 
49284
  0x73, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x73, 0x0A, 
49285
  0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 
49286
  0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
49287
  0x69, 0x63, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x28, 0x6E, 0x61, 0x74, 0x69, 
49288
  0x76, 0x65, 0x73, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 
49289
  0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x61, 
49290
  0x63, 0x63, 0x65, 0x73, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x2D, 0x63, 0x6F, 0x6E, 
49291
  0x6E, 0x65, 0x63, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 
49292
  0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x75, 0x74, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 
49293
  0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 
49294
  0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x65, 
49295
  0x6E, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x63, 0x63, 
49296
  0x65, 0x70, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x6E, 
49297
  0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 
49298
  0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0x20, 0x2D, 0x20, 
49299
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
49300
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x2A, 
49301
  0x20, 0x3A, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 
49302
  0x6C, 0x6F, 0x77, 0x20, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 
49303
  0x6D, 0x6F, 0x76, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x68, 0x61, 
49304
  0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 
49305
  0x63, 0x65, 0x73, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 
49306
  0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 
49307
  0x73, 0x73, 0x65, 0x73, 0xDA, 0x08, 0xDA, 0x87, 0xEA, 0xDA, 0x87, 0xEB, 0xD3, 0x03, 0xDA, 0x03, 
49308
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x81, 0x1A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x97, 0x28, 0x61, 
49309
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 0x20, 
49310
  0x70, 0x61, 0x72, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x4A, 0x6F, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x76, 
49311
  0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 
49312
  0x66, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x75, 0x70, 
49313
  0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
49314
  0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x69, 
49315
  0x63, 0x68, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
49316
  0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
49317
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 
49318
  0x61, 0x72, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xEC, 0xDA, 0x87, 0xED, 0xD3, 0x03, 0xDA, 
49319
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8A, 0x01, 0xDA, 0x06, 0xCE, 0x17, 0x28, 0x64, 0x65, 
49320
  0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x78, 0x20, 
49321
  0x2D, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xEE, 0xDA, 0x87, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 
49322
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x84, 0xE0, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x65, 0x76, 
49323
  0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
49324
  0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
49325
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 
49326
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x6F, 0x72, 0x65, 
49327
  0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 
49328
  0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xF1, 0xDA, 0x87, 
49329
  0xF2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0xC0, 0x01, 0xDA, 0x06, 0xCE, 
49330
  0x81, 0x97, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x20, 
49331
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x74, 0x65, 
49332
  0x67, 0x6F, 0x72, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
49333
  0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x2C, 0x20, 0x77, 0x68, 
49334
  0x69, 0x63, 0x68, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 
49335
  0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
49336
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x2E, 
49337
  0x20, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x74, 0x6F, 0x20, 
49338
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 
49339
  0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 
49340
  0x6F, 0x63, 0x61, 0x6C, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6F, 0x72, 0x79, 0x20, 
49341
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 
49342
  0x20, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
49343
  0x29, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x63, 0x6F, 0x6C, 0x6C, 0x61, 0x74, 0x65, 0x0A, 0x20, 0x2A, 
49344
  0x20, 0x3A, 0x63, 0x74, 0x79, 0x70, 0x65, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x65, 
49345
  0x74, 0x61, 0x72, 0x79, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 
49346
  0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x74, 0x69, 0x6D, 0x65, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
49347
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 
49348
  0x65, 0x20, 0x69, 0x66, 0x20, 0x73, 0x65, 0x74, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 
49349
  0x66, 0x75, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 
49350
  0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
49351
  0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 
49352
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
49353
  0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 
49354
  0x66, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 
49355
  0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xF3, 0xDA, 0x87, 
49356
  0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x0F, 0x01, 0xDA, 0x06, 
49357
  0xCE, 0x81, 0x30, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 
49358
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 
49359
  0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 
49360
  0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
49361
  0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x60, 0x73, 
49362
  0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x2E, 0x20, 
49363
  0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x68, 0x61, 0x6C, 
49364
  0x66, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 
49365
  0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x73, 0x20, 0x63, 0x61, 
49366
  0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 
49367
  0x76, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 
49368
  0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
49369
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 
49370
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x42, 0x79, 
49371
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 
49372
  0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 
49373
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 
49374
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 
49375
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 
49376
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xF5, 0xDA, 0x80, 0xAD, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 
49377
  0x82, 0x57, 0x28, 0x70, 0x75, 0x74, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 
49378
  0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x41, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x20, 
49379
  0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 
49380
  0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 
49381
  0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 
49382
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x49, 0x6E, 
49383
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
49384
  0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6E, 
49385
  0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
49386
  0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 0x74, 
49387
  0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x73, 
49388
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 
49389
  0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x62, 
49390
  0x6F, 0x75, 0x6E, 0x64, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 
49391
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 
49392
  0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x73, 0x70, 0x61, 0x63, 
49393
  0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 
49394
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49395
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x65, 0x78, 0x74, 
49396
  0x72, 0x61, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
49397
  0x20, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x20, 0x62, 
49398
  0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
49399
  0x2C, 0x20, 0x70, 0x75, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 
49400
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x65, 
49401
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x70, 
49402
  0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x69, 
49403
  0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 
49404
  0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 
49405
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 
49406
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 
49407
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 
49408
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x50, 0x75, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 
49409
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 
49410
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6D, 0x6F, 
49411
  0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
49412
  0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
49413
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
49414
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xB1, 0xDA, 0x87, 
49415
  0xF6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0xDC, 0x01, 0xDA, 0x06, 
49416
  0xCE, 0x80, 0xD1, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x26, 0x20, 0x6B, 0x76, 0x73, 0x29, 
49417
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
49418
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 
49419
  0x69, 0x61, 0x64, 0x69, 0x63, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
49420
  0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 
49421
  0x20, 0x6B, 0x76, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
49422
  0x63, 0x65, 0x20, 0x6B, 0x31, 0x2C, 0x20, 0x76, 0x31, 0x2C, 0x20, 0x6B, 0x32, 0x2C, 0x20, 0x76, 
49423
  0x32, 0x2C, 0x20, 0x6B, 0x33, 0x2C, 0x20, 0x76, 0x33, 0x2C, 0x20, 0x2E, 0x2E, 0x2E, 0x20, 0x49, 
49424
  0x66, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 
49425
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
49426
  0x6E, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 
49427
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x52, 0x65, 
49428
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 
49429
  0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xC2, 0xDA, 0x87, 0xF7, 0xD3, 0x03, 0xDA, 0x03, 
49430
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xCC, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x28, 0x73, 0x74, 
49431
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 
49432
  0x73, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
49433
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 
49434
  0x6E, 0x60, 0x20, 0x63, 0x6F, 0x70, 0x69, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x79, 
49435
  0x74, 0x65, 0x73, 0x60, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 
49436
  0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x5D, 0xDA, 0x87, 0xF8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49437
  0x00, 0xDA, 0x4C, 0x80, 0xED, 0x01, 0xDA, 0x06, 0xCE, 0x79, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x6F, 
49438
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
49439
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 
49440
  0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
49441
  0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
49442
  0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x67, 
49443
  0x63, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x6C, 0x61, 0x6E, 0x67, 0x0A, 0x0A, 0x2A, 0x20, 
49444
  0x3A, 0x6D, 0x73, 0x76, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 
49445
  0x6E, 0x0A, 0x0A, 0xDA, 0x08, 0xDA, 0x87, 0xF9, 0xDA, 0x87, 0xFA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49446
  0x03, 0x00, 0xDA, 0x90, 0x34, 0x84, 0x01, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x02, 0x28, 0x70, 0x61, 
49447
  0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x70, 0x61, 0x72, 0x73, 
49448
  0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
49449
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 
49450
  0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 
49451
  0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 
49452
  0x61, 0x74, 0x75, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 
49453
  0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
49454
  0x20, 0x2D, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x62, 0x65, 
49455
  0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49456
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 
49457
  0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 
49458
  0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x6F, 0x6F, 
49459
  0x74, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x63, 
49460
  0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6D, 
49461
  0x6F, 0x72, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x61, 
49462
  0x66, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x65, 0x2E, 0xDA, 
49463
  0x08, 0xDA, 0x0D, 0xDA, 0x80, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 
49464
  0xEC, 0x03, 0xDA, 0x06, 0xCE, 0x6A, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x66, 
49465
  0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x61, 
49466
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x79, 0x6E, 0x63, 0x68, 
49467
  0x72, 0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49468
  0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
49469
  0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 
49470
  0x75, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
49471
  0xDA, 0x08, 0xDA, 0x87, 0xFB, 0xDA, 0x87, 0xFE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49472
  0x4C, 0x8A, 0xCC, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x46, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x69, 0x70, 
49473
  0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
49474
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 
49475
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x77, 0x72, 
49476
  0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x74, 0x68, 
49477
  0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x65, 0x64, 
49478
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 
49479
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x68, 
49480
  0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 
49481
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 
49482
  0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 
49483
  0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
49484
  0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 
49485
  0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x60, 0x66, 0x6C, 0x61, 0x67, 0x73, 
49486
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x73, 
49487
  0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 
49488
  0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
49489
  0x69, 0x6E, 0x67, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x6F, 0x6E, 0x20, 
49490
  0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
49491
  0x70, 0x69, 0x70, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x62, 
49492
  0x65, 0x20, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x70, 0x61, 0x73, 
49493
  0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x74, 0x6F, 
49494
  0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x77, 0x69, 
49495
  0x74, 0x68, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x60, 0x2E, 0x0A, 0x0A, 
49496
  0x2A, 0x20, 0x3A, 0x57, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49497
  0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
49498
  0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x6C, 
49499
  0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x0A, 0x2A, 
49500
  0x20, 0x3A, 0x52, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
49501
  0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 
49502
  0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x6C, 0x6F, 
49503
  0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x0A, 0x0A, 0x42, 
49504
  0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 
49505
  0x65, 0x6E, 0x64, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 
49506
  0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 
49507
  0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
49508
  0x68, 0x65, 0x20, 0x60, 0x65, 0x76, 0x60, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2E, 0xDA, 
49509
  0x08, 0xDA, 0x87, 0xFF, 0xDA, 0x88, 0x07, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 
49510
  0xA1, 0x81, 0x1E, 0x01, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
49511
  0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
49512
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 
49513
  0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 
49514
  0x73, 0x65, 0x64, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 
49515
  0x73, 0x74, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x08, 0xDA, 0x88, 0x00, 0xD3, 0x03, 0xDA, 
49516
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x93, 0x03, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x62, 0x75, 
49517
  0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 
49518
  0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x73, 0x29, 0x0A, 0x0A, 
49519
  0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x75, 
49520
  0x6E, 0x64, 0x6C, 0x65, 0x73, 0xDA, 0x08, 0xDA, 0x88, 0x01, 0xDA, 0x88, 0x09, 0xD3, 0x03, 0xDA, 
49521
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0xFF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCC, 0x28, 
49522
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x20, 0x6B, 0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
49523
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 
49524
  0x63, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
49525
  0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
49526
  0x70, 0x61, 0x69, 0x72, 0x73, 0x2E, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
49527
  0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6B, 0x31, 0x2C, 0x20, 0x76, 0x31, 0x2C, 
49528
  0x20, 0x6B, 0x32, 0x2C, 0x20, 0x76, 0x32, 0x2C, 0x20, 0x6B, 0x33, 0x2C, 0x20, 0x76, 0x33, 0x2C, 
49529
  0x20, 0x2E, 0x2E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 
49530
  0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
49531
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
49532
  0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 
49533
  0x77, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49534
  0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xAD, 
49535
  0xDA, 0x88, 0x0A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x9E, 0x01, 
49536
  0xDA, 0x06, 0xCE, 0x57, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 0x61, 0x73, 0x6B, 
49537
  0x73, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
49538
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 
49539
  0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 
49540
  0x65, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 
49541
  0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x0B, 
49542
  0xDA, 0x88, 0x0C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0xA0, 0x03, 0xDA, 
49543
  0x06, 0xCE, 0x62, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x20, 
49544
  0x6E, 0x61, 0x6D, 0x65, 0x20, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 
49545
  0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 
49546
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x61, 0x74, 
49547
  0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 
49548
  0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x6D, 0x61, 
49549
  0x6E, 0x6E, 0x65, 0x72, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x0D, 0xDA, 0x88, 0x11, 
49550
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x2F, 0x81, 0xA7, 0x01, 0xDA, 0x06, 0xCE, 
49551
  0x80, 0xF9, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x65, 0x70, 0x20, 0x66, 0x69, 
49552
  0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 
49553
  0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x65, 
49554
  0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 
49555
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 
49556
  0x74, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 
49557
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 
49558
  0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
49559
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 
49560
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 
49561
  0x6C, 0x75, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
49562
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x77, 
49563
  0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 
49564
  0x79, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x62, 0x72, 0x65, 
49565
  0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x6E, 
49566
  0x69, 0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xFB, 
49567
  0xDA, 0x88, 0x12, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x38, 0x3C, 0x01, 0xDA, 
49568
  0x06, 0xCE, 0x50, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 
49569
  0x74, 0x73, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
49570
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x65, 
49571
  0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 
49572
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
49573
  0x78, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x77, 0xDA, 0x88, 0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49574
  0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x65, 0x67, 0x2E, 
49575
  0x63, 0x87, 0x73, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xFA, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x6D, 0x61, 
49576
  0x74, 0x63, 0x68, 0x20, 0x70, 0x65, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 
49577
  0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
49578
  0x0A, 0x4D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 
49579
  0x20, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x47, 0x72, 0x61, 0x6D, 
49580
  0x6D, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x74, 
49581
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
49582
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x61, 0x70, 0x74, 
49583
  0x75, 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49584
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x65, 0x78, 0x74, 
49585
  0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 
49586
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x6E, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, 0x64, 0x65, 0x66, 
49587
  0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x70, 0x65, 0x67, 0x2E, 0x20, 0x54, 0x68, 0x65, 
49588
  0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x50, 0x45, 0x47, 0x73, 0x20, 
49589
  0x69, 0x73, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 
49590
  0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x65, 0x62, 0x73, 0x69, 
49591
  0x74, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x14, 0xDA, 0x88, 0x15, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49592
  0x03, 0x00, 0xDA, 0x8E, 0x75, 0x80, 0xEC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA8, 0x28, 0x73, 0x74, 
49593
  0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 
49594
  0x65, 0x6E, 0x20, 0x73, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 
49595
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 
49596
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 
49597
  0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 
49598
  0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x69, 
49599
  0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49600
  0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x72, 0x65, 0x63, 0x75, 
49601
  0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 
49602
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 
49603
  0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x16, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 
49604
  0x2F, 0x69, 0x6E, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xAE, 0x01, 
49605
  0xDA, 0x06, 0xCE, 0x29, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x72, 
49606
  0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x73, 0x69, 
49607
  0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 0xDA, 0x08, 0xDA, 
49608
  0x85, 0x78, 0xDA, 0x88, 0x17, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0xB3, 
49609
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA0, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x77, 0x69, 0x74, 0x68, 
49610
  0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 
49611
  0x74, 0x6F, 0x72, 0x5D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 
49612
  0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2C, 0x20, 0x62, 
49613
  0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 
49614
  0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x72, 
49615
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 
49616
  0x75, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
49617
  0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
49618
  0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 
49619
  0x77, 0x69, 0x74, 0x68, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x18, 0xDA, 0x80, 
49620
  0xBA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x0D, 0x03, 0xDA, 0x06, 0xCE, 
49621
  0x80, 0x88, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 
49622
  0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 
49623
  0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 
49624
  0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x69, 0x6E, 
49625
  0x67, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 
49626
  0x20, 0x61, 0x6E, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 
49627
  0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 
49628
  0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 
49629
  0x77, 0x68, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
49630
  0x88, 0x20, 0xDA, 0x88, 0x23, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x85, 
49631
  0x02, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD1, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 
49632
  0x6C, 0x6F, 0x6E, 0x65, 0x20, 0x70, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
49633
  0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
49634
  0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
49635
  0x73, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x74, 
49636
  0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 
49637
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x64, 0x20, 0x70, 0x61, 0x72, 
49638
  0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
49639
  0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
49640
  0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x67, 0x6F, 0x6F, 0x64, 0x20, 
49641
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x70, 0x61, 
49642
  0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6C, 
49643
  0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
49644
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x24, 0xDA, 0x88, 0x25, 
49645
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x66, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
49646
  0xAE, 0x28, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 
49647
  0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x20, 
49648
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 
49649
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
49650
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x66, 
49651
  0x6F, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x0A, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x69, 0x6E, 
49652
  0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 
49653
  0x61, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 
49654
  0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x60, 
49655
  0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x0A, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
49656
  0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 
49657
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 
49658
  0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x65, 
49659
  0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x0A, 0x69, 0x73, 0x20, 0x61, 0x20, 
49660
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 
49661
  0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 
49662
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 
49663
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x0A, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 
49664
  0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 
49665
  0x64, 0x73, 0x60, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 
49666
  0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x70, 
49667
  0x70, 0x6C, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x0A, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
49668
  0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x63, 0x65, 0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 
49669
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 
49670
  0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 
49671
  0x73, 0x74, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49672
  0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0xDA, 
49673
  0x08, 0xDA, 0x88, 0x26, 0xDA, 0x88, 0x34, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49674
  0x8A, 0xEA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB4, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
49675
  0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x61, 0x74, 
49676
  0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 
49677
  0x68, 0x61, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 
49678
  0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 
49679
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x0A, 0x62, 0x79, 0x20, 0x60, 0x6D, 0x61, 0x6B, 
49680
  0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x60, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 
49681
  0x68, 0x61, 0x74, 0x20, 0x60, 0x28, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 
49682
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49683
  0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 
49684
  0x68, 0x61, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 
49685
  0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 
49686
  0x41, 0xDA, 0x88, 0x35, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1A, 0x01, 
49687
  0xDA, 0x06, 0xCE, 0x2F, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 
49688
  0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 
49689
  0x6E, 0x67, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x65, 
49690
  0x72, 0x73, 0x60, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x82, 0x36, 0xDA, 0x82, 0xF5, 0xD3, 
49691
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x40, 0x03, 0xDA, 0x06, 0xCE, 0x69, 0x28, 
49692
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 
49693
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x6B, 0x65, 
49694
  0x79, 0x73, 0x20, 0x6E, 0x65, 0x77, 0x2D, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x29, 0x0A, 0x0A, 
49695
  0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 
49696
  0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 
49697
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x6F, 0x75, 0x72, 
49698
  0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x36, 0xDA, 0x88, 0x39, 
49699
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x21, 0x01, 0xDA, 0x06, 0xCE, 
49700
  0x4E, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 
49701
  0x6B, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
49702
  0x20, 0x61, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 
49703
  0x74, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 
49704
  0x6D, 0x61, 0x79, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x69, 0x74, 0x2E, 0xDA, 
49705
  0x08, 0xDA, 0x88, 0x3A, 0xDA, 0x88, 0x3B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
49706
  0xBC, 0x81, 0x79, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 
49707
  0x6C, 0x6C, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
49708
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 
49709
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 
49710
  0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x2E, 0xDA, 
49711
  0x08, 0xDA, 0x88, 0x3C, 0xDA, 0x88, 0x3D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49712
  0x6A, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0x20, 0x78, 
49713
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
49714
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x3E, 0xDA, 
49715
  0x80, 0x82, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xBB, 0x01, 0xDA, 0x06, 
49716
  0xCE, 0x66, 0x28, 0x70, 0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 
49717
  0x72, 0x6D, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x73, 0x74, 0x2D, 0x6F, 
49718
  0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x6F, 
49719
  0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
49720
  0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x60, 0x28, 0x66, 0x20, 
49721
  0x78, 0x29, 0x60, 0x0A, 0x6F, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x69, 0x73, 
49722
  0x69, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x5D, 0xDA, 0x88, 0x40, 0xD3, 
49723
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x14, 0x01, 0xDA, 0x06, 0xCE, 0x33, 0x28, 
49724
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
49725
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 
49726
  0x6F, 0x6C, 0x69, 0x63, 0x20, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
49727
  0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x41, 0xDA, 0x84, 0x85, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49728
  0x00, 0xDA, 0x04, 0x80, 0x89, 0x01, 0xDA, 0x06, 0xCE, 0x17, 0x28, 0x69, 0x6E, 0x63, 0x20, 0x78, 
49729
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x78, 0x20, 0x2B, 0x20, 0x31, 
49730
  0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x83, 0xDA, 0x83, 0xF2, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49731
  0xDA, 0x04, 0x81, 0x15, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAE, 0x28, 0x6C, 0x65, 0x74, 0x20, 0x62, 
49732
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
49733
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x20, 
49734
  0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
49735
  0x74, 0x6F, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 
49736
  0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
49737
  0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 
49738
  0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x65, 0x66, 0x60, 
49739
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 
49740
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
49741
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
49742
  0x74, 0x0A, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x42, 
49743
  0xDA, 0x88, 0x46, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x81, 0xDE, 0x01, 
49744
  0xDA, 0x06, 0xCE, 0x36, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x74, 0x79, 
49745
  0x70, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 
49746
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x79, 0x70, 0x65, 
49747
  0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x47, 0xDA, 
49748
  0x88, 0x48, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xFA, 0x01, 0xDA, 0x06, 
49749
  0xCE, 0x80, 0x87, 0x28, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 
49750
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 
49751
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
49752
  0x28, 0x74, 0x72, 0x65, 0x65, 0x29, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49753
  0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x70, 0x74, 
49754
  0x68, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 
49755
  0x6C, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 
49756
  0x61, 0x79, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
49757
  0x6E, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x6F, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x49, 0xCF, 
49758
  0x11, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x2D, 0x62, 0x69, 
49759
  0x74, 0x73, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x7E, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 
49760
  0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x20, 0x6F, 
49761
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6A, 0x61, 0x6E, 0x65, 
49762
  0x74, 0x63, 0x6F, 0x6E, 0x66, 0x2E, 0x68, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 
49763
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
49764
  0x66, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 
49765
  0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6C, 0x65, 0x20, 
49766
  0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x72, 
49767
  0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0x01, 0xDA, 0x88, 0x4E, 0xD3, 0x03, 0xDA, 0x03, 
49768
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x2B, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x65, 0x70, 
49769
  0x72, 0x69, 0x6E, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 
49770
  0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 
49771
  0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 
49772
  0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 
49773
  0x64, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 
49774
  0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x52, 0xDA, 0x83, 
49775
  0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x17, 0x01, 0xDA, 0x06, 
49776
  0xCE, 0x39, 0x28, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 
49777
  0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 
49778
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49779
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xC9, 
49780
  0xDA, 0x88, 0x4F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0xF0, 0x01, 
49781
  0xDA, 0x06, 0xCE, 0x7A, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 
49782
  0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x70, 0x29, 
49783
  0x0A, 0x0A, 0x4A, 0x6F, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
49784
  0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
49785
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x70, 0x74, 
49786
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 
49787
  0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 
49788
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x65, 0x70, 0x60, 0x2E, 0xDA, 0x08, 
49789
  0xDA, 0x84, 0x62, 0xDA, 0x88, 0x50, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 
49790
  0x8B, 0x8A, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xD5, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x20, 0x66, 
49791
  0x69, 0x62, 0x65, 0x72, 0x2D, 0x6F, 0x72, 0x2D, 0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 
49792
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 
49793
  0x72, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x74, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
49794
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 
49795
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x20, 
49796
  0x6C, 0x61, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
49797
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x69, 0x74, 
49798
  0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
49799
  0x20, 0x60, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x20, 0x66, 0x69, 0x72, 
49800
  0x73, 0x74, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 
49801
  0x61, 0x73, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x72, 
49802
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
49803
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x73, 0x20, 0x77, 0x69, 
49804
  0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
49805
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 
49806
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x60, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x68, 0x61, 
49807
  0x6E, 0x6E, 0x65, 0x6C, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 
49808
  0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 
49809
  0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 
49810
  0x6F, 0x75, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 
49811
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x79, 0x20, 0x73, 0x63, 
49812
  0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x61, 
49813
  0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
49814
  0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 
49815
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 
49816
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
49817
  0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
49818
  0x68, 0x65, 0x72, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
49819
  0x74, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
49820
  0x80, 0xB0, 0xDA, 0x88, 0x51, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x51, 
49821
  0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x63, 0x64, 0x20, 0x78, 
49822
  0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
49823
  0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 
49824
  0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 
49825
  0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x52, 0xDA, 0x88, 
49826
  0x53, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8B, 0x01, 0xDA, 0x06, 0xCE, 
49827
  0x22, 0x28, 0x2B, 0x2B, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x63, 0x72, 0x65, 0x6D, 0x65, 
49828
  0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 
49829
  0x20, 0x31, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x54, 0xDA, 0x88, 0x56, 0xD3, 0x04, 
49830
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 0x7B, 0x28, 0x73, 
49831
  0x65, 0x71, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
49832
  0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 
49833
  0x70, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 
49834
  0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 
49835
  0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
49836
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
49837
  0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 
49838
  0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 
49839
  0x57, 0xDA, 0x88, 0x5D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xE3, 0x01, 
49840
  0xDA, 0x06, 0xCE, 0x43, 0x28, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x78, 0x73, 0x29, 
49841
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 
49842
  0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 
49843
  0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 
49844
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x5E, 0xDA, 0x88, 0x62, 0xD3, 
49845
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0x09, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x28, 
49846
  0x6F, 0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 
49847
  0x61, 0x73, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 
49848
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 
49849
  0x79, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 
49850
  0x73, 0x68, 0x65, 0x6C, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x63, 0xDA, 0x88, 0x64, 0xD3, 0x03, 
49851
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x55, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 
49852
  0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
49853
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
49854
  0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 
49855
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 
49856
  0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 
49857
  0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 
49858
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 
49859
  0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 
49860
  0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 
49861
  0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 
49862
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 
49863
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xC8, 0xDA, 0x88, 0x65, 0xD3, 0x04, 
49864
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x3A, 0x01, 0xDA, 0x06, 0xCE, 0x58, 0x45, 0x6E, 
49865
  0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x74, 0x20, 0x69, 0x6E, 
49866
  0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 
49867
  0x6F, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x75, 0x73, 
49868
  0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x66, 0x6F, 
49869
  0x72, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 
49870
  0x20, 0x72, 0x65, 0x70, 0x6C, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x17, 0xDA, 
49871
  0x88, 0x66, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x76, 0x01, 0xDA, 0x06, 
49872
  0xCE, 0x80, 0xDC, 0x28, 0x2D, 0x3E, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
49873
  0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 
49874
  0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 
49875
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49876
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 
49877
  0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 0x61, 
49878
  0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
49879
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 
49880
  0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 
49881
  0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
49882
  0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49883
  0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 
49884
  0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 
49885
  0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 
49886
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x67, 0xDA, 0x88, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49887
  0x00, 0xDA, 0x8F, 0x2F, 0x81, 0x79, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0x4C, 0x28, 0x64, 0x65, 0x62, 
49888
  0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 
49889
  0x65, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
49890
  0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 
49891
  0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 
49892
  0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 
49893
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, 
49894
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
49895
  0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 
49896
  0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6F, 0x70, 
49897
  0x2D, 0x6D, 0x6F, 0x73, 0x74, 0x2C, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 
49898
  0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
49899
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 
49900
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49901
  0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x6F, 0x73, 0x74, 0x20, 
49902
  0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 
49903
  0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x45, 
49904
  0x61, 0x63, 0x68, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 
49905
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x6F, 0x66, 
49906
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x61, 
49907
  0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 
49908
  0x20, 0x2D, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
49909
  0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
49910
  0x63, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x63, 
49911
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
49912
  0x2D, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
49913
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x6C, 
49914
  0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
49915
  0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x75, 0x6E, 0x63, 0x74, 
49916
  0x69, 0x6F, 0x6E, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
49917
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 
49918
  0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 
49919
  0x74, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x69, 
49920
  0x6E, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
49921
  0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 
49922
  0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x0A, 
49923
  0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 
49924
  0x75, 0x6D, 0x61, 0x6E, 0x2D, 0x66, 0x72, 0x69, 0x65, 0x6E, 0x64, 0x6C, 0x79, 0x20, 0x6E, 0x61, 
49925
  0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
49926
  0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x63, 0x20, 0x2D, 0x20, 0x69, 0x6E, 0x74, 0x65, 
49927
  0x67, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 
49928
  0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 
49929
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 
49930
  0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x2D, 0x20, 
49931
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
49932
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 
49933
  0x65, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6F, 
49934
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 
49935
  0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 0x72, 
49936
  0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49937
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x0A, 0x0A, 
49938
  0x2A, 0x20, 0x3A, 0x74, 0x61, 0x69, 0x6C, 0x20, 0x2D, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 
49939
  0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x74, 
49940
  0x61, 0x69, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x08, 0xDA, 0x84, 0x3E, 0xDA, 0x88, 0x6D, 
49941
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8C, 0xCD, 0x01, 0xDA, 0x06, 0xCE, 
49942
  0x81, 0xC8, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
49943
  0x6D, 0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
49944
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x75, 
49945
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 
49946
  0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x73, 0x79, 0x6E, 0x63, 
49947
  0x68, 0x72, 0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 
49948
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 
49949
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 
49950
  0x77, 0x6F, 0x72, 0x64, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 
49951
  0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
49952
  0x66, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
49953
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
49954
  0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x62, 0x75, 
49955
  0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x69, 0x6E, 
49956
  0x74, 0x6F, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 
49957
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
49958
  0x64, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 
49959
  0x6F, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x70, 0x65, 
49960
  0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 
49961
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
49962
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x66, 
49963
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x61, 0x73, 0x20, 0x73, 0x75, 
49964
  0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 
49965
  0x69, 0x66, 0x20, 0x65, 0x6E, 0x64, 0x2D, 0x6F, 0x66, 0x2D, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
49966
  0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 
49967
  0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 
49968
  0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x62, 0x6C, 
49969
  0x65, 0x6D, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x4F, 0x20, 
49970
  0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x6E, 0xDA, 
49971
  0x88, 0x6F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x86, 0x40, 0x01, 0xDA, 
49972
  0x06, 0xCE, 0x80, 0xCB, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 0x20, 0x62, 
49973
  0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 
49974
  0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 
49975
  0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
49976
  0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x61, 
49977
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 
49978
  0x63, 0x61, 0x6C, 0x6C, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 
49979
  0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x69, 0x73, 
49980
  0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x70, 
49981
  0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x63, 
49982
  0x6F, 0x64, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
49983
  0x20, 0x63, 0x6F, 0x70, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 
49984
  0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 
49985
  0x08, 0xDA, 0x88, 0x70, 0xDA, 0x82, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49986
  0x90, 0x97, 0x03, 0xDA, 0x06, 0xCE, 0x70, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x74, 
49987
  0x6F, 0x70, 0x6F, 0x6C, 0x69, 0x73, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x6F, 
49988
  0x70, 0x6F, 0x6C, 0x6F, 0x67, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 
49989
  0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x2C, 0x20, 
49990
  0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x62, 
49991
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x64, 0x20, 
49992
  0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x69, 0x74, 0x73, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 
49993
  0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x71, 0xDA, 0x88, 0x80, 0xD3, 
49994
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x3D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
49995
  0xF3, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x61, 0x70, 0x61, 
49996
  0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
49997
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
49998
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 
49999
  0x74, 0x65, 0x64, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 
50000
  0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x60, 0x20, 0x65, 0x6E, 0x74, 0x72, 0x69, 0x65, 
50001
  0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x74, 0x68, 
50002
  0x61, 0x74, 0x20, 0x69, 0x66, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x73, 0x20, 
50003
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6E, 
50004
  0x74, 0x72, 0x69, 0x65, 0x73, 0x20, 0x67, 0x6F, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
50005
  0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 
50006
  0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 
50007
  0x72, 0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 
50008
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 
50009
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 
50010
  0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x81, 0xDA, 0x88, 0x82, 0xD3, 0x03, 0xDA, 0x03, 
50011
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x8E, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x69, 0x6E, 
50012
  0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
50013
  0x78, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6C, 0x79, 
50014
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
50015
  0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 
50016
  0x74, 0x77, 0x6F, 0x27, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
50017
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x83, 0xDA, 0x88, 
50018
  0x84, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x81, 0x85, 0x01, 0xDA, 0x06, 
50019
  0xCE, 0x80, 0x80, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 
50020
  0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x45, 0x6D, 0x70, 0x74, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6E, 
50021
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 
50022
  0x69, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 
50023
  0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x72, 0x65, 
50024
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 
50025
  0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
50026
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 
50027
  0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x75, 0xDA, 0x88, 0x85, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50028
  0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBF, 0x28, 0x73, 0x69, 
50029
  0x67, 0x6E, 0x61, 0x6C, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x61, 
50030
  0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x77, 0x69, 0x74, 
50031
  0x68, 0x20, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x78, 0x2E, 0x20, 0x60, 0x77, 0x68, 
50032
  0x61, 0x74, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
50033
  0x74, 0x65, 0x67, 0x65, 0x72, 0x0A, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x30, 0x20, 0x74, 0x68, 0x72, 
50034
  0x6F, 0x75, 0x67, 0x68, 0x20, 0x37, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 
50035
  0x67, 0x20, 0x75, 0x73, 0x65, 0x72, 0x28, 0x30, 0x2D, 0x37, 0x29, 0x2C, 0x20, 0x6F, 0x72, 0x20, 
50036
  0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6F, 0x6B, 0x0A, 0x2A, 
50037
  0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 
50038
  0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x73, 0x65, 
50039
  0x72, 0x28, 0x30, 0x2D, 0x37, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 
50040
  0x75, 0x70, 0x74, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x77, 0x61, 0x69, 0x74, 0xDA, 0x08, 0xDA, 0x88, 
50041
  0x86, 0xDA, 0x88, 0x87, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x82, 0x74, 
50042
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA2, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 
50043
  0x69, 0x6D, 0x72, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x74, 
50044
  0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 
50045
  0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
50046
  0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
50047
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
50048
  0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
50049
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x6E, 
50050
  0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 
50051
  0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 0x68, 0x69, 
50052
  0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x88, 0xDA, 0x88, 0x89, 
50053
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x80, 0x01, 0xDA, 0x06, 0xCE, 
50054
  0x80, 0x81, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
50055
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x26, 
50056
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 
50057
  0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
50058
  0x69, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 
50059
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 
50060
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
50061
  0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 
50062
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x70, 0xDA, 0x82, 0xEE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50063
  0x03, 0x00, 0xDA, 0x04, 0x90, 0x88, 0x03, 0xDA, 0x06, 0xCE, 0x48, 0x28, 0x62, 0x75, 0x6E, 0x64, 
50064
  0x6C, 0x65, 0x2F, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 
50065
  0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 
50066
  0x65, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
50067
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x79, 0x73, 0x70, 
50068
  0x61, 0x74, 0x68, 0xDA, 0x08, 0xDA, 0x88, 0x8A, 0xDA, 0x88, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50069
  0x03, 0x00, 0xDA, 0x8F, 0x36, 0x86, 0x7A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC0, 0x28, 0x65, 0x6E, 
50070
  0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x43, 
50071
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 
50072
  0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
50073
  0x72, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 
50074
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
50075
  0x65, 0x6E, 0x74, 0x2E, 0x20, 0x54, 0x6F, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
50076
  0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 
50077
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
50078
  0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
50079
  0x6F, 0x20, 0x73, 0x77, 0x61, 0x70, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50080
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
50081
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
50082
  0x88, 0x98, 0xDA, 0x88, 0x99, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0xF1, 
50083
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x80, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 
50084
  0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 
50085
  0x68, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 
50086
  0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 
50087
  0x68, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x72, 0x65, 
50088
  0x74, 0x75, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x53, 0x61, 0x6D, 
50089
  0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x6F, 
50090
  0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 
50091
  0x72, 0x75, 0x65, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x9A, 0xDA, 0x88, 0x9B, 0xD3, 0x03, 
50092
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1E, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x6D, 
50093
  0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
50094
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x65, 0x73, 
50095
  0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
50096
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 
50097
  0x6F, 0x74, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2E, 0xDA, 
50098
  0x08, 0xDA, 0x88, 0x9C, 0xDA, 0x81, 0x05, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
50099
  0x83, 0xBF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x20, 0x69, 0x6E, 
50100
  0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x29, 0x0A, 
50101
  0x0A, 0x53, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 0x2D, 
50102
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
50103
  0x6E, 0x73, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x73, 0x20, 0x71, 0x75, 0x69, 0x63, 
50104
  0x6B, 0x2D, 0x73, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 
50105
  0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x2E, 
50106
  0x0A, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x60, 0x20, 
50107
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
50108
  0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 
50109
  0x20, 0x73, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
50110
  0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2C, 0x0A, 0x6F, 0x74, 0x68, 0x65, 
50111
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 
50112
  0x08, 0xDA, 0x80, 0xF2, 0xDA, 0x88, 0x9D, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 0x62, 
50113
  0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 
50114
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
50115
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 
50116
  0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 
50117
  0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 
50118
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x2E, 
50119
  0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
50120
  0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x6D, 0x75, 0x73, 
50121
  0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 
50122
  0xDA, 0x08, 0xDA, 0x88, 0x9E, 0xDA, 0x88, 0xA0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50123
  0x4C, 0x86, 0xA1, 0x01, 0xDA, 0x06, 0xCE, 0x59, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 0x65, 0x65, 
50124
  0x70, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 
50125
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x6E, 
50126
  0x60, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 
50127
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 
50128
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
50129
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xA1, 0xDA, 0x88, 0xA2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50130
  0xDA, 0x4C, 0x88, 0x26, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0x20, 
50131
  0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x75, 
50132
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 
50133
  0x74, 0x6F, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50134
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x6E, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2C, 
50135
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 
50136
  0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x91, 0xDA, 0x88, 0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50137
  0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8C, 0x2A, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0xFA, 0x28, 0x65, 0x76, 
50138
  0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x26, 0x6F, 0x70, 
50139
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x73, 0x75, 
50140
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 
50141
  0x6D, 0x61, 0x69, 0x6E, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6F, 
50142
  0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 
50143
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2C, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
50144
  0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 
50145
  0x65, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x77, 0x69, 0x74, 
50146
  0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 
50147
  0x20, 0x60, 0x6D, 0x61, 0x69, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 
50148
  0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x6F, 
50149
  0x72, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 
50150
  0x74, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x30, 0x20, 0x6F, 0x72, 0x20, 0x31, 
50151
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x55, 0x6E, 0x6C, 0x69, 
50152
  0x6B, 0x65, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 
50153
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 
50154
  0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
50155
  0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 
50156
  0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 
50157
  0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x77, 0x61, 
50158
  0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 
50159
  0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x77, 0x61, 0x69, 
50160
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 
50161
  0x74, 0x2C, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x3A, 0x6E, 0x60, 
50162
  0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
50163
  0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x2E, 
50164
  0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
50165
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 
50166
  0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6E, 
50167
  0x60, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 
50168
  0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x74, 0x60, 0x20, 0x2D, 0x20, 
50169
  0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x20, 
50170
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 
50171
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
50172
  0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
50173
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x6F, 
50174
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 
50175
  0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x60, 0x20, 
50176
  0x2D, 0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x61, 0x62, 0x73, 
50177
  0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 0x74, 
50178
  0x6F, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x28, 0x70, 0x65, 
50179
  0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 0x69, 
50180
  0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x60, 0x20, 0x2D, 
50181
  0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x63, 0x66, 0x75, 0x6E, 
50182
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 0x74, 
50183
  0x6F, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x28, 0x70, 0x65, 
50184
  0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 0x69, 
50185
  0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0xDA, 0x08, 0xDA, 0x88, 0xA4, 0xDA, 0x88, 0xA5, 0xD3, 
50186
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x2F, 0x81, 0x04, 0x01, 0xDA, 0x06, 0xCE, 0x47, 
50187
  0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 
50188
  0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x63, 0x29, 0x0A, 0x0A, 0x55, 0x6E, 
50189
  0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
50190
  0x20, 0x73, 0x65, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
50191
  0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x99, 0xDA, 0x88, 0xA6, 0xD3, 
50192
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x0F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
50193
  0xD1, 0x28, 0x67, 0x65, 0x6E, 0x73, 0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
50194
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
50195
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x20, 0x61, 
50196
  0x63, 0x72, 0x6F, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x74, 0x69, 0x6D, 
50197
  0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x69, 0x74, 
50198
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x64, 
50199
  0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 
50200
  0x64, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
50201
  0x6C, 0x73, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
50202
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6E, 
50203
  0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 
50204
  0x6F, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 
50205
  0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
50206
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x5C, 0xDA, 0x88, 0xA7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50207
  0xDA, 0x8E, 0xBC, 0x82, 0x1F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x49, 0x28, 0x70, 0x72, 0x69, 0x6E, 
50208
  0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x76, 
50209
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 
50210
  0x73, 0x6F, 0x6C, 0x65, 0x20, 0x28, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 
50211
  0x75, 0x74, 0x29, 0x2E, 0x20, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 
50212
  0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x69, 
50213
  0x6E, 0x67, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 
50214
  0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x2E, 0x20, 0x41, 0x66, 0x74, 
50215
  0x65, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
50216
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 
50217
  0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 
50218
  0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
50219
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 
50220
  0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 
50221
  0x64, 0x65, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x74, 
50222
  0x6F, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
50223
  0x73, 0x20, 0x74, 0x6F, 0x2E, 0x20, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, 0x20, 0x60, 0x28, 
50224
  0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 
50225
  0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 
50226
  0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 
50227
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
50228
  0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x90, 0xDA, 0x88, 0xA8, 0xD3, 0x03, 0xDA, 0x03, 
50229
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xA5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 0x62, 
50230
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 
50231
  0x33, 0x32, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 
50232
  0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
50233
  0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
50234
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x66, 0x6C, 0x6F, 
50235
  0x61, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
50236
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 
50237
  0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
50238
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
50239
  0xDA, 0x08, 0xDA, 0x88, 0xA9, 0xDA, 0x88, 0xAA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50240
  0x90, 0x8E, 0x87, 0x2E, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x01, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x63, 
50241
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x65, 0x67, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6D, 
50242
  0x70, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x6F, 0x75, 0x72, 
50243
  0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
50244
  0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x3C, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 
50245
  0x65, 0x67, 0x3E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 
50246
  0x70, 0x65, 0x65, 0x64, 0x20, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 
50247
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x70, 0x65, 0x67, 
50248
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x6D, 0x75, 
50249
  0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x57, 0x69, 
50250
  0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x28, 0x64, 0x79, 
50251
  0x6E, 0x20, 0x3A, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x29, 0x60, 
50252
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 
50253
  0x68, 0x65, 0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
50254
  0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 
50255
  0x69, 0x73, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x70, 0x65, 
50256
  0x67, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xAB, 
50257
  0xDA, 0x88, 0xAC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x0C, 0x01, 0xDA, 
50258
  0x06, 0xCE, 0x52, 0x28, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x69, 
50259
  0x6D, 0x61, 0x67, 0x65, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 
50260
  0x73, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
50261
  0x60, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 
50262
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
50263
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x3F, 0xDA, 0x88, 0xAD, 0xD3, 0x04, 0xDA, 
50264
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x3D, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x57, 0x68, 0x65, 
50265
  0x6E, 0x20, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x74, 0x68, 0x72, 
50266
  0x65, 0x61, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x74, 0x68, 
50267
  0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
50268
  0x20, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x6F, 
50269
  0x6E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 
50270
  0x6C, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0xAE, 0xDA, 0x88, 0xAF, 0xD3, 0x03, 
50271
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x88, 0x36, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8A, 0x28, 
50272
  0x6F, 0x73, 0x2F, 0x74, 0x6F, 0x75, 0x63, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 
50273
  0x70, 0x74, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x74, 0x69, 0x6D, 
50274
  0x65, 0x29, 0x0A, 0x0A, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
50275
  0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 
50276
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 
50277
  0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x42, 0x79, 
50278
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 
50279
  0x69, 0x6D, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
50280
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xB0, 0xDA, 0x88, 
50281
  0xB1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0xA1, 0x01, 0xDA, 0x06, 0xCE, 
50282
  0x80, 0xBB, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x69, 0x6E, 
50283
  0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 
50284
  0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6B, 0x65, 0x79, 
50285
  0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
50286
  0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
50287
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2C, 0x20, 
50288
  0x61, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 
50289
  0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x2E, 0x0A, 0x57, 0x69, 
50290
  0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x61, 0x74, 0x20, 0x74, 
50291
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2E, 
50292
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x20, 
50293
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 
50294
  0x88, 0xB2, 0xDA, 0x88, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x84, 
50295
  0x46, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x2B, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x77, 
50296
  0x68, 0x65, 0x72, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
50297
  0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
50298
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
50299
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50300
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 
50301
  0x72, 0x73, 0x65, 0x72, 0x27, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 
50302
  0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x69, 
50303
  0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 
50304
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
50305
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
50306
  0x72, 0x20, 0x69, 0x73, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 
50307
  0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x49, 0x66, 
50308
  0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
50309
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
50310
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 
50311
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
50312
  0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
50313
  0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
50314
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xB5, 0xDA, 0x88, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50315
  0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x9B, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x65, 0x70, 0x72, 0x69, 
50316
  0x6E, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 
50317
  0x6B, 0x65, 0x20, 0x60, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 
50318
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 
50319
  0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x64, 0xDA, 
50320
  0x88, 0xB7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x84, 0x2D, 0x01, 0xDA, 
50321
  0x06, 0xCE, 0x81, 0x28, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 0x64, 
50322
  0x75, 0x63, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
50323
  0x77, 0x72, 0x61, 0x70, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x74, 
50324
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 
50325
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 
50326
  0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 
50327
  0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x76, 
50328
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
50329
  0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
50330
  0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x74, 
50331
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x49, 
50332
  0x66, 0x20, 0x60, 0x77, 0x72, 0x61, 0x70, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 
50333
  0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
50334
  0x61, 0x20, 0x31, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 
50335
  0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x72, 0x61, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65, 
50336
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x75, 
50337
  0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
50338
  0x66, 0x6F, 0x72, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6D, 0x61, 0x70, 0x70, 0x69, 
50339
  0x6E, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x12, 
50340
  0xDA, 0x88, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xC7, 0x01, 0xDA, 
50341
  0x06, 0xCE, 0x81, 0xFB, 0x28, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 
50342
  0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
50343
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x79, 
50344
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x76, 
50345
  0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 
50346
  0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 
50347
  0x6E, 0x64, 0x60, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6F, 
50348
  0x6E, 0x6C, 0x79, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
50349
  0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 
50350
  0x6F, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 
50351
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 
50352
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 
50353
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x0A, 0x69, 
50354
  0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 0x73, 
50355
  0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
50356
  0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 
50357
  0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 0x20, 0x61, 0x72, 
50358
  0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 
50359
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
50360
  0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
50361
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
50362
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 
50363
  0x72, 0x65, 0x64, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 
50364
  0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x61, 
50365
  0x6C, 0x6C, 0x65, 0x64, 0x20, 0x61, 0x73, 0x0A, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x74, 0x69, 0x6D, 
50366
  0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 
50367
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 0x74, 
50368
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 
50369
  0x63, 0x68, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x49, 0x66, 
50370
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 
50371
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, 0x6D, 0x70, 0x74, 
50372
  0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 
50373
  0x08, 0xDA, 0x88, 0xB9, 0xDA, 0x88, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
50374
  0x80, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 0x65, 
50375
  0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x73, 0x65, 0x65, 0x64, 0x29, 0x0A, 0x0A, 0x53, 
50376
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
50377
  0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
50378
  0x72, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x20, 0x60, 0x73, 0x65, 
50379
  0x65, 0x64, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 
50380
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 0x75, 
50381
  0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xC8, 0xDA, 0x87, 0x12, 0xD3, 0x03, 0xDA, 
50382
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1F, 0x28, 0x64, 
50383
  0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 
50384
  0x70, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x20, 
50385
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x66, 0x6F, 0x72, 
50386
  0x6D, 0x61, 0x74, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
50387
  0x74, 0x6F, 0x20, 0x77, 0x72, 0x61, 0x70, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 
50388
  0x6E, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2E, 0x20, 0x44, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 
50389
  0x6E, 0x67, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 
50390
  0x65, 0x20, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x0A, 0x6F, 0x72, 0x20, 0x61, 
50391
  0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x64, 
50392
  0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 
50393
  0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6E, 0x67, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x6C, 
50394
  0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 
50395
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 
50396
  0x6F, 0x20, 0x62, 0x65, 0x0A, 0x61, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 
50397
  0x65, 0x64, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 
50398
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x63, 
50399
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 
50400
  0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
50401
  0x86, 0xF9, 0xDA, 0x88, 0xC9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 
50402
  0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x61, 0x73, 0x6D, 0x2E, 0x63, 0x84, 0x1A, 0x01, 0xDA, 
50403
  0x06, 0xCE, 0x80, 0xF0, 0x28, 0x61, 0x73, 0x6D, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 
50404
  0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
50405
  0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
50406
  0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 
50407
  0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 
50408
  0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 
50409
  0x61, 0x78, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 
50410
  0x62, 0x6C, 0x79, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
50411
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x65, 
50412
  0x62, 0x73, 0x69, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
50413
  0x64, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x0A, 0x74, 0x6F, 0x20, 
50414
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
50415
  0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 
50416
  0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x0A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
50417
  0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 
50418
  0x62, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xCA, 0xDA, 0x85, 0xAE, 0xD3, 0x03, 0xDA, 0x03, 
50419
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 0x4A, 0x28, 0x63, 0x6F, 0x6D, 
50420
  0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
50421
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
50422
  0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 
50423
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 
50424
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xAC, 0xDA, 0x88, 0xCB, 0xD3, 0x03, 
50425
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x61, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x6D, 
50426
  0x61, 0x74, 0x68, 0x2F, 0x66, 0x72, 0x65, 0x78, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
50427
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 
50428
  0x20, 0x28, 0x6D, 0x61, 0x6E, 0x74, 0x69, 0x73, 0x73, 0x61, 0x2C, 0x20, 0x65, 0x78, 0x70, 0x6F, 
50429
  0x6E, 0x65, 0x6E, 0x74, 0x29, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
50430
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xCC, 0xDA, 0x88, 0xCD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50431
  0x00, 0xDA, 0x8E, 0x86, 0x8C, 0xB5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x89, 0x28, 0x65, 0x76, 0x2F, 
50432
  0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 
50433
  0x29, 0x0A, 0x0A, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x61, 0x20, 0x73, 0x75, 0x73, 0x70, 
50434
  0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 
50435
  0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x20, 0x44, 
50436
  0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x63, 
50437
  0x65, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x72, 0x65, 
50438
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 
50439
  0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 
50440
  0x74, 0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xD1, 0xDA, 0x88, 0xCE, 0xD3, 0x03, 0xDA, 
50441
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xF2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 0x28, 0x74, 
50442
  0x68, 0x61, 0x77, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x61, 0x77, 0x20, 0x61, 0x6E, 
50443
  0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x74, 
50444
  0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 
50445
  0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x2C, 0x20, 0x6D, 0x61, 
50446
  0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
50447
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x43, 
50448
  0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 0x73, 0x2C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 
50449
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x0A, 0x74, 0x79, 
50450
  0x70, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 
50451
  0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x77, 
50452
  0x65, 0x64, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
50453
  0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0xDA, 0x08, 0xDA, 0x88, 
50454
  0xCF, 0xDA, 0x82, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x51, 0x01, 
50455
  0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0x20, 0x78, 0x20, 0x26, 
50456
  0x6F, 0x70, 0x74, 0x20, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x29, 0x0A, 
50457
  0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x69, 
50458
  0x6E, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 
50459
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 
50460
  0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 0x0A, 
50461
  0x53, 0x65, 0x65, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x60, 0x20, 0x64, 0x6F, 0x63, 0x73, 
50462
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x20, 0x6F, 0x6E, 0x20, 0x60, 0x6F, 0x6E, 
50463
  0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x93, 0xDA, 
50464
  0x88, 0xD2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x80, 0x99, 0x01, 0xDA, 
50465
  0x06, 0xCE, 0x82, 0xD5, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x70, 
50466
  0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x62, 0x75, 
50467
  0x66, 0x66, 0x65, 0x72, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 
50468
  0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 
50469
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x6F, 
50470
  0x72, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 
50471
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 
50472
  0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x69, 0x6E, 
50473
  0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 
50474
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
50475
  0x6C, 0x65, 0x20, 0x69, 0x6E, 0x2E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 
50476
  0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 
50477
  0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 
50478
  0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6C, 0x61, 
50479
  0x67, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x63, 
50480
  0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 0x2C, 
50481
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x74, 
50482
  0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
50483
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 
50484
  0x64, 0x6C, 0x65, 0x2E, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 
50485
  0x0A, 0x0A, 0x2A, 0x20, 0x72, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x65, 
50486
  0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
50487
  0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x77, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
50488
  0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
50489
  0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x61, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 
50490
  0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 
50491
  0x46, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
50492
  0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x6C, 0x61, 
50493
  0x67, 0x73, 0x2C, 0x20, 0x30, 0x20, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6F, 0x66, 
50494
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x66, 
50495
  0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 
50496
  0x6E, 0x64, 0x65, 0x64, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x62, 0x20, 0x2D, 0x20, 0x6F, 0x70, 0x65, 
50497
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x69, 
50498
  0x6E, 0x61, 0x72, 0x79, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x72, 0x61, 0x74, 0x68, 0x65, 
50499
  0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 
50500
  0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x2B, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 
50501
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 
50502
  0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x69, 
50503
  0x6E, 0x67, 0x20, 0x69, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x6E, 0x20, 0x2D, 0x20, 0x65, 0x72, 0x72, 
50504
  0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x63, 
50505
  0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 0x20, 
50506
  0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
50507
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x66, 0x6F, 
50508
  0x70, 0x65, 0x6E, 0x20, 0x28, 0x3C, 0x73, 0x74, 0x64, 0x69, 0x6F, 0x2E, 0x68, 0x3E, 0x2C, 0x20, 
50509
  0x43, 0x39, 0x39, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 
50510
  0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x46, 0xDA, 0x88, 
50511
  0xD3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
50512
  0x72, 0x65, 0x2F, 0x69, 0x6E, 0x74, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2E, 0x63, 0x80, 0xD0, 0x01, 
50513
  0xDA, 0x06, 0xCE, 0x73, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 
50514
  0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 
50515
  0x72, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0x20, 0x6F, 0x72, 
50516
  0x20, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x75, 
50517
  0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 
50518
  0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x75, 0x74, 
50519
  0x20, 0x6F, 0x66, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 
50520
  0x20, 0x69, 0x6E, 0x74, 0x36, 0x34, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xD4, 0xDA, 0x88, 0xD5, 0xD3, 
50521
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0xD9, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA1, 
50522
  0x28, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
50523
  0x0A, 0x45, 0x6E, 0x74, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 
50524
  0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x43, 0x4C, 0x49, 0x20, 0x74, 0x6F, 0x6F, 0x6C, 
50525
  0x2E, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 
50526
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
50527
  0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x0A, 0x61, 0x72, 0x67, 0x75, 0x6D, 
50528
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
50529
  0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 
50530
  0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 0x65, 0x20, 0x74, 
50531
  0x68, 0x65, 0x20, 0x43, 0x4C, 0x49, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 
50532
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xD6, 0xDA, 0x89, 0xC1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50533
  0xDA, 0x8E, 0xBC, 0x82, 0xCA, 0x01, 0xDA, 0x06, 0xCE, 0x4A, 0x28, 0x65, 0x66, 0x6C, 0x75, 0x73, 
50534
  0x68, 0x29, 0x0A, 0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 
50535
  0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x69, 0x66, 
50536
  0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 
50537
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x68, 
50538
  0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x16, 0xDA, 0x89, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 
50539
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x83, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x19, 0x54, 0x68, 0x65, 
50540
  0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 
50541
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xEB, 0xDA, 0x89, 0xC3, 0xD3, 0x03, 
50542
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6C, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x63, 0x66, 
50543
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
50544
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 
50545
  0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xC4, 0xDA, 0x89, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 
50546
  0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x0A, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x6D, 0x61, 0x74, 
50547
  0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
50548
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x63, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 
50549
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xC8, 0xDA, 0x89, 0xC9, 0xD3, 0x03, 
50550
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xCC, 0x01, 0xDA, 0x06, 0xCE, 0x39, 0x28, 0x6D, 
50551
  0x65, 0x61, 0x6E, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50552
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 
50553
  0x20, 0x49, 0x66, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
50554
  0x6E, 0x73, 0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xCA, 0xDA, 0x89, 0xD3, 0xD3, 
50555
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x81, 0xFA, 0x01, 0xDA, 0x06, 0xCE, 0x84, 
50556
  0x81, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 
50557
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x65, 0x6E, 
50558
  0x76, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
50559
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 
50560
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x2E, 0x20, 
50561
  0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 
50562
  0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x69, 0x67, 
50563
  0x6E, 0x61, 0x6C, 0x73, 0x20, 0x60, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x60, 0x20, 0x74, 
50564
  0x6F, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 
50565
  0x68, 0x69, 0x6C, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
50566
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
50567
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 
50568
  0x20, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
50569
  0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
50570
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 
50571
  0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
50572
  0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
50573
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 
50574
  0x68, 0x65, 0x20, 0x65, 0x76, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 
50575
  0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x69, 
50576
  0x73, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
50577
  0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 
50578
  0x6F, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 
50579
  0x20, 0x22, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x65, 0x64, 0x22, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
50580
  0x6C, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x69, 
50581
  0x6E, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 
50582
  0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x70, 
50583
  0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 
50584
  0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x73, 0x69, 0x67, 
50585
  0x6D, 0x61, 0x73, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x79, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 
50586
  0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2C, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x28, 0x66, 
50587
  0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x6D, 0x79, 0x66, 0x75, 0x6E, 0x20, 0x3A, 
50588
  0x65, 0x31, 0x32, 0x33, 0x29, 0x0A, 0x0A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x65, 0x72, 
50589
  0x72, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50590
  0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x31, 0x2C, 0x20, 
50591
  0x32, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x33, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 
50592
  0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 
50593
  0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 
50594
  0x63, 0x6B, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 
50595
  0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x64, 0x65, 0x62, 0x75, 
50596
  0x67, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x20, 0x2D, 
50597
  0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 
50598
  0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 
50599
  0x6B, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 
50600
  0x67, 0x6E, 0x61, 0x6C, 0x73, 0x3A, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2B, 0x20, 0x75, 
50601
  0x73, 0x65, 0x72, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x20, 0x2D, 0x20, 
50602
  0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
50603
  0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 
50604
  0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 
50605
  0x3A, 0x77, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x77, 0x61, 0x69, 0x74, 
50606
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x28, 0x75, 0x73, 0x65, 0x72, 0x39, 0x29, 
50607
  0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x6E, 
50608
  0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 
50609
  0x28, 0x75, 0x73, 0x65, 0x72, 0x38, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x30, 0x2D, 0x39, 0x20, 0x2D, 
50610
  0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
50611
  0x63, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x0A, 0x0A, 0x54, 
50612
  0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
50613
  0x65, 0x6E, 0x74, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 
50614
  0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x6C, 
50615
  0x61, 0x67, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6D, 0x75, 0x74, 0x75, 
50616
  0x61, 0x6C, 0x6C, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x66, 
50617
  0x6C, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 
50618
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 
50619
  0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6E, 0x63, 0x65, 
50620
  0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x20, 0x2D, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 
50621
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
50622
  0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
50623
  0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x20, 0x2D, 0x20, 
50624
  0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
50625
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x27, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 
50626
  0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
50627
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 
50628
  0x6C, 0x65, 0xDA, 0x08, 0xDA, 0x80, 0xDC, 0xDA, 0x89, 0xD4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50629
  0x00, 0xDA, 0x04, 0x83, 0x78, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
50630
  0x72, 0x65, 0x3C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 
50631
  0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3C, 0x60, 0x20, 0x62, 0x75, 0x74, 
50632
  0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 
50633
  0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 
50634
  0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 
50635
  0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
50636
  0x89, 0xD5, 0xDA, 0x89, 0xDC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x80, 0x9B, 
50637
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAB, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 
50638
  0x69, 0x6E, 0x74, 0x20, 0x72, 0x6E, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x61, 0x78, 
50639
  0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 
50640
  0x64, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 
50641
  0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, 
50642
  0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x78, 0x20, 0x3E, 0x20, 0x30, 0x20, 0x66, 0x72, 
50643
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x4E, 0x47, 0x2E, 0x20, 0x20, 0x49, 0x66, 0x20, 
50644
  0x6D, 0x61, 0x78, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50645
  0x20, 0x30, 0x2E, 0x20, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x61, 0x78, 0x20, 0x69, 
50646
  0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 
50647
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x32, 0x5E, 0x33, 0x31, 0x20, 0x2D, 0x20, 0x31, 
50648
  0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xDD, 0xDA, 0x89, 0xDE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50649
  0xDA, 0x04, 0x84, 0xB5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB7, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x20, 
50650
  0x6E, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 
50651
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
50652
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x69, 0x6E, 
50653
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 
50654
  0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
50655
  0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
50656
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x0A, 0x72, 0x65, 0x73, 0x70, 0x65, 
50657
  0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6E, 0x60, 0x20, 
50658
  0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x74, 0x61, 0x6B, 
50659
  0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 
50660
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
50661
  0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xDF, 0xDA, 0x89, 0xE8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50662
  0xDA, 0x21, 0x81, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x2C, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 
50663
  0x6F, 0x77, 0x20, 0x61, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50664
  0x20, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 
50665
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xE9, 0xDA, 0x89, 0xEA, 0xD3, 0x03, 0xDA, 
50666
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 0x28, 
50667
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 0x70, 
50668
  0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50669
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 
50670
  0x65, 0x72, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 
50671
  0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
50672
  0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x65, 
50673
  0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x73, 0x65, 0x6C, 
50674
  0x76, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x2E, 0x20, 0x44, 0x6F, 
50675
  0x65, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 
50676
  0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 
50677
  0x2C, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x6E, 0x69, 
50678
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
50679
  0x89, 0xEB, 0xDA, 0x89, 0xEC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xB1, 
50680
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8F, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
50681
  0x74, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6C, 
50682
  0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 
50683
  0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
50684
  0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x61, 0x74, 0x20, 0x77, 0x68, 0x69, 
50685
  0x63, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x6C, 
50686
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x62, 0x75, 0x74, 
50687
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 
50688
  0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x61, 0x73, 0x20, 0x6E, 0x6F, 
50689
  0x72, 0x6D, 0x61, 0x6C, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x7E, 0xDA, 0x88, 
50690
  0x8E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xCD, 0x01, 0xDA, 0x06, 0xCE, 
50691
  0x80, 0xB3, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x6F, 
50692
  0x70, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
50693
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x65, 
50694
  0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 
50695
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 
50696
  0x64, 0x20, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x62, 0x65, 0x66, 
50697
  0x6F, 0x72, 0x65, 0x3F, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 
50698
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 
50699
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x65, 0x6C, 0x65, 
50700
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 
50701
  0x2C, 0x0A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x73, 
50702
  0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x8C, 0xDA, 0x89, 0xED, 0xD3, 0x03, 0xDA, 
50703
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xED, 0x01, 0xDA, 0x06, 0xCE, 0x67, 0x28, 0x69, 0x6E, 
50704
  0x74, 0x65, 0x72, 0x6C, 0x65, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x73, 0x29, 
50705
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
50706
  0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
50707
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 
50708
  0x20, 0x63, 0x6F, 0x6C, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
50709
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 
50710
  0x65, 0x74, 0x63, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xEE, 0xDA, 0x89, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 
50711
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x75, 0x81, 0x2D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE9, 0x28, 0x73, 
50712
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x20, 0x73, 0x74, 0x20, 
50713
  0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 
50714
  0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
50715
  0x20, 0x60, 0x73, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 0x6F, 
50716
  0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
50717
  0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 0x49, 
50718
  0x66, 0x20, 0x60, 0x73, 0x74, 0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
50719
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 
50720
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 
50721
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 
50722
  0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 
50723
  0x68, 0x65, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 
50724
  0x6F, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
50725
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
50726
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xD1, 0xDA, 0x89, 0xF2, 0xD3, 
50727
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 0x41, 
50728
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 
50729
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 
50730
  0x67, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x75, 
50731
  0x65, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 
50732
  0x6E, 0x74, 0x0A, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x20, 0x64, 0x65, 0x70, 0x65, 
50733
  0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x35, 0xDA, 0x89, 
50734
  0xF3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0x77, 0x01, 0xDA, 0x06, 0xCE, 
50735
  0x47, 0x28, 0x6F, 0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 
50736
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x61, 0x62, 0x7C, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 
50737
  0x69, 0x6B, 0x65, 0x20, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x2C, 0x20, 0x62, 0x75, 0x74, 
50738
  0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x73, 0x79, 
50739
  0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x81, 0x3D, 0xDA, 0x89, 0xF4, 
50740
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 0xD0, 0x28, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 
50741
  0x65, 0x20, 0x78, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x6F, 0x70, 
50742
  0x61, 0x67, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x66, 
50743
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 
50744
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
50745
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
50746
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
50747
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 
50748
  0x60, 0x78, 0x60, 0x2E, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
50749
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x61, 
50750
  0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
50751
  0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
50752
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 
50753
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
50754
  0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
50755
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 
50756
  0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 
50757
  0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 
50758
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x73, 
50759
  0x74, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
50760
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x69, 
50761
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 
50762
  0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
50763
  0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x60, 0x66, 0x69, 0x62, 0x65, 0x72, 0x60, 0x2E, 0x20, 
50764
  0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 
50765
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 
50766
  0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 
50767
  0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
50768
  0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
50769
  0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xC9, 0xDA, 0x89, 0xF5, 0xD3, 
50770
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x4F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
50771
  0xA2, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x6B, 0x65, 0x79, 
50772
  0x73, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
50773
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
50774
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x77, 0x65, 0x61, 0x6B, 
50775
  0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6B, 
50776
  0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x72, 
50777
  0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 
50778
  0x75, 0x65, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 
50779
  0x60, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 
50780
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 
50781
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xF6, 0xDA, 0x89, 0xF7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50782
  0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x07, 0x01, 0xDA, 0x06, 0xCE, 0x66, 0x28, 0x64, 0x79, 0x6E, 
50783
  0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 
50784
  0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 
50785
  0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
50786
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 
50787
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x28, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x29, 0x20, 0x69, 0x66, 
50788
  0x20, 0x6E, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
50789
  0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x26, 0xDA, 0x89, 0xF8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50790
  0x00, 0xDA, 0x4C, 0x85, 0xCA, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0xED, 0x28, 0x6F, 0x73, 0x2F, 0x73, 
50791
  0x70, 0x61, 0x77, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 
50792
  0x6C, 0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 
50793
  0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x6F, 0x6E, 0x20, 
50794
  0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
50795
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 0x6F, 
50796
  0x63, 0x65, 0x73, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 
50797
  0x73, 0x65, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x61, 0x77, 
50798
  0x6E, 0x65, 0x64, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 
50799
  0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 
50800
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x60, 0x6F, 0x73, 0x2F, 
50801
  0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x65, 
50802
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
50803
  0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 
50804
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 0x55, 0x6E, 0x6C, 0x69, 0x6B, 
50805
  0x65, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x60, 0x2C, 0x20, 
50806
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x3A, 0x70, 0x69, 0x70, 0x65, 
50807
  0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 
50808
  0x72, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50809
  0x3A, 0x65, 0x72, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x65, 0x6E, 
50810
  0x76, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 
50811
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 
50812
  0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 
50813
  0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 
50814
  0x61, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x69, 0x6E, 0x20, 0x66, 0x69, 
50815
  0x65, 0x6C, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 
50816
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
50817
  0x3A, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x66, 0x69, 
50818
  0x65, 0x6C, 0x64, 0x73, 0x2E, 0x20, 0x4F, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x57, 0x69, 0x6E, 
50819
  0x64, 0x6F, 0x77, 0x73, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2C, 0x20, 0x74, 0x68, 
50820
  0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x50, 0x49, 0x44, 
50821
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
50822
  0x3A, 0x70, 0x69, 0x64, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
50823
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 
50824
  0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 
50825
  0x67, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
50826
  0x20, 0x28, 0x65, 0x2E, 0x67, 0x2E, 0x20, 0x62, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 
50827
  0x67, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0x60, 
50828
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 
50829
  0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x76, 0x61, 
50830
  0x6C, 0x75, 0x65, 0x29, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x63, 0x72, 
50831
  0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x20, 0x70, 0x72, 
50832
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 
50833
  0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
50834
  0x6C, 0x65, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 
50835
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
50836
  0x3A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x69, 0x65, 
50837
  0x6C, 0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x69, 
50838
  0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x73, 0x20, 0x27, 0x78, 0x27, 0x2C, 0x20, 0x61, 0x20, 0x6E, 
50839
  0x6F, 0x6E, 0x2D, 0x7A, 0x65, 0x72, 0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 
50840
  0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x61, 0x20, 0x77, 
50841
  0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 
50842
  0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 
50843
  0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3A, 0x70, 0x69, 0x70, 
50844
  0x65, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 
50845
  0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x6D, 0x61, 0x6E, 
50846
  0x79, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x64, 0x65, 
50847
  0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 
50848
  0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 
50849
  0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 
50850
  0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 
50851
  0x79, 0x20, 0x60, 0x3A, 0x70, 0x69, 0x70, 0x65, 0x60, 0x20, 0x28, 0x65, 0x69, 0x74, 0x68, 0x65, 
50852
  0x72, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x6F, 
50853
  0x72, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 
50854
  0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x60, 0x29, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 
50855
  0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
50856
  0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 
50857
  0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 
50858
  0x20, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x20, 
50859
  0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 
50860
  0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 0x63, 
50861
  0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 
50862
  0x41, 0x73, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x73, 
50863
  0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x70, 0x61, 
50864
  0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x3A, 0x65, 0x72, 0x72, 0x60, 0x20, 0x63, 
50865
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
50866
  0x64, 0x20, 0x60, 0x3A, 0x6F, 0x75, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x64, 0x69, 
50867
  0x72, 0x65, 0x63, 0x74, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x73, 
50868
  0x74, 0x64, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 
50869
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xF9, 0xDA, 0x89, 0xFA, 
50870
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x0C, 0x01, 0xDA, 0x06, 0xCE, 
50871
  0x33, 0x28, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
50872
  0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x6F, 
50873
  0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 
50874
  0x61, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xFB, 0xDA, 0x89, 0xFC, 0xD3, 0x04, 0xDA, 0x03, 
50875
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xF2, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x0A, 0x28, 0x63, 0x6F, 
50876
  0x6E, 0x64, 0x20, 0x26, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 
50877
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 
50878
  0x73, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x75, 
50879
  0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 
50880
  0x72, 0x75, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x69, 0x73, 
50881
  0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 
50882
  0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
50883
  0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x6F, 0x64, 0x79, 
50884
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 
50885
  0x6E, 0x0A, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
50886
  0x66, 0x6F, 0x72, 0x6D, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x66, 0x6F, 
50887
  0x72, 0x6D, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x2C, 
50888
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
50889
  0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x69, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 
50890
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 
50891
  0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
50892
  0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x89, 0xFD, 0xDA, 
50893
  0x8A, 0x02, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x12, 0x01, 0xDA, 0x06, 
50894
  0xCE, 0x80, 0xBC, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x70, 
50895
  0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 
50896
  0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x6D, 
50897
  0x6F, 0x76, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x72, 0x6F, 
50898
  0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 
50899
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
50900
  0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x79, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 
50901
  0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x6F, 0x72, 0x74, 
50902
  0x20, 0x6F, 0x6E, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 
50903
  0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
50904
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
50905
  0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0xDA, 
50906
  0x08, 0xDA, 0x8A, 0x03, 0xDA, 0x8A, 0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
50907
  0x86, 0x85, 0x13, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC2, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 
50908
  0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x69, 
50909
  0x6D, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 
50910
  0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 
50911
  0x20, 0x41, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 
50912
  0x6E, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
50913
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x61, 
50914
  0x72, 0x65, 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x72, 0x65, 
50915
  0x61, 0x64, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
50916
  0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 
50917
  0x65, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 
50918
  0x66, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 
50919
  0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x14, 
50920
  0xDA, 0x8A, 0x15, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0xA9, 0x01, 0xDA, 
50921
  0x06, 0xCE, 0x81, 0x41, 0x28, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 0x69, 
50922
  0x6E, 0x67, 0x20, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x26, 0x20, 
50923
  0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 
50924
  0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x6F, 0x6D, 0x65, 
50925
  0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
50926
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 
50927
  0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0x65, 0x64, 0x20, 0x75, 
50928
  0x70, 0x0A, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
50929
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 
50930
  0x2E, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 0x62, 
50931
  0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 
50932
  0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x74, 0x6F, 0x72, 0x60, 0x2C, 0x20, 0x61, 
50933
  0x6E, 0x64, 0x0A, 0x60, 0x64, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 
50934
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x61, 
50935
  0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 
50936
  0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 
50937
  0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x64, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, 
50938
  0x0A, 0x28, 0x60, 0x64, 0x74, 0x6F, 0x72, 0x60, 0x29, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 
50939
  0x65, 0x6E, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x3A, 0x63, 
50940
  0x6C, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6F, 
50941
  0x75, 0x72, 0x63, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x16, 0xDA, 0x88, 0x1C, 
50942
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
50943
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 
50944
  0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, 0x71, 
50945
  0x75, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 
50946
  0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xAA, 0xDA, 0x8A, 0x19, 0xD3, 
50947
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0xBD, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
50948
  0x77, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0x20, 0x64, 
50949
  0x65, 0x6C, 0x69, 0x6D, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 
50950
  0x61, 0x72, 0x74, 0x20, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x53, 0x70, 0x6C, 0x69, 
50951
  0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 
50952
  0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 
50953
  0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 
50954
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 
50955
  0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 
50956
  0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
50957
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
50958
  0x20, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 
50959
  0x6D, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 0x69, 
50960
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 
50961
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
50962
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x65, 0x6C, 
50963
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x72, 
50964
  0x74, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 
50965
  0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
50966
  0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x28, 0x69, 0x66, 
50967
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x29, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50968
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6D, 
50969
  0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6C, 0x69, 0x6D, 0x69, 0x74, 
50970
  0x60, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x70, 0x72, 
50971
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xE8, 0xDA, 0x80, 0xBD, 
50972
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x1C, 0x03, 0xDA, 0x06, 0xCE, 0x81, 
50973
  0x69, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 
50974
  0x6E, 0x65, 0x20, 0x73, 0x65, 0x63, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
50975
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 
50976
  0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 
50977
  0x2C, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
50978
  0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 0x6E, 
50979
  0x63, 0x65, 0x6C, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x20, 0x28, 0x72, 0x6F, 
50980
  0x6F, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 
50981
  0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 
50982
  0x27, 0x73, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 
50983
  0x61, 0x72, 0x74, 0x0A, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x27, 0x73, 0x20, 0x66, 0x69, 0x62, 
50984
  0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x69, 0x6E, 0x67, 0x20, 0x69, 
50985
  0x74, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 
50986
  0x6F, 0x70, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x63, 
50987
  0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 
50988
  0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x27, 0x73, 
50989
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 
50990
  0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 
50991
  0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x73, 0x65, 
50992
  0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2E, 0x0A, 0x0A, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x69, 0x73, 
50993
  0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
50994
  0x61, 0x6E, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 
50995
  0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
50996
  0x8A, 0x1A, 0xDA, 0x85, 0x08, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x8A, 
50997
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBF, 0x28, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 0x6E, 0x74, 
50998
  0x6F, 0x20, 0x74, 0x61, 0x62, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 
50999
  0x4D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 
51000
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 
51001
  0x6E, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 
51002
  0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 
51003
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6F, 
51004
  0x6E, 0x65, 0x0A, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 
51005
  0x20, 0x60, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6C, 
51006
  0x61, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 
51007
  0x61, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 
51008
  0x20, 0x6F, 0x6E, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 
51009
  0x74, 0x61, 0x62, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x04, 0xDA, 0x8A, 0x1F, 0xD3, 0x03, 0xDA, 
51010
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x21, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8B, 0x41, 0x20, 
51011
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 
51012
  0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x73, 0x20, 0x74, 0x6F, 
51013
  0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
51014
  0x6E, 0x73, 0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6C, 
51015
  0x65, 0x74, 0x73, 0x20, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x20, 0x61, 0x6E, 
51016
  0x64, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 
51017
  0x6D, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6B, 
51018
  0x69, 0x6E, 0x64, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x73, 
51019
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x37, 0xDA, 0x8A, 
51020
  0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x83, 0xC2, 0x01, 0xDA, 0x06, 
51021
  0xCE, 0x80, 0xF2, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 
51022
  0x74, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 
51023
  0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
51024
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 
51025
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
51026
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 
51027
  0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x70, 0x75, 0x6C, 
51028
  0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 
51029
  0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 
51030
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 
51031
  0x77, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 
51032
  0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 
51033
  0x6F, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x75, 0x70, 
51034
  0x6C, 0x65, 0x73, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 
51035
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 
51036
  0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x21, 0xDA, 0x8A, 0x22, 0xD3, 0x03, 0xDA, 
51037
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x85, 0x1E, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x83, 0x28, 
51038
  0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 0x68, 
51039
  0x61, 0x6E, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 
51040
  0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x41, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x20, 0x63, 
51041
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 
51042
  0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x72, 0x65, 
51043
  0x61, 0x64, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x74, 
51044
  0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 
51045
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
51046
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x23, 0xDA, 0x7F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51047
  0xDA, 0x04, 0x85, 0x61, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB5, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x2D, 
51048
  0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x21, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x61, 
51049
  0x66, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6B, 0x65, 0x65, 
51050
  0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 
51051
  0x66, 0x20, 0x60, 0x61, 0x66, 0x74, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 
51052
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x65, 
51053
  0x72, 0x63, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 
51054
  0x65, 0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 
51055
  0x73, 0x65, 0x72, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x63, 0x74, 0x69, 0x63, 0x20, 
51056
  0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 
51057
  0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
51058
  0x20, 0x61, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 0xDA, 
51059
  0x08, 0xDA, 0x71, 0xDA, 0x83, 0xF6, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x3E, 0x20, 0x26, 
51060
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 
51061
  0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6E, 0x64, 0x69, 
51062
  0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51063
  0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 
51064
  0xF8, 0xDA, 0x8A, 0x24, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x34, 0x01, 
51065
  0xDA, 0x06, 0xCE, 0x63, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x78, 
51066
  0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
51067
  0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 
51068
  0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 
51069
  0x6E, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x78, 
51070
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 
51071
  0x6E, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x25, 0xDA, 0x83, 0x50, 0xD3, 
51072
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x69, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x28, 0x6B, 
51073
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 
51074
  0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 
51075
  0x6F, 0x72, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x4D, 0xDA, 0x8A, 0x11, 0xD3, 0x03, 0xDA, 0x03, 
51076
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x92, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x81, 0x28, 0x66, 0x69, 
51077
  0x6E, 0x64, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 
51078
  0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 
51079
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 
51080
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 
51081
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x61, 0x74, 0x69, 0x73, 
51082
  0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
51083
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 
51084
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x08, 
51085
  0xDA, 0x8A, 0x0F, 0xDA, 0x8A, 0x26, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x80, 
51086
  0xC3, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB4, 0x28, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0x29, 
51087
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x53, 0x41, 0x20, 
51088
  0x74, 0x68, 0x61, 0x74, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 
51089
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
51090
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 
51091
  0x3A, 0x78, 0x38, 0x36, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x78, 0x36, 0x34, 0x0A, 0x0A, 0x2A, 0x20, 
51092
  0x3A, 0x61, 0x72, 0x6D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x61, 0x72, 0x63, 0x68, 0x36, 0x34, 
51093
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x69, 0x73, 0x63, 0x76, 0x33, 0x32, 0x0A, 0x0A, 0x2A, 0x20, 
51094
  0x3A, 0x72, 0x69, 0x73, 0x63, 0x76, 0x36, 0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x70, 0x61, 
51095
  0x72, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x61, 0x73, 0x6D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
51096
  0x73, 0x33, 0x39, 0x30, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x33, 0x39, 0x30, 0x78, 0x0A, 0x0A, 
51097
  0x2A, 0x20, 0x3A, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0A, 0xDA, 0x08, 0xDA, 0x89, 0x11, 
51098
  0xDA, 0x8A, 0x27, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x40, 0x01, 
51099
  0xDA, 0x06, 0xCE, 0x44, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 
51100
  0x72, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x41, 
51101
  0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6C, 0x6F, 
51102
  0x63, 0x6B, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 
51103
  0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x22, 0xDA, 0x82, 0xF7, 
51104
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x57, 0x03, 0xDA, 0x06, 0xCE, 0x4D, 
51105
  0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x77, 0x68, 0x6F, 0x69, 0x73, 0x20, 0x70, 0x61, 
51106
  0x74, 0x68, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 
51107
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20, 0x6F, 
51108
  0x75, 0x74, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 
51109
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
51110
  0x8A, 0x28, 0xDA, 0x8A, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x12, 0x73, 0x72, 
51111
  0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2E, 0x63, 
51112
  0x84, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xB9, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
51113
  0x20, 0x61, 0x73, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x73, 0x6F, 
51114
  0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6D, 
51115
  0x70, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 
51116
  0x74, 0x20, 0x53, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x54, 0x72, 0x65, 0x65, 0x20, 0x28, 0x61, 
51117
  0x73, 0x74, 0x29, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
51118
  0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x50, 0x61, 0x69, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
51119
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 
51120
  0x69, 0x74, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 0x63, 
51121
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 0x70, 
51122
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 
51123
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
51124
  0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
51125
  0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x20, 0x61, 0x73, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 
51126
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x74, 
51127
  0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x3A, 
51128
  0x6C, 0x69, 0x6E, 0x65, 0x2C, 0x20, 0x3A, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2C, 0x20, 0x61, 
51129
  0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6F, 0x6D, 
51130
  0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0x20, 
51131
  0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x60, 0x20, 0x61, 0x72, 0x72, 
51132
  0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x6C, 0x69, 0x6E, 
51133
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x77, 0x69, 
51134
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x74, 
51135
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x45, 0x61, 0x63, 
51136
  0x68, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
51137
  0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
51138
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x6C, 0x69, 
51139
  0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x60, 
51140
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x48, 0xDA, 0x82, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51141
  0xDA, 0x04, 0x90, 0xC5, 0x03, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
51142
  0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x3F, 0x20, 0x62, 0x75, 0x6E, 0x64, 
51143
  0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 
51144
  0x69, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 
51145
  0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x2F, 0xDA, 0x8A, 
51146
  0x31, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x73, 0x01, 0xDA, 0x06, 0xCE, 
51147
  0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 
51148
  0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
51149
  0x60, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 
51150
  0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
51151
  0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 
51152
  0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 
51153
  0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x32, 0xDA, 0x8A, 0x39, 0xD3, 0x02, 0xDA, 0x06, 
51154
  0xCE, 0x32, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x64, 0x20, 0x69, 0x64, 0x65, 0x6E, 
51155
  0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 
51156
  0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x67, 
51157
  0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x14, 0xDA, 0x8A, 0x3A, 0xD3, 0x02, 0xDA, 0x06, 
51158
  0xCE, 0x3F, 0x28, 0x3C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 
51159
  0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x73, 
51160
  0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 
51161
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 
51162
  0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xF4, 0xDA, 0x85, 0x33, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51163
  0xDA, 0x04, 0x89, 0xE4, 0x01, 0xDA, 0x06, 0xCE, 0x52, 0x28, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 
51164
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x66, 
51165
  0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 
51166
  0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x68, 
51167
  0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 
51168
  0x70, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x29, 
51169
  0xDA, 0x8A, 0x3B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x80, 0xB9, 0x01, 
51170
  0xDA, 0x06, 0xCE, 0x80, 0x86, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0x20, 
51171
  0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 
51172
  0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 
51173
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
51174
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 
51175
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 
51176
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 
51177
  0x2E, 0x20, 0x4D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
51178
  0x6E, 0x70, 0x75, 0x74, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x7D, 
51179
  0xDA, 0x8A, 0x3C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x82, 0x01, 0xDA, 
51180
  0x06, 0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x20, 0x26, 0x20, 0x78, 
51181
  0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
51182
  0x66, 0x20, 0x60, 0x3E, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 
51183
  0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 
51184
  0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 
51185
  0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
51186
  0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x3D, 0xDA, 0x8A, 0x44, 0xD3, 0x03, 
51187
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0xB2, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 
51188
  0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
51189
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
51190
  0x62, 0x79, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2C, 0x20, 
51191
  0x6F, 0x72, 0x20, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x2E, 0xDA, 0x08, 
51192
  0xDA, 0x40, 0xDA, 0x8A, 0x45, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 
51193
  0x7F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x54, 0x28, 0x73, 0x63, 0x61, 0x6E, 0x2D, 0x6E, 0x75, 0x6D, 
51194
  0x62, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x61, 0x73, 
51195
  0x65, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
51196
  0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 
51197
  0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
51198
  0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 
51199
  0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
51200
  0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 
51201
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
51202
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
51203
  0x61, 0x74, 0x20, 0x61, 0x73, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 
51204
  0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 
51205
  0x64, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
51206
  0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 
51207
  0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
51208
  0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x62, 
51209
  0x61, 0x73, 0x65, 0x20, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 
51210
  0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6E, 0x6F, 0x20, 
51211
  0x72, 0x61, 0x64, 0x69, 0x78, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 
51212
  0x69, 0x73, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 
51213
  0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 
51214
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x3A, 
51215
  0xDA, 0x8A, 0x46, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x6E, 0x01, 
51216
  0xDA, 0x06, 0xCE, 0x80, 0xC5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x20, 
51217
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 
51218
  0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 
51219
  0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 
51220
  0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 
51221
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
51222
  0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x69, 0x76, 0x65, 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 
51223
  0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 0x61, 0x72, 
51224
  0x6C, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 
51225
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 
51226
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
51227
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 
51228
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x47, 0xDA, 
51229
  0x8A, 0x48, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x87, 0x12, 0x01, 0xDA, 
51230
  0x06, 0xCE, 0x49, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0x20, 0x70, 0x6F, 0x69, 
51231
  0x6E, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 
51232
  0x72, 0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 
51233
  0x68, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x60, 0x2E, 0x20, 
51234
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 
51235
  0x49, 0xDA, 0x8A, 0x4A, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xF4, 0x01, 
51236
  0xDA, 0x06, 0xCE, 0x5D, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x78, 0x29, 
51237
  0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x73, 0x20, 0x78, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 
51238
  0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
51239
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
51240
  0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 
51241
  0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x75, 0x6E, 0x71, 0x75, 0x6F, 0x74, 0x65, 
51242
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x4B, 0xDA, 0x8A, 0x4D, 0xD3, 0x03, 0xDA, 0x03, 
51243
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x5B, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x65, 0x76, 
51244
  0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 
51245
  0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 
51246
  0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 
51247
  0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 
51248
  0x6B, 0xDA, 0x08, 0xDA, 0x8A, 0x4E, 0xDA, 0x83, 0x18, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51249
  0xDA, 0x04, 0x70, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 0x20, 
51250
  0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 
51251
  0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x16, 0xDA, 
51252
  0x8A, 0x4F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x22, 0x01, 0xDA, 
51253
  0x06, 0xCE, 0x80, 0xD3, 0x28, 0x67, 0x63, 0x73, 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 
51254
  0x61, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x53, 0x65, 
51255
  0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x75, 0x6D, 
51256
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
51257
  0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 
51258
  0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 
51259
  0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x4C, 0x6F, 0x77, 0x20, 
51260
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 
51261
  0x76, 0x61, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x6C, 0x6F, 0x77, 
51262
  0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 
51263
  0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x76, 0x61, 0x6C, 
51264
  0x75, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x66, 0x61, 0x73, 0x74, 
51265
  0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 
51266
  0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x50, 0xDA, 0x8A, 0x51, 0xD3, 
51267
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0xD6, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x82, 
51268
  0x28, 0x6F, 0x73, 0x2F, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0x20, 0x6E, 
51269
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
51270
  0x6F, 0x72, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x62, 0x79, 
51271
  0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x6F, 0x6F, 0x64, 0x20, 0x71, 0x75, 0x61, 0x6C, 
51272
  0x69, 0x74, 0x79, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
51273
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 
51274
  0x4F, 0x53, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
51275
  0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x62, 0x75, 0x66, 
51276
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x52, 0xDA, 0x8A, 0x53, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51277
  0x00, 0xDA, 0x21, 0x81, 0x0C, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
51278
  0x61, 0x74, 0x61, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
51279
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 
51280
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x54, 0xDA, 0x8A, 0x55, 0xD3, 0x03, 0xDA, 
51281
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x5B, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xD4, 0x28, 
51282
  0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
51283
  0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 
51284
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x75, 
51285
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 
51286
  0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 
51287
  0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
51288
  0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 
51289
  0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 
51290
  0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
51291
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 
51292
  0x6F, 0x72, 0x64, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
51293
  0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 
51294
  0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
51295
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 
51296
  0x74, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 
51297
  0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x61, 0x6E, 0x64, 0x20, 
51298
  0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x30, 0x29, 0x2C, 0x20, 0x77, 0x69, 
51299
  0x6C, 0x6C, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x62, 0x79, 
51300
  0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 
51301
  0x61, 0x72, 0x6C, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 
51302
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 
51303
  0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 
51304
  0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 
51305
  0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
51306
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 
51307
  0x74, 0x68, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 
51308
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x69, 0x74, 0x2C, 0x20, 0x6F, 0x72, 0x20, 
51309
  0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
51310
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6C, 
51311
  0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x56, 0xDA, 0x85, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
51312
  0x03, 0x00, 0xDA, 0x04, 0x84, 0x84, 0x01, 0xDA, 0x06, 0xCE, 0x76, 0x28, 0x66, 0x69, 0x6E, 0x64, 
51313
  0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 
51314
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 
51315
  0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 
51316
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 
51317
  0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 
51318
  0x72, 0x75, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 
51319
  0x6C, 0x74, 0x60, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
51320
  0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xB3, 0xDA, 0x8A, 0x57, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51321
  0xDA, 0x8E, 0xBC, 0x83, 0x43, 0x01, 0xDA, 0x06, 0xCE, 0x18, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 
51322
  0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x6C, 
51323
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x58, 0xDA, 0x8A, 0x59, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
51324
  0x00, 0xDA, 0x04, 0x8B, 0x19, 0x01, 0xDA, 0x06, 0xCE, 0x2F, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 
51325
  0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x76, 
51326
  0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
51327
  0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x60, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 
51328
  0x81, 0xA1, 0xDA, 0x80, 0x83, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xED, 
51329
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCB, 0x28, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 
51330
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x72, 0x75, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
51331
  0x66, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x6B, 0x65, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 
51332
  0x70, 0x6C, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
51333
  0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 
51334
  0x74, 0x68, 0x79, 0x2C, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 
51335
  0x65, 0x20, 0x60, 0x74, 0x72, 0x75, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x49, 0x66, 
51336
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x6F, 
51337
  0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x0A, 
51338
  0x74, 0x68, 0x65, 0x20, 0x60, 0x66, 0x61, 0x6C, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 
51339
  0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 
51340
  0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x61, 0x73, 
51341
  0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
51342
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x5A, 0xDA, 0x80, 0xCA, 0xD3, 0x04, 0xDA, 0x03, 
51343
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x6F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 0x28, 0x64, 0x65, 
51344
  0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 
51345
  0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x75, 0x6E, 0x63, 
51346
  0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x66, 0x74, 
51347
  0x65, 0x72, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x2C, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 
51348
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 0x68, 0x72, 0x6F, 
51349
  0x77, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x0A, 0x57, 0x69, 0x6C, 
51350
  0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 
51351
  0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 
51352
  0x61, 0x6C, 0x20, 0x30, 0x2D, 0x34, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 
51353
  0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x1A, 0xDA, 0x8A, 0x64, 0xD3, 0x03, 
51354
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x83, 0x41, 0x01, 0xDA, 0x06, 0xCE, 0x37, 0x28, 0x6F, 
51355
  0x73, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x69, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
51356
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x49, 0x44, 0x20, 0x6F, 0x66, 
51357
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x6F, 
51358
  0x63, 0x65, 0x73, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x65, 0xDA, 0x8A, 0x66, 0xD3, 0x04, 0xDA, 
51359
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xCF, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x28, 0x61, 0x73, 
51360
  0x73, 0x65, 0x72, 0x74, 0x66, 0x20, 0x78, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 
51361
  0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x63, 0x65, 
51362
  0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x62, 
51363
  0x69, 0x6E, 0x65, 0x73, 0x20, 0x60, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x60, 0x20, 0x61, 0x6E, 
51364
  0x64, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
51365
  0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x67, 0xDA, 0x8A, 0x69, 0xD3, 0x03, 0xDA, 
51366
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x7D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD5, 0x28, 0x6D, 0x61, 
51367
  0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x65, 0x64, 
51368
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x50, 0x73, 0x65, 
51369
  0x75, 0x64, 0x6F, 0x2D, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
51370
  0x72, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2C, 0x20, 0x77, 0x69, 0x74, 
51371
  0x68, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 
51372
  0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x73, 0x68, 0x6F, 
51373
  0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 
51374
  0x65, 0x64, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
51375
  0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x44, 
51376
  0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 
51377
  0x6F, 0x72, 0x20, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x2E, 
51378
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
51379
  0x72, 0x6E, 0x67, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 
51380
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x6A, 0xDA, 0x8A, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51381
  0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x31, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 0x28, 0x65, 0x70, 0x72, 0x69, 
51382
  0x6E, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 
51383
  0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 
51384
  0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 
51385
  0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 
51386
  0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 
51387
  0x75, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x5F, 0xDA, 0x8A, 0x6C, 0xD3, 0x04, 0xDA, 
51388
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x3B, 0x01, 0xDA, 0x06, 0xCE, 0x6A, 0x57, 0x68, 0x65, 
51389
  0x6E, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 
51390
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 
51391
  0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 
51392
  0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 
51393
  0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 
51394
  0x28, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 
51395
  0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x43, 
51396
  0xDA, 0x85, 0xC8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x4D, 0x01, 0xDA, 
51397
  0x06, 0xCE, 0x81, 0xB1, 0x28, 0x6D, 0x61, 0x70, 0x63, 0x61, 0x74, 0x20, 0x66, 0x20, 0x69, 0x6E, 
51398
  0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x70, 0x20, 0x61, 
51399
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x76, 
51400
  0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 
51401
  0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
51402
  0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 
51403
  0x20, 0x60, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x60, 0x20, 
51404
  0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 
51405
  0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
51406
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x0A, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 
51407
  0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 
51408
  0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 
51409
  0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
51410
  0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x0A, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 
51411
  0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 
51412
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 
51413
  0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
51414
  0x20, 0x6F, 0x66, 0x0A, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 
51415
  0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
51416
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x4E, 0x6F, 
51417
  0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 
51418
  0x6E, 0x6C, 0x79, 0x0A, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x76, 
51419
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x63, 0x65, 0x73, 
51420
  0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 
51421
  0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0A, 
51422
  0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 
51423
  0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 
51424
  0x6E, 0x64, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xC6, 0xDA, 0x8A, 0x6D, 0xD3, 0x04, 0xDA, 
51425
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x63, 0x68, 
51426
  0x72, 0x20, 0x63, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 
51427
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 
51428
  0x20, 0x31, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x28, 
51429
  0x61, 0x73, 0x63, 0x69, 0x69, 0x29, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x74, 0x20, 
51430
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 
51431
  0xDA, 0x08, 0xDA, 0x8A, 0x6E, 0xDA, 0x8A, 0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
51432
  0x04, 0x8B, 0xA4, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x41, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
51433
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
51434
  0x61, 0x69, 0x6E, 0x73, 0x20, 0x64, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 
51435
  0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 
51436
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x32, 0xDA, 
51437
  0x82, 0x22, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x1B, 0x01, 0xDA, 0x06, 
51438
  0xCE, 0x69, 0x28, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x65, 0x70, 
51439
  0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
51440
  0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
51441
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 
51442
  0x64, 0x60, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x0A, 
51443
  0x60, 0x73, 0x65, 0x70, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
51444
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x20, 
51445
  0xDA, 0x8A, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x8E, 0x87, 0xBE, 0x01, 
51446
  0xDA, 0x06, 0xCE, 0x81, 0x56, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
51447
  0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 
51448
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 
51449
  0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x66, 0x69, 0x72, 
51450
  0x73, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x65, 0x67, 
51451
  0x60, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 
51452
  0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51453
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
51454
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 
51455
  0x6F, 0x74, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 
51456
  0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20, 0x72, 
51457
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 
51458
  0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
51459
  0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
51460
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 
51461
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 
51462
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 
51463
  0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 
51464
  0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
51465
  0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
51466
  0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
51467
  0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x74, 
51468
  0xDA, 0x81, 0x4E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xCA, 0x01, 0xDA, 
51469
  0x06, 0xCE, 0x75, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 
51470
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 
51471
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 
51472
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 
51473
  0x6D, 0x61, 0x74, 0x60, 0x2E, 0x20, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 
51474
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x74, 0x72, 
51475
  0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 
51476
  0x61, 0x72, 0x67, 0x73, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x49, 0xDA, 0x85, 0x13, 
51477
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0xC4, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
51478
  0x15, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 
51479
  0x61, 0x74, 0x75, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x65, 
51480
  0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
51481
  0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
51482
  0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 
51483
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 
51484
  0x78, 0x74, 0x60, 0x27, 0x73, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 
51485
  0x73, 0x60, 0x20, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 
51486
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x72, 0x6F, 0x70, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
51487
  0x20, 0x61, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x65, 
51488
  0x72, 0x72, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 
51489
  0x67, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x73, 
51490
  0x74, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 
51491
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
51492
  0x65, 0x6E, 0x76, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 
51493
  0x65, 0x20, 0x60, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x60, 0x20, 0x64, 0x79, 0x6E, 0x20, 0x20, 
51494
  0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 
51495
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x10, 0xDA, 0x8A, 0x75, 0xD3, 0x04, 
51496
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x50, 0x01, 0xDA, 0x06, 0xCE, 0x56, 0x28, 0x74, 0x6F, 
51497
  0x67, 0x67, 0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 
51498
  0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 
51499
  0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2E, 
51500
  0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x73, 0x65, 0x74, 0x20, 0x76, 
51501
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 
51502
  0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x76, 0xDA, 0x8A, 0x78, 0xD3, 0x03, 
51503
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0x13, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA8, 
51504
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 
51505
  0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
51506
  0x41, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
51507
  0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x65, 
51508
  0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
51509
  0x20, 0x61, 0x73, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x2E, 0x20, 0x52, 
51510
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 
51511
  0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 
51512
  0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
51513
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 
51514
  0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x79, 0xDA, 0x8A, 0x7A, 
51515
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0x95, 0x01, 0xDA, 0x06, 0xCE, 
51516
  0x80, 0x84, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 
51517
  0x69, 0x6E, 0x74, 0x36, 0x34, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 
51518
  0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x61, 
51519
  0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 
51520
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 
51521
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
51522
  0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51523
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 
51524
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x7B, 0xDA, 0x8A, 0x7C, 0xD3, 0x03, 
51525
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xD4, 0x01, 0xDA, 0x06, 0xCE, 0x73, 0x28, 
51526
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0x20, 0x62, 
51527
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x78, 0x73, 
51528
  0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
51529
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x70, 0x69, 
51530
  0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
51531
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
51532
  0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x65, 0x78, 
51533
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x7D, 0xDA, 0x86, 0x3F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
51534
  0x00, 0xDA, 0x04, 0x89, 0x35, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x01, 0x28, 0x76, 0x61, 0x72, 0x66, 
51535
  0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
51536
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
51537
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 
51538
  0x62, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x60, 0x76, 0x61, 0x72, 0x66, 0x6E, 0x60, 0x20, 0x68, 
51539
  0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 
51540
  0x61, 0x74, 0x75, 0x72, 0x65, 0x0A, 0x61, 0x73, 0x20, 0x60, 0x64, 0x65, 0x66, 0x6E, 0x60, 0x2C, 
51541
  0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x66, 0x75, 0x6E, 
51542
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 
51543
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x73, 0x20, 0x76, 0x61, 0x72, 
51544
  0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x20, 0x60, 0x6E, 0x61, 0x6D, 
51545
  0x65, 0x60, 0x0A, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 
51546
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
51547
  0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x62, 0x6F, 
51548
  0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 
51549
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
51550
  0x0A, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
51551
  0x08, 0xDA, 0x8A, 0x7E, 0xDA, 0x8A, 0x88, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 
51552
  0x95, 0x83, 0x36, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 
51553
  0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 0x20, 0x61, 0x64, 0x64, 
51554
  0x72, 0x65, 0x73, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 
51555
  0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 
51556
  0x20, 0x62, 0x79, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2C, 
51557
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x2C, 0x20, 
51558
  0x70, 0x6F, 0x72, 0x74, 0x20, 0x70, 0x61, 0x69, 0x72, 0x2E, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 
51559
  0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x77, 
51560
  0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 
51561
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
51562
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
51563
  0x8A, 0x89, 0xDA, 0x89, 0x1C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xC9, 
51564
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x88, 0x28, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 
51565
  0x20, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x20, 0x6F, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
51566
  0x20, 0x65, 0x6E, 0x76, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 
51567
  0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2E, 0x20, 0x54, 
51568
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 
51569
  0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
51570
  0x6C, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 
51571
  0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x0A, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x63, 0x68, 0x75, 0x6E, 
51572
  0x6B, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 
51573
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x72, 0x65, 0x74, 
51574
  0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x6E, 0x64, 0x20, 
51575
  0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 
51576
  0x6F, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 
51577
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 
51578
  0x20, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
51579
  0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x69, 0x73, 0x0A, 0x63, 0x61, 0x75, 0x67, 
51580
  0x68, 0x74, 0x2E, 0x20, 0x4F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x70, 0x72, 0x6F, 0x76, 
51581
  0x69, 0x64, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
51582
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 
51583
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 
51584
  0x6C, 0x20, 0x69, 0x6E, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 
51585
  0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x72, 
51586
  0x73, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 
51587
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 0x73, 0x0A, 0x74, 0x6F, 0x20, 
51588
  0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x2E, 0xDA, 0x08, 
51589
  0xDA, 0x89, 0x18, 0xDA, 0x8A, 0x8A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 
51590
  0x1D, 0x01, 0xDA, 0x06, 0xCE, 0x35, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
51591
  0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6F, 
51592
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
51593
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x8B, 
51594
  0xDA, 0x8A, 0x8C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x82, 0x6E, 0x01, 
51595
  0xDA, 0x06, 0xCE, 0x81, 0xCF, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 
51596
  0x77, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 
51597
  0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x74, 0x6F, 0x70, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 
51598
  0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 
51599
  0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x72, 0x61, 
51600
  0x63, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x65, 0x69, 
51601
  0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x64, 0x69, 0x72, 
51602
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 
51603
  0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 
51604
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 
51605
  0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 
51606
  0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x73, 0x20, 0x77, 
51607
  0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, 
51608
  0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
51609
  0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x20, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
51610
  0x77, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
51611
  0x6C, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 
51612
  0x62, 0x6F, 0x74, 0x68, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 
51613
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
51614
  0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 
51615
  0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
51616
  0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x60, 
51617
  0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 
51618
  0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
51619
  0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
51620
  0x77, 0x60, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 
51621
  0x6E, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
51622
  0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51623
  0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x6F, 0x63, 
51624
  0x6B, 0x65, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x8D, 0xDA, 0x8A, 0x8E, 0xD3, 0x04, 0xDA, 0x03, 
51625
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x30, 0x01, 0xDA, 0x06, 0xCE, 0x4F, 0x28, 0x66, 0x6F, 0x72, 
51626
  0x20, 0x69, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 0x26, 0x20, 
51627
  0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x43, 0x2D, 0x73, 0x74, 
51628
  0x79, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 0x6F, 0x72, 
51629
  0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x2E, 0x20, 0x52, 
51630
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 
51631
  0xDA, 0x8A, 0x8F, 0xDA, 0x8A, 0x91, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 
51632
  0x80, 0xFA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
51633
  0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x29, 
51634
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
51635
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x6C, 0x6C, 
51636
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 
51637
  0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x77, 
51638
  0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
51639
  0x66, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x73, 0x65, 0x6C, 0x76, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 
51640
  0x41, 0x53, 0x43, 0x49, 0x49, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
51641
  0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x63, 
51642
  0x61, 0x73, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2C, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x69, 
51643
  0x6E, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x73, 0x75, 
51644
  0x70, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x92, 0xDA, 0x8A, 0x93, 0xD3, 0x03, 
51645
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x9E, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 
51646
  0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 
51647
  0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 
51648
  0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x2D, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x6F, 0x66, 0x20, 
51649
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
51650
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 
51651
  0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x70, 
51652
  0xDA, 0x8A, 0x94, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0x80, 0x01, 0xDA, 
51653
  0x06, 0xCE, 0x81, 0x9E, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x20, 0x70, 0x61, 
51654
  0x74, 0x68, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 
51655
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 
51656
  0x73, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 
51657
  0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 
51658
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51659
  0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 
51660
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x60, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
51661
  0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 
51662
  0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 
51663
  0x74, 0x60, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 
51664
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x69, 
51665
  0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 
51666
  0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 
51667
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x62, 0x65, 0x73, 
51668
  0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6F, 
51669
  0x63, 0x74, 0x61, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x38, 0x72, 0x36, 0x36, 0x36, 
51670
  0x20, 0x6F, 0x72, 0x20, 0x38, 0x72, 0x34, 0x30, 0x30, 0x2E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 
51671
  0x77, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x64, 0x69, 0x66, 0x66, 
51672
  0x65, 0x72, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 
51673
  0x6E, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2C, 0x20, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x2C, 0x20, 0x61, 
51674
  0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 
51675
  0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x75, 0x73, 0x20, 0x77, 
51676
  0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
51677
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 
51678
  0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
51679
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x5F, 0xDA, 0x82, 0xF2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51680
  0x00, 0xDA, 0x04, 0x90, 0xCA, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xB4, 0x28, 0x62, 0x75, 0x6E, 0x64, 
51681
  0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 
51682
  0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x29, 0x0A, 0x0A, 0x49, 
51683
  0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 
51684
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x66, 
51685
  0x69, 0x6C, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6E, 
51686
  0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
51687
  0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x65, 0x72, 0x72, 
51688
  0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x6E, 0x64, 
51689
  0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 
51690
  0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x3A, 0x6E, 0x61, 
51691
  0x6D, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x60, 0x2E, 0xDA, 
51692
  0x08, 0xDA, 0x89, 0x68, 0xDA, 0x8A, 0x95, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
51693
  0xA6, 0x86, 0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE5, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 
51694
  0x61, 0x64, 0x20, 0x66, 0x66, 0x69, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 
51695
  0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 
51696
  0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 
51697
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 
51698
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 
51699
  0x74, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x4A, 
51700
  0x61, 0x6E, 0x65, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
51701
  0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
51702
  0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 
51703
  0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 
51704
  0x60, 0x2E, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 
51705
  0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 
51706
  0x6E, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6C, 0x74, 0x68, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x74, 
51707
  0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 0x2E, 0xDA, 0x08, 
51708
  0xDA, 0x8A, 0x96, 0xDA, 0x8A, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x64, 
51709
  0x01, 0xDA, 0x06, 0xCE, 0x1C, 0x28, 0x6E, 0x61, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 
51710
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x4E, 0x61, 0x4E, 
51711
  0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x98, 0xDA, 0x8A, 0x9A, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51712
  0xDA, 0x04, 0x83, 0x03, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x6C, 
51713
  0x65, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 
51714
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x69, 
51715
  0x66, 0x2D, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x28, 
51716
  0x64, 0x6F, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
51717
  0x08, 0xDA, 0x8A, 0x9B, 0xDA, 0x8A, 0x9D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
51718
  0x82, 0x45, 0x01, 0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x20, 
51719
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
51720
  0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x20, 0x69, 
51721
  0x6E, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x74, 
51722
  0x69, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 
51723
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x9E, 0xDA, 0x8A, 0xA0, 
51724
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x2F, 0x81, 0x8D, 0x01, 0xDA, 0x06, 0xCE, 
51725
  0x80, 0xED, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 
51726
  0x61, 0x63, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 
51727
  0x72, 0x72, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 
51728
  0x74, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x69, 0x63, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x69, 0x6E, 
51729
  0x67, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 
51730
  0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
51731
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 
51732
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
51733
  0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 
51734
  0x63, 0x6B, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x20, 0x49, 
51735
  0x66, 0x20, 0x60, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 
51736
  0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 
51737
  0x64, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x6B, 0x69, 0x70, 0x20, 0x74, 0x68, 0x65, 
51738
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 
51739
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 
51740
  0x08, 0xDA, 0x84, 0xDD, 0xDA, 0x8A, 0xA1, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xD1, 0x28, 0x64, 
51741
  0x69, 0x76, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51742
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x64, 0x69, 
51743
  0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 
51744
  0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 
51745
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 
51746
  0x61, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2C, 0x20, 
51747
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 
51748
  0x70, 0x72, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0x20, 0x4F, 0x74, 0x68, 
51749
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 
51750
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 
51751
  0x20, 0x78, 0x73, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x64, 
51752
  0x69, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
51753
  0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0xDA, 
51754
  0x08, 0xDA, 0x8A, 0xA2, 0xDA, 0x8A, 0xA4, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
51755
  0x80, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 0x2C, 0x28, 0x2A, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 
51756
  0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 
51757
  0x72, 0x20, 0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 0x28, 0x5C, 0x2A, 0x20, 0x78, 0x20, 0x6E, 
51758
  0x29, 0x29, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xA5, 0xDA, 0x8A, 0xA8, 0xD3, 0x04, 
51759
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x25, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD2, 0x28, 
51760
  0x70, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
51761
  0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
51762
  0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x70, 
51763
  0x74, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
51764
  0x73, 0x2E, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
51765
  0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x65, 
51766
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
51767
  0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 
51768
  0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 
51769
  0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x0A, 0x65, 0x72, 
51770
  0x72, 0x6F, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 
51771
  0x6F, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
51772
  0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
51773
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xA9, 0xDA, 0x8A, 0xAC, 0xD3, 0x04, 0xDA, 0x03, 
51774
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xC0, 0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 0x66, 0x69, 0x62, 
51775
  0x65, 0x72, 0x2D, 0x66, 0x6E, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 
51776
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 
51777
  0x6F, 0x72, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 
51778
  0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 
51779
  0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x28, 0x66, 0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 0x6F, 
51780
  0x64, 0x79, 0x29, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
51781
  0x08, 0xDA, 0x8A, 0xAD, 0xDA, 0x8A, 0xB2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
51782
  0x8B, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCF, 0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 
51783
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x6D, 
51784
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x29, 0x0A, 0x0A, 
51785
  0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 
51786
  0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 
51787
  0x6C, 0x75, 0x65, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 
51788
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x60, 0x73, 0x79, 0x6D, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 
51789
  0x60, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x74, 0x72, 0x75, 
51790
  0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 
51791
  0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x6D, 
51792
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x49, 
51793
  0x66, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 
51794
  0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 
51795
  0x72, 0x6E, 0x0A, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xB3, 0xDA, 0x8A, 0xB7, 0xD3, 
51796
  0x02, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x3E, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
51797
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 
51798
  0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x61, 0x73, 0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
51799
  0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
51800
  0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x14, 0xDA, 0x8A, 
51801
  0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x84, 0x97, 0x01, 0xDA, 0x06, 
51802
  0xCE, 0x82, 0x79, 0x28, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 
51803
  0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x42, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 
51804
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
51805
  0x6F, 0x66, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
51806
  0x65, 0x6C, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x6F, 0x63, 
51807
  0x63, 0x75, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 
51808
  0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
51809
  0x20, 0x5B, 0x3A, 0x67, 0x69, 0x76, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 0x2C, 0x20, 0x5B, 
51810
  0x3A, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x5D, 0x2C, 0x20, 0x6F, 
51811
  0x72, 0x20, 0x5B, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 0x2C, 
51812
  0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x20, 0x3A, 0x67, 0x69, 0x76, 0x65, 0x20, 0x74, 
51813
  0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 
51814
  0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x6E, 
51815
  0x64, 0x20, 0x61, 0x20, 0x3A, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
51816
  0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 
51817
  0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x63, 0x6C, 
51818
  0x61, 0x75, 0x73, 0x65, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 
51819
  0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x28, 0x66, 
51820
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x74, 0x61, 0x6B, 
51821
  0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x20, 0x6F, 0x72, 0x20, 
51822
  0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x5B, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
51823
  0x20, 0x78, 0x5D, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
51824
  0x65, 0x6C, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 
51825
  0x6E, 0x29, 0x2E, 0x20, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 
51826
  0x72, 0x65, 0x20, 0x74, 0x72, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 
51827
  0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x72, 0x6C, 
51828
  0x69, 0x65, 0x72, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x20, 0x74, 0x61, 0x6B, 0x65, 
51829
  0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 
51830
  0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x2E, 0x20, 
51831
  0x42, 0x6F, 0x74, 0x68, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x61, 
51832
  0x6B, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x63, 0x61, 
51833
  0x6E, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x5B, 0x3A, 0x63, 0x6C, 0x6F, 
51834
  0x73, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 
51835
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 
51836
  0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
51837
  0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 
51838
  0x6C, 0x6F, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x69, 0x74, 
51839
  0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 
51840
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6C, 0x72, 
51841
  0x65, 0x61, 0x64, 0x79, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 
51842
  0xB9, 0xDA, 0x8A, 0xBA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x80, 0xD3, 
51843
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0xAA, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x61, 0x64, 
51844
  0x20, 0x66, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 
51845
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
51846
  0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 
51847
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 
51848
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x41, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
51849
  0x72, 0x20, 0x60, 0x62, 0x75, 0x66, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 
51850
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
51851
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x72, 0x64, 0x20, 0x61, 0x72, 0x67, 
51852
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 
51853
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 
51854
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 
51855
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x61, 
51856
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6B, 
51857
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51858
  0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
51859
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x56, 
51860
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 
51861
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 
51862
  0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 
51863
  0x0A, 0x2A, 0x20, 0x3A, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 
51864
  0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 
51865
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6E, 0x65, 0x77, 
51866
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x0A, 0x0A, 
51867
  0x2A, 0x20, 0x6E, 0x20, 0x28, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x29, 0x20, 0x2D, 0x20, 
51868
  0x72, 0x65, 0x61, 0x64, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 
51869
  0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 
51870
  0xDA, 0x08, 0xDA, 0x81, 0x59, 0xDA, 0x8A, 0xBB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
51871
  0x21, 0x81, 0x1F, 0x01, 0xDA, 0x06, 0xCE, 0x54, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x6C, 
51872
  0x6F, 0x6F, 0x72, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51873
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 
51874
  0x67, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
51875
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x72, 0x65, 
51876
  0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 
51877
  0x82, 0xDA, 0x8A, 0xBC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x91, 0x6B, 0x80, 0xF5, 
51878
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0xAC, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 
51879
  0x74, 0x65, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 
51880
  0x6E, 0x64, 0x69, 0x61, 0x6E, 0x6E, 0x65, 0x73, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
51881
  0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 
51882
  0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 
51883
  0x34, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0x60, 0x20, 
51884
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x0A, 0x54, 
51885
  0x68, 0x65, 0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 
51886
  0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 
51887
  0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x75, 0x66, 0x66, 
51888
  0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x2C, 0x20, 
51889
  0x69, 0x66, 0x20, 0x75, 0x6E, 0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 
51890
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x72, 
51891
  0x65, 0x61, 0x74, 0x65, 0x64, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
51892
  0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 
51893
  0x65, 0x72, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x6E, 
51894
  0x65, 0x73, 0x73, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 
51895
  0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 
51896
  0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x0A, 0x2D, 0x20, 0x60, 0x6E, 0x69, 0x6C, 0x60, 
51897
  0x20, 0x28, 0x75, 0x6E, 0x73, 0x65, 0x74, 0x29, 0x3A, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 
51898
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x0A, 0x2D, 0x20, 0x60, 0x3A, 
51899
  0x6C, 0x65, 0x60, 0x3A, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x64, 0x69, 
51900
  0x61, 0x6E, 0x2C, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x69, 0x66, 
51901
  0x69, 0x63, 0x61, 0x6E, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
51902
  0x0A, 0x2D, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x60, 0x3A, 0x20, 0x62, 0x69, 0x67, 0x2D, 0x65, 0x6E, 
51903
  0x64, 0x69, 0x61, 0x6E, 0x2C, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x69, 
51904
  0x66, 0x69, 0x63, 0x61, 0x6E, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
51905
  0x74, 0x0A, 0xDA, 0x08, 0xDA, 0x8A, 0xBD, 0xDA, 0x8A, 0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51906
  0x00, 0xDA, 0x80, 0xA1, 0x81, 0xD7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD6, 0x28, 0x73, 0x74, 0x72, 
51907
  0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x65, 0x74, 0x20, 0x73, 0x65, 
51908
  0x74, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x20, 0x74, 
51909
  0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 
51910
  0x73, 0x74, 0x72, 0x60, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
51911
  0x6E, 0x73, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x70, 
51912
  0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 
51913
  0x6E, 0x67, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51914
  0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 
51915
  0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x61, 0x70, 0x70, 
51916
  0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x2C, 0x20, 0x66, 0x61, 
51917
  0x6C, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 
51918
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 
51919
  0x74, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 
51920
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x6D, 0xDA, 0x8A, 0xBF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51921
  0x00, 0xDA, 0x04, 0x8B, 0x21, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x09, 0x54, 0x68, 0x65, 0x20, 0x6C, 
51922
  0x69, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x74, 0x6F, 0x20, 
51923
  0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 
51924
  0x2C, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
51925
  0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 
51926
  0x61, 0x74, 0x68, 0x60, 0x2E, 0x0A, 0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
51927
  0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 
51928
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 
51929
  0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x0A, 0x74, 
51930
  0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6B, 0x65, 
51931
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 
51932
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x69, 0x6D, 0x61, 0x67, 
51933
  0x65, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x68, 0x6F, 0x77, 
51934
  0x0A, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
51935
  0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x75, 
51936
  0x6E, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
51937
  0x73, 0x2E, 0x0A, 0x0A, 0x41, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 
51938
  0x61, 0x6C, 0x73, 0x6F, 0x0A, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 
51939
  0x68, 0x69, 0x72, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x73, 0x70, 
51940
  0x65, 0x63, 0x69, 0x66, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 
51941
  0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 
51942
  0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x66, 0x72, 
51943
  0x6F, 0x6D, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 
51944
  0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 
51945
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x64, 0x6F, 
51946
  0x65, 0x73, 0x6E, 0x27, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
51947
  0x69, 0x6E, 0x70, 0x75, 0x74, 0x0A, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
51948
  0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 
51949
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 
51950
  0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 
51951
  0x61, 0x6E, 0x64, 0x0A, 0x69, 0x73, 0x20, 0x6F, 0x66, 0x74, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 
51952
  0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 
51953
  0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x72, 
51954
  0x69, 0x6F, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xB3, 0xDA, 0x8A, 0xC0, 0xD3, 0x03, 0xDA, 0x03, 
51955
  0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x27, 0x01, 0xDA, 0x06, 0xCE, 0x21, 0x28, 0x6D, 0x61, 0x74, 
51956
  0x68, 0x2F, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
51957
  0x72, 0x6E, 0x73, 0x20, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x28, 0x78, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 
51958
  0x8A, 0xC1, 0xDA, 0x8A, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x11, 
51959
  0x01, 0xDA, 0x06, 0xCE, 0x30, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0x20, 
51960
  0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
51961
  0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x73, 0x69, 0x6E, 0x65, 0x20, 
51962
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xC3, 0xDA, 0x85, 0x3A, 0xD3, 0x03, 0xDA, 
51963
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xD5, 0x01, 0xDA, 0x06, 0xCE, 0x54, 0x28, 0x77, 0x61, 
51964
  0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x6C, 
51965
  0x65, 0x76, 0x65, 0x6C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
51966
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 
51967
  0x6C, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
51968
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 
51969
  0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x35, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x74, 
51970
  0x33, 0x32, 0x2D, 0x6D, 0x61, 0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 
51971
  0xB4, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 
51972
  0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 
51973
  0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x62, 
51974
  0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 
51975
  0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0xDA, 0x08, 0xCD, 
51976
  0x7F, 0xFF, 0xFF, 0xFF, 0xDA, 0x8A, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 
51977
  0x38, 0x56, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1D, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 
51978
  0x79, 0x70, 0x65, 0x20, 0x74, 0x75, 0x70, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 
51979
  0x20, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 
51980
  0x61, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x2E, 0x20, 
51981
  0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
51982
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x3A, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 
51983
  0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 
51984
  0x61, 0x73, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 
51985
  0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x70, 0x61, 
51986
  0x72, 0x65, 0x6E, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0x20, 
51987
  0x54, 0x68, 0x65, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6F, 0x66, 
51988
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x68, 
51989
  0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x6F, 0x73, 
51990
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2C, 0x20, 0x62, 
51991
  0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x64, 0x69, 
51992
  0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x65, 
51993
  0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 
51994
  0x6E, 0x74, 0x6C, 0x79, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
51995
  0x69, 0x6C, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x75, 0xDA, 0x8A, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 
51996
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x82, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0x4B, 0x28, 0x73, 
51997
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6F, 0x72, 
51998
  0x6D, 0x61, 0x74, 0x20, 0x26, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x53, 
51999
  0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x43, 0x27, 0x73, 0x20, 0x60, 0x73, 
52000
  0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x73, 0x70, 
52001
  0x65, 0x63, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x70, 
52002
  0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x4A, 0x61, 0x6E, 
52003
  0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
52004
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 
52005
  0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 
52006
  0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 
52007
  0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 
52008
  0x74, 0x65, 0x64, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 
52009
  0x70, 0x70, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
52010
  0x69, 0x65, 0x72, 0x73, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x75, 0x70, 
52011
  0x70, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3A, 
52012
  0x0A, 0x2D, 0x20, 0x60, 0x63, 0x60, 0x3A, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x63, 0x68, 
52013
  0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x64, 0x60, 0x2C, 0x20, 
52014
  0x60, 0x69, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 
52015
  0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x63, 
52016
  0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 
52017
  0x78, 0x60, 0x2C, 0x20, 0x60, 0x58, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
52018
  0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 
52019
  0x20, 0x68, 0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 
52020
  0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x6F, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 
52021
  0x67, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 
52022
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x63, 0x74, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
52023
  0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x66, 0x60, 0x2C, 0x20, 0x60, 0x46, 0x60, 0x3A, 0x20, 0x66, 
52024
  0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 
52025
  0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 
52026
  0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 
52027
  0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x65, 0x60, 0x2C, 0x20, 0x60, 0x45, 0x60, 0x3A, 
52028
  0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 
52029
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 
52030
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x63, 0x20, 
52031
  0x6E, 0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x67, 0x60, 0x2C, 
52032
  0x20, 0x60, 0x47, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 
52033
  0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 
52034
  0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x69, 0x74, 0x73, 0x20, 0x73, 0x68, 
52035
  0x6F, 0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 
52036
  0x61, 0x60, 0x2C, 0x20, 0x60, 0x41, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 
52037
  0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 
52038
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x68, 
52039
  0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
52040
  0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x73, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
52041
  0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 
52042
  0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 
52043
  0x61, 0x74, 0x65, 0x73, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 
52044
  0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 
52045
  0x0A, 0x2D, 0x20, 0x60, 0x74, 0x60, 0x3A, 0x20, 0x65, 0x6D, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 
52046
  0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 
52047
  0x65, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x76, 0x60, 0x3A, 
52048
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x64, 0x65, 
52049
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x2D, 0x20, 0x60, 0x56, 0x60, 0x3A, 
52050
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x73, 0x74, 
52051
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x78, 0x29, 0x0A, 0x2D, 0x20, 0x60, 0x6A, 0x60, 0x3A, 0x20, 0x66, 
52052
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6A, 0x64, 0x6E, 0x20, 0x28, 0x4A, 0x61, 
52053
  0x6E, 0x65, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6E, 0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 
52054
  0x6E, 0x29, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 
52055
  0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x70, 
52056
  0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 
52057
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x22, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x70, 0x72, 
52058
  0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x22, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 
52059
  0x68, 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x2D, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x61, 
52060
  0x72, 0x69, 0x61, 0x6E, 0x74, 0x73, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 
52061
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2E, 0x20, 
52062
  0x54, 0x68, 0x65, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 
52063
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x63, 
52064
  0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 
52065
  0x6F, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 
52066
  0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 
52067
  0x70, 0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2E, 0x0A, 0x2D, 0x20, 
52068
  0x60, 0x70, 0x60, 0x2C, 0x20, 0x60, 0x50, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 
52069
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2C, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 
52070
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 
52071
  0x0A, 0x2D, 0x20, 0x60, 0x6D, 0x60, 0x2C, 0x20, 0x60, 0x4D, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 
52072
  0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 
52073
  0x75, 0x74, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x2D, 
52074
  0x20, 0x60, 0x71, 0x60, 0x2C, 0x20, 0x60, 0x51, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 
52075
  0x79, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
52076
  0x6C, 0x69, 0x6E, 0x65, 0x2C, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 
52077
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x2E, 0x0A, 0x2D, 
52078
  0x20, 0x60, 0x6E, 0x60, 0x2C, 0x20, 0x60, 0x4E, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 
52079
  0x79, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
52080
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x72, 0x75, 
52081
  0x6E, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x81, 0x4B, 0xDA, 0x8A, 
52082
  0xC6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x31, 0x01, 0xDA, 0x06, 0xCE, 
52083
  0x48, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x32, 0x20, 0x79, 0x20, 0x78, 
52084
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
52085
  0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x2F, 0x78, 
52086
  0x2E, 0x20, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x77, 0x68, 0x65, 
52087
  0x6E, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xC7, 0xDA, 0x85, 
52088
  0xD9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 
52089
  0x80, 0xA2, 0x28, 0x63, 0x75, 0x72, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
52090
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
52091
  0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 
52092
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 
52093
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x28, 0x66, 0x69, 
52094
  0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x29, 0x60, 0x2E, 0x20, 
52095
  0x49, 0x66, 0x20, 0x60, 0x6E, 0x60, 0x0A, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
52096
  0x65, 0x64, 0x2C, 0x20, 0x67, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x74, 0x68, 
52097
  0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
52098
  0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 
52099
  0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xD7, 0xDA, 0x8A, 0xC8, 0xD3, 0x03, 0xDA, 0x03, 
52100
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x83, 0x47, 0x01, 0xDA, 0x06, 0xCE, 0x18, 0x54, 0x68, 0x65, 
52101
  0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 
52102
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x0F, 0xDA, 0x8A, 0xC9, 0xD3, 0x03, 0xDA, 
52103
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8C, 0xEF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xEC, 0x28, 
52104
  0x65, 0x76, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
52105
  0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 
52106
  0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 
52107
  0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 
52108
  0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
52109
  0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 
52110
  0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 
52111
  0x65, 0x73, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 
52112
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 
52113
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
52114
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
52115
  0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
52116
  0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 
52117
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 
52118
  0x69, 0x74, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xCA, 
52119
  0xDA, 0x8A, 0xCB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xD9, 0x82, 0x7D, 0x01, 
52120
  0xDA, 0x06, 0xCE, 0x85, 0xB7, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 
52121
  0x61, 0x64, 0x64, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 
52122
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x64, 
52123
  0x64, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
52124
  0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 
52125
  0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x20, 
52126
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x4F, 
52127
  0x53, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 
52128
  0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2F, 
52129
  0x4D, 0x49, 0x4E, 0x47, 0x57, 0x20, 0x28, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x6F, 0x72, 
52130
  0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 
52131
  0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x2A, 
52132
  0x60, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x69, 0x6E, 0x33, 0x32, 
52133
  0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x3A, 
52134
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x2D, 0x20, 0x74, 0x72, 0x69, 
52135
  0x67, 0x67, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x6F, 
52136
  0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x6C, 
52137
  0x6F, 0x77, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 
52138
  0x60, 0x3A, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x60, 0x20, 0x2D, 0x20, 
52139
  0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 
52140
  0x4E, 0x47, 0x45, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x60, 0x0A, 
52141
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 
52142
  0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 
52143
  0x41, 0x4E, 0x47, 0x45, 0x5F, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x60, 0x0A, 0x0A, 
52144
  0x2A, 0x20, 0x60, 0x3A, 0x64, 0x69, 0x72, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x2D, 0x20, 
52145
  0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 
52146
  0x4E, 0x47, 0x45, 0x5F, 0x44, 0x49, 0x52, 0x5F, 0x4E, 0x41, 0x4D, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 
52147
  0x20, 0x60, 0x3A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x60, 0x20, 
52148
  0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 
52149
  0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x4C, 0x41, 0x53, 0x54, 0x5F, 0x41, 0x43, 0x43, 0x45, 0x53, 
52150
  0x53, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x77, 0x72, 0x69, 
52151
  0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 
52152
  0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x4C, 0x41, 0x53, 0x54, 0x5F, 0x57, 
52153
  0x52, 0x49, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x73, 0x65, 0x63, 0x75, 0x72, 
52154
  0x69, 0x74, 0x79, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 
52155
  0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x53, 0x45, 0x43, 0x55, 0x52, 
52156
  0x49, 0x54, 0x59, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x73, 0x69, 0x7A, 0x65, 0x60, 0x20, 
52157
  0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 
52158
  0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x53, 0x49, 0x5A, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
52159
  0x3A, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x77, 0x61, 
52160
  0x74, 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 
52161
  0x65, 0x73, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x0A, 0x0A, 
52162
  0x4C, 0x69, 0x6E, 0x75, 0x78, 0x20, 0x28, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x6F, 0x72, 
52163
  0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x2A, 
52164
  0x60, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x3C, 0x73, 0x79, 
52165
  0x73, 0x2F, 0x69, 0x6E, 0x6F, 0x74, 0x69, 0x66, 0x79, 0x2E, 0x68, 0x3E, 0x29, 0x3A, 0x0A, 0x0A, 
52166
  0x2A, 0x20, 0x60, 0x3A, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 
52167
  0x4E, 0x5F, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 
52168
  0x6C, 0x6C, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x41, 0x4C, 0x4C, 0x5F, 0x45, 0x56, 
52169
  0x45, 0x4E, 0x54, 0x53, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x74, 0x74, 0x72, 0x69, 
52170
  0x62, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x60, 
52171
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x2D, 0x6E, 0x6F, 0x77, 0x72, 
52172
  0x69, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x45, 
52173
  0x5F, 0x4E, 0x4F, 0x57, 0x52, 0x49, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 
52174
  0x6C, 0x6F, 0x73, 0x65, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 
52175
  0x4E, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x5F, 0x57, 0x52, 0x49, 0x54, 0x45, 0x60, 0x0A, 0x0A, 
52176
  0x2A, 0x20, 0x60, 0x3A, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 
52177
  0x4E, 0x5F, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 
52178
  0x65, 0x6C, 0x65, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x44, 0x45, 0x4C, 
52179
  0x45, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 
52180
  0x2D, 0x73, 0x65, 0x6C, 0x66, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x44, 0x45, 0x4C, 
52181
  0x45, 0x54, 0x45, 0x5F, 0x53, 0x45, 0x4C, 0x46, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x69, 
52182
  0x67, 0x6E, 0x6F, 0x72, 0x65, 0x64, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x49, 0x47, 
52183
  0x4E, 0x4F, 0x52, 0x45, 0x44, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 
52184
  0x66, 0x79, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x44, 0x49, 0x46, 0x59, 
52185
  0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x2D, 0x73, 0x65, 0x6C, 0x66, 
52186
  0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x53, 0x45, 0x4C, 
52187
  0x46, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x2D, 0x66, 0x72, 
52188
  0x6F, 0x6D, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x44, 0x5F, 
52189
  0x46, 0x52, 0x4F, 0x4D, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x64, 
52190
  0x2D, 0x74, 0x6F, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x44, 
52191
  0x5F, 0x54, 0x4F, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x70, 0x65, 0x6E, 0x60, 0x20, 
52192
  0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4F, 0x50, 0x45, 0x4E, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
52193
  0x3A, 0x71, 0x2D, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x60, 0x20, 0x2D, 0x20, 0x60, 
52194
  0x49, 0x4E, 0x5F, 0x51, 0x5F, 0x4F, 0x56, 0x45, 0x52, 0x46, 0x4C, 0x4F, 0x57, 0x60, 0x0A, 0x0A, 
52195
  0x2A, 0x20, 0x60, 0x3A, 0x75, 0x6E, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 0x2D, 0x20, 0x60, 
52196
  0x49, 0x4E, 0x5F, 0x55, 0x4E, 0x4D, 0x4F, 0x55, 0x4E, 0x54, 0x60, 0x0A, 0x0A, 0x0A, 0x4F, 0x6E, 
52197
  0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2C, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 
52198
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
52199
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 
52200
  0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x75, 0x6E, 
52201
  0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x64, 0x64, 0x65, 
52202
  0x64, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x60, 
52203
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x60, 0x0A, 
52204
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x2D, 0x6F, 0x6C, 0x64, 
52205
  0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x2D, 0x6E, 
52206
  0x65, 0x77, 0x60, 0x0A, 0x0A, 0x4F, 0x6E, 0x20, 0x4C, 0x69, 0x6E, 0x75, 0x78, 0x2C, 0x20, 0x65, 
52207
  0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x60, 0x3A, 0x74, 
52208
  0x79, 0x70, 0x65, 0x60, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 
52209
  0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 
52210
  0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x2C, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x64, 
52211
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x8A, 
52212
  0xCC, 0xDA, 0x8A, 0xCD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x46, 
52213
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x88, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 
52214
  0x6B, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
52215
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
52216
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x77, 0x65, 0x61, 0x6B, 
52217
  0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6B, 
52218
  0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 
52219
  0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x74, 0x61, 0x62, 0x6C, 
52220
  0x65, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
52221
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
52222
  0xDA, 0x8A, 0xCE, 0xDA, 0x8A, 0xCF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 
52223
  0x75, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xB7, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x20, 0x70, 0x72, 0x65, 
52224
  0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x47, 
52225
  0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
52226
  0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
52227
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
52228
  0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x74, 0x72, 0x75, 0x74, 0x68, 
52229
  0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x70, 0x70, 
52230
  0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 0x20, 
52231
  0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
52232
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
52233
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
52234
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 
52235
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 
52236
  0x69, 0x70, 0x6C, 0x65, 0x0A, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
52237
  0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 
52238
  0x6C, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 
52239
  0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 
52240
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 
52241
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
52242
  0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 
52243
  0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
52244
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 
52245
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
52246
  0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x74, 0x68, 
52247
  0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x0A, 0x6C, 0x6F, 0x6E, 0x67, 0x65, 0x72, 0x20, 
52248
  0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 
52249
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 
52250
  0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0xDA, 0x08, 
52251
  0xDA, 0x8A, 0xD0, 0xDA, 0x8A, 0xDE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 
52252
  0x80, 0xEB, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x88, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x73, 
52253
  0x6C, 0x69, 0x63, 0x65, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x20, 0x26, 0x6F, 0x70, 0x74, 
52254
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 
52255
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 
52256
  0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 
52257
  0x6D, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 0x6E, 
52258
  0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 
52259
  0x20, 0x68, 0x61, 0x6C, 0x66, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 
52260
  0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x65, 
52261
  0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 
52262
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 
52263
  0x6E, 0x67, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
52264
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
52265
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 
52266
  0x74, 0x2C, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x20, 
52267
  0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
52268
  0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
52269
  0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
52270
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 
52271
  0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 
52272
  0x74, 0x61, 0x6B, 0x65, 0x6E, 0x20, 0x61, 0x73, 0x20, 0x28, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 
52273
  0x20, 0x65, 0x6E, 0x64, 0x5D, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 
52274
  0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 
52275
  0x6C, 0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
52276
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 
52277
  0xDA, 0x08, 0xDA, 0x88, 0x6B, 0xDA, 0x8A, 0xDF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52278
  0x80, 0x8F, 0x81, 0x00, 0x01, 0xDA, 0x06, 0xCE, 0x7E, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
52279
  0x2F, 0x74, 0x72, 0x69, 0x6D, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 
52280
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 
52281
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
52282
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
52283
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 
52284
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
52285
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
52286
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x5E, 0xDA, 0x8A, 0xE0, 0xD3, 
52287
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x2B, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 
52288
  0x68, 0x61, 0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x29, 
52289
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
52290
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 
52291
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 
52292
  0x79, 0x20, 0x60, 0x6B, 0x65, 0x79, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xE1, 0xDA, 0x8A, 0xE3, 
52293
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x59, 0x28, 0x62, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 
52294
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 
52295
  0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
52296
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 
52297
  0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 
52298
  0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 
52299
  0x08, 0xDA, 0x8A, 0xE4, 0xDA, 0x8A, 0xE6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
52300
  0x7C, 0x80, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x87, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
52301
  0x77, 0x65, 0x61, 0x6B, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 
52302
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 
52303
  0x70, 0x74, 0x79, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
52304
  0x20, 0x70, 0x72, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 
52305
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x75, 0x70, 0x70, 
52306
  0x6F, 0x72, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x65, 0x61, 0x6B, 0x20, 0x72, 0x65, 0x66, 
52307
  0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 
52308
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 
52309
  0xDA, 0x08, 0xDA, 0x8A, 0xE7, 0xDA, 0x88, 0x0F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52310
  0x04, 0x8F, 0x86, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xD7, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 
52311
  0x66, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
52312
  0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 
52313
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 
52314
  0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 
52315
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 
52316
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x74, 0x20, 
52317
  0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x6D, 0x69, 
52318
  0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x62, 
52319
  0x75, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 
52320
  0x65, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
52321
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 
52322
  0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 
52323
  0x68, 0x65, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
52324
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xE8, 0xDA, 0x85, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
52325
  0x03, 0x00, 0xDA, 0x04, 0x8C, 0x58, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x86, 0x28, 0x69, 0x6D, 0x70, 
52326
  0x6F, 0x72, 0x74, 0x2A, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 
52327
  0x29, 0x0A, 0x0A, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
52328
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x2E, 0x20, 0x53, 0x61, 
52329
  0x6D, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x62, 
52330
  0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x0A, 0x61, 0x6E, 0x64, 0x20, 
52331
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x70, 0x61, 0x72, 
52332
  0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 
52333
  0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 
52334
  0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xD5, 0xDA, 0x8B, 0x02, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
52335
  0x00, 0xDA, 0x4C, 0x87, 0x1C, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x84, 0x28, 0x6F, 0x73, 0x2F, 0x64, 
52336
  0x61, 0x74, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6C, 0x6F, 
52337
  0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
52338
  0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
52339
  0x61, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x6F, 
52340
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 
52341
  0x6D, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 
52342
  0x6E, 0x6F, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
52343
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 
52344
  0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 
52345
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
52346
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 
52347
  0x20, 0x30, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2E, 0x20, 0x44, 0x61, 0x74, 0x65, 
52348
  0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 0x43, 
52349
  0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 
52350
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x68, 
52351
  0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 
52352
  0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x66, 
52353
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 
52354
  0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
52355
  0x64, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 
52356
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x5B, 0x30, 0x2D, 0x36, 0x31, 0x5D, 0x0A, 0x0A, 0x2A, 
52357
  0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
52358
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x20, 0x5B, 0x30, 
52359
  0x2D, 0x35, 0x39, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x68, 0x6F, 0x75, 0x72, 0x73, 0x20, 0x2D, 
52360
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x68, 0x6F, 0x75, 0x72, 0x73, 
52361
  0x20, 0x5B, 0x30, 0x2D, 0x32, 0x33, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x74, 
52362
  0x68, 0x2D, 0x64, 0x61, 0x79, 0x20, 0x2D, 0x20, 0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6D, 
52363
  0x6F, 0x6E, 0x74, 0x68, 0x20, 0x5B, 0x30, 0x2D, 0x33, 0x30, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
52364
  0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x6F, 0x66, 
52365
  0x20, 0x79, 0x65, 0x61, 0x72, 0x20, 0x5B, 0x30, 0x2C, 0x20, 0x31, 0x31, 0x5D, 0x0A, 0x0A, 0x2A, 
52366
  0x20, 0x3A, 0x79, 0x65, 0x61, 0x72, 0x20, 0x2D, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x20, 0x73, 
52367
  0x69, 0x6E, 0x63, 0x65, 0x20, 0x79, 0x65, 0x61, 0x72, 0x20, 0x30, 0x20, 0x28, 0x65, 0x2E, 0x67, 
52368
  0x2E, 0x20, 0x32, 0x30, 0x31, 0x39, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x65, 0x65, 0x6B, 
52369
  0x2D, 0x64, 0x61, 0x79, 0x20, 0x2D, 0x20, 0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
52370
  0x65, 0x20, 0x77, 0x65, 0x65, 0x6B, 0x20, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 
52371
  0x3A, 0x79, 0x65, 0x61, 0x72, 0x2D, 0x64, 0x61, 0x79, 0x20, 0x2D, 0x20, 0x64, 0x61, 0x79, 0x20, 
52372
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x79, 0x65, 0x61, 0x72, 0x20, 0x5B, 0x30, 0x2D, 0x33, 
52373
  0x36, 0x35, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x73, 0x74, 0x20, 0x2D, 0x20, 0x69, 0x66, 
52374
  0x20, 0x44, 0x61, 0x79, 0x20, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x20, 0x53, 0x61, 0x76, 0x69, 0x6E, 
52375
  0x67, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0xDA, 
52376
  0x08, 0xDA, 0x8B, 0x03, 0xDA, 0x8B, 0x04, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 
52377
  0x8F, 0x82, 0x56, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1F, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
52378
  0x2F, 0x62, 0x6C, 0x69, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 
52379
  0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x2D, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 
52380
  0x72, 0x63, 0x2D, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x72, 0x63, 0x2D, 0x65, 0x6E, 0x64, 
52381
  0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
52382
  0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 0x60, 0x20, 
52383
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0x20, 0x43, 0x61, 0x6E, 
52384
  0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x61, 0x6B, 0x65, 
52385
  0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 
52386
  0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x61, 0x72, 
52387
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 
52388
  0x70, 0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x61, 
52389
  0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0x20, 0x49, 0x6E, 
52390
  0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 
52391
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 
52392
  0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
52393
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 0x60, 0x20, 0x6F, 0x72, 
52394
  0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
52395
  0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x05, 0xDA, 0x8B, 0x06, 
52396
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x38, 0x4A, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
52397
  0xE9, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x61, 0x72, 
52398
  0x72, 0x74, 0x75, 0x70, 0x20, 0x5B, 0x2C, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3D, 0x30, 0x20, 0x5B, 
52399
  0x2C, 0x65, 0x6E, 0x64, 0x3D, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 
52400
  0x74, 0x75, 0x70, 0x29, 0x5D, 0x5D, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 
52401
  0x73, 0x75, 0x62, 0x2D, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 
52402
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 
52403
  0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x73, 0x74, 
52404
  0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x74, 
52405
  0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x65, 0x78, 
52406
  0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x74, 0x61, 
52407
  0x72, 0x74, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x72, 0x65, 
52408
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 
52409
  0x68, 0x65, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x30, 
52410
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 
52411
  0x6F, 0x66, 0x20, 0x60, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x73, 
52412
  0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 
52413
  0x74, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x63, 0x61, 0x6E, 
52414
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 
52415
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6E, 
52416
  0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
52417
  0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 
52418
  0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x66, 0x20, 0x60, 
52419
  0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 
52420
  0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 
52421
  0x76, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 
52422
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 
52423
  0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x74, 0x6F, 
52424
  0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 
52425
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 
52426
  0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
52427
  0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x2C, 0xDA, 0x8B, 
52428
  0x07, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
52429
  0xFE, 0x28, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 
52430
  0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x55, 0x73, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
52431
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x6C, 0x69, 
52432
  0x74, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6D, 
52433
  0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x0A, 
52434
  0x61, 0x6E, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x20, 
52435
  0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 
52436
  0x20, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x71, 0x75, 0x61, 0x73, 0x69, 0x71, 
52437
  0x75, 0x6F, 0x74, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x69, 0x64, 0x69, 0x6F, 0x6D, 0x20, 
52438
  0x60, 0x28, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x2C, 0x6D, 0x79, 0x2D, 0x63, 
52439
  0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x72, 0x67, 0x31, 
52440
  0x20, 0x61, 0x72, 0x67, 0x32, 0x2E, 0x2E, 0x2E, 0x29, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
52441
  0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x0A, 0x74, 0x6F, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 0x20, 
52442
  0x75, 0x6E, 0x77, 0x61, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 
52443
  0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6D, 0x79, 
52444
  0x2D, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x60, 0x2E, 0xDA, 
52445
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x08, 0xDA, 0x8B, 0x0A, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 
52446
  0x15, 0x28, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 
52447
  0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
52448
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 
52449
  0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
52450
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 
52451
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 
52452
  0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
52453
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x2C, 0x20, 0x65, 0x78, 0x63, 
52454
  0x65, 0x70, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 
52455
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x2C, 0x20, 0x77, 0x68, 
52456
  0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 
52457
  0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
52458
  0x72, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 
52459
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
52460
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 
52461
  0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x70, 0x75, 0x73, 0x68, 0x65, 
52462
  0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
52463
  0x20, 0x74, 0x6F, 0x20, 0x66, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x0B, 0xDA, 0x85, 0xB9, 0xD3, 0x03, 
52464
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x75, 0x01, 0xDA, 0x06, 0xCE, 0x1C, 0x28, 0x6E, 0x69, 
52465
  0x6C, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
52466
  0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xB7, 0xDA, 0x8B, 
52467
  0x0D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x30, 0x01, 0xDA, 0x06, 0xCE, 
52468
  0x80, 0x84, 0x28, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3F, 0x20, 0x64, 0x73, 
52469
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
52470
  0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
52471
  0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 
52472
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 
52473
  0x65, 0x60, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 
52474
  0x74, 0x69, 0x6D, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x70, 0x6F, 0x72, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
52475
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 
52476
  0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x0E, 0xDA, 0x85, 0x4D, 0xD3, 0x03, 
52477
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0x04, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0x6C, 0x28, 
52478
  0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6F, 0x70, 0x74, 0x73, 
52479
  0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 
52480
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
52481
  0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 
52482
  0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x0A, 
52483
  0x61, 0x6E, 0x64, 0x20, 0x65, 0x6E, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 
52484
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x63, 0x6F, 
52485
  0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 
52486
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
52487
  0x6E, 0x73, 0x20, 0x60, 0x28, 0x69, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
52488
  0x65, 0x6E, 0x74, 0x20, 0x3A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
52489
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x20, 0x77, 0x68, 
52490
  0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x0A, 0x60, 0x6F, 0x70, 
52491
  0x74, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 
52492
  0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x70, 0x74, 0x69, 
52493
  0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
52494
  0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 
52495
  0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x60, 0x20, 
52496
  0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x72, 
52497
  0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
52498
  0x72, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x67, 
52499
  0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 
52500
  0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 
52501
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x70, 
52502
  0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x2D, 0x20, 0x64, 
52503
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 
52504
  0x72, 0x73, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x65, 0x6E, 0x76, 0x60, 0x20, 
52505
  0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
52506
  0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x67, 
52507
  0x61, 0x69, 0x6E, 0x73, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
52508
  0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 
52509
  0x6E, 0x76, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
52510
  0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
52511
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 
52512
  0x72, 0x73, 0x20, 0x28, 0x75, 0x73, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 
52513
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, 0x20, 
52514
  0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 
52515
  0x20, 0x60, 0x3A, 0x3C, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 0x60, 0x0A, 
52516
  0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
52517
  0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
52518
  0x62, 0x61, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
52519
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x65, 
52520
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 
52521
  0x70, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x63, 
52522
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x60, 0x20, 
52523
  0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 
52524
  0x61, 0x6E, 0x79, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 
52525
  0x72, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x77, 
52526
  0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 
52527
  0x20, 0x60, 0x3A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 
52528
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 
52529
  0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x2E, 0x20, 
52530
  0x53, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x28, 0x65, 0x76, 
52531
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x20, 0x73, 0x6F, 
52532
  0x75, 0x72, 0x63, 0x65, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x77, 0x68, 0x65, 
52533
  0x72, 0x65, 0x29, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 
52534
  0x61, 0x74, 0x75, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 
52535
  0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 
52536
  0x73, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x64, 0x65, 
52537
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 
52538
  0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
52539
  0x60, 0x3A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x2D, 
52540
  0x2D, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 
52541
  0x77, 0x72, 0x61, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 
52542
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 
52543
  0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x69, 0x61, 0x2E, 
52544
  0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 
52545
  0x60, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
52546
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
52547
  0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 
52548
  0x20, 0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 
52549
  0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 
52550
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
52551
  0x60, 0x3A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x70, 0x72, 0x6F, 
52552
  0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x70, 0x61, 
52553
  0x72, 0x73, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 
52554
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x6E, 
52555
  0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x61, 0x73, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 
52556
  0x27, 0x73, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x74, 0x2D, 0x69, 0x6E, 0x20, 
52557
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x72, 
52558
  0x65, 0x61, 0x64, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
52559
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 
52560
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 
52561
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x28, 0x72, 0x65, 
52562
  0x61, 0x64, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x29, 0x60, 0x2E, 
52563
  0x0A, 0x20, 0x20, 0x20, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 
52564
  0x6C, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x1F, 
52565
  0xDA, 0x8B, 0x10, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x81, 0x53, 0x01, 
52566
  0xDA, 0x06, 0xCE, 0x80, 0xEF, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 
52567
  0x76, 0x65, 0x20, 0x61, 0x72, 0x72, 0x20, 0x61, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
52568
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 
52569
  0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x73, 0x74, 0x61, 
52570
  0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 
52571
  0x61, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 
52572
  0x72, 0x60, 0x2E, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 
52573
  0x65, 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 
52574
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 
52575
  0x68, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x64, 
52576
  0x65, 0x78, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 
52577
  0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 
52578
  0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 
52579
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 0x31, 
52580
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
52581
  0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x11, 0xDA, 0x8B, 0x12, 0xD3, 0x03, 0xDA, 0x03, 
52582
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x25, 0x01, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x70, 0x72, 
52583
  0x69, 0x6E, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 
52584
  0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 
52585
  0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x64, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 
52586
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
52587
  0x8B, 0x13, 0xDA, 0x85, 0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xC4, 
52588
  0x01, 0xDA, 0x06, 0xCE, 0x37, 0x28, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 
52589
  0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 
52590
  0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 
52591
  0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 
52592
  0x3B, 0xDA, 0x8B, 0x14, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x84, 0x1B, 
52593
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xFF, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 
52594
  0x72, 0x6F, 0x72, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x49, 0x66, 0x20, 
52595
  0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 
52596
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 
52597
  0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 
52598
  0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 
52599
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
52600
  0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 
52601
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x41, 0x6C, 0x73, 0x6F, 0x20, 0x66, 
52602
  0x6C, 0x75, 0x73, 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
52603
  0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 
52604
  0x65, 0x72, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 
52605
  0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x65, 
52606
  0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
52607
  0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x61, 
52608
  0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 
52609
  0x72, 0x6F, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x0F, 0xDA, 0x8B, 0x15, 0xD3, 0x03, 0xDA, 0x03, 
52610
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x49, 0x01, 0xDA, 0x06, 0xCE, 0x45, 0x28, 0x65, 0x76, 
52611
  0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 
52612
  0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 
52613
  0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 
52614
  0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 
52615
  0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x16, 0xDA, 0x8B, 0x17, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
52616
  0x00, 0xDA, 0x80, 0x8F, 0x80, 0xC6, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x62, 0x75, 0x66, 
52617
  0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 
52618
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
52619
  0x2C, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 
52620
  0x69, 0x74, 0x68, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 
52621
  0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 
52622
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x60, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 
52623
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 
52624
  0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x30, 
52625
  0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x58, 0xDA, 0x8B, 0x18, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
52626
  0xDA, 0x90, 0x38, 0x79, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 
52627
  0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
52628
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x62, 0x79, 
52629
  0x20, 0x6A, 0x6F, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 
52630
  0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x61, 
52631
  0x6E, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x19, 0xDA, 
52632
  0x8B, 0x1A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xB4, 0x01, 0xDA, 
52633
  0x06, 0xCE, 0x81, 0x89, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 
52634
  0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 
52635
  0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
52636
  0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 
52637
  0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
52638
  0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
52639
  0x20, 0x69, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 
52640
  0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 
52641
  0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x2C, 
52642
  0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 
52643
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
52644
  0x20, 0x30, 0x2E, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 
52645
  0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 
52646
  0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 
52647
  0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 
52648
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
52649
  0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 
52650
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x66, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 
52651
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 
52652
  0x69, 0x73, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x61, 0x6E, 
52653
  0x64, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 
52654
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 
52655
  0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
52656
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 
52657
  0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
52658
  0x3D, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x61, 0x78, 0xD3, 
52659
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xB8, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x54, 
52660
  0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 
52661
  0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 
52662
  0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 
52663
  0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x2D, 0x28, 0x32, 0x5E, 0x35, 0x33, 0x29, 
52664
  0x29, 0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0xDA, 0x86, 0x40, 0xD3, 
52665
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x4A, 0x28, 0x64, 
52666
  0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 
52667
  0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 
52668
  0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x74, 0x68, 
52669
  0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 
52670
  0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x1B, 
52671
  0xDA, 0x8B, 0x1D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xEF, 0x01, 0xDA, 
52672
  0x06, 0xCE, 0x80, 0x90, 0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 0x72, 0x73, 0x20, 0x76, 
52673
  0x61, 0x72, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 
52674
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 
52675
  0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 
52676
  0x76, 0x61, 0x72, 0x73, 0x60, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x69, 0x6C, 
52677
  0x79, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 
52678
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x0A, 0x60, 0x6C, 
52679
  0x65, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x62, 0x69, 
52680
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 
52681
  0x76, 0x61, 0x72, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x1E, 0xDA, 0x8B, 0x33, 0xD3, 
52682
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 
52683
  0x70, 0x72, 0x65, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 
52684
  0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x70, 0x6F, 0x73, 
52685
  0x74, 0x77, 0x61, 0x6C, 0x6B, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x20, 0x70, 
52686
  0x72, 0x65, 0x2D, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 
52687
  0x61, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x34, 0xDA, 0x8B, 0x36, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
52688
  0x03, 0x00, 0xDA, 0x04, 0x87, 0x7A, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0x1A, 0x28, 0x6D, 0x61, 0x74, 
52689
  0x63, 0x68, 0x20, 0x78, 0x20, 0x26, 0x20, 0x63, 0x61, 0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x50, 
52690
  0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x2E, 
52691
  0x20, 0x4D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
52692
  0x73, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 
52693
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x63, 
52694
  0x61, 0x73, 0x65, 0x73, 0x2E, 0x0A, 0x45, 0x61, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 
52695
  0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
52696
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x2C, 0x20, 0x66, 
52697
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 
52698
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x0A, 0x65, 0x76, 0x61, 0x6C, 
52699
  0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
52700
  0x63, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x2E, 
52701
  0x20, 0x20, 0x4C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 
52702
  0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
52703
  0x2D, 0x2D, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 
52704
  0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x77, 0x69, 
52705
  0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x74, 0x68, 0x69, 0x6E, 
52706
  0x67, 0x2C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x78, 0x60, 0x27, 0x73, 
52707
  0x0A, 0x20, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 
52708
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x61, 0x72, 0x72, 0x61, 
52709
  0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x74, 0x75, 0x70, 
52710
  0x6C, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
52711
  0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
52712
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
52713
  0x69, 0x66, 0x0A, 0x20, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 
52714
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 
52715
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
52716
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 0x60, 
52717
  0x2E, 0x0A, 0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x60, 0x26, 0x20, 0x72, 0x65, 0x73, 0x74, 0x60, 
52718
  0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x61, 
52719
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 
52720
  0x65, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x69, 
52721
  0x6E, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 
52722
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x65, 0x73, 0x74, 
52723
  0x60, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 
52724
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
52725
  0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
52726
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 
52727
  0x75, 0x65, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x77, 0x69, 0x74, 0x68, 0x0A, 0x20, 
52728
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 
52729
  0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 0x60, 
52730
  0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 
52731
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 
52732
  0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 
52733
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6D, 0x61, 
52734
  0x74, 0x63, 0x68, 0x65, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x20, 
52735
  0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
52736
  0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 
52737
  0x61, 0x73, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 
52738
  0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
52739
  0x5F, 0x60, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 
52740
  0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 
52741
  0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x5F, 0x60, 0x20, 0x73, 0x79, 
52742
  0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 
52743
  0x20, 0x77, 0x69, 0x6C, 0x64, 0x63, 0x61, 0x72, 0x64, 0x0A, 0x20, 0x20, 0x74, 0x68, 0x61, 0x74, 
52744
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 
52745
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 0x72, 
52746
  0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
52747
  0x2E, 0x0A, 0x0A, 0x57, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
52748
  0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 
52749
  0x72, 0x64, 0x69, 0x6E, 0x61, 0x72, 0x69, 0x6C, 0x79, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 
52750
  0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
52751
  0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 0x28, 0x40, 0x20, 0x3C, 0x73, 0x79, 0x6D, 0x3E, 
52752
  0x29, 0x60, 0x2C, 0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x3C, 0x73, 0x79, 0x6D, 0x3E, 
52753
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 
52754
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x20, 0x74, 0x6F, 
52755
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 
52756
  0x73, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x61, 0x6C, 0x72, 0x65, 0x61, 
52757
  0x64, 0x79, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x3C, 0x73, 0x79, 
52758
  0x6D, 0x3E, 0x60, 0x2C, 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 
52759
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
52760
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x2E, 0x0A, 0x0A, 0x41, 0x6E, 0x79, 
52761
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x74, 
52762
  0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6D, 
52763
  0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 
52764
  0x75, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x0A, 0x51, 0x75, 0x6F, 0x74, 
52765
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 
52766
  0x74, 0x68, 0x20, 0x60, 0x27, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 
52767
  0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
52768
  0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x76, 0x61, 
52769
  0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x67, 0x61, 
52770
  0x69, 0x6E, 0x73, 0x74, 0x2E, 0x0A, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x37, 0xDA, 0x86, 
52771
  0x42, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x46, 0x01, 0xDA, 0x06, 0xCE, 0x45, 
52772
  0x28, 0x64, 0x65, 0x66, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 
52773
  0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x69, 
52774
  0x76, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
52775
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 
52776
  0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x8E, 0xDA, 0x8B, 0x90, 
52777
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x53, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
52778
  0x48, 0x28, 0x74, 0x72, 0x79, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 
52779
  0x29, 0x0A, 0x0A, 0x54, 0x72, 0x79, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x74, 0x68, 0x69, 0x6E, 0x67, 
52780
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
52781
  0x73, 0x2E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 
52782
  0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2C, 0x0A, 0x61, 0x6E, 0x64, 
52783
  0x20, 0x60, 0x63, 0x61, 0x74, 0x63, 0x68, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 
52784
  0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
52785
  0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
52786
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
52787
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x0A, 0x73, 0x68, 0x6F, 
52788
  0x75, 0x6C, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x69, 
52789
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 
52790
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
52791
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x0A, 0x74, 0x68, 0x65, 
52792
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 
52793
  0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
52794
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 
52795
  0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x65, 0x72, 0x72, 
52796
  0x6F, 0x72, 0x2C, 0x0A, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 
52797
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x63, 0x61, 0x74, 0x63, 0x68, 0x60, 0x20, 0x69, 0x66, 0x20, 
52798
  0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 
52799
  0x91, 0xDA, 0x8B, 0x99, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x80, 0xDB, 
52800
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x56, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x65, 0x6E, 0x73, 
52801
  0x75, 0x72, 0x65, 0x20, 0x61, 0x72, 0x72, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 
52802
  0x20, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x45, 0x6E, 0x73, 0x75, 0x72, 0x65, 
52803
  0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 
52804
  0x79, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
52805
  0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x20, 0x65, 0x6E, 0x6F, 
52806
  0x75, 0x67, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 
52807
  0x79, 0x60, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
52808
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x72, 
52809
  0x6F, 0x77, 0x74, 0x68, 0x2E, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x60, 
52810
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x60, 0x20, 0x6D, 0x75, 
52811
  0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x2E, 0x20, 
52812
  0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 
52813
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 
52814
  0x64, 0x79, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 
52815
  0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x64, 0x6F, 
52816
  0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 
52817
  0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 
52818
  0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
52819
  0x65, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x6F, 
52820
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x65, 
52821
  0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 
52822
  0x9A, 0xDA, 0x8B, 0x9B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0xB1, 
52823
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 
52824
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x6B, 0x65, 0x20, 0x73, 
52825
  0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
52826
  0x6D, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x69, 
52827
  0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0x20, 0x54, 0x68, 0x69, 
52828
  0x73, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x69, 0x6C, 0x79, 0x20, 0x64, 0x69, 
52829
  0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x4E, 0x61, 0x67, 0x6C, 0x65, 0x27, 0x73, 0x20, 0x61, 
52830
  0x6C, 0x67, 0x6F, 0x72, 0x69, 0x74, 0x68, 0x6D, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 
52831
  0x69, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 
52832
  0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x69, 0x74, 
52833
  0x68, 0x6F, 0x75, 0x74, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
52834
  0x72, 0x6E, 0x73, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x9C, 
52835
  0xDA, 0x83, 0x7F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xD2, 0x01, 0xDA, 
52836
  0x06, 0xCE, 0x80, 0x8E, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x73, 
52837
  0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 
52838
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 
52839
  0x6C, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
52840
  0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x61, 
52841
  0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x66, 
52842
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 
52843
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x2C, 0x0A, 0x75, 
52844
  0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 0x70, 
52845
  0x69, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x7D, 0xDA, 0x8B, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
52846
  0x00, 0xDA, 0x80, 0x95, 0x82, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x3B, 0x28, 0x6E, 0x65, 0x74, 
52847
  0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 
52848
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 
52849
  0x65, 0x75, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
52850
  0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
52851
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x74, 0x68, 
52852
  0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x72, 0x65, 
52853
  0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 
52854
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 
52855
  0x63, 0x65, 0x70, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 
52856
  0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x68, 0x61, 
52857
  0x6E, 0x64, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
52858
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
52859
  0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
52860
  0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
52861
  0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 
52862
  0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 
52863
  0x6F, 0x6E, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x3A, 0x73, 0x74, 
52864
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x63, 
52865
  0x70, 0x29, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 
52866
  0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x75, 0x64, 0x70, 0x29, 0x2E, 0x20, 
52867
  0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 
52868
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 
52869
  0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x68, 0x6F, 
52870
  0x73, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 
52871
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 
52872
  0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 
52873
  0x72, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x62, 
52874
  0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 
52875
  0x20, 0x60, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
52876
  0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 
52877
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x53, 0x4F, 0x5F, 0x52, 0x45, 0x55, 0x53, 0x45, 0x41, 0x44, 0x44, 
52878
  0x52, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x53, 0x4F, 0x5F, 0x52, 0x45, 0x55, 0x53, 0x45, 
52879
  0x50, 0x4F, 0x52, 0x54, 0x60, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
52880
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 
52881
  0x73, 0x6F, 0x6D, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 
52882
  0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xB2, 0xDA, 0x8B, 0x9E, 0xD3, 
52883
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x18, 0x01, 0xDA, 0x06, 0xCE, 0x34, 0x28, 
52884
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x6D, 0x31, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
52885
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
52886
  0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x6D, 0x69, 0x6E, 0x75, 0x73, 
52887
  0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x9F, 0xDA, 0x8B, 0xA0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
52888
  0x03, 0x00, 0xDA, 0x04, 0x83, 0x8D, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x70, 0x6F, 0x73, 0x3F, 
52889
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
52890
  0x69, 0x73, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
52891
  0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xA1, 0xDA, 0x8B, 0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
52892
  0x00, 0xDA, 0x4C, 0x89, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x6F, 0x73, 0x2F, 0x75, 0x6D, 
52893
  0x61, 0x73, 0x6B, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 
52894
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
52895
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x20, 0x75, 0x6D, 0x61, 0x73, 
52896
  0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xA4, 0xDA, 0x86, 0x3D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
52897
  0x00, 0xDA, 0x04, 0x0A, 0x01, 0xDA, 0x06, 0xCE, 0x57, 0x28, 0x64, 0x65, 0x66, 0x6E, 0x20, 0x6E, 
52898
  0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 
52899
  0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 
52900
  0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 
52901
  0x64, 0x65, 0x66, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x28, 0x66, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 
52902
  0x65, 0x20, 0x5B, 0x61, 0x72, 0x67, 0x73, 0x5D, 0x20, 0x2E, 0x2E, 0x2E, 0x29, 0x29, 0x60, 0x2E, 
52903
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x7E, 0xDA, 0x8B, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
52904
  0x03, 0x00, 0xDA, 0x4C, 0x86, 0x4E, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x6F, 0x73, 0x2F, 0x73, 
52905
  0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x76, 
52906
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 
52907
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 
52908
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xA6, 0xDA, 0x8B, 0xA7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
52909
  0x03, 0x00, 0xDA, 0x04, 0x73, 0x01, 0xDA, 0x06, 0xCE, 0x1E, 0x28, 0x74, 0x72, 0x75, 0x65, 0x3F, 
52910
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
52911
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xA8, 0xDA, 0x8B, 0xAA, 
52912
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x22, 0x01, 0xDA, 0x06, 0xCE, 0x47, 
52913
  0x28, 0x6A, 0x75, 0x78, 0x74, 0x20, 0x26, 0x20, 0x66, 0x75, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 
52914
  0x61, 0x63, 0x72, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6A, 0x75, 
52915
  0x78, 0x74, 0x2A, 0x60, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 
52916
  0x69, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 
52917
  0x69, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xAB, 0xDA, 
52918
  0x8B, 0xB3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x95, 0x01, 0xDA, 0x06, 
52919
  0xCE, 0x80, 0xC8, 0x28, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 
52920
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 
52921
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
52922
  0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 
52923
  0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x44, 
52924
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
52925
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x65, 
52926
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 
52927
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
52928
  0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 
52929
  0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
52930
  0x67, 0x73, 0x0A, 0x28, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
52931
  0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xB4, 
52932
  0xDA, 0x8B, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x74, 0x01, 
52933
  0xDA, 0x06, 0xCE, 0x2E, 0x28, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3F, 0x20, 0x78, 
52934
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
52935
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 
52936
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xB7, 0xDA, 0x8B, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
52937
  0x00, 0xDA, 0x80, 0xA1, 0x80, 0xBC, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x73, 0x79, 0x6D, 0x62, 
52938
  0x6F, 0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 
52939
  0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 
52940
  0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 
52941
  0x6C, 0x69, 0x63, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
52942
  0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xB9, 
52943
  0xDA, 0x8B, 0xBA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x2B, 0x01, 0xDA, 
52944
  0x06, 0xCE, 0x80, 0xC5, 0x28, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 0x20, 0x6F, 0x72, 0x64, 
52945
  0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
52946
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x65, 
52947
  0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x61, 0x72, 0x67, 
52948
  0x73, 0x60, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
52949
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x60, 
52950
  0x2E, 0x0A, 0x60, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
52951
  0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
52952
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x72, 0x75, 0x65, 
52953
  0x20, 0x6F, 0x72, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x28, 0x61, 0x20, 0x63, 0x6F, 0x6D, 
52954
  0x70, 0x61, 0x72, 0x69, 0x73, 0x6F, 0x6E, 0x29, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
52955
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 
52956
  0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xBB, 0xDA, 0x8B, 
52957
  0xBD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0x3D, 0x01, 0xDA, 0x06, 0xCE, 
52958
  0x50, 0x28, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 
52959
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 
52960
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
52961
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 
52962
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 
52963
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xD9, 0xDA, 0x80, 0xB9, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
52964
  0xDA, 0x04, 0x8F, 0x08, 0x03, 0xDA, 0x06, 0xCE, 0x75, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 
52965
  0x68, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x26, 0x20, 0x62, 0x6F, 
52966
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 
52967
  0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x63, 
52968
  0x71, 0x75, 0x69, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 
52969
  0x57, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6C, 
52970
  0x6C, 0x79, 0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
52971
  0x6F, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x59, 
52972
  0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xBE, 0xDA, 0x8B, 0xC0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
52973
  0xDA, 0x4C, 0x89, 0xF7, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x52, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x65, 
52974
  0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x74, 0x29, 0x0A, 0x0A, 
52975
  0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x6F, 
52976
  0x63, 0x74, 0x61, 0x6C, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 
52977
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x70, 0x65, 0x72, 
52978
  0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 
52979
  0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 
52980
  0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x68, 0x75, 
52981
  0x6D, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 
52982
  0x69, 0x6E, 0x67, 0x2C, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 
52983
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x69, 0x6E, 0x67, 
52984
  0x20, 0x6F, 0x66, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x74, 0x6F, 0x6F, 0x6C, 0x73, 0x20, 0x6C, 
52985
  0x69, 0x6B, 0x65, 0x20, 0x60, 0x6C, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
52986
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 
52987
  0x61, 0x20, 0x39, 0x2D, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x73, 0x74, 
52988
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x2C, 0x20, 0x77, 0x2C, 0x20, 0x78, 0x20, 
52989
  0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 
52990
  0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 
52991
  0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x64, 0x69, 0x72, 0x65, 
52992
  0x63, 0x74, 0x6F, 0x72, 0x79, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x63, 0x68, 
52993
  0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x6E, 0x64, 0x65, 
52994
  0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6C, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 
52995
  0xC1, 0xDA, 0x8B, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x58, 
52996
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 
52997
  0x6B, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 
52998
  0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
52999
  0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 
53000
  0x74, 0x68, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 
53001
  0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 
53002
  0x20, 0x77, 0x65, 0x61, 0x6B, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 
53003
  0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 
53004
  0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 
53005
  0x77, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
53006
  0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xC3, 0xDA, 
53007
  0x8B, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x74, 0x01, 0xDA, 0x06, 0xCE, 
53008
  0x20, 0x28, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
53009
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 
53010
  0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xC5, 0xDA, 0x81, 0x85, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53011
  0xDA, 0x04, 0x87, 0x4E, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x73, 0x6C, 0x75, 0x72, 0x70, 0x20, 
53012
  0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
53013
  0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 
53014
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 
53015
  0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 
53016
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x82, 0xDA, 
53017
  0x80, 0xB7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xF9, 0x03, 0xDA, 0x06, 
53018
  0xCE, 0x80, 0x84, 0x28, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 
53019
  0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 
53020
  0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
53021
  0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 0x20, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 
53022
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 
53023
  0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 
53024
  0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 
53025
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 
53026
  0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xC7, 0xDA, 
53027
  0x8B, 0xCA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x30, 0x01, 0xDA, 0x06, 
53028
  0xCE, 0x81, 0x71, 0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x70, 
53029
  0x61, 0x74, 0x68, 0x73, 0x20, 0x65, 0x78, 0x74, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x29, 
53030
  0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 
53031
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x20, 0x66, 0x6F, 
53032
  0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 
53033
  0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x67, 
53034
  0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x62, 
53035
  0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 
53036
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2C, 0x20, 0x69, 
53037
  0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 
53038
  0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 
53039
  0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x73, 0x2E, 0x20, 0x60, 
53040
  0x65, 0x78, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 
53041
  0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x74, 0x6F, 0x20, 0x61, 0x73, 
53042
  0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x69, 
53043
  0x73, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x69, 
53044
  0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6F, 0x74, 
53045
  0x2E, 0x20, 0x60, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
53046
  0x65, 0x0A, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 
53047
  0x66, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 
53048
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0x60, 0x2E, 0x20, 
53049
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
53050
  0x66, 0x69, 0x65, 0x64, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 
53051
  0x68, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xCB, 0xDA, 0x8B, 0xDE, 0xD3, 0x03, 0xDA, 0x03, 
53052
  0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x2F, 0x80, 0xFA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD3, 0x28, 0x64, 
53053
  0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x66, 0x75, 0x6E, 0x20, 
53054
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x63, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 
53055
  0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
53056
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 
53057
  0x70, 0x63, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
53058
  0x6C, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
53059
  0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 
53060
  0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x66, 0x75, 0x6E, 
53061
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 
53062
  0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 
53063
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
53064
  0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x6C, 
53065
  0x61, 0x72, 0x67, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 
53066
  0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xB4, 0xCF, 0x07, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x69, 0xD3, 
53067
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x0D, 0x54, 
53068
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x69, 0x2E, 0xDA, 0x08, 0xC8, 0x18, 
53069
  0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40, 0xDA, 0x8B, 0xDF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53070
  0x00, 0xDA, 0x8F, 0x63, 0x82, 0x9A, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x66, 0x69, 0x62, 0x65, 
53071
  0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x69, 0x62, 
53072
  0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
53073
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 
53074
  0x20, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 
53075
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 
53076
  0xE5, 0xDA, 0x8A, 0x12, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x08, 0x01, 
53077
  0xDA, 0x06, 0xCE, 0x44, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 
53078
  0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 
53079
  0x61, 0x73, 0x20, 0x60, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 
53080
  0x28, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x65, 0x64, 
53081
  0x29, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x05, 0xDA, 0x8B, 0xE0, 
53082
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0xB3, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
53083
  0x8E, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 
53084
  0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 
53085
  0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 
53086
  0x75, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 
53087
  0x2E, 0x20, 0x43, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 
53088
  0x20, 0x60, 0x61, 0x72, 0x67, 0x76, 0x5B, 0x30, 0x5D, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
53089
  0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x0A, 0x20, 0x20, 0x60, 0x69, 0x6E, 0x74, 
53090
  0x20, 0x6D, 0x61, 0x69, 0x6E, 0x28, 0x69, 0x6E, 0x74, 0x20, 0x61, 0x72, 0x67, 0x63, 0x2C, 0x20, 
53091
  0x63, 0x68, 0x61, 0x72, 0x20, 0x2A, 0x2A, 0x61, 0x72, 0x67, 0x76, 0x29, 0x3B, 0x60, 0x2E, 0xDA, 
53092
  0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x89, 0x4B, 0xDA, 0x8B, 0xE1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53093
  0x03, 0x00, 0xDA, 0x4C, 0x80, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x3C, 0x28, 0x6F, 0x73, 0x2F, 
53094
  0x77, 0x68, 0x69, 0x63, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 
53095
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 
53096
  0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
53097
  0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
53098
  0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x67, 
53099
  0x77, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x79, 0x67, 0x77, 0x69, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 
53100
  0x3A, 0x6D, 0x61, 0x63, 0x6F, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x65, 0x62, 0x20, 0x2D, 
53101
  0x20, 0x57, 0x65, 0x62, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x28, 0x65, 
53102
  0x6D, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x65, 0x6E, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6C, 
53103
  0x69, 0x6E, 0x75, 0x78, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x72, 0x65, 0x65, 0x62, 0x73, 0x64, 
53104
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6F, 0x70, 0x65, 0x6E, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 
53105
  0x3A, 0x6E, 0x65, 0x74, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x72, 0x61, 0x67, 
53106
  0x6F, 0x6E, 0x66, 0x6C, 0x79, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 
53107
  0x20, 0x3A, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x50, 0x4F, 0x53, 0x49, 
53108
  0x58, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 
53109
  0x74, 0x65, 0x6D, 0x20, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x4D, 
53110
  0x61, 0x79, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 
53111
  0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
53112
  0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x62, 0x75, 0x69, 
53113
  0x6C, 0x64, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x1D, 0xDA, 0x8B, 0xE2, 
53114
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x29, 0x01, 0xDA, 0x06, 0xCE, 
53115
  0x57, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 
53116
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 
53117
  0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 
53118
  0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 
53119
  0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
53120
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xE3, 0xDA, 0x8B, 0xE4, 
53121
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xC6, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
53122
  0xA1, 0x28, 0x61, 0x73, 0x2D, 0x3E, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x26, 0x20, 0x66, 0x6F, 
53123
  0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x6F, 0x72, 
53124
  0x6D, 0x73, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2C, 0x20, 0x72, 0x65, 0x70, 
53125
  0x6C, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x61, 0x73, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x60, 
53126
  0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
53127
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 
53128
  0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
53129
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
53130
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
53131
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53132
  0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xE5, 0xDA, 0x8B, 0xE9, 0xD3, 0x03, 0xDA, 
53133
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x40, 0x01, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x7A, 0x69, 
53134
  0x70, 0x63, 0x6F, 0x6C, 0x6C, 0x20, 0x6B, 0x73, 0x20, 0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
53135
  0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 
53136
  0x6F, 0x6D, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2F, 0x74, 0x75, 
53137
  0x70, 0x6C, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
53138
  0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xEA, 0xDA, 
53139
  0x8B, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x81, 0x34, 0x01, 0xDA, 
53140
  0x06, 0xCE, 0x81, 0x33, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 
53141
  0x74, 0x20, 0x61, 0x72, 0x72, 0x20, 0x61, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
53142
  0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 
53143
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 
53144
  0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x61, 0x74, 0x60, 0x2E, 0x20, 
53145
  0x60, 0x61, 0x74, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 
53146
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 
53147
  0x6E, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 
53148
  0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 
53149
  0x20, 0x41, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53150
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
53151
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 
53152
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
53153
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 
53154
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
53155
  0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
53156
  0x6E, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x2D, 0x31, 0x20, 0x61, 
53157
  0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
53158
  0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
53159
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xE0, 0xDA, 0x8B, 0xF0, 0xD3, 
53160
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x75, 0x81, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
53161
  0xA5, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 
53162
  0x65, 0x20, 0x73, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 
53163
  0x69, 0x76, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 
53164
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 
53165
  0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 
53166
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x6F, 
53167
  0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x27, 
53168
  0x73, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 
53169
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
53170
  0x27, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x73, 
53171
  0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x91, 0xDA, 0x86, 0x29, 0xD3, 0x03, 
53172
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xB7, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xFC, 0x28, 
53173
  0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 
53174
  0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 
53175
  0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 
53176
  0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 
53177
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 
53178
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x72, 
53179
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 
53180
  0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x62, 0x75, 
53181
  0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x0A, 0x60, 0x69, 0x6E, 
53182
  0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 
53183
  0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
53184
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
53185
  0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x0A, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 
53186
  0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 
53187
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 
53188
  0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
53189
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 
53190
  0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 
53191
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 
53192
  0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
53193
  0x69, 0x72, 0x73, 0x74, 0x0A, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 
53194
  0x6C, 0x74, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 
53195
  0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 
53196
  0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
53197
  0x61, 0x73, 0x0A, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x61, 0x73, 
53198
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 
53199
  0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 
53200
  0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 
53201
  0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 
53202
  0x60, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 
53203
  0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 
53204
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x27, 
53205
  0xDA, 0x8B, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1D, 0x01, 0xDA, 
53206
  0x06, 0xCE, 0x41, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x6D, 0x61, 0x70, 0x70, 
53207
  0x69, 0x6E, 0x67, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
53208
  0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 
53209
  0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
53210
  0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xB6, 0xDA, 0x8B, 0xF2, 0xD3, 0x02, 0xDA, 0x06, 
53211
  0xCE, 0x80, 0xB1, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 
53212
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 
53213
  0x74, 0x68, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 
53214
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 
53215
  0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 
53216
  0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 
53217
  0x46, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
53218
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53219
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 
53220
  0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 
53221
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
53222
  0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x68, 0xDA, 0x8B, 0xF3, 0xD3, 0x04, 0xDA, 0x03, 
53223
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 0x6A, 0x44, 0x79, 0x6E, 0x61, 
53224
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 
53225
  0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 
53226
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x69, 
53227
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x2C, 0x20, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 
53228
  0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x60, 0x2E, 
53229
  0x20, 0x4F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x60, 0x6D, 0x61, 0x6B, 0x65, 
53230
  0x2D, 0x65, 0x6E, 0x76, 0x60, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x81, 0xA2, 0xDA, 
53231
  0x41, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xAB, 0x01, 0xDA, 0x06, 0xCE, 
53232
  0x3C, 0x28, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
53233
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 
53234
  0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 
53235
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
53236
  0x3E, 0xDA, 0x8B, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0xE0, 
53237
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x3A, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x6F, 
53238
  0x63, 0x6B, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x70, 0x74, 
53239
  0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x73, 0x65, 0x74, 0x20, 
53240
  0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x0A, 
53241
  0x0A, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 
53242
  0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 
53243
  0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x3A, 0x0A, 0x2D, 
53244
  0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x20, 0x62, 
53245
  0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x72, 0x65, 0x75, 
53246
  0x73, 0x65, 0x61, 0x64, 0x64, 0x72, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 
53247
  0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x6B, 0x65, 0x65, 0x70, 0x61, 0x6C, 0x69, 0x76, 0x65, 0x20, 0x62, 
53248
  0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x2D, 0x6D, 0x75, 0x6C, 
53249
  0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2D, 0x74, 0x74, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
53250
  0x72, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x2D, 0x61, 0x64, 0x64, 0x2D, 0x6D, 0x65, 0x6D, 0x62, 
53251
  0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 0x20, 
53252
  0x3A, 0x69, 0x70, 0x2D, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6D, 0x65, 0x6D, 0x62, 0x65, 0x72, 0x73, 
53253
  0x68, 0x69, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 
53254
  0x76, 0x36, 0x2D, 0x6A, 0x6F, 0x69, 0x6E, 0x2D, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x73, 0x74, 
53255
  0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x76, 0x36, 0x2D, 0x6C, 0x65, 0x61, 
53256
  0x76, 0x65, 0x2D, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 
53257
  0xDA, 0x08, 0xDA, 0x8B, 0xF5, 0xDA, 0x8B, 0xF6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53258
  0x8E, 0xD0, 0x81, 0x4A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 
53259
  0x67, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
53260
  0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 
53261
  0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
53262
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 
53263
  0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 
53264
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
53265
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 
53266
  0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 
53267
  0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 
53268
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
53269
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 
53270
  0xDA, 0x08, 0xDA, 0x81, 0x28, 0xDA, 0x8B, 0xF7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53271
  0x04, 0x86, 0xDC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE6, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 
53272
  0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x50, 
53273
  0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
53274
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x69, 0x61, 
53275
  0x6C, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
53276
  0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 
53277
  0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 
53278
  0x60, 0x2E, 0x20, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x73, 0x70, 
53279
  0x6C, 0x69, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x28, 0x66, 0x20, 0x78, 0x29, 0x60, 
53280
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
53281
  0x77, 0x68, 0x65, 0x6E, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 
53282
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
53283
  0x6E, 0x74, 0x20, 0x60, 0x78, 0x60, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 
53284
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 
53285
  0x72, 0x72, 0x61, 0x79, 0x0A, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2E, 0xDA, 
53286
  0x08, 0xDA, 0x8B, 0xF8, 0xDA, 0x80, 0xBB, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
53287
  0x8F, 0x12, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0x89, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 
53288
  0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x26, 0x20, 0x62, 0x6F, 
53289
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 
53290
  0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x63, 
53291
  0x71, 0x75, 0x69, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x63, 
53292
  0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 
53293
  0x6B, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 
53294
  0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 
53295
  0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x6E, 0x65, 
53296
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xFF, 0xDA, 0x8C, 0x01, 0xD3, 0x03, 0xDA, 0x03, 
53297
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xD4, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 0x73, 0x6F, 
53298
  0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 
53299
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x6F, 
53300
  0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
53301
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
53302
  0x73, 0x20, 0x62, 0x79, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x61, 0x20, 
53303
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 
53304
  0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 
53305
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
53306
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 
53307
  0x08, 0xDA, 0x8C, 0x02, 0xDA, 0x8B, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
53308
  0xD0, 0x81, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x26, 
53309
  0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
53310
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 
53311
  0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 
53312
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 
53313
  0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xB5, 0xDA, 0x83, 0xF7, 
53314
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8C, 0x01, 0xDA, 0x06, 0xCE, 0x22, 
53315
  0x28, 0x2D, 0x2D, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 
53316
  0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 
53317
  0x31, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x05, 0xDA, 0x8C, 0x07, 0xD3, 0x04, 0xDA, 
53318
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xB4, 0x01, 0xDA, 0x06, 0xCE, 0x7A, 0x41, 0x20, 0x74, 
53319
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
53320
  0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 
53321
  0x20, 0x64, 0x65, 0x6E, 0x6F, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x74, 
53322
  0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
53323
  0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 
53324
  0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x65, 0x73, 0x20, 0x66, 
53325
  0x6F, 0x72, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 
53326
  0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x76, 
53327
  0xDA, 0x8C, 0x08, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xE3, 0x28, 0x79, 0x69, 0x65, 0x6C, 0x64, 
53328
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x59, 0x69, 0x65, 0x6C, 0x64, 0x20, 
53329
  0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 
53330
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 
53331
  0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x2C, 0x20, 
53332
  0x69, 0x74, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 
53333
  0x20, 0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x61, 0x6E, 
53334
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x72, 0x65, 0x73, 
53335
  0x75, 0x6D, 0x65, 0x73, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 
53336
  0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x73, 
53337
  0x75, 0x6D, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
53338
  0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x77, 0x69, 0x6C, 
53339
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 
53340
  0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 
53341
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
53342
  0x8C, 0x09, 0xDA, 0x82, 0x17, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x16, 
53343
  0x01, 0xDA, 0x06, 0xCE, 0x33, 0x28, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x20, 0x78, 
53344
  0x29, 0x0A, 0x0A, 0x41, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
53345
  0x61, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x61, 
53346
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x15, 0xDA, 0x8C, 0x0B, 
53347
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0x9C, 0x28, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x66, 
53348
  0x69, 0x62, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x73, 0x75, 0x6D, 
53349
  0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x68, 0x61, 
53350
  0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 
53351
  0x79, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
53352
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 
53353
  0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x77, 0x69, 0x6E, 0x64, 0x20, 
53354
  0x61, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 
53355
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 
53356
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 
53357
  0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x0C, 0xDA, 0x8C, 0x0E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53358
  0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x86, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xF1, 0x28, 0x66, 0x66, 
53359
  0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x63, 0x29, 
53360
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 
53361
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 
53362
  0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
53363
  0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x61, 
53364
  0x6E, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x43, 0x20, 0x6C, 
53365
  0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 
53366
  0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 
53367
  0x6E, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
53368
  0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6D, 0x70, 
53369
  0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x28, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x5C, 0x2A, 0x63, 0x74, 0x78, 
53370
  0x2C, 0x20, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x5C, 0x2A, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 
53371
  0x61, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
53372
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 
53373
  0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
53374
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 
53375
  0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 
53376
  0x65, 0x64, 0x2E, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 
53377
  0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x20, 0x74, 
53378
  0x6F, 0x20, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 
53379
  0x65, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x60, 0x20, 0x61, 0x72, 0x67, 
53380
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 
53381
  0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
53382
  0x74, 0x68, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
53383
  0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 
53384
  0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x60, 0x63, 0x74, 0x78, 0x60, 0x20, 0x77, 0x68, 0x69, 0x63, 
53385
  0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x61, 0x71, 0x75, 0x65, 0x20, 0x70, 
53386
  0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x6F, 0x69, 
53387
  0x6E, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x66, 0x75, 0x72, 0x74, 
53388
  0x68, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x73, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 
53389
  0x74, 0x68, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x60, 0x2E, 0xDA, 0x08, 
53390
  0xDA, 0x8C, 0x0F, 0xDA, 0x8C, 0x10, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 
53391
  0x7C, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9F, 0x28, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0x20, 0x66, 
53392
  0x6F, 0x72, 0x6D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 
53393
  0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x60, 0x62, 
53394
  0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 
53395
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 
53396
  0x6E, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x6C, 0x79, 
53397
  0x20, 0x28, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x73, 
53398
  0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x30, 0x2D, 0x34, 0x29, 0x2E, 0x0A, 
53399
  0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
53400
  0x6E, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x60, 
53401
  0x62, 0x6F, 0x64, 0x79, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x11, 0xDA, 0x8C, 
53402
  0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 0x81, 0x96, 0x01, 0xDA, 0x06, 
53403
  0xCE, 0x5D, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x74, 
53404
  0x61, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
53405
  0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 
53406
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
53407
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
53408
  0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 0xDA, 
53409
  0x08, 0xDA, 0x80, 0xD2, 0xDA, 0x8C, 0x14, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
53410
  0x81, 0x15, 0x01, 0xDA, 0x06, 0xCE, 0x37, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 
53411
  0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
53412
  0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 
53413
  0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 
53414
  0xDA, 0x8C, 0x15, 0xDA, 0x8C, 0x16, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 
53415
  0x83, 0x8B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF1, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 
53416
  0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 
53417
  0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 
53418
  0x69, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 
53419
  0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
53420
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 
53421
  0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 
53422
  0x74, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x61, 
53423
  0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
53424
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
53425
  0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
53426
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
53427
  0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
53428
  0x2C, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 
53429
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 
53430
  0x65, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x17, 0xDA, 0x86, 
53431
  0x3C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x2E, 0x01, 0xDA, 0x06, 0xCE, 0x27, 
53432
  0x28, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 
53433
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 
53434
  0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x18, 0xDA, 
53435
  0x8C, 0x1A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x47, 0x01, 0xDA, 
53436
  0x06, 0xCE, 0x44, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x70, 
53437
  0x72, 0x65, 0x66, 0x69, 0x78, 0x3F, 0x20, 0x70, 0x66, 0x78, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 
53438
  0x0A, 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x60, 
53439
  0x73, 0x74, 0x72, 0x60, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 
53440
  0x20, 0x60, 0x70, 0x66, 0x78, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xBB, 0xDA, 0x8C, 0x1B, 0xD3, 
53441
  0x02, 0xDA, 0x06, 0xCE, 0x81, 0x8A, 0x28, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 
53442
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
53443
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x61, 0x74, 0x20, 
53444
  0x6B, 0x65, 0x79, 0x2C, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x73, 
53445
  0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
53446
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 
53447
  0x73, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
53448
  0x73, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x69, 
53449
  0x6E, 0x67, 0x73, 0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
53450
  0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6C, 
53451
  0x6C, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x61, 0x6E, 
53452
  0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2E, 0x20, 0x41, 
53453
  0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x73, 
53454
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2C, 
53455
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x6D, 0x75, 0x73, 
53456
  0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6B, 0x65, 
53457
  0x79, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 
53458
  0x6F, 0x75, 0x6E, 0x64, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 
53459
  0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x2E, 0x20, 0x53, 0x74, 0x72, 
53460
  0x75, 0x63, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 
53461
  0x63, 0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 
53462
  0x75, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x65, 0x78, 0x63, 0x65, 
53463
  0x70, 0x74, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
53464
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x66, 
53465
  0x6C, 0x74, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 
53466
  0xDA, 0x08, 0xDA, 0x82, 0x58, 0xDA, 0x8C, 0x1C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53467
  0x4C, 0x86, 0xB6, 0x01, 0xDA, 0x06, 0xCE, 0x7C, 0x28, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 
53468
  0x74, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x52, 
53469
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 
53470
  0x66, 0x69, 0x6C, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 
53471
  0x6E, 0x61, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x65, 0x60, 0x20, 0x69, 
53472
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 
53473
  0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
53474
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 
53475
  0x70, 0x75, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xEC, 0xDA, 0x8C, 0x1D, 0xD3, 0x03, 0xDA, 0x03, 
53476
  0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x83, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x89, 0x28, 0x70, 
53477
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
53478
  0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53479
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x6F, 0x62, 0x6A, 
53480
  0x65, 0x63, 0x74, 0x2E, 0x20, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 
53481
  0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x73, 0x20, 
53482
  0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 
53483
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 
53484
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x66, 0x20, 
53485
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x0B, 0xDA, 0x8C, 0x1E, 0xD3, 0x03, 
53486
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x81, 0xE6, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 
53487
  0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 
53488
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x20, 0x6F, 
53489
  0x66, 0x20, 0x61, 0x6E, 0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x69, 0x6E, 
53490
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x1F, 0xDA, 0x81, 0x9E, 0xD3, 
53491
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xB8, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB8, 
53492
  0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 
53493
  0x61, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
53494
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
53495
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 
53496
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 
53497
  0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
53498
  0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 
53499
  0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x62, 
53500
  0x75, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x0A, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
53501
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x6F, 0x6C, 0x6C, 0x75, 0x74, 0x65, 
53502
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 
53503
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x9A, 0xDA, 0x8C, 0x20, 
53504
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x12, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
53505
  0x8C, 0x28, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x70, 0x73, 0x29, 
53506
  0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
53507
  0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
53508
  0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
53509
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x61, 0x69, 0x72, 0x2E, 0x20, 
53510
  0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 
53511
  0x65, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x20, 0x6F, 0x6E, 0x20, 
53512
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
53513
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
53514
  0x8C, 0x21, 0xDA, 0x8C, 0x25, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x5B, 0x28, 0x62, 0x61, 0x6E, 0x64, 
53515
  0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53516
  0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x64, 
53517
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 
53518
  0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 
53519
  0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
53520
  0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x26, 0xDA, 0x8C, 0x28, 0xD3, 0x03, 
53521
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x80, 0x80, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 
53522
  0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6D, 0x70, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 
53523
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x20, 0x74, 0x65, 
53524
  0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 
53525
  0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 
53526
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0x2E, 0x20, 0x52, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 
53527
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 
53528
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x29, 0xDA, 0x8C, 0x2A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53529
  0x00, 0xDA, 0x21, 0x80, 0xBB, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB8, 0x28, 0x6D, 0x61, 0x74, 0x68, 
53530
  0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x72, 0x6E, 0x67, 0x20, 
53531
  0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
53532
  0x20, 0x6E, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
53533
  0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x20, 0x69, 0x6E, 0x20, 
53534
  0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
53535
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 
53536
  0x66, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 
53537
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
53538
  0x73, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
53539
  0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 
53540
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 
53541
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x2B, 0xDA, 0x82, 0xB2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53542
  0x03, 0x00, 0xDA, 0x04, 0x83, 0x46, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x6C, 0x61, 0x73, 0x74, 
53543
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 
53544
  0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
53545
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
53546
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xE9, 0xDA, 
53547
  0x86, 0x4B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0xDE, 0x01, 0xDA, 0x06, 
53548
  0xCE, 0x81, 0x69, 0x28, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 
53549
  0x26, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 
53550
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x20, 
53551
  0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 
53552
  0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
53553
  0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x61, 
53554
  0x74, 0x68, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 
53555
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 
53556
  0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
53557
  0x6E, 0x74, 0x2E, 0x20, 0x3A, 0x65, 0x6E, 0x76, 0x2C, 0x20, 0x3A, 0x65, 0x78, 0x70, 0x61, 0x6E, 
53558
  0x64, 0x65, 0x72, 0x2C, 0x0A, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 0x65, 
53559
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x2C, 0x20, 0x3A, 0x72, 0x65, 0x61, 0x64, 0x2C, 
53560
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 
53561
  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x20, 
53562
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 
53563
  0x67, 0x0A, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 
53564
  0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x65, 0x78, 0x69, 0x74, 0x60, 0x20, 
53565
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x74, 0x6F, 0x70, 
53566
  0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x77, 0x69, 
53567
  0x6C, 0x6C, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x61, 0x0A, 0x63, 0x61, 0x6C, 
53568
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x31, 
53569
  0x29, 0x60, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 
53570
  0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
53571
  0x53, 0xDA, 0x8C, 0x2C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0xA8, 
53572
  0x01, 0xDA, 0x06, 0xCE, 0x5D, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x20, 0x74, 0x6F, 0x20, 
53573
  0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 
53574
  0x60, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x70, 0x72, 0x69, 0x6E, 
53575
  0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 
53576
  0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53577
  0x60, 0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
53578
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x2D, 0xDA, 0x8C, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53579
  0x00, 0xDA, 0x8E, 0x86, 0x8D, 0x36, 0x01, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x65, 0x76, 0x2F, 0x72, 
53580
  0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
53581
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 
53582
  0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 
53583
  0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x2F, 
53584
  0xDA, 0x8C, 0x30, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x83, 0xF3, 0x01, 
53585
  0xDA, 0x06, 0xCE, 0x60, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 0x79, 0x74, 0x65, 
53586
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x70, 0x75, 
53587
  0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
53588
  0x60, 0x62, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 
53589
  0x73, 0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 
53590
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 
53591
  0x73, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x31, 0xDA, 0x8C, 0x32, 0xD3, 0x03, 0xDA, 0x03, 
53592
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x69, 0x28, 0x6E, 0x61, 
53593
  0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
53594
  0x78, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6C, 0x79, 
53595
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
53596
  0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x33, 
53597
  0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x77, 0x6F, 
53598
  0x27, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 
53599
  0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x33, 0xDA, 0x8C, 0x34, 0xD3, 0x03, 
53600
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x81, 0x5D, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xCF, 
53601
  0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 0x6B, 0x20, 0x66, 0x20, 0x26, 0x6F, 0x70, 
53602
  0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x4A, 0x75, 0x6D, 
53603
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
53604
  0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
53605
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x65, 0x6E, 0x63, 
53606
  0x65, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 
53607
  0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x20, 0x2D, 0x20, 0x6A, 0x75, 0x6D, 
53608
  0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
53609
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 
53610
  0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x65, 0x74, 0x20, 
53611
  0x2D, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
53612
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 
53613
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 
53614
  0x3A, 0x65, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 
53615
  0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 
53616
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x42, 0x79, 0x20, 
53617
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x77, 0x68, 0x65, 0x6E, 0x63, 0x65, 
53618
  0x60, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 
53619
  0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x6E, 
53620
  0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 
53621
  0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 
53622
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
53623
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x65, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
53624
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x62, 0x65, 
53625
  0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 
53626
  0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x20, 0x66, 
53627
  0x69, 0x6C, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 
53628
  0x6E, 0x20, 0x34, 0x47, 0x42, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
53629
  0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0xDA, 
53630
  0x08, 0xDA, 0x8C, 0x35, 0xDA, 0x8C, 0x36, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
53631
  0x81, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 
53632
  0x32, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x32, 0x20, 
53633
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
53634
  0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x37, 0xDA, 0x8C, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53635
  0x00, 0xDA, 0x4C, 0x8A, 0x26, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0xA6, 0x28, 0x6F, 0x73, 0x2F, 0x6F, 
53636
  0x70, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 
53637
  0x61, 0x67, 0x73, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
53638
  0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
53639
  0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 
53640
  0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x73, 0x79, 0x73, 0x74, 
53641
  0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
53642
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x60, 
53643
  0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 
53644
  0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x73, 0x20, 0x70, 
53645
  0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 
53646
  0x6F, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 
53647
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 
53648
  0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 
53649
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x38, 
53650
  0x72, 0x36, 0x36, 0x36, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x66, 0x6C, 
53651
  0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 
53652
  0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x72, 0x20, 0x2D, 0x20, 0x6F, 0x70, 
53653
  0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 
53654
  0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x77, 0x20, 
53655
  0x2D, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6C, 0x65, 
53656
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x2A, 
53657
  0x20, 0x3A, 0x63, 0x20, 0x2D, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 
53658
  0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x43, 0x52, 0x45, 0x41, 
53659
  0x54, 0x45, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x65, 0x20, 0x2D, 0x20, 0x66, 0x61, 0x69, 
53660
  0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 
53661
  0x69, 0x73, 0x74, 0x73, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x45, 0x58, 0x43, 0x4C, 0x29, 0x0A, 0x20, 
53662
  0x20, 0x2A, 0x20, 0x3A, 0x74, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x6E, 0x20, 
53663
  0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x6C, 0x65, 
53664
  0x20, 0x74, 0x6F, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x30, 0x20, 0x28, 0x4F, 0x5C, 
53665
  0x5F, 0x54, 0x52, 0x55, 0x4E, 0x43, 0x29, 0x0A, 0x0A, 0x50, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x6F, 
53666
  0x6E, 0x6C, 0x79, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
53667
  0x3A, 0x61, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 
53668
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x41, 0x50, 0x50, 0x45, 0x4E, 0x44, 
53669
  0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x78, 0x20, 0x2D, 0x20, 0x4F, 0x5C, 0x5F, 0x53, 0x59, 
53670
  0x4E, 0x43, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x43, 0x20, 0x2D, 0x20, 0x4F, 0x5C, 0x5F, 0x4E, 
53671
  0x4F, 0x43, 0x54, 0x54, 0x59, 0x0A, 0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2D, 0x6F, 
53672
  0x6E, 0x6C, 0x79, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
53673
  0x3A, 0x52, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x73, 
53674
  0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 0x5F, 0x52, 
53675
  0x45, 0x41, 0x44, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x57, 0x20, 0x2D, 0x20, 0x73, 0x68, 
53676
  0x61, 0x72, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 
53677
  0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 0x5F, 0x57, 0x52, 0x49, 0x54, 0x45, 0x29, 0x0A, 
53678
  0x20, 0x20, 0x2A, 0x20, 0x3A, 0x44, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x64, 
53679
  0x65, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x53, 0x48, 
53680
  0x41, 0x52, 0x45, 0x5C, 0x5F, 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x29, 0x0A, 0x20, 0x20, 0x2A, 
53681
  0x20, 0x3A, 0x48, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x41, 0x54, 0x54, 0x52, 
53682
  0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4E, 0x0A, 0x20, 0x20, 
53683
  0x2A, 0x20, 0x3A, 0x4F, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x41, 0x54, 0x54, 
53684
  0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x52, 0x45, 0x41, 0x44, 0x4F, 0x4E, 0x4C, 0x59, 
53685
  0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x46, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 
53686
  0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x4F, 0x46, 0x46, 0x4C, 0x49, 
53687
  0x4E, 0x45, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x54, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 
53688
  0x5C, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x54, 0x45, 0x4D, 
53689
  0x50, 0x4F, 0x52, 0x41, 0x52, 0x59, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 
53690
  0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5C, 0x5F, 0x44, 0x45, 0x4C, 0x45, 
53691
  0x54, 0x45, 0x5C, 0x5F, 0x4F, 0x4E, 0x5C, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x0A, 0x20, 0x20, 
53692
  0x2A, 0x20, 0x3A, 0x62, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x46, 0x4C, 0x41, 
53693
  0x47, 0x5C, 0x5F, 0x4E, 0x4F, 0x5C, 0x5F, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x49, 0x4E, 0x47, 
53694
  0x0A, 0xDA, 0x08, 0xDA, 0x8C, 0x39, 0xDA, 0x8C, 0x3A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53695
  0xDA, 0x8E, 0xA6, 0x87, 0x2F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC3, 0x28, 0x66, 0x66, 0x69, 0x2F, 
53696
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
53697
  0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
53698
  0x61, 0x6D, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x20, 
53699
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
53700
  0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x43, 0x20, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
53701
  0x6E, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 
53702
  0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 
53703
  0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 
53704
  0x69, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 
53705
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 
53706
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x20, 
53707
  0x61, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 
53708
  0xDA, 0x8C, 0x3B, 0xDA, 0x82, 0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x67, 
53709
  0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 0x20, 0x78, 0x29, 
53710
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 
53711
  0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x30, 0xDA, 0x8C, 
53712
  0x3C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x2F, 0x81, 0x11, 0x01, 0xDA, 0x06, 
53713
  0xCE, 0x81, 0x2E, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x61, 0x67, 
53714
  0x65, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53715
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
53716
  0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 
53717
  0x6D, 0x20, 0x61, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 
53718
  0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 
53719
  0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 
53720
  0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x6F, 0x72, 0x20, 
53721
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6E, 0x63, 
53722
  0x65, 0x73, 0x74, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x55, 0x73, 0x69, 
53723
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
53724
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x6E, 0x64, 
53725
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x63, 
53726
  0x61, 0x6E, 0x20, 0x73, 0x65, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x66, 0x69, 0x62, 
53727
  0x65, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 
53728
  0x67, 0x6E, 0x61, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
53729
  0x69, 0x6F, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 
53730
  0x65, 0x64, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 
53731
  0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x73, 
53732
  0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x3D, 0xDA, 0x8C, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53733
  0xDA, 0x80, 0x8F, 0x82, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x6D, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
53734
  0x72, 0x2F, 0x62, 0x69, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 
53735
  0x65, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 
53736
  0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 
53737
  0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
53738
  0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 
53739
  0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 
53740
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x3F, 0xDA, 0x8C, 0x40, 0xD3, 
53741
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x12, 0x01, 0xDA, 0x06, 0xCE, 0x34, 0x28, 
53742
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
53743
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 
53744
  0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
53745
  0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x41, 0xDA, 0x8C, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53746
  0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x61, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1C, 0x28, 0x67, 0x65, 
53747
  0x74, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 
53748
  0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 
53749
  0x73, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x70, 0x75, 
53750
  0x74, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 
53751
  0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
53752
  0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
53753
  0x2C, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 
53754
  0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x6E, 
53755
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
53756
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 
53757
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 
53758
  0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
53759
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 
53760
  0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
53761
  0x6E, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 
53762
  0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 
53763
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x6C, 
53764
  0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x6D, 0xDA, 0x8C, 
53765
  0x43, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x21, 0x01, 0xDA, 0x06, 0xCE, 
53766
  0x31, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x78, 0x29, 0x0A, 
53767
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 
53768
  0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6F, 0x20, 
53769
  0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x44, 0xDA, 0x8C, 0x45, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53770
  0x00, 0xDA, 0x8E, 0x86, 0x8C, 0x84, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x5A, 0x28, 0x65, 0x76, 0x2F, 
53771
  0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x73, 0x65, 0x63, 0x20, 0x26, 0x6F, 0x70, 
53772
  0x74, 0x20, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x6F, 0x63, 0x68, 0x65, 
53773
  0x63, 0x6B, 0x20, 0x69, 0x6E, 0x74, 0x72, 0x3F, 0x29, 0x0A, 0x0A, 0x53, 0x63, 0x68, 0x65, 0x64, 
53774
  0x75, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 
53775
  0x6F, 0x6F, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 
53776
  0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 
53777
  0x65, 0x6C, 0x60, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 
53778
  0x20, 0x60, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x2E, 0x20, 0x41, 0x66, 
53779
  0x74, 0x65, 0x72, 0x20, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 
53780
  0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 
53781
  0x70, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x20, 0x63, 
53782
  0x61, 0x6E, 0x63, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 
53783
  0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
53784
  0x20, 0x60, 0x74, 0x6F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x60, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
53785
  0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x60, 
53786
  0x73, 0x65, 0x63, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
53787
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 
53788
  0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x74, 
53789
  0x2E, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x64, 0x65, 0x66, 
53790
  0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 
53791
  0x2F, 0x72, 0x6F, 0x6F, 0x74, 0x29, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 
53792
  0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 
53793
  0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x20, 0x28, 0x72, 0x6F, 0x6F, 0x74, 0x20, 
53794
  0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x2E, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x68, 0x65, 0x63, 0x6B, 
53795
  0x60, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 
53796
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x2C, 
53797
  0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 
53798
  0x64, 0x2C, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 
53799
  0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x74, 0x6F, 0x63, 
53800
  0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 
53801
  0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 
53802
  0x74, 0x3F, 0x60, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 
53803
  0x75, 0x65, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
53804
  0x61, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x72, 
53805
  0x65, 0x61, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 
53806
  0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x56, 0x4D, 0x20, 0x69, 
53807
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x65, 0x78, 
53808
  0x70, 0x69, 0x72, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x1D, 0xDA, 0x8C, 0x46, 0xD3, 0x03, 
53809
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x84, 0xD5, 0x01, 0xDA, 0x06, 0xCE, 0x35, 0x28, 
53810
  0x65, 0x76, 0x2F, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x29, 
53811
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 
53812
  0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x20, 
53813
  0x6E, 0x6F, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x47, 0xDA, 0x8C, 0x48, 0xD3, 0x03, 0xDA, 0x03, 
53814
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xD7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 0x66, 0x72, 
53815
  0x65, 0x65, 0x7A, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x7A, 0x65, 0x20, 
53816
  0x61, 0x6E, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x20, 
53817
  0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 0x20, 0x61, 0x6E, 
53818
  0x64, 0x20, 0x64, 0x6F, 0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 0x6F, 0x70, 0x79, 
53819
  0x2C, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x76, 
53820
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x69, 0x6D, 0x6D, 0x75, 0x74, 
53821
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x43, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 0x73, 0x2C, 0x20, 
53822
  0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x73, 0x74, 
53823
  0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
53824
  0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 
53825
  0x6C, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x7A, 0x65, 0x6E, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 
53826
  0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x77, 
53827
  0x69, 0x6C, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x49, 0xDA, 0x8C, 0x53, 0xD3, 0x04, 0xDA, 0x03, 
53828
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x5F, 0x28, 0x61, 0x73, 0x73, 
53829
  0x65, 0x72, 0x74, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x72, 0x72, 0x29, 0x0A, 
53830
  0x0A, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
53831
  0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 
53832
  0x68, 0x79, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x76, 0x61, 
53833
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x60, 0x65, 0x72, 0x72, 0x60, 0x20, 0x69, 0x66, 0x20, 0x78, 
53834
  0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 
53835
  0xDA, 0x8C, 0x54, 0xDA, 0x8C, 0x59, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 
53836
  0xB7, 0x01, 0xDA, 0x06, 0xCE, 0x36, 0x50, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 
53837
  0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 
53838
  0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 
53839
  0x75, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 
53840
  0xDA, 0x08, 0xDA, 0x88, 0xE9, 0xDA, 0x8B, 0x39, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53841
  0x04, 0x81, 0x2F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x61, 0x6E, 0x64, 0x20, 0x26, 0x20, 
53842
  0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
53843
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 
53844
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 
53845
  0x65, 0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
53846
  0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 
53847
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
53848
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 
53849
  0x6C, 0x73, 0x65, 0x79, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 
53850
  0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x5A, 0xDA, 0x89, 0x48, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53851
  0xDA, 0x04, 0x89, 0x53, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x4A, 0x28, 0x73, 0x68, 0x6F, 0x72, 0x74, 
53852
  0x2D, 0x66, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x61, 0x6D, 
53853
  0x65, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 
53854
  0x72, 0x20, 0x60, 0x66, 0x6E, 0x60, 0x2E, 0x20, 0x41, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
53855
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x73, 0x20, 0x60, 
53856
  0x24, 0x6E, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 
53857
  0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x30, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 
53858
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
53859
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x60, 0x24, 0x60, 0x20, 0x69, 0x73, 
53860
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x66, 
53861
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x28, 0x69, 0x6E, 
53862
  0x64, 0x65, 0x78, 0x20, 0x30, 0x29, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 
53863
  0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x24, 0x26, 0x60, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
53864
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
53865
  0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x0A, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
53866
  0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 
53867
  0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
53868
  0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 
53869
  0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
53870
  0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 
53871
  0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
53872
  0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x5C, 0xDA, 0x81, 0x12, 0xD3, 
53873
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0x4A, 0x03, 0xDA, 0x06, 0xCE, 0x4B, 0x28, 
53874
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 
53875
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
53876
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x66, 
53877
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 
53878
  0x6C, 0x65, 0x64, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0xDA, 0x08, 0xDA, 0x81, 0x7C, 0xDA, 
53879
  0x8C, 0x6E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xB4, 0x01, 0xDA, 0x06, 
53880
  0xCE, 0x80, 0xA7, 0x28, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 
53881
  0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
53882
  0x65, 0x20, 0x61, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x65, 0x78, 
53883
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 
53884
  0x68, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 
53885
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 
53886
  0x72, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x61, 0x6C, 
53887
  0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 
53888
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 
53889
  0x72, 0x2E, 0x20, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 
53890
  0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
53891
  0x8C, 0x6F, 0xDA, 0x8A, 0x81, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x41, 
53892
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x83, 0x28, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
53893
  0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 
53894
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
53895
  0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 
53896
  0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 
53897
  0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
53898
  0x73, 0x65, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
53899
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
53900
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 
53901
  0x72, 0xDA, 0x8C, 0x76, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0xE9, 
53902
  0x01, 0xDA, 0x06, 0xCE, 0x5E, 0x28, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x78, 
53903
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
53904
  0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
53905
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
53906
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x78, 
53907
  0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
53908
  0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x4B, 0xDA, 0x8C, 0x77, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53909
  0x03, 0x00, 0xDA, 0x80, 0x95, 0x81, 0xC0, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xBE, 0x28, 0x6E, 0x65, 
53910
  0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 
53911
  0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x62, 0x69, 
53912
  0x6E, 0x64, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x70, 0x6F, 0x72, 0x74, 0x29, 
53913
  0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 
53914
  0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 
53915
  0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 
53916
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x64, 0x75, 0x70, 0x6C, 
53917
  0x65, 0x78, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
53918
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 
53919
  0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
53920
  0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 
53921
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 
53922
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
53923
  0x79, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
53924
  0x79, 0x70, 0x65, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x3A, 0x73, 0x74, 0x72, 
53925
  0x65, 0x61, 0x6D, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 
53926
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 
53927
  0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 0x68, 0x6F, 
53928
  0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
53929
  0x6C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x6C, 0x65, 
53930
  0x63, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x61, 0x64, 0x64, 
53931
  0x72, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 
53932
  0x20, 0x6F, 0x75, 0x74, 0x67, 0x6F, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 
53933
  0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 
53934
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
53935
  0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 
53936
  0x68, 0x65, 0x20, 0x4F, 0x53, 0x27, 0x73, 0x20, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 
53937
  0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2E, 0x20, 0xDA, 0x08, 0xDA, 0x8C, 0x78, 
53938
  0xDA, 0x8C, 0x79, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x39, 0x01, 0xDA, 
53939
  0x06, 0xCE, 0x7A, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x61, 0x6C, 0x6C, 
53940
  0x6F, 0x77, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 
53941
  0x65, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 
53942
  0x65, 0x6C, 0x20, 0x64, 0x65, 0x66, 0x73, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x6C, 
53943
  0x6F, 0x77, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x64, 
53944
  0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x65, 
53945
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 
53946
  0x20, 0x64, 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x86, 0x72, 
53947
  0xCB, 0xDA, 0x08, 0xDA, 0x86, 0xF1, 0xDA, 0x8C, 0x7A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53948
  0xDA, 0x21, 0x81, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 
53949
  0x6F, 0x67, 0x32, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53950
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x32, 0x20, 0x6F, 
53951
  0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x7B, 0xDA, 0x8C, 0x7C, 0xD3, 0x03, 0xDA, 0x03, 
53952
  0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x81, 0xCB, 0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 0x66, 0x69, 
53953
  0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
53954
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 
53955
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 
53956
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
53957
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 
53958
  0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, 0x79, 0x65, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
53959
  0x83, 0x54, 0xDA, 0x8C, 0x7D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8D, 0xD9, 
53960
  0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x64, 0x6F, 0x63, 0x2A, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
53961
  0x73, 0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6F, 
53962
  0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 
53963
  0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 
53964
  0x76, 0x65, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 
53965
  0x20, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 
53966
  0x66, 0x20, 0x60, 0x64, 0x6F, 0x63, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x7E, 0xDA, 0x8C, 0x95, 
53967
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xEA, 0x01, 0xDA, 0x06, 0xCE, 
53968
  0x81, 0x55, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x20, 0x62, 
53969
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 
53970
  0x68, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 
53971
  0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 
53972
  0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 
53973
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 
53974
  0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2C, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 
53975
  0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 
53976
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
53977
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
53978
  0x79, 0x74, 0x65, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 
53979
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x75, 0x73, 0x2C, 
53980
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 
53981
  0x65, 0x68, 0x61, 0x76, 0x65, 0x73, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x62, 0x6F, 0x74, 0x68, 
53982
  0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 
53983
  0x72, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 
53984
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 
53985
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
53986
  0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
53987
  0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 
53988
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 
53989
  0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0x5E, 0xDA, 0x8C, 0x96, 0xD3, 
53990
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x83, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x2A, 
53991
  0x28, 0x2D, 0x3F, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 
53992
  0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x74, 
53993
  0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 
53994
  0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 
53995
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 
53996
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 
53997
  0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
53998
  0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
53999
  0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 
54000
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 
54001
  0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 
54002
  0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 
54003
  0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 
54004
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 
54005
  0x0A, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 
54006
  0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
54007
  0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 
54008
  0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 
54009
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
54010
  0x8C, 0x97, 0xDA, 0x8C, 0x99, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 
54011
  0x95, 0x01, 0xDA, 0x06, 0xCE, 0x4F, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x26, 0x20, 0x69, 
54012
  0x74, 0x65, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
54013
  0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
54014
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x2E, 0x20, 0x52, 
54015
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 
54016
  0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x9A, 0xDA, 0x8C, 0x9B, 0xD3, 0x03, 0xDA, 
54017
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x83, 0xEB, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x70, 
54018
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x70, 
54019
  0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
54020
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 
54021
  0x6D, 0x6F, 0x72, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 
54022
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2E, 0xDA, 
54023
  0x08, 0xDA, 0x11, 0xDA, 0x8C, 0x9C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 
54024
  0x81, 0xFD, 0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 
54025
  0x6F, 0x70, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 
54026
  0x65, 0x6D, 0x6F, 0x76, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 
54027
  0x60, 0x6E, 0x60, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 
54028
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
54029
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
54030
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x9D, 0xDA, 0x8A, 0x1C, 0xD3, 
54031
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xBB, 0x01, 0xDA, 0x06, 0xCE, 0x7F, 0x28, 
54032
  0x63, 0x6F, 0x72, 0x6F, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x41, 0x20, 
54033
  0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x6B, 0x69, 
54034
  0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 
54035
  0x61, 0x79, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 
54036
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x28, 0x63, 0x6F, 0x72, 0x6F, 0x75, 0x74, 
54037
  0x69, 0x6E, 0x65, 0x29, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 
54038
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x28, 0x66, 0x6E, 0x20, 0x5B, 0x5D, 
54039
  0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x20, 0x3A, 0x79, 0x69, 0x29, 0x60, 0x2E, 0xDA, 0x59, 
54040
  0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x9E, 0xDA, 0x8C, 0xA0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54041
  0xDA, 0x80, 0xA1, 0x81, 0x3A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBF, 0x28, 0x73, 0x74, 0x72, 0x69, 
54042
  0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x74, 0x72, 
54043
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 
54044
  0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 
54045
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 
54046
  0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 
54047
  0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
54048
  0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
54049
  0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
54050
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 
54051
  0x69, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x66, 0x20, 0x66, 0x6F, 0x75, 
54052
  0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 
54053
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x94, 0xDA, 
54054
  0x8C, 0xA1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x84, 0x71, 0x01, 0xDA, 
54055
  0x06, 0xCE, 0x5E, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 
54056
  0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
54057
  0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 
54058
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
54059
  0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x76, 0x61, 
54060
  0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 
54061
  0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xD3, 0xDA, 0x8C, 0xA2, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54062
  0xDA, 0x04, 0x85, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x35, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
54063
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 
54064
  0x6F, 0x6D, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 
54065
  0x20, 0x75, 0x70, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x74, 0x2E, 0xDA, 0x86, 
54066
  0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x44, 0xDA, 0x8C, 0xA3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
54067
  0x00, 0xDA, 0x04, 0x85, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x32, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x20, 
54068
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 
54069
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x6D, 
54070
  0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 
54071
  0xDA, 0x08, 0xDA, 0x85, 0x42, 0xDA, 0x8C, 0xA4, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54072
  0x04, 0x85, 0x42, 0x01, 0xDA, 0x06, 0xCE, 0x6B, 0x28, 0x74, 0x72, 0x61, 0x63, 0x65, 0x76, 0x20, 
54073
  0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 
54074
  0x65, 0x72, 0x72, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
54075
  0x61, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 
54076
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 
54077
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 
54078
  0x75, 0x65, 0x2E, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 
54079
  0x20, 0x78, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xA5, 0xDA, 0x83, 0x99, 0xD3, 0x03, 
54080
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6D, 0x01, 0xDA, 0x06, 0xCE, 0x1F, 0x28, 0x74, 0x61, 
54081
  0x62, 0x6C, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
54082
  0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 
54083
  0x97, 0xDA, 0x85, 0xE3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x35, 0x01, 
54084
  0xDA, 0x06, 0xCE, 0x81, 0x07, 0x28, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x64, 0x73, 0x29, 
54085
  0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 
54086
  0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
54087
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
54088
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
54089
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 
54090
  0x66, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
54091
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
54092
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 
54093
  0x79, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 
54094
  0x6B, 0x65, 0x79, 0x73, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 
54095
  0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
54096
  0x61, 0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
54097
  0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x76, 0x61, 0x6C, 
54098
  0x75, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x0A, 0x62, 0x65, 0x63, 0x6F, 0x6D, 0x65, 0x20, 
54099
  0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 
54100
  0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 
54101
  0xE1, 0xDA, 0x8C, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x04, 0x01, 
54102
  0xDA, 0x06, 0xCE, 0x70, 0x28, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x78, 0x73, 0x29, 
54103
  0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 
54104
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x28, 0x74, 0x72, 0x65, 0x65, 0x29, 0x20, 0x60, 0x78, 
54105
  0x73, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
54106
  0x68, 0x65, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 
54107
  0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x0A, 0x69, 0x74, 0x2E, 0x20, 
54108
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 
54109
  0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xB0, 0xDA, 0x8C, 0xB2, 0xD3, 0x03, 0xDA, 0x03, 
54110
  0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xD9, 0x82, 0x9B, 0x01, 0xDA, 0x06, 0xCE, 0x4C, 0x28, 0x66, 0x69, 
54111
  0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x75, 0x6E, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 
54112
  0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x74, 0x6F, 0x70, 0x20, 
54113
  0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x68, 
54114
  0x61, 0x6E, 0x67, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
54115
  0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xB3, 0xDA, 0x8C, 
54116
  0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x81, 0x1F, 0x01, 0xDA, 0x06, 
54117
  0xCE, 0x80, 0x90, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x66, 
54118
  0x29, 0x0A, 0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x62, 0x75, 0x66, 
54119
  0x66, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 
54120
  0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x20, 
54121
  0x49, 0x6E, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x77, 
54122
  0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
54123
  0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x63, 
54124
  0x79, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
54125
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 
54126
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xBE, 0xDA, 0x8C, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54127
  0x03, 0x00, 0xDA, 0x4C, 0x83, 0x00, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x26, 0x28, 0x6F, 0x73, 0x2F, 
54128
  0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x20, 0x26, 
54129
  0x6F, 0x70, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x29, 
54130
  0x0A, 0x0A, 0x4B, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 
54131
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x62, 0x79, 0x20, 
54132
  0x73, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x49, 0x47, 0x4B, 0x49, 0x4C, 0x4C, 0x20, 
54133
  0x74, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x73, 
54134
  0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6C, 
54135
  0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 
54136
  0x73, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 
54137
  0x6F, 0x77, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x68, 
54138
  0x61, 0x73, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 
54139
  0x65, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 
54140
  0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x77, 0x61, 0x69, 0x74, 0x60, 0x20, 
54141
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
54142
  0x77, 0x61, 0x69, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 
54143
  0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
54144
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 
54145
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
54146
  0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 
54147
  0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x69, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6E, 
54148
  0x67, 0x20, 0x77, 0x61, 0x69, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x29, 0x2E, 0x20, 0x4F, 
54149
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54150
  0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x69, 0x67, 
54151
  0x6E, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 
54152
  0x2C, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 
54153
  0x64, 0x20, 0x6F, 0x66, 0x20, 0x53, 0x49, 0x47, 0x4B, 0x49, 0x4C, 0x4C, 0x2E, 0x20, 0x53, 0x69, 
54154
  0x67, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 0x61, 0x72, 
54155
  0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 
54156
  0x65, 0x69, 0x72, 0x20, 0x43, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 
54157
  0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x63, 
54158
  0x61, 0x73, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x61, 
54159
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x49, 0x47, 0x20, 0x73, 0x74, 0x72, 0x69, 0x70, 0x70, 0x65, 
54160
  0x64, 0x2E, 0x20, 0x60, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x69, 
54161
  0x67, 0x6E, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 
54162
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xB6, 0xDA, 0x8C, 0xB7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54163
  0x00, 0xDA, 0x04, 0x83, 0x08, 0x01, 0xDA, 0x06, 0xCE, 0x6F, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x20, 
54164
  0x26, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 
54165
  0x6B, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x75, 0x6E, 
54166
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
54167
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
54168
  0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6F, 0x73, 
54169
  0x69, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x66, 
54170
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xB8, 0xDA, 0x8C, 
54171
  0xBD, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xEA, 0x01, 0xDA, 0x06, 0xCE, 
54172
  0x49, 0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 0x6E, 0x76, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x26, 
54173
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6C, 
54174
  0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 
54175
  0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
54176
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
54177
  0x8C, 0xBE, 0xDA, 0x8C, 0xC0, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xF9, 
54178
  0x01, 0xDA, 0x06, 0xCE, 0x77, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 0x20, 0x63, 0x6E, 0x64, 
54179
  0x20, 0x74, 0x72, 0x75, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x29, 0x0A, 
54180
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 
54181
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 
54182
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x66, 
54183
  0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
54184
  0x20, 0x60, 0x74, 0x72, 0x75, 0x60, 0x2C, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 0x6F, 0x6D, 
54185
  0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x61, 0x6C, 0x73, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
54186
  0x08, 0xDA, 0x8C, 0xC1, 0xDA, 0x8C, 0xC5, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
54187
  0x82, 0x35, 0x01, 0xDA, 0x06, 0xCE, 0x3D, 0x28, 0x65, 0x61, 0x63, 0x68, 0x6B, 0x20, 0x78, 0x20, 
54188
  0x64, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 
54189
  0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 
54190
  0x6E, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54191
  0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xC6, 0xDA, 0x8C, 0xC8, 0xD3, 
54192
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x22, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x28, 
54193
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
54194
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x28, 0x6C, 0x6F, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 
54195
  0x20, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x29, 0x20, 0x2B, 0x20, 0x31, 0x20, 0x6D, 0x6F, 0x72, 
54196
  0x65, 0x20, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 
54197
  0x6E, 0x20, 0x28, 0x2B, 0x20, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x20, 0x78, 
54198
  0x29, 0x20, 0x31, 0x29, 0xDA, 0x08, 0xDA, 0x8C, 0xC9, 0xDA, 0x82, 0x80, 0xD3, 0x03, 0xDA, 0x03, 
54199
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x65, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x6E, 0x75, 0x6D, 0x62, 
54200
  0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
54201
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 
54202
  0x08, 0xDA, 0x82, 0x7D, 0xDA, 0x8C, 0xCA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
54203
  0xD0, 0x82, 0x57, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBF, 0x28, 0x68, 0x61, 0x73, 0x68, 0x20, 0x76, 
54204
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x68, 0x61, 
54205
  0x73, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
54206
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
54207
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
54208
  0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 0x65, 0x61, 0x70, 0x20, 
54209
  0x68, 0x61, 0x73, 0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 
54210
  0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 
54211
  0x20, 0x74, 0x77, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 
54212
  0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x2C, 0x20, 
54213
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 
54214
  0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x68, 0x61, 0x73, 
54215
  0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xCB, 0xDA, 0x8C, 0xCC, 
54216
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x41, 0x54, 0x68, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x65, 
54217
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
54218
  0x74, 0x6F, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
54219
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x6D, 0x61, 0x6B, 
54220
  0x65, 0x2D, 0x65, 0x6E, 0x76, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x00, 0xDA, 0x8C, 0xCD, 0xD3, 0x04, 
54221
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0xA4, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x57, 0x69, 
54222
  0x64, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x73, 0x20, 0x74, 
54223
  0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
54224
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 
54225
  0x74, 0x68, 0x20, 0x60, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 
54226
  0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0xFB, 0xDA, 0x82, 0xF8, 0xD3, 0x03, 0xDA, 0x03, 
54227
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x64, 0x03, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x62, 0x75, 0x6E, 
54228
  0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x61, 0x6E, 
54229
  0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 
54230
  0x65, 0x73, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 
54231
  0x0A, 0x41, 0x64, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 
54232
  0x67, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 
54233
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 
54234
  0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0x29, 0x60, 0xDA, 0x08, 0xDA, 0x8C, 0xCE, 0xDA, 
54235
  0x8C, 0xD1, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x82, 0x01, 0xDA, 0x06, 
54236
  0xCE, 0x80, 0x91, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x20, 
54237
  0x62, 0x61, 0x73, 0x65, 0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x75, 0x73, 0x65, 
54238
  0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 
54239
  0x20, 0x50, 0x45, 0x47, 0x73, 0x2E, 0x20, 0x41, 0x6E, 0x79, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 
54240
  0x69, 0x6E, 0x65, 0x64, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x0A, 0x66, 0x6F, 
54241
  0x75, 0x6E, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 
54242
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x70, 0x65, 0x67, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x73, 
54243
  0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 
54244
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x69, 0x66, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 
54245
  0x65, 0x64, 0x29, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xD2, 0xDA, 0x8C, 0xD3, 
54246
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0xB1, 0x01, 0xDA, 0x06, 0xCE, 
54247
  0x80, 0xDD, 0x28, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 
54248
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 
54249
  0x79, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x5B, 0x73, 0x74, 0x61, 
54250
  0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 
54251
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x73, 0x74, 0x65, 0x70, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 
54252
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x72, 
54253
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 
54254
  0x30, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x74, 0x77, 
54255
  0x6F, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 
54256
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x73, 0x74, 
54257
  0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 
54258
  0x74, 0x68, 0x72, 0x65, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
54259
  0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6F, 0x70, 0x74, 0x69, 
54260
  0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x2E, 0xDA, 
54261
  0x08, 0xDA, 0x8C, 0xD4, 0xDA, 0x8C, 0xD5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
54262
  0x81, 0x1C, 0x01, 0xDA, 0x06, 0xCE, 0x2C, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 
54263
  0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
54264
  0x65, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x6F, 0x66, 
54265
  0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xD6, 0xDA, 0x8C, 0xD7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54266
  0x03, 0x00, 0xDA, 0x4C, 0x89, 0xDF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x82, 0x28, 0x6F, 0x73, 0x2F, 
54267
  0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 
54268
  0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 
54269
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 
54270
  0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 
54271
  0x67, 0x20, 0x2E, 0x2E, 0x2F, 0x2C, 0x20, 0x2E, 0x2F, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 
54272
  0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
54273
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 
54274
  0x68, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 
54275
  0xDA, 0x81, 0x21, 0xDA, 0x8C, 0xD8, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x4F, 0x28, 0x2A, 0x20, 0x26, 
54276
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
54277
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
54278
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 
54279
  0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 
54280
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xA7, 
54281
  0xDA, 0x87, 0x6A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x41, 0x01, 0xDA, 
54282
  0x06, 0xCE, 0x41, 0x28, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x47, 
54283
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 
54284
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 
54285
  0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
54286
  0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0x68, 0xDA, 0x8C, 0xD9, 0xD3, 0x03, 0xDA, 0x03, 
54287
  0xD2, 0x03, 0x00, 0xDA, 0x90, 0x38, 0x63, 0x01, 0xDA, 0x06, 0xCE, 0x71, 0x28, 0x74, 0x75, 0x70, 
54288
  0x6C, 0x65, 0x2F, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x74, 0x75, 0x70, 
54289
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
54290
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 
54291
  0x61, 0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 
54292
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 
54293
  0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x28, 0x6C, 
54294
  0x69, 0x6E, 0x65, 0x2C, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 
54295
  0x78, 0xDA, 0x8C, 0xDA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x80, 0xFA, 
54296
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x41, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 
54297
  0x63, 0x61, 0x74, 0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x29, 
54298
  0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
54299
  0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
54300
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x28, 0x61, 0x6E, 0x64, 0x20, 
54301
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x29, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
54302
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 
54303
  0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 
54304
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 
54305
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 
54306
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
54307
  0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
54308
  0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 
54309
  0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 
54310
  0x79, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x65, 0x61, 
54311
  0x63, 0x68, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x72, 0x74, 
54312
  0x73, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 
54313
  0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x20, 0x69, 0x6E, 0x20, 
54314
  0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 
54315
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
54316
  0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xB1, 0xDA, 0x8C, 0xDB, 0xD3, 
54317
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x82, 0x66, 0x01, 0xDA, 0x06, 0xCE, 0x70, 
54318
  0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 0x6F, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
54319
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
54320
  0x74, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 
54321
  0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 
54322
  0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6E, 0x63, 0x65, 0x73, 
54323
  0x74, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
54324
  0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x2E, 
54325
  0xDA, 0x08, 0xDA, 0x8C, 0xDC, 0xDA, 0x8C, 0xDD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54326
  0x8E, 0x75, 0x80, 0xE1, 0x01, 0xDA, 0x06, 0xCE, 0x56, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
54327
  0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x29, 0x0A, 0x0A, 0x52, 
54328
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 
54329
  0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 
54330
  0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6F, 
54331
  0x65, 0x73, 0x6E, 0x27, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 
54332
  0x08, 0xDA, 0x8C, 0xDE, 0xDA, 0x8C, 0xDF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 
54333
  0x87, 0x88, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x31, 0x28, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 
54334
  0x6D, 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 
54335
  0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
54336
  0x74, 0x68, 0x65, 0x20, 0x62, 0x72, 0x6F, 0x6B, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x20, 
54337
  0x64, 0x61, 0x74, 0x65, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 
54338
  0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 
54339
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 
54340
  0x6E, 0x64, 0x73, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x75, 0x61, 0x72, 
54341
  0x79, 0x20, 0x31, 0x2C, 0x20, 0x31, 0x39, 0x37, 0x30, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 
54342
  0x6E, 0x69, 0x78, 0x20, 0x65, 0x70, 0x6F, 0x63, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
54343
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
54344
  0x2E, 0x20, 0x44, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
54345
  0x69, 0x6E, 0x20, 0x55, 0x54, 0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x60, 0x6C, 
54346
  0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 
54347
  0x20, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 
54348
  0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x75, 
54349
  0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 
54350
  0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x0A, 0x49, 0x6E, 0x76, 
54351
  0x65, 0x72, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 
54352
  0x20, 0x6F, 0x73, 0x2F, 0x64, 0x61, 0x74, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xE0, 0xDA, 0x8C, 
54353
  0xE1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0xD0, 0x01, 0xDA, 0x06, 0xCE, 
54354
  0x4E, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x6E, 
54355
  0x61, 0x6D, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
54356
  0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x64, 
54357
  0x69, 0x73, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x74, 
54358
  0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 
54359
  0x08, 0xDA, 0x8C, 0xE2, 0xDA, 0x8C, 0xE3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
54360
  0xA6, 0x86, 0xED, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x95, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 
54361
  0x6F, 0x6B, 0x75, 0x70, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 
54362
  0x6F, 0x6C, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
54363
  0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 
54364
  0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 
54365
  0x41, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 
54366
  0x70, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 
54367
  0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 
54368
  0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 
54369
  0x75, 0x6E, 0x64, 0x2C, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 
54370
  0xDA, 0x8A, 0xFB, 0xDA, 0x8C, 0xE4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 
54371
  0x82, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x45, 0x28, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 
54372
  0x66, 0x75, 0x6E, 0x63, 0x29, 0x0A, 0x0A, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 
54373
  0x74, 0x72, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
54374
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
54375
  0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 
54376
  0xE5, 0xDA, 0x8C, 0xE6, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 
54377
  0x20, 0x65, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 
54378
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 
54379
  0x62, 0x65, 0x20, 0x63, 0x61, 0x75, 0x67, 0x68, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x68, 0x61, 
54380
  0x6E, 0x64, 0x6C, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 
54381
  0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x57, 0xDA, 0x8C, 0xE7, 
54382
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x85, 0x00, 0x01, 0xDA, 0x06, 0xCE, 
54383
  0x62, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 0x63, 
54384
  0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 
54385
  0x20, 0x74, 0x6F, 0x20, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, 0x20, 0x62, 
54386
  0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x72, 0x79, 0x20, 0x63, 0x6C, 0x61, 0x75, 
54387
  0x73, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 
54388
  0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x61, 0x69, 0x72, 0x6E, 0x65, 
54389
  0x73, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xE8, 0xDA, 0x89, 0xCE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54390
  0x03, 0x00, 0xDA, 0x04, 0x82, 0xC5, 0x01, 0xDA, 0x06, 0xCE, 0x3B, 0x28, 0x73, 0x75, 0x6D, 0x20, 
54391
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
54392
  0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 
54393
  0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
54394
  0x72, 0x6E, 0x73, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xCC, 0xDA, 0x8C, 0xE9, 0xD3, 0x03, 
54395
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xEC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 
54396
  0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 
54397
  0x65, 0x73, 0x20, 0x26, 0x20, 0x62, 0x79, 0x74, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x73, 0x29, 0x0A, 
54398
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
54399
  0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x70, 
54400
  0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 
54401
  0x79, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 
54402
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
54403
  0x20, 0x63, 0x6F, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
54404
  0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
54405
  0x30, 0x2D, 0x32, 0x35, 0x35, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xEA, 0xDA, 0x8C, 0xEB, 0xD3, 0x03, 
54406
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x81, 0x45, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAC, 
54407
  0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x66, 0x29, 0x0A, 0x0A, 
54408
  0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 
54409
  0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 
54410
  0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2E, 0x20, 
54411
  0x57, 0x68, 0x65, 0x6E, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x64, 0x6F, 0x6E, 
54412
  0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 
54413
  0x2C, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 
54414
  0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
54415
  0x20, 0x6C, 0x65, 0x61, 0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6C, 0x65, 0x74, 0x20, 0x6F, 0x74, 
54416
  0x68, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x20, 0x72, 0x65, 
54417
  0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 
54418
  0x76, 0xDA, 0x8C, 0xEC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0xDA, 
54419
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x32, 0x28, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 0x20, 0x61, 0x20, 
54420
  0x62, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 
54421
  0x74, 0x2D, 0x61, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2D, 0x62, 0x29, 0x0A, 0x0A, 0x43, 
54422
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 
54423
  0x61, 0x6B, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 
54424
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x60, 0x61, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 
54425
  0x60, 0x62, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
54426
  0x30, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 
54427
  0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 
54428
  0x73, 0x2C, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 
54429
  0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 
54430
  0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x62, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 
54431
  0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
54432
  0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 
54433
  0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x62, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
54434
  0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 
54435
  0x74, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 
54436
  0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x73, 
54437
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x73, 0x65, 
54438
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xD3, 0xDA, 0x8C, 0xED, 
54439
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0xA4, 0x01, 0xDA, 0x06, 0xCE, 0x31, 
54440
  0x28, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
54441
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 
54442
  0x6F, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
54443
  0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xEE, 0xDA, 0x86, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54444
  0xDA, 0x04, 0x6F, 0x01, 0xDA, 0x06, 0xCE, 0x23, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 0x20, 
54445
  0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 
54446
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x36, 
54447
  0xDA, 0x8C, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x80, 0xC9, 0x01, 
54448
  0xDA, 0x06, 0xCE, 0x73, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x20, 
54449
  0x61, 0x72, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 
54450
  0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
54451
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 
54452
  0x64, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4D, 
54453
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 
54454
  0x74, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
54455
  0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x30, 0xDA, 0x8C, 0xF1, 0xD3, 0x03, 
54456
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xDE, 0x01, 0xDA, 0x06, 0xCE, 0x57, 0x28, 
54457
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x73, 0x74, 0x72, 
54458
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 
54459
  0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x74, 
54460
  0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 
54461
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
54462
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xF2, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 
54463
  0x68, 0x2F, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54464
  0xDA, 0x21, 0x81, 0xB6, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x6E, 
54465
  0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 
54466
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 
54467
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 
54468
  0x65, 0x20, 0x28, 0x32, 0x5E, 0x35, 0x33, 0x29, 0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 
54469
  0x00, 0x40, 0xC3, 0xDA, 0x8C, 0xF3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 
54470
  0x64, 0x01, 0xDA, 0x06, 0xCE, 0x5B, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x73, 0x65, 0x74, 0x74, 
54471
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x70, 0x72, 0x6F, 
54472
  0x6D, 0x70, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
54473
  0x6C, 0x74, 0x20, 0x52, 0x45, 0x50, 0x4C, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 
54474
  0x20, 0x52, 0x45, 0x50, 0x4C, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x73, 0x70, 
54475
  0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
54476
  0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x89, 0xB9, 0xDA, 0x8C, 0xF4, 0xD3, 0x03, 0xDA, 
54477
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x66, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x66, 0x69, 0x62, 
54478
  0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
54479
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 
54480
  0xDA, 0x8C, 0xF5, 0xDA, 0x8C, 0xF7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 
54481
  0x35, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x87, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
54482
  0x6E, 0x61, 0x6D, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
54483
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
54484
  0x72, 0x64, 0x73, 0x20, 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 
54485
  0x68, 0x20, 0x60, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x60, 0x2E, 0x0A, 0x20, 0x20, 0x55, 0x73, 
54486
  0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 
54487
  0x74, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 
54488
  0x69, 0x6F, 0x6E, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x64, 0x79, 0x6E, 
54489
  0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x86, 
54490
  0x72, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x6F, 0xDA, 0x8C, 0xF8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54491
  0x00, 0xDA, 0x90, 0x34, 0x83, 0xB7, 0x01, 0xDA, 0x06, 0xCE, 0x76, 0x28, 0x70, 0x61, 0x72, 0x73, 
54492
  0x65, 0x72, 0x2F, 0x65, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 
54493
  0x49, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
54494
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
54495
  0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 
54496
  0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x75, 
54497
  0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x6E, 
54498
  0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x64, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 
54499
  0x2E, 0xDA, 0x08, 0xDA, 0x10, 0xDA, 0x8C, 0xF9, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x48, 0x28, 0x6E, 
54500
  0x6F, 0x74, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
54501
  0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 
54502
  0x6E, 0x20, 0x78, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x71, 0x75, 
54503
  0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 
54504
  0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x56, 0xDA, 0x8C, 0xFA, 0xD3, 0x03, 
54505
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x82, 0x79, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8E, 
54506
  0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 
54507
  0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x20, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x29, 
54508
  0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 
54509
  0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x6E, 
54510
  0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x6F, 
54511
  0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 
54512
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 
54513
  0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x73, 
54514
  0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x38, 0x31, 0x39, 0x32, 0x2E, 0xDA, 0x08, 
54515
  0xDA, 0x8C, 0xFB, 0xDA, 0x81, 0x5D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x76, 
54516
  0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x3F, 0x20, 0x78, 0x73, 0x29, 
54517
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 
54518
  0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x5A, 0xDA, 0x8C, 0xFC, 0xD3, 
54519
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x36, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 
54520
  0x6E, 0x6F, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54521
  0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x65, 
54522
  0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x51, 0xDA, 0x89, 
54523
  0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x06, 0x01, 0xDA, 0x06, 0xCE, 
54524
  0x72, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x65, 0x6E, 0x76, 
54525
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 
54526
  0x67, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
54527
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 
54528
  0x62, 0x79, 0x20, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x2E, 0x0A, 0x52, 0x65, 
54529
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 
54530
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 
54531
  0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x3F, 0xDA, 0x8C, 0xFD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54532
  0x03, 0x00, 0xDA, 0x04, 0x8A, 0xB1, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF6, 0x28, 0x71, 0x75, 0x69, 
54533
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x54, 
54534
  0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6F, 
54535
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x65, 
54536
  0x70, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 
54537
  0x74, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x77, 0x61, 
54538
  0x79, 0x73, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6C, 
54539
  0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x20, 0x62, 
54540
  0x79, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x65, 
54541
  0x78, 0x69, 0x74, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 
54542
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x20, 0x50, 0x61, 0x73, 
54543
  0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x69, 0x6C, 0x20, 0x60, 
54544
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
54545
  0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x65, 0x72, 
54546
  0x0A, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 
54547
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
54548
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xFE, 0xDA, 0x7C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54549
  0xDA, 0x04, 0x85, 0x52, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x0E, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x2D, 
54550
  0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x61, 0x66, 
54551
  0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 
54552
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 
54553
  0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 
54554
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 
54555
  0x72, 0x65, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6C, 0x65, 0x6D, 
54556
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x66, 0x74, 0x65, 0x72, 0x60, 0x2E, 
54557
  0x20, 0x49, 0x66, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 
54558
  0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
54559
  0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 
54560
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x60, 0x61, 0x66, 0x74, 0x65, 0x72, 0x60, 0x20, 
54561
  0x75, 0x6E, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 
54562
  0x75, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x20, 0x73, 
54563
  0x79, 0x6E, 0x74, 0x61, 0x63, 0x74, 0x69, 0x63, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
54564
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 
54565
  0x6F, 0x72, 0x6D, 0x69, 0x6E, 0x67, 0x0A, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x74, 0x20, 0x69, 0x6E, 
54566
  0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x73, 0xCF, 0x09, 0x6D, 0x61, 
54567
  0x74, 0x68, 0x2F, 0x2D, 0x69, 0x6E, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
54568
  0x81, 0xB0, 0x01, 0xDA, 0x06, 0xCE, 0x29, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
54569
  0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 
54570
  0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 
54571
  0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xDA, 0x8D, 0x00, 0xD3, 0x03, 
54572
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x20, 0x01, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x6D, 
54573
  0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
54574
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
54575
  0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 
54576
  0x30, 0x20, 0x6E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0xDA, 
54577
  0x08, 0xDA, 0x8D, 0x01, 0xDA, 0x8D, 0x02, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 
54578
  0x2F, 0x80, 0xEE, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9C, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
54579
  0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 
54580
  0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 
54581
  0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
54582
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6B, 
54583
  0x65, 0x79, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x69, 
54584
  0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2E, 0x20, 0x57, 
54585
  0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
54586
  0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 
54587
  0x6F, 0x69, 0x6E, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x66, 
54588
  0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x03, 0xDA, 0x8D, 0x04, 0xD3, 0x04, 0xDA, 
54589
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x29, 0x28, 0x2D, 
54590
  0x3F, 0x3E, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 
54591
  0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x74, 0x68, 
54592
  0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 
54593
  0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
54594
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
54595
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 
54596
  0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 
54597
  0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
54598
  0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 
54599
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 
54600
  0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 
54601
  0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 
54602
  0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x69, 
54603
  0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x69, 0x66, 
54604
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 
54605
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x0A, 0x55, 
54606
  0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
54607
  0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 
54608
  0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x05, 0xDA, 
54609
  0x86, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x5C, 0x01, 0xDA, 0x06, 0xCE, 
54610
  0x37, 0x28, 0x76, 0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
54611
  0x20, 0x69, 0x6E, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 
54612
  0x6C, 0x6C, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6C, 0x6F, 
54613
  0x62, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x07, 0xDA, 0x8D, 0x09, 
54614
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x91, 0x6B, 0x80, 0xC2, 0x01, 0xDA, 0x06, 0xCE, 
54615
  0x56, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 
54616
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x78, 0x65, 0x64, 
54617
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 
54618
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 
54619
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 
54620
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x0A, 0xDA, 0x80, 0xB6, 0xD3, 
54621
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xF4, 0x03, 0xDA, 0x06, 0xCE, 0x5F, 0x28, 
54622
  0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 
54623
  0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
54624
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 
54625
  0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 
54626
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x20, 0x28, 0x66, 
54627
  0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 
54628
  0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x0B, 0xDA, 0x83, 0x58, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54629
  0xDA, 0x04, 0x86, 0x9E, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x78, 
54630
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 
54631
  0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 
54632
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
54633
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x56, 0xDA, 0x82, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54634
  0xDA, 0x04, 0x90, 0xAC, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xAC, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
54635
  0x65, 0x2F, 0x70, 0x72, 0x75, 0x6E, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 
54636
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x70, 0x68, 0x61, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x75, 
54637
  0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
54638
  0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x72, 0x70, 0x68, 0x61, 
54639
  0x6E, 0x65, 0x64, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
54640
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x20, 
54641
  0x20, 0x20, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x3A, 0x61, 
54642
  0x75, 0x74, 0x6F, 0x2D, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 
54643
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x6F, 
54644
  0x6E, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 
54645
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x52, 0xDA, 0x84, 0x7C, 0xD3, 0x03, 
54646
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x31, 0x01, 0xDA, 0x06, 0xCE, 0x3B, 0x28, 0x6D, 
54647
  0x61, 0x78, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
54648
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 
54649
  0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
54650
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x7A, 0xDA, 0x8D, 
54651
  0x0E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x83, 0x28, 0x01, 0xDA, 0x06, 0xCE, 
54652
  0x81, 0x00, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 
54653
  0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x70, 0x69, 
54654
  0x70, 0x65, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
54655
  0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 
54656
  0x60, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x60, 0x20, 
54657
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6E, 0x6F, 0x74, 
54658
  0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 
54659
  0x65, 0x6E, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x69, 0x73, 
54660
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x61, 0x69, 0x74, 0x65, 
54661
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x2C, 0x20, 0x77, 0x61, 0x69, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 
54662
  0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x61, 
54663
  0x69, 0x74, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 
54664
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
54665
  0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 
54666
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 
54667
  0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 
54668
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x0F, 0xDA, 0x80, 0xBC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
54669
  0x00, 0xDA, 0x04, 0x8F, 0x17, 0x03, 0xDA, 0x06, 0xCE, 0x6A, 0x28, 0x65, 0x76, 0x2F, 0x73, 0x70, 
54670
  0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
54671
  0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 
54672
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 
54673
  0x64, 0x2E, 0x20, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 
54674
  0x68, 0x72, 0x65, 0x61, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 
54675
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 
54676
  0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x10, 0xDA, 0x87, 0xCC, 0xD3, 
54677
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x88, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8F, 
54678
  0x28, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x74, 0x61, 0x67, 0x20, 0x26, 0x20, 0x62, 0x6F, 
54679
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 0x63, 0x68, 
54680
  0x65, 0x63, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 
54681
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x6F, 
54682
  0x2E, 0x20, 0x60, 0x74, 0x61, 0x67, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 
54683
  0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
54684
  0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x60, 0x72, 0x65, 0x74, 
54685
  0x75, 0x72, 0x6E, 0x60, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 
54686
  0x6C, 0x69, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0xDA, 
54687
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xC5, 0xDA, 0x8D, 0x14, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54688
  0x00, 0xDA, 0x8E, 0xD0, 0x7B, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0x16, 0x28, 0x6D, 0x6F, 0x64, 0x75, 
54689
  0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x20, 0x70, 
54690
  0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x45, 
54691
  0x78, 0x70, 0x61, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 
54692
  0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 
54693
  0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 
54694
  0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 
54695
  0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 
54696
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x61, 
54697
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 
54698
  0x72, 0x65, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 
54699
  0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 
54700
  0x70, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6F, 
54701
  0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 
54702
  0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6D, 0x70, 
54703
  0x6F, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 
54704
  0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 
54705
  0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 
54706
  0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
54707
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x76, 0x65, 0x72, 
54708
  0x62, 0x61, 0x74, 0x69, 0x6D, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 
54709
  0x20, 0x2D, 0x2D, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 
54710
  0x3A, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 
54711
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 
54712
  0x20, 0x40, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x74, 0x68, 
54713
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x65, 0x67, 
54714
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 
54715
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 
54716
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3C, 0x66, 
54717
  0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x65, 0x67, 0x6D, 0x65, 0x6E, 
54718
  0x74, 0x20, 0x61, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3E, 0x29, 0x60, 0x2E, 
54719
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 
54720
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x69, 
54721
  0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x2C, 0x20, 0x6F, 0x66, 0x20, 0x28, 
54722
  0x64, 0x79, 0x6E, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x66, 0x69, 0x6C, 
54723
  0x65, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x69, 0x72, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 
54724
  0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x70, 0x6F, 0x72, 
54725
  0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x2C, 0x20, 0x6F, 0x66, 
54726
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
54727
  0x6E, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 
54728
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6F, 0x6E, 0x65, 
54729
  0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x77, 0x69, 0x74, 0x68, 
54730
  0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x66, 0x20, 0x67, 0x69, 
54731
  0x76, 0x65, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0x20, 
54732
  0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 
54733
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x6E, 0x61, 
54734
  0x74, 0x69, 0x76, 0x65, 0x73, 0x2C, 0x20, 0x2E, 0x73, 0x6F, 0x20, 0x6F, 0x72, 0x20, 0x2E, 0x64, 
54735
  0x6C, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 
54736
  0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 
54737
  0x6F, 0x72, 0x20, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 
54738
  0x29, 0xDA, 0x08, 0xDA, 0x81, 0xF7, 0xDA, 0x8D, 0x15, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x5A, 0x28, 
54739
  0x25, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
54740
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x6F, 
54741
  0x66, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
54742
  0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 
54743
  0x20, 0x62, 0x79, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 
54744
  0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xB4, 0xDA, 0x83, 
54745
  0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x49, 0x01, 0xDA, 0x06, 
54746
  0xCE, 0x81, 0x02, 0x28, 0x74, 0x79, 0x70, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
54747
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 
54748
  0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
54749
  0x64, 0x2E, 0x20, 0x60, 0x78, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
54750
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x69, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6F, 
54751
  0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
54752
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 
54753
  0x75, 0x70, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x0A, 0x0A, 
54754
  0x2A, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x74, 
54755
  0x72, 0x69, 0x6E, 0x67, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x0A, 
54756
  0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6B, 
54757
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x75, 0x6E, 0x63, 0x74, 
54758
  0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
54759
  0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x0A, 0x6F, 0x72, 0x20, 
54760
  0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
54761
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 
54762
  0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x1C, 0xDA, 0x8D, 0x16, 0xD3, 0x03, 0xDA, 0x03, 
54763
  0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x85, 0xDF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCC, 0x28, 0x6F, 0x73, 
54764
  0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x66, 0x6F, 0x72, 0x6B, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 
54765
  0x6B, 0x65, 0x20, 0x61, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6B, 0x60, 0x20, 0x73, 0x79, 0x73, 0x74, 
54766
  0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x72, 0x65, 0x61, 
54767
  0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
54768
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 
54769
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 
54770
  0x73, 0x73, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 
54771
  0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x6F, 0x62, 0x6A, 
54772
  0x65, 0x63, 0x74, 0x20, 0x28, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 
54773
  0x20, 0x62, 0x79, 0x20, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x29, 0x2E, 0x20, 0x4E, 
54774
  0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 
54775
  0x61, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x28, 0x50, 0x4F, 0x53, 
54776
  0x49, 0x58, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x17, 0xDA, 0x82, 
54777
  0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x2B, 0x03, 0xDA, 0x06, 0xCE, 
54778
  0x81, 0x0D, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
54779
  0x65, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x70, 0x61, 
54780
  0x74, 0x68, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6E, 0x65, 0x77, 0x2D, 0x63, 0x6F, 0x6E, 
54781
  0x66, 0x69, 0x67, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 
54782
  0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x75, 0x6E, 0x64, 
54783
  0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x69, 
54784
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 
54785
  0x20, 0x74, 0x6F, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 
54786
  0x74, 0x61, 0x6C, 0x6C, 0x2C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6E, 
54787
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 
54788
  0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 
54789
  0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
54790
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x61, 
54791
  0x72, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 
54792
  0x20, 0x70, 0x61, 0x63, 0x6B, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 
54793
  0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
54794
  0x79, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x2E, 0xDA, 
54795
  0x08, 0xDA, 0x8D, 0x18, 0xDA, 0x8D, 0x23, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
54796
  0x7C, 0x80, 0x8B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA8, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
54797
  0x6E, 0x65, 0x77, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 
54798
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 
54799
  0x74, 0x79, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 
54800
  0x70, 0x72, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 
54801
  0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 
54802
  0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x29, 0x60, 0x20, 0x62, 0x75, 
54803
  0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x65, 0x66, 
54804
  0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
54805
  0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 
54806
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 
54807
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x24, 0xDA, 0x8D, 0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54808
  0xDA, 0x04, 0x83, 0x3D, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 
54809
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54810
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6D, 0x69, 0x6E, 0x69, 
54811
  0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
54812
  0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
54813
  0x8D, 0x26, 0xDA, 0x8D, 0x28, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x8E, 0x87, 
54814
  0x7B, 0x01, 0xDA, 0x06, 0xCE, 0x7F, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x20, 
54815
  0x70, 0x65, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 
54816
  0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 
54817
  0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x77, 0x68, 
54818
  0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x6D, 0x61, 0x74, 0x63, 
54819
  0x68, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 
54820
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 
54821
  0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 
54822
  0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x29, 0xDA, 0x8D, 0x2A, 0xD3, 0x03, 0xDA, 
54823
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 
54824
  0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 
54825
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x29, 0x0A, 
54826
  0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 
54827
  0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 
54828
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
54829
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x61, 0x63, 
54830
  0x63, 0x65, 0x70, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 
54831
  0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x42, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x74, 0x68, 0x65, 
54832
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 
54833
  0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
54834
  0x69, 0x73, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 
54835
  0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
54836
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xB8, 0xDA, 0x8D, 0x2B, 0xD3, 0x02, 
54837
  0xDA, 0x06, 0xCE, 0x81, 0x68, 0x28, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x64, 0x73, 0x20, 0x26, 0x6F, 
54838
  0x70, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 
54839
  0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
54840
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 
54841
  0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 
54842
  0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x74, 
54843
  0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
54844
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 
54845
  0x6E, 0x20, 0x75, 0x6E, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x6F, 0x72, 
54846
  0x64, 0x65, 0x72, 0x2E, 0x20, 0x4B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x75, 
54847
  0x61, 0x72, 0x61, 0x6E, 0x74, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 
54848
  0x65, 0x65, 0x6E, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x63, 0x65, 0x20, 0x70, 0x65, 
54849
  0x72, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x66, 0x20, 0x74, 
54850
  0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
54851
  0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 
54852
  0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 
54853
  0x6E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
54854
  0x2C, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
54855
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x2E, 0x20, 0x49, 0x66, 
54856
  0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
54857
  0x6C, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x20, 
54858
  0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x65, 
54859
  0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x2E, 0xDA, 0x08, 0xDA, 
54860
  0x82, 0x53, 0xDA, 0x8D, 0x2C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x01, 
54861
  0x01, 0xDA, 0x06, 0xCE, 0x31, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x20, 
54862
  0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 
54863
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 
54864
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x2D, 0xDA, 0x8D, 0x32, 0xD3, 0x02, 
54865
  0xDA, 0x06, 0xCE, 0x80, 0x91, 0x28, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 
54866
  0x26, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
54867
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 
54868
  0x78, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x65, 
54869
  0x66, 0x74, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 
54870
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 
54871
  0x68, 0x69, 0x66, 0x74, 0x73, 0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 
54872
  0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 
54873
  0x66, 0x74, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
54874
  0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x33, 0xDA, 0x8D, 0x35, 0xD3, 0x03, 
54875
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0xDF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE8, 0x28, 
54876
  0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 
54877
  0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x79, 0x6D, 
54878
  0x6C, 0x69, 0x6E, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
54879
  0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x61, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 
54880
  0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6F, 
54881
  0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
54882
  0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x6C, 
54883
  0x69, 0x6E, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x63, 
54884
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 
54885
  0x2E, 0x20, 0x49, 0x66, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x69, 0x73, 
54886
  0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 
54887
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
54888
  0x20, 0x61, 0x20, 0x68, 0x61, 0x72, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x44, 0x6F, 
54889
  0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x57, 
54890
  0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x36, 0xDA, 0x8D, 0x37, 0xD3, 
54891
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x81, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
54892
  0xC9, 0x28, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
54893
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
54894
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x68, 0x75, 0x6D, 0x61, 0x6E, 0x2D, 
54895
  0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 
54896
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x20, 0x46, 0x6F, 0x72, 
54897
  0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
54898
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 
54899
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 
54900
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
54901
  0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x77, 0x68, 
54902
  0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 
54903
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x64, 
54904
  0x65, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x82, 0xDA, 
54905
  0x8D, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x85, 0xD2, 0x01, 0xDA, 0x06, 
54906
  0xCE, 0x81, 0x25, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x65, 0x78, 0x65, 
54907
  0x63, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 
54908
  0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
54909
  0x65, 0x78, 0x65, 0x63, 0x76, 0x70, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x65, 0x63, 0x76, 
54910
  0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x74, 
54911
  0x6F, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
54912
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x77, 0x69, 
54913
  0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 
54914
  0x73, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x73, 0x2F, 0x65, 0x78, 
54915
  0x65, 0x63, 0x75, 0x74, 0x65, 0x2E, 0x20, 0x48, 0x6F, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2C, 0x20, 
54916
  0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
54917
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
54918
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 
54919
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
54920
  0x64, 0x2E, 0x20, 0x49, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 
54921
  0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2C, 0x20, 
54922
  0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 
54923
  0x6F, 0x77, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
54924
  0x66, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6F, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x39, 0xDA, 0x8D, 0x3A, 
54925
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xF2, 0x01, 0xDA, 0x06, 0xCE, 0x43, 
54926
  0x28, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 
54927
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
54928
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6C, 0x69, 0x63, 0x61, 
54929
  0x74, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 
54930
  0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x3B, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 
54931
  0x6E, 0x74, 0x33, 0x32, 0x2D, 0x6D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54932
  0x21, 0x81, 0xB2, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x6E, 0x69, 
54933
  0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 
54934
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 
54935
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 
54936
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0xDA, 
54937
  0x08, 0xCD, 0x80, 0x00, 0x00, 0x00, 0xDA, 0x8D, 0x40, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54938
  0xDA, 0x80, 0x8F, 0x81, 0x21, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF0, 0x28, 0x62, 0x75, 0x66, 0x66, 
54939
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x62, 0x75, 0x66, 
54940
  0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 
54941
  0x64, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 
54942
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 
54943
  0x20, 0x34, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
54944
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 
54945
  0x6E, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x77, 0x6F, 0x73, 0x20, 0x63, 0x6F, 0x6D, 
54946
  0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x65, 0x20, 
54947
  0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2C, 0x20, 0x75, 0x6E, 
54948
  0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x78, 
54949
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
54950
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 
54951
  0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
54952
  0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
54953
  0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x41, 
54954
  0xDA, 0x8D, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x10, 0x01, 0xDA, 
54955
  0x06, 0xCE, 0x80, 0x89, 0x28, 0x61, 0x6E, 0x79, 0x3F, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 
54956
  0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
54957
  0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 
54958
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 
54959
  0x65, 0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
54960
  0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2C, 0x0A, 0x6F, 0x74, 0x68, 
54961
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
54962
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 
54963
  0x75, 0x74, 0x68, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
54964
  0x8D, 0x43, 0xDA, 0x8D, 0x47, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x01, 
54965
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBB, 0x28, 0x63, 0x61, 0x73, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 
54966
  0x61, 0x74, 0x63, 0x68, 0x20, 0x26, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x29, 0x0A, 0x0A, 0x53, 
54967
  0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 
54968
  0x68, 0x61, 0x74, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 
54969
  0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x57, 
54970
  0x68, 0x65, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x0A, 0x68, 0x61, 0x73, 0x20, 
54971
  0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
54972
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
54973
  0x61, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
54974
  0x6C, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x49, 
54975
  0x66, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 
54976
  0x75, 0x6E, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
54977
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x48, 0xDA, 0x8D, 0x4C, 0xD3, 0x04, 0xDA, 0x03, 
54978
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x6D, 0x28, 0x72, 0x65, 0x70, 
54979
  0x65, 0x61, 0x74, 0x20, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 
54980
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6E, 0x20, 0x74, 
54981
  0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 
54982
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x69, 0x6C, 
54983
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x30, 
54984
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
54985
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 
54986
  0x4D, 0xDA, 0x8D, 0x4F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x36, 0x86, 0x87, 
54987
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x7A, 0x28, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x78, 
54988
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x6F, 
54989
  0x6F, 0x6B, 0x75, 0x70, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x63, 
54990
  0x79, 0x63, 0x6C, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 
54991
  0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 
54992
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54993
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 
54994
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x6E, 
54995
  0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 
54996
  0x68, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x63, 0x6F, 0x6E, 0x73, 
54997
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 
54998
  0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
54999
  0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x70, 0x61, 0x73, 
55000
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 
55001
  0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6E, 
55002
  0x6F, 0x74, 0x20, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 
55003
  0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 
55004
  0x72, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
55005
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x6F, 
55006
  0x72, 0x77, 0x61, 0x72, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 
55007
  0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 
55008
  0x6F, 0x20, 0x72, 0x65, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 
55009
  0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x68, 0x65, 
55010
  0x6E, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2E, 
55011
  0xDA, 0x08, 0xDA, 0x89, 0x41, 0xDA, 0x8D, 0x50, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55012
  0x04, 0x89, 0x86, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8A, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 
55013
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x75, 0x73, 0x65, 
55014
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x70, 0x65, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
55015
  0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x73, 
55016
  0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 
55017
  0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 
55018
  0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x74, 0x20, 0x65, 0x61, 0x73, 
55019
  0x69, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6D, 0x6F, 0x72, 
55020
  0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 
55021
  0x6E, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x51, 0xDA, 0x8D, 0x96, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55022
  0x03, 0x00, 0xDA, 0x21, 0x81, 0x19, 0x01, 0xDA, 0x06, 0xCE, 0x31, 0x28, 0x6D, 0x61, 0x74, 0x68, 
55023
  0x2F, 0x6C, 0x6F, 0x67, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
55024
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x67, 
55025
  0x61, 0x72, 0x69, 0x74, 0x68, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
55026
  0xD2, 0xDA, 0x8D, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xD9, 0x82, 0x88, 
55027
  0x01, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 
55028
  0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x20, 0x70, 
55029
  0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 0x70, 
55030
  0x61, 0x74, 0x68, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x74, 
55031
  0x63, 0x68, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x98, 0xDA, 0x8D, 0x99, 0xD3, 0x03, 0xDA, 
55032
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x28, 0x6D, 0x61, 
55033
  0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
55034
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
55035
  0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x9A, 0xDA, 0x8D, 0x9B, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
55036
  0x03, 0x00, 0xDA, 0x04, 0x80, 0xAB, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x49, 0x6E, 0x73, 0x69, 0x64, 
55037
  0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 
55038
  0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
55039
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x76, 0x6F, 
55040
  0x6B, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xDA, 0x86, 0x72, 
55041
  0xCB, 0xDA, 0x08, 0xDA, 0x82, 0xC8, 0xDA, 0x8D, 0x9C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55042
  0xDA, 0x4C, 0x88, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x4C, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 
55043
  0x69, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 
55044
  0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 
55045
  0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 
55046
  0x20, 0x62, 0x65, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x75, 0x63, 
55047
  0x63, 0x65, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x3F, 0xDA, 0x8D, 0x31, 0xD3, 0x03, 0xDA, 
55048
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x8C, 0x01, 0xDA, 0x06, 0xCE, 0x1E, 0x28, 0x7A, 0x65, 
55049
  0x72, 0x6F, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
55050
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x2F, 
55051
  0xDA, 0x8D, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD0, 0x82, 0x32, 0x01, 
55052
  0xDA, 0x06, 0xCE, 0x70, 0x28, 0x67, 0x63, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x29, 
55053
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
55054
  0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
55055
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 
55056
  0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 
55057
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 
55058
  0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 
55059
  0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x9E, 0xDA, 0x8D, 0x9F, 0xD3, 0x03, 0xDA, 0x03, 
55060
  0xD2, 0x03, 0x00, 0xDA, 0x90, 0x8E, 0x87, 0x87, 0x01, 0xDA, 0x06, 0xCE, 0x78, 0x28, 0x70, 0x65, 
55061
  0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x65, 0x67, 0x20, 0x74, 
55062
  0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 
55063
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x6C, 0x6C, 
55064
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 
55065
  0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x69, 
55066
  0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
55067
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 
55068
  0x67, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xA0, 0xDA, 0x83, 0xFB, 0xD3, 0x04, 0xDA, 
55069
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xED, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x75, 0x6E, 
55070
  0x6C, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x26, 
55071
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 
55072
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x28, 0x6E, 0x6F, 
55073
  0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x20, 0x3B, 0x62, 0x6F, 
55074
  0x64, 0x79, 0x29, 0x60, 0x2E, 0x20, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xA1, 0xDA, 0x8D, 
55075
  0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x91, 0x55, 0x84, 0x36, 0x01, 0xDA, 0x06, 
55076
  0xCE, 0x84, 0xC5, 0x28, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x20, 
55077
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
55078
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x74, 0x68, 
55079
  0x61, 0x74, 0x20, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
55080
  0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
55081
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 
55082
  0x66, 0x75, 0x6E, 0x63, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 
55083
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x63, 
55084
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
55085
  0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 
55086
  0x6E, 0x20, 0x61, 0x20, 0x62, 0x61, 0x64, 0x6C, 0x79, 0x20, 0x74, 0x79, 0x70, 0x65, 0x64, 0x20, 
55087
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x67, 0x69, 0x76, 
55088
  0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2C, 
55089
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55090
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 
55091
  0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x65, 
55092
  0x6D, 0x62, 0x6C, 0x79, 0x2E, 0x20, 0x50, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 
55093
  0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 
55094
  0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
55095
  0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x70, 
55096
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
55097
  0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x2D, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 
55098
  0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
55099
  0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x75, 0x6E, 
55100
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 
55101
  0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x61, 0x78, 
55102
  0x2D, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 
55103
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
55104
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 
55105
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
55106
  0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x76, 0x61, 0x72, 0x61, 0x72, 0x67, 0x20, 0x2D, 0x20, 0x74, 0x72, 
55107
  0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 
55108
  0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 
55109
  0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 
55110
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x79, 0x74, 0x65, 0x63, 
55111
  0x6F, 0x64, 0x65, 0x20, 0x2D, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x70, 
55112
  0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 
55113
  0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 
55114
  0x68, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 
55115
  0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 
55116
  0x72, 0x63, 0x65, 0x20, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6F, 
55117
  0x75, 0x72, 0x63, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 
55118
  0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x61, 0x73, 
55119
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0x0A, 
55120
  0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 
55121
  0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 
55122
  0x6C, 0x6F, 0x74, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x2D, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x6D, 
55123
  0x61, 0x6E, 0x79, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x67, 0x69, 
55124
  0x73, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x2C, 
55125
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x75, 
55126
  0x73, 0x65, 0x73, 0x2E, 0x20, 0x43, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x73, 
55127
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 
55128
  0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
55129
  0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x6D, 0x61, 0x70, 0x20, 0x2D, 
55130
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x61, 0x6E, 0x64, 
55131
  0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 
55132
  0x3A, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 0x6E, 0x20, 
55133
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 
55134
  0x74, 0x73, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 
55135
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 
55136
  0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x2D, 0x20, 0x61, 
55137
  0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 
55138
  0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 
55139
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
55140
  0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
55141
  0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x0A, 0x2A, 
55142
  0x20, 0x3A, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x2D, 
55143
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x6D, 0x61, 0x70, 
55144
  0x70, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x65, 0x6E, 
55145
  0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
55146
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x64, 
55147
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x0A, 0x2A, 
55148
  0x20, 0x3A, 0x64, 0x65, 0x66, 0x73, 0x20, 0x2D, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 
55149
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x69, 
55150
  0x6F, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 
55151
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 
55152
  0x6E, 0x74, 0x69, 0x61, 0x74, 0x65, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x84, 0x49, 0xDA, 0x86, 0x45, 
55153
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x7D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
55154
  0x94, 0x28, 0x75, 0x73, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x29, 
55155
  0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x69, 0x6D, 
55156
  0x70, 0x6F, 0x72, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 
55157
  0x74, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 
55158
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x77, 0x69, 
55159
  0x74, 0x68, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x0A, 0x69, 0x64, 0x65, 0x6E, 
55160
  0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 
55161
  0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 
55162
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
55163
  0x73, 0x68, 0x6F, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xA4, 0xDA, 0x8D, 0xA8, 
55164
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x7C, 0x80, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 
55165
  0x80, 0x8F, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 
55166
  0x6C, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 
55167
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
55168
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x63, 
55169
  0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 
55170
  0x61, 0x6C, 0x6C, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 
55171
  0x65, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 
55172
  0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
55173
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
55174
  0x2E, 0xDA, 0x08, 0xDA, 0x2F, 0xDA, 0x8D, 0xA9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55175
  0x8E, 0xD0, 0x81, 0x60, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB9, 0x28, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
55176
  0x72, 0x64, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
55177
  0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x62, 0x79, 0x20, 0x63, 
55178
  0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
55179
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 
55180
  0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 
55181
  0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
55182
  0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
55183
  0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 
55184
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 
55185
  0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
55186
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
55187
  0x72, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x71, 0xDA, 0x8D, 0xAA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
55188
  0x03, 0x00, 0xDA, 0x04, 0x81, 0xBA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD0, 0x28, 0x69, 0x66, 0x2D, 
55189
  0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x74, 
55190
  0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 
55191
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 
55192
  0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x77, 0x69, 0x74, 0x68, 0x60, 0x2C, 
55193
  0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
55194
  0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 
55195
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x66, 
55196
  0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 
55197
  0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
55198
  0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x70, 0x61, 0x74, 0x68, 
55199
  0x2E, 0x20, 0x49, 0x6E, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2C, 
55200
  0x0A, 0x60, 0x63, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 
55201
  0x20, 0x74, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
55202
  0x08, 0xDA, 0x8D, 0xAB, 0xDA, 0x8D, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 
55203
  0x86, 0xC6, 0x01, 0xDA, 0x06, 0xCE, 0x30, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0x29, 0x0A, 
55204
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
55205
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x69, 0x72, 
55206
  0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x8A, 0xDA, 0x8D, 0xB0, 0xD3, 
55207
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x6D, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x28, 
55208
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x64, 0x65, 0x78, 0x70, 0x20, 0x6D, 0x20, 0x65, 0x29, 0x0A, 
55209
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6E, 
55210
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x6E, 
55211
  0x74, 0x69, 0x73, 0x73, 0x61, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 
55212
  0x6F, 0x6E, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xB1, 0xDA, 0x82, 0xBF, 0xD3, 0x03, 
55213
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x0A, 0x01, 0xDA, 0x06, 0xCE, 0x78, 0x28, 0x6B, 
55214
  0x76, 0x73, 0x20, 0x64, 0x69, 0x63, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 
55215
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
55216
  0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 
55217
  0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 
55218
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x0A, 0x6C, 0x69, 0x6B, 0x65, 0x20, 
55219
  0x60, 0x40, 0x5B, 0x6B, 0x20, 0x76, 0x20, 0x6B, 0x20, 0x76, 0x20, 0x2E, 0x2E, 0x2E, 0x5D, 0x60, 
55220
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
55221
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xBC, 0xDA, 0x8D, 0xB2, 0xD3, 0x03, 
55222
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x83, 0x9C, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD3, 
55223
  0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0x20, 
55224
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 
55225
  0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20, 
55226
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
55227
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 
55228
  0x74, 0x68, 0x65, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 
55229
  0x68, 0x72, 0x6F, 0x77, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 
55230
  0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 
55231
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x74, 
55232
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 
55233
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x60, 
55234
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 
55235
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 
55236
  0x61, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x0C, 0xDA, 0x8D, 0xB3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55237
  0x00, 0xDA, 0x8E, 0x86, 0x85, 0x08, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA7, 0x28, 0x65, 0x76, 0x2F, 
55238
  0x63, 0x68, 0x61, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 
55239
  0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
55240
  0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 
55241
  0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
55242
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x71, 
55243
  0x75, 0x65, 0x75, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x6C, 0x6F, 0x63, 
55244
  0x6B, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x64, 0x65, 
55245
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x6E, 
55246
  0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 
55247
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
55248
  0x65, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xAC, 0xDA, 0x8D, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55249
  0x03, 0x00, 0xDA, 0x21, 0x81, 0x10, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x6D, 0x61, 0x74, 0x68, 
55250
  0x2F, 0x73, 0x69, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
55251
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 
55252
  0x08, 0xDA, 0x8D, 0xB5, 0xDA, 0x8D, 0xB6, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
55253
  0x80, 0x8D, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x2B, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 
55254
  0x73, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 
55255
  0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x2E, 0xDA, 0x59, 
55256
  0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xB7, 0xDA, 0x8D, 0xB9, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55257
  0xDA, 0x04, 0x82, 0xA5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x91, 0x28, 0x63, 0x61, 0x74, 0x73, 0x65, 
55258
  0x71, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
55259
  0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 
55260
  0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 
55261
  0x74, 0x65, 0x73, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
55262
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 
55263
  0x6F, 0x64, 0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 
55264
  0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
55265
  0x61, 0x74, 0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 
55266
  0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 
55267
  0xDA, 0x8D, 0xBA, 0xDA, 0x82, 0x6A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 
55268
  0x5F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x3D, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 
55269
  0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x50, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 
55270
  0x63, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
55271
  0x6E, 0x73, 0x20, 0x2D, 0x31, 0x2C, 0x20, 0x30, 0x2C, 0x20, 0x31, 0x20, 0x66, 0x6F, 0x72, 0x20, 
55272
  0x78, 0x20, 0x3C, 0x20, 0x79, 0x2C, 0x20, 0x78, 0x20, 0x3D, 0x20, 0x79, 0x2C, 0x20, 0x78, 0x20, 
55273
  0x3E, 0x20, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 
55274
  0x2E, 0x0A, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 
55275
  0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 
55276
  0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 
55277
  0x20, 0x69, 0x74, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x73, 
55278
  0x20, 0x74, 0x6F, 0x0A, 0x73, 0x65, 0x65, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 
55279
  0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x78, 0x20, 0x6F, 0x72, 0x20, 0x79, 0x20, 0x69, 0x6D, 
55280
  0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
55281
  0x72, 0x65, 0x60, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
55282
  0x20, 0x63, 0x61, 0x6E, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x78, 0x20, 0x61, 
55283
  0x6E, 0x64, 0x20, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x73, 0x6F, 0x2C, 0x20, 0x69, 0x74, 0x20, 
55284
  0x75, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 
55285
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x2C, 0x20, 0x69, 0x74, 0x0A, 0x64, 0x65, 0x6C, 
55286
  0x65, 0x67, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 
55287
  0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 
55288
  0x6F, 0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x67, 0xDA, 0x8D, 0xBC, 0xD3, 0x03, 0xDA, 0x03, 
55289
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8C, 0x5C, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x2D, 0x28, 0x65, 
55290
  0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 
55291
  0x72, 0x20, 0x74, 0x61, 0x67, 0x20, 0x26, 0x20, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 0x29, 
55292
  0x0A, 0x0A, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 
55293
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
55294
  0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
55295
  0x65, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6F, 
55296
  0x6E, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 
55297
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
55298
  0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
55299
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x64, 
55300
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x6D, 
55301
  0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 
55302
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
55303
  0x69, 0x73, 0x20, 0x74, 0x61, 0x67, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 
55304
  0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x74, 0x61, 0x67, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
55305
  0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x69, 
55306
  0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 
55307
  0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0x20, 0x52, 
55308
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xBD, 
55309
  0xDA, 0x8D, 0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xF4, 0x01, 
55310
  0xDA, 0x06, 0xCE, 0x80, 0xA3, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x65, 
55311
  0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 
55312
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 
55313
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 
55314
  0x6D, 0x70, 0x74, 0x69, 0x65, 0x73, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 
55315
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 
55316
  0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x73, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x63, 
55317
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x6C, 
55318
  0x79, 0x20, 0x72, 0x65, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
55319
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
55320
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x61, 0xDA, 0x8D, 0xBF, 
55321
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xB5, 0x01, 0xDA, 0x06, 0xCE, 
55322
  0x80, 0x92, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 
55323
  0x6C, 0x6F, 0x61, 0x74, 0x36, 0x34, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 
55324
  0x64, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 
55325
  0x74, 0x68, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x62, 
55326
  0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 
55327
  0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 
55328
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
55329
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
55330
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 
55331
  0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xC0, 0xDA, 0x8D, 0xC1, 0xD3, 0x03, 0xDA, 0x03, 
55332
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x87, 0x08, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAE, 0x28, 0x66, 
55333
  0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x29, 0x0A, 
55334
  0x0A, 0x41, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 
55335
  0x79, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 
55336
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 
55337
  0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x20, 0x4D, 0x65, 0x6D, 
55338
  0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 
55339
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x61, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 
55340
  0x65, 0x20, 0x66, 0x72, 0x65, 0x65, 0x64, 0x20, 0x6D, 0x61, 0x6E, 0x75, 0x61, 0x6C, 0x6C, 0x79, 
55341
  0x21, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 
55342
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 
55343
  0x69, 0x66, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x3D, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 
55344
  0xC2, 0xDA, 0x8D, 0xC3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x2F, 0x81, 0x9A, 
55345
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCF, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x61, 0x72, 0x67, 
55346
  0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 
55347
  0x65, 0x74, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x63, 
55348
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
55349
  0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
55350
  0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2E, 0x20, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x6C, 0x79, 
55351
  0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 
55352
  0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 
55353
  0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 
55354
  0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x75, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 
55355
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 
55356
  0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 
55357
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 
55358
  0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xC4, 0xDA, 0x8D, 0xC5, 0xD3, 0x03, 0xDA, 
55359
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0x7B, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0x42, 0x28, 0x6F, 
55360
  0x73, 0x2F, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x6F, 0x75, 
55361
  0x72, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
55362
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
55363
  0x74, 0x69, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 
55364
  0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 
55365
  0x63, 0x65, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
55366
  0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 
55367
  0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x6F, 0x75, 
55368
  0x72, 0x63, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x6E, 
55369
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 
55370
  0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 0x3A, 
55371
  0x72, 0x65, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x72, 0x65, 
55372
  0x61, 0x6C, 0x74, 0x69, 0x6D, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 
55373
  0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x28, 0x69, 0x2E, 0x65, 0x2E, 0x2C, 0x20, 0x77, 
55374
  0x61, 0x6C, 0x6C, 0x2D, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 
55375
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x61, 
55376
  0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6F, 
55377
  0x6E, 0x74, 0x69, 0x6E, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x20, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 
55378
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x74, 
55379
  0x69, 0x6D, 0x65, 0x0A, 0x2D, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x6F, 0x74, 0x6F, 0x6E, 0x69, 0x63, 
55380
  0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
55381
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x2B, 0x20, 0x66, 
55382
  0x72, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 
55383
  0x73, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x66, 0x69, 0x78, 
55384
  0x65, 0x64, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x20, 0x20, 0x74, 0x69, 
55385
  0x6D, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 
55386
  0x20, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6E, 0x74, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 
55387
  0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69, 0x6E, 0x67, 
55388
  0x20, 0x69, 0x6E, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x0A, 0x2D, 
55389
  0x20, 0x3A, 0x63, 0x70, 0x75, 0x74, 0x69, 0x6D, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
55390
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x50, 0x55, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x63, 
55391
  0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
55392
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x20, 0x28, 0x69, 0x2E, 0x65, 0x2E, 0x20, 0x61, 
55393
  0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
55394
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x29, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 
55395
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
55396
  0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 
55397
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x65, 
55398
  0x6E, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
55399
  0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 
55400
  0x3A, 0x64, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x60, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x64, 0x6F, 0x75, 
55401
  0x62, 0x6C, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
55402
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 
55403
  0x73, 0x20, 0x2B, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 
55404
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 
55405
  0x6C, 0x65, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
55406
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
55407
  0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
55408
  0x74, 0x65, 0x67, 0x65, 0x72, 0x0A, 0x2D, 0x20, 0x3A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3A, 0x20, 
55409
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
55410
  0x65, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x5B, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 
55411
  0x73, 0x2C, 0x20, 0x6E, 0x61, 0x6E, 0x6F, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x5D, 0x0A, 
55412
  0xDA, 0x08, 0xDA, 0x8D, 0xC6, 0xDA, 0x8D, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55413
  0x80, 0x8F, 0x81, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x84, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
55414
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x20, 0x62, 0x75, 
55415
  0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 
55416
  0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 
55417
  0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
55418
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
55419
  0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
55420
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
55421
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 
55422
  0xDA, 0x8D, 0xC8, 0xDA, 0x8D, 0xC9, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x45, 0x28, 0x3C, 0x3D, 0x20, 
55423
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
55424
  0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x73, 
55425
  0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 
55426
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 
55427
  0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x0F, 0xDA, 0x8D, 0xCA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55428
  0xDA, 0x04, 0x80, 0xDF, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x28, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 
55429
  0x74, 0x20, 0x26, 0x29, 0x0A, 0x0A, 0x49, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 
55430
  0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
55431
  0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xCB, 0xDA, 0x8D, 
55432
  0xCD, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x00, 0x01, 0xDA, 0x06, 0xCE, 
55433
  0x7B, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6E, 0x64, 0x20, 0x26, 
55434
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 
55435
  0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x6E, 0x64, 
55436
  0x60, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 
55437
  0x65, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 
55438
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x28, 0x75, 0x70, 0x73, 0x63, 0x6F, 0x70, 
55439
  0x65, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x60, 0x2C, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 
55440
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
55441
  0x08, 0xDA, 0x8D, 0xCE, 0xDA, 0x85, 0xBB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
55442
  0x84, 0xCE, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 
55443
  0x69, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 
55444
  0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 
55445
  0x6C, 0x65, 0x20, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x70, 
55446
  0x72, 0x65, 0x64, 0x29, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xAF, 
55447
  0xDA, 0x8D, 0xD0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x1C, 0x01, 0xDA, 
55448
  0x06, 0xCE, 0x80, 0x8F, 0x28, 0x64, 0x65, 0x65, 0x70, 0x3D, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 
55449
  0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x3D, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6D, 
55450
  0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x28, 0x61, 0x72, 
55451
  0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x62, 0x75, 
55452
  0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 
55453
  0x64, 0x65, 0x72, 0x65, 0x64, 0x0A, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 
55454
  0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 
55455
  0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x4D, 0x75, 
55456
  0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x60, 
55457
  0x3D, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xD1, 0xDA, 0x8D, 0xD3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55458
  0x03, 0x00, 0xDA, 0x04, 0x71, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x28, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 
55459
  0x61, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
55460
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 
55461
  0xDA, 0x08, 0xDA, 0x8D, 0xD4, 0xDA, 0x8D, 0xD7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55462
  0x80, 0xA1, 0x82, 0x5D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAD, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 
55463
  0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
55464
  0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 
55465
  0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 
55466
  0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
55467
  0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 
55468
  0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
55469
  0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
55470
  0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x6C, 
55471
  0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 
55472
  0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 0x68, 0x69, 0x74, 
55473
  0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xD8, 0xDA, 0x8D, 0xD9, 0xD3, 
55474
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1A, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x28, 
55475
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
55476
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x20, 0x62, 
55477
  0x61, 0x73, 0x65, 0x20, 0x31, 0x30, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 
55478
  0x81, 0xDA, 0x8D, 0xDA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0xFE, 0x01, 
55479
  0xDA, 0x06, 0xCE, 0x6B, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 
55480
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 
55481
  0x20, 0x39, 0x2D, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 
55482
  0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 
55483
  0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
55484
  0x65, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
55485
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2E, 0xDA, 
55486
  0x08, 0xDA, 0x8D, 0xDB, 0xDA, 0x8D, 0xDC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
55487
  0x80, 0xEA, 0x01, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 
55488
  0x64, 0x6F, 0x6D, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
55489
  0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x6C, 0x79, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 
55490
  0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 
55491
  0x62, 0x65, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x30, 0x20, 0x61, 0x6E, 
55492
  0x64, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xDD, 0xDA, 0x8D, 0xDE, 0xD3, 0x03, 0xDA, 0x03, 
55493
  0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x82, 0x8D, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x57, 0x28, 0x6F, 0x73, 
55494
  0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 
55495
  0x0A, 0x0A, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
55496
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 
55497
  0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
55498
  0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 
55499
  0x73, 0x2E, 0x20, 0x4F, 0x6E, 0x63, 0x65, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x63, 
55500
  0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
55501
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x6F, 
55502
  0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x63, 0x61, 0x6C, 
55503
  0x6C, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6F, 0x6E, 
55504
  0x63, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x63, 
55505
  0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 
55506
  0x65, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 
55507
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x72, 0x65, 
55508
  0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
55509
  0x65, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 
55510
  0x77, 0x6E, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
55511
  0x6F, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 
55512
  0x6C, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55513
  0x6E, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x76, 0x6F, 
55514
  0x69, 0x64, 0x20, 0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 
55515
  0x73, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xDF, 0xDA, 0x8D, 0xE0, 0xD3, 0x03, 0xDA, 0x03, 
55516
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x86, 0xFB, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x66, 
55517
  0x66, 0x69, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x29, 
55518
  0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
55519
  0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 
55520
  0x6E, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 
55521
  0x6F, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
55522
  0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 
55523
  0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 
55524
  0x76, 0x69, 0x6F, 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x66, 0x72, 0x65, 0x65, 0x69, 
55525
  0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xE1, 0xDA, 0x8D, 0xE2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55526
  0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x62, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1F, 0x28, 0x73, 0x74, 
55527
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 
55528
  0x74, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 
55529
  0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 
55530
  0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 
55531
  0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 
55532
  0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
55533
  0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
55534
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
55535
  0x69, 0x6E, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
55536
  0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x6C, 
55537
  0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x73, 
55538
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 
55539
  0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x69, 
55540
  0x76, 0x69, 0x64, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x69, 0x6E, 
55541
  0x67, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 
55542
  0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 
55543
  0x20, 0x74, 0x6F, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x75, 
55544
  0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 
55545
  0xE3, 0xDA, 0x8D, 0xE4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x39, 
55546
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD4, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 
55547
  0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 
55548
  0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 
55549
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x6C, 
55550
  0x79, 0x20, 0x28, 0x6E, 0x6F, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 
55551
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 
55552
  0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
55553
  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 
55554
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 
55555
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 
55556
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 
55557
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 
55558
  0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 
55559
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xE5, 0xDA, 
55560
  0x8D, 0xE6, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x30, 0x54, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 
55561
  0x69, 0x6F, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
55562
  0x65, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 
55563
  0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x13, 0xDA, 0x8D, 0xE7, 
55564
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x81, 0x02, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
55565
  0xC9, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 
55566
  0x20, 0x66, 0x6F, 0x72, 0x63, 0x65, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 
55567
  0x6F, 0x6D, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 
55568
  0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 
55569
  0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 
55570
  0x6F, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x74, 
55571
  0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x74, 0x61, 
55572
  0x74, 0x75, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 
55573
  0x73, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x6F, 0x72, 
55574
  0x63, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x77, 0x69, 
55575
  0x6C, 0x6C, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 
55576
  0x65, 0x6C, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6B, 0x69, 0x70, 0x20, 0x63, 0x6C, 0x65, 
55577
  0x61, 0x6E, 0x75, 0x70, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x64, 0xDA, 
55578
  0x8D, 0xE8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x63, 0x82, 0x70, 0x01, 0xDA, 
55579
  0x06, 0xCE, 0x81, 0x08, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 
55580
  0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 
55581
  0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
55582
  0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 
55583
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x66, 0x6F, 
55584
  0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x69, 0x6C, 0x65, 
55585
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
55586
  0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x69, 0x73, 
55587
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x75, 
55588
  0x70, 0x20, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 
55589
  0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 
55590
  0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
55591
  0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
55592
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 
55593
  0x63, 0x6B, 0x2D, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x20, 0x65, 0x72, 0x72, 0x6F, 
55594
  0x72, 0x20, 0x69, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 
55595
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0x20, 0xDA, 0x08, 0xDA, 0x8D, 
55596
  0xE9, 0xDA, 0x8D, 0xEA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x69, 0x01, 
55597
  0xDA, 0x06, 0xCE, 0x80, 0xDD, 0x28, 0x2D, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 
55598
  0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 
55599
  0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 
55600
  0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x76, 0x61, 
55601
  0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
55602
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 
55603
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 
55604
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
55605
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
55606
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 
55607
  0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 
55608
  0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 
55609
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 
55610
  0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 
55611
  0x61, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xEB, 0xDA, 0x8D, 0xED, 0xD3, 0x03, 0xDA, 
55612
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0xA2, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x90, 0x28, 
55613
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 
55614
  0x6C, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x73, 0x74, 
55615
  0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
55616
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x61, 
55617
  0x74, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 
55618
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 
55619
  0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x70, 0x69, 0x6E, 
55620
  0x67, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 
55621
  0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x6F, 
55622
  0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6D, 0x61, 
55623
  0x74, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x20, 0x73, 0x70, 
55624
  0x61, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 
55625
  0x63, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 
55626
  0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 
55627
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
55628
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x6F, 0x6E, 0x63, 
55629
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 
55630
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x72, 0x65, 0x74, 
55631
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 
55632
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
55633
  0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 
55634
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 
55635
  0x6E, 0x67, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 
55636
  0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 
55637
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0xDA, 
55638
  0x08, 0xDA, 0x86, 0xAD, 0xDA, 0x8D, 0xEE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
55639
  0x86, 0x8C, 0xE0, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC8, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 
55640
  0x6E, 0x6B, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 
55641
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 
55642
  0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 
55643
  0x64, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
55644
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 0x61, 0x72, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 
55645
  0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 
55646
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
55647
  0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 
55648
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2C, 
55649
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55650
  0x6E, 0x20, 0x65, 0x61, 0x72, 0x6C, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 
55651
  0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
55652
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xEF, 0xDA, 0x8D, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55653
  0xDA, 0x04, 0x86, 0xC5, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 
55654
  0x6E, 0x63, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
55655
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x63, 
55656
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 
55657
  0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
55658
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
55659
  0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xF1, 0xDA, 0x8D, 0xF6, 0xD3, 0x03, 0xDA, 
55660
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x83, 0x71, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 0x28, 
55661
  0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x63, 0x61, 
55662
  0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 
55663
  0x20, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x2D, 
55664
  0x74, 0x79, 0x70, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
55665
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 
55666
  0x75, 0x72, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
55667
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 
55668
  0x61, 0x6B, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 
55669
  0x61, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 
55670
  0x74, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xF9, 0xDA, 0x8D, 0xF7, 0xD3, 0x04, 0xDA, 
55671
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x37, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x57, 0x68, 0x65, 
55672
  0x72, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 
55673
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 
55674
  0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x74, 0x6F, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 
55675
  0xDA, 0x8D, 0xF8, 0xDA, 0x8D, 0xF9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 
55676
  0x80, 0xF0, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x90, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
55677
  0x66, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
55678
  0x20, 0x62, 0x79, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x70, 0x20, 
55679
  0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x79, 
55680
  0x74, 0x65, 0x73, 0x2C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 
55681
  0x74, 0x6F, 0x20, 0x30, 0x73, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
55682
  0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
55683
  0x72, 0x27, 0x73, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
55684
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
55685
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xFA, 0xDA, 0x8D, 0xFB, 
55686
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x64, 0x01, 0xDA, 0x06, 0xCE, 0x69, 
55687
  0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0x20, 0x73, 0x79, 0x6D, 0x73, 0x20, 
55688
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
55689
  0x65, 0x73, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 
55690
  0x61, 0x63, 0x68, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 
55691
  0x79, 0x6D, 0x73, 0x60, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 
55692
  0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 
55693
  0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 
55694
  0xFC, 0xDA, 0x8D, 0xFF, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x5F, 0x01, 
55695
  0xDA, 0x06, 0xCE, 0x80, 0xBE, 0x28, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x20, 0x26, 0x20, 0x66, 0x6F, 
55696
  0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x61, 0x7A, 0x69, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 
55697
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x6F, 
55698
  0x66, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 
55699
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
55700
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
55701
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
55702
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 
55703
  0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 
55704
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 
55705
  0x6F, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 
55706
  0x65, 0x6D, 0x6F, 0x69, 0x7A, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 
55707
  0x6C, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x00, 0xDA, 0x8E, 0x04, 0xD3, 0x04, 
55708
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8E, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x2D, 
55709
  0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x63, 0x72, 0x65, 
55710
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 
55711
  0x62, 0x79, 0x20, 0x6E, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x05, 0xDA, 0x8E, 0x07, 
55712
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x8E, 0x87, 0xB4, 0x01, 0xDA, 0x06, 0xCE, 
55713
  0x81, 0x17, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 
55714
  0x6C, 0x6C, 0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 
55715
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 
55716
  0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 
55717
  0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x65, 
55718
  0x67, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 
55719
  0x68, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55720
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
55721
  0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 
55722
  0x6E, 0x6F, 0x74, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 
55723
  0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20, 
55724
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 
55725
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
55726
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
55727
  0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
55728
  0x65, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
55729
  0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 
55730
  0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x08, 0xDA, 0x8E, 
55731
  0x09, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x86, 0x8C, 0x76, 0x01, 0xDA, 0x06, 
55732
  0xCE, 0x5A, 0x28, 0x65, 0x76, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0x20, 0x73, 0x65, 0x63, 0x29, 
55733
  0x0A, 0x0A, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
55734
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 
55735
  0x73, 0x65, 0x63, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 
55736
  0x6F, 0x75, 0x74, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
55737
  0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 
55738
  0x0A, 0xDA, 0x8E, 0x0B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xA6, 0x87, 0x42, 
55739
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0xCF, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x69, 
55740
  0x6E, 0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x29, 0x0A, 
55741
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 
55742
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x63, 
55743
  0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 
55744
  0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
55745
  0x74, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 
55746
  0x53, 0x6F, 0x6D, 0x65, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 
55747
  0x65, 0x73, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x73, 0x6F, 0x6D, 0x65, 
55748
  0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 
55749
  0x74, 0x79, 0x20, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x2C, 0x20, 
55750
  0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0x2C, 0x20, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 
55751
  0x61, 0x64, 0x2C, 0x20, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x2C, 0x20, 0x65, 
55752
  0x74, 0x63, 0x2E, 0x29, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 
55753
  0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
55754
  0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x54, 0x68, 
55755
  0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 
55756
  0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 
55757
  0x6C, 0x6C, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6C, 
55758
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
55759
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 
55760
  0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 
55761
  0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 
55762
  0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 
55763
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
55764
  0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 
55765
  0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x68, 
55766
  0x6F, 0x6C, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 
55767
  0x74, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6E, 
55768
  0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x0C, 0xDA, 0x8D, 0x53, 0xD3, 0x04, 0xDA, 
55769
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xE3, 0x01, 0xDA, 0x06, 0xCE, 0x52, 0x28, 0x69, 0x66, 
55770
  0x2D, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
55771
  0x68, 0x65, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x29, 0x0A, 0x0A, 
55772
  0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 
55773
  0x69, 0x66, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
55774
  0x6E, 0x29, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x29, 0x60, 0x2E, 0xDA, 
55775
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x0D, 0xDA, 0x81, 0xFB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55776
  0x00, 0xDA, 0x04, 0x84, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x77, 0x28, 0x6D, 0x61, 0x70, 0x20, 
55777
  0x66, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 
55778
  0x61, 0x70, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 
55779
  0x60, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 
55780
  0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
55781
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x61, 0x6E, 0x64, 
55782
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
55783
  0x20, 0x6F, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 
55784
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 
55785
  0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x0A, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 
55786
  0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
55787
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
55788
  0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 
55789
  0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
55790
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
55791
  0x60, 0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
55792
  0x6E, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x0A, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 
55793
  0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
55794
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x20, 
55795
  0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 
55796
  0x72, 0x61, 0x79, 0x20, 0x68, 0x61, 0x73, 0x0A, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 
55797
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 
55798
  0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 
55799
  0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 
55800
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xF8, 0xDA, 0x8E, 0x10, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55801
  0x00, 0xDA, 0x04, 0x87, 0x6D, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 
55802
  0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
55803
  0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 
55804
  0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 
55805
  0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x11, 0xDA, 0x8E, 
55806
  0x14, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x34, 0x84, 0xE2, 0x01, 0xDA, 0x06, 
55807
  0xCE, 0x82, 0x9B, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 
55808
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6B, 0x65, 0x79, 
55809
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 
55810
  0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 
55811
  0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x74, 
55812
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 
55813
  0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 
55814
  0x73, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
55815
  0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 
55816
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 
55817
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 
55818
  0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 
55819
  0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x73, 0x20, 0x2D, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 
55820
  0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 
55821
  0x6E, 0x67, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 
55822
  0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
55823
  0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 
55824
  0x6C, 0x65, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
55825
  0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x27, 0x28, 0x5B, 0x22, 0x27, 
55826
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
55827
  0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x64, 0x64, 
55828
  0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 
55829
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6F, 0x66, 
55830
  0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 
55831
  0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x68, 0x65, 
55832
  0x73, 0x65, 0x73, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
55833
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x75, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x52, 0x45, 
55834
  0x50, 0x4C, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 
55835
  0x72, 0x61, 0x6D, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 
55836
  0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
55837
  0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x27, 0x66, 0x72, 
55838
  0x61, 0x6D, 0x65, 0x27, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
55839
  0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x46, 0x72, 0x61, 0x6D, 0x65, 0x73, 
55840
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
55841
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
55842
  0x74, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 
55843
  0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x72, 
55844
  0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x74, 
55845
  0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
55846
  0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 
55847
  0x6F, 0x6D, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
55848
  0x63, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 
55849
  0xDA, 0x89, 0xBA, 0xDA, 0x8E, 0x15, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 
55850
  0x81, 0x92, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x1C, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 
55851
  0x72, 0x65, 0x73, 0x73, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 
55852
  0x6F, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x29, 0x0A, 
55853
  0x0A, 0x4C, 0x6F, 0x6F, 0x6B, 0x20, 0x75, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 
55854
  0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
55855
  0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
55856
  0x68, 0x6F, 0x73, 0x74, 0x6E, 0x61, 0x6D, 0x65, 0x2C, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x2C, 0x20, 
55857
  0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
55858
  0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x68, 
55859
  0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
55860
  0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x64, 
55861
  0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x73, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x6E, 0x65, 
55862
  0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x65, 0x73, 
55863
  0x74, 0x61, 0x62, 0x6C, 0x69, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 
55864
  0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x4F, 0x6E, 0x20, 0x50, 0x6F, 0x73, 0x69, 
55865
  0x78, 0x20, 0x70, 0x6C, 0x61, 0x74, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x2C, 0x20, 0x79, 0x6F, 0x75, 
55866
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x20, 0x3A, 0x75, 0x6E, 0x69, 0x78, 0x20, 0x66, 
55867
  0x6F, 0x72, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
55868
  0x63, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x75, 0x6E, 0x69, 0x78, 0x20, 0x64, 0x6F, 0x6D, 
55869
  0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 
55870
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 
55871
  0x76, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 
55872
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x4F, 0x6E, 0x20, 0x4C, 0x69, 0x6E, 
55873
  0x75, 0x78, 0x2C, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x75, 0x6E, 0x69, 
55874
  0x78, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x73, 
55875
  0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x77, 
55876
  0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x27, 0x40, 
55877
  0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x70, 
55878
  0x6F, 0x72, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x60, 0x20, 
55879
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
55880
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 
55881
  0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x6E, 
55882
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 
55883
  0x64, 0x20, 0x6F, 0x66, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
55884
  0x72, 0x73, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x16, 0xDA, 0x8E, 0x17, 0xD3, 0x03, 0xDA, 0x03, 
55885
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xC7, 0x01, 0xDA, 0x06, 0xCE, 0x72, 0x28, 0x73, 0x6F, 0x72, 
55886
  0x74, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x6F, 0x72, 
55887
  0x74, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 0x2D, 0x70, 0x6C, 0x61, 0x63, 
55888
  0x65, 0x20, 0x62, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 
55889
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x65, 
55890
  0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x0A, 
55891
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
55892
  0x73, 0x75, 0x6C, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x08, 
55893
  0xDA, 0x8E, 0x18, 0xDA, 0x8C, 0xD2, 0xDA, 0x8D, 0x51, 0xDA, 0x8E, 0x1B, 0xD3, 0x03, 0xDA, 0x03, 
55894
  0xD2, 0x03, 0x00, 0xDA, 0x91, 0x6B, 0x80, 0xC9, 0x01, 0xDA, 0x06, 0xCE, 0x58, 0x28, 0x69, 0x6E, 
55895
  0x74, 0x2F, 0x75, 0x36, 0x34, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
55896
  0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x78, 0x65, 0x64, 0x20, 0x75, 0x6E, 0x73, 
55897
  0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 
55898
  0x65, 0x67, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 
55899
  0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6E, 0x75, 
55900
  0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x1C, 0xDA, 0x83, 0xF9, 0xD3, 0x04, 0xDA, 
55901
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xE8, 0x01, 0xDA, 0x06, 0xCE, 0x5E, 0x28, 0x77, 0x68, 
55902
  0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x26, 0x20, 0x62, 
55903
  0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 
55904
  0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 
55905
  0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x74, 
55906
  0x72, 0x75, 0x65, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 
55907
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 
55908
  0xDA, 0x8E, 0x1D, 0xDA, 0x8E, 0x1F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 
55909
  0x82, 0x8B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x87, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
55910
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2D, 0x61, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
55911
  0x20, 0x61, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
55912
  0x73, 0x29, 0x0A, 0x0A, 0x53, 0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x69, 0x6B, 
55913
  0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 
55914
  0x66, 0x6F, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 
55915
  0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
55916
  0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
55917
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 
55918
  0x08, 0xDA, 0x8E, 0x20, 0xDA, 0x8E, 0x21, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
55919
  0x82, 0x3A, 0x01, 0xDA, 0x06, 0xCE, 0x4B, 0x28, 0x65, 0x61, 0x63, 0x68, 0x70, 0x20, 0x78, 0x20, 
55920
  0x64, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 
55921
  0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x28, 0x6B, 0x65, 0x79, 0x2C, 
55922
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x69, 0x6E, 0x20, 
55923
  0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
55924
  0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x22, 0xDA, 0x8E, 0x24, 0xD3, 0x03, 0xDA, 
55925
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x81, 0x1A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA6, 0x28, 0x6F, 
55926
  0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 
55927
  0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 
55928
  0x70, 0x70, 0x72, 0x6F, 0x78, 0x69, 0x6D, 0x61, 0x74, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
55929
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x50, 0x55, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 
55930
  0x62, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
55931
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 
55932
  0x49, 0x66, 0x20, 0x75, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 
55933
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x70, 0x70, 0x72, 0x6F, 0x78, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 
55934
  0x6E, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 
55935
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x64, 
55936
  0x66, 0x6C, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x25, 0xDA, 0x8E, 0x26, 0xD3, 0x04, 0xDA, 0x03, 
55937
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xB0, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x50, 0x61, 0x74, 0x68, 
55938
  0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 
55939
  0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x6D, 0x6F, 0x64, 
55940
  0x75, 0x6C, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0xDA, 0x86, 0x72, 0xCB, 0xDA, 0x08, 
55941
  0xDA, 0x81, 0x25, 0xDA, 0x8E, 0x27, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xC9, 
55942
  0x81, 0x6B, 0x01, 0xDA, 0x06, 0xCE, 0x5B, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 
55943
  0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
55944
  0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
55945
  0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
55946
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 
55947
  0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 
55948
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x9C, 0xDA, 0x8E, 0x28, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55949
  0x00, 0xDA, 0x80, 0xA1, 0x81, 0x52, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x28, 0x73, 0x74, 0x72, 0x69, 
55950
  0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x3F, 0x20, 0x73, 
55951
  0x66, 0x78, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x77, 
55952
  0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x65, 0x6E, 0x64, 
55953
  0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x66, 0x78, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 
55954
  0x81, 0xF4, 0xDA, 0x8E, 0x29, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x18, 
55955
  0x01, 0xDA, 0x06, 0xCE, 0x7F, 0x28, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0x20, 0x26, 0x20, 0x66, 0x75, 
55956
  0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
55957
  0x20, 0x6A, 0x75, 0x78, 0x74, 0x61, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
55958
  0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x49, 0x6E, 0x20, 
55959
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x0A, 0x60, 0x28, 0x28, 
55960
  0x6A, 0x75, 0x78, 0x74, 0x2A, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x29, 0x20, 0x78, 0x29, 0x60, 
55961
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x5B, 
55962
  0x28, 0x61, 0x20, 0x78, 0x29, 0x20, 0x28, 0x62, 0x20, 0x78, 0x29, 0x20, 0x28, 0x63, 0x20, 0x78, 
55963
  0x29, 0x5D, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x2A, 0xDA, 0x8E, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 
55964
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBC, 0x82, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x80, 0x28, 0x65, 
55965
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 
55966
  0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 
55967
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 
55968
  0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 
55969
  0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 0x78, 0x73, 0x29, 0x60, 0x20, 0x74, 
55970
  0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 
55971
  0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 
55972
  0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 
55973
  0xDA, 0x84, 0x5A, 0xDA, 0x8E, 0x2F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8D, 
55974
  0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x60, 0x28, 0x64, 0x6F, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 
55975
  0x20, 0x73, 0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x73, 0x20, 0x64, 0x6F, 0x63, 
55976
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
55977
  0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 
55978
  0x20, 0x6F, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x6C, 
55979
  0x69, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 
55980
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x60, 0x73, 
55981
  0x79, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 
55982
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 
55983
  0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 
55984
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x20, 0x49, 0x66, 
55985
  0x20, 0x60, 0x73, 0x79, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 
55986
  0x6E, 0x67, 0x0A, 0x6F, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 
55987
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x68, 0x6F, 0x77, 
55988
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x61, 0x6E, 0x64, 
55989
  0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
55990
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
55991
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x63, 0x6F, 0x6E, 
55992
  0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 
55993
  0x69, 0x6E, 0x67, 0x20, 0x28, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
55994
  0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x6E, 0x20, 
55995
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 
55996
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x29, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x30, 
55997
  0
55998
};
55999
56000
const unsigned char *janet_core_image = janet_core_image_bytes;
56001
size_t janet_core_image_size = sizeof(janet_core_image_bytes);