~daniel-mehrmann/e2fsprogs/master

« back to all changes in this revision

Viewing changes to .pc/git-update-to-3b0018beee/lib/ext2fs/crc32c.c

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2012-06-14 13:01:21 UTC
  • mfrom: (8.4.18 sid)
  • Revision ID: package-import@ubuntu.com-20120614130121-t2gct0d09jepx0y6
Tags: 1.42.4-3ubuntu1
* Merge from Debian unstable (LP: #978012), remainging changes:
  - debian/control.in: 
      Build-depend on gettext:any instead of on gettext for (cross-building)
      Drop build dependency on dc, which hasn't been needed for some time.
      Update maintainer field.
  - debian/rules:
      Block pkg-create-dbgsym from operating on this package.
      Build without dietlibc-dev, which is in universe 
  - debian/control:
      Regenerate with ./debian/rules debian/control

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * crc32c.c
3
 
 *
4
 
 * August 26, 2011 Darrick J. Wong <djwong at us.ibm.com>
5
 
 * Reuse Bob Pearson's slice-by-8 implementation for e2fsprogs.
6
 
 *
7
 
 * July 20, 2011 Bob Pearson <rpearson at systemfabricworks.com>
8
 
 * added slice by 8 algorithm to the existing conventional and
9
 
 * slice by 4 algorithms.
10
 
 *
11
 
 * Oct 15, 2000 Matt Domsch <Matt_Domsch@dell.com>
12
 
 * Nicer crc32 functions/docs submitted by linux@horizon.com.  Thanks!
13
 
 * Code was from the public domain, copyright abandoned.  Code was
14
 
 * subsequently included in the kernel, thus was re-licensed under the
15
 
 * GNU GPL v2.
16
 
 *
17
 
 * Oct 12, 2000 Matt Domsch <Matt_Domsch@dell.com>
18
 
 * Same crc32 function was used in 5 other places in the kernel.
19
 
 * I made one version, and deleted the others.
20
 
 * There are various incantations of crc32().  Some use a seed of 0 or ~0.
21
 
 * Some xor at the end with ~0.  The generic crc32() function takes
22
 
 * seed as an argument, and doesn't xor at the end.  Then individual
23
 
 * users can do whatever they need.
24
 
 *   drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0.
25
 
 *   fs/jffs2 uses seed 0, doesn't xor with ~0.
26
 
 *   fs/partitions/efi.c uses seed ~0, xor's with ~0.
27
 
 *
28
 
 * This source code is licensed under the GNU General Public License,
29
 
 * Version 2.  See the file COPYING for more details.
30
 
 */
31
 
#include "config.h"
32
 
#include <stdint.h>
33
 
#include <stdlib.h>
34
 
#include <stdio.h>
35
 
#define __force
36
 
#define min(x, y)               ((x) > (y) ? (y) : (x))
37
 
#define __ALIGN_KERNEL_MASK(x, mask)    (((x) + (mask)) & ~(mask))
38
 
#define __ALIGN_KERNEL(x, a)    __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
39
 
#define ALIGN(x, a)             __ALIGN_KERNEL((x), (a))
40
 
#define PTR_ALIGN(p, a)         ((typeof(p))ALIGN((unsigned long)(p), (a)))
41
 
#include "crc32c_defs.h"
42
 
 
43
 
#include "ext2fs.h"
44
 
#ifdef WORDS_BIGENDIAN
45
 
#define __constant_cpu_to_le32(x) ___constant_swab32((x))
46
 
#define __constant_cpu_to_be32(x) (x)
47
 
#define __be32_to_cpu(x) (x)
48
 
#define __cpu_to_be32(x) (x)
49
 
#define __cpu_to_le32(x) (ext2fs_cpu_to_le32((x)))
50
 
#define __le32_to_cpu(x) (ext2fs_le32_to_cpu((x)))
51
 
#else
52
 
#define __constant_cpu_to_le32(x) (x)
53
 
#define __constant_cpu_to_be32(x) ___constant_swab32((x))
54
 
#define __be32_to_cpu(x) (ext2fs_be32_to_cpu((x)))
55
 
#define __cpu_to_be32(x) (ext2fs_cpu_to_be32((x)))
56
 
#define __cpu_to_le32(x) (x)
57
 
#define __le32_to_cpu(x) (x)
58
 
#endif
59
 
 
60
 
#if CRC_LE_BITS > 8
61
 
# define tole(x) (__force uint32_t) __constant_cpu_to_le32(x)
62
 
#else
63
 
# define tole(x) (x)
64
 
#endif
65
 
 
66
 
#if CRC_BE_BITS > 8
67
 
# define tobe(x) (__force uint32_t) __constant_cpu_to_be32(x)
68
 
#else
69
 
# define tobe(x) (x)
70
 
#endif
71
 
 
72
 
#include "crc32c_table.h"
73
 
 
74
 
#if CRC_LE_BITS == 32
75
 
/* slice by 4 algorithm */
76
 
static uint32_t crc32c_le_body(uint32_t crc, uint8_t const *buf, size_t len)
77
 
{
78
 
        const uint8_t *p8;
79
 
        const uint32_t *p32;
80
 
        size_t init_bytes;
81
 
        size_t words;
82
 
        size_t end_bytes;
83
 
        size_t i;
84
 
        uint32_t q;
85
 
        uint8_t i0, i1, i2, i3;
86
 
 
87
 
        crc = (__force uint32_t) __cpu_to_le32(crc);
88
 
 
89
 
        /* unroll loop into 'init_bytes' odd bytes followed by
90
 
         * 'words' aligned 4 byte words followed by
91
 
         * 'end_bytes' odd bytes at the end */
92
 
        p8 = buf;
93
 
        p32 = (uint32_t *)PTR_ALIGN(p8, 4);
94
 
        init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
95
 
        words = (len - init_bytes) >> 2;
96
 
        end_bytes = (len - init_bytes) & 3;
97
 
 
98
 
        for (i = 0; i < init_bytes; i++) {
99
 
#ifndef WORDS_BIGENDIAN
100
 
                i0 = *p8++ ^ crc;
101
 
                crc = t0_le[i0] ^ (crc >> 8);
102
 
#else
103
 
                i0 = *p8++ ^ (crc >> 24);
104
 
                crc = t0_le[i0] ^ (crc << 8);
105
 
#endif
106
 
        }
107
 
 
108
 
        /* using pre-increment below slightly faster */
109
 
        p32--;
110
 
 
111
 
        for (i = 0; i < words; i++) {
112
 
#ifndef WORDS_BIGENDIAN
113
 
                q = *++p32 ^ crc;
114
 
                i3 = q;
115
 
                i2 = q >> 8;
116
 
                i1 = q >> 16;
117
 
                i0 = q >> 24;
118
 
                crc = t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
119
 
#else
120
 
                q = *++p32 ^ crc;
121
 
                i3 = q >> 24;
122
 
                i2 = q >> 16;
123
 
                i1 = q >> 8;
124
 
                i0 = q;
125
 
                crc = t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
126
 
#endif
127
 
        }
128
 
 
129
 
        p8 = (uint8_t *)(++p32);
130
 
 
131
 
        for (i = 0; i < end_bytes; i++) {
132
 
#ifndef WORDS_BIGENDIAN
133
 
                i0 = *p8++ ^ crc;
134
 
                crc = t0_le[i0] ^ (crc >> 8);
135
 
#else
136
 
                i0 = *p8++ ^ (crc >> 24);
137
 
                crc = t0_le[i0] ^ (crc << 8);
138
 
#endif
139
 
        }
140
 
 
141
 
        return __le32_to_cpu((__force __le32)crc);
142
 
}
143
 
#endif
144
 
 
145
 
#if CRC_BE_BITS == 32
146
 
static uint32_t crc32c_be_body(uint32_t crc, uint8_t const *buf, size_t len)
147
 
{
148
 
        const uint8_t *p8;
149
 
        const uint32_t *p32;
150
 
        size_t init_bytes;
151
 
        size_t words;
152
 
        size_t end_bytes;
153
 
        size_t i;
154
 
        uint32_t q;
155
 
        uint8_t i0, i1, i2, i3;
156
 
 
157
 
        crc = (__force uint32_t) __cpu_to_be32(crc);
158
 
 
159
 
        p8 = buf;
160
 
        p32 = (uint32_t *)PTR_ALIGN(p8, 4);
161
 
        init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
162
 
        words = (len - init_bytes) >> 2;
163
 
        end_bytes = (len - init_bytes) & 3;
164
 
 
165
 
        for (i = 0; i < init_bytes; i++) {
166
 
#ifndef WORDS_BIGENDIAN
167
 
                i0 = *p8++ ^ crc;
168
 
                crc = t0_be[i0] ^ (crc >> 8);
169
 
#else
170
 
                i0 = *p8++ ^ (crc >> 24);
171
 
                crc = t0_be[i0] ^ (crc << 8);
172
 
#endif
173
 
        }
174
 
 
175
 
        p32--;
176
 
 
177
 
        for (i = 0; i < words; i++) {
178
 
#ifndef WORDS_BIGENDIAN
179
 
                q = *++p32 ^ crc;
180
 
                i3 = q;
181
 
                i2 = q >> 8;
182
 
                i1 = q >> 16;
183
 
                i0 = q >> 24;
184
 
                crc = t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
185
 
#else
186
 
                q = *++p32 ^ crc;
187
 
                i3 = q >> 24;
188
 
                i2 = q >> 16;
189
 
                i1 = q >> 8;
190
 
                i0 = q;
191
 
                crc = t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
192
 
#endif
193
 
        }
194
 
 
195
 
        p8 = (uint8_t *)(++p32);
196
 
 
197
 
        for (i = 0; i < end_bytes; i++) {
198
 
#ifndef WORDS_BIGENDIAN
199
 
                i0 = *p8++ ^ crc;
200
 
                crc = t0_be[i0] ^ (crc >> 8);
201
 
#else
202
 
                i0 = *p8++ ^ (crc >> 24);
203
 
                crc = t0_be[i0] ^ (crc << 8);
204
 
#endif
205
 
        }
206
 
 
207
 
        return __be32_to_cpu((__force __be32)crc);
208
 
}
209
 
#endif
210
 
 
211
 
#if CRC_LE_BITS == 64
212
 
/* slice by 8 algorithm */
213
 
static uint32_t crc32c_le_body(uint32_t crc, uint8_t const *buf, size_t len)
214
 
{
215
 
        const uint8_t *p8;
216
 
        const uint32_t *p32;
217
 
        size_t init_bytes;
218
 
        size_t words;
219
 
        size_t end_bytes;
220
 
        size_t i;
221
 
        uint32_t q;
222
 
        uint8_t i0, i1, i2, i3;
223
 
 
224
 
        crc = (__force uint32_t) __cpu_to_le32(crc);
225
 
 
226
 
        p8 = buf;
227
 
        p32 = (uint32_t *)PTR_ALIGN(p8, 8);
228
 
        init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
229
 
        words = (len - init_bytes) >> 3;
230
 
        end_bytes = (len - init_bytes) & 7;
231
 
 
232
 
        for (i = 0; i < init_bytes; i++) {
233
 
#ifndef WORDS_BIGENDIAN
234
 
                i0 = *p8++ ^ crc;
235
 
                crc = t0_le[i0] ^ (crc >> 8);
236
 
#else
237
 
                i0 = *p8++ ^ (crc >> 24);
238
 
                crc = t0_le[i0] ^ (crc << 8);
239
 
#endif
240
 
        }
241
 
 
242
 
        p32--;
243
 
 
244
 
        for (i = 0; i < words; i++) {
245
 
#ifndef WORDS_BIGENDIAN
246
 
                q = *++p32 ^ crc;
247
 
                i3 = q;
248
 
                i2 = q >> 8;
249
 
                i1 = q >> 16;
250
 
                i0 = q >> 24;
251
 
                crc = t7_le[i3] ^ t6_le[i2] ^ t5_le[i1] ^ t4_le[i0];
252
 
 
253
 
                q = *++p32;
254
 
                i3 = q;
255
 
                i2 = q >> 8;
256
 
                i1 = q >> 16;
257
 
                i0 = q >> 24;
258
 
                crc ^= t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
259
 
#else
260
 
                q = *++p32 ^ crc;
261
 
                i3 = q >> 24;
262
 
                i2 = q >> 16;
263
 
                i1 = q >> 8;
264
 
                i0 = q;
265
 
                crc = t7_le[i3] ^ t6_le[i2] ^ t5_le[i1] ^ t4_le[i0];
266
 
 
267
 
                q = *++p32;
268
 
                i3 = q >> 24;
269
 
                i2 = q >> 16;
270
 
                i1 = q >> 8;
271
 
                i0 = q;
272
 
                crc ^= t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
273
 
#endif
274
 
        }
275
 
 
276
 
        p8 = (uint8_t *)(++p32);
277
 
 
278
 
        for (i = 0; i < end_bytes; i++) {
279
 
#ifndef WORDS_BIGENDIAN
280
 
                i0 = *p8++ ^ crc;
281
 
                crc = t0_le[i0] ^ (crc >> 8);
282
 
#else
283
 
                i0 = *p8++ ^ (crc >> 24);
284
 
                crc = t0_le[i0] ^ (crc << 8);
285
 
#endif
286
 
        }
287
 
 
288
 
        return __le32_to_cpu(crc);
289
 
}
290
 
#endif
291
 
 
292
 
#if CRC_BE_BITS == 64
293
 
static uint32_t crc32c_be_body(uint32_t crc, uint8_t const *buf, size_t len)
294
 
{
295
 
        const uint8_t *p8;
296
 
        const uint32_t *p32;
297
 
        size_t init_bytes;
298
 
        size_t words;
299
 
        size_t end_bytes;
300
 
        size_t i;
301
 
        uint32_t q;
302
 
        uint8_t i0, i1, i2, i3;
303
 
 
304
 
        crc = (__force uint32_t) __cpu_to_be32(crc);
305
 
 
306
 
        p8 = buf;
307
 
        p32 = (uint32_t *)PTR_ALIGN(p8, 8);
308
 
        init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
309
 
        words = (len - init_bytes) >> 3;
310
 
        end_bytes = (len - init_bytes) & 7;
311
 
 
312
 
        for (i = 0; i < init_bytes; i++) {
313
 
#ifndef WORDS_BIGENDIAN
314
 
                i0 = *p8++ ^ crc;
315
 
                crc = t0_be[i0] ^ (crc >> 8);
316
 
#else
317
 
                i0 = *p8++ ^ (crc >> 24);
318
 
                crc = t0_be[i0] ^ (crc << 8);
319
 
#endif
320
 
        }
321
 
 
322
 
        p32--;
323
 
 
324
 
        for (i = 0; i < words; i++) {
325
 
#ifndef WORDS_BIGENDIAN
326
 
                q = *++p32 ^ crc;
327
 
                i3 = q;
328
 
                i2 = q >> 8;
329
 
                i1 = q >> 16;
330
 
                i0 = q >> 24;
331
 
                crc = t7_be[i3] ^ t6_be[i2] ^ t5_be[i1] ^ t4_be[i0];
332
 
 
333
 
                q = *++p32;
334
 
                i3 = q;
335
 
                i2 = q >> 8;
336
 
                i1 = q >> 16;
337
 
                i0 = q >> 24;
338
 
                crc ^= t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
339
 
#else
340
 
                q = *++p32 ^ crc;
341
 
                i3 = q >> 24;
342
 
                i2 = q >> 16;
343
 
                i1 = q >> 8;
344
 
                i0 = q;
345
 
                crc = t7_be[i3] ^ t6_be[i2] ^ t5_be[i1] ^ t4_be[i0];
346
 
 
347
 
                q = *++p32;
348
 
                i3 = q >> 24;
349
 
                i2 = q >> 16;
350
 
                i1 = q >> 8;
351
 
                i0 = q;
352
 
                crc ^= t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
353
 
#endif
354
 
        }
355
 
 
356
 
        p8 = (uint8_t *)(++p32);
357
 
 
358
 
        for (i = 0; i < end_bytes; i++) {
359
 
#ifndef WORDS_BIGENDIAN
360
 
                i0 = *p8++ ^ crc;
361
 
                crc = t0_be[i0] ^ (crc >> 8);
362
 
#else
363
 
                i0 = *p8++ ^ (crc >> 24);
364
 
                crc = t0_be[i0] ^ (crc << 8);
365
 
#endif
366
 
        }
367
 
 
368
 
        return __be32_to_cpu(crc);
369
 
}
370
 
#endif
371
 
 
372
 
/**
373
 
 * crc32c_le() - Calculate bitwise little-endian CRC32c.
374
 
 * @crc: seed value for computation.  ~0 for ext4, sometimes 0 for
375
 
 *      other uses, or the previous crc32c value if computing incrementally.
376
 
 * @p: pointer to buffer over which CRC is run
377
 
 * @len: length of buffer @p
378
 
 */
379
 
uint32_t ext2fs_crc32c_le(uint32_t crc, unsigned char const *p, size_t len)
380
 
{
381
 
#if CRC_LE_BITS == 1
382
 
        int i;
383
 
        while (len--) {
384
 
                crc ^= *p++;
385
 
                for (i = 0; i < 8; i++)
386
 
                        crc = (crc >> 1) ^ ((crc & 1) ? CRCPOLY_LE : 0);
387
 
        }
388
 
# elif CRC_LE_BITS == 2
389
 
        while (len--) {
390
 
                crc ^= *p++;
391
 
                crc = (crc >> 2) ^ t0_le[crc & 0x03];
392
 
                crc = (crc >> 2) ^ t0_le[crc & 0x03];
393
 
                crc = (crc >> 2) ^ t0_le[crc & 0x03];
394
 
                crc = (crc >> 2) ^ t0_le[crc & 0x03];
395
 
        }
396
 
# elif CRC_LE_BITS == 4
397
 
        while (len--) {
398
 
                crc ^= *p++;
399
 
                crc = (crc >> 4) ^ t0_le[crc & 0x0f];
400
 
                crc = (crc >> 4) ^ t0_le[crc & 0x0f];
401
 
        }
402
 
# elif CRC_LE_BITS == 8
403
 
        while (len--) {
404
 
                crc ^= *p++;
405
 
                crc = (crc >> 8) ^ t0_le[crc & 0xff];
406
 
        }
407
 
# else
408
 
        crc = crc32c_le_body(crc, p, len);
409
 
# endif
410
 
        return crc;
411
 
}
412
 
 
413
 
/**
414
 
 * crc32c_be() - Calculate bitwise big-endian CRC32c.
415
 
 * @crc: seed value for computation.  ~0 for ext4, sometimes 0 for
416
 
 *      other uses, or the previous crc32c value if computing incrementally.
417
 
 * @p: pointer to buffer over which CRC is run
418
 
 * @len: length of buffer @p
419
 
 */
420
 
uint32_t ext2fs_crc32c_be(uint32_t crc, unsigned char const *p, size_t len)
421
 
{
422
 
#if CRC_BE_BITS == 1
423
 
        int i;
424
 
        while (len--) {
425
 
                crc ^= *p++ << 24;
426
 
                for (i = 0; i < 8; i++)
427
 
                        crc = (crc << 1) ^
428
 
                              ((crc & 0x80000000) ? CRCPOLY_BE : 0);
429
 
        }
430
 
# elif CRC_BE_BITS == 2
431
 
        while (len--) {
432
 
                crc ^= *p++ << 24;
433
 
                crc = (crc << 2) ^ t0_be[crc >> 30];
434
 
                crc = (crc << 2) ^ t0_be[crc >> 30];
435
 
                crc = (crc << 2) ^ t0_be[crc >> 30];
436
 
                crc = (crc << 2) ^ t0_be[crc >> 30];
437
 
        }
438
 
# elif CRC_BE_BITS == 4
439
 
        while (len--) {
440
 
                crc ^= *p++ << 24;
441
 
                crc = (crc << 4) ^ t0_be[crc >> 28];
442
 
                crc = (crc << 4) ^ t0_be[crc >> 28];
443
 
        }
444
 
# elif CRC_BE_BITS == 8
445
 
        while (len--) {
446
 
                crc ^= *p++ << 24;
447
 
                crc = (crc << 8) ^ t0_be[crc >> 24];
448
 
        }
449
 
# else
450
 
        crc = crc32c_be_body(crc, p, len);
451
 
# endif
452
 
        return crc;
453
 
}
454
 
 
455
 
#ifdef UNITTEST
456
 
static uint8_t test_buf[] = {
457
 
        0xd9, 0xd7, 0x6a, 0x13, 0x3a, 0xb1, 0x05, 0x48,
458
 
        0xda, 0xad, 0x14, 0xbd, 0x03, 0x3a, 0x58, 0x5e,
459
 
        0x6e, 0xd1, 0x56, 0xc9, 0x2e, 0xc4, 0xcb, 0x6b,
460
 
        0xe8, 0x77, 0x52, 0x37, 0x4e, 0x0f, 0x55, 0xd2,
461
 
        0x12, 0x65, 0x90, 0xc2, 0x41, 0x49, 0x81, 0x01,
462
 
        0xf5, 0x01, 0xeb, 0x2d, 0x78, 0x74, 0x23, 0x5d,
463
 
        0x84, 0x5c, 0x81, 0x92, 0x21, 0xe9, 0x8d, 0x1d,
464
 
        0x89, 0xf2, 0x4a, 0xac, 0xdd, 0xf9, 0xaf, 0xee,
465
 
        0x44, 0xe7, 0x6e, 0xed, 0xfb, 0xd8, 0x89, 0x0e,
466
 
        0x96, 0x62, 0xcd, 0xa4, 0x4b, 0xa9, 0xe5, 0x45,
467
 
        0xb1, 0x29, 0x9b, 0x0f, 0xfc, 0xbd, 0x83, 0xab,
468
 
        0xa8, 0x54, 0x96, 0x44, 0x2c, 0x7f, 0xbb, 0xe7,
469
 
        0x52, 0x29, 0x08, 0xee, 0x14, 0xc5, 0xc2, 0xec,
470
 
        0x5a, 0xeb, 0x40, 0x40, 0xea, 0xd1, 0x3d, 0x15,
471
 
        0x73, 0xaa, 0x8c, 0x73, 0xfc, 0xf2, 0x2b, 0x49,
472
 
        0x0b, 0x13, 0x96, 0xd9, 0x8e, 0x4b, 0xbc, 0xe0,
473
 
        0xf4, 0xd2, 0xe0, 0x2e, 0x7a, 0xf0, 0x5d, 0x1f,
474
 
        0xd2, 0x92, 0x97, 0xe0, 0xaa, 0x59, 0xab, 0xc9,
475
 
        0x5c, 0xa6, 0x51, 0x1a, 0xe3, 0xd6, 0x06, 0xb9,
476
 
        0xae, 0xb8, 0x76, 0x36, 0x79, 0x37, 0x52, 0xf6,
477
 
        0x34, 0xaf, 0x27, 0x19, 0xe1, 0xc0, 0x2b, 0xdd,
478
 
        0x01, 0x15, 0xcd, 0xce, 0x44, 0xf6, 0x4c, 0x18,
479
 
        0x92, 0x69, 0xbe, 0x8a, 0x76, 0x23, 0x52, 0x13,
480
 
        0x3f, 0xf9, 0xe0, 0xf5, 0x06, 0x28, 0x7c, 0xc7,
481
 
        0xf3, 0x42, 0x0f, 0xdd, 0x40, 0x33, 0xf7, 0x99,
482
 
        0xe2, 0xad, 0x26, 0xd9, 0x53, 0x10, 0x72, 0x0c,
483
 
        0x4e, 0x43, 0x4c, 0x61, 0xfe, 0xd9, 0xc1, 0x16,
484
 
        0xa1, 0x93, 0xca, 0x3c, 0x75, 0x7f, 0x07, 0x7a,
485
 
        0x65, 0xb3, 0x53, 0x2a, 0x52, 0x00, 0xa0, 0x62,
486
 
        0xe0, 0xa3, 0x1f, 0xad, 0xd7, 0xbb, 0xc0, 0x83,
487
 
        0x5d, 0x54, 0x87, 0x5f, 0xc8, 0x2f, 0xc8, 0xbf,
488
 
        0x69, 0x04, 0x91, 0xc8, 0xa6, 0x1d, 0x4d, 0x46,
489
 
        0x91, 0xfc, 0x26, 0xf4, 0x16, 0xd1, 0xa4, 0xbf,
490
 
        0x5c, 0xa2, 0x6c, 0xdd, 0xb4, 0x40, 0xf2, 0x2e,
491
 
        0xa2, 0xad, 0xf7, 0xf4, 0xa5, 0x8a, 0x3e, 0x23,
492
 
        0x64, 0x08, 0xc8, 0xa1, 0xa0, 0xf0, 0x5d, 0x70,
493
 
        0xd2, 0x77, 0xfd, 0xc8, 0x50, 0x83, 0x0f, 0xd6,
494
 
        0x2b, 0xe4, 0x1f, 0x52, 0x34, 0x33, 0x68, 0xfd,
495
 
        0x92, 0xbe, 0x9f, 0x97, 0x6b, 0x8d, 0x81, 0x91,
496
 
        0x0f, 0xef, 0x65, 0xc8, 0x0d, 0x15, 0x01, 0x77,
497
 
        0x58, 0xb2, 0xf4, 0x1b, 0x06, 0x7e, 0xf5, 0xca,
498
 
        0x15, 0x2e, 0x38, 0xd8, 0x81, 0x1c, 0x1c, 0xa0,
499
 
        0xb6, 0x13, 0x6a, 0x2b, 0x71, 0x34, 0x52, 0xd7,
500
 
        0x1d, 0xbd, 0x37, 0x59, 0xbc, 0x86, 0x25, 0x2b,
501
 
        0xa8, 0x93, 0xce, 0x1a, 0x03, 0x16, 0xfe, 0x01,
502
 
        0x57, 0x99, 0x24, 0x25, 0x2c, 0xb3, 0xab, 0x1e,
503
 
        0x2d, 0x65, 0x20, 0x89, 0x17, 0x02, 0x0e, 0x0a,
504
 
        0xf5, 0x1e, 0xc7, 0xff, 0x1f, 0x61, 0xa9, 0x54,
505
 
        0x18, 0xd4, 0xba, 0x50, 0x57, 0x02, 0xa1, 0xab,
506
 
        0x22, 0x2e, 0x07, 0xea, 0xa9, 0xa3, 0x83, 0x4f,
507
 
        0x27, 0xf5, 0xc5, 0xee, 0x3c, 0x3b, 0x10, 0xad,
508
 
        0x32, 0x2b, 0x1c, 0x03, 0xcb, 0xaf, 0x98, 0x83,
509
 
        0x54, 0xc3, 0x68, 0x63, 0xd4, 0xe0, 0x0e, 0x3c,
510
 
        0x1a, 0x4e, 0xc0, 0x81, 0xd0, 0xe8, 0x6a, 0x62,
511
 
        0x6b, 0x3e, 0x6f, 0xc4, 0xc6, 0x33, 0x4e, 0x26,
512
 
        0x21, 0xf5, 0x04, 0xdf, 0xfa, 0xce, 0x45, 0xaf,
513
 
        0xdc, 0x5e, 0x1b, 0xad, 0x93, 0xca, 0xf5, 0xcf,
514
 
        0xd7, 0xee, 0x0c, 0x5c, 0x5e, 0xb4, 0xf0, 0x92,
515
 
        0xd2, 0xf2, 0xf0, 0xa9, 0x1e, 0xab, 0x80, 0x68,
516
 
        0x46, 0xef, 0xcc, 0x26, 0x0c, 0x5c, 0xdd, 0x4e,
517
 
        0x83, 0xb8, 0xb9, 0x53, 0x6e, 0xf8, 0x93, 0x38,
518
 
        0x67, 0xa4, 0x41, 0x87, 0x72, 0xe7, 0x7e, 0x86,
519
 
        0xc9, 0x49, 0x00, 0x33, 0xb1, 0x38, 0x6c, 0x71,
520
 
        0xd7, 0x1d, 0x8e, 0x61, 0x01, 0xb6, 0x57, 0xa9,
521
 
        0xf1, 0xac, 0x15, 0xc2, 0x83, 0x77, 0xca, 0x64,
522
 
        0xca, 0x7b, 0x6c, 0xa1, 0x10, 0x1b, 0x13, 0xd0,
523
 
        0xd3, 0x9e, 0x9e, 0x10, 0x70, 0xc8, 0x1a, 0xbb,
524
 
        0x3f, 0x19, 0x86, 0xab, 0x01, 0x0e, 0xea, 0x34,
525
 
        0x22, 0xea, 0xe2, 0x15, 0xb7, 0xed, 0x21, 0x21,
526
 
        0x75, 0xa5, 0xe7, 0x08, 0xa1, 0x38, 0xe0, 0x91,
527
 
        0x05, 0x60, 0xea, 0xa7, 0x50, 0x27, 0x18, 0x07,
528
 
        0x9d, 0xe0, 0x18, 0x2b, 0xd4, 0x07, 0x59, 0x00,
529
 
        0xe6, 0x45, 0x18, 0x2a, 0x30, 0x6e, 0xf3, 0xb4,
530
 
        0xd0, 0xef, 0xa6, 0x5b, 0x71, 0xa2, 0x5a, 0x3b,
531
 
        0x89, 0x4c, 0xaf, 0x3f, 0xcb, 0x9f, 0x03, 0xfb,
532
 
        0x43, 0x7c, 0x6b, 0xd3, 0x6a, 0xea, 0xce, 0x4a,
533
 
        0x5f, 0x64, 0xb5, 0x62, 0xda, 0x5d, 0x27, 0xb7,
534
 
        0xb8, 0x11, 0xca, 0x33, 0x30, 0xec, 0x70, 0xf0,
535
 
        0x1b, 0x03, 0x50, 0xff, 0x5e, 0xa6, 0x08, 0xde,
536
 
        0x37, 0x70, 0xc0, 0x81, 0x55, 0x60, 0x17, 0xa1,
537
 
        0x85, 0xae, 0x26, 0x44, 0xe4, 0x67, 0x3c, 0x91,
538
 
        0xfd, 0xc4, 0x3d, 0x97, 0x72, 0x23, 0xf3, 0x3c,
539
 
        0x8f, 0xe0, 0xe2, 0xf2, 0x09, 0x96, 0x10, 0x67,
540
 
        0xb5, 0xfe, 0xff, 0x3d, 0x4a, 0xc8, 0x62, 0x11,
541
 
        0xa5, 0x98, 0xc1, 0x2d, 0x40, 0x82, 0x88, 0x8b,
542
 
        0xe5, 0xb0, 0x75, 0xbf, 0x2f, 0xa8, 0x6a, 0x55,
543
 
        0x49, 0x2e, 0x9c, 0x29, 0xd2, 0x7c, 0xbf, 0xf3,
544
 
        0xaa, 0x3a, 0x16, 0x4a, 0xa4, 0x15, 0xf3, 0x48,
545
 
        0xde, 0x38, 0x13, 0x44, 0x26, 0x02, 0xe6, 0xe9,
546
 
        0xa8, 0x24, 0x89, 0xb5, 0x43, 0x95, 0xe4, 0x4c,
547
 
        0xc3, 0xa0, 0xdf, 0xcc, 0x42, 0xf8, 0x8d, 0xb0,
548
 
        0x3b, 0xea, 0x10, 0xb7, 0xe1, 0x40, 0x54, 0xb9,
549
 
        0xa3, 0x2d, 0xfb, 0xb4, 0x91, 0xc0, 0x3e, 0x94,
550
 
        0xf1, 0xa1, 0x3c, 0xbe, 0xef, 0xb8, 0x70, 0x55,
551
 
        0x0a, 0x26, 0x93, 0xbf, 0xe6, 0x21, 0x92, 0x32,
552
 
        0x3c, 0x39, 0x27, 0x6a, 0x23, 0x48, 0x02, 0x35,
553
 
        0x3c, 0xd4, 0xcc, 0x04, 0xc0, 0x4e, 0xa7, 0x02,
554
 
        0x63, 0x37, 0xc2, 0xb8, 0x56, 0x1d, 0x57, 0x57,
555
 
        0x42, 0x04, 0x8d, 0xee, 0xcf, 0x8b, 0xc9, 0xc3,
556
 
        0xba, 0x3b, 0x15, 0xd7, 0xaf, 0xbf, 0x9e, 0xcd,
557
 
        0x44, 0xcf, 0xf0, 0x00, 0xb7, 0x3a, 0xfc, 0xa8,
558
 
        0x12, 0xab, 0x3a, 0x62, 0x01, 0x21, 0x46, 0xe9,
559
 
        0x1e, 0x48, 0x37, 0xfc, 0x13, 0x4d, 0xf6, 0x2a,
560
 
        0x72, 0x40, 0x75, 0x38, 0x71, 0xf2, 0x17, 0x20,
561
 
        0x2c, 0xdd, 0xc0, 0x49, 0xbc, 0x63, 0x33, 0xea,
562
 
        0x06, 0x75, 0x41, 0xe7, 0x5c, 0x1f, 0xfb, 0xf9,
563
 
        0x68, 0x83, 0xc2, 0x5a, 0x4a, 0x1e, 0x61, 0x08,
564
 
        0x57, 0xf3, 0x00, 0xba, 0x77, 0x92, 0x63, 0xa5,
565
 
        0xb7, 0xfe, 0x97, 0x22, 0xda, 0x5e, 0xd3, 0xaf,
566
 
        0xbc, 0x89, 0x0d, 0x4c, 0x37, 0xa9, 0x27, 0x4a,
567
 
        0x7f, 0xdb, 0x81, 0x39, 0x11, 0x86, 0x12, 0xf9,
568
 
        0x10, 0x50, 0xe4, 0xdb, 0x72, 0xf9, 0xae, 0x10,
569
 
        0x7c, 0xed, 0x50, 0x5c, 0x61, 0xeb, 0x42, 0x1e,
570
 
        0xa4, 0xf4, 0xf0, 0xfa, 0x45, 0x4d, 0x95, 0x2b,
571
 
        0xd4, 0x67, 0x4a, 0xe3, 0x8a, 0x15, 0x55, 0x92,
572
 
        0x77, 0x64, 0x8c, 0x51, 0x38, 0xf9, 0x26, 0x3e,
573
 
        0x68, 0xe2, 0xac, 0xbb, 0x64, 0x77, 0xe2, 0x82,
574
 
        0xa4, 0x42, 0x41, 0x38, 0xa0, 0xf0, 0xc9, 0xd8,
575
 
        0x6c, 0xe0, 0xef, 0x4c, 0xda, 0xb4, 0x92, 0xef,
576
 
        0x1b, 0xe3, 0x9b, 0xc1, 0x44, 0x3c, 0xb9, 0xb7,
577
 
        0x39, 0xac, 0x5c, 0x32, 0x39, 0xb4, 0x21, 0x85,
578
 
        0x93, 0xbc, 0xf2, 0x51, 0x43, 0xb7, 0xae, 0x1e,
579
 
        0x61, 0x9c, 0x38, 0x9c, 0xaa, 0xff, 0xde, 0xfc,
580
 
        0xbf, 0x85, 0xef, 0x17, 0x34, 0x36, 0x71, 0x5f,
581
 
        0x04, 0x16, 0xa6, 0x9e, 0xfd, 0x3a, 0x03, 0xd8,
582
 
        0xbf, 0x71, 0x70, 0x20, 0x8f, 0x7c, 0xfb, 0xff,
583
 
        0x61, 0xe0, 0xe2, 0x60, 0xa7, 0xb1, 0xc0, 0xe0,
584
 
        0xd9, 0x3f, 0xdc, 0x8d, 0x4a, 0xa4, 0x52, 0x61,
585
 
        0xaf, 0x9d, 0xdf, 0x8a, 0x0d, 0x41, 0xc0, 0x25,
586
 
        0x68, 0x12, 0x7b, 0xd5, 0xc7, 0xdb, 0x68, 0x70,
587
 
        0x2d, 0x7d, 0x95, 0x12, 0x03, 0x23, 0x0c, 0xe8,
588
 
        0x14, 0x41, 0x11, 0x28, 0xec, 0x9d, 0xd3, 0x28,
589
 
        0x77, 0x7a, 0x3c, 0x93, 0x8e, 0x5c, 0x7e, 0xb3,
590
 
        0x42, 0x9a, 0x18, 0x25, 0x93, 0xc8, 0xea, 0x43,
591
 
        0x1b, 0xbe, 0xd5, 0x27, 0xf1, 0xd4, 0xe0, 0x1e,
592
 
        0xce, 0xc7, 0xc7, 0x2c, 0x25, 0x35, 0x58, 0xb8,
593
 
        0x6c, 0xf3, 0xa2, 0xad, 0xe7, 0x58, 0x49, 0x47,
594
 
        0xf7, 0xca, 0xde, 0x8b, 0x81, 0xb7, 0x75, 0xf4,
595
 
        0x95, 0xa7, 0x5c, 0xc3, 0x2c, 0x0e, 0x1c, 0x52,
596
 
        0x9a, 0xc3, 0x2a, 0x00, 0x21, 0xa7, 0x51, 0x6b,
597
 
        0xf0, 0x05, 0x87, 0x8c, 0x42, 0x1b, 0xc3, 0x2e,
598
 
        0xa3, 0x76, 0x22, 0xd5, 0x7f, 0x56, 0x10, 0xef,
599
 
        0x98, 0x85, 0x65, 0x86, 0x71, 0x87, 0xd2, 0x8c,
600
 
        0xc0, 0x47, 0x20, 0xe8, 0xb5, 0x1c, 0xe3, 0xdd,
601
 
        0x3c, 0x5c, 0x03, 0xbb, 0x0e, 0x97, 0x3b, 0xe1,
602
 
        0x56, 0x9a, 0xd5, 0x0a, 0x63, 0xd5, 0x33, 0xaf,
603
 
        0x36, 0xca, 0xcf, 0x8f, 0x00, 0x28, 0xa3, 0x45,
604
 
        0xb8, 0xcd, 0xde, 0x73, 0xd4, 0xfa, 0x2d, 0x6f,
605
 
        0xdb, 0x93, 0xaa, 0xdd, 0x7f, 0xd2, 0x22, 0x9c,
606
 
        0x96, 0x48, 0x1e, 0xa8, 0x63, 0xbe, 0xbc, 0x0d,
607
 
        0x14, 0x3c, 0x2e, 0x11, 0x1f, 0xd2, 0xf4, 0x57,
608
 
        0xb3, 0x47, 0xf8, 0xa6, 0x1b, 0xc3, 0xa7, 0x95,
609
 
        0x2d, 0xd4, 0xca, 0xb8, 0x0d, 0xfb, 0x06, 0x85,
610
 
        0xda, 0x63, 0xf0, 0x3e, 0x9d, 0x5e, 0xee, 0xce,
611
 
        0xed, 0x74, 0x1d, 0x2c, 0x97, 0x3f, 0x71, 0x95,
612
 
        0x12, 0x03, 0xc5, 0x92, 0x46, 0x84, 0x1b, 0x07,
613
 
        0xe6, 0xb4, 0x1d, 0x3a, 0xf1, 0x89, 0x90, 0x50,
614
 
        0x10, 0x29, 0x34, 0xc0, 0x90, 0xbe, 0x4a, 0xa9,
615
 
        0x0d, 0xb0, 0x7b, 0xfb, 0x35, 0xee, 0x4e, 0x34,
616
 
        0xec, 0x5a, 0x58, 0xbc, 0xb8, 0xda, 0x38, 0x88,
617
 
        0x8c, 0x74, 0x1e, 0xc9, 0xab, 0x78, 0x2e, 0x2a,
618
 
        0x17, 0x8a, 0x43, 0x3d, 0xa1, 0x2a, 0x41, 0xb5,
619
 
        0xd6, 0xe8, 0x5b, 0xc5, 0x4a, 0x1c, 0x3c, 0x9f,
620
 
        0x8d, 0x3a, 0x69, 0x88, 0xf8, 0x80, 0xd2, 0x11,
621
 
        0xfc, 0x7e, 0x80, 0x8e, 0x7f, 0x85, 0x64, 0x9c,
622
 
        0x46, 0x58, 0xc8, 0x48, 0x98, 0x4b, 0xf5, 0x73,
623
 
        0x3f, 0x49, 0xce, 0x53, 0x2c, 0xd5, 0xfc, 0x33,
624
 
        0xf1, 0x6f, 0xd8, 0xe9, 0x2e, 0x70, 0x2e, 0xdc,
625
 
        0xe5, 0x43, 0x80, 0x38, 0xf2, 0x87, 0xed, 0x85,
626
 
        0xe4, 0x3e, 0x45, 0x14, 0x20, 0xcf, 0xa0, 0x61,
627
 
        0x4f, 0xe8, 0xd7, 0x5b, 0xb3, 0x0d, 0x0e, 0x4e,
628
 
        0x4d, 0xce, 0xbe, 0xba, 0xaa, 0x90, 0x09, 0xcb,
629
 
        0x4b, 0x5d, 0x08, 0xff, 0x52, 0xd5, 0x23, 0xbc,
630
 
        0xad, 0x8d, 0xd3, 0x06, 0x4a, 0xa0, 0x51, 0x56,
631
 
        0xa7, 0xd8, 0x33, 0xab, 0xbc, 0xd0, 0xdf, 0x92,
632
 
        0x87, 0x20, 0x2d, 0x7b, 0x5e, 0xfa, 0x30, 0xa7,
633
 
        0x06, 0x06, 0xe5, 0x4f, 0x2c, 0xb5, 0x61, 0xd7,
634
 
        0x54, 0xd3, 0xdf, 0xd0, 0x0a, 0xb0, 0x06, 0xce,
635
 
        0xf6, 0x86, 0xb7, 0x8e, 0xaa, 0x7b, 0x78, 0xd5,
636
 
        0xb9, 0xeb, 0x07, 0xac, 0x5f, 0xc5, 0xd2, 0x8c,
637
 
        0x40, 0xe0, 0x7f, 0x98, 0xd4, 0xe5, 0x4b, 0xca,
638
 
        0xfb, 0x47, 0xef, 0xef, 0xb9, 0x4d, 0x6d, 0x8f,
639
 
        0x82, 0x68, 0x74, 0x84, 0xe0, 0x0a, 0x93, 0x0f,
640
 
        0xb2, 0x01, 0xa9, 0x9f, 0x68, 0x6a, 0xe8, 0xf7,
641
 
        0xfb, 0x0b, 0xde, 0x17, 0xe0, 0x30, 0x38, 0x51,
642
 
        0xbc, 0x07, 0xb8, 0x2c, 0x91, 0x0f, 0xc1, 0x0e,
643
 
        0xa6, 0xf9, 0xf0, 0xd5, 0x48, 0x76, 0x8a, 0xde,
644
 
        0x74, 0xe3, 0x30, 0x65, 0x56, 0xb3, 0x5c, 0xe2,
645
 
        0x89, 0x8d, 0xda, 0x80, 0xad, 0x0f, 0x22, 0xfb,
646
 
        0x24, 0x1d, 0x16, 0xdd, 0x34, 0x4b, 0x90, 0x58,
647
 
        0x4e, 0x0c, 0x13, 0x28, 0xcf, 0x1d, 0xa4, 0xaa,
648
 
        0xb7, 0xf3, 0xb1, 0x66, 0xad, 0x3b, 0xcf, 0x79,
649
 
        0x12, 0x04, 0xd7, 0x79, 0xd9, 0x5f, 0xdf, 0x89,
650
 
        0xb2, 0x5b, 0xa7, 0x9a, 0x26, 0x1e, 0x67, 0x46,
651
 
        0x7c, 0x66, 0x95, 0x67, 0xe6, 0x45, 0x8b, 0x1f,
652
 
        0x65, 0x79, 0x9f, 0x6d, 0x11, 0x81, 0x17, 0x0d,
653
 
        0x11, 0xb0, 0x5c, 0xb4, 0xc7, 0x27, 0x87, 0xab,
654
 
        0x5d, 0x0a, 0x18, 0xae, 0x4e, 0x06, 0xa3, 0x3d,
655
 
        0xc7, 0xb0, 0x22, 0xba, 0x03, 0xa4, 0x0f, 0xe5,
656
 
        0x1c, 0x72, 0x2a, 0x04, 0xce, 0x83, 0xe9, 0xf3,
657
 
        0xd7, 0xc9, 0x67, 0x6c, 0x1e, 0x6b, 0x3c, 0x9b,
658
 
        0x0b, 0x5e, 0x6a, 0xa6, 0x79, 0x0a, 0xf1, 0xbe,
659
 
        0xd7, 0xb4, 0x6f, 0x45, 0x1e, 0xfb, 0x78, 0x97,
660
 
        0xaf, 0x34, 0x76, 0x95, 0x52, 0xf7, 0x3d, 0x5d,
661
 
        0x07, 0x28, 0x57, 0x9c, 0x4a, 0x0f, 0xcf, 0x0b,
662
 
        0x1b, 0xc4, 0xc2, 0x72, 0xd7, 0x72, 0x38, 0x9b,
663
 
        0xea, 0xeb, 0xee, 0xae, 0x34, 0xc8, 0x01, 0xd7,
664
 
        0xa5, 0xe3, 0xce, 0x41, 0xad, 0x02, 0x60, 0x23,
665
 
        0x18, 0x36, 0xba, 0x17, 0xfa, 0xcf, 0xe4, 0xda,
666
 
        0xdc, 0xfc, 0x82, 0xdc, 0x7c, 0x11, 0xf4, 0xb8,
667
 
        0x52, 0x5d, 0xf7, 0x2f, 0xc8, 0xfe, 0x4a, 0xe6,
668
 
        0xb9, 0xaf, 0x4b, 0x17, 0x18, 0x91, 0xc2, 0xfe,
669
 
        0xd7, 0x3a, 0x77, 0x0c, 0xa0, 0x43, 0x9c, 0x6f,
670
 
        0x13, 0x06, 0xbe, 0x6e, 0xe0, 0x1a, 0x3c, 0xf3,
671
 
        0xf5, 0xcc, 0x78, 0xfb, 0x5d, 0xd5, 0xda, 0xb7,
672
 
        0x58, 0xea, 0x86, 0x42, 0x6b, 0x32, 0xff, 0xb2,
673
 
        0xe2, 0xee, 0x03, 0x1f, 0xf4, 0xef, 0xdb, 0x53,
674
 
        0x79, 0xd5, 0x4e, 0xaf, 0x60, 0x8e, 0x02, 0xc2,
675
 
        0xcc, 0x39, 0x97, 0x7b, 0xfd, 0xa1, 0xf8, 0x7a,
676
 
        0x26, 0xe8, 0x55, 0xd6, 0xa4, 0x8b, 0xa0, 0x1b,
677
 
        0x2d, 0x63, 0xaa, 0x73, 0x71, 0x6e, 0xbf, 0x8b,
678
 
        0x3b, 0xe3, 0x1b, 0x0d, 0xbb, 0x2e, 0x44, 0x09,
679
 
        0x64, 0xac, 0xc7, 0x9e, 0xb5, 0xc6, 0x77, 0xb0,
680
 
        0x79, 0xb3, 0xaa, 0xfc, 0x67, 0x57, 0x9a, 0x50,
681
 
        0x81, 0x37, 0x14, 0x7c, 0xd7, 0xa0, 0xd4, 0x6a,
682
 
        0x79, 0x84, 0x51, 0x0e, 0x95, 0x0a, 0x30, 0xa3,
683
 
        0x60, 0x55, 0x48, 0x05, 0x16, 0xae, 0x43, 0x90,
684
 
        0xdc, 0x8e, 0x09, 0xbe, 0x79, 0xf6, 0x90, 0x74,
685
 
        0xf8, 0x20, 0x96, 0x4d, 0xa7, 0xf5, 0x1a, 0x2b,
686
 
        0xc7, 0x15, 0x9d, 0x18, 0xf7, 0x94, 0x87, 0xf7,
687
 
        0xf4, 0xfb, 0x0d, 0x61, 0xb6, 0xd7, 0xbe, 0x10,
688
 
        0x8e, 0x47, 0x3c, 0x10, 0x44, 0x90, 0x52, 0x21,
689
 
        0x83, 0xc0, 0xf5, 0x99, 0xaa, 0xbc, 0xf6, 0x55,
690
 
        0xae, 0xf5, 0xb2, 0xa4, 0xcd, 0x4d, 0xb9, 0x38,
691
 
        0x6c, 0xbc, 0x80, 0xc3, 0xad, 0xf4, 0x46, 0x31,
692
 
        0x01, 0x58, 0x2d, 0x88, 0x57, 0xc3, 0x23, 0xd1,
693
 
        0x64, 0xc9, 0xa3, 0x21, 0x6b, 0x8b, 0x8a, 0x23,
694
 
        0x2c, 0x4f, 0xa9, 0xcd, 0x67, 0xfa, 0x77, 0xad,
695
 
        0xa3, 0x16, 0xa2, 0xe5, 0x19, 0x14, 0x70, 0x41,
696
 
        0x5b, 0xda, 0x14, 0xde, 0xe3, 0xe5, 0xc1, 0x15,
697
 
        0xb4, 0x77, 0xa4, 0x9b, 0xb8, 0xb1, 0x28, 0x51,
698
 
        0x30, 0xb4, 0xf1, 0xf3, 0xf8, 0x6d, 0xd0, 0xc3,
699
 
        0x8c, 0x4c, 0x76, 0xb0, 0x9a, 0xdf, 0xc8, 0xbe,
700
 
        0xf8, 0x4a, 0x61, 0x6e, 0x3e, 0xd6, 0x3c, 0xe8,
701
 
        0xde, 0x56, 0xa0, 0x9c, 0x25, 0xbe, 0xce, 0x93,
702
 
        0x1f, 0x88, 0xfb, 0x9a, 0x1a, 0xe2, 0xff, 0x88,
703
 
        0xad, 0x10, 0xcb, 0x6c, 0xd6, 0xe7, 0x39, 0x0b,
704
 
        0xe5, 0x1a, 0x06, 0x05, 0x64, 0x5b, 0x0a, 0xdf,
705
 
        0x22, 0x58, 0xd7, 0xfb, 0x88, 0x12, 0xdd, 0xb7,
706
 
        0x52, 0x3a, 0xc9, 0xbf, 0x49, 0xdf, 0x8c, 0x87,
707
 
        0x9f, 0x84, 0xb5, 0x0a, 0xf6, 0x00, 0x52, 0xae,
708
 
        0x67, 0x12, 0x1a, 0x8c, 0x71, 0x15, 0xf5, 0xa1,
709
 
        0x13, 0x39, 0xf0, 0x91, 0x7e, 0x88, 0x7c, 0xb3,
710
 
        0x95, 0x50, 0x02, 0xa6, 0x63, 0xb5, 0x64, 0xfb,
711
 
        0x90, 0x87, 0x61, 0xe2, 0x27, 0xaf, 0x11, 0x0c,
712
 
        0x73, 0x83, 0xef, 0xa9, 0x28, 0xfe, 0xc8, 0x85,
713
 
        0x1a, 0x3a, 0xde, 0xf2, 0xe5, 0x25, 0x64, 0x6d,
714
 
        0xaa, 0x41, 0x4c, 0x80, 0x2e, 0x84, 0xff, 0xc1,
715
 
        0xc0, 0x54, 0x0c, 0x29, 0x1b, 0xa3, 0x07, 0x7c,
716
 
        0x33, 0x4c, 0x10, 0xf6, 0x6f, 0x79, 0xdf, 0xd3,
717
 
        0xf0, 0x24, 0x57, 0xf1, 0x60, 0xe1, 0xf0, 0xbd,
718
 
        0xc4, 0x1f, 0xf4, 0x67, 0xd2, 0xd3, 0xcc, 0x6a,
719
 
        0x07, 0x72, 0x44, 0x16, 0x85, 0x46, 0xd0, 0x73,
720
 
        0x87, 0xa9, 0xc7, 0x2f, 0xd1, 0xf5, 0xec, 0xe3,
721
 
        0x28, 0xa3, 0x93, 0x4f, 0xd7, 0x76, 0xc1, 0x3c,
722
 
        0x0d, 0x13, 0x33, 0xcf, 0x5b, 0xbd, 0x6a, 0x52,
723
 
        0x4e, 0xee, 0xc8, 0x5e, 0xa1, 0x58, 0x4a, 0x08,
724
 
        0x81, 0xd9, 0x23, 0xcc, 0xfb, 0x1c, 0xb2, 0xd8,
725
 
        0xa3, 0xe4, 0x53, 0xfe, 0xf4, 0x4b, 0x48, 0xc1,
726
 
        0x20, 0xa4, 0x97, 0xf8, 0x38, 0xa3, 0x69, 0xc1,
727
 
        0x11, 0xf0, 0xa1, 0x3b, 0xa9, 0x9a, 0x12, 0x61,
728
 
        0xe8, 0x8d, 0x99, 0x44, 0x3f, 0x94, 0x72, 0x82,
729
 
        0x19, 0x96, 0x62, 0xb0, 0xa6, 0x64, 0x05, 0x19,
730
 
        0x8f, 0xd6, 0x5d, 0x05, 0xbf, 0x79, 0x9e, 0x9d,
731
 
        0xe4, 0x93, 0x4c, 0xad, 0x61, 0x8c, 0x18, 0xda,
732
 
        0xb6, 0x2e, 0xb3, 0xca, 0x14, 0x4d, 0x53, 0xa4,
733
 
        0x97, 0x27, 0x10, 0x56, 0xa2, 0x67, 0x5a, 0x5a,
734
 
        0x5e, 0x13, 0xc0, 0xdb, 0xa7, 0x9f, 0x45, 0x5b,
735
 
        0xeb, 0x1a, 0x14, 0x0c, 0x8c, 0x38, 0x5e, 0x77,
736
 
        0x9a, 0xec, 0x75, 0x68, 0x93, 0x65, 0x02, 0x9c,
737
 
        0xfb, 0x62, 0x60, 0x49, 0xdd, 0xb2, 0x2a, 0x67,
738
 
        0x86, 0xe3, 0x8a, 0x7d, 0x8c, 0x46, 0x78, 0x81,
739
 
        0x60, 0x69, 0xf2, 0x3f, 0x74, 0x11, 0x35, 0xff,
740
 
        0x77, 0xa3, 0x66, 0x20, 0xfc, 0x98, 0x4a, 0x35,
741
 
        0x7a, 0x52, 0xe4, 0x90, 0x13, 0x80, 0xb9, 0xa6,
742
 
        0x73, 0x7a, 0x7d, 0x66, 0x6e, 0x6b, 0xb6, 0x43,
743
 
        0x10, 0xd5, 0x91, 0x2b, 0x66, 0xdd, 0x89, 0x87,
744
 
        0xe3, 0x8c, 0x58, 0x53, 0x2f, 0x40, 0x74, 0x45,
745
 
        0x1b, 0x77, 0x7a, 0xa4, 0x44, 0x19, 0x78, 0xba,
746
 
        0x87, 0x10, 0x41, 0x31, 0x32, 0x5f, 0x87, 0x68,
747
 
        0xde, 0x43, 0x4a, 0xef, 0x33, 0xb3, 0x11, 0x83,
748
 
        0xa9, 0xc2, 0x6f, 0x8d, 0x34, 0xe2, 0x95, 0x84,
749
 
        0x3a, 0x4f, 0x6f, 0x8c, 0x31, 0x1d, 0xb6, 0xf5,
750
 
        0x95, 0x0d, 0x01, 0x11, 0x20, 0xdf, 0x72, 0xf3,
751
 
        0x3f, 0x9a, 0x33, 0xaa, 0xb1, 0x06, 0x6a, 0x63,
752
 
        0x47, 0x91, 0x01, 0xdf, 0xb3, 0x54, 0x36, 0xfd,
753
 
        0x06, 0x2d, 0xb8, 0x08, 0xe3, 0xd3, 0x65, 0xac,
754
 
        0x66, 0x03, 0xee, 0xa4, 0x63, 0xbd, 0xd4, 0xce,
755
 
        0xbd, 0x79, 0xa7, 0x48, 0x38, 0xc5, 0x7d, 0xb5,
756
 
        0x71, 0x9a, 0x3c, 0x11, 0x7c, 0x6c, 0xe2, 0x54,
757
 
        0x02, 0x5d, 0x42, 0xab, 0x25, 0x93, 0x66, 0x01,
758
 
        0x37, 0x78, 0x35, 0x4a, 0x8c, 0x19, 0x4d, 0x00,
759
 
        0x75, 0x4f, 0xcc, 0xc0, 0x26, 0x82, 0xc1, 0x35,
760
 
        0x8c, 0xc7, 0xc2, 0x59, 0x01, 0x3e, 0x98, 0x22,
761
 
        0x88, 0x9c, 0x90, 0x75, 0x05, 0x33, 0x07, 0xb9,
762
 
        0x39, 0x81, 0x38, 0x58, 0x10, 0x29, 0xcf, 0xc8,
763
 
        0x98, 0xb2, 0x03, 0xd7, 0x5b, 0xb3, 0x18, 0xba,
764
 
        0x34, 0x0c, 0x9f, 0xab, 0xd7, 0xed, 0x29, 0x82,
765
 
        0x41, 0xe0, 0x20, 0x97, 0x57, 0x92, 0xb2, 0xb8,
766
 
        0x10, 0x2d, 0x0b, 0xa2, 0xc5, 0x8f, 0x90, 0x6f,
767
 
        0xed, 0x12, 0x56, 0x25, 0xbe, 0xfd, 0x75, 0xf7,
768
 
        0xb6, 0xf8, 0x40, 0x67, 0x39, 0x11, 0xfa, 0x15,
769
 
        0xae, 0x6a, 0x54, 0x5f, 0x32, 0x2b, 0xf8, 0x48,
770
 
        0x55, 0xbe, 0x86, 0x2f, 0x69, 0x48, 0x5b, 0x5d,
771
 
        0x4d, 0xb7, 0x35, 0xaa, 0xb6, 0x91, 0x88, 0x19,
772
 
        0x96, 0x1c, 0x68, 0xf6, 0x85, 0x9e, 0xb3, 0xb2,
773
 
        0xa3, 0x32, 0xd4, 0x52, 0x70, 0xb7, 0x62, 0xe3,
774
 
        0x14, 0xb6, 0x78, 0x5f, 0x1b, 0x1d, 0x04, 0x9c,
775
 
        0x26, 0x0c, 0x33, 0x94, 0xb1, 0x97, 0x08, 0xdb,
776
 
        0x0b, 0x39, 0x29, 0xd4, 0xbc, 0x6d, 0xdf, 0x02,
777
 
        0xc6, 0x99, 0xab, 0x99, 0x32, 0xe5, 0xce, 0x51,
778
 
        0x4f, 0xae, 0xb8, 0x8b, 0xe0, 0xaf, 0x07, 0xc4,
779
 
        0xf9, 0x41, 0x7c, 0x59, 0xa0, 0xac, 0x74, 0x4d,
780
 
        0x7e, 0x43, 0x77, 0x9c, 0x06, 0x49, 0x79, 0x8a,
781
 
        0x14, 0x73, 0x93, 0xa8, 0x5b, 0x1b, 0x34, 0x29,
782
 
        0x78, 0x04, 0x2f, 0xd7, 0x1f, 0x13, 0x90, 0xe0,
783
 
        0xdd, 0x3b, 0x42, 0x6b, 0x79, 0x6e, 0x52, 0xc7,
784
 
        0x0f, 0x38, 0xda, 0x01, 0x2c, 0x8d, 0xe6, 0x94,
785
 
        0x5d, 0x59, 0x27, 0x1d, 0x10, 0x4e, 0x11, 0x36,
786
 
        0xfb, 0x53, 0x16, 0x05, 0x25, 0xf2, 0x64, 0xd8,
787
 
        0xf9, 0xcd, 0x5c, 0xfe, 0xb4, 0x18, 0x44, 0x80,
788
 
        0x10, 0xbc, 0x3d, 0xf3, 0x1d, 0x5a, 0xf0, 0xc1,
789
 
        0xc3, 0x55, 0xff, 0x41, 0x3e, 0xe3, 0xef, 0x44,
790
 
        0xb2, 0xc0, 0x01, 0x18, 0xa2, 0x49, 0x88, 0x78,
791
 
        0x0d, 0x4c, 0xc8, 0x73, 0xcf, 0x30, 0x85, 0x3a,
792
 
        0x88, 0x90, 0x01, 0xcf, 0x69, 0x53, 0xa3, 0x18,
793
 
        0x3f, 0xd6, 0xe7, 0x94, 0x14, 0xa7, 0xae, 0xcd,
794
 
        0x6f, 0x11, 0x72, 0xfe, 0x2b, 0xb0, 0x81, 0x53,
795
 
        0xea, 0x67, 0xd6, 0xe4, 0xca, 0x42, 0xa0, 0xf9,
796
 
        0xb1, 0xd4, 0xb5, 0x3b, 0xc9, 0xf0, 0x36, 0xc1,
797
 
        0x1c, 0xf4, 0xb1, 0xf6, 0x84, 0xd0, 0x86, 0x6c,
798
 
        0x76, 0x9a, 0x03, 0xc2, 0xb6, 0x2e, 0x9a, 0x46,
799
 
        0xf5, 0x5f, 0x2c, 0x38, 0xac, 0xad, 0x6f, 0x2e,
800
 
        0x7a, 0x18, 0x2d, 0x22, 0x95, 0x5e, 0x5e, 0xc9,
801
 
        0x7a, 0x0a, 0x56, 0xe1, 0xc7, 0x15, 0xfd, 0xbf,
802
 
        0xff, 0xf7, 0x7e, 0x85, 0x20, 0xa9, 0x8a, 0x9c,
803
 
        0xa9, 0x7d, 0xe8, 0xed, 0xfc, 0x7f, 0xbb, 0xf0,
804
 
        0x05, 0x3f, 0xce, 0x4f, 0x4c, 0xee, 0xa4, 0xa0,
805
 
        0xcc, 0x9c, 0x62, 0x1e, 0xd6, 0xd0, 0x30, 0x37,
806
 
        0xb8, 0x98, 0x56, 0x1d, 0xaa, 0xd6, 0x5e, 0x73,
807
 
        0x12, 0xe4, 0x88, 0x82, 0x48, 0x64, 0x06, 0xd7,
808
 
        0x2a, 0x31, 0x50, 0x7b, 0x10, 0x17, 0xb8, 0x4c,
809
 
        0x5a, 0x8d, 0xf1, 0xfc, 0xf1, 0x33, 0x3b, 0x98,
810
 
        0x42, 0x18, 0x5b, 0x35, 0x78, 0xca, 0x8e, 0x41,
811
 
        0x52, 0xae, 0x6d, 0xe1, 0xa2, 0x9d, 0x5b, 0xbd,
812
 
        0xf3, 0x5f, 0x49, 0xc1, 0x27, 0x06, 0xc1, 0xaf,
813
 
        0xc0, 0xa3, 0x9d, 0xf3, 0x1c, 0x8e, 0x90, 0x8a,
814
 
        0xb0, 0x69, 0xb0, 0xc5, 0x11, 0x0c, 0x91, 0x14,
815
 
        0x1f, 0x5e, 0x10, 0xe1, 0x1d, 0x14, 0x30, 0x54,
816
 
        0x1e, 0x17, 0x3d, 0x31, 0x7b, 0xbf, 0x2f, 0x9d,
817
 
        0x6d, 0x63, 0x32, 0xf0, 0x9d, 0x9f, 0x95, 0x3d,
818
 
        0x0b, 0xd2, 0x4d, 0x10, 0xe2, 0x3f, 0x67, 0x69,
819
 
        0x43, 0x9a, 0x4a, 0x2c, 0x54, 0x71, 0xa8, 0xa0,
820
 
        0x9e, 0x9f, 0x10, 0xaf, 0x1b, 0xce, 0x99, 0xe3,
821
 
        0x25, 0x32, 0x10, 0x54, 0x80, 0xfe, 0xda, 0x57,
822
 
        0xd0, 0xb2, 0x92, 0x7f, 0xbb, 0x5f, 0xe7, 0x4d,
823
 
        0x1b, 0x3d, 0x46, 0x4d, 0xe4, 0x4c, 0xd6, 0xaf,
824
 
        0x1a, 0x32, 0x12, 0x40, 0xb8, 0x84, 0x8e, 0xe4,
825
 
        0x80, 0xce, 0x7e, 0xc1, 0x13, 0x8b, 0xb0, 0xb7,
826
 
        0x6f, 0x24, 0xba, 0x85, 0x50, 0x83, 0xc3, 0xcf,
827
 
        0x19, 0xb3, 0xf0, 0xc7, 0xee, 0x68, 0xbe, 0x9e,
828
 
        0x6d, 0xb9, 0xfb, 0xd5, 0x29, 0xce, 0x82, 0xcd,
829
 
        0x69, 0x16, 0x68, 0x6b, 0x6a, 0xf4, 0x02, 0x32,
830
 
        0xce, 0x60, 0x37, 0x0c, 0xb9, 0x38, 0x92, 0x9c,
831
 
        0x42, 0xa9, 0x0b, 0x53, 0x96, 0xfe, 0x39, 0xc1,
832
 
        0x24, 0x65, 0x9b, 0xcd, 0xe7, 0x8d, 0x36, 0x07,
833
 
        0x9f, 0x1d, 0x35, 0x8e, 0xdc, 0x4c, 0xb5, 0x68,
834
 
        0xc5, 0xfd, 0x44, 0x19, 0xf2, 0x6c, 0x59, 0x1c,
835
 
        0xb1, 0x0b, 0x35, 0x48, 0x86, 0x1a, 0x05, 0x22,
836
 
        0x03, 0x0c, 0x0c, 0xa2, 0x92, 0x90, 0x35, 0xfb,
837
 
        0x37, 0x94, 0xc7, 0x15, 0x84, 0xae, 0xe8, 0x05,
838
 
        0xa0, 0xf7, 0x30, 0x11, 0x5c, 0xe4, 0x5d, 0x3e,
839
 
        0x12, 0x54, 0x80, 0x54, 0x6b, 0x09, 0x8c, 0xce,
840
 
        0x80, 0x5e, 0xa7, 0xc8, 0x6a, 0x0c, 0x56, 0xe1,
841
 
        0x18, 0x7d, 0xc9, 0x39, 0xc1, 0xef, 0xe3, 0x25,
842
 
        0xa0, 0x8b, 0x2f, 0x60, 0x3a, 0x43, 0x39, 0xa6,
843
 
        0x28, 0x28, 0x7b, 0x4c, 0x77, 0xd4, 0x49, 0x61,
844
 
        0x46, 0xe9, 0x1b, 0x45, 0xd6, 0xb1, 0x56, 0xe1,
845
 
        0x7d, 0x34, 0xcd, 0x06, 0xb6, 0x67, 0x8d, 0x7d,
846
 
        0x7a, 0xe2, 0xbe, 0x68, 0x35, 0xa6, 0x78, 0xe5,
847
 
        0x47, 0x48, 0xb7, 0xc7, 0xde, 0xcd, 0xc9, 0x05,
848
 
        0xb4, 0xe7, 0x50, 0x48, 0xe1, 0x4b, 0xfe, 0x76,
849
 
        0x77, 0xc6, 0xf7, 0x5f, 0xcb, 0xc2, 0xa8, 0xd7,
850
 
        0xd6, 0x8a, 0xe5, 0x49, 0xd9, 0xca, 0x45, 0xf4,
851
 
        0xda, 0xcd, 0x33, 0xd1, 0x59, 0x2d, 0x9e, 0xc1,
852
 
        0x5c, 0xe6, 0x01, 0x18, 0xb8, 0xf0, 0x5e, 0xb1,
853
 
        0x69, 0x95, 0x2f, 0x02, 0x2a, 0xe7, 0x4a, 0xd7,
854
 
        0xd1, 0xc3, 0xd5, 0x6f, 0x15, 0xc8, 0xdc, 0x29,
855
 
        0xde, 0xb9, 0x3f, 0x8b, 0xa6, 0xbc, 0xdd, 0x25,
856
 
        0x84, 0x35, 0x3c, 0x90, 0x2d, 0xc2, 0x1e, 0x98,
857
 
        0x8a, 0x50, 0x09, 0x77, 0x42, 0xe9, 0x35, 0x8a,
858
 
        0x7c, 0x97, 0xbf, 0xe8, 0xbf, 0x56, 0xd0, 0x8b,
859
 
        0x65, 0xd3, 0xaf, 0x1e, 0x05, 0x94, 0xfa, 0xac,
860
 
        0xa8, 0x2b, 0x28, 0xcb, 0x37, 0x3e, 0xe8, 0xbb,
861
 
        0x66, 0x3a, 0xed, 0xb2, 0x48, 0x10, 0x0f, 0x3a,
862
 
        0x5a, 0xc5, 0xdb, 0x26, 0x0e, 0xaa, 0x5e, 0x69,
863
 
        0x15, 0xd6, 0x81, 0xae, 0xbd, 0xe6, 0x03, 0xf1,
864
 
        0xf6, 0x37, 0xc8, 0xde, 0x70, 0x1f, 0x64, 0xb9,
865
 
        0x5e, 0xbf, 0x2e, 0x4f, 0xb1, 0xea, 0xa0, 0x17,
866
 
        0xe6, 0x7c, 0xf9, 0x2f, 0x1e, 0xd8, 0x58, 0xde,
867
 
        0xa7, 0xf0, 0x46, 0x52, 0x95, 0xdf, 0xa4, 0x96,
868
 
        0xd0, 0xc4, 0x97, 0x2b, 0x95, 0xcd, 0x5e, 0x40,
869
 
        0x23, 0x5c, 0x10, 0xee, 0xba, 0x72, 0x9b, 0xcf,
870
 
        0x0b, 0xe8, 0x18, 0x3a, 0x70, 0xd2, 0x5e, 0x07,
871
 
        0x68, 0x93, 0xef, 0x4a, 0x5b, 0x8d, 0x72, 0x41,
872
 
        0x4e, 0xea, 0x33, 0x6a, 0x0a, 0x5e, 0xfb, 0x02,
873
 
        0x3f, 0xd4, 0xed, 0x5b, 0xe0, 0x42, 0x84, 0xd4,
874
 
        0xaa, 0x85, 0xdc, 0x5b, 0x67, 0xee, 0x71, 0x67,
875
 
        0xba, 0x8e, 0xd2, 0xbe, 0x61, 0xdf, 0x5a, 0x26,
876
 
        0xb9, 0xf0, 0x77, 0x81, 0x53, 0x24, 0x16, 0xcb,
877
 
        0x8c, 0xb8, 0x06, 0x6e, 0x68, 0xda, 0xc8, 0x2d,
878
 
        0x17, 0x54, 0xdb, 0x46, 0xcb, 0xfd, 0x1f, 0x3d,
879
 
        0x94, 0x81, 0x09, 0x4b, 0xfa, 0xb1, 0x46, 0xd9,
880
 
        0x11, 0xa3, 0xb7, 0x31, 0x9c, 0xd2, 0x38, 0xd6,
881
 
        0xba, 0x3d, 0xa3, 0x74, 0xd8, 0xf1, 0x24, 0xe8,
882
 
        0x9c, 0xcb, 0x1d, 0xf9, 0x4a, 0xf7, 0xc8, 0x4b,
883
 
        0xfe, 0x97, 0x7c, 0xa1, 0x02, 0xeb, 0x40, 0xc3,
884
 
        0x89, 0x71, 0x01, 0xcd, 0x33, 0x2a, 0xc2, 0x82,
885
 
        0xce, 0x62, 0x8d, 0x53, 0x7c, 0xdf, 0xce, 0xd7,
886
 
        0xf5, 0xa8, 0x4f, 0xf2, 0xf2, 0x2e, 0xc1, 0xeb,
887
 
        0x97, 0x99, 0x37, 0x3c, 0x53, 0xa6, 0xb4, 0x46,
888
 
        0x05, 0x64, 0x92, 0x87, 0x08, 0x3c, 0x23, 0x4b,
889
 
        0x9d, 0x67, 0x18, 0xf9, 0xe2, 0x0b, 0x1c, 0x39,
890
 
        0xd3, 0x87, 0x70, 0xc0, 0xb9, 0x1e, 0x52, 0x0a,
891
 
        0x0f, 0x48, 0xe2, 0xe7, 0x51, 0x72, 0x94, 0xf7,
892
 
        0xa3, 0xdc, 0xe5, 0x66, 0x33, 0x39, 0x54, 0x06,
893
 
        0x55, 0x93, 0x30, 0xf9, 0x5e, 0x76, 0x8f, 0xe0,
894
 
        0x59, 0x4d, 0x0d, 0xa7, 0xf5, 0xbe, 0xdb, 0x20,
895
 
        0xad, 0x0d, 0x76, 0x88, 0x5f, 0x9c, 0x7c, 0x75,
896
 
        0x2f, 0x2a, 0x0b, 0x79, 0x6e, 0xd3, 0xe2, 0x66,
897
 
        0xf5, 0x4a, 0x2d, 0x87, 0x87, 0x49, 0x84, 0x17,
898
 
        0xa2, 0x62, 0x4c, 0xbb, 0xe4, 0x6e, 0x98, 0x10,
899
 
        0xc9, 0xfb, 0x8a, 0x04, 0x68, 0x8d, 0x22, 0x66,
900
 
        0xad, 0xea, 0x2a, 0xc9, 0x97, 0x2d, 0x3c, 0xbc,
901
 
        0xd0, 0x77, 0x5f, 0xe6, 0xb8, 0x7f, 0xe6, 0xf6,
902
 
        0x39, 0xbf, 0x56, 0x0e, 0x26, 0x6d, 0xc5, 0x3e,
903
 
        0x53, 0x19, 0xd6, 0xb4, 0x57, 0x36, 0xa3, 0xc6,
904
 
        0xd3, 0x3d, 0x66, 0x79, 0x30, 0x5c, 0x14, 0x0c,
905
 
        0x0f, 0x3e, 0x96, 0xae, 0x90, 0x97, 0xab, 0x0d,
906
 
        0x9f, 0xc3, 0xe7, 0x66, 0x3e, 0xe0, 0x31, 0x43,
907
 
        0x4b, 0x01, 0xb3, 0x0e, 0x9e, 0x8c, 0x82, 0x4a,
908
 
        0x8c, 0xc7, 0x79, 0x85, 0xdf, 0x75, 0x0d, 0xb4,
909
 
        0x2b, 0x03, 0x14, 0xef, 0x72, 0x58, 0xfd, 0x64,
910
 
        0xc8, 0xe3, 0x0d, 0x9a, 0x14, 0x6f, 0x76, 0xf9,
911
 
        0x46, 0xd1, 0xd2, 0x81, 0xb3, 0x16, 0x6e, 0xc7,
912
 
        0x76, 0x82, 0xce, 0xf4, 0xee, 0x33, 0x00, 0xe6,
913
 
        0x77, 0xc4, 0xad, 0x4f, 0x06, 0xa7, 0x48, 0x80,
914
 
        0x9e, 0x21, 0x66, 0xca, 0x75, 0x69, 0x57, 0xcb,
915
 
        0xf0, 0x67, 0x6a, 0xaa, 0x8f, 0x88, 0x14, 0xbd,
916
 
        0x65, 0x62, 0xe2, 0xad, 0xcc, 0x22, 0x88, 0x7b,
917
 
        0x94, 0xbd, 0x0e, 0xcd, 0xb6, 0x69, 0xa2, 0xcb,
918
 
        0x7d, 0x57, 0x5c, 0xb4, 0x92, 0x80, 0x13, 0x99,
919
 
        0x84, 0xf3, 0x79, 0x0a, 0x2d, 0x70, 0xa4, 0xe0,
920
 
        0xde, 0xc6, 0x32, 0xb0, 0x8a, 0x62, 0xb5, 0xcf,
921
 
        0xfa, 0x5e, 0x5a, 0x92, 0x32, 0x7d, 0x34, 0x07,
922
 
        0xb5, 0x52, 0x3a, 0xb5, 0x7d, 0x0f, 0xa1, 0xba,
923
 
        0x56, 0xd0, 0x07, 0x76, 0x11, 0xf2, 0xc3, 0x33,
924
 
        0x9d, 0xbd, 0x12, 0x35, 0x5e, 0xf7, 0x05, 0x88,
925
 
        0x76, 0x94, 0xa6, 0xbf, 0xed, 0xb8, 0xa4, 0xa2,
926
 
        0x0c, 0xbe, 0x0f, 0x6a, 0xaf, 0xf3, 0x1b, 0x33,
927
 
        0x4a, 0xb7, 0x68, 0x3f, 0xbe, 0x95, 0x13, 0x97,
928
 
        0x0f, 0x15, 0x17, 0x1b, 0x23, 0xaa, 0x08, 0x78,
929
 
        0xa6, 0x5b, 0x08, 0xa2, 0x9d, 0x03, 0xa8, 0xa7,
930
 
        0x39, 0xdc, 0xbc, 0x9a, 0x85, 0xf5, 0xe5, 0x55,
931
 
        0x59, 0x3c, 0xef, 0xf9, 0x3f, 0x22, 0x8e, 0xf8,
932
 
        0xd8, 0x3e, 0x02, 0x0b, 0xd8, 0x78, 0x4b, 0x15,
933
 
        0x7f, 0xaa, 0x2c, 0xff, 0xbe, 0x77, 0x33, 0xc7,
934
 
        0x6a, 0x12, 0xaa, 0xa4, 0xbe, 0xc0, 0x3b, 0xcb,
935
 
        0x13, 0x9d, 0x9c, 0x5a, 0x9f, 0x8a, 0x57, 0x36,
936
 
        0x4f, 0x02, 0x5a, 0xf8, 0x1d, 0x97, 0x77, 0x43,
937
 
        0xc8, 0xa5, 0xb7, 0x9b, 0x10, 0x98, 0xfd, 0x58,
938
 
        0xbf, 0x42, 0xf6, 0xbf, 0xff, 0x6c, 0x40, 0x18,
939
 
        0x18, 0xdf, 0xac, 0x57, 0x71, 0xea, 0xcc, 0x8e,
940
 
        0xfd, 0xfe, 0x10, 0xfb, 0xb9, 0xfe, 0xbc, 0x9a,
941
 
        0x9c, 0x27, 0xe4, 0x10, 0x15, 0x94, 0x41, 0xa1,
942
 
        0xcc, 0xf6, 0x25, 0x49, 0x4f, 0x96, 0xc1, 0x8c,
943
 
        0x9e, 0x3e, 0x18, 0x29, 0x49, 0x92, 0xe7, 0xfe,
944
 
        0x22, 0xff, 0xed, 0x02, 0x16, 0x90, 0xef, 0xac,
945
 
        0xec, 0x95, 0x1d, 0x5b, 0x94, 0x9c, 0xf6, 0x7c,
946
 
        0x1b, 0x5a, 0x9d, 0xb0, 0x9b, 0x05, 0x36, 0xbf,
947
 
        0xef, 0xec, 0x63, 0x35, 0x40, 0x24, 0x45, 0x40,
948
 
        0x30, 0x1a, 0x9b, 0x90, 0xc3, 0xc2, 0xf7, 0x37,
949
 
        0xfb, 0x08, 0x8e, 0x48, 0x19, 0x48, 0xed, 0xa8,
950
 
        0xa8, 0x04, 0x6f, 0xd0, 0x33, 0xe9, 0xb8, 0x8d,
951
 
        0xe7, 0x1e, 0x5c, 0x47, 0x74, 0xc0, 0x66, 0x30,
952
 
        0x4e, 0xa7, 0x86, 0x73, 0xf1, 0xe5, 0x78, 0xa6,
953
 
        0xe0, 0xc1, 0xda, 0x13, 0x72, 0x07, 0x85, 0x34,
954
 
        0x63, 0x95, 0x49, 0x30, 0x4b, 0x9d, 0x03, 0xf1,
955
 
        0x7a, 0x6b, 0x91, 0xa2, 0x85, 0x41, 0xf9, 0x4a,
956
 
        0xd6, 0xff, 0xff, 0x86, 0xf7, 0xf0, 0xce, 0xb9,
957
 
        0x07, 0xf1, 0x88, 0x04, 0x33, 0xaa, 0xeb, 0x54,
958
 
        0xb2, 0x1c, 0x8e, 0x2e, 0x7b, 0x04, 0xa8, 0xcc,
959
 
        0x2c, 0x7a, 0xb3, 0xad, 0x1a, 0x89, 0x38, 0x89,
960
 
        0xd7, 0x11, 0x3a, 0x8c, 0xcf, 0xe3, 0xc5, 0xba,
961
 
        0xb0, 0xcc, 0xc4, 0xe3, 0x33, 0xf3, 0x18, 0xba,
962
 
        0xec, 0x56, 0xd9, 0x1c, 0x40, 0x70, 0x0d, 0x4e,
963
 
        0x97, 0x01, 0x23, 0xf3, 0x5a, 0xdc, 0xbf, 0x68,
964
 
        0x93, 0xc2, 0x1d, 0x8a, 0x96, 0xb7, 0xac, 0x18,
965
 
        0x6f, 0xf7, 0x84, 0x71, 0x0d, 0x3d, 0xf8, 0xba,
966
 
        0xdf, 0xb6, 0x89, 0x1d, 0x78, 0x19, 0xf2, 0x59,
967
 
        0xe9, 0x15, 0x55, 0x29, 0x73, 0x50, 0x59, 0x14,
968
 
        0x02, 0x21, 0x16, 0x8f, 0x0f, 0xdf, 0xa5, 0xf0,
969
 
};
970
 
 
971
 
static struct crc_test {
972
 
        uint32_t crc;           /* random starting crc */
973
 
        uint32_t start;         /* random offset in buf */
974
 
        uint32_t length;        /* random length of test */
975
 
        uint32_t crc_le;        /* expected crc32_le result */
976
 
        uint32_t crc_be;        /* expected crc32_be result */
977
 
} test[] = {
978
 
        {0xffffffff, 0x00000000, 0x00001000, 0x13934bef, 0x14f3b75f},
979
 
        {0xfe7328ea, 0x00000763, 0x00000717, 0xed2c0d70, 0x57531214},
980
 
        {0x4c40684e, 0x00000721, 0x0000011e, 0xd7f46ccc, 0xedf12ec3},
981
 
        {0x6b487f90, 0x00000264, 0x000007bc, 0x759e9939, 0x9af8e387},
982
 
        {0x9f5810db, 0x00000afa, 0x00000255, 0x2685197f, 0x716de6ed},
983
 
        {0xb15c4755, 0x00000d5b, 0x000002a4, 0xd8fadcb5, 0xfc34ae3f},
984
 
        {0x06518253, 0x00000ffb, 0x00000004, 0xabee2433, 0xfa30ac9e},
985
 
        {0xd9e71c55, 0x00000a2a, 0x00000259, 0x96682af2, 0xe5907ea3},
986
 
        {0x0c1ae843, 0x00000ce4, 0x0000031b, 0x7b637c43, 0xe7f71b04},
987
 
        {0xec3cd517, 0x000002ff, 0x00000566, 0x5d719a77, 0xed16e045},
988
 
        {0x77828e95, 0x0000067f, 0x0000038f, 0x43ee5b6c, 0x35999927},
989
 
        {0xec87b4e3, 0x00000d1c, 0x000002e3, 0x2ddd2eee, 0x9452d3f8},
990
 
        {0x412158bb, 0x00000eee, 0x00000111, 0x67b38ba2, 0x177976d0},
991
 
        {0x2e52de3e, 0x00000c4a, 0x000003b5, 0xbcc5d61d, 0xf60fee71},
992
 
        {0x6ddaae8b, 0x00000d99, 0x00000266, 0x8b535544, 0x1dab8596},
993
 
        {0x049b6cb1, 0x000009c5, 0x000000b0, 0xfc22cabc, 0x47ebc954},
994
 
        {0x77d4b954, 0x0000028a, 0x000007fa, 0x71d00923, 0x905585ef},
995
 
        {0x5e192355, 0x00000ac1, 0x000001fa, 0xb966b81a, 0x33c12903},
996
 
        {0x7d80b71d, 0x00000213, 0x000001e0, 0x2bba371a, 0x5f4bd8d9},
997
 
        {0x01f6f1e4, 0x000001d6, 0x00000395, 0xb7e8a647, 0x2a7943a1},
998
 
        {0x1dfabb13, 0x00000e14, 0x000001eb, 0x53917fba, 0x8dee1e5d},
999
 
        {0xb00a4449, 0x00000bf6, 0x00000409, 0xedecb577, 0x628e087d},
1000
 
        {0x7ecd3981, 0x0000083f, 0x0000016b, 0xefef62b9, 0xda4f94e6},
1001
 
        {0xf8f330d2, 0x000004be, 0x00000757, 0x9357c9f3, 0x8e2d5c2f},
1002
 
        {0x03c38af2, 0x00000d23, 0x000002dc, 0x360fa8c0, 0x6294c0d6},
1003
 
        {0x687bb79b, 0x00000f3d, 0x000000c2, 0x448d3be2, 0x08f48f3a},
1004
 
        {0x6710f550, 0x000009e9, 0x00000603, 0xdbfd1998, 0xc950ac29},
1005
 
        {0x873171d1, 0x00000787, 0x000004d5, 0xab7f1b62, 0xe66896ab},
1006
 
        {0x373b1314, 0x00000f0f, 0x000000f0, 0x184098ab, 0x4038e674},
1007
 
        {0x90fad9cd, 0x00000ead, 0x00000152, 0x23ce52ff, 0x9eff3974},
1008
 
        {0x19676fe7, 0x0000007d, 0x0000070d, 0xf8a76f1e, 0xfbc5c8a9},
1009
 
        {0x89facd45, 0x000005f3, 0x00000473, 0x4331a006, 0xb8f0f0cc},
1010
 
        {0x6f173747, 0x00000fc3, 0x0000003c, 0xb012f08e, 0x5126e378},
1011
 
        {0x4b44a106, 0x0000075a, 0x0000008b, 0xf6f7ac38, 0xf9b1781b},
1012
 
        {0xb620ad06, 0x00000774, 0x0000017e, 0xd34558e6, 0xb175edd3},
1013
 
        {0x976f21e9, 0x000008d7, 0x0000034a, 0xe533aa3a, 0x1e4367b9},
1014
 
        {0x687628c0, 0x000006c5, 0x0000061b, 0x3a840b15, 0xfb5989a0},
1015
 
        {0xe24ac108, 0x00000cd0, 0x0000032f, 0x51010ae8, 0xcdd8f182},
1016
 
        {0x361c44a3, 0x00000304, 0x00000719, 0xfd7bd481, 0x12de540f},
1017
 
        {0xd93ff95e, 0x00000db7, 0x0000008e, 0xcfbbc304, 0x42eecd5a},
1018
 
        {0xed752d12, 0x00000883, 0x00000091, 0x65a6c868, 0x9ebfa578},
1019
 
        {0xb4ff4b54, 0x000003d3, 0x000001c1, 0xf82597e7, 0xa8ad2b19},
1020
 
        {0x111b520f, 0x00000708, 0x000000eb, 0xc3e109f3, 0x323ace17},
1021
 
        {0x62c806f2, 0x00000ba3, 0x0000045c, 0x874d3a72, 0xaf1a1360},
1022
 
        {0x40d97470, 0x000005e1, 0x0000058d, 0x87a9684f, 0x524244a8},
1023
 
        {0x4312179c, 0x00000056, 0x0000070e, 0x809a00f5, 0xf9e940b0},
1024
 
        {0x13d5f84c, 0x00000a2d, 0x00000104, 0xf3d27578, 0x5d33341c},
1025
 
        {0x1f302cb2, 0x00000151, 0x00000014, 0x1e162693, 0x53c3cfc3},
1026
 
        {0xe491db24, 0x00000600, 0x000006f6, 0x7ff09615, 0xa300ecf7},
1027
 
        {0xf9a98069, 0x000002ba, 0x000002ad, 0x01af7387, 0x31c0911e},
1028
 
        {0xe9c477ad, 0x0000015f, 0x00000778, 0x6facf9a0, 0x1993b688},
1029
 
        {0x353f32b2, 0x0000087c, 0x00000783, 0x6cc964ea, 0x418db561},
1030
 
        {0x78e1b24f, 0x00000650, 0x000006a8, 0xb3bb7c27, 0xf2aad006},
1031
 
        {0x61aa400e, 0x00000049, 0x00000254, 0xb8cd1681, 0x79150b15},
1032
 
        {0xb84b10b0, 0x00000f73, 0x0000008c, 0x406a6450, 0x0c705222},
1033
 
        {0x9fa99c9c, 0x00000a7c, 0x000004d7, 0xfb3d21b4, 0xe4e789df},
1034
 
        {0x3fc9ebe3, 0x00000cd9, 0x000000d6, 0x43803f9c, 0x5a152be5},
1035
 
        {0x529879cd, 0x000002f2, 0x00000595, 0x78b4c6a6, 0xf7236ec4},
1036
 
        {0x3a933019, 0x00000516, 0x00000266, 0xdcb45436, 0x2c7935f5},
1037
 
        {0x887b4977, 0x00000227, 0x0000038d, 0xc5f7c3d9, 0x0d6d7df6},
1038
 
        {0x770745de, 0x000008c6, 0x00000739, 0xf69145e8, 0x47d5efc9},
1039
 
        {0x28be3b47, 0x00000c46, 0x0000032b, 0x764c028f, 0x1eb70d64},
1040
 
        {0x5013a050, 0x00000cf6, 0x00000309, 0xea8fe164, 0x186affa4},
1041
 
        {0x2ec4c9ba, 0x000006e8, 0x0000078d, 0xa35557a9, 0xb41f49ec},
1042
 
        {0xa9f950c9, 0x00000d33, 0x000002cc, 0x41ea8618, 0xab8dfae3},
1043
 
        {0x5b520229, 0x000007b2, 0x00000484, 0x44569f1f, 0x607a8052},
1044
 
        {0xd8dcbbfc, 0x0000002f, 0x0000048c, 0xdb88ab8b, 0xf1c411f1},
1045
 
        {0x25529792, 0x00000d1d, 0x000002e2, 0x20cda404, 0x32683a2d},
1046
 
        {0x9f3f6d71, 0x00000238, 0x0000079a, 0x0720443e, 0x4b8ba2ff},
1047
 
        {0x64121215, 0x000007ff, 0x0000038f, 0x6aacff2c, 0x3b84233b},
1048
 
        {0xfb6cdde0, 0x00000ef8, 0x00000107, 0xbd43a0f1, 0x926624d0},
1049
 
        {0x221c9d6f, 0x000007b6, 0x0000014f, 0xb67f834b, 0x2bdedda4},
1050
 
        {0x030e1de4, 0x00000836, 0x000004b4, 0x0d67d26a, 0x75a73b73},
1051
 
        {0xb56fa6cf, 0x00000c07, 0x000003f8, 0x60601ac1, 0x10a43f35},
1052
 
        {0xb55c89f5, 0x0000098e, 0x000001d4, 0x2400efbe, 0x006e28eb},
1053
 
        {0x5e90b6d5, 0x0000070b, 0x000003ea, 0x3bb5d6ea, 0xb175fa6b},
1054
 
        {0x2a7045ae, 0x00000961, 0x00000633, 0xfca89e4b, 0x962cd6d2},
1055
 
        {0x8b374ea9, 0x000006ba, 0x00000780, 0xbce036ed, 0x4dc8279b},
1056
 
        {0x8bd90bc9, 0x00000562, 0x00000369, 0xcb26a24b, 0x50dee743},
1057
 
        {0x5b1b1762, 0x000000fd, 0x0000051a, 0x33cdda07, 0xee75ff7b},
1058
 
        {0xa4153555, 0x0000058f, 0x000005c7, 0xbe50eeca, 0xe73fffcc},
1059
 
        {0x0be1f931, 0x00000651, 0x00000672, 0x95a25753, 0x4ad6270f},
1060
 
        {0xb7e78618, 0x00000a7f, 0x000002bb, 0xe06bcc1c, 0x1a35ee59},
1061
 
        {0x4a9bc41b, 0x00000e51, 0x000001ae, 0x709e8d2c, 0x75080ca8},
1062
 
        {0xfc359d13, 0x00000440, 0x000002f8, 0x0a58451f, 0x6fa3cfbf},
1063
 
        {0x5aa48619, 0x000006d1, 0x00000284, 0x928ead83, 0xbd600efc},
1064
 
        {0xa609afa8, 0x0000053e, 0x00000272, 0xb048c141, 0x184f80bb},
1065
 
        {0x3f108afb, 0x00000949, 0x00000150, 0x9a6bb5bc, 0x0ea02be1},
1066
 
        {0x79bec2d3, 0x000008ed, 0x00000712, 0x32692d57, 0x2eb13289},
1067
 
        {0x9429e067, 0x00000bc3, 0x0000043c, 0x5295ceff, 0x8a9014a7},
1068
 
        {0xae58b96a, 0x0000082d, 0x000007d2, 0xc2a681ba, 0x6af94089},
1069
 
        {0x95df24be, 0x00000985, 0x000004c1, 0x3a287765, 0x379fcb42},
1070
 
        {0x5e94976f, 0x00000596, 0x000004ed, 0xff00c489, 0x991fc1f5},
1071
 
        {0xf5e5f1de, 0x00000d31, 0x000002ce, 0x35f28e91, 0x543def1a},
1072
 
        {0xa2c219cf, 0x00000a3c, 0x00000374, 0x707d21eb, 0xa6d28bc1},
1073
 
        {0xf21b6ceb, 0x00000919, 0x00000135, 0x0847fb8b, 0x224468c2},
1074
 
        {0xaa988728, 0x00000787, 0x00000771, 0x885aeaa4, 0x814db00b},
1075
 
        {0xaa5dfaac, 0x000003e5, 0x0000051b, 0x52c48ab7, 0x725bef8a},
1076
 
        {0x0a053968, 0x00000d2a, 0x000002d5, 0x7a90256d, 0xc53b9402},
1077
 
        {0x1421dc20, 0x00000eef, 0x00000110, 0x97d6da24, 0x10846935},
1078
 
        {0xb47c2166, 0x00000a6a, 0x00000209, 0xcfd6cc52, 0x46e2797e},
1079
 
        {0x77dd1955, 0x000000de, 0x00000266, 0xba74bcaa, 0x4fa3fe9c},
1080
 
        {0x68a03cc2, 0x0000082f, 0x000007b0, 0x752bd5d8, 0x4f760c63},
1081
 
        {0x0226b0a3, 0x00000a5f, 0x000005a0, 0x82de4970, 0x8ee1310e},
1082
 
        {0x637bf3b1, 0x00000d93, 0x0000026c, 0x5c7115cb, 0x9f6a0ced},
1083
 
        {0x3b120edf, 0x00000c13, 0x000003ec, 0x80d7d20f, 0x241657d5},
1084
 
        {0xe2456780, 0x000002eb, 0x00000641, 0xc0a5d289, 0x74df96b4},
1085
 
        {0x9b2e7125, 0x00000c0c, 0x000003f3, 0xcc15f57e, 0x03e290bf},
1086
 
        {0x153033ef, 0x00000787, 0x000006b6, 0x3cde443b, 0x7bf1d121},
1087
 
        {0x18458b3f, 0x0000066c, 0x00000561, 0x9a2bd8c6, 0x9d564bef},
1088
 
        {0x4ff9d4b9, 0x00000c8f, 0x0000033a, 0xd0ee6d6d, 0xee00aa0b},
1089
 
        {0xdf84b5d9, 0x00000802, 0x0000029a, 0xdab0d74a, 0xd0cb63dc},
1090
 
        {0x81ee15df, 0x000003ce, 0x00000725, 0x9942e2de, 0xe48fb26b},
1091
 
        {0x5c768e04, 0x00000afd, 0x00000160, 0x36110831, 0x8dc74483},
1092
 
        {0xe5e18094, 0x00000b4b, 0x000000a0, 0xffa3e4a7, 0xc0145e1b},
1093
 
        {0xed7263b6, 0x00000d0d, 0x000002f2, 0xb0006a35, 0x5468ae3a},
1094
 
        {0x5bfde7d7, 0x000006fb, 0x00000554, 0xa4193b76, 0xb73d34b2},
1095
 
        {0x67f4a743, 0x00000b85, 0x0000047a, 0xf05c8d8f, 0x4f843e49},
1096
 
        {0xf13bdf22, 0x00000ff7, 0x00000008, 0x816351eb, 0x41f537f6},
1097
 
        {0x08ecc608, 0x00000d5d, 0x00000098, 0x90492772, 0xf5172204},
1098
 
        {0x296f52ba, 0x000004f9, 0x00000788, 0x5e5a4896, 0xe01d5b46},
1099
 
        {0xbe4624c2, 0x00000427, 0x000004ef, 0xcd267b94, 0x7b9069f4},
1100
 
        {0x906f7c7c, 0x00000a05, 0x0000003f, 0x03fcfc33, 0x7b6ff563},
1101
 
        {0x8f7b323e, 0x00000458, 0x000004c7, 0xcd4969c8, 0xd4c22ada},
1102
 
        {0x88d6593d, 0x00000597, 0x000005b5, 0xf199cd3b, 0x5c3e8ca2},
1103
 
        {0x978a7768, 0x00000268, 0x000001d3, 0xb28c95bd, 0x49a2cc67},
1104
 
        {0x857a621e, 0x000007a7, 0x000003a8, 0xf4bf84ab, 0xde26f369},
1105
 
        {0xb0e121ef, 0x000005be, 0x00000644, 0x28747c14, 0x61d4dc6b},
1106
 
        {0, 0, 0, 0, 0},
1107
 
};
1108
 
 
1109
 
static int test_crc32c(void)
1110
 
{
1111
 
        struct crc_test *t = test;
1112
 
        int failures = 0;
1113
 
 
1114
 
        while (t->length) {
1115
 
                uint32_t be, le;
1116
 
                le = ext2fs_crc32c_le(t->crc, test_buf + t->start, t->length);
1117
 
                be = ext2fs_crc32c_be(t->crc, test_buf + t->start, t->length);
1118
 
                if (le != t->crc_le) {
1119
 
                        printf("Test %d LE fails, %x != %x\n",
1120
 
                               (t - test), le, t->crc_le);
1121
 
                        failures++;
1122
 
                }
1123
 
                if (be != t->crc_be) {
1124
 
                        printf("Test %d BE fails, %x != %x\n",
1125
 
                               (t - test), be, t->crc_be);
1126
 
                        failures++;
1127
 
                }
1128
 
                t++;
1129
 
        }
1130
 
 
1131
 
        return failures;
1132
 
}
1133
 
 
1134
 
int main(int argc, char *argv[])
1135
 
{
1136
 
        int ret;
1137
 
 
1138
 
        ret = test_crc32c();
1139
 
        if (!ret)
1140
 
                printf("No failures.\n");
1141
 
 
1142
 
        return ret;
1143
 
}
1144
 
#endif /* UNITTEST */