Initial commit: handshake capture firmware for ESP32-C6 1.47" LCD
Made-with: Cursor
This commit is contained in:
204
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/LICENSE
Normal file
204
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/LICENSE
Normal file
@@ -0,0 +1,204 @@
|
||||
Copyright 2020 BitBank Software, Inc. All rights reserved.
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
47
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/README.md
Normal file
47
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
PNGdec
|
||||
------
|
||||
Copyright (c) 2021 BitBank Software, Inc.<br>
|
||||
Written by Larry Bank<br>
|
||||
bitbank@pobox.com<br>
|
||||
|
||||
What is it?
|
||||
------------
|
||||
An 'embedded-friendly' (aka Arduino) PNG image decoding library<br>
|
||||
<br>
|
||||
|
||||
Why did you write it?
|
||||
---------------------
|
||||
Starting in the late 80's I wrote my own imaging codecs for the existing standards (CCITT G3/G4 was the first). I soon added GIF, JPEG and not long after that, the PNG specification was ratified. All of this code was "clean room" - written just from the specification. I used my imaging library in many projects and products over the years and recently decided that some of my codecs could get a new lease on life as open source, embedded-friendly libraries for microcontrollers.<br>
|
||||
<br>
|
||||
|
||||
What's special about it?<br>
|
||||
------------------------
|
||||
The PNG image specification was written at a time when computers had megabytes of RAM and conserving memory wasn't a big priority. The memory allocated for decoding the compressed data (zlib) and for holding the uncompressed image can be quite a bit more than is available on modern microcontrollers (usually measured in K bytes). Three goals for this project are: easy to compile+use on all embedded systems, use a minimal amount of RAM and be self-contained. One of the dependencies I like to remove when working on embedded software is malloc/free. When compiling on a system with a tiny amount of RAM, heap memory management might not even exist.<br>
|
||||
|
||||
Feature summary:<br>
|
||||
----------------<br>
|
||||
- Runs on any MCU with at least 48K of free RAM<br>
|
||||
- No external dependencies (including malloc/free)<br>
|
||||
- Decode an image line by line with a callback function<br>
|
||||
- Decode an image to a user supplied buffer (no callback needed)<br>
|
||||
- Supports all standard options except interlacing (too much RAM needed)<br>
|
||||
- Function provided to turn any pixel format into RGB565 for LCD displays<br>
|
||||
- Optionally disable zlib's internal CRC check - improves speed by 10-30%
|
||||
- Arduino-style C++ library class with simple API<br>
|
||||
- Can by built as straight C as well<br>
|
||||
<br>
|
||||
|
||||
How fast is it?<br>
|
||||
---------------<br>
|
||||
The examples folder contains a sketch to measure the performance of decoding a 240x200 image of varying bit depths. Here's the results when run on a few common MCUs:<br>
|
||||
|
||||
<br>
|
||||
<p align="center">
|
||||
<img width="770" height="201" src="https://github.com/bitbank2/PNGdec/blob/master/perf_small.png?raw=true">
|
||||
</p>
|
||||
|
||||
Documentation:<br>
|
||||
---------------<br>
|
||||
Detailed information about the API is in the [Wiki](https://github.com/bitbank2/PNGdec/wiki)<br>
|
||||
See the examples folder for easy starting points<br>
|
||||
<br>
|
||||
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// 1-bpp PNG example - drawing transparent images on an SSD1306 OLED
|
||||
// written by Larry Bank
|
||||
// May 31, 2021
|
||||
//
|
||||
|
||||
#include <PNGdec.h>
|
||||
#include <OneBitDisplay.h>
|
||||
// really 2-bpp to get a transparent color in the palette
|
||||
#include "octocat_1bpp.h"
|
||||
|
||||
#define USE_HW_I2C 1
|
||||
#define INVERT 0
|
||||
#define FLIP180 0
|
||||
#define OLED_ADDR -1
|
||||
OBDISP obd;
|
||||
PNG png;
|
||||
static uint8_t ucBackBuffer[1024];
|
||||
|
||||
//
|
||||
// Draw 1-bpp pixels onto the back buffer while respecting the transparent mask
|
||||
// This needs to be done in the sketch and not the library because it's very
|
||||
// specific to the memory layout of the SSD1306
|
||||
//
|
||||
void DrawPixelsMasked(int y, uint8_t *pPixels, uint8_t *pMask, int width)
|
||||
{
|
||||
int x, iBit;
|
||||
uint8_t *d, ucPix, ucAlpha, ucMask;
|
||||
// The display has the bytes oriented vertically while the bitmap has them packed horizontally
|
||||
d = &ucBackBuffer[(y >> 3) * 128 + 25]; // pointer to display memory (center it horizontally too)
|
||||
ucMask = 1 << (y & 7); // bit position of display memory (LSB on top)
|
||||
for (x=0; x<width; x+= 8) { // read the source image one byte at a time
|
||||
ucAlpha = *pMask++; // alpha mask is always 1-bit per pixel
|
||||
for (iBit=0; iBit<8; iBit++) {
|
||||
if (iBit == 0 || iBit == 4) // source image is 2-bpp, so work in groups of 4 per byte
|
||||
ucPix = *pPixels++;
|
||||
if (ucAlpha & 0x80) { // this pixel is opaque
|
||||
if ((ucPix & 0xc0) == 0x80) // white? a bit of a hack for this image; I should do a palette lookup here
|
||||
*d |= ucMask;
|
||||
else
|
||||
*d &= ~ucMask;
|
||||
} // pixel is opaque
|
||||
ucAlpha <<= 1;
|
||||
ucPix <<= 2;
|
||||
d++;
|
||||
} // for each bit/pixel
|
||||
} // for each group of 8 pixels
|
||||
} /* DrawPixelsMasked() */
|
||||
|
||||
void PNGDraw(PNGDRAW *pDraw)
|
||||
{
|
||||
uint8_t ucMask[32];
|
||||
|
||||
if (png.getAlphaMask(pDraw, ucMask, 255)) { // if any pixels are opaque, draw them
|
||||
DrawPixelsMasked(pDraw->y, pDraw->pPixels, ucMask, pDraw->iWidth);
|
||||
}
|
||||
} /* PNGDraw() */
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
obdI2CInit(&obd, OLED_128x64, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, -1, -1, -1, 400000L);
|
||||
obdSetBackBuffer(&obd, ucBackBuffer);
|
||||
obdFill(&obd, 0, 1);
|
||||
} /* setup() */
|
||||
|
||||
void loop() {
|
||||
int i, rc;
|
||||
char szTemp[256];
|
||||
|
||||
// create a 'gray' background pattern on the OLED
|
||||
for (i=0; i<1024; i+=2) {
|
||||
ucBackBuffer[i] = 0x55;
|
||||
ucBackBuffer[i+1] = 0xaa;
|
||||
}
|
||||
obdDumpBuffer(&obd, NULL); // display gray background
|
||||
delay(2000);
|
||||
rc = png.openRAM((uint8_t *)octocat_1bpp, sizeof(octocat_1bpp), PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
sprintf(szTemp, "image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType());
|
||||
Serial.print(szTemp);
|
||||
rc = png.decode(NULL, 0); // no private structure and skip CRC checking
|
||||
obdDumpBuffer(&obd, NULL); // show the image
|
||||
png.close();
|
||||
} // png opened successfully
|
||||
delay(2000); // rinse, repeat
|
||||
} /* loop() */
|
||||
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// octocat_1bpp
|
||||
// Data size = 373 bytes
|
||||
//
|
||||
// PNG, Compression=Flate, Size: 77 x 64, 2-Bpp
|
||||
//
|
||||
// for non-Arduino builds...
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM
|
||||
#endif
|
||||
const uint8_t octocat_1bpp[] PROGMEM = {
|
||||
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
|
||||
0x00,0x00,0x00,0x4d,0x00,0x00,0x00,0x40,0x02,0x03,0x00,0x00,0x00,0x22,0xf9,0x12,
|
||||
0xfd,0x00,0x00,0x00,0x09,0x50,0x4c,0x54,0x45,0x00,0xf0,0x7a,0x00,0x00,0x00,0xff,
|
||||
0xff,0xff,0x34,0xae,0x54,0xfd,0x00,0x00,0x00,0x01,0x74,0x52,0x4e,0x53,0x00,0x40,
|
||||
0xe6,0xd8,0x66,0x00,0x00,0x01,0x1a,0x49,0x44,0x41,0x54,0x38,0xcb,0xb5,0xd3,0x31,
|
||||
0x6e,0xc3,0x30,0x0c,0x00,0x40,0x3a,0x80,0x96,0xcc,0xf5,0x13,0xba,0xf4,0x15,0xe9,
|
||||
0x90,0xdd,0x05,0x24,0x01,0xd6,0xd4,0x25,0x05,0xea,0x57,0xf8,0x13,0xce,0xdc,0x45,
|
||||
0x41,0xc4,0x57,0x56,0xb4,0x25,0x87,0x94,0x9c,0x66,0x68,0xcb,0x45,0xc0,0x81,0x22,
|
||||
0x21,0x93,0x06,0xb8,0x1b,0x4f,0xe9,0xd4,0x1c,0x4d,0x37,0x1f,0x4a,0xa2,0xe1,0xc7,
|
||||
0x8a,0xaf,0xc6,0x98,0xa3,0xc0,0xc6,0xe4,0x78,0x84,0xf0,0x0f,0x78,0x6b,0x74,0xb8,
|
||||
0xa1,0x5a,0xb1,0x7b,0x80,0xed,0x8a,0xfa,0x0f,0xd1,0x21,0x45,0x90,0x88,0x4b,0x6c,
|
||||
0xe2,0xc4,0xd1,0x26,0xf4,0x1c,0xdd,0x36,0x5e,0xee,0x61,0x18,0x0a,0xa4,0x56,0xd3,
|
||||
0x10,0x24,0x52,0x2b,0x2f,0x32,0x95,0xc3,0x33,0x21,0x16,0x98,0xba,0xb3,0x4f,0xd7,
|
||||
0xd0,0xe5,0x4b,0x81,0xb0,0xbe,0x88,0x8d,0x03,0xda,0xfc,0x76,0x3e,0xcd,0x54,0x34,
|
||||
0x88,0xad,0x6b,0x4c,0xd5,0x27,0x7f,0x12,0x2f,0xc6,0xae,0xd3,0x3a,0xf0,0x36,0x60,
|
||||
0x97,0x25,0x11,0xb6,0x53,0x87,0x79,0x49,0x3a,0x89,0x63,0x8d,0xd0,0xbc,0xcf,0x4b,
|
||||
0xa2,0xe5,0x2f,0x63,0xe2,0x98,0xde,0x4a,0xb4,0x1f,0xa7,0x1a,0xe3,0x36,0x1c,0x2b,
|
||||
0x54,0x84,0xba,0x40,0x68,0xd5,0x06,0xc2,0xaf,0xb1,0xb7,0x15,0x3e,0x9f,0x7a,0x67,
|
||||
0x47,0x69,0x2f,0x9e,0x10,0x85,0xee,0x71,0xc1,0xab,0x48,0x4c,0xc8,0x53,0x77,0x71,
|
||||
0xb8,0xbe,0x77,0x13,0xe2,0x17,0xc7,0x60,0x23,0xfa,0x81,0xdf,0xdf,0xd3,0xd4,0x3e,
|
||||
0x69,0x76,0x57,0x71,0x3d,0xee,0xa1,0xa9,0xf1,0x1c,0x97,0x4e,0xd4,0x04,0xcc,0x31,
|
||||
0x82,0x2c,0x3a,0x87,0x78,0xd1,0x46,0xe2,0x52,0x55,0x56,0xcc,0x15,0xe0,0xc7,0xf8,
|
||||
0x06,0xa3,0x85,0xe6,0x10,0x4b,0x49,0x02,0x6a,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,
|
||||
0x44,0xae,0x42,0x60,0x82};
|
||||
@@ -0,0 +1,234 @@
|
||||
//
|
||||
// m5logosmall
|
||||
// Data size = 3561 bytes
|
||||
//
|
||||
// PNG, Compression=Flate, Size: 240 x 135, 24-Bpp
|
||||
//
|
||||
// for non-Arduino builds...
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM
|
||||
#endif
|
||||
const uint8_t m5logosmall[] PROGMEM = {
|
||||
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
|
||||
0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x87,0x08,0x02,0x00,0x00,0x00,0xa7,0x10,0x43,
|
||||
0xbc,0x00,0x00,0x0d,0xb0,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x5d,0x4d,0x48,0x1b,
|
||||
0xeb,0x1a,0x9e,0x73,0x71,0xe5,0xe6,0xde,0x50,0x7b,0xb2,0x39,0x0d,0xc5,0x03,0x2e,
|
||||
0x8c,0xb8,0x8a,0x8b,0x2c,0xc4,0xde,0xcd,0x9d,0x3b,0x28,0xe2,0x42,0x17,0x81,0x23,
|
||||
0x58,0x54,0x0a,0x0a,0x5d,0xf4,0x2e,0xac,0x20,0x45,0x0e,0x82,0x15,0xee,0xe9,0x42,
|
||||
0xa8,0x70,0x50,0xa9,0x60,0xef,0xcd,0x42,0xa1,0x52,0xa4,0xc3,0x1c,0xba,0x68,0x70,
|
||||
0x91,0x45,0xb2,0x92,0x93,0x42,0x85,0x06,0xab,0x5d,0x34,0x55,0x9b,0x5d,0x76,0x97,
|
||||
0xde,0xc5,0x7b,0xfc,0xce,0x34,0x99,0xf9,0xe6,0x9b,0xbf,0x64,0x32,0xf3,0x3c,0x64,
|
||||
0x11,0x93,0xc9,0x38,0x3f,0xcf,0xf7,0xce,0xf3,0xfe,0x7c,0xef,0xf7,0xdd,0xd7,0xaf,
|
||||
0x5f,0x25,0x00,0x08,0x0b,0x3a,0x70,0x09,0x9a,0x80,0xb3,0x4a,0x95,0xbd,0x4f,0xc4,
|
||||
0x63,0xb8,0x20,0x20,0x74,0xbb,0x42,0x2d,0x9e,0x1c,0xff,0xfe,0x76,0xb5,0x50,0xa3,
|
||||
0x3f,0xd3,0xdd,0x5d,0x77,0x6e,0xd4,0x32,0xca,0x10,0x68,0xed,0x13,0xbe,0x83,0xe4,
|
||||
0xf0,0xc9,0x24,0x67,0xd5,0xdc,0x9b,0xab,0xce,0x7c,0xf9,0xd2,0x70,0x83,0x74,0x77,
|
||||
0xd7,0xfd,0xa1,0xdb,0xc9,0x5b,0x37,0xc1,0x6c,0x10,0xba,0xbd,0xa9,0x0c,0x5a,0x83,
|
||||
0xd0,0x6d,0xa9,0x2e,0xc4,0x41,0x3a,0xa4,0xbf,0xaf,0x57,0x49,0xf5,0xe0,0x32,0x82,
|
||||
0xd0,0xad,0x37,0xc9,0xa5,0xf3,0x8b,0xf5,0xdc,0xa9,0xa1,0x49,0x66,0x64,0x4d,0xde,
|
||||
0xba,0x29,0x49,0x12,0x67,0x4b,0x18,0x6c,0x10,0x3a,0xd0,0xea,0x82,0xe3,0xff,0xf1,
|
||||
0x6d,0x39,0x1c,0x47,0x10,0x3a,0x70,0x42,0x39,0x7b,0x37,0x65,0x69,0x68,0x69,0x27,
|
||||
0x1c,0x89,0xb2,0x38,0xd0,0x09,0x5a,0x83,0xd0,0x2d,0x53,0x17,0x4c,0x33,0xd8,0x95,
|
||||
0xc2,0x6a,0xf1,0x84,0xbf,0xcf,0x5f,0x7f,0x1a,0x90,0x10,0xc0,0x06,0xa1,0xbd,0xc5,
|
||||
0xda,0xce,0x01,0xc7,0x24,0xbb,0xb7,0xa6,0x96,0xb4,0x86,0xbc,0x06,0xa1,0x5b,0x29,
|
||||
0x94,0xdb,0xe2,0xdf,0x81,0xd0,0x11,0x82,0xa5,0xeb,0x66,0x69,0x32,0x29,0xe3,0xed,
|
||||
0x80,0x7c,0x96,0xda,0x66,0x71,0xa0,0x13,0x61,0x3e,0x10,0xda,0x9b,0xa7,0xbf,0x08,
|
||||
0x99,0xce,0x2a,0xd5,0xb9,0xe9,0x49,0x7a,0x3f,0x38,0x3e,0xb3,0x30,0x35,0xe6,0xc6,
|
||||
0x60,0xf3,0x07,0x15,0x68,0x0d,0x42,0x3b,0xb4,0x8b,0x22,0xb1,0x0b,0xb5,0x78,0xf2,
|
||||
0x74,0xf9,0x81,0xa6,0x69,0xec,0x13,0x59,0x96,0x0f,0x0f,0x0f,0xdd,0xeb,0x10,0x84,
|
||||
0xf9,0x40,0x68,0x2f,0x0d,0xa1,0xa5,0xba,0xc8,0xaa,0xb9,0xa5,0xd9,0x09,0xfd,0x87,
|
||||
0xb2,0x2c,0x0f,0x8e,0xcf,0x78,0x45,0x35,0x41,0x1d,0x12,0x71,0xc7,0x31,0xea,0x84,
|
||||
0x16,0x89,0x2d,0x58,0xaa,0x8b,0xac,0x9a,0x3b,0xda,0xdf,0x62,0x56,0x59,0x96,0x65,
|
||||
0x49,0x92,0xe6,0x97,0x9f,0xf8,0x24,0x06,0x2c,0x8f,0x39,0xca,0x06,0x3b,0xa2,0x84,
|
||||
0x16,0xb1,0x76,0x96,0x9c,0x20,0xaf,0xb1,0xce,0x2a,0xaf,0x6c,0xee,0x35,0x87,0x4c,
|
||||
0xd0,0x21,0x20,0xb4,0x67,0xea,0xa2,0x74,0x7e,0xd1,0x28,0x94,0x3d,0x54,0x17,0x1e,
|
||||
0x8e,0xcc,0xa8,0x05,0xb0,0x23,0x44,0x68,0xf7,0x99,0x8b,0x46,0x75,0x41,0x54,0xf6,
|
||||
0x4f,0x5d,0xd8,0x62,0xf6,0xbd,0xe7,0x05,0xd0,0x3a,0x12,0x84,0xe6,0x47,0x94,0x49,
|
||||
0x5d,0x48,0xdc,0x80,0xb1,0xa1,0xba,0x90,0x65,0x79,0x63,0x7b,0xd7,0x0d,0x45,0xc8,
|
||||
0xbe,0x1e,0xff,0xfe,0x96,0x7d,0xe2,0xd2,0xab,0xa3,0x1d,0x66,0x9e,0x15,0xcd,0x36,
|
||||
0x58,0x1c,0xe8,0x74,0x1c,0x43,0x04,0xa1,0x03,0xa1,0x2e,0xf8,0xf9,0x6a,0x7e,0x44,
|
||||
0x99,0x3d,0xd0,0x5f,0x3f,0x1c,0xae,0x13,0xca,0x6e,0xf2,0x1a,0x86,0x96,0xbe,0x6e,
|
||||
0xa8,0xfc,0xef,0xef,0xf7,0x1d,0xdb,0x54,0xbe,0x0e,0x39,0x7e,0xa4,0x84,0xd8,0x4e,
|
||||
0x87,0x93,0xd0,0x22,0x0e,0x13,0xdf,0x50,0x99,0xa9,0x0b,0x97,0x42,0xb9,0x31,0x4a,
|
||||
0xcd,0xa2,0x22,0x04,0xc3,0xaf,0x1c,0x4b,0x1a,0x7a,0xb0,0xbc,0xb9,0xea,0x64,0x9f,
|
||||
0x84,0x3e,0x11,0x13,0x36,0x42,0x7b,0x92,0xaf,0x6e,0x0e,0x95,0xd9,0x3e,0xeb,0xb6,
|
||||
0x24,0x11,0xe2,0xad,0x52,0x77,0x9c,0x84,0x07,0xa1,0x5b,0x66,0x92,0x3d,0x29,0x7e,
|
||||
0x50,0x8b,0x27,0xa3,0xe9,0x64,0x9d,0x8d,0x74,0xc9,0x24,0xc7,0x7e,0x24,0x79,0xb1,
|
||||
0x7a,0xb5,0xd3,0xb4,0x98,0x20,0x08,0x1d,0x50,0x07,0xdf,0x6e,0x38,0x96,0x6a,0x30,
|
||||
0x3c,0xb1,0xcd,0x5e,0x85,0x44,0xea,0x4c,0xbb,0x7b,0x4f,0xd4,0x6c,0xe4,0x84,0x63,
|
||||
0x5e,0x63,0x18,0x08,0xad,0xfc,0xf2,0x5b,0x23,0x9b,0x1d,0x07,0xaa,0x0c,0xc3,0xcc,
|
||||
0xb6,0x1c,0x41,0xb3,0x90,0xc8,0xfc,0xf2,0x13,0xc7,0x11,0x8c,0xb5,0x9d,0x03,0xb6,
|
||||
0x43,0x0f,0x39,0xdd,0xa8,0xd0,0xda,0xdd,0x65,0x0c,0x73,0xa3,0x19,0x9a,0x97,0x6a,
|
||||
0x17,0x89,0x78,0x2c,0x11,0x8f,0x29,0x87,0x87,0x74,0xb3,0x99,0x89,0x25,0x3e,0xf1,
|
||||
0x79,0x69,0x58,0xd1,0xe1,0x32,0x24,0x42,0x58,0x98,0x1a,0x93,0xa4,0x3d,0xda,0xb3,
|
||||
0xa6,0x69,0x59,0x35,0xe7,0x26,0xfa,0xc6,0x89,0xee,0x95,0xce,0x2f,0x40,0xe8,0x16,
|
||||
0xe3,0xfe,0xd0,0xed,0x46,0x0b,0x9d,0x2f,0x5f,0xf6,0xff,0xac,0xba,0x49,0x28,0x28,
|
||||
0xa9,0x1e,0x25,0xd5,0x93,0x51,0x86,0xf4,0xca,0x41,0xd3,0x34,0x4d,0x4b,0x36,0xea,
|
||||
0x10,0x0f,0xb5,0x8a,0x19,0xfa,0xfb,0x7a,0xbd,0x8a,0xff,0x08,0xb6,0x0d,0x01,0xa1,
|
||||
0x5b,0x24,0x39,0x52,0x3d,0xc7,0xb7,0x6e,0x1a,0xde,0xa7,0x7c,0xf9,0x32,0x5f,0xbe,
|
||||
0x74,0x53,0xd8,0x90,0x88,0xc7,0x16,0xa6,0xc6,0x32,0xca,0x90,0x3e,0x20,0xad,0x69,
|
||||
0x9a,0xa6,0x69,0x47,0xb2,0x3c,0x38,0x3e,0x23,0x49,0x92,0xe7,0x21,0x11,0x43,0xe8,
|
||||
0xf3,0x2f,0x8e,0x85,0xf2,0xf5,0xf5,0xa9,0x49,0x21,0x45,0xa8,0xc2,0x76,0x3e,0x4d,
|
||||
0x62,0xb5,0xd4,0xc7,0xbe,0x52,0x99,0x22,0x6e,0x75,0x4a,0xe6,0xfd,0xc7,0xcf,0xe2,
|
||||
0x6e,0xae,0xe5,0x35,0xd1,0x7f,0x95,0xbd,0x9b,0x6a,0x6b,0xbf,0x30,0x9c,0x89,0x15,
|
||||
0x91,0x68,0xb4,0x9b,0xdb,0x66,0x58,0x32,0xea,0xc6,0xe7,0x13,0x77,0x4f,0xc5,0xe3,
|
||||
0x24,0x96,0xd3,0x13,0x99,0x18,0xfb,0xdb,0xfc,0x7f,0x41,0xe8,0xf6,0x30,0xd8,0xbe,
|
||||
0x16,0x58,0xb2,0x4a,0x0c,0xcf,0xcb,0xea,0x5d,0x26,0x77,0xec,0x66,0x97,0x40,0xe8,
|
||||
0x50,0xe9,0x90,0x40,0xf5,0x73,0x71,0x33,0xf3,0xc5,0x71,0x76,0x09,0x84,0x6e,0x57,
|
||||
0x1d,0x12,0xe4,0xba,0x61,0xb3,0x32,0x0f,0x11,0x81,0x21,0xd2,0x5f,0x8f,0x33,0x1e,
|
||||
0xc2,0x44,0xe8,0x08,0x35,0x3c,0xa7,0x30,0x9c,0x99,0x0e,0x61,0xf1,0x90,0x26,0xd3,
|
||||
0xda,0xac,0xf2,0x4e,0x30,0xcb,0xed,0xbe,0x76,0x05,0x51,0x8e,0x80,0xea,0x0a,0xc9,
|
||||
0x4e,0xf1,0x8d,0x48,0x65,0xa9,0xdf,0x3a,0xc4,0x57,0x75,0x61,0x8b,0xca,0x90,0x1c,
|
||||
0x81,0x63,0x33,0xd5,0x72,0x50,0x1b,0x38,0x5b,0x2c,0x74,0x3f,0x49,0xd6,0xb1,0xba,
|
||||
0x90,0xbe,0x2d,0x16,0x15,0x57,0x17,0x9e,0xb7,0x56,0x82,0xe4,0x08,0x16,0x58,0x65,
|
||||
0x52,0xbe,0x7c,0x69,0x37,0x73,0x4b,0x3a,0xc4,0xec,0xc1,0xfd,0x87,0x0e,0xc9,0x9d,
|
||||
0x7a,0xf8,0xe0,0x1e,0x19,0x19,0x71,0x56,0x25,0xf2,0xed,0x41,0xd6,0x4c,0xa8,0x3c,
|
||||
0x10,0xf1,0x5a,0xbc,0x30,0x10,0xda,0x7d,0x16,0xf7,0x3a,0xcb,0x5d,0xe5,0xa4,0x1b,
|
||||
0x25,0xb1,0x46,0x33,0x22,0xd2,0xc8,0x8f,0xd8,0x05,0xfa,0x38,0x46,0xce,0x29,0xb4,
|
||||
0x04,0x65,0xb9,0x17,0xcc,0x1b,0x8d,0x52,0x35,0x8f,0x9b,0xbe,0x72,0x89,0x78,0x6c,
|
||||
0x63,0x7b,0xb7,0x74,0x7e,0x41,0xa3,0xc8,0x4d,0xec,0x42,0x42,0x2b,0x30,0x10,0x5a,
|
||||
0x10,0x44,0x6b,0x33,0x1d,0xb2,0x5a,0xa8,0x49,0x85,0xa2,0x63,0x1d,0x42,0xd5,0x7c,
|
||||
0xcd,0x17,0xca,0x20,0x74,0xd4,0x21,0xa8,0x43,0xbc,0x8d,0x87,0x58,0x0a,0x65,0x74,
|
||||
0x89,0x06,0xa1,0x3d,0xd0,0x21,0x19,0x73,0x93,0xb9,0x5a,0xa8,0xad,0x16,0x54,0xbf,
|
||||
0x1b,0x9e,0x63,0x79,0x0a,0x10,0xda,0x17,0x79,0x6d,0x46,0x3b,0xa2,0xb5,0x03,0x0b,
|
||||
0x1a,0x84,0x88,0x38,0x08,0x1d,0x75,0x1d,0x62,0xc6,0x42,0xf1,0x78,0x08,0x2b,0x0a,
|
||||
0x85,0xba,0x00,0xa1,0xdb,0x40,0x87,0x64,0x9e,0x15,0xcd,0x5c,0x37,0xc4,0x2e,0x40,
|
||||
0xe8,0xa0,0xd3,0xda,0x90,0xa0,0xf9,0xf2,0x65,0xbe,0x2c,0x91,0xbc,0x96,0x24,0xa9,
|
||||
0xbf,0xaf,0x97,0xa6,0x9c,0x40,0x5d,0x80,0xd0,0x41,0xa7,0x75,0x22,0x1e,0xe3,0xa4,
|
||||
0x1b,0xff,0xf8,0xa4,0xc0,0x66,0xa4,0x9a,0x25,0xf9,0x40,0x65,0x10,0x3a,0x78,0xf2,
|
||||
0xda,0x2c,0xcc,0x07,0x75,0x01,0x42,0x87,0x50,0x87,0x40,0x5d,0x80,0xd0,0x61,0xd0,
|
||||
0x21,0xcc,0x60,0x43,0x5d,0x80,0xd0,0x61,0xd0,0x21,0x0b,0xb8,0x10,0xcd,0xc2,0x5f,
|
||||
0x70,0x09,0x00,0x10,0x1a,0x00,0x40,0x68,0x00,0x00,0xa1,0x01,0x00,0x84,0x06,0x40,
|
||||
0x68,0x00,0x00,0xa1,0x01,0x00,0x84,0x06,0x00,0x10,0x1a,0x00,0xa2,0x49,0xe8,0xf5,
|
||||
0xdc,0xa9,0xbe,0x55,0x00,0x60,0x09,0xb5,0x78,0x02,0x42,0x07,0x0b,0xe9,0xee,0x2e,
|
||||
0xf6,0x3e,0x5f,0xbe,0xcc,0xaa,0x39,0x70,0x5a,0x9c,0xcd,0x9c,0x75,0x94,0xdb,0x11,
|
||||
0x61,0xa8,0xe5,0xb8,0x73,0xa3,0x96,0x2f,0xff,0xf9,0xa7,0x7e,0x7a,0x1f,0x2a,0x33,
|
||||
0xcd,0x60,0xd6,0x7b,0xc4,0xd9,0x4a,0x4b,0xc1,0x41,0x48,0x7a,0xdb,0xf5,0xff,0xac,
|
||||
0x1a,0x7e,0x85,0xae,0x42,0x8d,0xd7,0x8a,0x53,0xae,0x1d,0x82,0xa5,0xed,0xc3,0xd3,
|
||||
0x7d,0xd4,0xd7,0x66,0xfd,0x21,0xb8,0x3e,0xb4,0xd8,0x80,0x7f,0xcb,0x74,0x80,0xd0,
|
||||
0xcd,0x36,0x3f,0x52,0x24,0xcb,0xea,0xa3,0x36,0x27,0x37,0x84,0x1d,0xfc,0xbd,0xed,
|
||||
0x9d,0xdc,0xd6,0x0e,0x9f,0x7e,0x6e,0x41,0x44,0x9e,0x5a,0x61,0x5e,0x92,0x22,0x9a,
|
||||
0x77,0x34,0xe2,0xe3,0x19,0x8b,0x06,0x85,0xea,0x99,0x6b,0x16,0xbb,0x60,0x67,0x6a,
|
||||
0xb7,0x21,0x3c,0x08,0x0d,0xbb,0xd5,0xb2,0x67,0x91,0x99,0xc3,0x17,0x29,0xe7,0x21,
|
||||
0x42,0xab,0x60,0x09,0x3a,0x8e,0xee,0xbb,0x9a,0x07,0x2d,0x76,0x81,0x45,0x83,0x40,
|
||||
0xeb,0xa0,0xeb,0x90,0x76,0x3f,0x7e,0x10,0x1a,0x16,0x4e,0x94,0xca,0x11,0xef,0xf8,
|
||||
0x11,0x69,0x42,0xb7,0x11,0x4b,0x10,0x8b,0x04,0xa1,0xbd,0x27,0x8d,0x9b,0xd5,0x55,
|
||||
0xa0,0x2e,0x40,0xe8,0x80,0x06,0x0d,0x9a,0x66,0x0b,0x2d,0x0f,0x03,0x4d,0x98,0x40,
|
||||
0x68,0xcf,0x4c,0xa3,0x7f,0x7c,0x82,0xba,0x00,0xa1,0x5b,0x2f,0x5e,0x3d,0x79,0xe2,
|
||||
0x8b,0x48,0xf9,0xe6,0x6b,0x1e,0x10,0x3a,0x9c,0xb4,0x96,0x74,0x4b,0xd6,0x7a,0x6e,
|
||||
0x35,0x2d,0x33,0x23,0x6d,0x14,0x1d,0x07,0xa1,0xa3,0x1b,0x0f,0x81,0xba,0x00,0xa1,
|
||||
0x03,0xe4,0x38,0xba,0x21,0x22,0x62,0x17,0x20,0x74,0x70,0x0d,0x36,0x3f,0x10,0xd1,
|
||||
0xdf,0xd7,0x2b,0x5d,0x4f,0x6d,0xa2,0x45,0x91,0x91,0xac,0x06,0xa1,0xdb,0x5b,0x87,
|
||||
0x88,0x00,0x54,0x06,0xa1,0xdb,0x4c,0x87,0x98,0x01,0xcb,0x53,0x80,0xd0,0x6d,0xac,
|
||||
0x43,0x60,0x92,0x41,0xe8,0x76,0xa5,0x35,0x55,0x3e,0x49,0x92,0xf4,0xe6,0xaa,0x93,
|
||||
0x7d,0x7e,0xe7,0x46,0x4d,0x92,0x24,0x84,0x93,0x41,0x68,0x00,0xb0,0x06,0x7a,0xdb,
|
||||
0x01,0x20,0x34,0x00,0x80,0xd0,0x00,0x00,0x42,0x03,0x00,0x08,0x0d,0x80,0xd0,0x00,
|
||||
0x00,0x42,0x03,0x00,0x08,0x0d,0x00,0x20,0x34,0x00,0x80,0xd0,0x00,0x08,0x0d,0x00,
|
||||
0x20,0x34,0x00,0x80,0xd0,0x00,0x00,0x42,0x03,0x00,0x08,0x0d,0x80,0xd0,0x00,0x00,
|
||||
0x42,0x03,0x00,0x08,0x4d,0x70,0xb6,0x92,0x71,0xf3,0xd7,0x3f,0x3e,0xab,0x54,0xcf,
|
||||
0x2a,0x55,0xb5,0x78,0x42,0x6f,0x5a,0x72,0xa1,0xdc,0x2f,0xcd,0xad,0x3f,0x0b,0x5b,
|
||||
0x3f,0x09,0xe0,0x1d,0x69,0x44,0xeb,0xa7,0x60,0xd1,0x72,0xd3,0x76,0xd7,0xb3,0xa1,
|
||||
0x5f,0x59,0xae,0x7c,0x4a,0x2d,0xb6,0x38,0x1b,0x88,0xcc,0xed,0xa3,0x49,0xaf,0x47,
|
||||
0xfb,0x5b,0x9a,0xa6,0xe9,0x3f,0x97,0x65,0x79,0x70,0x7c,0x86,0xb3,0x87,0xb5,0x9d,
|
||||
0x83,0xa3,0xfd,0x2d,0xc1,0x33,0x1a,0x1c,0x9f,0xe1,0x9f,0xcb,0x59,0xa5,0x3a,0x37,
|
||||
0x3d,0xa9,0x69,0xda,0xca,0xe6,0x9e,0x83,0xf5,0x5e,0x0d,0xcf,0xc2,0xf2,0x14,0x08,
|
||||
0x23,0x23,0x23,0x92,0x24,0xcd,0x2f,0x3f,0xe1,0x6c,0xb6,0xb6,0x73,0xb0,0x34,0x3b,
|
||||
0xe1,0xec,0xd8,0x3c,0x44,0xeb,0xd7,0xfa,0x26,0xc2,0xe5,0xcb,0x97,0xa5,0xf3,0x0b,
|
||||
0xf1,0x0e,0x5a,0xb4,0xe4,0xfa,0x6a,0xa1,0x96,0x51,0xaa,0x9c,0xee,0x44,0xeb,0xb9,
|
||||
0xd3,0x7c,0x99,0x37,0xfb,0x3a,0x7d,0x75,0xca,0xbf,0x97,0x6a,0xf1,0xe4,0xe9,0xf2,
|
||||
0x83,0x3a,0x2a,0x13,0x34,0x4d,0xa3,0xcf,0x5f,0xe6,0x4b,0x86,0x3b,0x69,0x1c,0x03,
|
||||
0x7c,0xf0,0x9b,0x19,0x64,0xd5,0x1c,0xed,0x6d,0x69,0x76,0xa2,0xbf,0xaf,0x64,0x6b,
|
||||
0x8e,0xad,0x5a,0x3c,0x19,0x4d,0x27,0xf5,0x3c,0x66,0xc7,0x4f,0xfb,0x94,0x65,0x79,
|
||||
0x63,0x7b,0xd7,0xf0,0xbf,0x9f,0x55,0xaa,0xb4,0xcd,0xe0,0xf8,0x5b,0xce,0xd0,0x5d,
|
||||
0x9a,0x9d,0x08,0xc2,0xd3,0x3e,0x40,0x8b,0xd7,0xaf,0xe7,0x4e,0x05,0xe7,0xf4,0x67,
|
||||
0xd5,0x9c,0xad,0x3d,0x53,0xd3,0x4e,0xc3,0xaf,0xf8,0x6b,0xb5,0x9f,0x55,0xaa,0x8c,
|
||||
0xcd,0x64,0xcc,0x32,0xca,0x10,0x3b,0x06,0x4b,0xeb,0xbb,0xb1,0xbd,0xdb,0x78,0xa8,
|
||||
0x74,0xe3,0x57,0x36,0xf7,0x6c,0xb1,0xb9,0xd1,0x0a,0x88,0x13,0x9a,0xb1,0x99,0x9d,
|
||||
0x02,0xfb,0x47,0x6c,0xb8,0x6a,0x9a,0x36,0x37,0x3d,0x79,0x78,0x78,0xe8,0xe0,0xc6,
|
||||
0x31,0x36,0xcb,0xb2,0xdc,0xfa,0xa5,0xc2,0xbf,0xb6,0x1a,0x8f,0x9f,0xbd,0xf8,0xeb,
|
||||
0xdc,0x7f,0xe8,0xf5,0xf8,0xd9,0x0b,0xcb,0xed,0x3f,0x7c,0xfa,0xf2,0xcf,0x7f,0x6b,
|
||||
0xec,0x27,0x1f,0x3e,0x7d,0xe1,0x6c,0x69,0xb9,0x8d,0xe5,0xb1,0x75,0x74,0x74,0x74,
|
||||
0x74,0x74,0x98,0x1d,0xd8,0x87,0x4f,0x5f,0x6c,0xed,0xfc,0x55,0xe1,0x1d,0xed,0xf0,
|
||||
0x55,0xe1,0x9d,0xad,0x23,0xf9,0xf0,0xe9,0xcb,0xf0,0xf0,0x70,0xc7,0x35,0x86,0x87,
|
||||
0x87,0xc5,0x7f,0xc8,0x7e,0x65,0x76,0xa8,0xaf,0x0a,0xef,0x1e,0x3f,0x7b,0x61,0xf6,
|
||||
0x2d,0xdb,0x83,0xe1,0x45,0x60,0x67,0x34,0x3c,0x3c,0xec,0xf8,0x3a,0x7b,0x88,0x60,
|
||||
0x45,0x39,0xde,0x5c,0x75,0x5a,0x3a,0x16,0x59,0x35,0xe7,0xa6,0xe3,0x96,0x2d,0xd1,
|
||||
0x49,0x36,0x98,0x63,0x78,0x12,0xf1,0x58,0x73,0xda,0xc4,0x94,0xce,0x2f,0xe8,0x41,
|
||||
0x41,0xa6,0x5d,0xd3,0x34,0x41,0xef,0x90,0xba,0xe9,0x91,0x2e,0x32,0x3b,0x54,0x25,
|
||||
0xd5,0xb3,0x30,0x35,0xe6,0xe0,0x44,0xce,0x2a,0x55,0x66,0xfb,0xcd,0x14,0x4b,0xa4,
|
||||
0xc3,0x76,0xf9,0xf2,0x25,0x5f,0x4e,0x9c,0x55,0xaa,0x96,0x1d,0x89,0x3c,0xc4,0xb5,
|
||||
0x76,0x9c,0x69,0xf9,0x95,0x79,0xba,0xfc,0x80,0x78,0xc3,0x34,0x0f,0xdf,0xd9,0xad,
|
||||
0x73,0x51,0x64,0x59,0xe6,0x8b,0x2b,0x67,0x03,0x7e,0x6e,0x7a,0x32,0x50,0x6c,0x0e,
|
||||
0x16,0xa1,0x17,0x07,0x3a,0xc9,0xcf,0xe3,0x18,0x69,0xa2,0x7b,0xba,0xbb,0x2b,0xdd,
|
||||
0xdd,0x25,0xb8,0x5b,0xf1,0x2d,0x03,0x0b,0x76,0x41,0x06,0xc7,0x67,0x12,0xf1,0x18,
|
||||
0x19,0xe9,0xa3,0xfd,0x2d,0x91,0x30,0x19,0x13,0xfa,0xde,0x12,0x8e,0x85,0x5c,0x28,
|
||||
0xfa,0x11,0x9c,0x6e,0x66,0x41,0x21,0x74,0xba,0xbb,0x8b,0xf9,0x6d,0x66,0x46,0x9a,
|
||||
0x99,0xe7,0x3b,0x37,0x6a,0xd4,0x50,0xcb,0x6f,0x50,0x34,0x40,0x3c,0xf4,0xe6,0xb7,
|
||||
0xde,0xd0,0xbb,0xb6,0x22,0xf1,0x13,0x5d,0x80,0x62,0xc6,0x27,0x36,0xaf,0x6c,0xee,
|
||||
0x05,0xaa,0xa7,0x59,0x80,0x2c,0x74,0xf2,0xd6,0x4d,0x32,0xd2,0x66,0x4a,0x9a,0x99,
|
||||
0xe7,0x8c,0x32,0x64,0x16,0xb5,0xf0,0x49,0x78,0xb4,0x36,0x65,0xb0,0x9e,0x3b,0xa5,
|
||||
0xd1,0x45,0xd4,0xc9,0x28,0x43,0x34,0xd2,0xec,0x46,0x7b,0xbc,0x82,0x9e,0xcd,0xad,
|
||||
0x0f,0x6b,0x04,0x59,0x43,0x93,0x40,0x34,0x54,0xd2,0x67,0x95,0x2a,0xb5,0x3c,0xbc,
|
||||
0x73,0xa3,0xe6,0xcc,0x7d,0x51,0x8b,0x27,0xec,0x25,0x42,0xd0,0x44,0x3c,0xc6,0x0c,
|
||||
0xdb,0xdc,0xf4,0xa4,0xfb,0x14,0x9d,0x63,0x73,0xf8,0xfa,0xe1,0xb0,0xde,0xca,0xb2,
|
||||
0xd3,0x5f,0x9a,0x9d,0x68,0xfe,0x48,0x5b,0xdb,0x39,0x08,0x2c,0x9b,0xa5,0x40,0xc5,
|
||||
0xa1,0xe9,0x56,0x2d,0x0e,0x74,0xae,0x16,0x6a,0x6f,0xae,0x3a,0x33,0x95,0x6f,0x32,
|
||||
0x26,0x59,0x35,0x47,0x29,0x12,0xe6,0x15,0x89,0x3b,0xf8,0x86,0x8b,0xfd,0x88,0x74,
|
||||
0x65,0xce,0x28,0x43,0x47,0xb2,0x7c,0x9d,0x7f,0x48,0xae,0x6c,0xee,0xf5,0xf7,0xf5,
|
||||
0x36,0xb9,0x01,0x2e,0x1b,0xdb,0xfa,0x87,0xd2,0xfc,0xf2,0x13,0x4d,0x4b,0xd2,0x39,
|
||||
0x36,0xf3,0x60,0xd4,0xe2,0x09,0x8b,0xa3,0x8b,0xdf,0x88,0xe8,0x5a,0x68,0x33,0x23,
|
||||
0xcd,0xd4,0xf3,0xe2,0x40,0xa7,0xdd,0xfb,0x97,0x2f,0x5f,0x12,0x9b,0xc9,0x95,0x64,
|
||||
0x0e,0xe5,0x6a,0xa1,0x76,0xef,0x79,0x81,0x6f,0xe1,0x12,0xf1,0xd8,0xc6,0xf6,0x2e,
|
||||
0x4b,0x82,0x2c,0xcd,0x4e,0x8c,0xa6,0x93,0x73,0xd3,0x93,0x23,0x23,0x23,0x4d,0x36,
|
||||
0xd8,0x75,0x61,0x0a,0xf6,0x5e,0x30,0xd6,0xe1,0x09,0x8e,0xf6,0xb7,0x28,0xd8,0xe2,
|
||||
0x87,0x97,0x19,0x5a,0x42,0x93,0x91,0xae,0x53,0xd2,0x8c,0xdc,0xb6,0xac,0x02,0xbb,
|
||||
0xeb,0x8b,0x03,0x9d,0xc7,0x8f,0x14,0xf5,0x5f,0xff,0xa0,0xd7,0xaf,0x3f,0x0d,0x64,
|
||||
0xef,0xa6,0x88,0xeb,0xf7,0x9e,0x17,0x2c,0x8f,0x67,0x61,0x6a,0xec,0xfd,0xc7,0xcf,
|
||||
0x2b,0x9b,0x7b,0xfa,0x8c,0xf1,0x68,0x3a,0x39,0x32,0x32,0xb2,0xb6,0x73,0xe0,0xb7,
|
||||
0xde,0x20,0x97,0x94,0xe2,0x1b,0xad,0x75,0x58,0x59,0x9e,0xbc,0x55,0x6a,0xa7,0x2d,
|
||||
0x09,0xad,0x37,0xd2,0xa4,0x19,0x1c,0x9b,0xe7,0x44,0x3c,0x76,0xfc,0x48,0x39,0x7e,
|
||||
0xa4,0xd4,0x65,0x0d,0x12,0xf1,0x98,0x92,0xea,0x61,0x9c,0x16,0xb1,0xb5,0x44,0xeb,
|
||||
0x8d,0xed,0xdd,0x97,0xf9,0x92,0x9e,0xd9,0x4b,0xb3,0x13,0xca,0x2f,0xbf,0xf9,0x77,
|
||||
0x6b,0x0d,0xe3,0x1b,0x7a,0x7d,0x2f,0x9e,0x61,0xf1,0x0a,0xec,0xf4,0xe7,0xa6,0x27,
|
||||
0x03,0xc8,0xe9,0x20,0x12,0x9a,0x19,0xe9,0xf5,0xdc,0x29,0xd5,0x88,0xb1,0xe0,0x86,
|
||||
0x83,0x5d,0x71,0xd2,0x63,0xec,0xbf,0x88,0xef,0x8d,0x92,0x6a,0x87,0x87,0x87,0x2f,
|
||||
0xf3,0x25,0xba,0xaf,0xaf,0x1f,0x0e,0xfb,0x17,0x6d,0x60,0xf9,0x94,0xc6,0xd0,0x98,
|
||||
0xdd,0x0c,0x8b,0x27,0x78,0x99,0x2f,0x2d,0x4c,0x8d,0xb1,0xb1,0xd4,0xaa,0x30,0x4b,
|
||||
0x9b,0x11,0x5a,0x6f,0xa4,0xef,0x3d,0x2f,0xb8,0x09,0x6e,0xf0,0x41,0x66,0x2f,0x5f,
|
||||
0xbe,0x74,0x60,0x69,0x94,0x54,0xcf,0xc6,0xf6,0x2e,0x71,0x7a,0x69,0x76,0xc2,0x0f,
|
||||
0x33,0xc9,0x8f,0x22,0x27,0xe2,0x31,0xa6,0x3a,0x9a,0x63,0x29,0xd9,0xb8,0x5a,0x98,
|
||||
0x1a,0xf3,0xf5,0xc4,0x43,0x48,0x68,0x66,0xa4,0x99,0x4b,0x17,0x40,0x9f,0x5a,0x1f,
|
||||
0xd7,0xf3,0xc3,0x4c,0xb2,0x28,0x8d,0x74,0x5d,0x62,0x5f,0xf7,0x62,0xd2,0x56,0xbf,
|
||||
0xa5,0x7f,0xd0,0x8f,0x2b,0x36,0x98,0x9f,0x2e,0x3f,0x08,0x94,0xf0,0x08,0xee,0x14,
|
||||
0xac,0x8c,0x32,0xc4,0xb2,0xd6,0x0e,0x82,0x1b,0xcd,0x7c,0x92,0xf8,0xaa,0x37,0xc8,
|
||||
0x10,0xfe,0xf8,0xc3,0xf7,0x8d,0x2f,0xe6,0xa2,0x99,0x0d,0x27,0xff,0x2e,0x5a,0x22,
|
||||
0x1e,0x9b,0x5f,0x7e,0x42,0xc3,0x89,0x2a,0x3a,0x40,0x68,0xeb,0x4b,0x46,0xf9,0x6d,
|
||||
0x67,0xea,0xb9,0xdd,0xc1,0xf4,0x86,0x08,0x38,0x31,0x07,0xff,0x82,0x21,0x4a,0xaa,
|
||||
0x87,0x95,0xfe,0xf9,0x1d,0xed,0x09,0x03,0xa1,0xc9,0xfe,0x65,0xef,0xa6,0x6c,0x4d,
|
||||
0xcd,0xb2,0x05,0x72,0x07,0xd3,0xdd,0x5d,0x8e,0xf7,0xef,0xdf,0xb3,0x9e,0xf9,0x5b,
|
||||
0x2b,0x9b,0x7b,0xef,0x3f,0x7e,0x36,0x7b,0xb1,0x18,0xb9,0xd9,0x91,0x30,0x9d,0xe0,
|
||||
0x87,0x30,0x08,0xa0,0x98,0x0e,0x34,0xa1,0x29,0xaa,0xe0,0x13,0x9b,0xcf,0x2a,0x55,
|
||||
0x52,0xe7,0x6e,0xea,0x9c,0x98,0x2a,0xf0,0xfc,0x19,0xc2,0x4a,0xb1,0x29,0x9d,0x69,
|
||||
0xf6,0x12,0x8c,0x75,0xf8,0xa7,0xb3,0x99,0x98,0x1e,0x4d,0x27,0x83,0x20,0xa6,0xc3,
|
||||
0xdc,0xc6,0x80,0xca,0x36,0xcc,0xd8,0x4c,0x29,0x15,0xbe,0x9e,0x51,0x8b,0x27,0x6b,
|
||||
0x3b,0x07,0x66,0xf7,0x49,0x5f,0xd5,0xe0,0x79,0x71,0xa6,0xa0,0x0e,0xd6,0xc7,0x3a,
|
||||
0xcc,0x8c,0x28,0xbd,0x19,0x4d,0x27,0x0d,0xaf,0xc6,0x59,0xa5,0xba,0xb6,0x73,0xe0,
|
||||
0x38,0xf7,0xc9,0xc4,0xb4,0x24,0x49,0x41,0x10,0xd3,0x1d,0x61,0x65,0x33,0x9b,0x48,
|
||||
0x9b,0xce,0x9d,0xd2,0x0a,0xc4,0xfa,0xa7,0x39,0x9b,0x25,0x70,0x7f,0xe8,0x36,0x67,
|
||||
0x8e,0x2d,0x4d,0xc7,0x58,0xd2,0xcd,0x8e,0x66,0xe6,0x90,0x4d,0x80,0xd5,0x17,0xdd,
|
||||
0x7b,0xa8,0x37,0x58,0xa9,0xb1,0x48,0xf0,0x81,0x72,0x78,0x6a,0xf1,0xc4,0xb0,0x92,
|
||||
0xf3,0x65,0xbe,0x44,0x13,0x07,0x47,0xd3,0x7f,0x96,0xa3,0x90,0x4a,0xd1,0x9f,0x08,
|
||||
0x67,0x0e,0xac,0x88,0x98,0x5e,0x9a,0x9d,0x20,0x31,0x1d,0xf5,0x59,0xdf,0xfe,0x81,
|
||||
0xea,0x9c,0xf4,0xb5,0x1c,0xfa,0x12,0x25,0x5a,0x6a,0x9b,0x73,0x0b,0xa9,0x94,0x9e,
|
||||
0x6a,0x71,0xf4,0x59,0xdf,0x3a,0x97,0xcb,0x8f,0xc9,0x1a,0x4c,0x6f,0x88,0x4c,0x33,
|
||||
0xc9,0x28,0x43,0x4b,0xd7,0xc3,0xcc,0xf0,0x74,0x94,0x54,0x4f,0x72,0x7b,0x97,0x6a,
|
||||
0x3e,0xcd,0xe6,0x66,0xbb,0x1c,0x96,0x0b,0x53,0x63,0x47,0xfb,0xb2,0xa6,0x69,0x47,
|
||||
0xfb,0x5b,0xb6,0x66,0xfb,0x86,0x90,0xd0,0xfd,0x7d,0xbd,0x52,0xa1,0xc8,0xb1,0x94,
|
||||
0x86,0x48,0xde,0xba,0x99,0xee,0xee,0xe2,0x64,0x5b,0x28,0x59,0x9d,0x51,0xfe,0x58,
|
||||
0x70,0x9b,0xad,0xb6,0x4d,0xa1,0x40,0xc1,0x55,0xe3,0x17,0xa6,0xc6,0xfa,0xfb,0x4a,
|
||||
0x64,0xc6,0x24,0x5d,0x4d,0xbd,0x60,0x3b,0x0b,0xc3,0xc3,0x16,0x61,0x2a,0x19,0xdd,
|
||||
0xc6,0xfa,0x0d,0xfe,0xc0,0xe3,0xd4,0x88,0x53,0x95,0x55,0x9d,0x49,0x96,0x8c,0xe6,
|
||||
0x81,0x73,0x54,0x0d,0x9f,0xf1,0x1b,0xdb,0xbb,0x3f,0xfe,0xf0,0x7d,0xcb,0xe9,0x84,
|
||||
0xb5,0xbe,0x6d,0x2b,0x99,0x60,0x46,0xc4,0x71,0x7d,0x40,0x68,0x20,0x84,0x40,0xb3,
|
||||
0x46,0x20,0x54,0xf8,0x3f,0x96,0xc0,0x66,0x1b,0x5c,0xbd,0x1b,0xb3,0x00,0x00,0x00,
|
||||
0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
|
||||
@@ -0,0 +1,807 @@
|
||||
//
|
||||
// octocat_32bpp
|
||||
// Data size = 12735 bytes
|
||||
//
|
||||
// PNG, Compression=Flate, Size: 240 x 200, 32-Bpp
|
||||
//
|
||||
// for non-Arduino builds...
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM
|
||||
#endif
|
||||
const uint8_t octocat_32bpp[] PROGMEM = {
|
||||
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
|
||||
0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xc8,0x08,0x06,0x00,0x00,0x00,0xd6,0x7c,0x6c,
|
||||
0x52,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00,0xff,0x00,0xff,0x00,0xff,0xa0,
|
||||
0xbd,0xa7,0x93,0x00,0x00,0x20,0x00,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9d,0x77,
|
||||
0x78,0x1c,0xd5,0xb9,0xff,0x3f,0x33,0xb3,0x4d,0xab,0xb6,0x6a,0xb6,0xaa,0x67,0x6d,
|
||||
0xd9,0x72,0x05,0x0c,0xd8,0x18,0xb0,0x0d,0xa6,0x07,0x08,0x25,0x09,0x10,0x12,0xd2,
|
||||
0x08,0x4a,0xc2,0x25,0x9d,0x24,0xa4,0x91,0x9b,0x9b,0x5f,0xca,0x4d,0x42,0x92,0x9b,
|
||||
0xe4,0x92,0x0b,0x09,0xe2,0x86,0x70,0x93,0x00,0xa1,0x27,0x10,0x6a,0x42,0x2f,0xc1,
|
||||
0x80,0x01,0x03,0x96,0xe5,0xb6,0xe3,0x22,0xab,0x6b,0xd5,0x56,0xdb,0x66,0xe6,0xf7,
|
||||
0xc7,0x8c,0x64,0xc9,0x96,0xad,0x5d,0xd5,0x2d,0xe7,0xfb,0x3c,0xf3,0x48,0x5a,0xed,
|
||||
0x94,0x73,0xe6,0xfd,0x9e,0xf7,0x9c,0xf7,0xbc,0x05,0x04,0x04,0x04,0x04,0x04,0x04,
|
||||
0x04,0x04,0x04,0x04,0x04,0x92,0x80,0x94,0xed,0x1d,0xe0,0x57,0x55,0x2f,0xe0,0xb4,
|
||||
0xfb,0x42,0x97,0x24,0x29,0xba,0x2b,0x10,0x88,0x08,0xd1,0x98,0x5d,0xcc,0xf7,0xfb,
|
||||
0x5d,0xa6,0x69,0xba,0x00,0x87,0xfd,0x51,0x5c,0x51,0x94,0xd0,0x8e,0x9d,0x3b,0x0d,
|
||||
0xd1,0x3b,0x82,0xc0,0x43,0xe4,0x3d,0x0b,0xb8,0x17,0xc8,0x1f,0x12,0x12,0xa0,0x03,
|
||||
0xd8,0x03,0xbc,0x09,0xbc,0x0c,0x3c,0x1b,0xd0,0xb4,0x6d,0x42,0x54,0xa6,0xfd,0x5d,
|
||||
0x54,0x03,0x6b,0xed,0x63,0x25,0x30,0x1f,0x28,0x03,0xdc,0xf6,0x57,0x06,0x81,0xff,
|
||||
0x08,0x68,0xda,0x4f,0x45,0x6f,0x09,0x02,0x0f,0x09,0xcd,0xdd,0xc0,0x25,0xe3,0x7c,
|
||||
0x4d,0x07,0x76,0x01,0xf7,0x03,0x77,0x06,0x34,0xed,0x75,0x21,0x36,0x53,0xd6,0xff,
|
||||
0xf3,0x81,0x0f,0xd9,0xef,0x60,0x39,0xe0,0x1a,0xe7,0x94,0x00,0xb0,0x20,0xa0,0x69,
|
||||
0xa6,0xe8,0xbd,0x2c,0x27,0xb0,0x5f,0x55,0xf3,0x6d,0x6d,0xeb,0x4a,0xf2,0xd4,0x77,
|
||||
0x80,0xdf,0x01,0xb7,0x07,0x34,0x2d,0x28,0x44,0x28,0xe9,0x7e,0xf7,0x00,0xef,0x03,
|
||||
0xae,0x06,0x4e,0x99,0xc0,0x25,0xd6,0x06,0x34,0xed,0x45,0xd1,0x93,0x16,0xe4,0x2c,
|
||||
0x6e,0xfb,0x85,0x13,0x20,0x2f,0xb6,0xa6,0xf8,0x15,0xb0,0xc7,0xaf,0xaa,0x37,0xfa,
|
||||
0x55,0x75,0xa1,0x10,0xa3,0x84,0x88,0x5b,0xe6,0x57,0xd5,0xef,0x00,0x3b,0x81,0x3f,
|
||||
0x4f,0x90,0xbc,0x24,0x30,0x63,0x12,0x1a,0x38,0x4b,0x04,0xea,0x2f,0xc0,0xa5,0x53,
|
||||
0x70,0xa9,0x28,0x70,0x0f,0xf0,0xff,0x02,0x9a,0xb6,0x55,0x88,0xd4,0xa1,0xc4,0x05,
|
||||
0xbe,0x0e,0x7c,0x7a,0x84,0xad,0x61,0x32,0xd8,0x0a,0x2c,0x0f,0x68,0x9a,0x2e,0x7a,
|
||||
0x37,0x4b,0x09,0xec,0x57,0x55,0x07,0xb0,0x1f,0x28,0x9d,0xc2,0xcb,0xea,0xc0,0x1f,
|
||||
0x80,0xef,0x06,0x34,0x6d,0xaf,0x20,0xae,0x5a,0x00,0x7c,0x15,0xb8,0x16,0xc8,0x9d,
|
||||
0xe2,0xcb,0x2f,0x08,0x68,0xda,0x2e,0x41,0xdf,0xec,0x9d,0x42,0x1f,0x35,0xc5,0xe4,
|
||||
0x05,0x50,0x80,0x4f,0x02,0x4d,0x7e,0x55,0xfd,0x81,0xbd,0xc6,0xce,0xca,0xc1,0xd1,
|
||||
0xaf,0xaa,0x9f,0x01,0xb6,0x01,0xdf,0x99,0x06,0xf2,0x02,0x9c,0x2e,0xa8,0x6b,0xc1,
|
||||
0x91,0xa5,0xed,0x3e,0x79,0x1a,0xaf,0x9d,0x03,0x7c,0x1b,0xf8,0x84,0x5f,0x55,0xaf,
|
||||
0x0b,0x68,0xda,0x9f,0xa7,0x91,0x2c,0x25,0x40,0x89,0x3d,0x35,0xcd,0xb3,0x0f,0x8f,
|
||||
0xfd,0x5e,0x1d,0xf6,0xa0,0x12,0xb3,0x67,0x07,0x31,0x60,0x00,0x08,0x01,0x7d,0x40,
|
||||
0x37,0xd0,0x15,0xd0,0xb4,0xfe,0x29,0x7c,0x9e,0xf5,0xc0,0x7f,0x03,0xc7,0x4c,0xf3,
|
||||
0xfb,0x3b,0x09,0xb8,0x55,0xd0,0x37,0x7b,0x09,0xbc,0x7a,0x06,0xee,0x51,0x05,0xfc,
|
||||
0xc9,0xaf,0xaa,0x57,0x01,0x57,0x27,0xb3,0x97,0xec,0x57,0x55,0x09,0x6b,0xff,0xb3,
|
||||
0x1a,0x58,0x0a,0x2c,0x02,0xfc,0x40,0x0d,0xa0,0xda,0x9f,0x17,0x8f,0x98,0x41,0x25,
|
||||
0xbb,0x14,0x1a,0xda,0x86,0x31,0xfd,0xaa,0x1a,0x03,0x9a,0x81,0xbd,0x58,0xfb,0xdf,
|
||||
0x3b,0x81,0x1d,0x40,0x13,0xb0,0x05,0xe8,0x0b,0x68,0x5a,0x3c,0x81,0x81,0xe4,0x67,
|
||||
0xc0,0xc7,0x67,0x68,0x59,0x76,0x82,0xa0,0x6e,0x76,0xaf,0x81,0x5f,0x07,0x8e,0x9d,
|
||||
0xc1,0x5b,0x86,0x81,0xef,0x01,0x3f,0x0f,0x68,0x5a,0x6c,0x8c,0xe7,0x29,0x05,0x96,
|
||||
0xd9,0x82,0x79,0x1c,0xb0,0xc2,0x26,0xad,0x27,0x05,0xba,0x6b,0xaf,0x4d,0xe6,0xd7,
|
||||
0x81,0x8d,0xf6,0xcf,0x5d,0x43,0x46,0x24,0xbf,0xaa,0x5e,0x0e,0xfc,0x1a,0xcb,0xe9,
|
||||
0x62,0xa6,0xa0,0x03,0x6e,0x61,0xc8,0xca,0x42,0x02,0xfb,0x55,0x35,0xc7,0xd6,0x34,
|
||||
0x25,0xb3,0x70,0xfb,0x57,0x81,0x2b,0x81,0x16,0x60,0x83,0x7d,0x9c,0x0a,0xd4,0xda,
|
||||
0x53,0xef,0x74,0x80,0x89,0x65,0x00,0xfc,0x97,0x3d,0xc0,0x9c,0x3b,0x4b,0xcf,0xb1,
|
||||
0x34,0xa0,0x69,0x8d,0x62,0x0a,0x9d,0x7d,0xc8,0x9b,0x25,0xf2,0x02,0xac,0x02,0x36,
|
||||
0xd9,0x03,0xa7,0x92,0xc6,0x83,0x7e,0x25,0x96,0x33,0xc6,0x6c,0x62,0x01,0x20,0x08,
|
||||
0x9c,0x85,0x6d,0xae,0x14,0x7d,0x9e,0x11,0xa8,0x11,0x5d,0x90,0x9d,0xdb,0x48,0x73,
|
||||
0xc4,0x6b,0xcf,0x08,0x94,0x88,0x2e,0xc8,0x4e,0x02,0x17,0x8a,0xd7,0x9e,0x11,0xf0,
|
||||
0x89,0x2e,0xc8,0x4e,0x02,0xbb,0xc5,0x6b,0x17,0xef,0x51,0x10,0x38,0x7d,0xa1,0x88,
|
||||
0xd7,0x2e,0xde,0xa3,0x20,0x70,0xfa,0x42,0x64,0xdb,0xc8,0x0c,0x44,0x45,0x17,0x64,
|
||||
0x27,0x81,0x07,0xc4,0x6b,0xcf,0x08,0xf4,0x8b,0x2e,0xc8,0x4e,0x02,0xb7,0x89,0xd7,
|
||||
0x9e,0x11,0xe8,0x14,0x5d,0x90,0x9d,0x04,0x6e,0x16,0xaf,0x3d,0x23,0xb0,0x5f,0x74,
|
||||
0x41,0x76,0x12,0x38,0x28,0xa6,0x5f,0x19,0x81,0x1d,0xa2,0x0b,0xb2,0x77,0x0d,0xbc,
|
||||
0x5b,0xbc,0xfa,0xb4,0x47,0xa3,0xe8,0x82,0x2c,0x24,0xb0,0x9d,0xd1,0x70,0xb3,0x78,
|
||||
0xf5,0x69,0x8d,0xed,0x01,0x4d,0x13,0xc6,0x48,0xb2,0x37,0x23,0x87,0xc8,0x6a,0x28,
|
||||
0xde,0x9f,0x20,0x70,0x1a,0xe3,0x69,0x0e,0x04,0xb5,0x0b,0xa4,0x1f,0xfe,0x21,0xba,
|
||||
0x20,0x8b,0x09,0x1c,0xd0,0xb4,0xb7,0xb0,0x62,0x82,0x05,0x04,0x04,0x81,0xd3,0x14,
|
||||
0x77,0x89,0xd7,0x9f,0xb6,0xb8,0xd5,0xaf,0xaa,0xe7,0x8b,0x6e,0xc8,0x6e,0x02,0x17,
|
||||
0x89,0xd7,0x9f,0xb6,0x70,0x00,0x77,0xf9,0x55,0x75,0x8d,0x20,0x70,0x16,0xc2,0xaf,
|
||||
0xaa,0xd7,0x01,0xf5,0x82,0x07,0x69,0x8d,0x5c,0xe0,0x41,0xbb,0x28,0x5a,0xd6,0x22,
|
||||
0x1b,0x73,0x62,0x9d,0x07,0xfc,0x2d,0xcb,0x67,0x1f,0x99,0x84,0x8d,0xc0,0xba,0x80,
|
||||
0xa6,0x65,0x65,0x70,0x83,0x92,0x65,0xe4,0xf5,0x03,0x8f,0x93,0x3e,0x09,0xe4,0x04,
|
||||
0xc6,0x47,0x15,0x50,0x14,0xec,0xe9,0x79,0x44,0x10,0x38,0xb3,0xc9,0xeb,0x00,0xfe,
|
||||
0x0e,0x88,0x62,0x64,0x99,0x87,0x55,0x3e,0x9f,0x6f,0x63,0xb0,0xa7,0x67,0xbb,0x58,
|
||||
0x03,0x67,0x2e,0xae,0x03,0xd6,0x08,0x59,0xcf,0x58,0x39,0xbe,0x39,0x1b,0xcb,0xd9,
|
||||
0x64,0x85,0x06,0xf6,0xab,0xea,0x62,0xe0,0x4e,0x44,0x46,0xc8,0x4c,0x46,0x21,0xe0,
|
||||
0x09,0xf6,0xf4,0x3c,0x26,0x34,0x70,0xe6,0xe1,0x46,0x44,0x0e,0xa5,0x6c,0xc0,0xe7,
|
||||
0xfd,0xaa,0xba,0x44,0x10,0x38,0xb3,0xb4,0xef,0xf9,0xc0,0x99,0x42,0xb6,0xb3,0x02,
|
||||
0x0e,0xe0,0xa7,0xd9,0xd4,0x60,0x29,0xc3,0xc9,0x2b,0x03,0x6f,0x60,0x95,0x13,0x15,
|
||||
0xc8,0x0e,0x18,0xc0,0x89,0x01,0x4d,0xdb,0x28,0x34,0x70,0xfa,0xe3,0x22,0x41,0xde,
|
||||
0xac,0x83,0x0c,0x7c,0x5d,0x68,0xe0,0xf4,0xd7,0xbe,0x12,0xf0,0x3c,0xd3,0x5b,0x0b,
|
||||
0x58,0x20,0x35,0x11,0x07,0x16,0x05,0x34,0x2d,0x20,0x34,0x70,0xfa,0xe2,0x38,0x41,
|
||||
0xde,0xac,0x5e,0x0b,0x67,0x85,0xab,0x6c,0x26,0x13,0x58,0xf8,0x3a,0x67,0x37,0xae,
|
||||
0xb4,0x67,0x61,0x82,0xc0,0x69,0x38,0x7d,0x76,0x02,0x1f,0x12,0x32,0x9c,0xd5,0xa8,
|
||||
0xc4,0xaa,0xbd,0x2c,0x08,0x9c,0x86,0x38,0x0b,0x51,0xc4,0x4c,0x00,0xde,0x2f,0x08,
|
||||
0x9c,0x9e,0xb8,0x58,0xc8,0xae,0x00,0x70,0x9e,0x20,0x70,0x7a,0xe2,0x6c,0x21,0xbb,
|
||||
0x02,0x80,0xdf,0xaf,0xaa,0xb5,0x82,0xc0,0xe9,0xb5,0xfe,0xad,0x05,0xaa,0x85,0xec,
|
||||
0x0a,0x60,0xf9,0xfa,0x9f,0x20,0x08,0x9c,0x5e,0x38,0x1e,0x51,0x7a,0x52,0xe0,0x00,
|
||||
0x4e,0x16,0x04,0x4e,0x2f,0xac,0x12,0x32,0x2b,0x30,0x02,0xc7,0x08,0x02,0xa7,0x17,
|
||||
0x56,0x08,0x99,0x15,0x18,0x81,0x5a,0xbf,0xaa,0xba,0x32,0xb5,0x71,0x19,0x15,0x1f,
|
||||
0x6b,0x07,0x2f,0xa4,0x9c,0xd1,0x22,0x1a,0xd7,0x09,0xc5,0x74,0x62,0x86,0x89,0x53,
|
||||
0x91,0x29,0xcc,0x71,0xe3,0x71,0x3a,0x88,0xc6,0xe3,0x74,0x87,0x22,0xc4,0x74,0x03,
|
||||
0x09,0x70,0xc8,0x12,0x4e,0x59,0xc2,0xe5,0x50,0x70,0x28,0xf2,0xac,0xfb,0xb9,0x9a,
|
||||
0x40,0x5c,0x37,0x88,0xc4,0x75,0xa2,0xba,0x81,0x6e,0x82,0x2c,0x4b,0x94,0x78,0x3d,
|
||||
0x14,0xe6,0x7a,0xf0,0xb8,0x9c,0x98,0xa6,0x49,0xdf,0x60,0x84,0xfd,0xc1,0x7e,0xe2,
|
||||
0xba,0x81,0xc7,0x21,0xe3,0x75,0x39,0x90,0xa5,0x94,0xf1,0xa1,0xa8,0x00,0xbc,0x64,
|
||||
0x68,0x41,0xf0,0x4c,0x0b,0x70,0xf7,0x00,0x73,0x66,0x53,0xe0,0x9d,0x8a,0x8c,0x7f,
|
||||
0x6e,0x09,0x6b,0x96,0x2e,0xa0,0xa2,0xb4,0x88,0xa2,0x7c,0x2f,0x79,0xde,0x1c,0x0a,
|
||||
0x72,0xbd,0x38,0x14,0x19,0xcc,0x31,0x0a,0x42,0xd8,0xc2,0x1e,0xd7,0x0d,0x22,0xb1,
|
||||
0x18,0xa1,0xc1,0x08,0x83,0x91,0x28,0xa6,0x69,0x12,0x8d,0xc7,0xe9,0x0b,0x85,0xe9,
|
||||
0x1d,0x08,0x11,0x8f,0xeb,0xc4,0x74,0x83,0xe0,0x40,0x88,0xd6,0xae,0x5e,0x5a,0x3b,
|
||||
0x83,0x0c,0x46,0xa3,0x98,0x26,0x18,0xa6,0x89,0x6e,0x98,0xe8,0x86,0x31,0xfc,0xf7,
|
||||
0xd0,0xa5,0x65,0x49,0x42,0x96,0x24,0x1c,0x8a,0x8c,0x2c,0x49,0x48,0x12,0xb8,0x1c,
|
||||
0x4e,0xca,0x4b,0x0a,0x99,0x5b,0x5c,0x48,0x51,0x9e,0xd7,0x1e,0x34,0x14,0x0a,0xf2,
|
||||
0xbc,0xe4,0x7b,0x3d,0xb8,0x1c,0x16,0x09,0x73,0x3c,0x6e,0x72,0x73,0xdc,0xb8,0x9d,
|
||||
0x4e,0x64,0x59,0x1a,0xfb,0xf9,0x47,0xb4,0x63,0x30,0x12,0xa3,0xbb,0xb7,0x8f,0x50,
|
||||
0x24,0xca,0xbe,0xb6,0x4e,0x1a,0xf7,0xb4,0xb0,0x69,0xdb,0x6e,0xfa,0x07,0x23,0x48,
|
||||
0xb3,0x43,0x6a,0xc9,0x26,0x71,0x30,0x13,0x09,0x9c,0x51,0xae,0x66,0x7e,0x55,0x2d,
|
||||
0x66,0x16,0x0a,0x3f,0x47,0xe3,0x3a,0x6b,0x97,0x2d,0xe0,0x94,0x95,0x4b,0x58,0x50,
|
||||
0x39,0x87,0xa2,0xfc,0xdc,0x61,0x02,0x01,0x98,0xc3,0x64,0x1a,0xdd,0xdd,0xe6,0x41,
|
||||
0x64,0x48,0x54,0xc0,0x25,0x9b,0x2c,0x92,0x7d,0x8e,0x09,0xe8,0x86,0x41,0x4c,0xd7,
|
||||
0xd1,0x75,0x03,0xd3,0x26,0x33,0x98,0xc8,0x92,0x8c,0x2c,0x4b,0x28,0xb2,0x8c,0x43,
|
||||
0x51,0x50,0x14,0x19,0xd9,0xbe,0xb7,0x69,0x0f,0x3b,0x66,0x82,0x45,0x66,0x46,0x3e,
|
||||
0xaf,0x24,0x49,0x63,0xb6,0xe7,0xe0,0xb6,0x4a,0x92,0x44,0x38,0x1a,0x63,0x77,0x6b,
|
||||
0x07,0xaf,0x6e,0xd9,0xc9,0xc3,0xff,0x7a,0x9b,0x59,0xa8,0x6a,0x73,0x66,0x40,0xd3,
|
||||
0x32,0xb2,0x1c,0x4b,0xa6,0x69,0xe0,0x19,0xf5,0xbe,0x32,0x0c,0x93,0x75,0x47,0xd5,
|
||||
0x72,0xe1,0xba,0xe3,0xa9,0x2a,0x2d,0x1e,0x52,0xa4,0xb8,0x3d,0x6e,0xbc,0xde,0x1c,
|
||||
0x72,0x3c,0x1e,0x5c,0x2e,0x27,0x4e,0xa7,0x13,0x45,0x51,0x90,0x64,0x69,0xd4,0x88,
|
||||
0x69,0x9a,0x60,0x9a,0x06,0xba,0x61,0xa0,0xeb,0x06,0xba,0xae,0xa3,0xeb,0x3a,0xf1,
|
||||
0xb8,0x4e,0x3c,0x1e,0xb7,0x0f,0xeb,0xf7,0x58,0x2c,0x8e,0x1e,0x8f,0x5b,0x1a,0xd6,
|
||||
0x26,0xb1,0x39,0x74,0x11,0xfb,0x6f,0x97,0xa2,0x80,0x72,0x64,0x03,0xbc,0x69,0x18,
|
||||
0xe8,0x63,0x90,0x52,0x96,0x65,0x1c,0x0e,0x07,0x0e,0x87,0x03,0xa7,0xd3,0x81,0xc3,
|
||||
0xa1,0x0c,0xff,0xed,0xb0,0xb5,0xb3,0x32,0x7c,0xc8,0x36,0x41,0xa5,0x03,0x23,0x8a,
|
||||
0x09,0x26,0x26,0x86,0x61,0x10,0x8f,0xc5,0x89,0x46,0x63,0x84,0x23,0x11,0x42,0xa1,
|
||||
0x41,0xa4,0x81,0x10,0x8b,0xaa,0xcb,0xa9,0xab,0xa9,0xe0,0x3d,0x27,0x1e,0xc3,0xb3,
|
||||
0x6f,0x6c,0xe1,0x8e,0xa7,0x5e,0xc5,0x21,0xcf,0x98,0xfe,0x28,0x15,0x6b,0xe0,0xf4,
|
||||
0x80,0x6f,0xc6,0x46,0x0a,0xaf,0x87,0xab,0x2f,0x3e,0x9d,0x15,0xf3,0xab,0x91,0x24,
|
||||
0x89,0xbc,0xbc,0x5c,0x8a,0x8b,0x8b,0x28,0xc8,0xcf,0xc3,0xe1,0x98,0x9e,0x5d,0xac,
|
||||
0x21,0x0d,0x17,0x8f,0xeb,0xc3,0x64,0xd7,0x75,0x03,0xdd,0xd0,0x31,0x0c,0x03,0x43,
|
||||
0x37,0x2c,0xcd,0x3f,0x42,0xbb,0x4a,0x48,0x96,0xb6,0x96,0x2c,0x2d,0x2c,0x2b,0x32,
|
||||
0xb2,0x2c,0x0f,0x13,0xd1,0xa1,0x58,0x44,0x1d,0x4b,0xa3,0x4e,0x14,0x6e,0x97,0x8b,
|
||||
0xdc,0xdc,0xd1,0xcf,0xdd,0x3f,0x10,0xa2,0xbb,0xdb,0x9a,0xc5,0x5e,0xb4,0x7e,0x15,
|
||||
0xc7,0x2f,0x59,0xc0,0xef,0x1f,0x7e,0x86,0xad,0x7b,0xdb,0x32,0x6e,0x60,0x17,0x04,
|
||||
0x9e,0xdc,0x1a,0x78,0xda,0xb1,0xb4,0x66,0x2e,0xff,0xf6,0xbe,0x33,0x29,0x2e,0xc8,
|
||||
0xa3,0xb0,0xb0,0x80,0xf2,0xb9,0x65,0xe4,0xe4,0x4c,0xff,0xad,0x87,0x48,0xe6,0x72,
|
||||
0xc9,0x80,0x33,0x7d,0xd6,0x69,0x92,0x44,0x7e,0x5e,0x2e,0xf9,0x79,0xb9,0x54,0x54,
|
||||
0xcc,0xa5,0xad,0xad,0x03,0x49,0x92,0xf8,0xda,0x87,0xdf,0xcb,0x9d,0x4f,0xbe,0xc8,
|
||||
0x13,0xaf,0x6d,0x99,0xee,0xf5,0xb1,0xb0,0x42,0x8b,0xf6,0x58,0x58,0xb3,0xc4,0xcf,
|
||||
0x55,0x17,0x9c,0x46,0x41,0xae,0x97,0x79,0x35,0x95,0x14,0x14,0x64,0x5d,0x26,0xd3,
|
||||
0x49,0xc1,0xe9,0x70,0x50,0x55,0x59,0x4e,0x49,0x71,0x11,0xda,0xee,0xbd,0x7c,0xf4,
|
||||
0x3d,0xeb,0x29,0xf0,0xe6,0x70,0xdf,0xf3,0x9b,0x04,0x81,0x05,0x81,0xa7,0xd7,0x3a,
|
||||
0xb2,0x6a,0xd1,0x3c,0x3e,0x75,0xe1,0xe9,0x14,0x15,0xe6,0xb3,0x60,0xbe,0x8a,0xd3,
|
||||
0x29,0xb2,0xd4,0x4e,0x78,0xaa,0xe4,0x71,0xb3,0x68,0xe1,0x7c,0x76,0xef,0x69,0xe6,
|
||||
0x7d,0xa7,0xae,0xc6,0x04,0xee,0x9f,0x3e,0x12,0xeb,0x82,0xc0,0xe9,0x81,0xd8,0x74,
|
||||
0x5d,0x78,0x7e,0x79,0x09,0xf5,0x17,0x9e,0x46,0x49,0x91,0x8f,0x05,0xf3,0x6b,0x50,
|
||||
0x14,0xe1,0xad,0x39,0x59,0xc8,0xb2,0x8c,0x3a,0xaf,0x1a,0x45,0x91,0xb9,0x68,0xfd,
|
||||
0x2a,0x82,0xfd,0x03,0x3c,0xf5,0x46,0x93,0xe8,0x98,0x2c,0x26,0x70,0x7c,0x5a,0x2c,
|
||||
0x20,0xb9,0x1e,0xbe,0x78,0xe9,0x39,0xcc,0x2d,0x29,0x66,0xc1,0xfc,0x79,0x28,0xca,
|
||||
0x04,0x1c,0xd8,0x24,0x09,0xc9,0x65,0x95,0x64,0x32,0x23,0x83,0xcc,0xc2,0x56,0xca,
|
||||
0xf4,0x4e,0x7c,0x24,0x19,0xc9,0x69,0xb7,0x2f,0x1a,0x4a,0xa6,0x5b,0xa8,0xa9,0xae,
|
||||
0x04,0xe0,0xc3,0x67,0xad,0xa3,0xad,0xbb,0x8f,0x77,0xb4,0xfd,0x69,0x21,0x17,0x82,
|
||||
0xc0,0x53,0x8f,0xd0,0x54,0x5f,0xd0,0x30,0x4d,0xfe,0xed,0xa2,0x33,0xa8,0x9a,0x53,
|
||||
0xca,0xfc,0x09,0x90,0x57,0x29,0x98,0x83,0xb3,0xbc,0x16,0x25,0xbf,0x18,0x24,0xeb,
|
||||
0x5c,0xd3,0x34,0x30,0xfa,0x3a,0x89,0xb5,0xec,0x40,0xef,0x6d,0x4f,0xeb,0x0e,0x57,
|
||||
0x0a,0xe7,0xe2,0x9c,0xbb,0x60,0x54,0xfb,0x30,0x0d,0xf4,0xde,0x4e,0x62,0xad,0x89,
|
||||
0xb7,0xaf,0xba,0xaa,0x82,0x78,0x3c,0xce,0x55,0x17,0x6c,0xe0,0xab,0xff,0x73,0x17,
|
||||
0x86,0x61,0x08,0x02,0x27,0xd2,0xff,0x99,0xd4,0x18,0x9f,0xcf,0xe7,0x01,0xae,0x9d,
|
||||
0xca,0x6b,0x5e,0xbc,0x76,0x25,0x67,0xae,0x3e,0x8a,0x85,0xb5,0x7e,0x5c,0xae,0xc4,
|
||||
0x2d,0xbf,0x92,0xe2,0xc4,0x5d,0xbb,0x0a,0x57,0xf5,0x12,0x64,0x4f,0xae,0x25,0xdc,
|
||||
0xd2,0xd0,0x96,0x8e,0x8c,0xec,0xc9,0xc5,0x51,0x5a,0x83,0x9c,0x53,0x80,0xd1,0xdb,
|
||||
0x0e,0xa6,0x91,0x56,0x7d,0x7d,0xa4,0xf6,0x31,0xaa,0x7d,0xf9,0xe8,0xbd,0x6d,0xe3,
|
||||
0xb6,0x4f,0x92,0x24,0x0a,0x0a,0xf2,0xd1,0xa3,0x51,0x2a,0x8a,0xf2,0x79,0xe1,0xed,
|
||||
0x1d,0x53,0xe9,0x8e,0x79,0x77,0xb0,0xa7,0xe7,0xcd,0x8c,0x5c,0x86,0x08,0x0d,0x7c,
|
||||
0x84,0x01,0x21,0x37,0x87,0xf3,0x4e,0x3e,0x96,0x9a,0xea,0x4a,0xdc,0xee,0xc4,0x0d,
|
||||
0x99,0x92,0xc3,0x8d,0x67,0xe9,0x3a,0x1c,0x45,0xe5,0xe3,0x4f,0x81,0x8a,0x2b,0xf0,
|
||||
0x2c,0x59,0x8b,0xe4,0x48,0x1f,0x43,0xa9,0xe4,0x4c,0xa6,0x7d,0x95,0xe4,0x2c,0x59,
|
||||
0x97,0x50,0xfb,0x14,0x59,0xc6,0xef,0xaf,0xe1,0xf8,0x25,0x0b,0x38,0x69,0xd9,0xfc,
|
||||
0xa9,0x7c,0xe4,0x48,0xc6,0xda,0x11,0x32,0x70,0x0d,0x3c,0x65,0x2f,0xeb,0x63,0xe7,
|
||||
0xac,0xa5,0xba,0x62,0x0e,0x3e,0x5f,0x41,0x12,0xd2,0x2d,0xe3,0xa9,0x5b,0x83,0x9c,
|
||||
0x93,0xf8,0xf6,0x92,0xec,0x2d,0xc0,0xb3,0xe8,0xc4,0x61,0x9f,0xe8,0xd4,0x66,0xaf,
|
||||
0x8c,0x67,0xd1,0x89,0x49,0xb7,0xcf,0xbd,0x68,0xcd,0x81,0x29,0xf6,0x11,0xe0,0x71,
|
||||
0xbb,0xa9,0xa9,0xaa,0xe0,0xe2,0xf5,0xab,0x46,0xb9,0xa3,0x4e,0x12,0xfd,0x82,0xc0,
|
||||
0xe9,0x81,0x28,0xd0,0x3b,0x15,0x17,0xaa,0x2a,0x29,0x64,0xd5,0xd2,0x5a,0xaa,0x2a,
|
||||
0xcb,0x93,0x3a,0xcf,0x55,0xbd,0x0c,0x39,0xf7,0xf0,0x0e,0x61,0xa6,0x69,0x8c,0x19,
|
||||
0x10,0x20,0xe7,0xf9,0x70,0x55,0x2f,0x4f,0xf9,0x0e,0x76,0xcd,0x5b,0x81,0x9c,0x7b,
|
||||
0xa8,0x63,0x93,0x69,0x18,0x47,0x0c,0x74,0x50,0xf2,0x8a,0x70,0x56,0x25,0x56,0x77,
|
||||
0xac,0xa4,0xa4,0x88,0xa5,0x0b,0x6a,0x38,0xe3,0xd8,0x29,0xab,0x53,0xd6,0x9b,0xa9,
|
||||
0x04,0x76,0x64,0x20,0x81,0x83,0x40,0xd9,0x64,0x2f,0x74,0xe1,0xda,0x63,0xa9,0xa9,
|
||||
0x2a,0xc7,0xe1,0x48,0xbc,0x8b,0xe4,0x9c,0x02,0x9c,0x73,0xc7,0x9e,0xfa,0x75,0x06,
|
||||
0x76,0xb2,0xf3,0xb9,0x67,0xe8,0xde,0xd1,0x84,0x24,0xc9,0x14,0x2f,0x5e,0x4a,0xed,
|
||||
0x29,0xa7,0xe1,0xab,0xac,0x1a,0xfe,0x8e,0x73,0xae,0x9f,0x78,0xc7,0x6e,0x8c,0xc1,
|
||||
0xd4,0x94,0x37,0xd9,0xeb,0xc3,0x59,0xa6,0x8e,0xfa,0xac,0x7d,0xe7,0x76,0x76,0x3d,
|
||||
0xf7,0x34,0xc1,0x9d,0xdb,0x91,0x14,0x85,0xd2,0x25,0xcb,0xa9,0x3d,0xe5,0x34,0x0a,
|
||||
0xca,0x2b,0x0e,0x25,0x7f,0xf9,0x02,0xf4,0x8e,0xdd,0x18,0xe1,0xfe,0x71,0xd7,0xc3,
|
||||
0x15,0xe5,0x73,0x38,0xfd,0xf8,0xe5,0x3c,0xf5,0xc6,0xd6,0xa9,0x78,0xf4,0x9e,0x4c,
|
||||
0x25,0x70,0x46,0x19,0xb1,0x82,0x3d,0x3d,0xa6,0xcf,0xe7,0xbb,0x1c,0xa8,0x99,0xd4,
|
||||
0xa8,0xa6,0x28,0x5c,0x75,0xc1,0x69,0xd4,0x2d,0xf4,0x27,0xe1,0xe2,0x67,0xe2,0xf2,
|
||||
0x1f,0x8b,0x9c,0x93,0x77,0x88,0x66,0x7a,0xe7,0xe1,0xbf,0xf2,0xda,0x8d,0x3f,0xa3,
|
||||
0x67,0xc7,0x56,0xa2,0xdd,0x9d,0x44,0xba,0x3a,0x08,0x6e,0xdb,0x42,0xe0,0xa9,0xc7,
|
||||
0x51,0x0a,0x8b,0x29,0x99,0xbf,0x60,0x48,0x72,0x91,0x1c,0x6e,0xf4,0xee,0xe6,0x94,
|
||||
0xec,0x5f,0xb7,0xff,0x98,0xe1,0xf6,0x99,0x86,0xce,0x5b,0x0f,0xdc,0xcb,0xa6,0x9b,
|
||||
0x7f,0x49,0xef,0xce,0x6d,0xc3,0xed,0xea,0x6e,0x7a,0x97,0x5d,0xff,0x7c,0x1c,0x57,
|
||||
0xe9,0x1c,0x8a,0xe7,0xf9,0x0f,0x66,0x26,0x92,0xd3,0x8d,0xde,0xbd,0x8f,0xf1,0x02,
|
||||
0xe1,0x5c,0x2e,0x17,0x4e,0x09,0x5e,0x78,0xb3,0x91,0xde,0x50,0x78,0xb2,0x8f,0xfe,
|
||||
0xa3,0x60,0x4f,0x4f,0x46,0x6a,0xe1,0x4c,0xcc,0xc8,0xb1,0x7b,0xb2,0x17,0x58,0xbd,
|
||||
0x58,0x65,0xa1,0x5a,0x85,0x2c,0x27,0xde,0x3d,0x92,0x2b,0x17,0x87,0xef,0x50,0xc5,
|
||||
0xbf,0xe5,0xf1,0x47,0xd8,0x7a,0xe7,0x6d,0x63,0x4e,0x2f,0x4d,0x5d,0x67,0xf3,0xad,
|
||||
0xbf,0x61,0xc7,0x0b,0xcf,0x1e,0x18,0x3c,0x8a,0xe6,0x22,0x39,0x3d,0x29,0xd7,0xa9,
|
||||
0x92,0xcb,0x8b,0x52,0x78,0x20,0xd4,0xfa,0xed,0x87,0xfe,0xca,0xf6,0x7b,0xff,0x7c,
|
||||
0x98,0x76,0xc5,0x79,0xe3,0xb7,0xbf,0x22,0xf0,0xca,0x4b,0x87,0x0e,0x8e,0xbe,0xf2,
|
||||
0xe1,0xfd,0xe2,0xf1,0x50,0x56,0x56,0xc2,0xd9,0xab,0x27,0x9d,0x60,0xc5,0x10,0x6b,
|
||||
0xe0,0xf4,0xc2,0xae,0xc9,0x5e,0xe0,0xf8,0xc5,0x7e,0x7c,0xbe,0xe4,0x02,0x58,0x1c,
|
||||
0x25,0x55,0x87,0x18,0x69,0x3a,0x03,0x3b,0x69,0xfc,0xd3,0xad,0x54,0x6d,0x38,0x87,
|
||||
0xaa,0x0d,0x67,0x23,0x8d,0x35,0x20,0x48,0x12,0x6f,0xde,0x72,0x23,0xbd,0xad,0x2d,
|
||||
0xc3,0x46,0x22,0x47,0x49,0xea,0x25,0xd5,0x74,0x94,0x54,0x0f,0x1b,0xd9,0xda,0xb6,
|
||||
0x35,0xd1,0x74,0xd7,0x6d,0x98,0xa6,0x41,0xbe,0xbf,0x16,0x67,0x6e,0xde,0x98,0xe7,
|
||||
0x6c,0xfa,0xed,0xaf,0x19,0xe8,0xec,0x38,0x48,0xe2,0x64,0x1c,0xc5,0x55,0x09,0xdd,
|
||||
0xb3,0x20,0x3f,0x8f,0xc5,0xfe,0x2a,0xe2,0xfa,0xa4,0xb6,0xd8,0x7a,0xc8,0xd0,0x6c,
|
||||
0x1c,0x99,0x4a,0xe0,0x6d,0x93,0xbd,0xc0,0x22,0xb5,0x2a,0xa9,0x6d,0x23,0x30,0x51,
|
||||
0x0a,0xe7,0x1e,0xf2,0xe9,0xe6,0xbb,0xef,0x60,0xf5,0xb5,0xdf,0xe6,0xc4,0xfa,0xab,
|
||||
0x39,0xf1,0xaa,0xab,0x59,0xfd,0xe5,0x6f,0x1d,0x56,0x63,0xbd,0xfb,0xd0,0x03,0x07,
|
||||
0xd6,0x35,0x63,0x5c,0x6b,0xd6,0xd7,0x5a,0xbe,0x03,0xcf,0xb4,0xf9,0xae,0xff,0xc3,
|
||||
0x04,0x56,0x7f,0xf9,0xdb,0x9c,0xf5,0xbd,0x9f,0xf0,0x9e,0x5f,0xdc,0x8c,0x6f,0xc9,
|
||||
0xa1,0x55,0x5c,0x8d,0x68,0x84,0x2d,0x8f,0x3e,0x74,0x98,0x6b,0x8d,0x6f,0x61,0x96,
|
||||
0x24,0x89,0x25,0x0b,0xe6,0x11,0x8a,0x4f,0xca,0x95,0xb9,0x0b,0xb1,0x8d,0x94,0x56,
|
||||
0xd8,0x32,0x99,0x93,0xe3,0x86,0x81,0xbf,0xba,0x22,0xc9,0x5e,0x74,0x22,0x7b,0x47,
|
||||
0x6f,0xab,0x04,0xf7,0xed,0x25,0xd8,0xf4,0x0e,0x73,0xeb,0x16,0x0f,0x7f,0x56,0x5e,
|
||||
0xb7,0x18,0x87,0x37,0x77,0xcc,0x4b,0xec,0x7b,0xea,0x31,0x06,0x83,0xdd,0x96,0x80,
|
||||
0xe7,0xf9,0x52,0xab,0x47,0x25,0x09,0xc5,0xb6,0x3c,0x77,0x06,0x76,0x11,0x6c,0x7c,
|
||||
0x1b,0x87,0x27,0x87,0xea,0xa3,0x57,0x22,0xc9,0x32,0x2e,0xaf,0x97,0x79,0xeb,0x36,
|
||||
0x8c,0x79,0xaa,0xf6,0xe8,0x5f,0x89,0xf4,0xf5,0x8d,0xee,0x2e,0x6f,0x01,0xc8,0x89,
|
||||
0x19,0x07,0x8b,0x7d,0x05,0xac,0x5d,0xa2,0x4e,0xe6,0xe9,0x5b,0x02,0x9a,0xa6,0x0b,
|
||||
0x02,0xa7,0x0f,0x76,0x02,0x13,0xb6,0x7a,0xe8,0x86,0x49,0x59,0x51,0x72,0x04,0x92,
|
||||
0x5d,0x39,0x48,0xca,0x68,0x2f,0xad,0x96,0x2d,0xef,0xa0,0x87,0xc3,0x0c,0x74,0x75,
|
||||
0x0d,0x7f,0xd6,0xdf,0xd5,0x45,0x3c,0x3c,0x78,0x58,0x92,0xb4,0x34,0xda,0x63,0x8f,
|
||||
0xac,0x20,0x7b,0x52,0x27,0x4c,0x51,0xce,0x29,0x1c,0x5e,0x1e,0xec,0x7f,0x77,0x33,
|
||||
0x48,0x12,0xf1,0xc1,0x41,0x7a,0xdb,0x5a,0x0f,0x2c,0x17,0xb6,0x1f,0x3e,0x08,0xa1,
|
||||
0x75,0xdb,0x68,0x4b,0xb2,0xe4,0x70,0x25,0xbc,0xce,0xcf,0xcb,0xf5,0x52,0x9c,0xe7,
|
||||
0x9d,0x55,0x9b,0x48,0x2a,0x23,0xe3,0xe2,0xe1,0x02,0x9a,0xd6,0xe6,0x57,0xd5,0x56,
|
||||
0x60,0x42,0xc3,0x76,0x81,0xd7,0x93,0xe4,0xf4,0x19,0xa4,0x31,0x9c,0x1a,0xda,0x36,
|
||||
0xbf,0x01,0xc0,0x4b,0xbf,0xbe,0x81,0x25,0xef,0xfb,0x20,0x00,0x8d,0xf7,0xff,0xe5,
|
||||
0x88,0x7b,0xa5,0x9d,0xdb,0x9b,0x98,0x7f,0xe2,0xc9,0x07,0xae,0x19,0xee,0x4b,0x11,
|
||||
0x02,0x1f,0x68,0x5f,0xdb,0x1b,0xaf,0x5b,0xcf,0xa7,0x28,0x3c,0xf7,0xa3,0x7f,0x47,
|
||||
0x3d,0xeb,0x7c,0x7a,0xf7,0xee,0xa6,0xed,0x95,0xe7,0x0f,0xdf,0xae,0x9d,0x3b,0x98,
|
||||
0x77,0xdc,0xe8,0x74,0xdd,0xb2,0x27,0x0f,0x3d,0x32,0x30,0xfe,0xd4,0x5d,0x51,0x28,
|
||||
0x4e,0xc6,0x91,0x66,0xec,0x01,0x5d,0x10,0x38,0xcd,0xf0,0xaf,0xc9,0x10,0x38,0xd9,
|
||||
0x38,0xdf,0xa1,0x28,0xa3,0x91,0xe8,0xdb,0xbb,0x07,0x80,0xc1,0x96,0x7d,0x6c,0xba,
|
||||
0xe9,0x17,0x09,0x5d,0x27,0xb8,0xe3,0x80,0x16,0x4b,0x25,0x4b,0xf4,0x90,0x1b,0xa4,
|
||||
0xa9,0xeb,0x0c,0xb4,0x1e,0xd8,0xe2,0x8a,0xf5,0xf5,0xb0,0xfd,0xbe,0x3f,0x8f,0x6f,
|
||||
0x45,0xda,0xd1,0x94,0x50,0x9f,0x1d,0x6e,0x1d,0x5c,0x90,0x9f,0x37,0x99,0xc7,0xdf,
|
||||
0x9a,0xc9,0x04,0xce,0xd4,0xe2,0x66,0x2f,0x4e,0xf4,0xc4,0xde,0x81,0x70,0xd2,0xb1,
|
||||
0xbe,0x92,0x3c,0xfa,0xfb,0x7a,0x24,0x82,0x3e,0x38,0x90,0xf4,0xbd,0x23,0xfd,0x7d,
|
||||
0x23,0xae,0x99,0x42,0xaf,0xc6,0x5e,0xaf,0xc6,0x23,0x61,0x8c,0xc1,0xe4,0xdd,0xcd,
|
||||
0xc3,0x3d,0xc1,0x31,0xfa,0xcc,0x91,0x30,0x81,0xcd,0xc9,0x85,0x5e,0xbe,0x2b,0x08,
|
||||
0x9c,0x7e,0x78,0x7a,0xa2,0x27,0xf6,0x84,0xc2,0x30,0x49,0x1f,0x5c,0xd3,0x34,0x27,
|
||||
0x16,0x5d,0x64,0xa4,0x6a,0x8c,0xb0,0x39,0xdc,0x2e,0x73,0x02,0x7d,0x63,0x4e,0x32,
|
||||
0x34,0x30,0x36,0x71,0x2b,0x74,0x08,0xd8,0x21,0x08,0x9c,0x7e,0xeb,0xe0,0x37,0x81,
|
||||
0x8e,0x89,0x0a,0x6b,0x28,0x92,0xdc,0xb6,0xa1,0xa9,0x8f,0x0e,0x37,0x55,0x5c,0x2e,
|
||||
0x24,0x77,0xf2,0x53,0x60,0x47,0x4e,0xce,0x08,0xa1,0x4f,0x21,0xc3,0xa9,0xfd,0x2c,
|
||||
0x8a,0xd3,0x85,0xec,0x72,0x27,0x7d,0xba,0x2b,0x37,0x77,0x0c,0x52,0x27,0x16,0xa2,
|
||||
0x6b,0x9a,0x26,0xe1,0xc8,0x84,0xb7,0x71,0xf7,0x04,0x34,0x2d,0x28,0x08,0x9c,0x9e,
|
||||
0x78,0x64,0x22,0x27,0x39,0x15,0x99,0xbe,0x81,0xe4,0xa6,0x89,0x66,0x74,0xf0,0xa0,
|
||||
0xe9,0xa1,0x8c,0xb7,0x24,0xf9,0x02,0x11,0xf9,0x55,0x07,0x3c,0x40,0xcd,0x58,0xea,
|
||||
0x6c,0x5d,0x0e,0x3d,0x8b,0xe2,0x72,0xe1,0x2e,0x2a,0x49,0xbe,0x5d,0x35,0xfe,0x43,
|
||||
0xaf,0x19,0x49,0xac,0x8f,0x75,0xc3,0xa0,0xa5,0x73,0xc2,0x1c,0x7c,0x91,0x0c,0x47,
|
||||
0x26,0x13,0xf8,0x81,0x09,0x75,0x88,0x24,0x33,0x30,0x98,0x1c,0x79,0xcc,0x31,0xac,
|
||||
0xc5,0xa5,0x2b,0x92,0x2f,0x8a,0x57,0x52,0xb7,0xf4,0xc0,0x35,0x53,0x28,0xa0,0x61,
|
||||
0x64,0x70,0xc5,0x44,0xda,0x55,0xbc,0x60,0xe1,0xa1,0xd7,0x0c,0x27,0xe6,0xdd,0xa8,
|
||||
0xeb,0x06,0x3b,0xf6,0x4d,0x38,0x77,0xf4,0x73,0x99,0x4e,0xe0,0x59,0xb7,0x42,0xfb,
|
||||
0x55,0x55,0xb1,0x9f,0x43,0xb1,0x07,0x14,0x05,0x2b,0x0d,0x68,0x0e,0x56,0x51,0x2a,
|
||||
0x97,0x7d,0x38,0xed,0xff,0x1f,0xfc,0xcc,0x06,0x56,0xd6,0xc1,0x18,0x96,0xc7,0x4d,
|
||||
0x04,0x6b,0x1f,0x78,0xb3,0xbd,0x06,0x4a,0x6a,0x13,0x51,0x92,0xa0,0x33,0xd8,0xcb,
|
||||
0xfc,0xaa,0xc4,0xbd,0xa1,0x8c,0xe8,0x20,0x66,0x3c,0x86,0xe4,0x38,0xb0,0x17,0x3c,
|
||||
0x77,0xe9,0x32,0xb6,0x27,0xb7,0x70,0x66,0x8e,0xed,0xf4,0x61,0x1a,0xf1,0x84,0x05,
|
||||
0x7c,0x46,0x08,0x1c,0xee,0x03,0xc3,0x00,0x59,0xa6,0x7c,0xf9,0x51,0x04,0x1e,0xbe,
|
||||
0x6f,0x42,0xed,0x1a,0xa9,0xd1,0xcd,0x78,0x62,0x83,0xa4,0x6e,0x18,0xbc,0xb2,0x63,
|
||||
0x3f,0xfe,0xe2,0xdc,0x89,0x3c,0xfa,0x6b,0x7e,0x55,0x2d,0xb1,0x65,0x29,0x07,0x2b,
|
||||
0x6f,0xb8,0xdb,0x96,0xa1,0x21,0x99,0x3b,0x64,0xc9,0x6d,0x1f,0xf1,0x11,0xb2,0x14,
|
||||
0x06,0x06,0x6d,0x39,0x1b,0x3a,0xe2,0x80,0x1e,0xd0,0x34,0x33,0xe3,0x08,0xec,0x57,
|
||||
0x55,0x07,0x50,0x6c,0x1f,0xe5,0x07,0x1d,0x65,0x58,0x05,0xc8,0x4a,0x46,0x90,0x52,
|
||||
0x1a,0x71,0x30,0xa2,0xc3,0x06,0xed,0x4e,0x8c,0x8e,0xe8,0xd4,0x83,0x2d,0x22,0x92,
|
||||
0x7d,0x1d,0x87,0x4d,0x74,0xcf,0x88,0xa3,0x2b,0x59,0x02,0x03,0x34,0xb7,0x77,0x02,
|
||||
0x8b,0x92,0x90,0xf0,0x38,0xc6,0x60,0x2f,0x4a,0xfe,0x81,0xe9,0xe5,0x9c,0x85,0x75,
|
||||
0x78,0x4a,0xe7,0x12,0xee,0x68,0x4d,0xe8,0x12,0x05,0x8b,0x96,0x52,0x54,0x6d,0x4d,
|
||||
0xa1,0x8d,0xfe,0x14,0x5b,0xb6,0x99,0x26,0xfa,0x40,0x10,0x25,0xbf,0x98,0xf2,0xc5,
|
||||
0x4b,0x71,0x16,0xf8,0x88,0xf5,0x26,0xf6,0x8c,0xc5,0x47,0x1d,0x7b,0x48,0x68,0xa1,
|
||||
0x11,0xea,0x05,0x23,0x4e,0x22,0xa5,0xb9,0x3a,0xba,0x7b,0x29,0xf4,0x4c,0x28,0x68,
|
||||
0xae,0x0f,0xb8,0xdd,0x96,0x9b,0x41,0x7b,0x30,0x0f,0xdb,0xb2,0x14,0x1d,0x41,0xc4,
|
||||
0x43,0x56,0x51,0xb6,0x2c,0x39,0x0f,0x92,0x25,0xaf,0x4d,0x78,0xd3,0x3e,0x0c,0xc0,
|
||||
0xf4,0xab,0xaa,0x81,0x15,0xc2,0xda,0x01,0xb4,0x03,0x2d,0x40,0xab,0xfd,0x73,0xbf,
|
||||
0xfd,0x79,0x57,0x40,0xd3,0x06,0x52,0x8a,0xc0,0x76,0xcd,0xd5,0x85,0x40,0x9d,0xfd,
|
||||
0x73,0x3e,0x56,0x69,0xcf,0x5a,0xbb,0x81,0x9d,0x36,0x81,0x5a,0x46,0x1c,0xaf,0xda,
|
||||
0x8d,0xec,0xb0,0xff,0x17,0x1e,0x39,0xe2,0x4d,0xb5,0xcb,0x9b,0x5f,0x55,0x37,0x00,
|
||||
0x4f,0x25,0x7b,0xde,0xa6,0xc6,0x9d,0x5c,0x7c,0xda,0x49,0x49,0x64,0x84,0x90,0x88,
|
||||
0x77,0xb7,0x8e,0x22,0xb0,0xec,0x70,0xb0,0xfc,0xf2,0x8f,0xf2,0xda,0x7f,0xdf,0x30,
|
||||
0x6e,0xa6,0x0d,0xd3,0xd0,0x59,0x71,0xe9,0x87,0x0f,0x54,0x29,0x0c,0xb6,0xa4,0xdc,
|
||||
0x54,0x4d,0x0f,0xb6,0xa2,0xe4,0x17,0xa3,0xb8,0x5c,0x2c,0xbb,0xfc,0x63,0xbc,0xf9,
|
||||
0xdb,0x5f,0x8d,0xdf,0x2e,0x5d,0x67,0xf9,0xfb,0x3f,0x78,0xc8,0xe7,0x56,0xfb,0x12,
|
||||
0x0b,0xd3,0xec,0xec,0xe9,0xa5,0x30,0xc7,0x3d,0x91,0x47,0xfe,0x4d,0x40,0xd3,0xbe,
|
||||
0x39,0x0d,0xca,0x49,0x3a,0x88,0xe4,0x2e,0xa0,0x00,0xab,0xfe,0x52,0x99,0xad,0xa4,
|
||||
0x2a,0x80,0x95,0x40,0x95,0xad,0xa8,0x8a,0xfd,0xaa,0x5a,0x08,0xec,0xc3,0xb2,0x8a,
|
||||
0xef,0x04,0xb6,0xdb,0xc7,0xb6,0x80,0xa6,0x75,0x4c,0x0b,0x81,0x17,0xd6,0xd6,0x4a,
|
||||
0xf1,0x78,0xdc,0x03,0x54,0x03,0xc7,0x03,0x47,0x03,0xcb,0x6c,0xc2,0xe6,0x62,0x6d,
|
||||
0x92,0x6f,0xc5,0x0a,0x20,0x78,0x18,0x2b,0x12,0x28,0x10,0xd0,0xb4,0xc1,0x54,0x10,
|
||||
0xba,0x80,0xa6,0x3d,0xed,0x57,0xd5,0x46,0x20,0xa9,0xd4,0x0e,0xaf,0xbe,0xbb,0x9d,
|
||||
0x70,0x34,0x86,0x2b,0x09,0x87,0x0e,0xbd,0x6b,0x2f,0x54,0x2f,0x81,0x11,0xfb,0xb7,
|
||||
0xea,0xea,0x35,0xec,0x5e,0xbd,0x96,0xf6,0x57,0x8f,0x6c,0x4b,0x99,0x77,0xd6,0x05,
|
||||
0x94,0x2f,0xb5,0xb3,0x71,0x18,0x3a,0x7a,0xd7,0xbe,0x94,0x23,0x70,0xbc,0x73,0x0f,
|
||||
0xae,0xea,0xc5,0x20,0xc9,0x2c,0x38,0x79,0x1d,0x7b,0x5f,0x7e,0x81,0xce,0xb7,0x5e,
|
||||
0x3b,0xe2,0x39,0xf3,0xdf,0xfb,0x01,0xe6,0x2c,0xac,0x3b,0x68,0xb6,0xa2,0xa3,0x77,
|
||||
0x25,0x1e,0xef,0xbc,0x6b,0x6f,0xcb,0x44,0x93,0xdb,0xdd,0x33,0x4d,0x32,0x65,0x8e,
|
||||
0xd0,0xe2,0x43,0x68,0x67,0x9c,0xed,0x2a,0xbb,0x76,0x75,0xa5,0xad,0xe8,0xe6,0xdb,
|
||||
0x8a,0xef,0x7c,0x60,0x89,0x5f,0x55,0x8b,0xec,0xf3,0x9b,0x80,0xb7,0x81,0xd7,0xb0,
|
||||
0xf6,0xaf,0xfb,0xc7,0x53,0x6a,0x47,0x94,0xd0,0x78,0x3c,0x7e,0x39,0xf0,0x2d,0xfb,
|
||||
0x01,0x5f,0x01,0xde,0x04,0xfe,0x02,0xec,0x0c,0x68,0x5a,0xba,0x04,0x48,0xff,0x12,
|
||||
0xb8,0x39,0x99,0x13,0x1a,0xf7,0xb4,0xb2,0xaf,0xad,0x33,0xa9,0x75,0xb0,0x19,0x1b,
|
||||
0x24,0x1e,0x6c,0xc1,0x51,0x5c,0x79,0x40,0x2f,0xcb,0x0a,0x6b,0xae,0xba,0x9a,0xe7,
|
||||
0x07,0xfa,0x09,0x6e,0x79,0x6b,0xec,0xf5,0xe1,0x09,0xeb,0x38,0xee,0x43,0x1f,0x19,
|
||||
0x4e,0x1c,0x10,0xef,0x6e,0x49,0x29,0x0b,0xf4,0x81,0xf6,0x85,0x89,0x77,0xb7,0xe2,
|
||||
0x28,0xae,0x40,0x56,0x1c,0x9c,0x78,0xf5,0xe7,0x79,0xee,0x17,0x3f,0xa1,0x77,0xfb,
|
||||
0x96,0x31,0xdb,0x55,0xbe,0xf6,0x34,0x56,0x5e,0x72,0xf9,0x21,0x5a,0x3a,0xde,0xb5,
|
||||
0x3f,0xe1,0xf5,0x2f,0xc0,0xdb,0xdb,0xb5,0x89,0x3c,0xee,0x56,0x5b,0x56,0x53,0x06,
|
||||
0x01,0x4d,0x33,0x80,0xbd,0xf6,0xf1,0xdc,0x18,0xe4,0x9e,0x6f,0xaf,0xdb,0x56,0x00,
|
||||
0x5f,0x02,0x96,0xda,0x0a,0xf1,0xa2,0x23,0xcf,0xfd,0xc6,0x9f,0x26,0x9b,0x01,0x4d,
|
||||
0x8b,0x91,0x66,0xf0,0xab,0xaa,0xd7,0x9e,0x25,0x14,0x01,0x1b,0xed,0x69,0x4e,0xc2,
|
||||
0xf8,0xe1,0xbf,0x7d,0x88,0x8b,0x4e,0x3f,0x29,0xa9,0x7b,0x4a,0xee,0x3c,0xbc,0x47,
|
||||
0x6d,0x38,0x24,0x2e,0x38,0x1e,0x8d,0xd0,0xf4,0x8f,0x27,0xd8,0x76,0xdf,0x1d,0xc4,
|
||||
0x42,0x03,0x80,0x89,0xdb,0x57,0xcc,0xe2,0x4b,0xae,0x60,0xe1,0xfa,0x0d,0xc8,0x43,
|
||||
0x69,0x7b,0x0c,0x83,0xd0,0xdb,0x4f,0x61,0x46,0x06,0x52,0xb2,0x4f,0x65,0x4f,0x3e,
|
||||
0x39,0x2b,0x4e,0x1d,0x6e,0x5f,0x3c,0x1c,0xa6,0xf1,0xc9,0xc7,0xd8,0x7e,0xff,0x9d,
|
||||
0x76,0x90,0x86,0x89,0xa7,0x78,0x0e,0x4b,0x2e,0xbd,0x82,0x05,0x6b,0xd7,0x23,0x1f,
|
||||
0xec,0xd1,0x66,0x18,0x84,0x36,0xff,0x33,0xe1,0xc4,0xef,0xd1,0x58,0x9c,0x13,0x3e,
|
||||
0xfa,0x35,0xe2,0x7a,0xd2,0x2b,0xab,0xdf,0x02,0x37,0xd8,0xeb,0xde,0x10,0x10,0x4a,
|
||||
0x57,0x19,0x0e,0x68,0x5a,0x68,0xc2,0x04,0x9e,0xe5,0x87,0x97,0x46,0xac,0x33,0x8a,
|
||||
0xec,0x75,0x45,0xe5,0x08,0x43,0x58,0xa9,0x7d,0x14,0x8e,0x38,0xf2,0x6d,0x63,0x43,
|
||||
0x1c,0x18,0x18,0x71,0x38,0x81,0x13,0x93,0xb9,0xff,0x9a,0xe5,0xb5,0xfc,0xee,0x3b,
|
||||
0x9f,0x4f,0x3a,0x91,0xbb,0xb3,0x6a,0x29,0xae,0xca,0x45,0x87,0xb1,0x75,0xc5,0x19,
|
||||
0xe8,0x6c,0x07,0x49,0x26,0xaf,0xb4,0xec,0x10,0x77,0xc9,0x68,0xf3,0x36,0x62,0xfb,
|
||||
0xb6,0x4c,0x49,0xff,0x85,0x07,0x42,0x44,0x07,0xc3,0xe4,0x15,0x15,0x1e,0x4a,0xa4,
|
||||
0x49,0xc0,0x55,0xbd,0x1c,0x67,0x45,0xed,0xa1,0xed,0xea,0x68,0x47,0x92,0x65,0x72,
|
||||
0xc7,0x68,0xd7,0x70,0xfb,0xf6,0x6d,0x25,0xd6,0x9c,0xb8,0x6b,0xf2,0x96,0x5d,0x7b,
|
||||
0xb8,0xe4,0xba,0x1b,0x92,0x15,0xd2,0x28,0xf0,0xb8,0x3d,0x78,0x7b,0xed,0x63,0xe8,
|
||||
0xf7,0x18,0x56,0x76,0x8e,0x1e,0xac,0x44,0x77,0x3d,0xb6,0xad,0x66,0xc8,0x00,0x35,
|
||||
0x64,0x7c,0x6a,0xb6,0x7f,0x8f,0x4c,0x87,0x6d,0x26,0x25,0x8c,0x58,0x53,0x44,0x52,
|
||||
0x07,0x96,0x45,0xba,0x7c,0x84,0x01,0xcc,0x6f,0x4f,0x27,0x7c,0x1c,0xd8,0x42,0x0a,
|
||||
0xda,0x53,0x8f,0xfd,0x23,0x8e,0xcd,0x76,0xc7,0x0f,0xbd,0x8c,0x3e,0x7b,0xcd,0x10,
|
||||
0x1f,0xe3,0x3e,0x4e,0xe0,0xad,0x64,0xd6,0xc2,0x4f,0xbd,0xde,0xc8,0xf6,0x3d,0xcd,
|
||||
0x2c,0xf6,0x27,0x97,0x1d,0x23,0xd6,0xdc,0x88,0x92,0x57,0x8c,0x52,0x70,0xa8,0xc3,
|
||||
0x83,0xec,0x70,0x90,0x3f,0x77,0xec,0x58,0x63,0xbd,0xb7,0x83,0xd8,0xbe,0xc6,0x29,
|
||||
0xe9,0xd7,0xed,0xaf,0xbd,0xcd,0xb6,0xe7,0x36,0x02,0x26,0xde,0x12,0x1f,0xab,0x2e,
|
||||
0x3a,0x9b,0xdc,0x82,0xbc,0x29,0xb9,0x76,0x74,0xdf,0xbb,0xc8,0x79,0x45,0x56,0x25,
|
||||
0x86,0x91,0xed,0x2a,0x3f,0x72,0x0c,0xb5,0xde,0xd3,0x4e,0x6c,0x7f,0xe2,0x75,0x8f,
|
||||
0x24,0x09,0x36,0xbe,0xdd,0x34,0x11,0x0d,0xf3,0xc7,0x80,0xa6,0x5d,0x75,0x04,0x99,
|
||||
0xcb,0xb5,0x07,0xfa,0x7c,0x7b,0xd0,0x2f,0xb6,0x0d,0x4d,0x65,0xb6,0x8d,0xe7,0x1c,
|
||||
0xdb,0xe6,0x53,0x8e,0x65,0x8c,0x8d,0xf9,0x55,0x35,0x04,0xec,0x01,0x02,0x23,0x8c,
|
||||
0x50,0xbb,0x81,0xf6,0x80,0xa6,0xcd,0x6a,0xc8,0x98,0x34,0x43,0x44,0x75,0xda,0x8b,
|
||||
0xf6,0xa5,0xb6,0x11,0x6c,0xe8,0xa7,0x87,0x03,0xa6,0xf7,0x1d,0xf6,0xb1,0x0b,0xd0,
|
||||
0xec,0x91,0x71,0x20,0xa0,0x69,0xe1,0x29,0x7a,0x86,0x73,0x6d,0x43,0x5b,0xc2,0x6d,
|
||||
0xfe,0xf0,0x39,0x6b,0xf9,0x76,0xfd,0x07,0x93,0x76,0xa5,0x97,0x14,0x27,0x9e,0xc5,
|
||||
0x27,0x1d,0x31,0xbd,0xec,0x28,0xe1,0xee,0xef,0x26,0xdc,0xf4,0x32,0xe8,0x93,0x9f,
|
||||
0xe5,0xf5,0x75,0xf7,0xf0,0xc2,0xed,0xf7,0x8f,0x6a,0x65,0xf9,0xb2,0x85,0xac,0x3c,
|
||||
0x73,0xdd,0xd4,0x09,0x8d,0xe2,0xc4,0xb3,0xf8,0xe4,0x31,0xd3,0xcb,0x1e,0xae,0x7d,
|
||||
0x91,0xa6,0x97,0x0e,0x71,0x39,0x3d,0x12,0x22,0xd1,0x18,0x97,0x7c,0xf5,0x3f,0xd9,
|
||||
0xb5,0x3f,0x29,0x03,0xad,0x0e,0xd4,0x05,0x34,0x6d,0xe7,0x14,0xc9,0x8c,0xc3,0xd6,
|
||||
0xde,0xf9,0x36,0xa9,0xfd,0x23,0x14,0x4d,0x8d,0x4d,0xfa,0x3c,0x2c,0x6b,0xf2,0xbb,
|
||||
0xf6,0xd1,0x08,0x6c,0x09,0x68,0x5a,0x67,0xda,0x11,0xd8,0x76,0xca,0xc8,0x07,0x8e,
|
||||
0xc3,0xb2,0x5a,0x1f,0x03,0x2c,0xb7,0x47,0xb9,0x77,0x0f,0x3a,0x1a,0x81,0xe0,0x4c,
|
||||
0x6e,0x84,0xfb,0x55,0xf5,0x2e,0xe0,0xb2,0x44,0xbf,0x6f,0x98,0x26,0x7f,0xfb,0xaf,
|
||||
0x6f,0x51,0x5b,0x53,0x91,0xfc,0xcd,0x64,0x19,0xb7,0xba,0x12,0x47,0x69,0xd5,0x11,
|
||||
0xba,0xd9,0x24,0xde,0xb1,0x97,0x88,0xf6,0xa6,0xe5,0x28,0x31,0x05,0x68,0xdb,0xd3,
|
||||
0xcc,0xeb,0xf7,0x3f,0x3e,0xea,0xb3,0xfc,0x8a,0x32,0xd6,0x5e,0x72,0xde,0xd4,0x26,
|
||||
0x8e,0x97,0x15,0xdc,0xfe,0x63,0xac,0x5c,0x60,0x87,0x6b,0x9f,0x69,0x12,0xeb,0xd8,
|
||||
0x43,0x54,0x7b,0x2b,0xe9,0xe0,0x8e,0x8d,0x6f,0x37,0xf1,0xb1,0xef,0xfe,0x1a,0x25,
|
||||
0xb9,0xa8,0xac,0x9b,0x02,0x9a,0x76,0xcd,0x0c,0x2f,0xf3,0x9c,0xc0,0x02,0x5b,0x21,
|
||||
0x0d,0x29,0xa7,0x15,0x36,0x0f,0xb6,0xd8,0x33,0xc5,0x4d,0x58,0x21,0xae,0xcd,0x01,
|
||||
0x4d,0x8b,0xa6,0x0c,0x81,0xfd,0xaa,0x5a,0x60,0x3f,0xf0,0x5a,0x60,0x9d,0x3d,0x42,
|
||||
0x39,0xb0,0xcc,0xe0,0xaf,0xda,0xd3,0xd6,0xc6,0x80,0xa6,0xa5,0x44,0x05,0x2f,0xdb,
|
||||
0x2b,0xe7,0x6d,0x7b,0x7a,0x94,0x10,0x2e,0x5c,0x7f,0x1c,0x3f,0xf8,0xdc,0xc7,0x92,
|
||||
0xca,0x50,0x39,0x4a,0xce,0xf3,0x8a,0x87,0x8b,0x7f,0x0d,0x65,0xed,0x30,0xe3,0x31,
|
||||
0xf4,0xfe,0x2e,0x62,0x2d,0x3b,0x31,0x06,0x3a,0xa7,0x74,0x1c,0x8d,0x84,0xc2,0x3c,
|
||||
0xf3,0xfb,0xbb,0x31,0x46,0x18,0x7e,0xfc,0x6b,0x56,0xb2,0x64,0xcd,0xca,0x69,0xe8,
|
||||
0x51,0x13,0x39,0xaf,0x64,0xec,0xf6,0xf5,0x75,0x11,0x6b,0xdd,0x81,0x31,0xd0,0x9d,
|
||||
0xf4,0x55,0x0d,0xc3,0xe0,0xda,0x1b,0x6e,0xe1,0xc9,0x57,0xdf,0x49,0xe6,0xb4,0x6e,
|
||||
0x60,0x49,0x40,0xd3,0xda,0x52,0x44,0xd6,0x5c,0xf6,0xac,0x73,0x85,0xad,0xd0,0x4e,
|
||||
0xb4,0x6d,0x39,0x1d,0x58,0x3b,0x3a,0xcf,0x03,0x9b,0x02,0x9a,0xb6,0x77,0xc6,0x08,
|
||||
0x6c,0x13,0xf6,0x64,0xe0,0x54,0xe0,0x2c,0x7b,0xf4,0x69,0x02,0x5e,0xb0,0x1f,0x68,
|
||||
0x7b,0xaa,0x47,0x7f,0xf8,0x55,0xf5,0x4c,0xe0,0x51,0x12,0xcc,0x89,0xad,0x1b,0x26,
|
||||
0x37,0x7d,0xe3,0x53,0x6c,0x58,0x7d,0xf4,0x24,0x87,0x4a,0xe9,0x80,0x80,0xeb,0xb1,
|
||||
0x49,0x87,0x2c,0x1e,0x09,0x9d,0xfb,0x5a,0xd9,0xf2,0xec,0x2b,0x84,0x7b,0x7a,0x29,
|
||||
0x5f,0xbe,0x88,0x25,0x27,0x1e,0x87,0x63,0x5a,0x8b,0x91,0xdb,0xe5,0x45,0xa7,0xa8,
|
||||
0x7d,0xaf,0x6f,0xd9,0xce,0x07,0xbf,0xf9,0x5f,0xb8,0x9d,0x49,0x19,0xdf,0x3e,0x13,
|
||||
0xd0,0xb4,0xdf,0xa5,0xb8,0xec,0xb9,0xb1,0x0c,0xb1,0x6b,0x6c,0x85,0xb7,0xd2,0x9e,
|
||||
0x86,0xbf,0x8c,0x15,0x02,0xfb,0x5c,0x40,0xd3,0xb6,0x4f,0x19,0x81,0xe7,0xfb,0xfd,
|
||||
0xb2,0x69,0x9a,0xab,0x81,0xf7,0xd8,0x84,0x9d,0x0b,0x3c,0x6b,0xdf,0xec,0x9f,0xc0,
|
||||
0x7e,0x7b,0x7f,0x2b,0xad,0xe0,0x57,0xd5,0xeb,0x81,0xef,0x27,0xfa,0xfd,0xc2,0xdc,
|
||||
0x1c,0xee,0xbe,0xe1,0x3a,0x2a,0xcb,0x4a,0xd2,0xaa,0x9d,0xa6,0x69,0x26,0x91,0x98,
|
||||
0x3e,0x35,0x10,0x8e,0x46,0xf9,0xe4,0xbf,0xff,0x8a,0xb7,0x76,0xec,0x49,0xe6,0xb4,
|
||||
0xc7,0x81,0xf7,0xcc,0xb6,0x5f,0xf2,0x04,0xa7,0xe0,0x39,0xc0,0x49,0xc0,0x06,0xfb,
|
||||
0xa8,0xc0,0xf2,0x1e,0x7c,0x0c,0x78,0x7c,0x3c,0x7f,0x8b,0xf1,0xf6,0x81,0x0b,0xb0,
|
||||
0x9c,0x20,0x9e,0x06,0xfe,0x99,0xec,0xe8,0x90,0xe2,0x1d,0xf7,0x47,0xe0,0xc3,0x89,
|
||||
0x9e,0xb3,0x66,0xd9,0x02,0x7e,0xf9,0xf5,0xcf,0x90,0xef,0xcd,0x41,0x60,0xfa,0xf0,
|
||||
0xc7,0x87,0xfe,0xc9,0x8f,0xff,0x90,0x54,0x20,0x59,0x0b,0xb0,0x32,0xa0,0x69,0xad,
|
||||
0x19,0x22,0x9b,0xf9,0xc0,0x7a,0x2c,0x6b,0xf8,0x73,0x01,0x4d,0xbb,0x67,0xc6,0x8c,
|
||||
0x58,0x69,0xd6,0x51,0x2e,0xe0,0x6f,0xc0,0xd9,0x89,0xaf,0x87,0x8f,0xe7,0x3b,0x9f,
|
||||
0xbe,0x9c,0x1c,0x8f,0x3b,0xa5,0xda,0x12,0x8f,0xc5,0x90,0x24,0x09,0x25,0x81,0x3a,
|
||||
0x4e,0x91,0xd0,0x20,0xee,0x14,0x1d,0x84,0x5e,0xdf,0xb2,0x83,0x8f,0x7f,0xf7,0xd7,
|
||||
0xc9,0x64,0xfd,0x88,0x00,0x67,0x04,0x34,0xed,0x85,0x6c,0x95,0x63,0x25,0x5b,0x1b,
|
||||
0x1e,0xec,0xe9,0xd1,0x7d,0x3e,0xdf,0x7d,0xf6,0x9a,0x3e,0xa1,0x62,0xb4,0x5b,0x77,
|
||||
0xef,0xa7,0xbd,0xab,0x9b,0x35,0x47,0x2d,0x4e,0xca,0x4f,0x7a,0x3a,0x21,0x49,0x12,
|
||||
0xff,0xba,0xff,0x31,0x5a,0x76,0xec,0xa6,0x6a,0x49,0xed,0x11,0xbf,0xdb,0xb1,0xaf,
|
||||
0x85,0x17,0xff,0xf8,0x00,0x25,0xf3,0x6b,0xc8,0x99,0x5c,0xaa,0xd6,0x29,0x87,0xb6,
|
||||
0xbf,0x8d,0xab,0x7f,0xf0,0x3f,0xc9,0x64,0x43,0xd1,0x81,0x2b,0x03,0x9a,0xf6,0x70,
|
||||
0x36,0xcf,0x58,0xe4,0x6c,0x6e,0xbc,0xed,0xa6,0x76,0x3e,0xf0,0x50,0xa2,0xe7,0x3c,
|
||||
0xf0,0xcc,0xab,0x7c,0xe5,0x67,0x0d,0xb4,0x76,0xa6,0x86,0xad,0xce,0xc4,0xa4,0x70,
|
||||
0x6e,0x19,0x5d,0xda,0x3e,0xda,0xf6,0x1c,0x3e,0x48,0xc0,0xd0,0x75,0x9a,0x5e,0x7c,
|
||||
0x1d,0xd9,0xe1,0xc0,0x9b,0x9f,0x9b,0x52,0xef,0x61,0x4f,0x4b,0x3b,0x9f,0xfd,0xd1,
|
||||
0x4d,0x74,0xf6,0x26,0xec,0x42,0x6a,0x00,0x5f,0x08,0x68,0xda,0x9f,0xb2,0x7d,0xc9,
|
||||
0xa1,0x64,0x7b,0x07,0x04,0x7b,0x7a,0xe2,0x3e,0x9f,0xef,0x6e,0x2c,0xb7,0xcc,0xd5,
|
||||
0x89,0x9c,0xb3,0xbb,0xb5,0x93,0x27,0x5f,0xde,0xc4,0x62,0x7f,0x25,0x55,0x73,0x4a,
|
||||
0x67,0xbd,0x0d,0x05,0xa5,0x45,0xec,0xdb,0xb2,0x83,0xd6,0xa6,0x5d,0x14,0x54,0x94,
|
||||
0x91,0x5b,0x38,0x3a,0x4f,0x75,0x3c,0x1a,0xe3,0xad,0xa7,0x5e,0xa2,0x6b,0xd7,0x1e,
|
||||
0x16,0xae,0x5f,0x4d,0x59,0x4d,0x65,0xca,0xf4,0xff,0x96,0x9d,0xbb,0xf9,0xec,0x7f,
|
||||
0xfe,0x96,0xdd,0x6d,0x5d,0xc9,0x68,0xde,0x94,0xb7,0x38,0x0b,0x02,0xcf,0x2c,0x89,
|
||||
0x0d,0x9f,0xcf,0xf7,0x88,0x6d,0x10,0x39,0x3b,0x91,0x7e,0xe9,0x0b,0x85,0x79,0xf0,
|
||||
0x99,0x8d,0x44,0x22,0x61,0x96,0xcc,0xaf,0x21,0x27,0xc9,0x64,0xf0,0x53,0x09,0x87,
|
||||
0xd3,0x49,0x71,0x4d,0x05,0xcd,0x5b,0x77,0xb2,0xf7,0xed,0x26,0x82,0xed,0x9d,0xc4,
|
||||
0x62,0x71,0x06,0x7a,0xfa,0x68,0xde,0x1e,0x60,0xf3,0xe3,0xcf,0xd1,0xdb,0xd2,0x4e,
|
||||
0xf5,0xca,0x65,0x2c,0x3e,0x61,0x65,0x4a,0x58,0xa6,0x0d,0xc3,0xe4,0x91,0x17,0x5e,
|
||||
0xe5,0xdf,0x7e,0xf4,0x3b,0x7a,0x06,0x12,0x8e,0x3e,0xed,0x07,0x2e,0x0d,0x68,0xda,
|
||||
0x5d,0x42,0x6a,0xed,0x25,0x94,0xe8,0x82,0xd1,0xf0,0xab,0xea,0xf1,0xc0,0x9f,0x80,
|
||||
0xc5,0x89,0x9e,0x93,0xef,0xf5,0xf0,0xad,0x4f,0x7e,0x80,0xd3,0x4f,0x38,0x86,0xbc,
|
||||
0x1c,0x0f,0xb3,0xb5,0x97,0x31,0xd8,0x3f,0x40,0xd3,0x2b,0x6f,0xd2,0xda,0xb8,0x13,
|
||||
0x3d,0x1a,0xb5,0x5f,0xaf,0x49,0xde,0x9c,0x52,0x6a,0xd7,0x1c,0x43,0x65,0xad,0x9a,
|
||||
0x12,0x7d,0xbc,0xaf,0xad,0x93,0x9b,0xee,0x7a,0x98,0xfb,0x9f,0xd9,0x98,0xcc,0x60,
|
||||
0xd2,0x08,0x5c,0x12,0xd0,0xb4,0x77,0x84,0x94,0x0a,0x02,0x8f,0x47,0xe2,0x5c,0xe0,
|
||||
0x07,0xc0,0x17,0x12,0xb5,0x13,0x98,0xa6,0x89,0x5a,0x5e,0x42,0xfd,0xfb,0xce,0xe2,
|
||||
0x94,0xe3,0x8f,0xa2,0xac,0xa8,0x70,0x42,0x39,0x94,0x27,0xff,0x46,0x25,0xa2,0x83,
|
||||
0x61,0x06,0xfb,0xfa,0xd1,0xe3,0x3a,0x9e,0x5c,0x2f,0x39,0x79,0xb9,0x48,0xf2,0xec,
|
||||
0xbe,0x6a,0x49,0x92,0x68,0xef,0xee,0xe1,0xe1,0x67,0x5e,0xe1,0x57,0x77,0x3e,0x4c,
|
||||
0x34,0xb9,0x5c,0xcf,0xbf,0x03,0xbe,0x12,0xd0,0xb4,0x7e,0x21,0x9d,0x82,0xc0,0xc9,
|
||||
0x6a,0xe3,0xff,0x01,0x4e,0x48,0xe6,0x3c,0x8f,0xcb,0xc9,0xa5,0x67,0x9c,0xc8,0xd9,
|
||||
0x27,0x1f,0xc7,0xb2,0x05,0xf3,0x70,0xbb,0x9c,0x59,0xdb,0x87,0xa6,0x69,0x12,0x68,
|
||||
0x6e,0xe5,0xb1,0x17,0x5e,0xe7,0xf7,0x7f,0xfb,0x27,0x03,0xe1,0xa4,0x5c,0x81,0x77,
|
||||
0x02,0x57,0x07,0x34,0xed,0x09,0x21,0x8d,0x82,0xc0,0x13,0x25,0xb1,0x84,0xe5,0xf0,
|
||||
0xf1,0x3d,0xac,0x28,0x94,0xa4,0x84,0xd7,0xeb,0x71,0xf3,0x89,0xf7,0x9e,0xca,0xaa,
|
||||
0xe5,0x75,0x2c,0x9a,0x57,0x49,0x61,0x7e,0x2e,0x0e,0x45,0x99,0x1d,0xed,0x3c,0x43,
|
||||
0x9a,0x36,0x1a,0x8b,0xd1,0xd2,0x11,0xe4,0xad,0xa6,0x9d,0x3c,0xf0,0xd4,0xcb,0x3c,
|
||||
0xf3,0xc6,0x56,0x5c,0x8e,0xa4,0xcc,0x2d,0x3d,0x58,0x01,0xf9,0x3f,0x0b,0x68,0x5a,
|
||||
0x44,0x48,0xa1,0x20,0xf0,0x54,0x10,0xd9,0x6d,0x13,0xf9,0xeb,0xc9,0xac,0x8f,0x87,
|
||||
0x60,0x98,0x26,0xbd,0xe1,0x18,0xe7,0x9f,0xb0,0x9c,0xe3,0x97,0x2d,0x64,0xe9,0x82,
|
||||
0x1a,0xe6,0x55,0xcc,0xa1,0x28,0x3f,0x0f,0x5f,0x7e,0xae,0x95,0xea,0x30,0xcd,0x48,
|
||||
0x2d,0x49,0x12,0x92,0x24,0xd1,0x1f,0x1a,0xa4,0x33,0xd8,0x4b,0xa0,0xb9,0x95,0xb7,
|
||||
0x9a,0x76,0xf1,0xc2,0x1b,0x5b,0x78,0x7a,0xf3,0x0e,0x8a,0xbd,0x49,0x3b,0xbc,0xf4,
|
||||
0xd9,0x33,0x9e,0x9f,0xa7,0x4a,0x00,0x8c,0x20,0x70,0xe6,0x11,0x59,0xc1,0xda,0x3b,
|
||||
0xfe,0x12,0x96,0xef,0xea,0x84,0xfa,0xd0,0x34,0x2d,0x52,0xfb,0xf2,0x3c,0xd4,0xcc,
|
||||
0x29,0xe1,0xe8,0x45,0x7e,0x96,0xcc,0xaf,0xc2,0x57,0x90,0x4f,0x45,0x69,0x11,0x5e,
|
||||
0x8f,0x87,0xfc,0xdc,0x1c,0x7c,0xf9,0xb9,0x76,0x48,0x9d,0xc4,0x4c,0x1b,0x8f,0xcd,
|
||||
0xa1,0x07,0x05,0xfa,0x07,0xc3,0xf4,0xf4,0x0d,0x10,0x0a,0x47,0xe8,0xe8,0xee,0xa1,
|
||||
0xad,0xab,0x87,0xbd,0xad,0x1d,0xbc,0xf2,0xce,0x36,0x02,0xcd,0x6d,0xb4,0xf7,0x0c,
|
||||
0x20,0x4b,0x13,0x7e,0xc6,0xbd,0xc0,0x8d,0xc0,0x6f,0x33,0xbd,0x14,0x8a,0x20,0xf0,
|
||||
0x68,0x32,0x39,0xec,0x69,0x6d,0x1d,0x56,0xe0,0x75,0x08,0x3b,0x21,0xc0,0x4c,0x24,
|
||||
0xdd,0xf3,0xab,0xea,0x62,0xe0,0x13,0xc0,0x87,0x98,0x60,0x39,0xd3,0xc3,0x41,0x37,
|
||||
0x0c,0x42,0xd1,0x38,0xdd,0xe1,0x38,0x0b,0xe7,0xf8,0x58,0x58,0x59,0x46,0xd5,0x9c,
|
||||
0x22,0x2a,0x4a,0x8b,0x28,0xc8,0xf5,0xa2,0x28,0x0a,0x4e,0x87,0x03,0xa7,0x43,0xb1,
|
||||
0x0f,0x07,0x8a,0xa2,0xe0,0x50,0x64,0xe4,0xc3,0x18,0xac,0x4c,0x13,0xe2,0xba,0x8e,
|
||||
0x61,0x18,0xc4,0x75,0x03,0xdd,0x30,0xd0,0x75,0x83,0xb8,0xae,0x13,0x8f,0xeb,0xe8,
|
||||
0xba,0x4e,0x5c,0xd7,0x19,0x8c,0x44,0x69,0xeb,0xea,0x61,0x5f,0x7b,0x17,0x7b,0xda,
|
||||
0xba,0x68,0xdc,0xd7,0x8e,0x69,0x98,0x14,0x78,0x9c,0x38,0x15,0x79,0xaa,0xb6,0xa1,
|
||||
0x06,0x80,0x27,0x80,0x5b,0x81,0xbf,0xa7,0x63,0x50,0x8c,0x20,0xf0,0xe4,0xc8,0xb3,
|
||||
0x06,0xf8,0x3d,0x56,0x3c,0xf2,0xc1,0xe8,0xc5,0x8a,0xb9,0xfc,0x33,0x70,0xd7,0x78,
|
||||
0x89,0xc1,0xa6,0x48,0x2b,0x9f,0x08,0x5c,0x62,0x6b,0xe7,0x45,0x42,0xb4,0x0e,0x3b,
|
||||
0x45,0x7e,0x0a,0x2b,0xe5,0xeb,0xdf,0x67,0x2a,0x6b,0x85,0x20,0x70,0x6a,0x12,0xf8,
|
||||
0x11,0xac,0x30,0xc7,0xf1,0xd0,0x01,0xfc,0x04,0xf8,0xf5,0x54,0x67,0x43,0x38,0x02,
|
||||
0x99,0x6b,0x81,0xf3,0xb0,0x42,0x30,0x4f,0xc1,0x4a,0xbb,0x92,0x8d,0x30,0xb0,0x92,
|
||||
0x3a,0x3c,0x89,0x15,0xf2,0xf7,0xc2,0x74,0x0f,0xa6,0x82,0xc0,0xe9,0x43,0xe0,0xcf,
|
||||
0x70,0x84,0x7c,0xcf,0x4b,0x4e,0x3f,0x9f,0xd3,0x3f,0x7e,0x0d,0xdb,0x5f,0x7b,0x89,
|
||||
0xc7,0x7f,0xfd,0x7d,0x40,0xda,0x8a,0xe5,0xfc,0xfe,0xd2,0x0c,0x3f,0xa7,0x0c,0x1c,
|
||||
0x6b,0x6b,0xe8,0x13,0xb1,0xdc,0x35,0xab,0xed,0x29,0x7f,0x26,0x21,0x6c,0x0f,0x96,
|
||||
0x6f,0xd8,0xb3,0x9f,0x57,0x80,0x97,0xd2,0x28,0x7f,0xb8,0x20,0xf0,0x2c,0x90,0xf8,
|
||||
0x7a,0xac,0xed,0x9d,0x43,0x9c,0x2d,0xaa,0x8e,0x5e,0xcd,0xa5,0xdf,0xfe,0x31,0x00,
|
||||
0xbf,0x78,0xff,0x7a,0x64,0xa7,0x0b,0xac,0xb4,0xa2,0xdf,0x0c,0x68,0xda,0xcf,0x67,
|
||||
0xf9,0xb9,0x8b,0xb0,0xd2,0x0f,0xad,0xb0,0x97,0x00,0x8b,0xb1,0xf2,0x2a,0x55,0x61,
|
||||
0x65,0x68,0x48,0x65,0xb4,0x61,0x65,0x05,0x0d,0x60,0x55,0xe4,0xd8,0x0a,0xbc,0x03,
|
||||
0xec,0x0a,0x68,0x5a,0x8b,0xa0,0x94,0x20,0x70,0x52,0x58,0xf3,0x9e,0x0b,0x37,0xb4,
|
||||
0xbc,0xb3,0xe9,0x57,0x92,0x2c,0x1f,0x92,0xf3,0xc6,0xe9,0xcd,0x45,0x71,0x79,0x08,
|
||||
0x07,0x3b,0x29,0xa8,0xa8,0xc6,0x57,0x5e,0xcd,0xee,0x4d,0x2f,0x83,0x65,0xf1,0xfc,
|
||||
0x62,0xaa,0x19,0x4e,0xfc,0xaa,0xea,0x0e,0x06,0x83,0x4b,0x06,0xc3,0xe1,0xfb,0x24,
|
||||
0x58,0x20,0xcb,0x32,0xb2,0x2c,0x23,0x0d,0xfd,0x94,0x24,0xab,0x02,0xdc,0x90,0x11,
|
||||
0xc9,0xfe,0x7b,0xe8,0xf7,0x23,0xbd,0xd0,0x51,0x1b,0x54,0x23,0xb6,0xab,0x46,0x5a,
|
||||
0x9a,0x87,0x7e,0x37,0x4d,0x13,0xc3,0x30,0x30,0xec,0x9f,0xa6,0x69,0xea,0x1e,0xb7,
|
||||
0xfb,0x9b,0x3e,0x9f,0xef,0x66,0xd3,0x34,0xa3,0x62,0x6f,0x56,0x60,0xca,0xd0,0xd0,
|
||||
0x14,0xfc,0x22,0x20,0xf9,0x55,0xf5,0xa3,0x7e,0x55,0xdd,0xe1,0x57,0x55,0xf3,0xe0,
|
||||
0x43,0xad,0xa9,0x36,0xaf,0xbf,0xf7,0x9f,0xe6,0xad,0xdb,0x7a,0xcc,0xcf,0xfd,0xe6,
|
||||
0x8f,0xa6,0x5a,0x53,0x63,0xfa,0x55,0xf5,0x46,0xdb,0x49,0x23,0x65,0x20,0xcb,0xf2,
|
||||
0xc9,0x92,0x55,0xf4,0xcd,0x9c,0xc8,0x21,0x49,0x52,0x42,0xc7,0x04,0xaf,0x6f,0x28,
|
||||
0x8a,0xf2,0x1f,0x05,0x79,0x79,0x62,0xeb,0x31,0x85,0xe0,0xc8,0x80,0x36,0x7c,0xa6,
|
||||
0xa1,0x29,0xf8,0x64,0x7d,0x9d,0xef,0xff,0xfc,0xaa,0x7a,0x37,0xf0,0x35,0xe0,0x7a,
|
||||
0xac,0x84,0xf0,0x96,0x56,0x92,0x15,0x76,0xbc,0xf6,0x32,0xf3,0x96,0x1d,0xc3,0xc2,
|
||||
0x55,0x27,0x11,0xe9,0xd8,0x83,0x67,0x8e,0xfa,0x59,0x7b,0x2a,0xf8,0xc3,0x14,0x21,
|
||||
0xef,0xa9,0x86,0x61,0xfc,0x1d,0xbb,0x1c,0xaa,0x2c,0xcb,0xb8,0x9c,0x4e,0x1c,0x4e,
|
||||
0x27,0x0e,0x87,0x03,0x87,0xa2,0x1c,0xd0,0xc6,0xb6,0x03,0xc5,0x90,0x56,0x66,0x84,
|
||||
0x16,0x4e,0x84,0x5d,0x43,0x0e,0x23,0x86,0x61,0xa0,0xdb,0xdb,0x4a,0xb1,0x78,0x9c,
|
||||
0x58,0x34,0x4a,0x38,0x1c,0x3e,0x5c,0x29,0x13,0x49,0xd7,0xf5,0xef,0x0e,0x0c,0x0e,
|
||||
0xfa,0xb0,0xf6,0xc0,0x05,0xc4,0x14,0x7a,0xd2,0xda,0x77,0x3e,0x96,0xbf,0xec,0xb5,
|
||||
0xf5,0x75,0xbe,0xff,0x1a,0x31,0x15,0x5d,0x05,0xdc,0x87,0x95,0x7c,0xdb,0x12,0x5a,
|
||||
0xc3,0xa0,0x72,0xc5,0x71,0x98,0xa6,0x49,0xcb,0x96,0xe1,0xba,0x57,0x71,0xe0,0xbd,
|
||||
0x01,0x4d,0x7b,0x6c,0x56,0x47,0x51,0x87,0xe3,0x28,0xd3,0x34,0x5f,0xcc,0xcf,0xcb,
|
||||
0xcb,0xf3,0x78,0x3c,0x38,0x9d,0xce,0x43,0xc9,0x39,0x43,0x18,0x9a,0x3e,0x47,0x22,
|
||||
0x11,0xfa,0x07,0x06,0x08,0x85,0x42,0x63,0x3d,0xef,0xf7,0xe2,0xf1,0xf8,0x7f,0x08,
|
||||
0xfa,0x08,0x02,0x4f,0x96,0xc0,0x9f,0xb5,0xd7,0xb3,0x4f,0xd6,0xd7,0xf9,0xce,0x3a,
|
||||
0x68,0x3d,0x59,0x81,0xb5,0x75,0xb1,0x62,0xac,0x73,0x4b,0x17,0x2c,0x21,0x1a,0x0e,
|
||||
0xd1,0xdb,0xbc,0xbb,0x19,0x58,0x3e,0x5b,0x1e,0x40,0x15,0xe5,0xe5,0x1e,0xd3,0x34,
|
||||
0x37,0xb9,0xdd,0xee,0x25,0xa9,0x98,0x41,0x52,0xd7,0x75,0xfa,0xfb,0xfb,0x09,0xf6,
|
||||
0xf4,0x8c,0x74,0xf5,0x34,0x9c,0x4e,0xe7,0x45,0xb1,0x58,0xec,0x21,0x41,0xa1,0x59,
|
||||
0x9e,0xb9,0xa5,0xf9,0xf3,0x9f,0x6f,0xff,0x3c,0xa9,0xa1,0x29,0x38,0xaa,0xfa,0x60,
|
||||
0x40,0xd3,0xf6,0x03,0x67,0x60,0x59,0x4a,0x47,0x1b,0xb7,0xdc,0x1e,0xae,0xfc,0xaf,
|
||||
0xff,0xe5,0xea,0x9b,0xef,0x62,0xf1,0x86,0x73,0x2b,0x81,0x1f,0xcf,0x56,0x03,0xdc,
|
||||
0x6e,0xf7,0xf5,0x1e,0x8f,0x67,0x49,0xaa,0xa6,0x7f,0x55,0x14,0x85,0xc2,0xc2,0x42,
|
||||
0xaa,0xab,0xaa,0xc8,0xcb,0x1d,0xde,0xf9,0x92,0xe3,0xf1,0xf8,0xad,0x1e,0x8f,0xa7,
|
||||
0x54,0x50,0x48,0x10,0x78,0xa2,0xda,0x37,0x17,0xab,0x22,0x04,0x58,0x7b,0xaa,0x87,
|
||||
0x14,0xff,0xb1,0xb3,0xf4,0xbf,0x17,0xcb,0x33,0x6b,0x18,0xb1,0xc1,0x7e,0x4c,0xc3,
|
||||
0xc0,0x95,0xe3,0xe5,0x84,0x8b,0x3e,0x88,0xa9,0xc7,0x3f,0xed,0x57,0xd5,0x75,0x33,
|
||||
0xdd,0x06,0xdb,0x15,0xf3,0xba,0x74,0xe8,0x6f,0x45,0x51,0x28,0x2d,0x2d,0xa5,0xac,
|
||||
0xb4,0x74,0x68,0xaa,0x3d,0x27,0x1a,0x8d,0xfe,0x50,0x50,0x48,0x10,0x78,0xa2,0x58,
|
||||
0xc1,0xe8,0x9a,0xbf,0xeb,0xc7,0xfa,0x52,0x40,0xd3,0x9a,0x80,0xfa,0xd1,0xad,0x76,
|
||||
0xf0,0xfc,0xdd,0xb7,0x13,0x1e,0xe8,0xa7,0xbf,0xbb,0x13,0x3b,0xda,0xfd,0x36,0x3b,
|
||||
0x27,0xef,0x4c,0xe2,0x87,0x58,0xd5,0x2d,0xd2,0x06,0xb9,0xb9,0xb9,0x94,0xcf,0xb5,
|
||||
0x0a,0x9f,0x1b,0x86,0xf1,0x29,0x97,0xd3,0x59,0x27,0x68,0x24,0x08,0x3c,0x11,0xf4,
|
||||
0x33,0x7a,0x7b,0xf3,0xb0,0x55,0x0c,0x03,0x9a,0x76,0x37,0x70,0xc7,0xc8,0xcf,0x5e,
|
||||
0xfe,0xf3,0xef,0xf8,0xf1,0xe9,0x75,0xdc,0xf3,0xed,0x6b,0x86,0xea,0xd9,0xd6,0x02,
|
||||
0xbf,0x9b,0xa9,0xad,0x25,0xbf,0xaa,0x2e,0x62,0x9c,0xea,0x96,0xd4,0x45,0xe1,0x00,
|
||||
0x00,0x11,0x68,0x49,0x44,0x41,0x54,0xeb,0xa9,0x0a,0x8f,0xc7,0xc3,0x9c,0xb2,0x32,
|
||||
0x00,0x29,0xae,0xeb,0xdf,0x14,0x34,0x12,0x04,0x4e,0x1a,0xf5,0x75,0xbe,0x77,0x80,
|
||||
0xdf,0xd8,0x7f,0x6e,0x05,0xfe,0x77,0x9c,0x53,0xbe,0x8c,0x55,0x00,0x6b,0x18,0x8e,
|
||||
0x82,0x32,0x14,0xb7,0x95,0xe4,0xbc,0xb0,0x72,0x1e,0xee,0xbc,0x82,0xcb,0x81,0x7f,
|
||||
0x9f,0xa1,0x26,0x5c,0x45,0x1a,0x6f,0xe3,0x79,0xbd,0x5e,0x7c,0x85,0x85,0x98,0xa6,
|
||||
0x79,0xa9,0xc7,0xe3,0x29,0x12,0x54,0x9a,0x1d,0xa4,0xfd,0xa6,0x7c,0x43,0x53,0xd0,
|
||||
0x55,0x5f,0xe7,0x4b,0x28,0x48,0xc1,0xaf,0xaa,0x5f,0x00,0x7e,0x75,0xf0,0xe7,0xbe,
|
||||
0x2a,0x3f,0xd7,0x34,0xdc,0x8b,0x1e,0x8f,0xf1,0xd8,0x2d,0xbf,0xe4,0x8d,0xbf,0xde,
|
||||
0xf9,0xd5,0xe9,0x74,0xb7,0xb4,0xc3,0x20,0x1b,0x49,0x32,0xc3,0x47,0xaa,0xc1,0x34,
|
||||
0x4d,0x9a,0xf7,0xef,0x47,0xd7,0xf5,0x8f,0x1a,0x86,0xf1,0x47,0x41,0x27,0xa1,0x81,
|
||||
0x27,0xa2,0x89,0x93,0x89,0x30,0xfa,0x1f,0xac,0x9a,0xad,0xa3,0x10,0x0b,0x87,0x30,
|
||||
0x31,0x71,0x7a,0x72,0x58,0x77,0xe9,0xc7,0x31,0x0d,0xfd,0x67,0x7e,0x55,0xfd,0x89,
|
||||
0x1d,0x59,0x34,0x1d,0x58,0x94,0xee,0xe4,0x05,0xcb,0xa5,0xb3,0xb4,0xa4,0x04,0xd3,
|
||||
0x34,0x2f,0x14,0x54,0x12,0x04,0x9e,0x76,0x04,0x34,0x2d,0x0e,0x5c,0x7b,0xf0,0xe7,
|
||||
0x03,0x9d,0x6d,0x3c,0xff,0x97,0x3f,0x10,0x8b,0x84,0x89,0x86,0x43,0x43,0x13,0x93,
|
||||
0xeb,0x80,0x47,0xfd,0xaa,0x3a,0x1d,0x59,0xd0,0xcf,0x9e,0x81,0xe6,0x76,0x03,0xb7,
|
||||
0xd9,0x9a,0x7e,0xda,0xe0,0x76,0xbb,0xf1,0x7a,0xbd,0x6b,0x72,0x73,0x73,0x9d,0x82,
|
||||
0x4e,0x62,0x0a,0x3d,0xed,0xb0,0x8d,0x54,0x0f,0x03,0xe7,0x1e,0xd2,0x19,0xb2,0x6c,
|
||||
0x39,0x2b,0x0c,0x39,0x2c,0x98,0x26,0x48,0x52,0x2f,0xf0,0x5d,0xac,0x74,0x2f,0x83,
|
||||
0x93,0xb8,0xaf,0x02,0xac,0x0a,0x87,0xc3,0xd7,0x9a,0xa6,0x79,0x59,0x4e,0xce,0xb4,
|
||||
0x17,0x18,0xfb,0x44,0x40,0xd3,0xfe,0xe0,0x57,0xd5,0x52,0x40,0xc3,0x76,0xd1,0x9c,
|
||||
0x0e,0x44,0x22,0x11,0xda,0xda,0xdb,0xe7,0xe8,0xba,0x2e,0xf2,0x58,0x09,0x02,0xcf,
|
||||
0x08,0x89,0x97,0x00,0x9b,0x00,0xcf,0xe1,0xbe,0x53,0xec,0x5f,0xc4,0x69,0x57,0x7e,
|
||||
0x8e,0x70,0x5f,0x2f,0xcf,0xdc,0x7e,0x13,0xfd,0x6d,0xcd,0xcd,0xc0,0x2d,0xc0,0x1d,
|
||||
0x01,0x4d,0xdb,0x9a,0xe0,0x7d,0x5c,0x58,0x45,0x9c,0x2f,0xc0,0x34,0x3f,0x60,0x44,
|
||||
0x42,0x4b,0xfb,0x07,0x23,0xe4,0xe4,0xe5,0xe3,0x74,0x4e,0xbb,0xc2,0x3a,0x2f,0xa0,
|
||||
0x69,0x8f,0xd8,0xeb,0xed,0xed,0x4c,0x71,0xca,0x9f,0x83,0xd7,0xc2,0x91,0x48,0x64,
|
||||
0x5d,0x4b,0x6b,0xeb,0x0b,0x82,0x52,0x33,0x0b,0x47,0x36,0x36,0x3a,0xa0,0x69,0x8d,
|
||||
0x7e,0x55,0xfd,0x29,0x47,0xb0,0x38,0x1f,0x7d,0xd6,0x05,0x2c,0x5d,0x7b,0x1a,0x98,
|
||||
0x26,0x55,0x8b,0x97,0x71,0xcb,0x67,0x2e,0xad,0x34,0x0d,0xe3,0xbb,0xc0,0xf5,0x7e,
|
||||
0x55,0x0d,0x00,0x2f,0x62,0xc5,0xc1,0xee,0xc5,0x4a,0x83,0x6a,0x60,0x65,0xde,0x98,
|
||||
0x8b,0x15,0xdb,0x7b,0x0c,0x70,0x34,0x50,0x02,0x70,0x4a,0xfd,0x97,0x39,0xe1,0xbd,
|
||||
0x97,0xf0,0xf8,0x6d,0x37,0xf1,0xfa,0x7d,0xb7,0x27,0xfb,0xc8,0x3a,0x70,0x17,0x49,
|
||||
0xd4,0x33,0x3e,0x68,0x70,0x4e,0x26,0xdd,0x65,0x2b,0xe0,0x03,0x12,0x4e,0x29,0x29,
|
||||
0x49,0x12,0x1e,0x8f,0xa7,0x5a,0xd0,0x49,0x10,0x78,0x26,0xf1,0x7d,0x2c,0x2f,0xad,
|
||||
0xe3,0xc6,0xfa,0xe7,0xa6,0xbf,0xdf,0xc7,0xb2,0x75,0xa7,0x53,0x5c,0x51,0x4d,0x5e,
|
||||
0x51,0x09,0xae,0xbc,0x02,0x22,0xbd,0x41,0x00,0x65,0xed,0xc7,0xae,0xa9,0x2d,0xae,
|
||||
0xa8,0xae,0xdd,0xfe,0xea,0x8b,0x6c,0xf9,0xc7,0x43,0x23,0x55,0x11,0xb5,0x6b,0xcf,
|
||||
0x44,0x3d,0xfa,0x78,0x1a,0x5f,0xf8,0x07,0xcd,0x9b,0x5f,0x1b,0xfe,0x7c,0xd9,0xda,
|
||||
0xd3,0xf0,0x16,0x14,0xd2,0xaa,0xed,0x44,0x4e,0xde,0x6d,0xf2,0x07,0xc0,0xbd,0x49,
|
||||
0x12,0x78,0xa2,0xb8,0x17,0xd8,0x0c,0xdc,0x94,0xe4,0x79,0x15,0x82,0x4e,0x82,0xc0,
|
||||
0x33,0xa9,0x85,0xe3,0x7e,0x55,0xbd,0x0c,0xd8,0x08,0x1c,0xb2,0x8f,0xd9,0xb3,0x2f,
|
||||
0xc0,0x6f,0xae,0x38,0x9b,0xe5,0xe7,0x5d,0x46,0x47,0x60,0xfb,0x10,0x79,0x59,0xf1,
|
||||
0x9e,0xf7,0x73,0xda,0x47,0xaf,0x06,0x4c,0x8e,0x3e,0xe3,0x5c,0xee,0x35,0x0d,0x1a,
|
||||
0xff,0xf9,0x77,0x00,0x8e,0xff,0xc0,0xc7,0x38,0xf7,0xea,0xaf,0x80,0x24,0xb1,0xe6,
|
||||
0xa2,0x0f,0x72,0xfb,0x75,0x9f,0x66,0xdf,0xe6,0xd7,0x40,0x92,0x78,0xe4,0xa6,0x1b,
|
||||
0x58,0x7d,0xc1,0x65,0x16,0x81,0xe5,0xa4,0x6c,0x87,0xcd,0xc0,0x8f,0x80,0x25,0x33,
|
||||
0xd8,0x3d,0xbf,0xc5,0xda,0xa7,0x5e,0x95,0xc4,0x39,0x25,0x82,0x4e,0x33,0x8f,0x6c,
|
||||
0xaf,0x0f,0xbc,0x03,0xb8,0x14,0x18,0x73,0x2b,0x4a,0x72,0xb8,0x78,0xf7,0xf1,0x07,
|
||||
0x68,0x6b,0x7a,0x7b,0xf8,0xb3,0x9d,0xaf,0x3c,0x47,0x73,0x93,0x55,0x5f,0x2b,0x1a,
|
||||
0x0a,0x11,0x19,0x38,0x50,0xd3,0x76,0xa0,0xbb,0x8b,0x68,0x24,0x8c,0x24,0xc9,0x84,
|
||||
0xfb,0x7a,0x19,0x08,0x1e,0x28,0x99,0xa9,0x6d,0x7c,0x9e,0xbb,0xbf,0xf3,0x79,0xf6,
|
||||
0x0e,0x69,0xe5,0xc4,0x71,0xeb,0x4c,0x24,0xe3,0x3b,0xa8,0x5f,0x4c,0xe0,0x67,0x49,
|
||||
0x9e,0x96,0x23,0xe8,0x24,0x34,0xf0,0x6c,0x90,0xf8,0x1f,0x7e,0x55,0xfd,0x28,0x56,
|
||||
0x0a,0xda,0x71,0xf7,0x7d,0x43,0x5d,0xed,0xfc,0xef,0xe7,0x3e,0x8c,0x3b,0xaf,0x80,
|
||||
0x78,0x78,0x10,0x3d,0x76,0x80,0x5b,0x8d,0x4f,0x3d,0xcc,0xae,0x8d,0xcf,0x51,0x54,
|
||||
0xed,0xa7,0x7d,0xe7,0x56,0xf4,0x68,0x64,0xac,0x05,0x63,0xb2,0x8f,0x78,0xcf,0x2c,
|
||||
0x75,0xcd,0x03,0xc0,0x60,0x12,0xc4,0x74,0x08,0x3a,0x09,0x0d,0x3c,0x5b,0x24,0xfe,
|
||||
0x8b,0xad,0x89,0x13,0xdb,0x26,0x32,0x4d,0x22,0x7d,0x3d,0xa3,0xc8,0x3b,0x84,0x48,
|
||||
0x7f,0x2f,0x2d,0x8d,0x6f,0x8d,0x4d,0x5e,0x48,0x36,0x48,0xbf,0x93,0x31,0xc2,0x21,
|
||||
0x67,0xa8,0x4f,0x22,0xc0,0x33,0x42,0x3a,0x04,0x81,0xd3,0x85,0xc4,0xf7,0x63,0x95,
|
||||
0x4a,0xd9,0x3b,0x9d,0xf7,0x49,0x52,0xff,0x6e,0x9f,0xcc,0xde,0xf3,0x14,0xe0,0x5f,
|
||||
0x42,0x32,0x04,0x81,0xd3,0x89,0xc4,0xaf,0x60,0x6d,0xfd,0xdc,0x09,0xd3,0x54,0xa7,
|
||||
0x3b,0x39,0x0d,0xbc,0x6b,0x96,0xbb,0xe4,0x5d,0x21,0x15,0x82,0xc0,0xe9,0x46,0xe2,
|
||||
0xee,0x80,0xa6,0x7d,0x08,0x38,0x07,0x78,0x6d,0x6a,0xb9,0x2b,0x25,0xbb,0x85,0xb4,
|
||||
0x7f,0x8a,0x94,0xfe,0x44,0xdf,0xf3,0x2e,0x21,0x11,0x82,0xc0,0xe9,0x4a,0xe4,0x27,
|
||||
0xb0,0x0a,0x7b,0x9f,0x03,0xfc,0x0d,0xcb,0x99,0x62,0xf2,0x1d,0x9e,0xdc,0x16,0x52,
|
||||
0xcf,0x2c,0x13,0x58,0x24,0x6a,0x4f,0x71,0x08,0xcb,0xe1,0x91,0x49,0x6c,0x60,0x25,
|
||||
0xc6,0x7b,0xdc,0xaf,0xaa,0x25,0xc0,0x05,0x58,0xf5,0x8e,0xd6,0x01,0x95,0x58,0x56,
|
||||
0xeb,0x23,0xa9,0x54,0xd3,0x26,0x7e,0x1f,0xf0,0x36,0xf0,0x7a,0x4e,0x4e,0x4e,0x17,
|
||||
0x56,0x35,0x89,0x44,0x10,0x9f,0xe5,0x2e,0x18,0x10,0x52,0x20,0x08,0x9c,0x29,0x64,
|
||||
0xee,0xc4,0x8a,0xee,0xb9,0x0d,0xc0,0xaf,0xaa,0x3e,0x60,0x3e,0x96,0x07,0x52,0x09,
|
||||
0xd6,0x76,0x8b,0x03,0x6b,0x4f,0xb9,0x1f,0x2b,0x41,0x7b,0x2b,0xb0,0x2f,0xa0,0x69,
|
||||
0x1d,0x43,0xd7,0xf1,0xab,0xea,0xf2,0x24,0x08,0x2c,0x20,0x20,0x08,0x3c,0x4d,0x84,
|
||||
0x0e,0x62,0x05,0x44,0x6c,0x12,0xbd,0x21,0x20,0xd6,0xc0,0x02,0x02,0x02,0x82,0xc0,
|
||||
0x02,0x02,0x82,0xc0,0x02,0x02,0x02,0x82,0xc0,0x02,0xb3,0x8a,0xb8,0xe8,0x02,0x41,
|
||||
0x60,0x81,0xf4,0x85,0x29,0xba,0x40,0x10,0x58,0x40,0x40,0x40,0x10,0x58,0x40,0x40,
|
||||
0x40,0x10,0x58,0x40,0x40,0x40,0x10,0x58,0x40,0x40,0x10,0x58,0x40,0x40,0x40,0x10,
|
||||
0x58,0x20,0x31,0xec,0xb5,0x02,0x2b,0x12,0x82,0x69,0x9a,0x9c,0xfd,0x85,0xef,0xac,
|
||||
0x6c,0x68,0x0a,0x9e,0x7d,0xdd,0x5f,0x5f,0x3a,0xcb,0x9d,0x5f,0xe8,0x49,0x58,0x20,
|
||||
0x1c,0xce,0xe1,0xe0,0x8c,0x40,0x12,0xf7,0x14,0x98,0x1d,0x08,0x5f,0xe8,0x14,0xc6,
|
||||
0xe9,0x57,0x5f,0xb7,0xe1,0xe4,0x0f,0x5c,0x51,0x06,0xcc,0xed,0x6e,0xd9,0xe7,0xff,
|
||||
0xf5,0x07,0x4f,0x47,0x71,0x8d,0xcf,0x45,0x33,0x16,0x45,0x5d,0x7e,0xcc,0x4f,0x01,
|
||||
0x14,0xa7,0x8b,0xc2,0xf2,0x6a,0xda,0xfa,0x12,0x8b,0x4c,0x3c,0xf3,0x9a,0xaf,0x5f,
|
||||
0x71,0xc2,0x05,0x97,0x9e,0x02,0x74,0x44,0x42,0x03,0x3d,0x3f,0x3c,0xc5,0x8f,0xab,
|
||||
0xa8,0x52,0xbc,0x0c,0x41,0x60,0x01,0xb0,0x82,0xfa,0x4d,0x33,0xb1,0x2d,0xda,0xe2,
|
||||
0xaa,0x9a,0x33,0x81,0x33,0x01,0x1c,0x4e,0x17,0xe8,0x09,0xfa,0x66,0x48,0x60,0x8e,
|
||||
0xda,0x06,0x4e,0x7c,0x4b,0x58,0x71,0xba,0x0a,0x80,0xe5,0x00,0xb2,0xa2,0x10,0xef,
|
||||
0x8d,0xe1,0x4a,0xa0,0x78,0xe8,0x92,0xd3,0xce,0x9f,0x7f,0xfd,0xb7,0x7e,0xb4,0x0c,
|
||||
0x68,0xaa,0xaf,0xf3,0x09,0x27,0x12,0x41,0xe0,0xf4,0x47,0x43,0x53,0x30,0x1f,0xab,
|
||||
0x0a,0xe1,0x1a,0xac,0x1c,0xcb,0x47,0x77,0xef,0xdf,0x7b,0xd4,0x8d,0x1f,0x39,0x77,
|
||||
0xa8,0xa8,0x78,0xc6,0x40,0x3d,0xea,0xd8,0x0b,0x81,0x0b,0x81,0x78,0x43,0x53,0xf0,
|
||||
0x5d,0xe0,0x4d,0xe0,0x75,0xac,0xbc,0x5a,0x5b,0xea,0xeb,0x7c,0x41,0x21,0x11,0x82,
|
||||
0xc0,0xa9,0x4e,0xd8,0x32,0xac,0x2c,0x1e,0x1b,0x80,0xb5,0xb6,0x26,0x2b,0x38,0x58,
|
||||
0x03,0x67,0x81,0x4c,0x1d,0x6d,0x1f,0x1f,0xb5,0x3f,0x0b,0x37,0x34,0x05,0xb7,0x00,
|
||||
0x2f,0x61,0x65,0xba,0x7c,0xb1,0xbe,0xce,0xb7,0x57,0x48,0x8c,0x20,0xf0,0x6c,0x13,
|
||||
0x56,0x06,0x4e,0xc2,0xaa,0x74,0x78,0x1e,0xb0,0x94,0x23,0x14,0x4c,0xcb,0x62,0x78,
|
||||
0x80,0x63,0xed,0xe3,0x1a,0x20,0xd6,0xd0,0x14,0xdc,0x09,0x3c,0x02,0x3c,0x0a,0x3c,
|
||||
0x95,0x64,0x9d,0x67,0x01,0x41,0xe0,0x09,0x93,0xd6,0x0b,0x9c,0x0a,0x5c,0x86,0x55,
|
||||
0x5b,0xa9,0x54,0xf4,0x4a,0xd2,0x70,0x02,0x8b,0xed,0xe3,0x4b,0xc0,0x40,0x43,0x53,
|
||||
0xf0,0x51,0xac,0x24,0xf6,0x8f,0x8a,0xe9,0xb6,0x20,0xf0,0x54,0x93,0x56,0x02,0x4e,
|
||||
0x01,0x3e,0x06,0x5c,0x84,0xa8,0x03,0x34,0xd5,0xc8,0x05,0x3e,0x60,0x1f,0x43,0x64,
|
||||
0xfe,0x03,0xf0,0x98,0xd0,0xcc,0x82,0xc0,0x93,0x21,0x6e,0x11,0x50,0x0f,0x7c,0x0a,
|
||||
0x58,0x34,0x15,0xd7,0x34,0x33,0x34,0x46,0xc8,0x9c,0xba,0x86,0x8d,0x24,0xf3,0xfe,
|
||||
0x86,0xa6,0xe0,0xef,0x81,0x9b,0xeb,0xeb,0x7c,0x7b,0x84,0x44,0x0a,0x02,0x27,0x4a,
|
||||
0x5c,0x3f,0xf0,0x55,0xe0,0x93,0x4c,0x71,0xd1,0x2e,0x43,0x8f,0x27,0x6c,0xc8,0x4a,
|
||||
0x05,0x83,0x97,0xc3,0x9b,0xd8,0xf7,0xfa,0xba,0x3a,0xa6,0xe3,0xf6,0x15,0xc0,0xb7,
|
||||
0x80,0xaf,0x37,0x34,0x05,0xff,0x02,0xfc,0xa4,0xbe,0xce,0xf7,0xa6,0x90,0xd0,0x03,
|
||||
0x10,0x9e,0x58,0xa3,0x89,0x5b,0xd3,0xd0,0x14,0x6c,0x00,0xb6,0x02,0x9f,0x65,0x1a,
|
||||
0x2a,0xee,0x85,0xfa,0x7a,0x13,0xaa,0xce,0x60,0x9a,0x06,0x0e,0x87,0x73,0x56,0xfb,
|
||||
0x43,0x92,0x24,0x72,0xab,0xeb,0x12,0xfa,0xee,0xe6,0xc7,0x1e,0xc0,0x34,0xa6,0xcd,
|
||||
0x71,0x4b,0x01,0x3e,0x04,0x6c,0x6a,0x68,0x0a,0xde,0xdf,0xd0,0x14,0x3c,0x4a,0x48,
|
||||
0xab,0x20,0xf0,0x48,0xe2,0x7a,0x1a,0x9a,0x82,0xdf,0x07,0x1a,0xb1,0xea,0xe2,0xba,
|
||||
0xa6,0xeb,0x5e,0xfb,0xb7,0x6f,0x49,0x4c,0x53,0xc7,0x62,0xe4,0x15,0xcf,0xae,0x7d,
|
||||
0x4c,0x71,0x38,0xa9,0x3a,0xfa,0x84,0x84,0xbe,0xdb,0xdf,0xde,0x42,0x6b,0x60,0xfb,
|
||||
0xb4,0x8f,0x29,0xc0,0xc5,0xc0,0xeb,0x0d,0x4d,0xc1,0x5b,0x1a,0x9a,0x82,0xc5,0x82,
|
||||
0xc0,0x82,0xbc,0x1b,0x80,0x77,0x80,0xeb,0x01,0xef,0x74,0xde,0x2b,0x1e,0x8d,0xf2,
|
||||
0xda,0x43,0x89,0x55,0x0b,0xcd,0x29,0x2a,0xa5,0xa0,0x74,0xce,0xec,0x6a,0x60,0x45,
|
||||
0xa1,0x6a,0x69,0x82,0xca,0x4e,0x92,0xd8,0xfc,0xd4,0xa3,0x13,0x29,0x9f,0x3a,0xd1,
|
||||
0xa5,0x5f,0x3d,0xd0,0xd4,0xd0,0x14,0xbc,0xdc,0x36,0x32,0x0a,0x02,0x67,0x19,0x71,
|
||||
0x1d,0x0d,0x4d,0xc1,0xff,0x04,0xfe,0x01,0x2c,0x98,0x89,0x7b,0x36,0x6d,0x7c,0x9e,
|
||||
0x8e,0xed,0x89,0xd5,0x0b,0xab,0x5b,0x77,0x26,0xde,0x02,0xdf,0xec,0x76,0x92,0x69,
|
||||
0xb2,0xe0,0xd8,0x13,0x30,0x13,0x74,0xe1,0xdc,0x78,0xf7,0x1f,0x68,0x0f,0xec,0x98,
|
||||
0xc9,0x27,0x2c,0x01,0xee,0x00,0x6e,0x6f,0x68,0x0a,0xe6,0x09,0x02,0x67,0x0f,0x79,
|
||||
0x0b,0x80,0x87,0x81,0x6f,0xcc,0x54,0x1f,0x74,0x35,0xef,0xe1,0xe1,0x9f,0xff,0x07,
|
||||
0x92,0xac,0x24,0xf4,0xfd,0x95,0x67,0x5f,0x80,0x69,0x4e,0xc5,0x9a,0xd2,0x1c,0xb3,
|
||||
0x8e,0x71,0xa2,0xa8,0x5a,0xb4,0x8c,0x92,0xda,0xa5,0x89,0x4d,0xfb,0xf5,0x38,0x8f,
|
||||
0xde,0xfc,0x73,0xa2,0xe1,0x19,0xaf,0x88,0xfa,0x11,0xe0,0x85,0x86,0xa6,0x60,0xb5,
|
||||
0x20,0x70,0xe6,0x93,0xd7,0x67,0x6b,0xdd,0xb3,0x67,0xea,0x9e,0x5d,0xcd,0x7b,0xb8,
|
||||
0xf3,0xbb,0x5f,0x26,0x92,0x60,0x44,0x50,0xdd,0x29,0xe7,0xa0,0xae,0x38,0x76,0xea,
|
||||
0x14,0xa9,0x91,0xf8,0x16,0x8f,0x24,0x8f,0x9e,0x8d,0x3a,0xdc,0x6e,0xce,0xfc,0xd4,
|
||||
0x97,0x12,0xde,0xff,0xd2,0x5e,0x7d,0x9e,0x27,0x6e,0xf9,0x15,0xb1,0x48,0x64,0xa6,
|
||||
0x5f,0xed,0xd1,0xc0,0x8b,0x0d,0x4d,0xc1,0xf9,0x82,0xc0,0x99,0x4b,0x5e,0x17,0xf0,
|
||||
0x20,0x56,0x60,0xc1,0xb4,0x43,0x8f,0xc5,0xd8,0xf2,0xc2,0x53,0x34,0x5c,0x73,0x39,
|
||||
0x5d,0x81,0x6d,0x09,0xaf,0x7d,0xcf,0xfe,0xf4,0x97,0x27,0x15,0xec,0x60,0x9a,0x13,
|
||||
0xdf,0x82,0x1a,0xeb,0xac,0x45,0xab,0x4e,0xe6,0xf8,0x0f,0x7c,0x2c,0xe1,0x6b,0x6c,
|
||||
0xfa,0xeb,0x1d,0xdc,0xf7,0x93,0xeb,0x09,0xb6,0xee,0x9f,0xa9,0x35,0xf1,0x10,0x6a,
|
||||
0x80,0x27,0x1a,0x9a,0x82,0xa5,0x82,0xc0,0x99,0x89,0x1b,0xb0,0x3c,0xaa,0xa6,0x15,
|
||||
0xb1,0xf0,0x20,0x8d,0x2f,0x3d,0xc3,0xed,0x5f,0xbf,0x9a,0x7b,0xbe,0xf3,0x39,0xa2,
|
||||
0x03,0xfd,0x09,0x9d,0xe7,0xce,0x2f,0xe4,0x8a,0xff,0xbc,0x09,0xdf,0xdc,0x8a,0xc9,
|
||||
0x3d,0x80,0xa1,0xe3,0x70,0xb9,0x87,0x29,0xe9,0x70,0xbb,0x13,0x1f,0x74,0xe2,0xf1,
|
||||
0x31,0xb4,0xb2,0xcc,0x99,0x57,0x7e,0x8e,0xe5,0xe7,0x5c,0x9c,0xf0,0x75,0xb6,0x3d,
|
||||
0xf7,0x38,0xbf,0xfd,0xf4,0x25,0x3c,0x7f,0xd7,0x6d,0xf4,0x75,0xb6,0xcf,0xe4,0x3b,
|
||||
0xae,0x05,0x6e,0xb3,0xfd,0xd4,0x05,0x81,0x33,0x48,0xfb,0xae,0xc6,0xda,0xdb,0x9d,
|
||||
0x56,0xf4,0x77,0x77,0x71,0xdb,0xd7,0x3e,0xcd,0x3d,0xff,0xfe,0x05,0xf6,0x6d,0x7e,
|
||||
0x15,0x49,0x19,0xdf,0x57,0xc6,0x34,0x4d,0xaa,0x57,0xae,0xe1,0xaa,0x1b,0xff,0x44,
|
||||
0x79,0xed,0xd8,0xfb,0xae,0x86,0x61,0x24,0xec,0xed,0x24,0x29,0x0e,0x5c,0x39,0x96,
|
||||
0x41,0x5d,0x96,0x65,0xf2,0x4a,0xcb,0x13,0x7e,0xfe,0xee,0xe6,0xbd,0x63,0x6a,0x6f,
|
||||
0xa7,0xc7,0xc3,0x05,0x5f,0xf8,0x36,0xeb,0xaf,0xfc,0x42,0xc2,0xda,0x3d,0x16,0xea,
|
||||
0xe7,0xe9,0x5b,0x7e,0xc1,0xad,0x9f,0xff,0x08,0xdd,0x2d,0xcd,0x33,0xf9,0xba,0xcf,
|
||||
0x07,0x2e,0x15,0x04,0xce,0x2c,0x5c,0x8f,0xe5,0x10,0x30,0xad,0x78,0xe3,0x89,0xbf,
|
||||
0xd1,0xda,0xf8,0x56,0x82,0x53,0x5d,0x83,0x82,0x8a,0x6a,0x2e,0xfc,0xe6,0x8f,0xf9,
|
||||
0xc8,0x0f,0xfe,0x9b,0xe2,0xca,0x9a,0xc3,0x7e,0x37,0x12,0xea,0x47,0x4a,0xd0,0xb1,
|
||||
0xa3,0xb0,0x7a,0x3e,0x1e,0xaf,0x65,0x94,0x95,0x15,0x85,0x92,0xea,0x79,0x09,0x3f,
|
||||
0x7f,0xcb,0x8e,0xc6,0xc3,0x4e,0x7b,0x1d,0x2e,0x17,0xa7,0x5e,0x51,0xcf,0x95,0xbf,
|
||||
0xb9,0x83,0xc5,0x1b,0xce,0x45,0x0f,0x27,0x56,0x3e,0xb8,0xbf,0xbd,0x85,0x97,0xee,
|
||||
0xbb,0x63,0xa6,0xdf,0x77,0x56,0x94,0x70,0xcd,0x0a,0x57,0x4a,0x7b,0x4d,0x74,0xee,
|
||||
0x4c,0xdc,0x4b,0x92,0x8e,0x3c,0x26,0x9a,0x86,0x8e,0x24,0x41,0xed,0x69,0x97,0x53,
|
||||
0xb3,0x72,0x1d,0x8b,0x8e,0x3d,0x96,0xb2,0xf2,0x42,0xc6,0x5b,0xf2,0xf6,0x77,0x75,
|
||||
0x22,0x3b,0x12,0xf3,0x2f,0x99,0x7f,0xfc,0x49,0xb8,0xbc,0x5e,0x4c,0x5b,0x6b,0xd7,
|
||||
0x2c,0x3b,0x9a,0x8d,0xd6,0xc2,0x78,0xdc,0x73,0x5b,0xb7,0x6d,0x61,0xb0,0xaf,0x07,
|
||||
0x4f,0x6e,0xfe,0x61,0x17,0xd8,0x95,0x8b,0x96,0x72,0xe1,0x57,0x7e,0xc0,0xb2,0x73,
|
||||
0x3e,0xce,0xae,0xd7,0x5f,0x66,0xfb,0xb3,0x0f,0xd0,0xbb,0x77,0x0b,0xb2,0x33,0xe7,
|
||||
0xb0,0xe7,0x78,0x0a,0x8a,0x66,0xfa,0xb5,0x2f,0x6e,0x68,0x0a,0xae,0xa9,0xaf,0xf3,
|
||||
0xfd,0x4b,0x10,0x38,0xfd,0xb1,0x0a,0x2b,0x84,0x6d,0xda,0x71,0xc2,0x05,0x97,0x92,
|
||||
0x5b,0x3c,0x97,0xc0,0x96,0x9d,0x44,0x06,0x7a,0x50,0x9c,0x6e,0x3c,0x05,0x45,0xb8,
|
||||
0x3c,0x5e,0xbc,0xbe,0x52,0xf2,0x4a,0xe6,0x92,0x5f,0x5a,0x89,0xe2,0xb4,0xc8,0x38,
|
||||
0x18,0x85,0xbd,0x7b,0x43,0x14,0x15,0xb9,0xc8,0xcf,0x3f,0xdc,0xeb,0x90,0xd8,0xbf,
|
||||
0x7d,0x6b,0xc2,0x86,0xad,0x65,0xeb,0xcf,0x1c,0xe5,0xd6,0x58,0xbd,0xe4,0x28,0x14,
|
||||
0x97,0x0b,0x3d,0x16,0x1b,0xf7,0xdc,0x50,0x67,0x2b,0x1d,0xbb,0x03,0x54,0x1f,0xc6,
|
||||
0x81,0x43,0xd7,0x4d,0xba,0xbb,0x63,0xf4,0xf7,0xc7,0xc9,0x2d,0x55,0x59,0x71,0xb6,
|
||||
0xca,0x8a,0xb3,0x2e,0x63,0xa0,0xbb,0x9d,0xfe,0xee,0x36,0xfa,0x3b,0xf6,0x13,0x19,
|
||||
0x1c,0x20,0xd2,0x17,0x24,0x36,0xd8,0x8f,0xec,0x70,0x52,0xb1,0x68,0x05,0xab,0xce,
|
||||
0x3a,0x75,0x36,0xde,0xfb,0x7a,0xac,0x8c,0x20,0x82,0xc0,0x69,0x8e,0x9a,0x99,0xba,
|
||||
0x91,0xd3,0xe3,0x61,0xe5,0x19,0x67,0xb3,0x74,0x9d,0x41,0x6f,0x6f,0x9c,0x81,0x90,
|
||||
0x3e,0xee,0x16,0x8c,0x61,0x40,0x67,0x67,0x94,0x50,0x48,0xa7,0xac,0xcc,0x85,0x7c,
|
||||
0xd0,0x56,0x4e,0x74,0x70,0x80,0xd7,0x1f,0xfa,0x4b,0x42,0xf7,0x2f,0x9a,0x57,0x8b,
|
||||
0x7a,0xd4,0x71,0xa3,0xa7,0xd4,0x65,0x73,0x59,0x7d,0xc9,0x27,0x78,0xf9,0x8e,0x5b,
|
||||
0xc6,0x5f,0x53,0x39,0x9c,0x6c,0x7e,0xfa,0xd1,0x31,0x09,0x1c,0x0e,0xeb,0xb4,0xb7,
|
||||
0x47,0xd1,0x75,0xf3,0xe0,0x69,0x07,0xb9,0xc5,0x73,0xc8,0x2d,0x9e,0xc3,0xdc,0xda,
|
||||
0x15,0xc3,0x83,0x8e,0x2c,0x43,0x41,0x81,0x83,0xfc,0x7c,0x07,0x8a,0x32,0x2b,0xce,
|
||||
0x52,0x55,0x62,0x0d,0x9c,0x19,0x88,0xcd,0xf4,0x0d,0xdd,0x6e,0x99,0xb2,0x32,0x17,
|
||||
0x73,0xca,0x5c,0xc8,0x09,0xca,0xee,0xe0,0xa0,0x4e,0x4b,0x4b,0x04,0xe3,0xa0,0x7d,
|
||||
0xdb,0x57,0xfe,0x76,0x37,0x3d,0xcd,0xda,0xb8,0xe7,0xeb,0xd1,0x30,0xe7,0x7e,0xee,
|
||||
0x1b,0x38,0x0f,0xb2,0x3a,0x9b,0xa6,0xc9,0x89,0xef,0xfb,0x30,0x39,0x45,0x89,0x85,
|
||||
0x31,0x6f,0xbc,0xf3,0x56,0x9a,0x9b,0x46,0x7b,0x8c,0x85,0x42,0x3a,0xad,0xad,0x91,
|
||||
0x43,0xc9,0x7b,0xd8,0xf6,0x4b,0x54,0x56,0x7a,0xf0,0xf9,0x9c,0xb3,0x45,0xde,0x59,
|
||||
0x79,0xef,0x82,0xc0,0xd3,0x83,0xc6,0xd9,0xba,0xb1,0xd7,0xab,0x50,0x5e,0xee,0x49,
|
||||
0x78,0x3b,0x34,0x1a,0x35,0x68,0x6f,0x8b,0xda,0x9a,0x77,0x90,0xe7,0xee,0xfc,0x3d,
|
||||
0x4f,0xdf,0xf2,0x0b,0xc6,0xde,0xa1,0x1d,0xbd,0xce,0x3c,0xa5,0xfe,0x5a,0xe6,0xaf,
|
||||
0x1c,0x7b,0x8b,0x3b,0xaf,0xa8,0x98,0xcb,0xbe,0xf7,0xcb,0xc4,0x84,0xc2,0xe5,0xe6,
|
||||
0xae,0xef,0x7e,0x69,0x38,0x38,0x21,0x12,0x31,0x68,0x6f,0x8f,0x24,0x1c,0xcb,0x9c,
|
||||
0x93,0x63,0xb5,0xd9,0xe1,0x98,0x75,0x17,0xe5,0x6d,0x82,0xc0,0x99,0x81,0x37,0x81,
|
||||
0xce,0xd9,0xba,0xb9,0xcb,0x2d,0x53,0x56,0x9a,0xf8,0x5e,0xec,0x60,0x58,0x67,0xef,
|
||||
0xce,0xfd,0xdc,0xf6,0xd5,0x7a,0x9e,0xb9,0x35,0x01,0xd2,0x99,0x26,0xab,0x2e,0xf9,
|
||||
0x38,0xa7,0x5c,0x7e,0xe5,0x11,0x8d,0x68,0x35,0x4b,0x8f,0xe6,0xc3,0x3f,0xbd,0x25,
|
||||
0xa1,0x7d,0xe1,0x81,0x8e,0x56,0x7e,0x77,0xd5,0xc5,0xbc,0xf1,0xe4,0xdf,0x93,0x22,
|
||||
0xaf,0xd3,0x69,0xcd,0x3c,0x52,0x24,0x77,0xdf,0x13,0x82,0xc0,0x19,0x80,0xfa,0x3a,
|
||||
0xdf,0x20,0xf0,0x7f,0xb3,0xf9,0x0c,0xde,0x5c,0x05,0xaf,0x37,0xf1,0x5d,0xac,0x17,
|
||||
0xef,0xf9,0x23,0x6d,0x4d,0x6f,0x8f,0xfb,0x3d,0x23,0x36,0xc8,0xb1,0x1f,0xfa,0x2a,
|
||||
0xab,0x2f,0xb9,0x66,0xd8,0x30,0x76,0x24,0xf8,0x8f,0x39,0x81,0xf3,0xbe,0xfd,0xbf,
|
||||
0x14,0xaa,0xcb,0xc7,0xfd,0xae,0x24,0x2b,0xfc,0xf5,0x07,0x5f,0xb4,0x3c,0xaa,0x12,
|
||||
0x44,0x69,0xe9,0xa1,0x6b,0xf8,0x59,0xc2,0xa3,0xf5,0x75,0xbe,0x80,0x20,0x70,0xe6,
|
||||
0xe0,0xc7,0xc0,0xac,0x26,0x4b,0xf3,0xf9,0x12,0x34,0x84,0x4b,0x12,0x3b,0x9f,0xb9,
|
||||
0x7b,0x3c,0xb5,0xcb,0x9c,0x65,0x27,0x71,0xfe,0xf7,0xef,0x66,0xf9,0x19,0x97,0xd0,
|
||||
0xd7,0x6f,0x12,0x0e,0xeb,0xe3,0x5e,0xba,0xa3,0x23,0x42,0x41,0xc5,0x02,0xce,0xfd,
|
||||
0xda,0x7f,0x73,0xfc,0x15,0xd7,0xe1,0xf0,0x1c,0x39,0x88,0x47,0x72,0x78,0x08,0xf5,
|
||||
0x24,0x36,0x79,0xf1,0xe6,0x28,0xb8,0xdd,0x29,0x21,0x52,0x71,0xac,0x4c,0x1e,0x19,
|
||||
0x8f,0xac,0x49,0xa9,0x53,0x5f,0xe7,0x6b,0x6d,0x68,0x0a,0x5e,0x03,0xfc,0x79,0xd6,
|
||||
0xa6,0xd2,0x2e,0x19,0xb7,0x5b,0x26,0x12,0x31,0xc6,0x9d,0x12,0xcf,0x3d,0x6a,0x3d,
|
||||
0xfb,0x5e,0x7b,0x72,0xf4,0xc7,0x86,0x81,0xac,0x28,0xf8,0xd7,0xbf,0x8f,0x85,0x27,
|
||||
0xbd,0x87,0x39,0x0b,0x96,0x8d,0x8a,0x6e,0xea,0xec,0x8c,0x51,0x59,0xa9,0x1c,0x76,
|
||||
0xfa,0x1a,0x0a,0xe9,0x84,0x42,0x16,0xc9,0x1d,0xee,0x1c,0x96,0x6e,0x78,0x3f,0xf3,
|
||||
0x57,0x9d,0xce,0x9e,0xb7,0x5e,0x62,0xdb,0xb3,0x0f,0xd2,0xf1,0xee,0xf3,0xc8,0xee,
|
||||
0xd1,0x84,0xce,0xaf,0xa8,0xc5,0x57,0xae,0x26,0xd4,0xbe,0xfc,0x82,0x94,0x11,0xa7,
|
||||
0x1f,0xd6,0xd7,0xf9,0x36,0x65,0x83,0x5c,0x67,0x5d,0x20,0x74,0x43,0x53,0xf0,0x87,
|
||||
0xb3,0x39,0x3a,0xf7,0xf4,0xc4,0xe8,0xee,0x1e,0xdf,0x38,0x3a,0xd8,0xd3,0xc5,0xee,
|
||||
0x57,0x1f,0xa1,0xb7,0x65,0x07,0xb2,0xa7,0x08,0x77,0xfe,0x1c,0x4a,0xd4,0x3a,0x8a,
|
||||
0xaa,0x16,0xe0,0xc9,0x2b,0x3c,0xec,0x79,0x65,0x65,0x2e,0x72,0x73,0xc7,0x26,0x52,
|
||||
0xf3,0xbe,0x30,0xd1,0xd8,0xd8,0x83,0x87,0xa1,0xc7,0xe9,0xef,0x68,0xa1,0x73,0xcf,
|
||||
0x36,0xba,0xf6,0xec,0x20,0xbf,0x40,0xa6,0xb8,0xa2,0x8a,0xfc,0x9a,0x13,0x70,0xe7,
|
||||
0x8f,0xef,0x84,0x21,0x49,0x30,0x6f,0x9e,0x37,0x15,0xd6,0xbe,0xf7,0x02,0x1f,0xac,
|
||||
0xaf,0xf3,0xe9,0x82,0xc0,0x99,0x49,0x60,0x19,0x2b,0xa8,0xe1,0xda,0xd9,0xb8,0x7f,
|
||||
0x38,0x6c,0x6d,0x15,0x25,0x82,0xe2,0x62,0x27,0xf9,0xf9,0x0e,0x42,0x21,0x6b,0xff,
|
||||
0x35,0x11,0x78,0x3c,0x32,0xe5,0xe5,0x9e,0x49,0xdd,0xd7,0xe9,0x94,0xa9,0xaa,0xf2,
|
||||
0x60,0x9a,0xb0,0x7b,0x77,0x28,0x21,0x03,0x56,0x4e,0x8e,0xcc,0xdc,0xb9,0xb3,0x9e,
|
||||
0xd3,0xfe,0x41,0xe0,0xb2,0x6c,0x4a,0x45,0x9b,0x75,0xf1,0xc0,0xf5,0x75,0x3e,0xa3,
|
||||
0xbe,0xce,0xf7,0x15,0xac,0xac,0x93,0x33,0x5e,0x84,0x2b,0xa9,0x3d,0x51,0x3b,0x2c,
|
||||
0x30,0x27,0x47,0x49,0x58,0xb3,0x85,0xc3,0xc6,0x98,0x7b,0xb5,0x03,0x03,0x89,0x2b,
|
||||
0x24,0xaf,0x57,0x9e,0x40,0xbb,0x66,0x5d,0x94,0x6e,0x04,0x3e,0x90,0x6d,0x79,0xa4,
|
||||
0xb3,0x36,0xa5,0x4e,0x7d,0x9d,0xef,0xe7,0xc0,0x59,0xc0,0x8c,0xd6,0xe8,0x49,0x2a,
|
||||
0x7d,0xb2,0x4d,0x5a,0x59,0x96,0x70,0xb9,0x12,0x7f,0x55,0xe1,0xc1,0x43,0xc9,0x3a,
|
||||
0x38,0x98,0x38,0x81,0x3d,0x1e,0x25,0x9d,0x5e,0x65,0x2f,0x70,0x45,0x7d,0x9d,0xef,
|
||||
0xf3,0xd9,0x32,0x6d,0x16,0x04,0x3e,0x40,0xe2,0xa7,0x81,0x15,0x40,0x03,0xc9,0xd4,
|
||||
0xe0,0x9c,0x05,0x24,0x63,0xdd,0x0d,0x1f,0x64,0x24,0x8b,0xc7,0xcd,0x84,0x3d,0xa8,
|
||||
0x24,0x89,0xa4,0x06,0x8b,0x59,0xc6,0xdf,0x81,0x15,0xf5,0x75,0xbe,0x3f,0x67,0xab,
|
||||
0x0c,0x67,0x7d,0x56,0xca,0xfa,0x3a,0x5f,0x4f,0x7d,0x9d,0xef,0x53,0x58,0xd5,0x04,
|
||||
0x5f,0x4c,0xd5,0xe7,0x74,0x39,0x13,0x7f,0x55,0xd1,0xe8,0x41,0x04,0x8e,0x19,0x09,
|
||||
0x6b,0x7e,0x59,0x96,0x26,0xe8,0xfa,0x38,0xa3,0xe3,0x5f,0x23,0x70,0x71,0x7d,0x9d,
|
||||
0xef,0xfc,0x6c,0xaf,0xd8,0x20,0xf2,0x42,0x1f,0x20,0xf2,0x4b,0xc0,0x3a,0xe0,0x7d,
|
||||
0xc0,0x6b,0xa9,0xf6,0x7c,0xc9,0xb8,0x25,0xc6,0xe3,0xe6,0x11,0xff,0x4e,0xe6,0x3e,
|
||||
0x29,0x56,0x0e,0x75,0x27,0x56,0x3a,0xd9,0x63,0xea,0xeb,0x7c,0x0f,0x0a,0xa9,0x15,
|
||||
0xa5,0x55,0x0e,0x26,0xb1,0x09,0x3c,0xd0,0xd0,0x14,0xfc,0x1b,0x70,0x06,0xf0,0x75,
|
||||
0xe0,0x34,0x52,0xc0,0x5a,0x2f,0x27,0xa1,0x15,0x4d,0x73,0x28,0x2f,0x96,0xf5,0xb7,
|
||||
0x6e,0x98,0xd3,0x32,0x50,0xcc,0x20,0xde,0x00,0x7e,0x0a,0xdc,0x53,0x5f,0xe7,0x8b,
|
||||
0x09,0x49,0x15,0x04,0x1e,0x8f,0xc8,0x3a,0xf0,0x38,0xf0,0x78,0x43,0x53,0x70,0x19,
|
||||
0xf0,0x19,0xac,0xd2,0x1e,0x65,0xb3,0xf5,0x4c,0xc9,0x28,0x42,0xd3,0x34,0x31,0x4d,
|
||||
0x73,0x58,0x7b,0x1a,0xc9,0x64,0xa5,0x4c,0x9d,0xd7,0xd0,0x8b,0xb5,0x2d,0x74,0x73,
|
||||
0x7d,0x9d,0xef,0x45,0x21,0x95,0x82,0xc0,0x13,0x25,0xf3,0xbb,0xc0,0x17,0x1b,0x9a,
|
||||
0x82,0xdf,0xc0,0x4a,0x45,0xfb,0x11,0xac,0xec,0x1e,0xb9,0x33,0x40,0xdb,0x29,0x59,
|
||||
0x62,0xa6,0x51,0x45,0xc4,0x18,0xf0,0x14,0x96,0xb7,0xdc,0x83,0xa2,0x4e,0xb0,0x20,
|
||||
0xf0,0x54,0x12,0x79,0xd0,0xd6,0x08,0x0f,0xda,0x55,0x00,0xce,0xc1,0xaa,0xd3,0xf3,
|
||||
0x5e,0x60,0x5a,0x4a,0x28,0x4c,0x66,0xf9,0x39,0x51,0xd2,0x9a,0x33,0x3f,0x48,0x84,
|
||||
0xec,0xd9,0xce,0x83,0xc0,0x43,0xf5,0x75,0xbe,0x0e,0x21,0x6d,0x82,0xc0,0xd3,0x4d,
|
||||
0xe6,0x7e,0x2c,0x97,0xbd,0x7b,0xed,0xba,0x3c,0x27,0xda,0xda,0xf9,0x2c,0xac,0x04,
|
||||
0xe3,0xf9,0xa2,0x97,0x0e,0x8b,0x41,0xac,0xea,0x8f,0x4f,0xd8,0xc4,0x7d,0x56,0x14,
|
||||
0xf1,0x16,0x04,0x9e,0x4d,0x32,0x9b,0xc0,0x4b,0xf6,0xf1,0x3d,0xbb,0x6c,0xcb,0x4a,
|
||||
0xac,0x6d,0xa9,0x93,0xed,0xdf,0x27,0x5d,0xf2,0x23,0x8d,0xeb,0x82,0xb7,0x03,0x6f,
|
||||
0x61,0x6d,0xd1,0xbd,0x00,0xbc,0x26,0xb4,0xac,0x20,0x70,0x2a,0x13,0xba,0x17,0x78,
|
||||
0xd6,0x3e,0x68,0x68,0x0a,0x3a,0xb1,0x8c,0x5f,0xab,0x80,0x95,0xa6,0x61,0x1e,0x27,
|
||||
0xcb,0xd2,0x29,0x86,0x61,0xce,0x58,0x9a,0xc6,0x99,0x58,0x03,0xcb,0xd6,0x7c,0x7f,
|
||||
0x8f,0x4d,0xd6,0x37,0xed,0xe3,0x15,0x60,0x7f,0x7d,0x9d,0x2f,0x22,0x24,0x43,0x10,
|
||||
0x38,0x5d,0x09,0x1d,0x03,0x9a,0x81,0xbf,0xda,0x07,0x00,0x37,0xfc,0xab,0xbd,0x20,
|
||||
0x12,0xd1,0x57,0xc6,0x62,0xe6,0x3c,0x49,0x62,0x85,0xae,0x9b,0x95,0xb2,0x2c,0x1d,
|
||||
0x6d,0x18,0xe6,0x5c,0x7b,0x0a,0xee,0x65,0x16,0x8c,0xc2,0x63,0x91,0x7d,0xc8,0x98,
|
||||
0x0d,0x0c,0x28,0x8a,0xd4,0x27,0x4b,0xd2,0x5e,0x24,0xb6,0x28,0x8a,0xa4,0x29,0x8a,
|
||||
0xb4,0x25,0x37,0x57,0xd9,0x59,0x50,0xe0,0x7c,0xfb,0xe3,0xf3,0x0b,0x42,0xe2,0x8d,
|
||||
0x0b,0x02,0x67,0x05,0xbe,0xb6,0xa6,0x6c,0x48,0x53,0x1f,0x82,0x9f,0x6f,0x6c,0xf7,
|
||||
0x85,0xc3,0x46,0x99,0x2c,0xe3,0xb1,0xb5,0xf7,0x5c,0xd3,0x64,0xae,0x24,0x51,0x25,
|
||||
0xcb,0x52,0x0d,0x50,0x62,0x9a,0xe4,0x9a,0xa6,0xe9,0xb0,0x89,0x5e,0x20,0x49,0x92,
|
||||
0x17,0x70,0x03,0x4e,0x49,0xc2,0x01,0x0c,0xd8,0x03,0x80,0x64,0x9a,0xe4,0x8d,0x20,
|
||||
0x22,0x58,0x41,0x1c,0x11,0x7b,0x3d,0xda,0x63,0x9a,0xf4,0x4a,0x12,0x51,0x59,0x96,
|
||||
0x06,0x24,0x89,0x56,0x40,0xb3,0xa7,0xbe,0xed,0x1e,0x8f,0xdc,0x63,0x18,0x68,0x1e,
|
||||
0x8f,0xdc,0x5f,0x5c,0xec,0x6a,0xfd,0xe4,0xc2,0xc2,0x7e,0xf1,0xf6,0x52,0x07,0x92,
|
||||
0xe8,0x82,0xf4,0xc6,0xff,0xed,0xee,0x97,0x3a,0xda,0xc3,0x8e,0x78,0xdc,0x54,0x0c,
|
||||
0xc3,0x54,0x4c,0x13,0xc9,0x34,0x91,0x8a,0x8b,0x9d,0xba,0xed,0x12,0x29,0xb5,0xb5,
|
||||
0x46,0x94,0xc1,0xb0,0x2e,0xcb,0xb2,0x64,0xca,0x32,0xc8,0xb2,0x64,0xc8,0x32,0x86,
|
||||
0x24,0x49,0xba,0x2c,0x4b,0xb1,0x6f,0x9c,0x3c,0x47,0x17,0x3d,0x29,0x20,0x20,0x20,
|
||||
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x90,0x05,0xf8,0xff,0xbd,0xee,0x3d,0x8e,0x97,
|
||||
0x10,0x8f,0xe6,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
|
||||
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// octocat_4bpp
|
||||
// Data size = 1808 bytes
|
||||
//
|
||||
// PNG, Compression=Flate, Size: 240 x 200, 4-Bpp
|
||||
//
|
||||
// for non-Arduino builds...
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM
|
||||
#endif
|
||||
const uint8_t octocat_4bpp[] PROGMEM = {
|
||||
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
|
||||
0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xc8,0x04,0x03,0x00,0x00,0x00,0x24,0x52,0x71,
|
||||
0x61,0x00,0x00,0x00,0x30,0x50,0x4c,0x54,0x45,0x00,0x03,0x00,0x06,0x0a,0x05,0x22,
|
||||
0x1e,0x1d,0x45,0x5c,0x65,0x6b,0x57,0x4f,0xad,0x5b,0x53,0xb6,0x75,0x6a,0xa3,0x84,
|
||||
0x72,0x67,0x96,0xa8,0xc7,0x9e,0x89,0x7a,0xbb,0xe4,0x83,0xbb,0xcc,0xd9,0xc4,0xc0,
|
||||
0x9c,0xd9,0xf0,0xf5,0xca,0xb3,0xfa,0xfc,0xf9,0x45,0x09,0xf7,0x95,0x00,0x00,0x00,
|
||||
0x01,0x74,0x52,0x4e,0x53,0x00,0x40,0xe6,0xd8,0x66,0x00,0x00,0x06,0x8e,0x49,0x44,
|
||||
0x41,0x54,0x78,0xda,0xed,0xdb,0xbf,0x4b,0x23,0x59,0x1c,0x00,0xf0,0xb9,0x29,0x17,
|
||||
0x02,0x9b,0xfc,0x05,0x93,0x17,0x41,0xbd,0xe5,0x8e,0x25,0x36,0x01,0xd9,0x26,0x08,
|
||||
0x62,0xb3,0xdd,0x04,0x04,0x59,0xab,0x5c,0xb5,0xec,0x81,0x08,0xc1,0xe6,0x8a,0xd8,
|
||||
0x2c,0x1e,0x29,0x4e,0x0c,0x32,0x8d,0xdb,0x2e,0x81,0x34,0x6e,0x6d,0xe9,0xc1,0x36,
|
||||
0xa7,0xa7,0x8d,0x44,0xa6,0xb8,0x63,0x55,0x06,0x16,0xad,0x4e,0x38,0x58,0x36,0x37,
|
||||
0xf3,0xde,0x9b,0xdf,0xdf,0xc9,0xbc,0x6c,0xbe,0x2f,0x83,0xe7,0xbc,0x46,0x9d,0x17,
|
||||
0xdf,0x27,0xdf,0xef,0xfb,0xce,0x7b,0x33,0x13,0x55,0x94,0xbc,0x3d,0xfa,0x46,0x08,
|
||||
0xd1,0x64,0xff,0x06,0xd4,0x54,0x42,0xc6,0x1b,0x88,0xfd,0x02,0x16,0x2c,0x2e,0xb3,
|
||||
0x97,0xe3,0xc1,0xa2,0x43,0xb9,0xaf,0xd6,0x30,0xa6,0x58,0x5c,0xf6,0xde,0x25,0x2a,
|
||||
0x4c,0xc6,0x70,0x71,0x61,0x32,0xc6,0x6b,0x71,0x61,0x4d,0xfc,0xa5,0x04,0xad,0xb6,
|
||||
0xc2,0x32,0x74,0x94,0x48,0x84,0x09,0x20,0xb8,0xb6,0x2a,0x15,0x26,0xb1,0x03,0x49,
|
||||
0x0d,0x1b,0x16,0x6e,0x39,0x3c,0x35,0x58,0xcb,0xe1,0x1c,0xce,0x4f,0xa7,0x1c,0xce,
|
||||
0x0a,0x56,0x1e,0x1a,0xac,0x3d,0x3a,0x38,0xbb,0x39,0xd6,0xb2,0x82,0x49,0x56,0xa7,
|
||||
0xd3,0xa4,0x21,0x13,0x92,0x4d,0xc8,0xea,0x43,0x84,0xb5,0x8c,0x32,0x3d,0x51,0xc8,
|
||||
0xea,0xc3,0x84,0xb5,0x8c,0x32,0x9d,0x1d,0x4c,0x32,0xca,0x74,0x86,0xb0,0x96,0x51,
|
||||
0xa6,0x1f,0x21,0x4c,0x32,0x9a,0xe2,0x1c,0x9e,0x22,0xac,0x65,0x54,0x5b,0xff,0x07,
|
||||
0xb8,0x58,0x22,0xc5,0x22,0x7c,0x9c,0x14,0xe5,0xc1,0xcb,0x2d,0xc3,0x69,0xfb,0xad,
|
||||
0xd6,0xd2,0x52,0x9d,0x1f,0x9b,0x59,0x5a,0x6a,0xb5,0xb6,0xd8,0xf1,0xcd,0xba,0x14,
|
||||
0x78,0xd9,0x48,0x6f,0x9b,0x12,0x60,0xdb,0x3d,0xb8,0x65,0x2d,0xe6,0xf1,0xe3,0x96,
|
||||
0x61,0xec,0xa1,0xc3,0xb3,0x1e,0xeb,0x35,0xc3,0x88,0x1d,0xb3,0x8c,0x0d,0x6c,0x38,
|
||||
0xee,0x82,0xcd,0x32,0xea,0xb8,0xf0,0x8a,0x98,0x6b,0xcb,0x7b,0xa8,0xf0,0x8c,0x71,
|
||||
0x2b,0xda,0x82,0x21,0x4f,0x0e,0xcf,0x1f,0x08,0xc3,0xc1,0x90,0x27,0x87,0xb7,0x6e,
|
||||
0xc5,0x9b,0x81,0x08,0xcf,0xf2,0x80,0xef,0x86,0xc3,0xaf,0x49,0x9e,0xd7,0x67,0x6d,
|
||||
0xe0,0xc1,0x2b,0xde,0xd8,0x89,0x72,0xa0,0x6f,0x1f,0x0f,0xe6,0x01,0x0f,0x69,0x83,
|
||||
0xe1,0x40,0x9f,0x55,0xc7,0x82,0x79,0xa6,0xef,0xd8,0xe0,0x5f,0x13,0x03,0x76,0xfb,
|
||||
0x36,0xb0,0xe0,0xf9,0x60,0x50,0x70,0xc8,0xa1,0xbe,0x3d,0x2c,0xf8,0x17,0x6f,0xf0,
|
||||
0x8f,0x3f,0xbd,0x4b,0x82,0x69,0x17,0xeb,0xbb,0xc1,0x82,0xbd,0x4c,0x7f,0xd1,0x75,
|
||||
0xfd,0x04,0xca,0xf5,0x1d,0xef,0x62,0x7d,0x16,0x12,0x3c,0xe3,0xc1,0xc7,0xf6,0xe8,
|
||||
0x6b,0x30,0xcc,0xba,0x78,0x5f,0x1d,0x07,0x9e,0xf5,0xa2,0x5a,0xed,0xda,0xc3,0x43,
|
||||
0xf0,0xc9,0x17,0xbd,0xe9,0x74,0x45,0xaa,0xeb,0x1b,0x61,0x35,0x0c,0x0f,0x87,0xff,
|
||||
0x9e,0x38,0x09,0x7d,0x07,0x4c,0xf2,0xf0,0x7e,0x6d,0xd8,0x74,0xba,0x58,0xdf,0x2e,
|
||||
0x0e,0xec,0x15,0xf5,0x3f,0xc3,0xa1,0x0d,0xaf,0x43,0xf0,0xf1,0xba,0x93,0xec,0x75,
|
||||
0x0e,0x7f,0xc2,0x81,0x7f,0x74,0xe1,0x63,0x0a,0xaf,0x25,0xc0,0x5d,0x3a,0xc9,0x52,
|
||||
0xe0,0xee,0xeb,0xdf,0x6d,0x78,0x15,0x82,0x9b,0x8d,0x8f,0xb4,0x4b,0x0e,0xec,0xd4,
|
||||
0x8f,0xae,0x37,0x40,0x98,0x77,0x85,0xe1,0x09,0x6f,0x53,0x19,0xfc,0x79,0x04,0xfc,
|
||||
0x79,0xa8,0xbb,0xf0,0x1f,0x32,0x60,0x3d,0x13,0x38,0xb3,0x54,0x7b,0xf0,0x6a,0x32,
|
||||
0xbc,0x8a,0x04,0xab,0x91,0xf3,0xf8,0x98,0x8e,0x0e,0x9e,0x4e,0x5d,0xde,0xc5,0xfa,
|
||||
0xfe,0x9e,0xf0,0x19,0x08,0x0c,0xc3,0x0b,0x08,0xef,0x62,0x7d,0x7f,0x8d,0x0d,0x83,
|
||||
0xf7,0xe2,0xde,0x92,0x79,0x4f,0x47,0xff,0x19,0x5c,0x32,0x79,0x17,0xeb,0xfb,0x6d,
|
||||
0xac,0xe7,0x03,0x40,0x1f,0xdf,0x9d,0xf8,0x46,0x40,0xb7,0x3e,0x7b,0xf3,0x83,0x37,
|
||||
0x09,0x3d,0xb0,0x65,0xee,0xc2,0x11,0x03,0x82,0x0a,0xe7,0x85,0xbf,0x55,0xef,0xea,
|
||||
0xa6,0x4b,0x0b,0x08,0xdc,0x16,0x59,0x57,0x78,0x77,0x4a,0x08,0x2f,0xf8,0x93,0x36,
|
||||
0x32,0xf3,0xde,0x7e,0x7c,0x4f,0x37,0x27,0x10,0x66,0x5d,0xe1,0xfd,0x38,0x71,0x3e,
|
||||
0x45,0xa7,0xdc,0xbf,0xf4,0x39,0xd6,0x5f,0x27,0x5d,0xfa,0xd0,0x2e,0xde,0x37,0xc9,
|
||||
0xd9,0x14,0xac,0x8a,0x97,0x63,0x5e,0xec,0x59,0xdf,0xf8,0xcc,0x29,0xf0,0xea,0xd0,
|
||||
0xf9,0x14,0xbd,0xbc,0xb5,0xf4,0x37,0xf0,0xe5,0xed,0x4d,0xa8,0xb6,0x54,0xd1,0x3f,
|
||||
0x42,0xd3,0x62,0xb9,0x9e,0xb9,0x05,0x2f,0xe8,0xaf,0xf4,0x06,0x78,0x41,0xef,0xae,
|
||||
0x1f,0x02,0xd5,0xeb,0xf7,0x8e,0xaa,0xae,0xe8,0x2d,0x4c,0x37,0x08,0x07,0xfb,0x76,
|
||||
0xe1,0x1c,0x27,0xd9,0x60,0x3e,0x42,0x93,0x1c,0xb9,0x69,0xbb,0xd2,0x57,0xa1,0x9b,
|
||||
0x36,0xb7,0xa8,0x35,0x91,0xc8,0xec,0x43,0xda,0x88,0xba,0x9e,0x87,0xef,0x84,0x9b,
|
||||
0x6f,0xe0,0xe3,0xa3,0x8a,0x2a,0x72,0x3c,0x79,0x02,0x42,0xb9,0x16,0x6b,0x9f,0xd2,
|
||||
0x56,0x48,0xff,0x7b,0x2d,0xed,0xb4,0x7a,0x39,0x0e,0xbc,0x91,0xb6,0x43,0x68,0xe2,
|
||||
0xdb,0xc6,0xcc,0x18,0xae,0x85,0xfa,0x91,0x79,0x3c,0xe4,0x6b,0x67,0x82,0xad,0x57,
|
||||
0x71,0x78,0x17,0xe9,0x8f,0x04,0x92,0x42,0xbe,0x76,0x4a,0xfa,0xfa,0x95,0xb4,0x80,
|
||||
0x23,0xab,0x57,0xa0,0xe9,0x76,0xc5,0x35,0x0f,0xa4,0x05,0x9c,0x9c,0xec,0xab,0x86,
|
||||
0xd1,0x6d,0xc4,0xdc,0x1b,0xb4,0x80,0xa3,0x7b,0x94,0xdf,0x9a,0x7a,0x23,0x16,0xb0,
|
||||
0x55,0xc7,0x0b,0xd8,0xdb,0xa9,0x62,0xb2,0x95,0x74,0x2a,0xe1,0x04,0xec,0xcb,0x2b,
|
||||
0xa9,0x67,0x12,0xb2,0xeb,0xc9,0xb3,0xa3,0x57,0xb0,0xfd,0x3a,0xb6,0xeb,0xc9,0xe5,
|
||||
0xe5,0xe4,0xa7,0xa9,0xc6,0x66,0x89,0x60,0x4e,0x70,0xec,0x8a,0x64,0x79,0xeb,0x00,
|
||||
0x78,0x4c,0xdd,0xaa,0xa3,0xfd,0x95,0x4f,0xf2,0xb5,0x50,0xb9,0x34,0xb3,0xdc,0xf2,
|
||||
0xdb,0xe6,0x52,0xb9,0x84,0xfb,0xa7,0x6b,0xda,0xf8,0x1f,0xbc,0x69,0x38,0x01,0x6a,
|
||||
0xe3,0x7e,0xe6,0x87,0xb4,0x6a,0x2c,0xb6,0xb5,0x71,0x3e,0x6e,0xc4,0x5b,0x35,0x16,
|
||||
0x0f,0x89,0xf8,0x07,0x7f,0x68,0xc5,0x44,0x83,0xab,0x40,0xe3,0x7d,0x57,0x8c,0x35,
|
||||
0xd4,0x32,0x76,0xe4,0xa3,0x36,0x90,0xbf,0x62,0x51,0xaa,0x7c,0xea,0xc8,0x9d,0x3f,
|
||||
0x35,0x30,0xe0,0x52,0xf0,0x03,0x4d,0xa7,0x3d,0xc5,0x84,0xed,0xe9,0xac,0x54,0xe3,
|
||||
0xb9,0x8e,0x7f,0x6a,0x5a,0x46,0x0d,0xd9,0xe4,0xd3,0x2c,0x52,0xd8,0x65,0x44,0xb8,
|
||||
0x60,0xb2,0x0a,0x36,0xab,0x22,0x55,0x5d,0xc6,0xcb,0x35,0x85,0xed,0xe8,0xcc,0x43,
|
||||
0xa1,0xd3,0x09,0x2f,0xe4,0x82,0x79,0x4a,0x95,0x4e,0x5b,0x6c,0xe1,0x2c,0xa2,0x46,
|
||||
0xac,0xc4,0x97,0x86,0x24,0xb8,0xfc,0x14,0x15,0x8e,0xdf,0xdb,0x12,0xd9,0xb0,0xef,
|
||||
0x98,0xcf,0x45,0x60,0x22,0x01,0x3e,0xd4,0x44,0xe0,0xb2,0x82,0xbd,0x6e,0x76,0x42,
|
||||
0x5b,0xc5,0x14,0xe1,0xd0,0x22,0x32,0xe2,0x9f,0x9f,0x24,0x5c,0xf1,0xcc,0xb5,0x89,
|
||||
0xfb,0x36,0x4a,0x53,0x85,0x3b,0x97,0xee,0x3f,0x8f,0x75,0xaa,0x53,0x83,0x9d,0xb1,
|
||||
0x9f,0x5d,0x92,0xb9,0x6d,0x42,0x6a,0x55,0x72,0xc4,0x61,0x35,0x08,0x6b,0xf2,0xae,
|
||||
0x2e,0x17,0xc8,0x0b,0xb3,0x5a,0x31,0xcf,0x49,0x8d,0x5f,0xe4,0x40,0xb0,0xa6,0xc8,
|
||||
0x28,0xaf,0x67,0x0e,0x7c,0x46,0xf8,0x1c,0x47,0x60,0x55,0x0a,0xec,0x17,0x72,0x85,
|
||||
0xb8,0xb0,0x32,0x15,0x38,0x54,0x41,0xd3,0x84,0x95,0xcc,0x60,0x35,0x0d,0x56,0x24,
|
||||
0xc1,0x41,0x79,0xba,0x70,0x40,0x2e,0x31,0x62,0x5a,0xb0,0x3f,0xcf,0xea,0xb4,0xe1,
|
||||
0x50,0xec,0x39,0x9c,0xc3,0x39,0x9c,0xc3,0x39,0x9c,0xc3,0x89,0xf0,0x9c,0x79,0x48,
|
||||
0xa9,0xa3,0x33,0xfa,0xa5,0x63,0x96,0x32,0x85,0x9f,0xcb,0x74,0x99,0x08,0xc3,0x1d,
|
||||
0xfa,0x0c,0x41,0x46,0x2b,0x98,0xe6,0x68,0xd8,0x6e,0x92,0xd8,0x74,0x18,0x9f,0x66,
|
||||
0xa3,0x0a,0xc0,0xb8,0x09,0x2f,0x98,0xe2,0x30,0x66,0xd0,0x9e,0x2b,0x06,0xa3,0x05,
|
||||
0xed,0x8f,0x28,0x08,0x23,0xc9,0x66,0x2a,0x4c,0xbf,0xfc,0x60,0x22,0xcb,0xc1,0xf1,
|
||||
0xcc,0x36,0xbb,0x67,0x8d,0xc0,0x55,0x76,0x14,0x57,0x2e,0x84,0xc6,0xe3,0xb1,0x45,
|
||||
0x60,0xfa,0x76,0x2a,0xa1,0x17,0x9a,0xb8,0xee,0x05,0x95,0x5e,0x44,0x61,0xfe,0x23,
|
||||
0xaa,0x1c,0x1e,0xcc,0x15,0x22,0xf0,0x19,0x7f,0x3f,0x88,0xc9,0x0e,0x07,0x7c,0x49,
|
||||
0x78,0x4e,0x23,0xf0,0x05,0x01,0x72,0x6d,0x22,0x06,0xdc,0xe6,0xcf,0x43,0xa2,0x30,
|
||||
0xab,0x2e,0xb2,0x88,0x17,0x72,0x38,0xe0,0x6d,0xe2,0xce,0x65,0x14,0x3e,0x67,0x3d,
|
||||
0xbf,0xa2,0x85,0x1c,0x82,0xf9,0xe8,0x8b,0xfe,0x5c,0x9f,0x7b,0x73,0xdb,0x26,0x40,
|
||||
0x7d,0xa1,0x9e,0xc3,0xf6,0xea,0xe1,0xc1,0xa6,0x0f,0x5f,0x56,0x81,0xfa,0x3a,0xc5,
|
||||
0x84,0x6b,0x7d,0x0f,0xae,0xf0,0xa2,0xa2,0x4b,0xd6,0xa0,0x1a,0x5d,0x36,0xf1,0xe0,
|
||||
0x8b,0x85,0x85,0xb7,0x3b,0xbd,0x9e,0xf7,0x1e,0xe6,0x78,0x95,0x3b,0x4b,0xd6,0xa0,
|
||||
0xd7,0x7b,0xff,0x76,0xa1,0x66,0x4a,0x81,0x9d,0xd1,0x9d,0xe6,0x2f,0x60,0xac,0x9a,
|
||||
0x9d,0xd3,0x88,0xf5,0xf4,0xd1,0x4e,0x28,0x13,0x92,0xfb,0x3c,0xc5,0x76,0x25,0x9d,
|
||||
0xf1,0x6f,0x06,0xa0,0x8b,0x07,0xf3,0xc0,0xdc,0x4c,0x9b,0x5e,0xae,0xbd,0x54,0xc8,
|
||||
0x49,0xb5,0x1b,0xf2,0x07,0xbf,0x82,0x59,0x79,0xef,0xc0,0x01,0xa3,0xc3,0x74,0x66,
|
||||
0xe7,0xfa,0xfe,0xae,0xf1,0x3d,0x18,0xf0,0x24,0x70,0x01,0xcc,0x35,0xad,0xa8,0x1d,
|
||||
0x0a,0xf7,0xde,0xd3,0x37,0x01,0xc3,0x78,0x6b,0x35,0x87,0xab,0x8e,0xcb,0x20,0xfb,
|
||||
0x2c,0xaa,0xf2,0x88,0xfb,0x52,0x61,0x9a,0xeb,0xf7,0x0b,0x35,0x1e,0x21,0xfd,0x71,
|
||||
0xbb,0x86,0x3e,0xc5,0xf1,0x5c,0x0f,0x18,0xe1,0x4a,0x6c,0xce,0x4d,0xec,0x93,0x09,
|
||||
0x90,0x23,0x70,0x6f,0x04,0x3c,0xe9,0x55,0x57,0x3a,0xdc,0x07,0xe1,0x89,0xaf,0xf6,
|
||||
0x0a,0x89,0x70,0x6f,0x24,0x8c,0x79,0x1b,0xe1,0xc3,0x83,0x54,0x18,0xf7,0x06,0x46,
|
||||
0x1c,0xc6,0xbe,0x75,0x12,0x85,0xf1,0x6f,0xda,0xc2,0xf0,0x20,0x01,0xc6,0xbf,0x3d,
|
||||
0x16,0x82,0x71,0x9f,0x48,0x14,0x84,0x61,0x39,0xcf,0x22,0x52,0x61,0x29,0x0f,0x60,
|
||||
0x0a,0xa9,0xb0,0xac,0xe7,0x3e,0x8a,0x32,0x12,0x96,0xfa,0x84,0x4d,0x79,0x92,0x00,
|
||||
0x2b,0x53,0x69,0x4f,0x42,0xb0,0x92,0xb7,0xbc,0x41,0xed,0x3f,0x1b,0x02,0x27,0x36,
|
||||
0x4c,0x35,0x9c,0x68,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
|
||||
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// octocat_8bpp
|
||||
// Data size = 1800 bytes
|
||||
//
|
||||
// PNG, Compression=Flate, Size: 240 x 200, 8-Bpp
|
||||
//
|
||||
// for non-Arduino builds...
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM
|
||||
#endif
|
||||
const uint8_t octocat_8bpp[] PROGMEM = {
|
||||
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
|
||||
0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xc8,0x08,0x03,0x00,0x00,0x00,0xe1,0xa2,0x9c,
|
||||
0x60,0x00,0x00,0x00,0x33,0x50,0x4c,0x54,0x45,0x57,0x61,0x77,0x09,0x08,0x06,0x22,
|
||||
0x1e,0x1d,0x2d,0x2d,0x2d,0x44,0x5c,0x67,0x6a,0x57,0x4d,0xad,0x5b,0x52,0xb7,0x74,
|
||||
0x6a,0xa2,0x84,0x73,0x6a,0x95,0xa8,0xc7,0x9e,0x8a,0x7b,0xbb,0xe4,0x85,0xbb,0xcc,
|
||||
0xdc,0xc3,0xc0,0x9c,0xd9,0xf1,0xf5,0xca,0xb3,0xfd,0xfb,0xf7,0x24,0xdc,0x40,0xfd,
|
||||
0x00,0x00,0x00,0x01,0x74,0x52,0x4e,0x53,0x00,0x40,0xe6,0xd8,0x66,0x00,0x00,0x06,
|
||||
0x83,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0xdd,0xe1,0xb6,0x9b,0x20,0x0c,0x00,0x60,
|
||||
0x05,0xac,0x42,0x95,0xbb,0xf7,0x7f,0xda,0x29,0xb6,0x0a,0x08,0x08,0x8a,0xc7,0x60,
|
||||
0x93,0x1f,0xdb,0xb9,0xab,0x74,0xf9,0x1a,0x04,0x44,0xbb,0x55,0x15,0x06,0x06,0xc6,
|
||||
0x4f,0x07,0x99,0xa3,0xf8,0xbf,0x23,0x31,0x97,0x0b,0x13,0xba,0xfc,0x2f,0x38,0x0e,
|
||||
0xbe,0x20,0xa3,0x8b,0xdf,0xfe,0x74,0x46,0x99,0x93,0xba,0xf4,0xcd,0x33,0xa5,0x94,
|
||||
0x2f,0xab,0x0b,0xdf,0x3a,0x73,0x56,0x59,0xf2,0xba,0xec,0x8d,0x2f,0xc9,0xeb,0x7c,
|
||||
0x66,0xa4,0x34,0x30,0xb9,0xe6,0x5d,0x09,0x58,0xaf,0x2b,0xb7,0xd8,0x63,0x93,0xde,
|
||||
0x14,0x10,0x98,0x44,0x1e,0x66,0x37,0x20,0xc5,0x82,0x55,0x7a,0x24,0x6f,0x00,0x07,
|
||||
0xe7,0x0f,0x04,0x23,0xf8,0x61,0x60,0x82,0x60,0x04,0x23,0x18,0xc1,0x38,0x4a,0x23,
|
||||
0x18,0xc1,0x08,0xfe,0x15,0x70,0x85,0xe0,0x87,0x7b,0x11,0x8c,0x5d,0x1a,0x87,0xe9,
|
||||
0xb2,0xc5,0x84,0xfc,0x96,0x98,0x90,0xdf,0x12,0x13,0x04,0x3f,0x5b,0x4c,0xc8,0x6f,
|
||||
0x89,0x09,0x82,0x9f,0x2d,0x26,0x08,0x7e,0xb6,0x98,0x20,0xf8,0xd9,0x62,0x82,0x60,
|
||||
0x04,0x3f,0x4a,0x4c,0x10,0x8c,0x60,0x04,0x97,0x2c,0x26,0x08,0x46,0xf0,0x18,0x75,
|
||||
0x5d,0xcf,0xbf,0xd6,0xf1,0xc7,0xd3,0x31,0x22,0x8f,0x07,0x05,0xa6,0x4d,0xd7,0x75,
|
||||
0x62,0x8d,0x6e,0x8a,0x66,0x0a,0xaa,0x42,0x1d,0xa3,0x42,0xfd,0xa1,0x7a,0x59,0x18,
|
||||
0xc7,0x8f,0x47,0x16,0x03,0x6e,0x8c,0xdc,0x8f,0x47,0xd7,0x14,0x01,0xfe,0x70,0xff,
|
||||
0xcc,0xd8,0xe7,0x39,0x1b,0x34,0xe0,0xc1,0xb4,0xdb,0xe6,0xbe,0x0d,0xb7,0xd1,0x75,
|
||||
0x58,0x47,0x61,0x83,0x69,0x0c,0x37,0x21,0x42,0x45,0x86,0x00,0x6e,0xf2,0x72,0x67,
|
||||
0x72,0x03,0x17,0x7c,0x81,0x37,0x20,0xbe,0x1f,0x4c,0xaf,0xf0,0xfa,0xc5,0xb7,0x83,
|
||||
0xc7,0xf1,0xea,0xef,0xef,0x1a,0x31,0x05,0x09,0xb6,0xbd,0xff,0x54,0xa4,0xfb,0xb6,
|
||||
0xed,0x44,0x07,0x11,0xdc,0x08,0x47,0xda,0xe9,0x64,0x67,0x3b,0xa7,0xf8,0x66,0x30,
|
||||
0xf5,0x79,0xd3,0xc4,0x9e,0x76,0xae,0xd3,0xf8,0x66,0xb0,0xd9,0xa1,0xff,0xfd,0x3b,
|
||||
0x26,0xf6,0xb6,0xeb,0xa0,0x81,0x69,0xc0,0x1b,0x2f,0xf6,0xb7,0x73,0x94,0xf8,0x5e,
|
||||
0x70,0xe7,0x48,0x7c,0x10,0x6d,0x2b,0x92,0xc1,0x6b,0xab,0x9d,0x12,0xdf,0x0b,0x76,
|
||||
0x14,0x78,0x78,0xa9,0x18,0xe2,0xc5,0x76,0x2b,0xa3,0xc4,0x14,0x14,0xb8,0xd9,0x82,
|
||||
0x3f,0x99,0xcf,0xb9,0x47,0x83,0x8d,0x56,0x46,0xbb,0x06,0x14,0xb8,0x73,0x54,0x4a,
|
||||
0x88,0x4f,0xee,0xb1,0xe0,0x41,0x79,0xdb,0xb5,0x55,0xb8,0x4f,0xdf,0xba,0x6b,0xd9,
|
||||
0x6d,0x0a,0x2c,0x86,0xa5,0x5c,0x22,0x52,0x3c,0x1e,0xd6,0x4e,0x95,0x6d,0x97,0x56,
|
||||
0x46,0x9f,0x06,0x05,0xde,0xf6,0x68,0x55,0xa1,0xb4,0x12,0xab,0x4f,0x68,0xed,0xd6,
|
||||
0x7b,0x7d,0xfa,0x56,0xb0,0xa3,0x47,0x6b,0xe0,0x21,0x0d,0x2c,0xdc,0xa3,0x1d,0x6c,
|
||||
0xb0,0x78,0xb5,0xc3,0xf0,0x3d,0x1d,0x45,0x2c,0x78,0x6c,0xd0,0x0e,0x62,0x6d,0x05,
|
||||
0x16,0x4c,0x37,0xe0,0xaf,0x55,0x45,0x9b,0x00,0x36,0x5a,0x85,0xc0,0xf7,0xde,0x2e,
|
||||
0xb5,0x06,0xdb,0x43,0xe0,0x61,0x39,0x05,0x34,0xf0,0x50,0x0a,0xf8,0xf5,0x43,0xe0,
|
||||
0x9f,0xeb,0xd2,0x5b,0xb0,0x38,0x04,0x16,0xa0,0xc0,0xd5,0xce,0x3c,0x3c,0xe8,0xa9,
|
||||
0x47,0x4f,0x4b,0xc2,0x6a,0x65,0xb4,0xa3,0xf7,0x3e,0xb7,0x94,0x02,0x4e,0x59,0x78,
|
||||
0x18,0xad,0x8c,0x76,0xf5,0xf5,0xe0,0xf8,0x5b,0x97,0xdb,0xa5,0x65,0x6b,0x9e,0x8c,
|
||||
0xd1,0x4b,0x4b,0xf3,0x14,0xd6,0x97,0x96,0x75,0x7c,0x3a,0x07,0x9d,0x09,0x9f,0x46,
|
||||
0xb3,0x19,0xa6,0x87,0xe4,0x1e,0xfd,0x37,0xd8,0xad,0xcc,0x5d,0x9e,0x24,0x53,0x8a,
|
||||
0xe1,0x48,0xf9,0xb7,0x2b,0x8f,0xf5,0x7c,0x14,0x29,0x97,0x87,0x46,0xab,0xc0,0xd5,
|
||||
0x52,0x5a,0xf1,0x7c,0x2f,0x9d,0xe8,0xf0,0x8e,0x0d,0x80,0xd6,0x3d,0xd8,0xee,0x6c,
|
||||
0x00,0xe8,0xad,0x02,0x83,0x74,0x7a,0xa7,0xcd,0x7c,0x86,0x3b,0xb7,0x78,0xa6,0x33,
|
||||
0x71,0x48,0xde,0xe2,0x59,0x5a,0x99,0xed,0x6e,0x9a,0x94,0xbc,0xb7,0xd1,0x22,0x37,
|
||||
0xe3,0x8e,0x6e,0xe2,0x6d,0x2f,0x87,0x2f,0xc5,0xbb,0xdf,0xda,0xdf,0xa7,0x77,0xb7,
|
||||
0x69,0xc7,0x53,0xb5,0x4d,0xda,0xa6,0x0d,0x9e,0xc2,0x19,0xe9,0xe1,0xf7,0xf1,0x97,
|
||||
0x78,0x6f,0x23,0x5e,0xcd,0x3b,0x09,0x1b,0xf1,0xd6,0xb2,0x23,0xcf,0xb0,0xeb,0x68,
|
||||
0x7a,0x78,0xd8,0xda,0xb9,0xd5,0x22,0xbc,0x60,0x5f,0x3b,0x91,0xd4,0x89,0x13,0xd9,
|
||||
0xf1,0x47,0x07,0x4a,0x1c,0xbe,0x99,0xa6,0x06,0xe2,0xe8,0x9b,0x69,0xf6,0x18,0x9d,
|
||||
0xaf,0x64,0x55,0x6a,0x87,0x08,0x94,0x38,0x7c,0x07,0xb4,0xf5,0x14,0xd8,0x77,0xfc,
|
||||
0xd1,0x41,0x6a,0xef,0x04,0x38,0x33,0x6a,0xd3,0x8b,0x6e,0x0f,0x1f,0x2c,0xf0,0x2e,
|
||||
0x9a,0x9c,0x9e,0xa6,0x9a,0xcb,0xbc,0xdd,0xe9,0x59,0x88,0x5c,0x32,0x31,0x5f,0x25,
|
||||
0x16,0xb7,0x5e,0x17,0x9e,0x16,0xb7,0xed,0x3a,0x58,0xc7,0x79,0x29,0x24,0x6f,0xba,
|
||||
0xb8,0x5d,0xc6,0xe7,0xf6,0x55,0xa2,0xd7,0x14,0xc7,0x8c,0x5c,0xdf,0x19,0xa9,0x7d,
|
||||
0x89,0x22,0xbd,0xe9,0x45,0x1e,0x17,0x1d,0x42,0xf8,0x56,0x97,0xd9,0xc7,0xab,0xeb,
|
||||
0x8b,0xdc,0x45,0xf4,0xea,0x69,0xa5,0x15,0x51,0x5f,0xd1,0xc0,0xf4,0xda,0xdb,0x01,
|
||||
0x5d,0x04,0x25,0x79,0x3a,0x02,0xe5,0xdd,0x5c,0x38,0x36,0xe7,0x57,0x21,0xd6,0x93,
|
||||
0xb4,0x15,0xbc,0xd8,0x79,0x50,0x2d,0x51,0xdb,0x10,0xe0,0x5c,0x07,0xb9,0x9e,0x1e,
|
||||
0x16,0x3f,0xf2,0xa8,0x61,0xd7,0xd4,0xa4,0x04,0xaf,0x73,0x47,0x84,0x4e,0xdf,0x7f,
|
||||
0x88,0x73,0xcf,0x5f,0x76,0xb8,0xf5,0xe9,0x95,0x7c,0x9b,0x40,0xd3,0x37,0x56,0x3e,
|
||||
0xdf,0xe6,0x70,0xc4,0xf4,0xed,0x0f,0xcf,0x97,0x59,0xa0,0x78,0xf2,0x6c,0xe0,0xc3,
|
||||
0xfd,0x37,0x4a,0x1c,0x96,0x5c,0x77,0x2d,0x00,0x6b,0x35,0x08,0xeb,0x79,0xe4,0x4e,
|
||||
0x4b,0xc1,0x56,0x5d,0xc1,0xfa,0x3e,0x32,0xaf,0x92,0xad,0xba,0x80,0x52,0x42,0x59,
|
||||
0x74,0x7a,0x75,0x4c,0x80,0x1f,0x88,0x7b,0xc9,0x23,0xc5,0x75,0x64,0x80,0xd4,0xca,
|
||||
0x85,0xcc,0xa5,0xac,0x49,0x8a,0xd7,0xff,0x25,0x4b,0xc8,0x62,0xb9,0x16,0x99,0xb1,
|
||||
0xa8,0x73,0x2e,0xea,0xdb,0xa2,0x70,0xc5,0x52,0xea,0xdd,0x7a,0x3c,0x95,0x73,0x8d,
|
||||
0x5a,0x40,0xc1,0xf2,0x03,0x9e,0x1d,0x54,0x4a,0x96,0x6f,0x42,0x06,0x29,0x5e,0xc0,
|
||||
0xb3,0x44,0xca,0x3e,0xe3,0x0a,0x04,0xa2,0x58,0x9a,0x62,0xbe,0x37,0x52,0x27,0xce,
|
||||
0xc2,0x20,0xc1,0x5b,0x4b,0xc6,0x75,0x07,0x38,0xb1,0x06,0x5e,0x07,0xae,0x8c,0xab,
|
||||
0x4b,0xc8,0xeb,0x0f,0x6d,0xe0,0xca,0xb8,0x9c,0x2e,0x02,0xdc,0x7b,0x7b,0x35,0x79,
|
||||
0xa2,0x98,0x4b,0xff,0x85,0xc4,0x23,0xc1,0xfe,0x91,0x2b,0x78,0x4d,0x54,0xd0,0xf5,
|
||||
0x92,0x83,0x44,0x39,0xa7,0xdb,0xff,0x09,0xac,0x7e,0x2e,0x98,0xab,0x13,0x99,0x18,
|
||||
0xff,0x0d,0x18,0x97,0xec,0x79,0xe0,0x65,0x6a,0xea,0x65,0x3f,0x96,0x98,0x73,0x65,
|
||||
0x64,0xea,0xb7,0xde,0x02,0x57,0x7e,0x70,0x55,0x0e,0x78,0x49,0x75,0xba,0x74,0x62,
|
||||
0x72,0x5a,0x5b,0x2f,0xbf,0x71,0xeb,0xd6,0x41,0x24,0xb8,0xa0,0x7d,0xd9,0xb1,0xce,
|
||||
0x5f,0xb0,0xb2,0xd6,0xd1,0xe0,0x92,0x4a,0x6c,0xde,0x3a,0x9c,0xff,0x5d,0x21,0x36,
|
||||
0xd7,0xb6,0xf6,0x12,0x8b,0x06,0xfb,0x87,0x9f,0xa7,0x82,0xab,0x9f,0x03,0x57,0xe7,
|
||||
0xc1,0x55,0x59,0x60,0x0f,0xf9,0xc9,0x60,0x27,0xb9,0x36,0x11,0x0f,0x03,0x3b,0xcc,
|
||||
0xd5,0xd3,0xc1,0x81,0x4f,0x00,0xc1,0x08,0x46,0x30,0x82,0x11,0x8c,0x60,0x04,0x23,
|
||||
0x18,0xc1,0x08,0x46,0x70,0x2e,0x30,0x7d,0x36,0x78,0xd9,0xb8,0xfe,0x3e,0x01,0x24,
|
||||
0xa9,0xf1,0xa2,0xac,0x7f,0x17,0xcc,0x4a,0xd5,0x1a,0xc4,0x04,0x30,0x97,0xfa,0x4d,
|
||||
0xe8,0x52,0xac,0x2a,0x4e,0x80,0x65,0x39,0x6a,0xb9,0xc6,0x59,0x70,0x01,0x68,0x23,
|
||||
0xd7,0x2c,0x60,0xc8,0x66,0x3b,0xd1,0x5c,0x60,0xa0,0x66,0x47,0x9a,0xf9,0xc0,0xe0,
|
||||
0xcc,0xee,0x1c,0xb3,0x82,0x21,0x91,0x7d,0x19,0xa6,0x80,0xd7,0x1f,0xa9,0x94,0xb0,
|
||||
0xc9,0xfe,0xfc,0xb8,0x21,0x0c,0x83,0x99,0xf1,0x22,0x64,0x72,0x20,0x3b,0xb3,0x6a,
|
||||
0x61,0xb0,0xf6,0xe1,0x30,0x09,0x58,0x1c,0xca,0xcd,0x32,0x84,0xc1,0xd6,0xab,0x50,
|
||||
0xc9,0xa1,0xc4,0x7a,0x6a,0x12,0xc2,0x60,0xfd,0xe7,0x60,0x89,0x6f,0x15,0xc7,0x7a,
|
||||
0x99,0xdc,0x07,0x6b,0xfd,0x01,0xac,0x38,0xd8,0x9f,0xa9,0xf9,0xec,0xc7,0x2e,0xd8,
|
||||
0x78,0xe6,0x87,0x81,0xec,0xd5,0x21,0x2e,0x23,0xb6,0x77,0x17,0x6c,0x88,0x29,0xef,
|
||||
0xe1,0x89,0xfd,0xf9,0x18,0x0f,0x68,0x7d,0xab,0x65,0x81,0xd9,0xb6,0x07,0x73,0xb2,
|
||||
0xfd,0x98,0x00,0x81,0xa3,0x86,0xe7,0xb1,0x54,0x8e,0x65,0x08,0x95,0x4e,0xb0,0xec,
|
||||
0x19,0x01,0x3c,0x3b,0xc5,0x80,0x19,0x7f,0xbb,0xd6,0x5d,0xcc,0xfc,0x54,0xb4,0xb5,
|
||||
0xd5,0x9b,0xd1,0xdd,0x25,0x26,0x3c,0xf0,0x78,0x0a,0x8f,0xc1,0x39,0x7f,0x4f,0xe1,
|
||||
0xa8,0xbb,0x6f,0xe2,0x55,0xc7,0xbf,0xc7,0x86,0x53,0x73,0x59,0x10,0xf8,0x9b,0xfa,
|
||||
0x27,0x5c,0xeb,0x2e,0x57,0x9f,0x76,0x34,0x82,0x24,0xde,0xc9,0xc8,0x4e,0x9e,0x6f,
|
||||
0x0a,0x6a,0x2d,0x4c,0x64,0x02,0x17,0x22,0xd8,0xca,0x9f,0x6f,0x66,0x21,0x63,0x14,
|
||||
0xeb,0xe1,0x7b,0x77,0xc1,0xba,0xa0,0x77,0x8d,0xc9,0xc6,0x62,0x8c,0x27,0x79,0xc1,
|
||||
0x83,0x99,0x2e,0x73,0x2f,0xc7,0x92,0xbc,0xd0,0x26,0xe2,0x8d,0x98,0x6a,0xf3,0xd4,
|
||||
0x5b,0x7f,0x7d,0x25,0x73,0xe8,0x05,0x4e,0x3a,0x8b,0xd9,0xca,0xd5,0x40,0xf3,0x24,
|
||||
0x34,0xbf,0x46,0xe1,0x17,0x38,0xa9,0xc4,0x6a,0x66,0xb5,0x44,0xfa,0x8b,0xfc,0x5d,
|
||||
0x40,0x81,0x53,0x4a,0x6c,0x9e,0xd2,0x9b,0x73,0xdc,0xf1,0x2a,0xd0,0x2d,0x80,0x13,
|
||||
0xe0,0xf7,0x51,0x30,0xdc,0x3d,0x9e,0x68,0xb0,0x4c,0x00,0x43,0xde,0xc4,0xf3,0x82,
|
||||
0xdf,0xc7,0xc1,0xb0,0xf7,0x69,0x43,0xc2,0x43,0x60,0xe8,0x3b,0xf1,0x99,0xc1,0xf0,
|
||||
0xef,0xb5,0x64,0x05,0x17,0x70,0x33,0x4d,0x46,0x0a,0x63,0xc0,0x65,0xdc,0x2f,0xcd,
|
||||
0x05,0xae,0xe0,0xc6,0x05,0xe0,0x0a,0x7c,0xe4,0x04,0x57,0xa5,0x44,0x0e,0x70,0x55,
|
||||
0x5c,0x1c,0x07,0x57,0x05,0x47,0x22,0xb8,0x7a,0x50,0x04,0xc0,0x15,0x06,0x06,0x06,
|
||||
0x46,0x54,0xfc,0x07,0xb6,0x73,0x07,0x23,0xe6,0xe8,0x7b,0x79,0x00,0x00,0x00,0x00,
|
||||
0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
|
||||
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// PNG decoder benchmark
|
||||
//
|
||||
// Runs images through the PNG decoder without displaying the pixels
|
||||
// to measure the execution time on various Arduino boards
|
||||
//
|
||||
#include <PNGdec.h>
|
||||
#include "octocat_4bpp.h"
|
||||
#include "octocat_8bpp.h"
|
||||
#include "octocat_32bpp.h"
|
||||
|
||||
PNG png; // statically allocate the PNG structure (about 50K of RAM)
|
||||
|
||||
// simple private structure to pass a boolean value to the PNGDRAW callback
|
||||
typedef struct myprivate
|
||||
{
|
||||
bool bConvert;
|
||||
} PRIVATE;
|
||||
|
||||
void PNGDraw(PNGDRAW *pDraw)
|
||||
{
|
||||
PRIVATE *pPriv = (PRIVATE *)pDraw->pUser;
|
||||
uint16_t usPixels[240];
|
||||
|
||||
if (pPriv->bConvert)
|
||||
png.getLineAsRGB565(pDraw, usPixels, PNG_RGB565_LITTLE_ENDIAN, 0xffffffff); // don't do alpha color blending
|
||||
} /* PNGDraw() */
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
delay(2000);
|
||||
Serial.println("Starting benchmark...");
|
||||
} /* setup() */
|
||||
|
||||
void loop() {
|
||||
long lTime;
|
||||
char szTemp[256];
|
||||
int rc;
|
||||
PRIVATE priv;
|
||||
|
||||
// 32-bpp image
|
||||
rc = png.openFLASH((uint8_t *)octocat_32bpp, sizeof(octocat_32bpp), PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
Serial.println("Successfully opened octocat_32bpp.png");
|
||||
priv.bConvert = false;
|
||||
lTime = micros();
|
||||
rc = png.decode((void *)&priv, PNG_FAST_PALETTE);
|
||||
lTime = micros() - lTime;
|
||||
sprintf(szTemp, "Decode time for native pixels = %d us\n", (int)lTime);
|
||||
Serial.print(szTemp);
|
||||
priv.bConvert = true;
|
||||
lTime = micros();
|
||||
rc = png.decode((void *)&priv, PNG_FAST_PALETTE);
|
||||
lTime = micros() - lTime;
|
||||
sprintf(szTemp, "Decode time for RGB565 pixels = %d us\n", (int)lTime);
|
||||
Serial.print(szTemp);
|
||||
png.close(); // not needed for memory->memory decode
|
||||
}
|
||||
|
||||
// 8-bpp image
|
||||
rc = png.openFLASH((uint8_t *)octocat_8bpp, sizeof(octocat_8bpp), PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
Serial.println("Successfully opened octocat_8bpp.png");
|
||||
priv.bConvert = false;
|
||||
lTime = micros();
|
||||
rc = png.decode((void *)&priv, PNG_FAST_PALETTE);
|
||||
lTime = micros() - lTime;
|
||||
sprintf(szTemp, "Decode time for native pixels = %d us\n", (int)lTime);
|
||||
Serial.print(szTemp);
|
||||
priv.bConvert = true;
|
||||
lTime = micros();
|
||||
rc = png.decode((void *)&priv, PNG_FAST_PALETTE);
|
||||
lTime = micros() - lTime;
|
||||
sprintf(szTemp, "Decode time for RGB565 pixels = %d us\n", (int)lTime);
|
||||
Serial.print(szTemp);
|
||||
png.close(); // not needed for memory->memory decode
|
||||
}
|
||||
// 4-bpp image
|
||||
rc = png.openFLASH((uint8_t *)octocat_4bpp, sizeof(octocat_4bpp), PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
Serial.println("Successfully opened octocat_4bpp.png");
|
||||
priv.bConvert = false;
|
||||
lTime = micros();
|
||||
rc = png.decode((void *)&priv, PNG_FAST_PALETTE);
|
||||
lTime = micros() - lTime;
|
||||
sprintf(szTemp, "Decode time for native pixels = %d us\n", (int)lTime);
|
||||
Serial.print(szTemp);
|
||||
priv.bConvert = true;
|
||||
lTime = micros();
|
||||
rc = png.decode((void *)&priv, PNG_FAST_PALETTE);
|
||||
lTime = micros() - lTime;
|
||||
sprintf(szTemp, "Decode time for RGB565 pixels = %d us\n", (int)lTime);
|
||||
Serial.print(szTemp);
|
||||
png.close(); // not needed for memory->memory decode
|
||||
}
|
||||
delay(5000);
|
||||
} /* loop() */
|
||||
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// octocat_4bpp
|
||||
// Data size = 872 bytes
|
||||
//
|
||||
// PNG, Compression=Flate, Size: 120 x 100, 8-Bpp
|
||||
//
|
||||
// for non-Arduino builds...
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM
|
||||
#endif
|
||||
const uint8_t octocat_4bpp[] PROGMEM = {
|
||||
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
|
||||
0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x64,0x08,0x03,0x00,0x00,0x00,0x7a,0xae,0x04,
|
||||
0x00,0x00,0x00,0x00,0x33,0x50,0x4c,0x54,0x45,0x2f,0x41,0x70,0x00,0x00,0x00,0x2a,
|
||||
0x2c,0x2c,0x59,0x49,0x41,0x46,0x5f,0x6a,0x7c,0x65,0x58,0xad,0x5c,0x53,0xb5,0x70,
|
||||
0x67,0xa0,0x80,0x71,0x6c,0x99,0xac,0xc9,0xa1,0x8f,0x83,0xb7,0xc9,0x7b,0xbb,0xe4,
|
||||
0xdc,0xc5,0xc3,0x9b,0xd8,0xf0,0xf4,0xc9,0xb3,0xff,0xff,0xff,0xfe,0x29,0xa3,0x31,
|
||||
0x00,0x00,0x00,0x01,0x74,0x52,0x4e,0x53,0x00,0x40,0xe6,0xd8,0x66,0x00,0x00,0x00,
|
||||
0x01,0x62,0x4b,0x47,0x44,0x00,0x88,0x05,0x1d,0x48,0x00,0x00,0x02,0xd6,0x49,0x44,
|
||||
0x41,0x54,0x68,0xde,0xed,0xd9,0xed,0x92,0xa3,0x20,0x10,0x05,0x50,0x04,0x54,0x68,
|
||||
0x47,0xcc,0xfb,0x3f,0xed,0xa2,0x80,0x9f,0xb0,0x62,0x79,0x89,0x33,0x55,0xf6,0x8f,
|
||||
0xdd,0x52,0x9c,0x3e,0x69,0x04,0xc4,0x84,0xb1,0x37,0x76,0xc1,0x6d,0x5c,0xfe,0x03,
|
||||
0x8e,0x71,0x2f,0x64,0xba,0x78,0x79,0x46,0xa6,0xac,0x5c,0x97,0x2e,0xce,0xce,0x75,
|
||||
0x9a,0x8d,0x5f,0xb8,0xf6,0x1a,0x1c,0xd2,0xf1,0x7d,0x24,0xaf,0x44,0xb9,0x17,0xe2,
|
||||
0x85,0x5f,0xf8,0xd7,0xc2,0xec,0x85,0x7f,0x3d,0xcc,0x9f,0x72,0x6f,0xca,0xfc,0x2f,
|
||||
0xc2,0xfc,0x29,0xf7,0x39,0x98,0x3f,0xe5,0x3e,0x07,0xf3,0xbf,0x06,0xf3,0x17,0x16,
|
||||
0xb5,0x1a,0xa3,0xae,0x6b,0x21,0x44,0x38,0x27,0x84,0x3d,0xf6,0xe7,0x05,0x46,0xde,
|
||||
0xe6,0xa8,0x15,0x9d,0x87,0xaa,0xe1,0xb0,0xa2,0x21,0x27,0x48,0x09,0x2c,0xac,0x86,
|
||||
0xdc,0x20,0x81,0x84,0xf3,0xdd,0x61,0x50,0x40,0x38,0xb8,0x1f,0x1b,0x29,0x6f,0x69,
|
||||
0x53,0x30,0x58,0xd0,0x92,0x3b,0x25,0xaf,0xdb,0x6a,0x14,0xac,0xe6,0xdc,0x7d,0x9f,
|
||||
0x90,0x7d,0x93,0x6b,0x23,0x10,0xec,0x0b,0xb6,0x89,0xfb,0xb6,0x69,0xfa,0x4f,0x7f,
|
||||
0x74,0xed,0xc9,0xa6,0x69,0xc7,0x2b,0xa6,0x43,0x81,0x81,0xeb,0xa5,0x28,0x9b,0xde,
|
||||
0xca,0x91,0x82,0x7b,0xb2,0x1f,0xaa,0x0d,0x25,0x2b,0xcc,0xca,0x35,0xf7,0x34,0x7d,
|
||||
0x3e,0xb6,0x64,0x8a,0xc1,0xd4,0x7f,0x68,0xfc,0x4c,0xdb,0xbe,0xbe,0xf9,0x74,0x9a,
|
||||
0x87,0x56,0x4b,0x36,0xb9,0xad,0x2b,0x02,0xb7,0x8d,0xb2,0x4d,0xaa,0x14,0xdc,0x34,
|
||||
0x69,0xd8,0x35,0x41,0x61,0xf5,0x38,0x4c,0x53,0xf6,0xf8,0x3d,0xf6,0x4d,0x90,0xc1,
|
||||
0x15,0xe4,0x65,0x54,0x4f,0xd9,0xe3,0xa3,0xda,0x37,0x41,0x61,0x11,0xe6,0xea,0x54,
|
||||
0x57,0x62,0x1e,0xd3,0xca,0x0d,0x4b,0xd7,0xed,0xed,0x2d,0xad,0x56,0xae,0x3e,0xbd,
|
||||
0x72,0x2d,0xab,0x1a,0x6a,0x63,0x5d,0x0f,0xd1,0xb5,0x9a,0x1a,0x8a,0xaf,0xd5,0x04,
|
||||
0x7b,0x87,0xa1,0xe8,0xd3,0x89,0x9a,0x36,0xfa,0x74,0xba,0xdf,0xd3,0xb3,0x5c,0x27,
|
||||
0x9e,0xf9,0x89,0xd3,0xc0,0xf7,0xd4,0x2b,0x1b,0x01,0xff,0x88,0x00,0xbd,0x99,0x1f,
|
||||
0x65,0xa2,0xf0,0xcf,0x2e,0x6a,0xd0,0xb7,0xa8,0xa1,0xb7,0x0f,0x44,0x4b,0x03,0xb5,
|
||||
0x25,0xdd,0xb9,0x68,0x3a,0xd4,0x4c,0xa9,0xad,0x1e,0xf2,0x5b,0xfa,0x68,0xd5,0x89,
|
||||
0xbd,0x2d,0xf8,0x07,0x82,0x69,0x15,0x53,0xb1,0x3a,0xa7,0xea,0xe7,0x1d,0xf5,0x7d,
|
||||
0x2a,0xb9,0xdb,0x9d,0x5e,0x5b,0x96,0x10,0x02,0xfc,0x35,0x93,0x94,0x17,0x5f,0xe3,
|
||||
0x50,0x9d,0x2b,0x65,0x34,0x17,0xaf,0xc6,0x08,0x98,0x3b,0x40,0xff,0xf0,0xd3,0xe9,
|
||||
0x48,0xca,0x2a,0x12,0x40,0xd6,0xa4,0x7e,0x41,0xaa,0x0e,0x3d,0x8c,0x95,0x8d,0xaf,
|
||||
0x39,0xef,0x3e,0xe3,0x64,0x63,0x9c,0xa2,0x25,0xcf,0x1a,0x60,0x15,0x63,0xe8,0xfb,
|
||||
0xac,0xf3,0x06,0x76,0xc5,0xca,0x0e,0xb0,0x6f,0xc1,0xbb,0xf9,0xbc,0x9b,0xb6,0xf8,
|
||||
0x49,0xbc,0x85,0x75,0x37,0x4d,0x69,0x39,0x0e,0xb5,0x2d,0x55,0x10,0x76,0x25,0x73,
|
||||
0x6d,0xa4,0x34,0x9a,0xcb,0x4d,0xa9,0x61,0xc2,0x95,0x81,0xb7,0xfd,0x59,0xc5,0x60,
|
||||
0x56,0x06,0x66,0x8f,0xc1,0x6b,0xfa,0xcb,0x30,0xdb,0x12,0x5f,0x85,0x37,0xb5,0xbf,
|
||||
0xf0,0x0b,0x17,0x87,0xe5,0x97,0xe1,0x71,0xf1,0xe4,0xee,0xb9,0x35,0xfd,0x67,0x8a,
|
||||
0xc3,0xc6,0x89,0xda,0xc3,0x66,0x03,0x77,0xc6,0x6d,0x1e,0xf0,0xe8,0x18,0x27,0xb0,
|
||||
0x41,0xe3,0x26,0x44,0x06,0x0c,0xb4,0x97,0x8c,0x99,0x30,0x86,0x5e,0xe7,0x33,0x32,
|
||||
0x0a,0x4b,0x37,0xe4,0x0c,0x92,0xde,0x66,0x0b,0xd2,0x0e,0xd6,0xc7,0x92,0xef,0xca,
|
||||
0x31,0x57,0x9a,0xfd,0x74,0xf2,0x25,0x23,0xe5,0x75,0x22,0xbf,0xe1,0x92,0xf3,0x27,
|
||||
0x58,0x2a,0xf5,0x4d,0x1a,0x26,0x1f,0xef,0xaf,0xd4,0x73,0xe9,0xd2,0x74,0x0b,0xa7,
|
||||
0x25,0xb4,0xb7,0x77,0x3d,0xad,0xf5,0x8f,0x8d,0x65,0x8c,0x2d,0xa3,0x6a,0x3c,0xaf,
|
||||
0xf5,0xce,0x85,0xc1,0x2e,0xbf,0x95,0x75,0xf0,0x3a,0xdf,0xd7,0xfe,0xbc,0x29,0x0c,
|
||||
0xaf,0x86,0x92,0xbb,0xcb,0x1a,0xed,0x26,0xe4,0x71,0x73,0xaf,0x1d,0xe4,0x3e,0xc5,
|
||||
0xb7,0xe0,0x9f,0xf9,0x5e,0xbb,0xa3,0x0e,0xef,0x1e,0x68,0x7f,0x33,0xc3,0x3d,0x5d,
|
||||
0x1f,0x82,0xdd,0x9d,0x1c,0x83,0x4d,0x14,0x06,0xaf,0xd6,0xb9,0x30,0xfc,0xf9,0x94,
|
||||
0x05,0x97,0xd8,0x08,0x9c,0xc3,0x85,0xb6,0x3e,0xff,0x87,0x59,0xe1,0x88,0xc0,0xec,
|
||||
0x8d,0xd3,0xf8,0x07,0xe9,0x64,0x82,0xb3,0xf5,0x3d,0x65,0xc0,0x00,0x00,0x00,0x00,
|
||||
0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82};
|
||||
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// PNG Drawing with transparency example
|
||||
//
|
||||
// loads a 120x100 4-bpp palette image
|
||||
// and draws it at random locations on the LCD
|
||||
//
|
||||
#include <PNGdec.h>
|
||||
#include <bb_spi_lcd.h>
|
||||
#include <Wire.h>
|
||||
|
||||
// 120x100x4-bpp image with transparency
|
||||
// The small file size (852 bytes) allows it to be decoded and drawn quickly
|
||||
#include "octocat_4bpp.h"
|
||||
|
||||
PNG png;
|
||||
SPILCD lcd;
|
||||
static uint8_t ucTXBuf[1024];
|
||||
#define TFT_CS 10
|
||||
#define TFT_RST -1
|
||||
#define TFT_DC 9
|
||||
#define TFT_CLK 13
|
||||
#define TFT_MOSI 11
|
||||
|
||||
//
|
||||
// Create a private structure to pass info to the draw callback
|
||||
// For this example we want to pass a random x/y starting point
|
||||
//
|
||||
typedef struct my_private_struct
|
||||
{
|
||||
int xoff, yoff; // corner offset
|
||||
} PRIVATE;
|
||||
|
||||
void PNGDraw(PNGDRAW *pDraw)
|
||||
{
|
||||
uint16_t usPixels[320];
|
||||
uint8_t ucMask[40];
|
||||
PRIVATE *pPriv = (PRIVATE *)pDraw->pUser;
|
||||
|
||||
png.getLineAsRGB565(pDraw, usPixels, PNG_RGB565_BIG_ENDIAN, 0xffffffff);
|
||||
if (png.getAlphaMask(pDraw, ucMask, 255)) { // if any pixels are opaque, draw them
|
||||
spilcdWritePixelsMasked(&lcd, pPriv->xoff, pPriv->yoff + pDraw->y, (uint8_t *)usPixels, ucMask, pDraw->iWidth, DRAW_TO_LCD);
|
||||
}
|
||||
} /* PNGDraw() */
|
||||
|
||||
void setup() {
|
||||
spilcdSetTXBuffer(ucTXBuf, sizeof(ucTXBuf));
|
||||
spilcdInit(&lcd, LCD_ILI9341, FLAGS_NONE, 40000000, TFT_CS, TFT_DC, TFT_RST, -1, -1, TFT_MOSI, TFT_CLK);
|
||||
spilcdSetOrientation(&lcd, LCD_ORIENTATION_270);
|
||||
spilcdFill(&lcd, 0, DRAW_TO_LCD);
|
||||
spilcdWriteString(&lcd, 0, 4, (char *)"PNG Test", 0xffff, 0, FONT_12x16, DRAW_TO_LCD);
|
||||
Serial.begin(115200);
|
||||
delay(2000);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
int rc, i = 0;
|
||||
PRIVATE priv;
|
||||
|
||||
spilcdFill(&lcd, 0xf81f, DRAW_TO_LCD);
|
||||
rc = png.openRAM((uint8_t *)octocat_4bpp, sizeof(octocat_4bpp), PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
Serial.printf("image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType());
|
||||
while (1) { // loop forever
|
||||
priv.xoff = rand() & 0xff;
|
||||
priv.yoff = rand() % 160;
|
||||
rc = png.decode((void *)&priv, 0);
|
||||
}
|
||||
png.close();
|
||||
}
|
||||
} /* loop() */
|
||||
@@ -0,0 +1,107 @@
|
||||
// A simple image slideshow which reads all the .JPG files from the root
|
||||
// directory of a SD card and shows each for 1 second on an ILI9341 display.
|
||||
|
||||
#include <PNGdec.h>
|
||||
#include <ILI9341_t3.h>
|
||||
#include <Bounce.h>
|
||||
#include <SD.h>
|
||||
|
||||
#define TFT_DC 9
|
||||
#define TFT_CS 10
|
||||
|
||||
ILI9341_t3 tft = ILI9341_t3(TFT_CS, TFT_DC);
|
||||
PNG png;
|
||||
|
||||
// Setup - initialize ILI9341 display, wait for serial monitor, open SD card
|
||||
void setup() {
|
||||
pinMode(34, INPUT_PULLDOWN);
|
||||
pinMode(33, OUTPUT);
|
||||
digitalWrite(33, HIGH); // pushbuttons short pins 33 & 34 together
|
||||
Serial.begin(115200);
|
||||
tft.begin();
|
||||
tft.setRotation(3);
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
tft.setTextColor(ILI9341_YELLOW);
|
||||
tft.setTextSize(2);
|
||||
tft.println("Waiting for Arduino Serial Monitor...");
|
||||
|
||||
while (!Serial && millis() < 3000); // wait up to 3 seconds for Arduino Serial Monitor
|
||||
Serial.println("ILI9341 Slideshow");
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
tft.setCursor(0, 0);
|
||||
|
||||
while (!SD.begin(4/*BUILTIN_SDCARD*/)) {
|
||||
Serial.println("Unable to access SD Card");
|
||||
tft.println("Unable to access SD Card");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
// Functions to access a file on the SD card
|
||||
File myfile;
|
||||
|
||||
void * myOpen(const char *filename, int32_t *size) {
|
||||
Serial.printf("Attempting to open %s\n", filename);
|
||||
myfile = SD.open(filename);
|
||||
*size = myfile.size();
|
||||
return &myfile;
|
||||
}
|
||||
void myClose(void *handle) {
|
||||
if (myfile) myfile.close();
|
||||
}
|
||||
int32_t myRead(PNGFILE *handle, uint8_t *buffer, int32_t length) {
|
||||
if (!myfile) return 0;
|
||||
return myfile.read(buffer, length);
|
||||
}
|
||||
int32_t mySeek(PNGFILE *handle, int32_t position) {
|
||||
if (!myfile) return 0;
|
||||
return myfile.seek(position);
|
||||
}
|
||||
|
||||
// Function to draw pixels to the display
|
||||
void PNGDraw(PNGDRAW *pDraw) {
|
||||
uint16_t usPixels[320];
|
||||
|
||||
png.getLineAsRGB565(pDraw, usPixels, PNG_RGB565_LITTLE_ENDIAN, 0xffffffff);
|
||||
tft.writeRect(0, pDraw->y + 24, pDraw->iWidth, 1, usPixels);
|
||||
}
|
||||
|
||||
// Main loop, scan for all .PNG files on the card and display them
|
||||
void loop() {
|
||||
int rc, filecount = 0;
|
||||
tft.setCursor(0, 0);
|
||||
File dir = SD.open("/");
|
||||
while (true) {
|
||||
File entry = dir.openNextFile();
|
||||
if (!entry) break;
|
||||
if (entry.isDirectory() == false) {
|
||||
const char *name = entry.name();
|
||||
const int len = strlen(name);
|
||||
if (len > 3 && strcmp(name + len - 3, "PNG") == 0) {
|
||||
Serial.print("File: ");
|
||||
Serial.println(name);
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
tft.setCursor(0, 0);
|
||||
tft.print("File: ");
|
||||
tft.println(name);
|
||||
rc = png.open((const char *)name, myOpen, myClose, myRead, mySeek, PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
Serial.printf("image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType());
|
||||
rc = png.decode(NULL, 0);
|
||||
png.close();
|
||||
}
|
||||
filecount = filecount + 1;
|
||||
// if (digitalRead(34) == LOW) {
|
||||
// skip delay between images when pushbutton is pressed
|
||||
delay(2000);
|
||||
// }
|
||||
}
|
||||
}
|
||||
entry.close();
|
||||
}
|
||||
if (filecount == 0) {
|
||||
Serial.println("No .PNG files found");
|
||||
tft.println("No .PNG files found");
|
||||
delay(2000);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
name=PNGdec
|
||||
version=1.0.2
|
||||
author=Larry Bank
|
||||
maintainer=Larry Bank
|
||||
sentence=Universal PNG decoder for MCUs with at least 48K of RAM.
|
||||
paragraph=Designed to provide a fully functional PNG decoder that can use minimal memory by decoding a line at a time with an optional callback function. Supports all pixel formats.
|
||||
category=Display
|
||||
url=https://github.com/bitbank2/PNGdec
|
||||
architectures=*
|
||||
includes=PNGdec.h
|
||||
@@ -0,0 +1,37 @@
|
||||
CFLAGS=-D__LINUX__ -Wall -O2
|
||||
LIBS =
|
||||
|
||||
all: png_demo
|
||||
|
||||
png_demo: main.o PNGdec.o adler32.o crc32.o infback.o inffast.o inflate.o inftrees.o zutil.o
|
||||
$(CC) main.o PNGdec.o adler32.o crc32.o infback.o inffast.o inflate.o inftrees.o zutil.o $(LIBS) -o png_demo
|
||||
|
||||
main.o: main.cpp
|
||||
$(CXX) $(CFLAGS) -c main.cpp
|
||||
|
||||
PNGdec.o: ../src/PNGdec.cpp ../src/png.inl ../src/PNGdec.h
|
||||
$(CXX) $(CFLAGS) -c ../src/PNGdec.cpp
|
||||
|
||||
adler32.o: ../src/adler32.c
|
||||
$(CC) $(CFLAGS) -c ../src/adler32.c
|
||||
|
||||
crc32.o: ../src/crc32.c
|
||||
$(CC) $(CFLAGS) -c ../src/crc32.c
|
||||
|
||||
infback.o: ../src/infback.c
|
||||
$(CC) $(CFLAGS) -c ../src/infback.c
|
||||
|
||||
inffast.o: ../src/inffast.c
|
||||
$(CC) $(CFLAGS) -c ../src/inffast.c
|
||||
|
||||
inflate.o: ../src/inflate.c
|
||||
$(CC) $(CFLAGS) -c ../src/inflate.c
|
||||
|
||||
inftrees.o: ../src/inftrees.c
|
||||
$(CC) $(CFLAGS) -c ../src/inftrees.c
|
||||
|
||||
zutil.o: ../src/zutil.c
|
||||
$(CC) $(CFLAGS) -c ../src/zutil.c
|
||||
|
||||
clean:
|
||||
rm -rf *.o png_demo
|
||||
150
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/linux/main.cpp
Normal file
150
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/linux/main.cpp
Normal file
@@ -0,0 +1,150 @@
|
||||
//
|
||||
// main.cpp
|
||||
// pngdec_test
|
||||
//
|
||||
// Created by Larry Bank on 5/9/21.
|
||||
//
|
||||
|
||||
#include "../src/PNGdec.h"
|
||||
|
||||
PNG png; // static instance of class
|
||||
|
||||
/* Windows BMP header info (54 bytes) */
|
||||
uint8_t winbmphdr[54] =
|
||||
{0x42,0x4d,
|
||||
0,0,0,0, /* File size */
|
||||
0,0,0,0,0x36,4,0,0,0x28,0,0,0,
|
||||
0,0,0,0, /* Xsize */
|
||||
0,0,0,0, /* Ysize */
|
||||
1,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* number of planes, bits per pel */
|
||||
0,0,0,0};
|
||||
|
||||
//
|
||||
// Minimal code to save frames as Windows BMP files
|
||||
//
|
||||
void SaveBMP(char *fname, uint8_t *pBitmap, uint8_t *pPalette, int cx, int cy, int bpp)
|
||||
{
|
||||
FILE * oHandle;
|
||||
int i, bsize, lsize;
|
||||
uint32_t *l;
|
||||
uint8_t *s;
|
||||
uint8_t ucTemp[1024];
|
||||
|
||||
oHandle = fopen(fname, "w+b");
|
||||
bsize = (cx * bpp) >> 3;
|
||||
lsize = (bsize + 3) & 0xfffc; /* Width of each line */
|
||||
winbmphdr[26] = 1; // number of planes
|
||||
winbmphdr[28] = (uint8_t)bpp;
|
||||
|
||||
/* Write the BMP header */
|
||||
l = (uint32_t *)&winbmphdr[2];
|
||||
i =(cy * lsize) + 54;
|
||||
if (bpp <= 8)
|
||||
i += 1024;
|
||||
*l = (uint32_t)i; /* Store the file size */
|
||||
l = (uint32_t *)&winbmphdr[10]; // pointer to data
|
||||
*l = i - (cy * lsize);
|
||||
winbmphdr[14] = 0x28;
|
||||
l = (uint32_t *)&winbmphdr[18];
|
||||
*l = (uint32_t)cx; /* width */
|
||||
*(l+1) = (uint32_t)(-cy); /* height */
|
||||
fwrite(winbmphdr, 1, 54, oHandle);
|
||||
if (bpp <= 8) {
|
||||
if (pPalette == NULL) {// create a grayscale palette
|
||||
int iDelta, iCount = 1<<bpp;
|
||||
int iGray = 0;
|
||||
iDelta = 255/(iCount-1);
|
||||
for (i=0; i<iCount; i++) {
|
||||
ucTemp[i*4+0] = (uint8_t)iGray;
|
||||
ucTemp[i*4+1] = (uint8_t)iGray;
|
||||
ucTemp[i*4+2] = (uint8_t)iGray;
|
||||
ucTemp[i*4+3] = 0;
|
||||
iGray += iDelta;
|
||||
}
|
||||
} else {
|
||||
for (i=0; i<256; i++) // change palette to WinBMP format
|
||||
{
|
||||
ucTemp[i*4 + 0] = pPalette[(i*3)+2];
|
||||
ucTemp[i*4 + 1] = pPalette[(i*3)+1];
|
||||
ucTemp[i*4 + 2] = pPalette[(i*3)+0];
|
||||
ucTemp[i*4 + 3] = 0;
|
||||
}
|
||||
}
|
||||
fwrite(ucTemp, 1, 1024, oHandle);
|
||||
}
|
||||
/* Write the image data */
|
||||
for (i=0; i<cy; i++)
|
||||
{
|
||||
s = &pBitmap[i*bsize];
|
||||
if (bpp >= 24) { // swap R/B for Windows BMP byte order
|
||||
uint8_t ucTemp[2048];
|
||||
int j, iBpp = bpp/8;
|
||||
uint8_t *d = ucTemp;
|
||||
for (j=0; j<cx; j++) {
|
||||
d[0] = s[2]; d[1] = s[1]; d[2] = s[0];
|
||||
d += iBpp; s += iBpp;
|
||||
}
|
||||
fwrite(ucTemp, 1, (size_t)lsize, oHandle);
|
||||
} else {
|
||||
fwrite(s, 1, (size_t)lsize, oHandle);
|
||||
}
|
||||
}
|
||||
fclose(oHandle);
|
||||
} /* SaveBMP() */
|
||||
|
||||
void PNGDraw(PNGDRAW *pDraw)
|
||||
{
|
||||
uint16_t usPixels[320];
|
||||
png.getLineAsRGB565(pDraw, usPixels, PNG_RGB565_LITTLE_ENDIAN, 0xffffffff);
|
||||
}
|
||||
int main(int argc, const char * argv[]) {
|
||||
int i, rc;
|
||||
uint8_t *pData;
|
||||
int iDataSize;
|
||||
FILE *ihandle;
|
||||
uint8_t *pPalette;
|
||||
|
||||
if (argc != 3) {
|
||||
printf("Usage: png_demo <infile.png> <outfile.bmp>\n");
|
||||
return 0;
|
||||
}
|
||||
ihandle = fopen(argv[1],"rb"); // open input file
|
||||
if (ihandle == NULL)
|
||||
{
|
||||
fprintf(stderr, "Unable to open file: %s\n", argv[1]);
|
||||
return -1; // bad filename passed
|
||||
}
|
||||
fseek(ihandle, 0L, SEEK_END); // get the file size
|
||||
iDataSize = (int)ftell(ihandle);
|
||||
fseek(ihandle, 0, SEEK_SET);
|
||||
pData = (uint8_t *)malloc(iDataSize);
|
||||
fread(pData, 1, iDataSize, ihandle);
|
||||
fclose(ihandle);
|
||||
|
||||
// for (int j=0; j<10000; j++) {
|
||||
rc = png.openRAM(pData, iDataSize, NULL); //PNGDraw);
|
||||
if (rc == PNG_SUCCESS) {
|
||||
printf("image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType());
|
||||
png.setBuffer((uint8_t *)malloc(png.getBufferSize()));
|
||||
rc = png.decode(NULL, 0); //PNG_CHECK_CRC);
|
||||
i = 1;
|
||||
pPalette = NULL;
|
||||
switch (png.getPixelType()) {
|
||||
case PNG_PIXEL_INDEXED:
|
||||
pPalette = png.getPalette();
|
||||
i = 1;
|
||||
break;
|
||||
case PNG_PIXEL_TRUECOLOR:
|
||||
i = 3;
|
||||
break;
|
||||
case PNG_PIXEL_TRUECOLOR_ALPHA:
|
||||
i = 4;
|
||||
break;
|
||||
}
|
||||
SaveBMP((char *)argv[2], png.getBuffer(), pPalette, png.getWidth(), png.getHeight(), i*png.getBpp());
|
||||
png.close();
|
||||
free(png.getBuffer());
|
||||
// } // for j
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
BIN
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/perf_small.png
Normal file
BIN
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/perf_small.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
209
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/PNGdec.cpp
Normal file
209
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/PNGdec.cpp
Normal file
@@ -0,0 +1,209 @@
|
||||
//
|
||||
// PNG Decoder
|
||||
//
|
||||
// written by Larry Bank
|
||||
// bitbank@pobox.com
|
||||
// Arduino port started 5/3/2021
|
||||
// Original PNG code written 20+ years ago :)
|
||||
// The goal of this code is to decode PNG images on embedded systems
|
||||
//
|
||||
// Copyright 2021 BitBank Software, Inc. All Rights Reserved.
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//===========================================================================
|
||||
//
|
||||
#include "PNGdec.h"
|
||||
|
||||
// forward references
|
||||
PNG_STATIC int PNGInit(PNGIMAGE *pPNG);
|
||||
PNG_STATIC int DecodePNG(PNGIMAGE *pImage, void *pUser, int iOptions);
|
||||
PNG_STATIC uint8_t PNGMakeMask(PNGDRAW *pDraw, uint8_t *pMask, uint8_t ucThreshold);
|
||||
// Include the C code which does the actual work
|
||||
#include "png.inl"
|
||||
|
||||
//
|
||||
// Memory initialization
|
||||
//
|
||||
int PNG::openRAM(uint8_t *pData, int iDataSize, PNG_DRAW_CALLBACK *pfnDraw)
|
||||
{
|
||||
memset(&_png, 0, sizeof(PNGIMAGE));
|
||||
_png.ucMemType = PNG_MEM_RAM;
|
||||
_png.pfnRead = readRAM;
|
||||
_png.pfnSeek = seekMem;
|
||||
_png.pfnDraw = pfnDraw;
|
||||
_png.pfnOpen = NULL;
|
||||
_png.pfnClose = NULL;
|
||||
_png.PNGFile.iSize = iDataSize;
|
||||
_png.PNGFile.pData = pData;
|
||||
return PNGInit(&_png);
|
||||
} /* openRAM() */
|
||||
//
|
||||
// It's necessary to separate out a FLASH version on Harvard architecture machines
|
||||
//
|
||||
int PNG::openFLASH(uint8_t *pData, int iDataSize, PNG_DRAW_CALLBACK *pfnDraw)
|
||||
{
|
||||
memset(&_png, 0, sizeof(PNGIMAGE));
|
||||
_png.ucMemType = PNG_MEM_FLASH;
|
||||
_png.pfnRead = readFLASH;
|
||||
_png.pfnSeek = seekMem;
|
||||
_png.pfnDraw = pfnDraw;
|
||||
_png.pfnOpen = NULL;
|
||||
_png.pfnClose = NULL;
|
||||
_png.PNGFile.iSize = iDataSize;
|
||||
_png.PNGFile.pData = pData;
|
||||
return PNGInit(&_png);
|
||||
} /* openRAM() */
|
||||
|
||||
//
|
||||
// File (SD/MMC) based initialization
|
||||
//
|
||||
int PNG::open(const char *szFilename, PNG_OPEN_CALLBACK *pfnOpen, PNG_CLOSE_CALLBACK *pfnClose, PNG_READ_CALLBACK *pfnRead, PNG_SEEK_CALLBACK *pfnSeek, PNG_DRAW_CALLBACK *pfnDraw)
|
||||
{
|
||||
memset(&_png, 0, sizeof(PNGIMAGE));
|
||||
_png.pfnRead = pfnRead;
|
||||
_png.pfnSeek = pfnSeek;
|
||||
_png.pfnDraw = pfnDraw;
|
||||
_png.pfnOpen = pfnOpen;
|
||||
_png.pfnClose = pfnClose;
|
||||
_png.PNGFile.fHandle = (*pfnOpen)(szFilename, &_png.PNGFile.iSize);
|
||||
if (_png.PNGFile.fHandle == NULL)
|
||||
return 0;
|
||||
return PNGInit(&_png);
|
||||
|
||||
} /* open() */
|
||||
//
|
||||
// return the last error (if any)
|
||||
//
|
||||
int PNG::getLastError()
|
||||
{
|
||||
return _png.iError;
|
||||
} /* getLastError() */
|
||||
//
|
||||
// Get the width of the image in pixels
|
||||
// can be called after opening the file (before decoding)
|
||||
//
|
||||
int PNG::getWidth()
|
||||
{
|
||||
return _png.iWidth;
|
||||
} /* getWidth() */
|
||||
//
|
||||
// Get the height of the image in pixels
|
||||
// can be called after opening the file (before decoding)
|
||||
//
|
||||
int PNG::getHeight()
|
||||
{
|
||||
return _png.iHeight;
|
||||
} /* getHeight() */
|
||||
//
|
||||
// For truecolor and palette images, it's possible to have a single
|
||||
// transparent color defined. This call will return it if defined
|
||||
//
|
||||
uint32_t PNG::getTransparentColor()
|
||||
{
|
||||
return _png.iTransparent;
|
||||
} /* getTransparentColor() */
|
||||
//
|
||||
// Alpha information can be per pixel, per color or a single color
|
||||
// depending on the PNG pixel type of the image
|
||||
// This call simply tells you if there is alpha for the current pixel type
|
||||
//
|
||||
int PNG::hasAlpha()
|
||||
{
|
||||
return _png.iHasAlpha;
|
||||
} /* hasAlpha() */
|
||||
//
|
||||
// Returns true or false for the use of Adam7 interlacing
|
||||
// This option is not supported by the decoder, but after opening the image
|
||||
// you can determine if it's set
|
||||
//
|
||||
int PNG::isInterlaced()
|
||||
{
|
||||
return _png.iInterlaced;
|
||||
} /* isInterlaced() */
|
||||
|
||||
//
|
||||
// Returns the number of bits per color stimulus
|
||||
// values of 1,2,4, and 8 are supported
|
||||
//
|
||||
int PNG::getBpp()
|
||||
{
|
||||
return (int)_png.ucBpp;
|
||||
} /* getBpp() */
|
||||
//
|
||||
// Returns the PNG pixel type (see enum in PNGdec.h)
|
||||
//
|
||||
int PNG::getPixelType()
|
||||
{
|
||||
return (int)_png.ucPixelType;
|
||||
} /* getPixelType() */
|
||||
//
|
||||
// Set the image buffer to memory managed by the caller
|
||||
// If set, decode() will not use the PNGDRAW callback function
|
||||
// and instead write the image into this buffer in one shot
|
||||
//
|
||||
void PNG::setBuffer(uint8_t *pBuffer)
|
||||
{
|
||||
_png.pImage = pBuffer;
|
||||
} /* setBuffer() */
|
||||
//
|
||||
// Returns the previously set image buffer or NULL if there is none
|
||||
//
|
||||
uint8_t * PNG::getBuffer()
|
||||
{
|
||||
return _png.pImage;
|
||||
} /* getBuffer() */
|
||||
//
|
||||
// Returns the size in bytes of the buffer needed to hold the uncompressed image
|
||||
//
|
||||
int PNG::getBufferSize()
|
||||
{
|
||||
return _png.iHeight * _png.iPitch;
|
||||
} /* getBufferSize() */
|
||||
//
|
||||
// Returns a pointer to the palette
|
||||
// If there is alpha info for the palette, it starts at pPalette[768]
|
||||
//
|
||||
uint8_t * PNG::getPalette()
|
||||
{
|
||||
return _png.ucPalette;
|
||||
} /* getPalette() */
|
||||
//
|
||||
// Close the file - not needed when decoding from memory
|
||||
//
|
||||
void PNG::close()
|
||||
{
|
||||
if (_png.pfnClose)
|
||||
(*_png.pfnClose)(_png.PNGFile.fHandle);
|
||||
} /* close() */
|
||||
|
||||
//
|
||||
// Decode the image
|
||||
// returns:
|
||||
// 0 = PNG_SUCCESS
|
||||
// non 0 = PNG enumerated error code
|
||||
//
|
||||
int PNG::decode(void *pUser, int iOptions)
|
||||
{
|
||||
return DecodePNG(&_png, pUser, iOptions);
|
||||
} /* decode() */
|
||||
//
|
||||
// Convert a line of native pixels (all supported formats) into RGB565
|
||||
// can optionally mix in a background color - set to -1 to disable
|
||||
// Background color is in the form of a uint32_t -> 00BBGGRR (MSB on left)
|
||||
//
|
||||
void PNG::getLineAsRGB565(PNGDRAW *pDraw, uint16_t *pPixels, int iEndianness, uint32_t u32Bkgd)
|
||||
{
|
||||
PNGRGB565(pDraw, pPixels, iEndianness, u32Bkgd, hasAlpha());
|
||||
} /* getLineAsRGB565() */
|
||||
|
||||
uint8_t PNG::getAlphaMask(PNGDRAW *pDraw, uint8_t *pMask, uint8_t ucThreshold)
|
||||
{
|
||||
return PNGMakeMask(pDraw, pMask, ucThreshold);
|
||||
} /* getAlphaMask() */
|
||||
216
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/PNGdec.h
Normal file
216
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/PNGdec.h
Normal file
@@ -0,0 +1,216 @@
|
||||
//
|
||||
// PNG Decoder
|
||||
//
|
||||
// written by Larry Bank
|
||||
// bitbank@pobox.com
|
||||
// Arduino port started 5/3/2021
|
||||
// Original PNG code written 20+ years ago :)
|
||||
// The goal of this code is to decode PNG images on embedded systems
|
||||
//
|
||||
// Copyright 2021 BitBank Software, Inc. All Rights Reserved.
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//===========================================================================
|
||||
//
|
||||
#ifndef __PNGDEC__
|
||||
#define __PNGDEC__
|
||||
#if defined( __MACH__ ) || defined( __LINUX__ ) || defined( __MCUXPRESSO )
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#define memcpy_P memcpy
|
||||
#define PROGMEM
|
||||
#else
|
||||
#include <Arduino.h>
|
||||
#endif
|
||||
#include "zutil.h"
|
||||
#include "inftrees.h"
|
||||
#include "inflate.h"
|
||||
//
|
||||
// PNG Decoder
|
||||
// Written by Larry Bank
|
||||
// Copyright (c) 2021 BitBank Software, Inc.
|
||||
//
|
||||
// Designed to decode most PNG images (1-32 bpp)
|
||||
// using less than 40K of RAM
|
||||
//
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
#endif
|
||||
/* Defines and variables */
|
||||
#define PNG_FILE_BUF_SIZE 2048
|
||||
// Number of bytes to reserve for current and previous lines
|
||||
// Defaults to 640 32-bit pixels max width
|
||||
#define PNG_MAX_BUFFERED_PIXELS (640*4 + 1)
|
||||
// PNG filter type
|
||||
enum {
|
||||
PNG_FILTER_NONE=0,
|
||||
PNG_FILTER_SUB,
|
||||
PNG_FILTER_UP,
|
||||
PNG_FILTER_AVG,
|
||||
PNG_FILTER_PAETH,
|
||||
PNG_FILTER_COUNT
|
||||
};
|
||||
|
||||
// decode options
|
||||
enum {
|
||||
PNG_CHECK_CRC = 1,
|
||||
PNG_FAST_PALETTE = 2
|
||||
};
|
||||
|
||||
// source pixel type
|
||||
enum {
|
||||
PNG_PIXEL_GRAYSCALE=0,
|
||||
PNG_PIXEL_TRUECOLOR=2,
|
||||
PNG_PIXEL_INDEXED=3,
|
||||
PNG_PIXEL_GRAY_ALPHA=4,
|
||||
PNG_PIXEL_TRUECOLOR_ALPHA=6
|
||||
};
|
||||
// RGB565 endianness
|
||||
enum {
|
||||
PNG_RGB565_LITTLE_ENDIAN = 0,
|
||||
PNG_RGB565_BIG_ENDIAN
|
||||
};
|
||||
|
||||
enum {
|
||||
PNG_MEM_RAM=0,
|
||||
PNG_MEM_FLASH
|
||||
};
|
||||
|
||||
// Error codes returned by getLastError()
|
||||
enum {
|
||||
PNG_SUCCESS = 0,
|
||||
PNG_INVALID_PARAMETER,
|
||||
PNG_DECODE_ERROR,
|
||||
PNG_MEM_ERROR,
|
||||
PNG_NO_BUFFER,
|
||||
PNG_UNSUPPORTED_FEATURE,
|
||||
PNG_INVALID_FILE,
|
||||
PNG_TOO_BIG
|
||||
};
|
||||
|
||||
typedef struct png_draw_tag
|
||||
{
|
||||
int y; // starting x,y of this line
|
||||
int iWidth; // size of this line
|
||||
int iPitch; // bytes per line
|
||||
int iPixelType; // PNG pixel type (0,2,3,4,6)
|
||||
int iBpp; // bits per color stimulus
|
||||
int iHasAlpha; // flag indicating the presence of an alpha palette
|
||||
void *pUser; // user supplied pointer
|
||||
uint8_t *pPalette;
|
||||
uint16_t *pFastPalette;
|
||||
uint8_t *pPixels;
|
||||
} PNGDRAW;
|
||||
|
||||
typedef struct png_file_tag
|
||||
{
|
||||
int32_t iPos; // current file position
|
||||
int32_t iSize; // file size
|
||||
uint8_t *pData; // memory file pointer
|
||||
void * fHandle; // class pointer to File/SdFat or whatever you want
|
||||
} PNGFILE;
|
||||
|
||||
// Callback function prototypes
|
||||
typedef int32_t (PNG_READ_CALLBACK)(PNGFILE *pFile, uint8_t *pBuf, int32_t iLen);
|
||||
typedef int32_t (PNG_SEEK_CALLBACK)(PNGFILE *pFile, int32_t iPosition);
|
||||
typedef void * (PNG_OPEN_CALLBACK)(const char *szFilename, int32_t *pFileSize);
|
||||
typedef void (PNG_DRAW_CALLBACK)(PNGDRAW *);
|
||||
typedef void (PNG_CLOSE_CALLBACK)(void *pHandle);
|
||||
|
||||
//
|
||||
// our private structure to hold a JPEG image decode state
|
||||
//
|
||||
typedef struct png_image_tag
|
||||
{
|
||||
int iWidth, iHeight; // image size
|
||||
uint8_t ucBpp, ucPixelType;
|
||||
uint8_t ucMemType;
|
||||
uint8_t *pImage;
|
||||
int iPitch; // bytes per line
|
||||
int iHasAlpha;
|
||||
int iInterlaced;
|
||||
uint32_t iTransparent; // transparent color index/value
|
||||
int iError;
|
||||
PNG_READ_CALLBACK *pfnRead;
|
||||
PNG_SEEK_CALLBACK *pfnSeek;
|
||||
PNG_OPEN_CALLBACK *pfnOpen;
|
||||
PNG_DRAW_CALLBACK *pfnDraw;
|
||||
PNG_CLOSE_CALLBACK *pfnClose;
|
||||
PNGFILE PNGFile;
|
||||
uint8_t ucZLIB[32768 + sizeof(inflate_state)]; // put this here to avoid needing malloc/free
|
||||
uint8_t ucPalette[1024];
|
||||
uint8_t ucPixels[PNG_MAX_BUFFERED_PIXELS * 2];
|
||||
uint8_t ucFileBuf[PNG_FILE_BUF_SIZE]; // holds temp file data
|
||||
} PNGIMAGE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define PNG_STATIC static
|
||||
//
|
||||
// The PNG class wraps portable C code which does the actual work
|
||||
//
|
||||
class PNG
|
||||
{
|
||||
public:
|
||||
int openRAM(uint8_t *pData, int iDataSize, PNG_DRAW_CALLBACK *pfnDraw);
|
||||
int openFLASH(uint8_t *pData, int iDataSize, PNG_DRAW_CALLBACK *pfnDraw);
|
||||
int open(const char *szFilename, PNG_OPEN_CALLBACK *pfnOpen, PNG_CLOSE_CALLBACK *pfnClose, PNG_READ_CALLBACK *pfnRead, PNG_SEEK_CALLBACK *pfnSeek, PNG_DRAW_CALLBACK *pfnDraw);
|
||||
void close();
|
||||
int decode(void *pUser, int iOptions);
|
||||
int getWidth();
|
||||
int getHeight();
|
||||
int getBpp();
|
||||
int hasAlpha();
|
||||
uint32_t getTransparentColor();
|
||||
int isInterlaced();
|
||||
uint8_t * getPalette();
|
||||
int getPixelType();
|
||||
int getLastError();
|
||||
int getBufferSize();
|
||||
uint8_t *getBuffer();
|
||||
void setBuffer(uint8_t *pBuffer);
|
||||
uint8_t getAlphaMask(PNGDRAW *pDraw, uint8_t *pMask, uint8_t ucThreshold);
|
||||
void getLineAsRGB565(PNGDRAW *pDraw, uint16_t *pPixels, int iEndianness, uint32_t u32Bkgd);
|
||||
|
||||
private:
|
||||
PNGIMAGE _png;
|
||||
};
|
||||
#else
|
||||
#define PNG_STATIC
|
||||
int PNG_openRAM(PNGIMAGE *pPNG, uint8_t *pData, int iDataSize);
|
||||
int PNG_openFile(PNGIMAGE *pPNG, const char *szFilename);
|
||||
int PNG_getWidth(PNGIMAGE *pPNG);
|
||||
int PNG_getHeight(PNGIMAGE *pPNG);
|
||||
int PNG_decode(PNGIMAGE *pPNG, void *pUser, int iOptions);
|
||||
void PNG_close(PNGIMAGE *pPNG);
|
||||
int PNG_getLastError(PNGIMAGE *pPNG);
|
||||
int PNG_getBpp(PNGIMAGE *pPNG);
|
||||
int PNG_getLastError(PNGIMAGE *pPNG);
|
||||
int PNG_getBufferSize(PNGIMAGE *pPNG);
|
||||
uint8_t *PNG_getPalette(PNGIMAGE *pPNG);
|
||||
int PNG_getPixelType(PNGIMAGE *pPNG);
|
||||
int PNG_hasAlpha(PNGIMAGE *pPNG);
|
||||
int PNG_isInterlaced(PNGIMAGE *pPNG);
|
||||
uint8_t *PNG_getBuffer(PNGIMAGE *pPNG);
|
||||
void PNG_setBuffer(PNGIMAGE *pPNG, uint8_t *pBuffer);
|
||||
#endif // __cplusplus
|
||||
|
||||
// Due to unaligned memory causing an exception, we have to do these macros the slow way
|
||||
#define INTELSHORT(p) ((*p) + (*(p+1)<<8))
|
||||
#define INTELLONG(p) ((*p) + (*(p+1)<<8) + (*(p+2)<<16) + (*(p+3)<<24))
|
||||
#define MOTOSHORT(p) (((*(p))<<8) + (*(p+1)))
|
||||
#define MOTOLONG(p) (((*p)<<24) + ((*(p+1))<<16) + ((*(p+2))<<8) + (*(p+3)))
|
||||
|
||||
// Must be a 32-bit target processor
|
||||
#define REGISTER_WIDTH 32
|
||||
|
||||
#endif // __PNGDEC__
|
||||
186
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/adler32.c
Normal file
186
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/adler32.c
Normal file
@@ -0,0 +1,186 @@
|
||||
/* adler32.c -- compute the Adler-32 checksum of a data stream
|
||||
* Copyright (C) 1995-2011, 2016 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* @(#) $Id$ */
|
||||
|
||||
#include "zutil.h"
|
||||
|
||||
local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
|
||||
|
||||
#define BASE 65521U /* largest prime smaller than 65536 */
|
||||
#define NMAX 5552
|
||||
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
|
||||
|
||||
#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;}
|
||||
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
|
||||
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
|
||||
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
|
||||
#define DO16(buf) DO8(buf,0); DO8(buf,8);
|
||||
|
||||
/* use NO_DIVIDE if your processor does not do division in hardware --
|
||||
try it both ways to see which is faster */
|
||||
#ifdef NO_DIVIDE
|
||||
/* note that this assumes BASE is 65521, where 65536 % 65521 == 15
|
||||
(thank you to John Reiser for pointing this out) */
|
||||
# define CHOP(a) \
|
||||
do { \
|
||||
unsigned long tmp = a >> 16; \
|
||||
a &= 0xffffUL; \
|
||||
a += (tmp << 4) - tmp; \
|
||||
} while (0)
|
||||
# define MOD28(a) \
|
||||
do { \
|
||||
CHOP(a); \
|
||||
if (a >= BASE) a -= BASE; \
|
||||
} while (0)
|
||||
# define MOD(a) \
|
||||
do { \
|
||||
CHOP(a); \
|
||||
MOD28(a); \
|
||||
} while (0)
|
||||
# define MOD63(a) \
|
||||
do { /* this assumes a is not negative */ \
|
||||
z_off64_t tmp = a >> 32; \
|
||||
a &= 0xffffffffL; \
|
||||
a += (tmp << 8) - (tmp << 5) + tmp; \
|
||||
tmp = a >> 16; \
|
||||
a &= 0xffffL; \
|
||||
a += (tmp << 4) - tmp; \
|
||||
tmp = a >> 16; \
|
||||
a &= 0xffffL; \
|
||||
a += (tmp << 4) - tmp; \
|
||||
if (a >= BASE) a -= BASE; \
|
||||
} while (0)
|
||||
#else
|
||||
# define MOD(a) a %= BASE
|
||||
# define MOD28(a) a %= BASE
|
||||
# define MOD63(a) a %= BASE
|
||||
#endif
|
||||
|
||||
/* ========================================================================= */
|
||||
uLong ZEXPORT adler32_z(adler, buf, len)
|
||||
uLong adler;
|
||||
const Bytef *buf;
|
||||
z_size_t len;
|
||||
{
|
||||
unsigned long sum2;
|
||||
unsigned n;
|
||||
|
||||
/* split Adler-32 into component sums */
|
||||
sum2 = (adler >> 16) & 0xffff;
|
||||
adler &= 0xffff;
|
||||
|
||||
/* in case user likes doing a byte at a time, keep it fast */
|
||||
if (len == 1) {
|
||||
adler += buf[0];
|
||||
if (adler >= BASE)
|
||||
adler -= BASE;
|
||||
sum2 += adler;
|
||||
if (sum2 >= BASE)
|
||||
sum2 -= BASE;
|
||||
return adler | (sum2 << 16);
|
||||
}
|
||||
|
||||
/* initial Adler-32 value (deferred check for len == 1 speed) */
|
||||
if (buf == Z_NULL)
|
||||
return 1L;
|
||||
|
||||
/* in case short lengths are provided, keep it somewhat fast */
|
||||
if (len < 16) {
|
||||
while (len--) {
|
||||
adler += *buf++;
|
||||
sum2 += adler;
|
||||
}
|
||||
if (adler >= BASE)
|
||||
adler -= BASE;
|
||||
MOD28(sum2); /* only added so many BASE's */
|
||||
return adler | (sum2 << 16);
|
||||
}
|
||||
|
||||
/* do length NMAX blocks -- requires just one modulo operation */
|
||||
while (len >= NMAX) {
|
||||
len -= NMAX;
|
||||
n = NMAX / 16; /* NMAX is divisible by 16 */
|
||||
do {
|
||||
DO16(buf); /* 16 sums unrolled */
|
||||
buf += 16;
|
||||
} while (--n);
|
||||
MOD(adler);
|
||||
MOD(sum2);
|
||||
}
|
||||
|
||||
/* do remaining bytes (less than NMAX, still just one modulo) */
|
||||
if (len) { /* avoid modulos if none remaining */
|
||||
while (len >= 16) {
|
||||
len -= 16;
|
||||
DO16(buf);
|
||||
buf += 16;
|
||||
}
|
||||
while (len--) {
|
||||
adler += *buf++;
|
||||
sum2 += adler;
|
||||
}
|
||||
MOD(adler);
|
||||
MOD(sum2);
|
||||
}
|
||||
|
||||
/* return recombined sums */
|
||||
return adler | (sum2 << 16);
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
uLong ZEXPORT adler32(adler, buf, len)
|
||||
uLong adler;
|
||||
const Bytef *buf;
|
||||
uInt len;
|
||||
{
|
||||
return adler32_z(adler, buf, len);
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
local uLong adler32_combine_(adler1, adler2, len2)
|
||||
uLong adler1;
|
||||
uLong adler2;
|
||||
z_off64_t len2;
|
||||
{
|
||||
unsigned long sum1;
|
||||
unsigned long sum2;
|
||||
unsigned rem;
|
||||
|
||||
/* for negative len, return invalid adler32 as a clue for debugging */
|
||||
if (len2 < 0)
|
||||
return 0xffffffffUL;
|
||||
|
||||
/* the derivation of this formula is left as an exercise for the reader */
|
||||
MOD63(len2); /* assumes len2 >= 0 */
|
||||
rem = (unsigned)len2;
|
||||
sum1 = adler1 & 0xffff;
|
||||
sum2 = rem * sum1;
|
||||
MOD(sum2);
|
||||
sum1 += (adler2 & 0xffff) + BASE - 1;
|
||||
sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
|
||||
if (sum1 >= BASE) sum1 -= BASE;
|
||||
if (sum1 >= BASE) sum1 -= BASE;
|
||||
if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1);
|
||||
if (sum2 >= BASE) sum2 -= BASE;
|
||||
return sum1 | (sum2 << 16);
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
uLong ZEXPORT adler32_combine(adler1, adler2, len2)
|
||||
uLong adler1;
|
||||
uLong adler2;
|
||||
z_off_t len2;
|
||||
{
|
||||
return adler32_combine_(adler1, adler2, len2);
|
||||
}
|
||||
|
||||
uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
|
||||
uLong adler1;
|
||||
uLong adler2;
|
||||
z_off64_t len2;
|
||||
{
|
||||
return adler32_combine_(adler1, adler2, len2);
|
||||
}
|
||||
442
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/crc32.c
Normal file
442
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/crc32.c
Normal file
@@ -0,0 +1,442 @@
|
||||
/* crc32.c -- compute the CRC-32 of a data stream
|
||||
* Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*
|
||||
* Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
|
||||
* CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
|
||||
* tables for updating the shift register in one step with three exclusive-ors
|
||||
* instead of four steps with four exclusive-ors. This results in about a
|
||||
* factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
|
||||
*/
|
||||
|
||||
/* @(#) $Id$ */
|
||||
|
||||
/*
|
||||
Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
|
||||
protection on the static variables used to control the first-use generation
|
||||
of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
|
||||
first call get_crc_table() to initialize the tables before allowing more than
|
||||
one thread to use crc32().
|
||||
|
||||
DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
|
||||
*/
|
||||
|
||||
#ifdef MAKECRCH
|
||||
# include <stdio.h>
|
||||
# ifndef DYNAMIC_CRC_TABLE
|
||||
# define DYNAMIC_CRC_TABLE
|
||||
# endif /* !DYNAMIC_CRC_TABLE */
|
||||
#endif /* MAKECRCH */
|
||||
|
||||
#include "zutil.h" /* for STDC and FAR definitions */
|
||||
|
||||
/* Definitions for doing the crc four data bytes at a time. */
|
||||
#if !defined(NOBYFOUR) && defined(Z_U4)
|
||||
# define BYFOUR
|
||||
#endif
|
||||
#ifdef BYFOUR
|
||||
local unsigned long crc32_little OF((unsigned long,
|
||||
const unsigned char FAR *, z_size_t));
|
||||
local unsigned long crc32_big OF((unsigned long,
|
||||
const unsigned char FAR *, z_size_t));
|
||||
# define TBLS 8
|
||||
#else
|
||||
# define TBLS 1
|
||||
#endif /* BYFOUR */
|
||||
|
||||
/* Local functions for crc concatenation */
|
||||
local unsigned long gf2_matrix_times OF((unsigned long *mat,
|
||||
unsigned long vec));
|
||||
local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
|
||||
local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
|
||||
|
||||
|
||||
#ifdef DYNAMIC_CRC_TABLE
|
||||
|
||||
local volatile int crc_table_empty = 1;
|
||||
local z_crc_t FAR crc_table[TBLS][256];
|
||||
local void make_crc_table OF((void));
|
||||
#ifdef MAKECRCH
|
||||
local void write_table OF((FILE *, const z_crc_t FAR *));
|
||||
#endif /* MAKECRCH */
|
||||
/*
|
||||
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
|
||||
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
|
||||
|
||||
Polynomials over GF(2) are represented in binary, one bit per coefficient,
|
||||
with the lowest powers in the most significant bit. Then adding polynomials
|
||||
is just exclusive-or, and multiplying a polynomial by x is a right shift by
|
||||
one. If we call the above polynomial p, and represent a byte as the
|
||||
polynomial q, also with the lowest power in the most significant bit (so the
|
||||
byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
|
||||
where a mod b means the remainder after dividing a by b.
|
||||
|
||||
This calculation is done using the shift-register method of multiplying and
|
||||
taking the remainder. The register is initialized to zero, and for each
|
||||
incoming bit, x^32 is added mod p to the register if the bit is a one (where
|
||||
x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
|
||||
x (which is shifting right by one and adding x^32 mod p if the bit shifted
|
||||
out is a one). We start with the highest power (least significant bit) of
|
||||
q and repeat for all eight bits of q.
|
||||
|
||||
The first table is simply the CRC of all possible eight bit values. This is
|
||||
all the information needed to generate CRCs on data a byte at a time for all
|
||||
combinations of CRC register values and incoming bytes. The remaining tables
|
||||
allow for word-at-a-time CRC calculation for both big-endian and little-
|
||||
endian machines, where a word is four bytes.
|
||||
*/
|
||||
local void make_crc_table()
|
||||
{
|
||||
z_crc_t c;
|
||||
int n, k;
|
||||
z_crc_t poly; /* polynomial exclusive-or pattern */
|
||||
/* terms of polynomial defining this crc (except x^32): */
|
||||
static volatile int first = 1; /* flag to limit concurrent making */
|
||||
static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
|
||||
|
||||
/* See if another task is already doing this (not thread-safe, but better
|
||||
than nothing -- significantly reduces duration of vulnerability in
|
||||
case the advice about DYNAMIC_CRC_TABLE is ignored) */
|
||||
if (first) {
|
||||
first = 0;
|
||||
|
||||
/* make exclusive-or pattern from polynomial (0xedb88320UL) */
|
||||
poly = 0;
|
||||
for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
|
||||
poly |= (z_crc_t)1 << (31 - p[n]);
|
||||
|
||||
/* generate a crc for every 8-bit value */
|
||||
for (n = 0; n < 256; n++) {
|
||||
c = (z_crc_t)n;
|
||||
for (k = 0; k < 8; k++)
|
||||
c = c & 1 ? poly ^ (c >> 1) : c >> 1;
|
||||
crc_table[0][n] = c;
|
||||
}
|
||||
|
||||
#ifdef BYFOUR
|
||||
/* generate crc for each value followed by one, two, and three zeros,
|
||||
and then the byte reversal of those as well as the first table */
|
||||
for (n = 0; n < 256; n++) {
|
||||
c = crc_table[0][n];
|
||||
crc_table[4][n] = ZSWAP32(c);
|
||||
for (k = 1; k < 4; k++) {
|
||||
c = crc_table[0][c & 0xff] ^ (c >> 8);
|
||||
crc_table[k][n] = c;
|
||||
crc_table[k + 4][n] = ZSWAP32(c);
|
||||
}
|
||||
}
|
||||
#endif /* BYFOUR */
|
||||
|
||||
crc_table_empty = 0;
|
||||
}
|
||||
else { /* not first */
|
||||
/* wait for the other guy to finish (not efficient, but rare) */
|
||||
while (crc_table_empty)
|
||||
;
|
||||
}
|
||||
|
||||
#ifdef MAKECRCH
|
||||
/* write out CRC tables to crc32.h */
|
||||
{
|
||||
FILE *out;
|
||||
|
||||
out = fopen("crc32.h", "w");
|
||||
if (out == NULL) return;
|
||||
fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
|
||||
fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
|
||||
fprintf(out, "local const z_crc_t FAR ");
|
||||
fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
|
||||
write_table(out, crc_table[0]);
|
||||
# ifdef BYFOUR
|
||||
fprintf(out, "#ifdef BYFOUR\n");
|
||||
for (k = 1; k < 8; k++) {
|
||||
fprintf(out, " },\n {\n");
|
||||
write_table(out, crc_table[k]);
|
||||
}
|
||||
fprintf(out, "#endif\n");
|
||||
# endif /* BYFOUR */
|
||||
fprintf(out, " }\n};\n");
|
||||
fclose(out);
|
||||
}
|
||||
#endif /* MAKECRCH */
|
||||
}
|
||||
|
||||
#ifdef MAKECRCH
|
||||
local void write_table(out, table)
|
||||
FILE *out;
|
||||
const z_crc_t FAR *table;
|
||||
{
|
||||
int n;
|
||||
|
||||
for (n = 0; n < 256; n++)
|
||||
fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ",
|
||||
(unsigned long)(table[n]),
|
||||
n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
|
||||
}
|
||||
#endif /* MAKECRCH */
|
||||
|
||||
#else /* !DYNAMIC_CRC_TABLE */
|
||||
/* ========================================================================
|
||||
* Tables of CRC-32s of all single-byte values, made by make_crc_table().
|
||||
*/
|
||||
#include "crc32.h"
|
||||
#endif /* DYNAMIC_CRC_TABLE */
|
||||
|
||||
/* =========================================================================
|
||||
* This function can be used by asm versions of crc32()
|
||||
*/
|
||||
const z_crc_t FAR * ZEXPORT get_crc_table()
|
||||
{
|
||||
#ifdef DYNAMIC_CRC_TABLE
|
||||
if (crc_table_empty)
|
||||
make_crc_table();
|
||||
#endif /* DYNAMIC_CRC_TABLE */
|
||||
return (const z_crc_t FAR *)crc_table;
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
|
||||
#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
|
||||
|
||||
/* ========================================================================= */
|
||||
unsigned long ZEXPORT crc32_z(crc, buf, len)
|
||||
unsigned long crc;
|
||||
const unsigned char FAR *buf;
|
||||
z_size_t len;
|
||||
{
|
||||
if (buf == Z_NULL) return 0UL;
|
||||
|
||||
#ifdef DYNAMIC_CRC_TABLE
|
||||
if (crc_table_empty)
|
||||
make_crc_table();
|
||||
#endif /* DYNAMIC_CRC_TABLE */
|
||||
|
||||
#ifdef BYFOUR
|
||||
if (sizeof(void *) == sizeof(ptrdiff_t)) {
|
||||
z_crc_t endian;
|
||||
|
||||
endian = 1;
|
||||
if (*((unsigned char *)(&endian)))
|
||||
return crc32_little(crc, buf, len);
|
||||
else
|
||||
return crc32_big(crc, buf, len);
|
||||
}
|
||||
#endif /* BYFOUR */
|
||||
crc = crc ^ 0xffffffffUL;
|
||||
while (len >= 8) {
|
||||
DO8;
|
||||
len -= 8;
|
||||
}
|
||||
if (len) do {
|
||||
DO1;
|
||||
} while (--len);
|
||||
return crc ^ 0xffffffffUL;
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
unsigned long ZEXPORT crc32(crc, buf, len)
|
||||
unsigned long crc;
|
||||
const unsigned char FAR *buf;
|
||||
uInt len;
|
||||
{
|
||||
return crc32_z(crc, buf, len);
|
||||
}
|
||||
|
||||
#ifdef BYFOUR
|
||||
|
||||
/*
|
||||
This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
|
||||
integer pointer type. This violates the strict aliasing rule, where a
|
||||
compiler can assume, for optimization purposes, that two pointers to
|
||||
fundamentally different types won't ever point to the same memory. This can
|
||||
manifest as a problem only if one of the pointers is written to. This code
|
||||
only reads from those pointers. So long as this code remains isolated in
|
||||
this compilation unit, there won't be a problem. For this reason, this code
|
||||
should not be copied and pasted into a compilation unit in which other code
|
||||
writes to the buffer that is passed to these routines.
|
||||
*/
|
||||
|
||||
/* ========================================================================= */
|
||||
#define DOLIT4 c ^= *buf4++; \
|
||||
c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
|
||||
crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
|
||||
#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
|
||||
|
||||
/* ========================================================================= */
|
||||
local unsigned long crc32_little(crc, buf, len)
|
||||
unsigned long crc;
|
||||
const unsigned char FAR *buf;
|
||||
z_size_t len;
|
||||
{
|
||||
register z_crc_t c;
|
||||
register const z_crc_t FAR *buf4;
|
||||
|
||||
c = (z_crc_t)crc;
|
||||
c = ~c;
|
||||
while (len && ((ptrdiff_t)buf & 3)) {
|
||||
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
|
||||
len--;
|
||||
}
|
||||
|
||||
buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
|
||||
while (len >= 32) {
|
||||
DOLIT32;
|
||||
len -= 32;
|
||||
}
|
||||
while (len >= 4) {
|
||||
DOLIT4;
|
||||
len -= 4;
|
||||
}
|
||||
buf = (const unsigned char FAR *)buf4;
|
||||
|
||||
if (len) do {
|
||||
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
|
||||
} while (--len);
|
||||
c = ~c;
|
||||
return (unsigned long)c;
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
#define DOBIG4 c ^= *buf4++; \
|
||||
c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
|
||||
crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
|
||||
#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
|
||||
|
||||
/* ========================================================================= */
|
||||
local unsigned long crc32_big(crc, buf, len)
|
||||
unsigned long crc;
|
||||
const unsigned char FAR *buf;
|
||||
z_size_t len;
|
||||
{
|
||||
register z_crc_t c;
|
||||
register const z_crc_t FAR *buf4;
|
||||
|
||||
c = ZSWAP32((z_crc_t)crc);
|
||||
c = ~c;
|
||||
while (len && ((ptrdiff_t)buf & 3)) {
|
||||
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
|
||||
len--;
|
||||
}
|
||||
|
||||
buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
|
||||
while (len >= 32) {
|
||||
DOBIG32;
|
||||
len -= 32;
|
||||
}
|
||||
while (len >= 4) {
|
||||
DOBIG4;
|
||||
len -= 4;
|
||||
}
|
||||
buf = (const unsigned char FAR *)buf4;
|
||||
|
||||
if (len) do {
|
||||
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
|
||||
} while (--len);
|
||||
c = ~c;
|
||||
return (unsigned long)(ZSWAP32(c));
|
||||
}
|
||||
|
||||
#endif /* BYFOUR */
|
||||
|
||||
#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
|
||||
|
||||
/* ========================================================================= */
|
||||
local unsigned long gf2_matrix_times(mat, vec)
|
||||
unsigned long *mat;
|
||||
unsigned long vec;
|
||||
{
|
||||
unsigned long sum;
|
||||
|
||||
sum = 0;
|
||||
while (vec) {
|
||||
if (vec & 1)
|
||||
sum ^= *mat;
|
||||
vec >>= 1;
|
||||
mat++;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
local void gf2_matrix_square(square, mat)
|
||||
unsigned long *square;
|
||||
unsigned long *mat;
|
||||
{
|
||||
int n;
|
||||
|
||||
for (n = 0; n < GF2_DIM; n++)
|
||||
square[n] = gf2_matrix_times(mat, mat[n]);
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
local uLong crc32_combine_(crc1, crc2, len2)
|
||||
uLong crc1;
|
||||
uLong crc2;
|
||||
z_off64_t len2;
|
||||
{
|
||||
int n;
|
||||
unsigned long row;
|
||||
unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
|
||||
unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
|
||||
|
||||
/* degenerate case (also disallow negative lengths) */
|
||||
if (len2 <= 0)
|
||||
return crc1;
|
||||
|
||||
/* put operator for one zero bit in odd */
|
||||
odd[0] = 0xedb88320UL; /* CRC-32 polynomial */
|
||||
row = 1;
|
||||
for (n = 1; n < GF2_DIM; n++) {
|
||||
odd[n] = row;
|
||||
row <<= 1;
|
||||
}
|
||||
|
||||
/* put operator for two zero bits in even */
|
||||
gf2_matrix_square(even, odd);
|
||||
|
||||
/* put operator for four zero bits in odd */
|
||||
gf2_matrix_square(odd, even);
|
||||
|
||||
/* apply len2 zeros to crc1 (first square will put the operator for one
|
||||
zero byte, eight zero bits, in even) */
|
||||
do {
|
||||
/* apply zeros operator for this bit of len2 */
|
||||
gf2_matrix_square(even, odd);
|
||||
if (len2 & 1)
|
||||
crc1 = gf2_matrix_times(even, crc1);
|
||||
len2 >>= 1;
|
||||
|
||||
/* if no more bits set, then done */
|
||||
if (len2 == 0)
|
||||
break;
|
||||
|
||||
/* another iteration of the loop with odd and even swapped */
|
||||
gf2_matrix_square(odd, even);
|
||||
if (len2 & 1)
|
||||
crc1 = gf2_matrix_times(odd, crc1);
|
||||
len2 >>= 1;
|
||||
|
||||
/* if no more bits set, then done */
|
||||
} while (len2 != 0);
|
||||
|
||||
/* return combined crc */
|
||||
crc1 ^= crc2;
|
||||
return crc1;
|
||||
}
|
||||
|
||||
/* ========================================================================= */
|
||||
uLong ZEXPORT crc32_combine(crc1, crc2, len2)
|
||||
uLong crc1;
|
||||
uLong crc2;
|
||||
z_off_t len2;
|
||||
{
|
||||
return crc32_combine_(crc1, crc2, len2);
|
||||
}
|
||||
|
||||
uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
|
||||
uLong crc1;
|
||||
uLong crc2;
|
||||
z_off64_t len2;
|
||||
{
|
||||
return crc32_combine_(crc1, crc2, len2);
|
||||
}
|
||||
441
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/crc32.h
Normal file
441
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/crc32.h
Normal file
@@ -0,0 +1,441 @@
|
||||
/* crc32.h -- tables for rapid CRC calculation
|
||||
* Generated automatically by crc32.c
|
||||
*/
|
||||
|
||||
local const z_crc_t FAR crc_table[TBLS][256] =
|
||||
{
|
||||
{
|
||||
0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
|
||||
0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
|
||||
0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
|
||||
0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
|
||||
0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
|
||||
0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
|
||||
0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
|
||||
0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
|
||||
0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
|
||||
0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
|
||||
0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
|
||||
0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
|
||||
0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
|
||||
0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
|
||||
0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
|
||||
0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
|
||||
0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
|
||||
0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
|
||||
0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
|
||||
0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
|
||||
0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
|
||||
0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
|
||||
0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
|
||||
0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
|
||||
0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
|
||||
0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
|
||||
0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
|
||||
0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
|
||||
0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
|
||||
0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
|
||||
0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
|
||||
0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
|
||||
0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
|
||||
0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
|
||||
0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
|
||||
0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
|
||||
0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
|
||||
0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
|
||||
0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
|
||||
0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
|
||||
0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
|
||||
0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
|
||||
0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
|
||||
0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
|
||||
0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
|
||||
0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
|
||||
0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
|
||||
0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
|
||||
0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
|
||||
0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
|
||||
0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
|
||||
0x2d02ef8dUL
|
||||
#ifdef BYFOUR
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
|
||||
0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
|
||||
0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
|
||||
0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
|
||||
0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
|
||||
0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
|
||||
0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
|
||||
0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
|
||||
0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
|
||||
0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
|
||||
0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
|
||||
0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
|
||||
0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
|
||||
0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
|
||||
0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
|
||||
0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
|
||||
0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
|
||||
0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
|
||||
0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
|
||||
0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
|
||||
0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
|
||||
0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
|
||||
0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
|
||||
0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
|
||||
0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
|
||||
0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
|
||||
0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
|
||||
0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
|
||||
0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
|
||||
0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
|
||||
0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
|
||||
0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
|
||||
0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
|
||||
0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
|
||||
0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
|
||||
0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
|
||||
0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
|
||||
0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
|
||||
0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
|
||||
0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
|
||||
0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
|
||||
0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
|
||||
0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
|
||||
0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
|
||||
0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
|
||||
0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
|
||||
0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
|
||||
0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
|
||||
0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
|
||||
0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
|
||||
0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
|
||||
0x9324fd72UL
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
|
||||
0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
|
||||
0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
|
||||
0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
|
||||
0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
|
||||
0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
|
||||
0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
|
||||
0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
|
||||
0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
|
||||
0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
|
||||
0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
|
||||
0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
|
||||
0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
|
||||
0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
|
||||
0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
|
||||
0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
|
||||
0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
|
||||
0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
|
||||
0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
|
||||
0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
|
||||
0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
|
||||
0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
|
||||
0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
|
||||
0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
|
||||
0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
|
||||
0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
|
||||
0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
|
||||
0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
|
||||
0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
|
||||
0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
|
||||
0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
|
||||
0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
|
||||
0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
|
||||
0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
|
||||
0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
|
||||
0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
|
||||
0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
|
||||
0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
|
||||
0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
|
||||
0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
|
||||
0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
|
||||
0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
|
||||
0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
|
||||
0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
|
||||
0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
|
||||
0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
|
||||
0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
|
||||
0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
|
||||
0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
|
||||
0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
|
||||
0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
|
||||
0xbe9834edUL
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
|
||||
0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
|
||||
0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
|
||||
0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
|
||||
0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
|
||||
0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
|
||||
0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
|
||||
0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
|
||||
0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
|
||||
0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
|
||||
0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
|
||||
0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
|
||||
0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
|
||||
0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
|
||||
0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
|
||||
0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
|
||||
0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
|
||||
0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
|
||||
0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
|
||||
0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
|
||||
0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
|
||||
0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
|
||||
0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
|
||||
0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
|
||||
0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
|
||||
0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
|
||||
0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
|
||||
0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
|
||||
0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
|
||||
0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
|
||||
0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
|
||||
0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
|
||||
0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
|
||||
0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
|
||||
0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
|
||||
0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
|
||||
0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
|
||||
0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
|
||||
0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
|
||||
0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
|
||||
0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
|
||||
0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
|
||||
0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
|
||||
0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
|
||||
0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
|
||||
0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
|
||||
0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
|
||||
0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
|
||||
0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
|
||||
0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
|
||||
0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
|
||||
0xde0506f1UL
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
|
||||
0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
|
||||
0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
|
||||
0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
|
||||
0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
|
||||
0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
|
||||
0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
|
||||
0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
|
||||
0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
|
||||
0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
|
||||
0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
|
||||
0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
|
||||
0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
|
||||
0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
|
||||
0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
|
||||
0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
|
||||
0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
|
||||
0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
|
||||
0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
|
||||
0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
|
||||
0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
|
||||
0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
|
||||
0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
|
||||
0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
|
||||
0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
|
||||
0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
|
||||
0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
|
||||
0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
|
||||
0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
|
||||
0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
|
||||
0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
|
||||
0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
|
||||
0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
|
||||
0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
|
||||
0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
|
||||
0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
|
||||
0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
|
||||
0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
|
||||
0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
|
||||
0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
|
||||
0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
|
||||
0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
|
||||
0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
|
||||
0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
|
||||
0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
|
||||
0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
|
||||
0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
|
||||
0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
|
||||
0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
|
||||
0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
|
||||
0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
|
||||
0x8def022dUL
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
|
||||
0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
|
||||
0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
|
||||
0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
|
||||
0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
|
||||
0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
|
||||
0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
|
||||
0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
|
||||
0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
|
||||
0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
|
||||
0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
|
||||
0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
|
||||
0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
|
||||
0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
|
||||
0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
|
||||
0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
|
||||
0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
|
||||
0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
|
||||
0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
|
||||
0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
|
||||
0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
|
||||
0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
|
||||
0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
|
||||
0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
|
||||
0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
|
||||
0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
|
||||
0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
|
||||
0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
|
||||
0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
|
||||
0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
|
||||
0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
|
||||
0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
|
||||
0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
|
||||
0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
|
||||
0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
|
||||
0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
|
||||
0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
|
||||
0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
|
||||
0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
|
||||
0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
|
||||
0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
|
||||
0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
|
||||
0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
|
||||
0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
|
||||
0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
|
||||
0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
|
||||
0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
|
||||
0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
|
||||
0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
|
||||
0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
|
||||
0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
|
||||
0x72fd2493UL
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
|
||||
0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
|
||||
0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
|
||||
0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
|
||||
0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
|
||||
0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
|
||||
0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
|
||||
0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
|
||||
0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
|
||||
0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
|
||||
0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
|
||||
0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
|
||||
0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
|
||||
0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
|
||||
0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
|
||||
0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
|
||||
0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
|
||||
0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
|
||||
0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
|
||||
0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
|
||||
0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
|
||||
0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
|
||||
0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
|
||||
0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
|
||||
0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
|
||||
0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
|
||||
0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
|
||||
0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
|
||||
0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
|
||||
0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
|
||||
0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
|
||||
0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
|
||||
0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
|
||||
0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
|
||||
0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
|
||||
0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
|
||||
0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
|
||||
0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
|
||||
0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
|
||||
0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
|
||||
0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
|
||||
0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
|
||||
0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
|
||||
0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
|
||||
0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
|
||||
0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
|
||||
0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
|
||||
0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
|
||||
0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
|
||||
0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
|
||||
0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
|
||||
0xed3498beUL
|
||||
},
|
||||
{
|
||||
0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
|
||||
0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
|
||||
0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
|
||||
0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
|
||||
0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
|
||||
0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
|
||||
0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
|
||||
0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
|
||||
0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
|
||||
0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
|
||||
0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
|
||||
0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
|
||||
0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
|
||||
0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
|
||||
0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
|
||||
0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
|
||||
0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
|
||||
0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
|
||||
0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
|
||||
0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
|
||||
0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
|
||||
0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
|
||||
0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
|
||||
0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
|
||||
0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
|
||||
0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
|
||||
0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
|
||||
0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
|
||||
0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
|
||||
0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
|
||||
0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
|
||||
0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
|
||||
0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
|
||||
0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
|
||||
0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
|
||||
0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
|
||||
0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
|
||||
0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
|
||||
0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
|
||||
0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
|
||||
0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
|
||||
0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
|
||||
0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
|
||||
0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
|
||||
0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
|
||||
0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
|
||||
0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
|
||||
0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
|
||||
0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
|
||||
0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
|
||||
0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
|
||||
0xf10605deUL
|
||||
#endif
|
||||
}
|
||||
};
|
||||
640
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/infback.c
Normal file
640
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/infback.c
Normal file
@@ -0,0 +1,640 @@
|
||||
/* infback.c -- inflate using a call-back interface
|
||||
* Copyright (C) 1995-2016 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/*
|
||||
This code is largely copied from inflate.c. Normally either infback.o or
|
||||
inflate.o would be linked into an application--not both. The interface
|
||||
with inffast.c is retained so that optimized assembler-coded versions of
|
||||
inflate_fast() can be used with either inflate.c or infback.c.
|
||||
*/
|
||||
|
||||
#include "zutil.h"
|
||||
#include "inftrees.h"
|
||||
#include "inflate.h"
|
||||
#include "inffast.h"
|
||||
|
||||
/* function prototypes */
|
||||
local void fixedtables OF((struct inflate_state FAR *state));
|
||||
|
||||
/*
|
||||
strm provides memory allocation functions in zalloc and zfree, or
|
||||
Z_NULL to use the library memory allocation functions.
|
||||
|
||||
windowBits is in the range 8..15, and window is a user-supplied
|
||||
window and output buffer that is 2**windowBits bytes.
|
||||
*/
|
||||
int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
|
||||
z_streamp strm;
|
||||
int windowBits;
|
||||
unsigned char FAR *window;
|
||||
const char *version;
|
||||
int stream_size;
|
||||
{
|
||||
struct inflate_state FAR *state;
|
||||
|
||||
if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
|
||||
stream_size != (int)(sizeof(z_stream)))
|
||||
return Z_VERSION_ERROR;
|
||||
if (strm == Z_NULL || window == Z_NULL ||
|
||||
windowBits < 8 || windowBits > 15)
|
||||
return Z_STREAM_ERROR;
|
||||
strm->msg = Z_NULL; /* in case we return an error */
|
||||
if (strm->zalloc == (alloc_func)0) {
|
||||
#ifdef Z_SOLO
|
||||
return Z_STREAM_ERROR;
|
||||
#else
|
||||
strm->zalloc = zcalloc;
|
||||
strm->opaque = (voidpf)0;
|
||||
#endif
|
||||
}
|
||||
if (strm->zfree == (free_func)0)
|
||||
#ifdef Z_SOLO
|
||||
return Z_STREAM_ERROR;
|
||||
#else
|
||||
strm->zfree = zcfree;
|
||||
#endif
|
||||
state = (struct inflate_state FAR *)ZALLOC(strm, 1,
|
||||
sizeof(struct inflate_state));
|
||||
if (state == Z_NULL) return Z_MEM_ERROR;
|
||||
Tracev((stderr, "inflate: allocated\n"));
|
||||
strm->state = (struct internal_state FAR *)state;
|
||||
state->dmax = 32768U;
|
||||
state->wbits = (uInt)windowBits;
|
||||
state->wsize = 1U << windowBits;
|
||||
state->window = window;
|
||||
state->wnext = 0;
|
||||
state->whave = 0;
|
||||
return Z_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
Return state with length and distance decoding tables and index sizes set to
|
||||
fixed code decoding. Normally this returns fixed tables from inffixed.h.
|
||||
If BUILDFIXED is defined, then instead this routine builds the tables the
|
||||
first time it's called, and returns those tables the first time and
|
||||
thereafter. This reduces the size of the code by about 2K bytes, in
|
||||
exchange for a little execution time. However, BUILDFIXED should not be
|
||||
used for threaded applications, since the rewriting of the tables and virgin
|
||||
may not be thread-safe.
|
||||
*/
|
||||
local void fixedtables(state)
|
||||
struct inflate_state FAR *state;
|
||||
{
|
||||
#ifdef BUILDFIXED
|
||||
static int virgin = 1;
|
||||
static code *lenfix, *distfix;
|
||||
static code fixed[544];
|
||||
|
||||
/* build fixed huffman tables if first call (may not be thread safe) */
|
||||
if (virgin) {
|
||||
unsigned sym, bits;
|
||||
static code *next;
|
||||
|
||||
/* literal/length table */
|
||||
sym = 0;
|
||||
while (sym < 144) state->lens[sym++] = 8;
|
||||
while (sym < 256) state->lens[sym++] = 9;
|
||||
while (sym < 280) state->lens[sym++] = 7;
|
||||
while (sym < 288) state->lens[sym++] = 8;
|
||||
next = fixed;
|
||||
lenfix = next;
|
||||
bits = 9;
|
||||
inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
|
||||
|
||||
/* distance table */
|
||||
sym = 0;
|
||||
while (sym < 32) state->lens[sym++] = 5;
|
||||
distfix = next;
|
||||
bits = 5;
|
||||
inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
|
||||
|
||||
/* do this just once */
|
||||
virgin = 0;
|
||||
}
|
||||
#else /* !BUILDFIXED */
|
||||
# include "inffixed.h"
|
||||
#endif /* BUILDFIXED */
|
||||
state->lencode = lenfix;
|
||||
state->lenbits = 9;
|
||||
state->distcode = distfix;
|
||||
state->distbits = 5;
|
||||
}
|
||||
|
||||
/* Macros for inflateBack(): */
|
||||
|
||||
/* Load returned state from inflate_fast() */
|
||||
#define LOAD() \
|
||||
do { \
|
||||
put = strm->next_out; \
|
||||
left = strm->avail_out; \
|
||||
next = strm->next_in; \
|
||||
have = strm->avail_in; \
|
||||
hold = state->hold; \
|
||||
bits = state->bits; \
|
||||
} while (0)
|
||||
|
||||
/* Set state from registers for inflate_fast() */
|
||||
#define RESTORE() \
|
||||
do { \
|
||||
strm->next_out = put; \
|
||||
strm->avail_out = left; \
|
||||
strm->next_in = next; \
|
||||
strm->avail_in = have; \
|
||||
state->hold = hold; \
|
||||
state->bits = bits; \
|
||||
} while (0)
|
||||
|
||||
/* Clear the input bit accumulator */
|
||||
#define INITBITS() \
|
||||
do { \
|
||||
hold = 0; \
|
||||
bits = 0; \
|
||||
} while (0)
|
||||
|
||||
/* Assure that some input is available. If input is requested, but denied,
|
||||
then return a Z_BUF_ERROR from inflateBack(). */
|
||||
#define PULL() \
|
||||
do { \
|
||||
if (have == 0) { \
|
||||
have = in(in_desc, &next); \
|
||||
if (have == 0) { \
|
||||
next = Z_NULL; \
|
||||
ret = Z_BUF_ERROR; \
|
||||
goto inf_leave; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Get a byte of input into the bit accumulator, or return from inflateBack()
|
||||
with an error if there is no input available. */
|
||||
#define PULLBYTE() \
|
||||
do { \
|
||||
PULL(); \
|
||||
have--; \
|
||||
hold += (unsigned long)(*next++) << bits; \
|
||||
bits += 8; \
|
||||
} while (0)
|
||||
|
||||
/* Assure that there are at least n bits in the bit accumulator. If there is
|
||||
not enough available input to do that, then return from inflateBack() with
|
||||
an error. */
|
||||
#define NEEDBITS(n) \
|
||||
do { \
|
||||
while (bits < (unsigned)(n)) \
|
||||
PULLBYTE(); \
|
||||
} while (0)
|
||||
|
||||
/* Return the low n bits of the bit accumulator (n < 16) */
|
||||
#define BITS(n) \
|
||||
((unsigned)hold & ((1U << (n)) - 1))
|
||||
|
||||
/* Remove n bits from the bit accumulator */
|
||||
#define DROPBITS(n) \
|
||||
do { \
|
||||
hold >>= (n); \
|
||||
bits -= (unsigned)(n); \
|
||||
} while (0)
|
||||
|
||||
/* Remove zero to seven bits as needed to go to a byte boundary */
|
||||
#define BYTEBITS() \
|
||||
do { \
|
||||
hold >>= bits & 7; \
|
||||
bits -= bits & 7; \
|
||||
} while (0)
|
||||
|
||||
/* Assure that some output space is available, by writing out the window
|
||||
if it's full. If the write fails, return from inflateBack() with a
|
||||
Z_BUF_ERROR. */
|
||||
#define ROOM() \
|
||||
do { \
|
||||
if (left == 0) { \
|
||||
put = state->window; \
|
||||
left = state->wsize; \
|
||||
state->whave = left; \
|
||||
if (out(out_desc, put, left)) { \
|
||||
ret = Z_BUF_ERROR; \
|
||||
goto inf_leave; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
strm provides the memory allocation functions and window buffer on input,
|
||||
and provides information on the unused input on return. For Z_DATA_ERROR
|
||||
returns, strm will also provide an error message.
|
||||
|
||||
in() and out() are the call-back input and output functions. When
|
||||
inflateBack() needs more input, it calls in(). When inflateBack() has
|
||||
filled the window with output, or when it completes with data in the
|
||||
window, it calls out() to write out the data. The application must not
|
||||
change the provided input until in() is called again or inflateBack()
|
||||
returns. The application must not change the window/output buffer until
|
||||
inflateBack() returns.
|
||||
|
||||
in() and out() are called with a descriptor parameter provided in the
|
||||
inflateBack() call. This parameter can be a structure that provides the
|
||||
information required to do the read or write, as well as accumulated
|
||||
information on the input and output such as totals and check values.
|
||||
|
||||
in() should return zero on failure. out() should return non-zero on
|
||||
failure. If either in() or out() fails, than inflateBack() returns a
|
||||
Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it
|
||||
was in() or out() that caused in the error. Otherwise, inflateBack()
|
||||
returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
|
||||
error, or Z_MEM_ERROR if it could not allocate memory for the state.
|
||||
inflateBack() can also return Z_STREAM_ERROR if the input parameters
|
||||
are not correct, i.e. strm is Z_NULL or the state was not initialized.
|
||||
*/
|
||||
int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
|
||||
z_streamp strm;
|
||||
in_func in;
|
||||
void FAR *in_desc;
|
||||
out_func out;
|
||||
void FAR *out_desc;
|
||||
{
|
||||
struct inflate_state FAR *state;
|
||||
z_const unsigned char FAR *next; /* next input */
|
||||
unsigned char FAR *put; /* next output */
|
||||
unsigned have, left; /* available input and output */
|
||||
unsigned long hold; /* bit buffer */
|
||||
unsigned bits; /* bits in bit buffer */
|
||||
unsigned copy; /* number of stored or match bytes to copy */
|
||||
unsigned char FAR *from; /* where to copy match bytes from */
|
||||
code here; /* current decoding table entry */
|
||||
code last; /* parent table entry */
|
||||
unsigned len; /* length to copy for repeats, bits to drop */
|
||||
int ret; /* return code */
|
||||
static const unsigned short order[19] = /* permutation of code lengths */
|
||||
{16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
|
||||
|
||||
/* Check that the strm exists and that the state was initialized */
|
||||
if (strm == Z_NULL || strm->state == Z_NULL)
|
||||
return Z_STREAM_ERROR;
|
||||
state = (struct inflate_state FAR *)strm->state;
|
||||
|
||||
/* Reset the state */
|
||||
strm->msg = Z_NULL;
|
||||
state->mode = TYPE;
|
||||
state->last = 0;
|
||||
state->whave = 0;
|
||||
next = strm->next_in;
|
||||
have = next != Z_NULL ? strm->avail_in : 0;
|
||||
hold = 0;
|
||||
bits = 0;
|
||||
put = state->window;
|
||||
left = state->wsize;
|
||||
|
||||
/* Inflate until end of block marked as last */
|
||||
for (;;)
|
||||
switch (state->mode) {
|
||||
case TYPE:
|
||||
/* determine and dispatch block type */
|
||||
if (state->last) {
|
||||
BYTEBITS();
|
||||
state->mode = DONE;
|
||||
break;
|
||||
}
|
||||
NEEDBITS(3);
|
||||
state->last = BITS(1);
|
||||
DROPBITS(1);
|
||||
switch (BITS(2)) {
|
||||
case 0: /* stored block */
|
||||
Tracev((stderr, "inflate: stored block%s\n",
|
||||
state->last ? " (last)" : ""));
|
||||
state->mode = STORED;
|
||||
break;
|
||||
case 1: /* fixed block */
|
||||
fixedtables(state);
|
||||
Tracev((stderr, "inflate: fixed codes block%s\n",
|
||||
state->last ? " (last)" : ""));
|
||||
state->mode = LEN; /* decode codes */
|
||||
break;
|
||||
case 2: /* dynamic block */
|
||||
Tracev((stderr, "inflate: dynamic codes block%s\n",
|
||||
state->last ? " (last)" : ""));
|
||||
state->mode = TABLE;
|
||||
break;
|
||||
case 3:
|
||||
strm->msg = (char *)"invalid block type";
|
||||
state->mode = BAD;
|
||||
}
|
||||
DROPBITS(2);
|
||||
break;
|
||||
|
||||
case STORED:
|
||||
/* get and verify stored block length */
|
||||
BYTEBITS(); /* go to byte boundary */
|
||||
NEEDBITS(32);
|
||||
if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
|
||||
strm->msg = (char *)"invalid stored block lengths";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
state->length = (unsigned)hold & 0xffff;
|
||||
Tracev((stderr, "inflate: stored length %u\n",
|
||||
state->length));
|
||||
INITBITS();
|
||||
|
||||
/* copy stored block from input to output */
|
||||
while (state->length != 0) {
|
||||
copy = state->length;
|
||||
PULL();
|
||||
ROOM();
|
||||
if (copy > have) copy = have;
|
||||
if (copy > left) copy = left;
|
||||
zmemcpy(put, next, copy);
|
||||
have -= copy;
|
||||
next += copy;
|
||||
left -= copy;
|
||||
put += copy;
|
||||
state->length -= copy;
|
||||
}
|
||||
Tracev((stderr, "inflate: stored end\n"));
|
||||
state->mode = TYPE;
|
||||
break;
|
||||
|
||||
case TABLE:
|
||||
/* get dynamic table entries descriptor */
|
||||
NEEDBITS(14);
|
||||
state->nlen = BITS(5) + 257;
|
||||
DROPBITS(5);
|
||||
state->ndist = BITS(5) + 1;
|
||||
DROPBITS(5);
|
||||
state->ncode = BITS(4) + 4;
|
||||
DROPBITS(4);
|
||||
#ifndef PKZIP_BUG_WORKAROUND
|
||||
if (state->nlen > 286 || state->ndist > 30) {
|
||||
strm->msg = (char *)"too many length or distance symbols";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
Tracev((stderr, "inflate: table sizes ok\n"));
|
||||
|
||||
/* get code length code lengths (not a typo) */
|
||||
state->have = 0;
|
||||
while (state->have < state->ncode) {
|
||||
NEEDBITS(3);
|
||||
state->lens[order[state->have++]] = (unsigned short)BITS(3);
|
||||
DROPBITS(3);
|
||||
}
|
||||
while (state->have < 19)
|
||||
state->lens[order[state->have++]] = 0;
|
||||
state->next = state->codes;
|
||||
state->lencode = (code const FAR *)(state->next);
|
||||
state->lenbits = 7;
|
||||
ret = inflate_table(CODES, state->lens, 19, &(state->next),
|
||||
&(state->lenbits), state->work);
|
||||
if (ret) {
|
||||
strm->msg = (char *)"invalid code lengths set";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
Tracev((stderr, "inflate: code lengths ok\n"));
|
||||
|
||||
/* get length and distance code code lengths */
|
||||
state->have = 0;
|
||||
while (state->have < state->nlen + state->ndist) {
|
||||
for (;;) {
|
||||
here = state->lencode[BITS(state->lenbits)];
|
||||
if ((unsigned)(here.bits) <= bits) break;
|
||||
PULLBYTE();
|
||||
}
|
||||
if (here.val < 16) {
|
||||
DROPBITS(here.bits);
|
||||
state->lens[state->have++] = here.val;
|
||||
}
|
||||
else {
|
||||
if (here.val == 16) {
|
||||
NEEDBITS(here.bits + 2);
|
||||
DROPBITS(here.bits);
|
||||
if (state->have == 0) {
|
||||
strm->msg = (char *)"invalid bit length repeat";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
len = (unsigned)(state->lens[state->have - 1]);
|
||||
copy = 3 + BITS(2);
|
||||
DROPBITS(2);
|
||||
}
|
||||
else if (here.val == 17) {
|
||||
NEEDBITS(here.bits + 3);
|
||||
DROPBITS(here.bits);
|
||||
len = 0;
|
||||
copy = 3 + BITS(3);
|
||||
DROPBITS(3);
|
||||
}
|
||||
else {
|
||||
NEEDBITS(here.bits + 7);
|
||||
DROPBITS(here.bits);
|
||||
len = 0;
|
||||
copy = 11 + BITS(7);
|
||||
DROPBITS(7);
|
||||
}
|
||||
if (state->have + copy > state->nlen + state->ndist) {
|
||||
strm->msg = (char *)"invalid bit length repeat";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
while (copy--)
|
||||
state->lens[state->have++] = (unsigned short)len;
|
||||
}
|
||||
}
|
||||
|
||||
/* handle error breaks in while */
|
||||
if (state->mode == BAD) break;
|
||||
|
||||
/* check for end-of-block code (better have one) */
|
||||
if (state->lens[256] == 0) {
|
||||
strm->msg = (char *)"invalid code -- missing end-of-block";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
|
||||
/* build code tables -- note: do not change the lenbits or distbits
|
||||
values here (9 and 6) without reading the comments in inftrees.h
|
||||
concerning the ENOUGH constants, which depend on those values */
|
||||
state->next = state->codes;
|
||||
state->lencode = (code const FAR *)(state->next);
|
||||
state->lenbits = 9;
|
||||
ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
|
||||
&(state->lenbits), state->work);
|
||||
if (ret) {
|
||||
strm->msg = (char *)"invalid literal/lengths set";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
state->distcode = (code const FAR *)(state->next);
|
||||
state->distbits = 6;
|
||||
ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
|
||||
&(state->next), &(state->distbits), state->work);
|
||||
if (ret) {
|
||||
strm->msg = (char *)"invalid distances set";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
Tracev((stderr, "inflate: codes ok\n"));
|
||||
state->mode = LEN;
|
||||
|
||||
case LEN:
|
||||
/* use inflate_fast() if we have enough input and output */
|
||||
if (have >= 6 && left >= 258) {
|
||||
RESTORE();
|
||||
if (state->whave < state->wsize)
|
||||
state->whave = state->wsize - left;
|
||||
inflate_fast(strm, state->wsize);
|
||||
LOAD();
|
||||
break;
|
||||
}
|
||||
|
||||
/* get a literal, length, or end-of-block code */
|
||||
for (;;) {
|
||||
here = state->lencode[BITS(state->lenbits)];
|
||||
if ((unsigned)(here.bits) <= bits) break;
|
||||
PULLBYTE();
|
||||
}
|
||||
if (here.op && (here.op & 0xf0) == 0) {
|
||||
last = here;
|
||||
for (;;) {
|
||||
here = state->lencode[last.val +
|
||||
(BITS(last.bits + last.op) >> last.bits)];
|
||||
if ((unsigned)(last.bits + here.bits) <= bits) break;
|
||||
PULLBYTE();
|
||||
}
|
||||
DROPBITS(last.bits);
|
||||
}
|
||||
DROPBITS(here.bits);
|
||||
state->length = (unsigned)here.val;
|
||||
|
||||
/* process literal */
|
||||
if (here.op == 0) {
|
||||
Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
|
||||
"inflate: literal '%c'\n" :
|
||||
"inflate: literal 0x%02x\n", here.val));
|
||||
ROOM();
|
||||
*put++ = (unsigned char)(state->length);
|
||||
left--;
|
||||
state->mode = LEN;
|
||||
break;
|
||||
}
|
||||
|
||||
/* process end of block */
|
||||
if (here.op & 32) {
|
||||
Tracevv((stderr, "inflate: end of block\n"));
|
||||
state->mode = TYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
/* invalid code */
|
||||
if (here.op & 64) {
|
||||
strm->msg = (char *)"invalid literal/length code";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
|
||||
/* length code -- get extra bits, if any */
|
||||
state->extra = (unsigned)(here.op) & 15;
|
||||
if (state->extra != 0) {
|
||||
NEEDBITS(state->extra);
|
||||
state->length += BITS(state->extra);
|
||||
DROPBITS(state->extra);
|
||||
}
|
||||
Tracevv((stderr, "inflate: length %u\n", state->length));
|
||||
|
||||
/* get distance code */
|
||||
for (;;) {
|
||||
here = state->distcode[BITS(state->distbits)];
|
||||
if ((unsigned)(here.bits) <= bits) break;
|
||||
PULLBYTE();
|
||||
}
|
||||
if ((here.op & 0xf0) == 0) {
|
||||
last = here;
|
||||
for (;;) {
|
||||
here = state->distcode[last.val +
|
||||
(BITS(last.bits + last.op) >> last.bits)];
|
||||
if ((unsigned)(last.bits + here.bits) <= bits) break;
|
||||
PULLBYTE();
|
||||
}
|
||||
DROPBITS(last.bits);
|
||||
}
|
||||
DROPBITS(here.bits);
|
||||
if (here.op & 64) {
|
||||
strm->msg = (char *)"invalid distance code";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
state->offset = (unsigned)here.val;
|
||||
|
||||
/* get distance extra bits, if any */
|
||||
state->extra = (unsigned)(here.op) & 15;
|
||||
if (state->extra != 0) {
|
||||
NEEDBITS(state->extra);
|
||||
state->offset += BITS(state->extra);
|
||||
DROPBITS(state->extra);
|
||||
}
|
||||
if (state->offset > state->wsize - (state->whave < state->wsize ?
|
||||
left : 0)) {
|
||||
strm->msg = (char *)"invalid distance too far back";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
Tracevv((stderr, "inflate: distance %u\n", state->offset));
|
||||
|
||||
/* copy match from window to output */
|
||||
do {
|
||||
ROOM();
|
||||
copy = state->wsize - state->offset;
|
||||
if (copy < left) {
|
||||
from = put + copy;
|
||||
copy = left - copy;
|
||||
}
|
||||
else {
|
||||
from = put - state->offset;
|
||||
copy = left;
|
||||
}
|
||||
if (copy > state->length) copy = state->length;
|
||||
state->length -= copy;
|
||||
left -= copy;
|
||||
do {
|
||||
*put++ = *from++;
|
||||
} while (--copy);
|
||||
} while (state->length != 0);
|
||||
break;
|
||||
|
||||
case DONE:
|
||||
/* inflate stream terminated properly -- write leftover output */
|
||||
ret = Z_STREAM_END;
|
||||
if (left < state->wsize) {
|
||||
if (out(out_desc, state->window, state->wsize - left))
|
||||
ret = Z_BUF_ERROR;
|
||||
}
|
||||
goto inf_leave;
|
||||
|
||||
case BAD:
|
||||
ret = Z_DATA_ERROR;
|
||||
goto inf_leave;
|
||||
|
||||
default: /* can't happen, but makes compilers happy */
|
||||
ret = Z_STREAM_ERROR;
|
||||
goto inf_leave;
|
||||
}
|
||||
|
||||
/* Return unused input */
|
||||
inf_leave:
|
||||
strm->next_in = next;
|
||||
strm->avail_in = have;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ZEXPORT inflateBackEnd(strm)
|
||||
z_streamp strm;
|
||||
{
|
||||
if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
|
||||
return Z_STREAM_ERROR;
|
||||
ZFREE(strm, strm->state);
|
||||
strm->state = Z_NULL;
|
||||
Tracev((stderr, "inflate: end\n"));
|
||||
return Z_OK;
|
||||
}
|
||||
404
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inffast.c
Normal file
404
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inffast.c
Normal file
@@ -0,0 +1,404 @@
|
||||
/* inffast.c -- fast decoding
|
||||
* Copyright (C) 1995-2017 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
#include "zutil.h"
|
||||
#include "inftrees.h"
|
||||
#include "inflate.h"
|
||||
#include "inffast.h"
|
||||
|
||||
#if (INTPTR_MAX == INT64_MAX) || defined(HAL_ESP32_HAL_H_) || defined(TEENSYDUINO) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM7)
|
||||
#define ALLOWS_UNALIGNED
|
||||
#endif
|
||||
|
||||
#if INTPTR_MAX == INT64_MAX
|
||||
#define REGISTER_WIDTH 64
|
||||
typedef uint64_t BIGUINT;
|
||||
typedef uint32_t SMALLUINT;
|
||||
#else
|
||||
#define REGISTER_WIDTH 32
|
||||
typedef uint32_t BIGUINT;
|
||||
typedef uint16_t SMALLUINT;
|
||||
#endif // native register size
|
||||
|
||||
#ifdef ASMINF
|
||||
# pragma message("Assembler code may have bugs -- use at your own risk")
|
||||
#else
|
||||
|
||||
/*
|
||||
Decode literal, length, and distance codes and write out the resulting
|
||||
literal and match bytes until either not enough input or output is
|
||||
available, an end-of-block is encountered, or a data error is encountered.
|
||||
When large enough input and output buffers are supplied to inflate(), for
|
||||
example, a 16K input buffer and a 64K output buffer, more than 95% of the
|
||||
inflate execution time is spent in this routine.
|
||||
|
||||
Entry assumptions:
|
||||
|
||||
state->mode == LEN
|
||||
strm->avail_in >= 6
|
||||
strm->avail_out >= 258
|
||||
start >= strm->avail_out
|
||||
state->bits < 8
|
||||
|
||||
On return, state->mode is one of:
|
||||
|
||||
LEN -- ran out of enough output space or enough available input
|
||||
TYPE -- reached end of block code, inflate() to interpret next block
|
||||
BAD -- error in block data
|
||||
|
||||
Notes:
|
||||
|
||||
- The maximum input bits used by a length/distance pair is 15 bits for the
|
||||
length code, 5 bits for the length extra, 15 bits for the distance code,
|
||||
and 13 bits for the distance extra. This totals 48 bits, or six bytes.
|
||||
Therefore if strm->avail_in >= 6, then there is enough input to avoid
|
||||
checking for available input while decoding.
|
||||
|
||||
- The maximum bytes that a single length/distance pair can output is 258
|
||||
bytes, which is the maximum length that can be coded. inflate_fast()
|
||||
requires strm->avail_out >= 258 for each loop to avoid checking for
|
||||
output space.
|
||||
*/
|
||||
void ZLIB_INTERNAL inflate_fast(strm, start)
|
||||
z_streamp strm;
|
||||
unsigned start; /* inflate()'s starting value for strm->avail_out */
|
||||
{
|
||||
struct inflate_state FAR *state;
|
||||
z_const unsigned char FAR *in; /* local strm->next_in */
|
||||
z_const unsigned char FAR *last; /* have enough input while in < last */
|
||||
unsigned char FAR *out; /* local strm->next_out */
|
||||
unsigned char FAR *beg; /* inflate()'s initial strm->next_out */
|
||||
unsigned char FAR *end; /* while out < end, enough space available */
|
||||
#ifdef INFLATE_STRICT
|
||||
unsigned dmax; /* maximum distance from zlib header */
|
||||
#endif
|
||||
unsigned wsize; /* window size or zero if not using window */
|
||||
unsigned whave; /* valid bytes in the window */
|
||||
unsigned wnext; /* window write index */
|
||||
unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */
|
||||
BIGUINT hold, tmpbits; /* local strm->hold */
|
||||
// unsigned long hold; /* local strm->hold */
|
||||
unsigned bits; /* local strm->bits */
|
||||
code const FAR *lcode; /* local strm->lencode */
|
||||
code const FAR *dcode; /* local strm->distcode */
|
||||
unsigned lmask; /* mask for first level of length codes */
|
||||
unsigned dmask; /* mask for first level of distance codes */
|
||||
code here; /* retrieved table entry */
|
||||
unsigned op; /* code bits, operation, extra bits, or */
|
||||
/* window position, window bytes to copy */
|
||||
unsigned len; /* match length, unused bytes */
|
||||
unsigned dist; /* match distance */
|
||||
unsigned char FAR *from; /* where to copy match from */
|
||||
|
||||
/* copy state to local variables */
|
||||
state = (struct inflate_state FAR *)strm->state;
|
||||
in = strm->next_in;
|
||||
last = in + (strm->avail_in - 5);
|
||||
out = strm->next_out;
|
||||
beg = out - (start - strm->avail_out);
|
||||
end = out + (strm->avail_out - 257);
|
||||
#ifdef INFLATE_STRICT
|
||||
dmax = state->dmax;
|
||||
#endif
|
||||
wsize = state->wsize;
|
||||
whave = state->whave;
|
||||
wnext = state->wnext;
|
||||
window = state->window;
|
||||
hold = state->hold;
|
||||
bits = state->bits;
|
||||
lcode = state->lencode;
|
||||
dcode = state->distcode;
|
||||
lmask = (1U << state->lenbits) - 1;
|
||||
dmask = (1U << state->distbits) - 1;
|
||||
|
||||
/* decode literals and length/distances until end-of-block or not enough
|
||||
input data or output space */
|
||||
do {
|
||||
if (bits < (REGISTER_WIDTH/2)) { // helps on 32 and 64-bit CPUs
|
||||
#ifdef ALLOWS_UNALIGNED
|
||||
tmpbits = *(SMALLUINT *)in;
|
||||
hold |= (BIGUINT)(tmpbits << bits);
|
||||
in += sizeof(SMALLUINT);
|
||||
bits += (REGISTER_WIDTH / 2);
|
||||
#else
|
||||
hold += (unsigned long)(*in++) << bits;
|
||||
bits += 8;
|
||||
hold += (unsigned long)(*in++) << bits;
|
||||
bits += 8;
|
||||
#endif
|
||||
}
|
||||
here = lcode[hold & lmask];
|
||||
dolen:
|
||||
op = (unsigned)(here.bits);
|
||||
hold >>= op;
|
||||
bits -= op;
|
||||
op = (unsigned)(here.op);
|
||||
if (op == 0) { /* literal */
|
||||
Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
|
||||
"inflate: literal '%c'\n" :
|
||||
"inflate: literal 0x%02x\n", here.val));
|
||||
*out++ = (unsigned char)(here.val);
|
||||
}
|
||||
else if (op & 16) { /* length base */
|
||||
len = (unsigned)(here.val);
|
||||
op &= 15; /* number of extra bits */
|
||||
if (op) {
|
||||
#if REGISTER_WIDTH == 32
|
||||
if (bits < op) {
|
||||
hold += (uint32_t)(*in++) << bits;
|
||||
bits += 8;
|
||||
}
|
||||
#endif
|
||||
len += (unsigned)hold & ((1U << op) - 1);
|
||||
hold >>= op;
|
||||
bits -= op;
|
||||
}
|
||||
Tracevv((stderr, "inflate: length %u\n", len));
|
||||
if (bits < (REGISTER_WIDTH/2)) { // helps on 32 and 64-bit CPUs
|
||||
#ifdef UNALIGNED_OK
|
||||
tmpbits = *(SMALLUINT *)in;
|
||||
hold |= (BIGUINT)(tmpbits << bits);
|
||||
in += sizeof(SMALLUINT);
|
||||
bits += (REGISTER_WIDTH / 2);
|
||||
#else
|
||||
hold += (unsigned long)(*in++) << bits;
|
||||
bits += 8;
|
||||
hold += (unsigned long)(*in++) << bits;
|
||||
bits += 8;
|
||||
#endif
|
||||
}
|
||||
here = dcode[hold & dmask];
|
||||
dodist:
|
||||
op = (unsigned)(here.bits);
|
||||
hold >>= op;
|
||||
bits -= op;
|
||||
op = (unsigned)(here.op);
|
||||
if (op & 16) { /* distance base */
|
||||
dist = (unsigned)(here.val);
|
||||
op &= 15; /* number of extra bits */
|
||||
#if REGISTER_WIDTH == 32
|
||||
if (bits < op) {
|
||||
#ifdef ALLOWS_UNALIGNED
|
||||
hold |= (*(uint16_t *)in << bits);
|
||||
bits += 16;
|
||||
in += 2;
|
||||
#else
|
||||
hold += (unsigned long)(*in++) << bits;
|
||||
bits += 8;
|
||||
if (bits < op) { // this is NEVER true
|
||||
hold += (unsigned long)(*in++) << bits;
|
||||
bits += 8;
|
||||
}
|
||||
#endif // ALLOWS_UNALIGNED
|
||||
}
|
||||
#endif // 32-bit CPU
|
||||
dist += (unsigned)hold & ((1U << op) - 1);
|
||||
#ifdef INFLATE_STRICT
|
||||
if (dist > dmax) {
|
||||
strm->msg = (char *)"invalid distance too far back";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
hold >>= op;
|
||||
bits -= op;
|
||||
Tracevv((stderr, "inflate: distance %u\n", dist));
|
||||
op = (unsigned)(out - beg); /* max distance in output */
|
||||
if (dist > op) { /* see if copy from window */
|
||||
op = dist - op; /* distance back in window */
|
||||
if (op > whave) {
|
||||
if (state->sane) {
|
||||
strm->msg =
|
||||
(char *)"invalid distance too far back";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
|
||||
if (len <= op - whave) {
|
||||
do {
|
||||
*out++ = 0;
|
||||
} while (--len);
|
||||
continue;
|
||||
}
|
||||
len -= op - whave;
|
||||
do {
|
||||
*out++ = 0;
|
||||
} while (--op > whave);
|
||||
if (op == 0) {
|
||||
from = out - dist;
|
||||
do {
|
||||
*out++ = *from++;
|
||||
} while (--len);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
from = window;
|
||||
if (wnext == 0) { /* very common case */
|
||||
from += wsize - op;
|
||||
if (op < len) { /* some from window */
|
||||
len -= op;
|
||||
do {
|
||||
*out++ = *from++;
|
||||
} while (--op);
|
||||
from = out - dist; /* rest from output */
|
||||
}
|
||||
}
|
||||
else if (wnext < op) { /* wrap around window */
|
||||
from += wsize + wnext - op;
|
||||
op -= wnext;
|
||||
if (op < len) { /* some from end of window */
|
||||
len -= op;
|
||||
do {
|
||||
*out++ = *from++;
|
||||
} while (--op);
|
||||
from = window;
|
||||
if (wnext < len) { /* some from start of window */
|
||||
op = wnext;
|
||||
len -= op;
|
||||
do {
|
||||
*out++ = *from++;
|
||||
} while (--op);
|
||||
from = out - dist; /* rest from output */
|
||||
}
|
||||
}
|
||||
}
|
||||
else { /* contiguous in window */
|
||||
from += wnext - op;
|
||||
if (op < len) { /* some from window */
|
||||
len -= op;
|
||||
do {
|
||||
*out++ = *from++;
|
||||
} while (--op);
|
||||
from = out - dist; /* rest from output */
|
||||
}
|
||||
}
|
||||
#ifdef ALLOWS_UNALIGNED
|
||||
{
|
||||
uint8_t *pEnd = out+len;
|
||||
while (out < pEnd) {
|
||||
*(uint32_t *)out = *(uint32_t *)from;
|
||||
out += 4;
|
||||
from += 4;
|
||||
}
|
||||
// correct for possible overshoot of destination ptr
|
||||
out = pEnd;
|
||||
}
|
||||
#else
|
||||
while (len > 2) {
|
||||
*out++ = *from++;
|
||||
*out++ = *from++;
|
||||
*out++ = *from++;
|
||||
len -= 3;
|
||||
}
|
||||
if (len) {
|
||||
*out++ = *from++;
|
||||
if (len > 1)
|
||||
*out++ = *from++;
|
||||
}
|
||||
#endif // ALLOWS_UNALIGNED
|
||||
}
|
||||
else {
|
||||
from = out - dist; /* copy direct from output */
|
||||
#ifdef ALLOWS_UNALIGNED
|
||||
{
|
||||
uint8_t *pEnd = out+len;
|
||||
int overlap = (int)(intptr_t)(out-from);
|
||||
if (overlap >= 4) { // overlap of source/dest won't impede normal copy
|
||||
while (out < pEnd) {
|
||||
*(uint32_t *)out = *(uint32_t *)from;
|
||||
out += 4;
|
||||
from += 4;
|
||||
}
|
||||
// correct for possible overshoot of destination ptr
|
||||
out = pEnd;
|
||||
} else if (overlap == 1) { // copy 1-byte pattern
|
||||
uint32_t pattern = *from;
|
||||
pattern = pattern | (pattern << 8);
|
||||
pattern = pattern | (pattern << 16);
|
||||
while (out < pEnd) {
|
||||
*(uint32_t *)out = pattern;
|
||||
out += 4;
|
||||
}
|
||||
out = pEnd; // correct possible overshoot
|
||||
} else { // overlap of 2 or 3
|
||||
while (out < pEnd) {
|
||||
*out++ = *from++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
do { /* minimum length is three */
|
||||
*out++ = *from++;
|
||||
*out++ = *from++;
|
||||
*out++ = *from++;
|
||||
len -= 3;
|
||||
} while (len > 2);
|
||||
if (len) {
|
||||
*out++ = *from++;
|
||||
if (len > 1)
|
||||
*out++ = *from++;
|
||||
}
|
||||
#endif // ALLOWS_UNALIGNED
|
||||
}
|
||||
}
|
||||
else if ((op & 64) == 0) { /* 2nd level distance code */
|
||||
here = dcode[here.val + (hold & ((1U << op) - 1))];
|
||||
goto dodist;
|
||||
}
|
||||
else {
|
||||
strm->msg = (char *)"invalid distance code";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if ((op & 64) == 0) { /* 2nd level length code */
|
||||
here = lcode[here.val + (hold & ((1U << op) - 1))];
|
||||
goto dolen;
|
||||
}
|
||||
else if (op & 32) { /* end-of-block */
|
||||
Tracevv((stderr, "inflate: end of block\n"));
|
||||
state->mode = TYPE;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
strm->msg = (char *)"invalid literal/length code";
|
||||
state->mode = BAD;
|
||||
break;
|
||||
}
|
||||
} while (in < last && out < end);
|
||||
|
||||
/* return unused bytes (on entry, bits < 8, so in won't go too far back) */
|
||||
// len = bits >> 3;
|
||||
// in -= len;
|
||||
// bits -= len << 3;
|
||||
// hold &= (1 << bits) - 1;
|
||||
|
||||
/* update state and return */
|
||||
strm->next_in = in;
|
||||
strm->next_out = out;
|
||||
strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
|
||||
strm->avail_out = (unsigned)(out < end ?
|
||||
257 + (end - out) : 257 - (out - end));
|
||||
state->hold = hold;
|
||||
state->bits = bits;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
|
||||
- Using bit fields for code structure
|
||||
- Different op definition to avoid & for extra bits (do & for table bits)
|
||||
- Three separate decoding do-loops for direct, window, and wnext == 0
|
||||
- Special case for distance > 1 copies to do overlapped load and store copy
|
||||
- Explicit branch predictions (based on measured branch probabilities)
|
||||
- Deferring match copy and interspersed it with decoding subsequent codes
|
||||
- Swapping literal/length else
|
||||
- Swapping window/direct else
|
||||
- Larger unrolled copy loops (three is about right)
|
||||
- Moving len -= 3 statement into middle of loop
|
||||
*/
|
||||
|
||||
#endif /* !ASMINF */
|
||||
@@ -0,0 +1,11 @@
|
||||
/* inffast.h -- header to use inffast.c
|
||||
* Copyright (C) 1995-2003, 2010 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* WARNING: this file should *not* be used by applications. It is
|
||||
part of the implementation of the compression library and is
|
||||
subject to change. Applications should only use zlib.h.
|
||||
*/
|
||||
|
||||
void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
|
||||
@@ -0,0 +1,94 @@
|
||||
/* inffixed.h -- table for decoding fixed codes
|
||||
* Generated automatically by makefixed().
|
||||
*/
|
||||
|
||||
/* WARNING: this file should *not* be used by applications.
|
||||
It is part of the implementation of this library and is
|
||||
subject to change. Applications should only use zlib.h.
|
||||
*/
|
||||
|
||||
static const code lenfix[512] = {
|
||||
{96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
|
||||
{0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
|
||||
{0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
|
||||
{0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
|
||||
{0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
|
||||
{21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
|
||||
{0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
|
||||
{0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
|
||||
{18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
|
||||
{0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
|
||||
{0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
|
||||
{0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
|
||||
{20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
|
||||
{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
|
||||
{0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
|
||||
{0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
|
||||
{16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
|
||||
{0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
|
||||
{0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
|
||||
{0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
|
||||
{0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
|
||||
{0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
|
||||
{0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
|
||||
{0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
|
||||
{17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
|
||||
{0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
|
||||
{0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
|
||||
{0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
|
||||
{19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
|
||||
{0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
|
||||
{0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
|
||||
{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
|
||||
{16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
|
||||
{0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
|
||||
{0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
|
||||
{0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
|
||||
{0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
|
||||
{20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
|
||||
{0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
|
||||
{0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
|
||||
{17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
|
||||
{0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
|
||||
{0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
|
||||
{0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
|
||||
{20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
|
||||
{0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
|
||||
{0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
|
||||
{0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
|
||||
{16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
|
||||
{0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
|
||||
{0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
|
||||
{0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
|
||||
{0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
|
||||
{0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
|
||||
{0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
|
||||
{0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
|
||||
{16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
|
||||
{0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
|
||||
{0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
|
||||
{0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
|
||||
{19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
|
||||
{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
|
||||
{0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
|
||||
{0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
|
||||
{16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
|
||||
{0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
|
||||
{0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
|
||||
{0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
|
||||
{0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
|
||||
{64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
|
||||
{0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
|
||||
{0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
|
||||
{18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
|
||||
{0,9,255}
|
||||
};
|
||||
|
||||
static const code distfix[32] = {
|
||||
{16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
|
||||
{21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
|
||||
{18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
|
||||
{19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
|
||||
{16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
|
||||
{22,5,193},{64,5,0}
|
||||
};
|
||||
1610
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inflate.c
Normal file
1610
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inflate.c
Normal file
File diff suppressed because it is too large
Load Diff
126
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inflate.h
Normal file
126
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inflate.h
Normal file
@@ -0,0 +1,126 @@
|
||||
/* inflate.h -- internal inflate state definition
|
||||
* Copyright (C) 1995-2016 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* WARNING: this file should *not* be used by applications. It is
|
||||
part of the implementation of the compression library and is
|
||||
subject to change. Applications should only use zlib.h.
|
||||
*/
|
||||
|
||||
/* define NO_GZIP when compiling if you want to disable gzip header and
|
||||
trailer decoding by inflate(). NO_GZIP would be used to avoid linking in
|
||||
the crc code when it is not needed. For shared libraries, gzip decoding
|
||||
should be left enabled. */
|
||||
#ifndef NO_GZIP
|
||||
# define GUNZIP
|
||||
#endif
|
||||
|
||||
/* Possible inflate modes between inflate() calls */
|
||||
typedef enum {
|
||||
HEAD = 16180, /* i: waiting for magic header */
|
||||
FLAGS, /* i: waiting for method and flags (gzip) */
|
||||
TIME, /* i: waiting for modification time (gzip) */
|
||||
OS, /* i: waiting for extra flags and operating system (gzip) */
|
||||
EXLEN, /* i: waiting for extra length (gzip) */
|
||||
EXTRA, /* i: waiting for extra bytes (gzip) */
|
||||
NAME, /* i: waiting for end of file name (gzip) */
|
||||
COMMENT, /* i: waiting for end of comment (gzip) */
|
||||
HCRC, /* i: waiting for header crc (gzip) */
|
||||
DICTID, /* i: waiting for dictionary check value */
|
||||
DICT, /* waiting for inflateSetDictionary() call */
|
||||
TYPE, /* i: waiting for type bits, including last-flag bit */
|
||||
TYPEDO, /* i: same, but skip check to exit inflate on new block */
|
||||
STORED, /* i: waiting for stored size (length and complement) */
|
||||
COPY_, /* i/o: same as COPY below, but only first time in */
|
||||
COPY, /* i/o: waiting for input or output to copy stored block */
|
||||
TABLE, /* i: waiting for dynamic block table lengths */
|
||||
LENLENS, /* i: waiting for code length code lengths */
|
||||
CODELENS, /* i: waiting for length/lit and distance code lengths */
|
||||
LEN_, /* i: same as LEN below, but only first time in */
|
||||
LEN, /* i: waiting for length/lit/eob code */
|
||||
LENEXT, /* i: waiting for length extra bits */
|
||||
DIST, /* i: waiting for distance code */
|
||||
DISTEXT, /* i: waiting for distance extra bits */
|
||||
MATCH, /* o: waiting for output space to copy string */
|
||||
LIT, /* o: waiting for output space to write literal */
|
||||
CHECK, /* i: waiting for 32-bit check value */
|
||||
LENGTH, /* i: waiting for 32-bit length (gzip) */
|
||||
DONE, /* finished check, done -- remain here until reset */
|
||||
BAD, /* got a data error -- remain here until reset */
|
||||
MEM, /* got an inflate() memory error -- remain here until reset */
|
||||
SYNC /* looking for synchronization bytes to restart inflate() */
|
||||
} inflate_mode;
|
||||
|
||||
/*
|
||||
State transitions between above modes -
|
||||
|
||||
(most modes can go to BAD or MEM on error -- not shown for clarity)
|
||||
|
||||
Process header:
|
||||
HEAD -> (gzip) or (zlib) or (raw)
|
||||
(gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT ->
|
||||
HCRC -> TYPE
|
||||
(zlib) -> DICTID or TYPE
|
||||
DICTID -> DICT -> TYPE
|
||||
(raw) -> TYPEDO
|
||||
Read deflate blocks:
|
||||
TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK
|
||||
STORED -> COPY_ -> COPY -> TYPE
|
||||
TABLE -> LENLENS -> CODELENS -> LEN_
|
||||
LEN_ -> LEN
|
||||
Read deflate codes in fixed or dynamic block:
|
||||
LEN -> LENEXT or LIT or TYPE
|
||||
LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
|
||||
LIT -> LEN
|
||||
Process trailer:
|
||||
CHECK -> LENGTH -> DONE
|
||||
*/
|
||||
|
||||
/* State maintained between inflate() calls -- approximately 7K bytes, not
|
||||
including the allocated sliding window, which is up to 32K bytes. */
|
||||
struct inflate_state {
|
||||
z_streamp strm; /* pointer back to this zlib stream */
|
||||
inflate_mode mode; /* current inflate mode */
|
||||
int last; /* true if processing last block */
|
||||
int wrap; /* bit 0 true for zlib, bit 1 true for gzip,
|
||||
bit 2 true to validate check value */
|
||||
int havedict; /* true if dictionary provided */
|
||||
int flags; /* gzip header method and flags (0 if zlib) */
|
||||
unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
|
||||
unsigned long check; /* protected copy of check value */
|
||||
unsigned long total; /* protected copy of output count */
|
||||
gz_headerp head; /* where to save gzip header information */
|
||||
/* sliding window */
|
||||
unsigned wbits; /* log base 2 of requested window size */
|
||||
unsigned wsize; /* window size or zero if not using window */
|
||||
unsigned whave; /* valid bytes in the window */
|
||||
unsigned wnext; /* window write index */
|
||||
unsigned char FAR *window; /* allocated sliding window, if needed */
|
||||
/* bit accumulator */
|
||||
uint64_t hold; /* input bit accumulator */
|
||||
// unsigned long hold; /* input bit accumulator */
|
||||
unsigned bits; /* number of bits in "in" */
|
||||
/* for string and stored block copying */
|
||||
unsigned length; /* literal or length of data to copy */
|
||||
unsigned offset; /* distance back to copy string from */
|
||||
/* for table and code decoding */
|
||||
unsigned extra; /* extra bits needed */
|
||||
/* fixed and dynamic code tables */
|
||||
code const FAR *lencode; /* starting table for length/literal codes */
|
||||
code const FAR *distcode; /* starting table for distance codes */
|
||||
unsigned lenbits; /* index bits for lencode */
|
||||
unsigned distbits; /* index bits for distcode */
|
||||
/* dynamic table building */
|
||||
unsigned ncode; /* number of code length code lengths */
|
||||
unsigned nlen; /* number of length code lengths */
|
||||
unsigned ndist; /* number of distance code lengths */
|
||||
unsigned have; /* number of code lengths in lens[] */
|
||||
code FAR *next; /* next available space in codes[] */
|
||||
unsigned short lens[320]; /* temporary storage for code lengths */
|
||||
unsigned short work[288]; /* work area for code table building */
|
||||
code codes[ENOUGH]; /* space for code tables */
|
||||
int sane; /* if false, allow invalid distance too far */
|
||||
int back; /* bits back of last unprocessed length/lit */
|
||||
unsigned was; /* initial length of match */
|
||||
};
|
||||
304
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inftrees.c
Normal file
304
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/inftrees.c
Normal file
@@ -0,0 +1,304 @@
|
||||
/* inftrees.c -- generate Huffman trees for efficient decoding
|
||||
* Copyright (C) 1995-2017 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
#include "zutil.h"
|
||||
#include "inftrees.h"
|
||||
|
||||
#define MAXBITS 15
|
||||
|
||||
const char inflate_copyright[] =
|
||||
" inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
|
||||
/*
|
||||
If you use the zlib library in a product, an acknowledgment is welcome
|
||||
in the documentation of your product. If for some reason you cannot
|
||||
include such an acknowledgment, I would appreciate that you keep this
|
||||
copyright string in the executable of your product.
|
||||
*/
|
||||
|
||||
/*
|
||||
Build a set of tables to decode the provided canonical Huffman code.
|
||||
The code lengths are lens[0..codes-1]. The result starts at *table,
|
||||
whose indices are 0..2^bits-1. work is a writable array of at least
|
||||
lens shorts, which is used as a work area. type is the type of code
|
||||
to be generated, CODES, LENS, or DISTS. On return, zero is success,
|
||||
-1 is an invalid code, and +1 means that ENOUGH isn't enough. table
|
||||
on return points to the next available entry's address. bits is the
|
||||
requested root table index bits, and on return it is the actual root
|
||||
table index bits. It will differ if the request is greater than the
|
||||
longest code or if it is less than the shortest code.
|
||||
*/
|
||||
int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
|
||||
codetype type;
|
||||
unsigned short FAR *lens;
|
||||
unsigned codes;
|
||||
code FAR * FAR *table;
|
||||
unsigned FAR *bits;
|
||||
unsigned short FAR *work;
|
||||
{
|
||||
unsigned len; /* a code's length in bits */
|
||||
unsigned sym; /* index of code symbols */
|
||||
unsigned min, max; /* minimum and maximum code lengths */
|
||||
unsigned root; /* number of index bits for root table */
|
||||
unsigned curr; /* number of index bits for current table */
|
||||
unsigned drop; /* code bits to drop for sub-table */
|
||||
int left; /* number of prefix codes available */
|
||||
unsigned used; /* code entries in table used */
|
||||
unsigned huff; /* Huffman code */
|
||||
unsigned incr; /* for incrementing code, index */
|
||||
unsigned fill; /* index for replicating entries */
|
||||
unsigned low; /* low bits for current root entry */
|
||||
unsigned mask; /* mask for low root bits */
|
||||
code here; /* table entry for duplication */
|
||||
code FAR *next; /* next available space in table */
|
||||
const unsigned short FAR *base; /* base value table to use */
|
||||
const unsigned short FAR *extra; /* extra bits table to use */
|
||||
unsigned match; /* use base and extra for symbol >= match */
|
||||
unsigned short count[MAXBITS+1]; /* number of codes of each length */
|
||||
unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
|
||||
static const unsigned short lbase[31] = { /* Length codes 257..285 base */
|
||||
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
|
||||
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
|
||||
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
|
||||
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
|
||||
19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
|
||||
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
|
||||
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
|
||||
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
|
||||
8193, 12289, 16385, 24577, 0, 0};
|
||||
static const unsigned short dext[32] = { /* Distance codes 0..29 extra */
|
||||
16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
|
||||
23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
|
||||
28, 28, 29, 29, 64, 64};
|
||||
|
||||
/*
|
||||
Process a set of code lengths to create a canonical Huffman code. The
|
||||
code lengths are lens[0..codes-1]. Each length corresponds to the
|
||||
symbols 0..codes-1. The Huffman code is generated by first sorting the
|
||||
symbols by length from short to long, and retaining the symbol order
|
||||
for codes with equal lengths. Then the code starts with all zero bits
|
||||
for the first code of the shortest length, and the codes are integer
|
||||
increments for the same length, and zeros are appended as the length
|
||||
increases. For the deflate format, these bits are stored backwards
|
||||
from their more natural integer increment ordering, and so when the
|
||||
decoding tables are built in the large loop below, the integer codes
|
||||
are incremented backwards.
|
||||
|
||||
This routine assumes, but does not check, that all of the entries in
|
||||
lens[] are in the range 0..MAXBITS. The caller must assure this.
|
||||
1..MAXBITS is interpreted as that code length. zero means that that
|
||||
symbol does not occur in this code.
|
||||
|
||||
The codes are sorted by computing a count of codes for each length,
|
||||
creating from that a table of starting indices for each length in the
|
||||
sorted table, and then entering the symbols in order in the sorted
|
||||
table. The sorted table is work[], with that space being provided by
|
||||
the caller.
|
||||
|
||||
The length counts are used for other purposes as well, i.e. finding
|
||||
the minimum and maximum length codes, determining if there are any
|
||||
codes at all, checking for a valid set of lengths, and looking ahead
|
||||
at length counts to determine sub-table sizes when building the
|
||||
decoding tables.
|
||||
*/
|
||||
|
||||
/* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
|
||||
for (len = 0; len <= MAXBITS; len++)
|
||||
count[len] = 0;
|
||||
for (sym = 0; sym < codes; sym++)
|
||||
count[lens[sym]]++;
|
||||
|
||||
/* bound code lengths, force root to be within code lengths */
|
||||
root = *bits;
|
||||
for (max = MAXBITS; max >= 1; max--)
|
||||
if (count[max] != 0) break;
|
||||
if (root > max) root = max;
|
||||
if (max == 0) { /* no symbols to code at all */
|
||||
here.op = (unsigned char)64; /* invalid code marker */
|
||||
here.bits = (unsigned char)1;
|
||||
here.val = (unsigned short)0;
|
||||
*(*table)++ = here; /* make a table to force an error */
|
||||
*(*table)++ = here;
|
||||
*bits = 1;
|
||||
return 0; /* no symbols, but wait for decoding to report error */
|
||||
}
|
||||
for (min = 1; min < max; min++)
|
||||
if (count[min] != 0) break;
|
||||
if (root < min) root = min;
|
||||
|
||||
/* check for an over-subscribed or incomplete set of lengths */
|
||||
left = 1;
|
||||
for (len = 1; len <= MAXBITS; len++) {
|
||||
left <<= 1;
|
||||
left -= count[len];
|
||||
if (left < 0) return -1; /* over-subscribed */
|
||||
}
|
||||
if (left > 0 && (type == CODES || max != 1))
|
||||
return -1; /* incomplete set */
|
||||
|
||||
/* generate offsets into symbol table for each length for sorting */
|
||||
offs[1] = 0;
|
||||
for (len = 1; len < MAXBITS; len++)
|
||||
offs[len + 1] = offs[len] + count[len];
|
||||
|
||||
/* sort symbols by length, by symbol order within each length */
|
||||
for (sym = 0; sym < codes; sym++)
|
||||
if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;
|
||||
|
||||
/*
|
||||
Create and fill in decoding tables. In this loop, the table being
|
||||
filled is at next and has curr index bits. The code being used is huff
|
||||
with length len. That code is converted to an index by dropping drop
|
||||
bits off of the bottom. For codes where len is less than drop + curr,
|
||||
those top drop + curr - len bits are incremented through all values to
|
||||
fill the table with replicated entries.
|
||||
|
||||
root is the number of index bits for the root table. When len exceeds
|
||||
root, sub-tables are created pointed to by the root entry with an index
|
||||
of the low root bits of huff. This is saved in low to check for when a
|
||||
new sub-table should be started. drop is zero when the root table is
|
||||
being filled, and drop is root when sub-tables are being filled.
|
||||
|
||||
When a new sub-table is needed, it is necessary to look ahead in the
|
||||
code lengths to determine what size sub-table is needed. The length
|
||||
counts are used for this, and so count[] is decremented as codes are
|
||||
entered in the tables.
|
||||
|
||||
used keeps track of how many table entries have been allocated from the
|
||||
provided *table space. It is checked for LENS and DIST tables against
|
||||
the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
|
||||
the initial root table size constants. See the comments in inftrees.h
|
||||
for more information.
|
||||
|
||||
sym increments through all symbols, and the loop terminates when
|
||||
all codes of length max, i.e. all codes, have been processed. This
|
||||
routine permits incomplete codes, so another loop after this one fills
|
||||
in the rest of the decoding tables with invalid code markers.
|
||||
*/
|
||||
|
||||
/* set up for code type */
|
||||
switch (type) {
|
||||
case CODES:
|
||||
base = extra = work; /* dummy value--not used */
|
||||
match = 20;
|
||||
break;
|
||||
case LENS:
|
||||
base = lbase;
|
||||
extra = lext;
|
||||
match = 257;
|
||||
break;
|
||||
default: /* DISTS */
|
||||
base = dbase;
|
||||
extra = dext;
|
||||
match = 0;
|
||||
}
|
||||
|
||||
/* initialize state for loop */
|
||||
huff = 0; /* starting code */
|
||||
sym = 0; /* starting code symbol */
|
||||
len = min; /* starting code length */
|
||||
next = *table; /* current table to fill in */
|
||||
curr = root; /* current table index bits */
|
||||
drop = 0; /* current bits to drop from code for index */
|
||||
low = (unsigned)(-1); /* trigger new sub-table when len > root */
|
||||
used = 1U << root; /* use root table entries */
|
||||
mask = used - 1; /* mask for comparing low */
|
||||
|
||||
/* check available table space */
|
||||
if ((type == LENS && used > ENOUGH_LENS) ||
|
||||
(type == DISTS && used > ENOUGH_DISTS))
|
||||
return 1;
|
||||
|
||||
/* process all codes and make table entries */
|
||||
for (;;) {
|
||||
/* create table entry */
|
||||
here.bits = (unsigned char)(len - drop);
|
||||
if (work[sym] + 1U < match) {
|
||||
here.op = (unsigned char)0;
|
||||
here.val = work[sym];
|
||||
}
|
||||
else if (work[sym] >= match) {
|
||||
here.op = (unsigned char)(extra[work[sym] - match]);
|
||||
here.val = base[work[sym] - match];
|
||||
}
|
||||
else {
|
||||
here.op = (unsigned char)(32 + 64); /* end of block */
|
||||
here.val = 0;
|
||||
}
|
||||
|
||||
/* replicate for those indices with low len bits equal to huff */
|
||||
incr = 1U << (len - drop);
|
||||
fill = 1U << curr;
|
||||
min = fill; /* save offset to next table */
|
||||
do {
|
||||
fill -= incr;
|
||||
next[(huff >> drop) + fill] = here;
|
||||
} while (fill != 0);
|
||||
|
||||
/* backwards increment the len-bit code huff */
|
||||
incr = 1U << (len - 1);
|
||||
while (huff & incr)
|
||||
incr >>= 1;
|
||||
if (incr != 0) {
|
||||
huff &= incr - 1;
|
||||
huff += incr;
|
||||
}
|
||||
else
|
||||
huff = 0;
|
||||
|
||||
/* go to next symbol, update count, len */
|
||||
sym++;
|
||||
if (--(count[len]) == 0) {
|
||||
if (len == max) break;
|
||||
len = lens[work[sym]];
|
||||
}
|
||||
|
||||
/* create new sub-table if needed */
|
||||
if (len > root && (huff & mask) != low) {
|
||||
/* if first time, transition to sub-tables */
|
||||
if (drop == 0)
|
||||
drop = root;
|
||||
|
||||
/* increment past last table */
|
||||
next += min; /* here min is 1 << curr */
|
||||
|
||||
/* determine length of next table */
|
||||
curr = len - drop;
|
||||
left = (int)(1 << curr);
|
||||
while (curr + drop < max) {
|
||||
left -= count[curr + drop];
|
||||
if (left <= 0) break;
|
||||
curr++;
|
||||
left <<= 1;
|
||||
}
|
||||
|
||||
/* check for enough space */
|
||||
used += 1U << curr;
|
||||
if ((type == LENS && used > ENOUGH_LENS) ||
|
||||
(type == DISTS && used > ENOUGH_DISTS))
|
||||
return 1;
|
||||
|
||||
/* point entry in root table to sub-table */
|
||||
low = huff & mask;
|
||||
(*table)[low].op = (unsigned char)curr;
|
||||
(*table)[low].bits = (unsigned char)root;
|
||||
(*table)[low].val = (unsigned short)(next - *table);
|
||||
}
|
||||
}
|
||||
|
||||
/* fill in remaining table entry if code is incomplete (guaranteed to have
|
||||
at most one remaining entry, since if the code is incomplete, the
|
||||
maximum code length that was allowed to get this far is one bit) */
|
||||
if (huff != 0) {
|
||||
here.op = (unsigned char)64; /* invalid code marker */
|
||||
here.bits = (unsigned char)(len - drop);
|
||||
here.val = (unsigned short)0;
|
||||
next[huff] = here;
|
||||
}
|
||||
|
||||
/* set return parameters */
|
||||
*table += used;
|
||||
*bits = root;
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* inftrees.h -- header to use inftrees.c
|
||||
* Copyright (C) 1995-2005, 2010 Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* WARNING: this file should *not* be used by applications. It is
|
||||
part of the implementation of the compression library and is
|
||||
subject to change. Applications should only use zlib.h.
|
||||
*/
|
||||
|
||||
/* Structure for decoding tables. Each entry provides either the
|
||||
information needed to do the operation requested by the code that
|
||||
indexed that table entry, or it provides a pointer to another
|
||||
table that indexes more bits of the code. op indicates whether
|
||||
the entry is a pointer to another table, a literal, a length or
|
||||
distance, an end-of-block, or an invalid code. For a table
|
||||
pointer, the low four bits of op is the number of index bits of
|
||||
that table. For a length or distance, the low four bits of op
|
||||
is the number of extra bits to get after the code. bits is
|
||||
the number of bits in this code or part of the code to drop off
|
||||
of the bit buffer. val is the actual byte to output in the case
|
||||
of a literal, the base length or distance, or the offset from
|
||||
the current table to the next table. Each entry is four bytes. */
|
||||
typedef struct {
|
||||
unsigned char op; /* operation, extra bits, table bits */
|
||||
unsigned char bits; /* bits in this part of the code */
|
||||
unsigned short val; /* offset in table or code value */
|
||||
} code;
|
||||
|
||||
/* op values as set by inflate_table():
|
||||
00000000 - literal
|
||||
0000tttt - table link, tttt != 0 is the number of table index bits
|
||||
0001eeee - length or distance, eeee is the number of extra bits
|
||||
01100000 - end of block
|
||||
01000000 - invalid code
|
||||
*/
|
||||
|
||||
/* Maximum size of the dynamic table. The maximum number of code structures is
|
||||
1444, which is the sum of 852 for literal/length codes and 592 for distance
|
||||
codes. These values were found by exhaustive searches using the program
|
||||
examples/enough.c found in the zlib distribtution. The arguments to that
|
||||
program are the number of symbols, the initial root table size, and the
|
||||
maximum bit length of a code. "enough 286 9 15" for literal/length codes
|
||||
returns returns 852, and "enough 30 6 15" for distance codes returns 592.
|
||||
The initial root table size (9 or 6) is found in the fifth argument of the
|
||||
inflate_table() calls in inflate.c and infback.c. If the root table size is
|
||||
changed, then these maximum sizes would be need to be recalculated and
|
||||
updated. */
|
||||
#define ENOUGH_LENS 852
|
||||
#define ENOUGH_DISTS 592
|
||||
#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS)
|
||||
|
||||
/* Type of code to build for inflate_table() */
|
||||
typedef enum {
|
||||
CODES,
|
||||
LENS,
|
||||
DISTS
|
||||
} codetype;
|
||||
|
||||
int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
|
||||
unsigned codes, code FAR * FAR *table,
|
||||
unsigned FAR *bits, unsigned short FAR *work));
|
||||
903
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/png.inl
Normal file
903
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/png.inl
Normal file
@@ -0,0 +1,903 @@
|
||||
//
|
||||
// PNG Decoder
|
||||
//
|
||||
// written by Larry Bank
|
||||
// bitbank@pobox.com
|
||||
// Arduino port started 5/3/2021
|
||||
// Original PNG code written 20+ years ago :)
|
||||
// The goal of this code is to decode PNG images on embedded systems
|
||||
//
|
||||
// Copyright 2021 BitBank Software, Inc. All Rights Reserved.
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//===========================================================================
|
||||
//
|
||||
#include "zlib.h"
|
||||
//
|
||||
// Convert 8-bit grayscale into RGB565
|
||||
//
|
||||
static const uint16_t usGrayTo565[] = {0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020, // 0
|
||||
0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,
|
||||
0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,
|
||||
0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,
|
||||
0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,
|
||||
0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,
|
||||
0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,
|
||||
0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,
|
||||
0x4208,0x4208,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228,
|
||||
0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,
|
||||
0x528a,0x528a,0x528a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,
|
||||
0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,
|
||||
0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,
|
||||
0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,
|
||||
0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,
|
||||
0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,
|
||||
0x8410,0x8410,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430,
|
||||
0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,
|
||||
0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x94b2,
|
||||
0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,
|
||||
0xa514,0xa514,0xa514,0xa514,0xa534,0xa534,0xa534,0xa534,
|
||||
0xad55,0xad55,0xad55,0xad55,0xad75,0xad75,0xad75,0xad75,
|
||||
0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb5b6,0xb5b6,0xb5b6,
|
||||
0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,
|
||||
0xc618,0xc618,0xc618,0xc618,0xc638,0xc638,0xc638,0xc638,
|
||||
0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,
|
||||
0xd69a,0xd69a,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba,
|
||||
0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,
|
||||
0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,
|
||||
0xef5d,0xef5d,0xef5d,0xef5d,0xef7d,0xef7d,0xef7d,0xef7d,
|
||||
0xf79e,0xf79e,0xf79e,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be,
|
||||
0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff};
|
||||
|
||||
//
|
||||
// C interface
|
||||
//
|
||||
#ifndef __cplusplus
|
||||
// C API
|
||||
int PNG_openRAM(PNGIMAGE *pPNG, uint8_t *pData, int iDataSize, PNG_DRAW_CALLBACK *pfnDraw)
|
||||
{
|
||||
pPNG->iError = PNG_SUCCESS;
|
||||
pPNG->pfnRead = readMem;
|
||||
pPNG->pfnSeek = seekMem;
|
||||
pPNG->pfnDraw = pfnDraw;
|
||||
pPNG->pfnOpen = NULL;
|
||||
pPNG->pfnClose = NULL;
|
||||
pPNG->PNGFile.iSize = iDataSize;
|
||||
pPNG->PNGFile.pData = pData;
|
||||
return PNGInit(pPNG);
|
||||
} /* PNG_openRAM() */
|
||||
|
||||
#ifdef __LINUX__
|
||||
int PNG_openFile(PNGIMAGE *pPNG, const char *szFilename, PNG_DRAW_CALLBACK *pfnDraw)
|
||||
{
|
||||
pPNG->iError = PNG_SUCCESS;
|
||||
pPNG->pfnRead = readFile;
|
||||
pPNG->pfnSeek = seekFile;
|
||||
pPNG->pfnDraw = pfnDraw;
|
||||
pPNG->pfnOpen = NULL;
|
||||
pPNG->pfnClose = closeFile;
|
||||
pPNG->PNGFile.fHandle = fopen(szFilename, "r+b");
|
||||
if (pPNG->PNGFile.fHandle == NULL)
|
||||
return 0;
|
||||
fseek((FILE *)pPNG->PNGFile.fHandle, 0, SEEK_END);
|
||||
pPNG->PNGFile.iSize = (int)ftell((FILE *)pPNG->PNGFile.fHandle);
|
||||
fseek((FILE *)pPNG->PNGFile.fHandle, 0, SEEK_SET);
|
||||
return PNGInit(pPNG);
|
||||
} /* PNG_openFile() */
|
||||
#endif // __LINUX__
|
||||
void PNG_close(PNGIMAGE *pPNG)
|
||||
{
|
||||
if (pPNG->pfnClose)
|
||||
(*pPNG->pfnClose)(pPNG->PNGFile.fHandle);
|
||||
} /* PNG_close() */
|
||||
|
||||
int PNG_getWidth(PNGIMAGE *pPNG)
|
||||
{
|
||||
return pPNG->iWidth;
|
||||
} /* PNG_getsWidth() */
|
||||
|
||||
int PNG_getHeight(PNGIMAGE *pPNG)
|
||||
{
|
||||
return pPNG->iHeight;
|
||||
} /* PNG_getHeight() */
|
||||
|
||||
int PNG_getLastError(PNGIMAGE *pPNG)
|
||||
{
|
||||
return pPNG->iError;
|
||||
} /* PNG_getLastError() */
|
||||
|
||||
uint8_t *PNG_getPalette(PNGIMAGE *pPNG)
|
||||
{
|
||||
return pPNG->ucPalette;
|
||||
} /* PNG_getPalette() */
|
||||
|
||||
int PNG_getBufferSize(PNGIMAGE *pPNG)
|
||||
{
|
||||
return pPNG->iHeight * pPNG->iPitch;
|
||||
} /* PNG_getBufferSize() */
|
||||
|
||||
uint8_t * PNG_getBuffer(PNGIMAGE *pPNG)
|
||||
{
|
||||
return pPNG->pImage;
|
||||
} /* PNG_getBuffer() */
|
||||
|
||||
#endif // !__cplusplus
|
||||
PNG_STATIC uint8_t PNGMakeMask(PNGDRAW *pDraw, uint8_t *pMask, uint8_t ucThreshold)
|
||||
{
|
||||
uint8_t alpha, c, *s, *d, *pPal;
|
||||
uint8_t cHasOpaque = 0;
|
||||
int i, x;
|
||||
|
||||
switch (pDraw->iPixelType) {
|
||||
case PNG_PIXEL_TRUECOLOR_ALPHA: // truecolor + alpha
|
||||
s = pDraw->pPixels;
|
||||
d = pMask;
|
||||
for (x=0; x<pDraw->iWidth; x+=8) { // groups of 8 pixels in each byte of mask
|
||||
c = 0;
|
||||
for (i=0; i<8; i++) {
|
||||
c <<= 1;
|
||||
alpha = s[3];
|
||||
if (alpha >= ucThreshold) // if opaque 'enough', set the bit
|
||||
c |= 1;
|
||||
s += 4;
|
||||
}
|
||||
*d++ = c;
|
||||
cHasOpaque |= c;
|
||||
}
|
||||
break;
|
||||
case PNG_PIXEL_GRAY_ALPHA:
|
||||
s = pDraw->pPixels;
|
||||
d = pMask;
|
||||
for (x=0; x<pDraw->iWidth; x+=8) { // groups of 8 pixels in each byte of mask
|
||||
c = 0;
|
||||
for (i=0; i<8; i++) {
|
||||
c <<= 1;
|
||||
alpha = s[1];
|
||||
if (alpha >= ucThreshold) // if opaque 'enough', set the bit
|
||||
c |= 1;
|
||||
s += 2;
|
||||
}
|
||||
*d++ = c;
|
||||
cHasOpaque |= c;
|
||||
}
|
||||
break;
|
||||
case PNG_PIXEL_INDEXED:
|
||||
s = pDraw->pPixels;
|
||||
pPal = &pDraw->pPalette[768];
|
||||
d = pMask;
|
||||
for (x=0; x<pDraw->iWidth; x+=8) { // groups of 8 pixels in each byte of mask
|
||||
uint8_t ucPix = 0;
|
||||
c = 0;
|
||||
switch (pDraw->iBpp) {
|
||||
case 2:
|
||||
for (i=0; i<8; i++) {
|
||||
if (i == 0 || i == 4)
|
||||
ucPix = *s++;
|
||||
c <<= 1;
|
||||
alpha = pPal[ucPix >> 6]; // get palette alpha for this color
|
||||
if (alpha >= ucThreshold) // if opaque 'enough', set the bit
|
||||
c |= 1;
|
||||
ucPix <<= 2;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (i=0; i<8; i++) {
|
||||
if ((i & 1) == 0)
|
||||
ucPix = *s++;
|
||||
c <<= 1;
|
||||
alpha = pPal[ucPix >> 4]; // get palette alpha for this color
|
||||
if (alpha >= ucThreshold) // if opaque 'enough', set the bit
|
||||
c |= 1;
|
||||
ucPix <<= 4;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
for (i=0; i<8; i++) {
|
||||
c <<= 1;
|
||||
alpha = pPal[s[0]]; // get palette alpha for this color
|
||||
if (alpha >= ucThreshold) // if opaque 'enough', set the bit
|
||||
c |= 1;
|
||||
s++;
|
||||
}
|
||||
break;
|
||||
} // switch on bit depth
|
||||
*d++ = c;
|
||||
cHasOpaque |= c;
|
||||
}
|
||||
break;
|
||||
default: // No alpha channel; make a mask of all 1's
|
||||
memset(pMask, 0xff, (pDraw->iWidth+7)>>3);
|
||||
cHasOpaque = 1;
|
||||
break;
|
||||
} // switch on pixel type
|
||||
return cHasOpaque; // let the caller know if any pixels are opaque
|
||||
} /* PNGMakeMask() */
|
||||
//
|
||||
// Convert a line of native PNG pixels into RGB565
|
||||
// handles all standard pixel types
|
||||
// written for simplicity, not necessarily performance
|
||||
//
|
||||
PNG_STATIC void PNGRGB565(PNGDRAW *pDraw, uint16_t *pPixels, int iEndiannes, uint32_t u32Bkgd, int iHasAlpha)
|
||||
{
|
||||
int x, j;
|
||||
uint16_t usPixel, *pDest = pPixels;
|
||||
uint8_t c, a, *pPal, *s = pDraw->pPixels;
|
||||
|
||||
switch (pDraw->iPixelType) {
|
||||
case PNG_PIXEL_GRAY_ALPHA:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
c = *s++; // gray level
|
||||
a = *s++;
|
||||
j = (a * c) >> 8; // multiply by the alpha
|
||||
usPixel = usGrayTo565[j];
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
}
|
||||
break;
|
||||
case PNG_PIXEL_GRAYSCALE:
|
||||
switch (pDraw->iBpp) {
|
||||
case 8:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
c = *s++;
|
||||
usPixel = (c >> 3); // blue
|
||||
usPixel |= ((c >> 2) << 5); // green
|
||||
usPixel |= ((c >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
if ((x & 7) == 0) {
|
||||
c = *s++;
|
||||
}
|
||||
if (c & 0x80) {
|
||||
usPixel = 0xffff;
|
||||
} else {
|
||||
usPixel = 0;
|
||||
}
|
||||
*pDest++ = usPixel;
|
||||
c <<= 1;
|
||||
}
|
||||
break;
|
||||
} // switch on bpp
|
||||
break;
|
||||
case PNG_PIXEL_TRUECOLOR:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
usPixel = (s[2] >> 3); // blue
|
||||
usPixel |= ((s[1] >> 2) << 5); // green
|
||||
usPixel |= ((s[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
s += 3;
|
||||
}
|
||||
break;
|
||||
case PNG_PIXEL_INDEXED: // palette color (can be 1/2/4 or 8 bits per pixel)
|
||||
if (pDraw->pFastPalette && !pDraw->iHasAlpha) { // faster RGB565 palette exists
|
||||
switch (pDraw->iBpp) {
|
||||
case 8:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
c = *s++;
|
||||
usPixel = pDraw->pFastPalette[c];
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (x=0; x<pDraw->iWidth; x+=2) {
|
||||
c = *s++;
|
||||
usPixel = pDraw->pFastPalette[c >> 4];
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
usPixel = pDraw->pFastPalette[c & 0xf];
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (x=0; x<pDraw->iWidth; x+=4) {
|
||||
c = *s++;
|
||||
for (j=0; j<4; j++) { // work on pairs of bits
|
||||
usPixel = pDraw->pFastPalette[c >> 6];
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
c <<= 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
if ((x & 7) == 0) {
|
||||
c = *s++;
|
||||
}
|
||||
usPixel = pDraw->pFastPalette[c >> 7];
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
c <<= 1;
|
||||
}
|
||||
break;
|
||||
} // switch on bpp
|
||||
return;
|
||||
}
|
||||
switch (pDraw->iBpp) {
|
||||
case 8: // 8-bit palette also supports palette alpha
|
||||
if (pDraw->iHasAlpha) { // use the alpha to modify the palette
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
int a;
|
||||
c = *s++;
|
||||
a = pDraw->pPalette[768+c]; // get alpha
|
||||
pPal = &pDraw->pPalette[c * 3];
|
||||
usPixel = ((pPal[2] * a) >> 11); // blue
|
||||
usPixel |= (((pPal[1] * a) >> 10) << 5); // green
|
||||
usPixel |= (((pPal[0] * a) >> 11) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
} // for x
|
||||
} else {
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
c = *s++;
|
||||
pPal = &pDraw->pPalette[c * 3];
|
||||
usPixel = (pPal[2] >> 3); // blue
|
||||
usPixel |= ((pPal[1] >> 2) << 5); // green
|
||||
usPixel |= ((pPal[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
} // for x
|
||||
} // not alpha palette
|
||||
break;
|
||||
case 4:
|
||||
for (x=0; x<pDraw->iWidth; x+=2) {
|
||||
c = *s++;
|
||||
pPal = &pDraw->pPalette[(c >> 4) * 3];
|
||||
usPixel = (pPal[2] >> 3); // blue
|
||||
usPixel |= ((pPal[1] >> 2) << 5); // green
|
||||
usPixel |= ((pPal[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
pPal = &pDraw->pPalette[(c & 0xf) * 3];
|
||||
usPixel = (pPal[2] >> 3); // blue
|
||||
usPixel |= ((pPal[1] >> 2) << 5); // green
|
||||
usPixel |= ((pPal[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (x=0; x<pDraw->iWidth; x+=4) {
|
||||
c = *s++;
|
||||
for (j=0; j<4; j++) { // work on pairs of bits
|
||||
pPal = &pDraw->pPalette[(c >> 6) * 3];
|
||||
usPixel = (pPal[2] >> 3); // blue
|
||||
usPixel |= ((pPal[1] >> 2) << 5); // green
|
||||
usPixel |= ((pPal[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
c <<= 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
if ((x & 7) == 0) {
|
||||
c = *s++;
|
||||
}
|
||||
pPal = &pDraw->pPalette[(c >> 7) * 3];
|
||||
usPixel = (pPal[2] >> 3); // blue
|
||||
usPixel |= ((pPal[1] >> 2) << 5); // green
|
||||
usPixel |= ((pPal[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
c <<= 1;
|
||||
}
|
||||
break;
|
||||
} // switch on bits per pixel
|
||||
break;
|
||||
case PNG_PIXEL_TRUECOLOR_ALPHA: // truecolor + alpha
|
||||
if (u32Bkgd != 0xffffffff) { // user wants to blend it with a background color
|
||||
uint32_t r, g, b, a;
|
||||
uint32_t b_r, b_g, b_b;
|
||||
b_r = u32Bkgd & 0xff; b_g = (u32Bkgd & 0xff00) >> 8;
|
||||
b_b = (u32Bkgd >> 16) & 0xff;
|
||||
uint16_t u16Clr = (u32Bkgd & 0xf8) << 8;
|
||||
u16Clr |= ((u32Bkgd & 0xfc00) >> 5);
|
||||
u16Clr |= ((u32Bkgd & 0xf80000) >> 19);
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
r = s[0]; g = s[1]; b = s[2]; a = s[3];
|
||||
if (a == 0)
|
||||
usPixel = u16Clr;
|
||||
else if (a == 255) { // fully opaque
|
||||
usPixel = (s[2] >> 3); // blue
|
||||
usPixel |= ((s[1] >> 2) << 5); // green
|
||||
usPixel |= ((s[0] >> 3) << 11); // red
|
||||
} else { // mix the colors
|
||||
r = ((r * a) + (b_r * (255-a))) >> 8;
|
||||
g = ((g * a) + (b_g * (255-a))) >> 8;
|
||||
b = ((b * a) + (b_b * (255-a))) >> 8;
|
||||
usPixel = (b >> 3); // blue
|
||||
usPixel |= ((g >> 2) << 5); // green
|
||||
usPixel |= ((r >> 3) << 11); // red
|
||||
}
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
s += 4; // skip alpha
|
||||
}
|
||||
} else { // ignore alpha
|
||||
for (x=0; x<pDraw->iWidth; x++) {
|
||||
usPixel = (s[2] >> 3); // blue
|
||||
usPixel |= ((s[1] >> 2) << 5); // green
|
||||
usPixel |= ((s[0] >> 3) << 11); // red
|
||||
if (iEndiannes == PNG_RGB565_BIG_ENDIAN)
|
||||
usPixel = __builtin_bswap16(usPixel);
|
||||
*pDest++ = usPixel;
|
||||
s += 4; // skip alpha
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
} /* PNGRGB565() */
|
||||
//
|
||||
// Helper functions for memory based images
|
||||
//
|
||||
PNG_STATIC int32_t seekMem(PNGFILE *pFile, int32_t iPosition)
|
||||
{
|
||||
if (iPosition < 0) iPosition = 0;
|
||||
else if (iPosition >= pFile->iSize) iPosition = pFile->iSize-1;
|
||||
pFile->iPos = iPosition;
|
||||
return iPosition;
|
||||
} /* seekMem() */
|
||||
|
||||
PNG_STATIC int32_t readFLASH(PNGFILE *pFile, uint8_t *pBuf, int32_t iLen)
|
||||
{
|
||||
int32_t iBytesRead;
|
||||
|
||||
iBytesRead = iLen;
|
||||
if ((pFile->iSize - pFile->iPos) < iLen)
|
||||
iBytesRead = pFile->iSize - pFile->iPos;
|
||||
if (iBytesRead <= 0)
|
||||
return 0;
|
||||
memcpy_P(pBuf, &pFile->pData[pFile->iPos], iBytesRead);
|
||||
pFile->iPos += iBytesRead;
|
||||
return iBytesRead;
|
||||
} /* readFLASH() */
|
||||
|
||||
PNG_STATIC int32_t readRAM(PNGFILE *pFile, uint8_t *pBuf, int32_t iLen)
|
||||
{
|
||||
int32_t iBytesRead;
|
||||
|
||||
iBytesRead = iLen;
|
||||
if ((pFile->iSize - pFile->iPos) < iLen)
|
||||
iBytesRead = pFile->iSize - pFile->iPos;
|
||||
if (iBytesRead <= 0)
|
||||
return 0;
|
||||
memcpy(pBuf, &pFile->pData[pFile->iPos], iBytesRead);
|
||||
pFile->iPos += iBytesRead;
|
||||
return iBytesRead;
|
||||
} /* readRAM() */
|
||||
//
|
||||
// Verify it's a PNG file and then parse the IHDR chunk
|
||||
// to get basic image size/type/etc
|
||||
//
|
||||
PNG_STATIC int PNGParseInfo(PNGIMAGE *pPage)
|
||||
{
|
||||
uint8_t *s = pPage->ucFileBuf;
|
||||
int iBytesRead;
|
||||
|
||||
pPage->iHasAlpha = pPage->iInterlaced = 0;
|
||||
// Read a few bytes to just parse the size/pixel info
|
||||
iBytesRead = (*pPage->pfnRead)(&pPage->PNGFile, s, 32);
|
||||
if (iBytesRead < 32) { // a PNG file this tiny? probably bad
|
||||
pPage->iError = PNG_INVALID_FILE;
|
||||
return pPage->iError;
|
||||
}
|
||||
|
||||
if (MOTOLONG(s) != (int32_t)0x89504e47) { // check that it's a PNG file
|
||||
pPage->iError = PNG_INVALID_FILE;
|
||||
return pPage->iError;
|
||||
}
|
||||
if (MOTOLONG(&s[12]) == 0x49484452/*'IHDR'*/) {
|
||||
pPage->iWidth = MOTOLONG(&s[16]);
|
||||
pPage->iHeight = MOTOLONG(&s[20]);
|
||||
pPage->ucBpp = s[24]; // bits per pixel
|
||||
pPage->ucPixelType = s[25]; // pixel type
|
||||
pPage->iInterlaced = s[28];
|
||||
if (pPage->iInterlaced || pPage->ucBpp > 8) { // 16-bit pixels are not supported (yet)
|
||||
pPage->iError = PNG_UNSUPPORTED_FEATURE;
|
||||
return pPage->iError;
|
||||
}
|
||||
// calculate the number of bytes per line of pixels
|
||||
switch (pPage->ucPixelType) {
|
||||
case PNG_PIXEL_GRAYSCALE: // grayscale
|
||||
case PNG_PIXEL_INDEXED: // indexed
|
||||
pPage->iPitch = (pPage->iWidth * pPage->ucBpp + 7)/8; // bytes per pixel
|
||||
break;
|
||||
case PNG_PIXEL_TRUECOLOR: // truecolor
|
||||
pPage->iPitch = ((3 * pPage->ucBpp) * pPage->iWidth + 7)/8;
|
||||
break;
|
||||
case PNG_PIXEL_GRAY_ALPHA: // grayscale + alpha
|
||||
pPage->iPitch = ((2 * pPage->ucBpp) * pPage->iWidth + 7)/8;
|
||||
pPage->iHasAlpha = 1;
|
||||
break;
|
||||
case PNG_PIXEL_TRUECOLOR_ALPHA: // truecolor + alpha
|
||||
pPage->iPitch = ((4 * pPage->ucBpp) * pPage->iWidth + 7)/8;
|
||||
pPage->iHasAlpha = 1;
|
||||
} // switch
|
||||
}
|
||||
if (pPage->iPitch >= PNG_MAX_BUFFERED_PIXELS)
|
||||
return PNG_TOO_BIG;
|
||||
|
||||
return PNG_SUCCESS;
|
||||
} /* PNGParseInfo() */
|
||||
//
|
||||
// De-filter the current line of pixels
|
||||
//
|
||||
PNG_STATIC void DeFilter(uint8_t *pCurr, uint8_t *pPrev, int iWidth, int iPitch)
|
||||
{
|
||||
uint8_t ucFilter = *pCurr++;
|
||||
int x, iBpp;
|
||||
if (iPitch <= iWidth)
|
||||
iBpp = 1;
|
||||
else
|
||||
iBpp = iPitch / iWidth;
|
||||
|
||||
pPrev++; // skip filter of previous line
|
||||
switch (ucFilter) { // switch on filter type
|
||||
case PNG_FILTER_NONE:
|
||||
// nothing to do :)
|
||||
break;
|
||||
case PNG_FILTER_SUB:
|
||||
for (x=iBpp; x<iPitch; x++) {
|
||||
pCurr[x] += pCurr[x-iBpp];
|
||||
}
|
||||
break;
|
||||
case PNG_FILTER_UP:
|
||||
for (x = 0; x < iPitch; x++) {
|
||||
pCurr[x] += pPrev[x];
|
||||
}
|
||||
break;
|
||||
case PNG_FILTER_AVG:
|
||||
for (x = 0; x < iBpp; x++) {
|
||||
pCurr[x] = (pCurr[x] +
|
||||
pPrev[x] / 2 );
|
||||
}
|
||||
for (x = iBpp; x < iPitch; x++) {
|
||||
pCurr[x] = pCurr[x] +
|
||||
(pPrev[x] + pCurr[x-iBpp]) / 2;
|
||||
}
|
||||
break;
|
||||
case PNG_FILTER_PAETH:
|
||||
if (iBpp == 1) {
|
||||
int a, c;
|
||||
uint8_t *pEnd = &pCurr[iPitch];
|
||||
// First pixel/byte
|
||||
c = *pPrev++;
|
||||
a = *pCurr + c;
|
||||
*pCurr++ = (uint8_t)a;
|
||||
while (pCurr < pEnd) {
|
||||
int b, pa, pb, pc, p;
|
||||
a &= 0xff; // From previous iteration
|
||||
b = *pPrev++;
|
||||
p = b - c;
|
||||
pc = a - c;
|
||||
// assume no native ABS() instruction
|
||||
pa = p < 0 ? -p : p;
|
||||
pb = pc < 0 ? -pc : pc;
|
||||
pc = (p + pc) < 0 ? -(p + pc) : p + pc;
|
||||
// choose the best predictor
|
||||
if (pb < pa) {
|
||||
pa = pb; a = b;
|
||||
}
|
||||
if (pc < pa) a = c;
|
||||
// Calculate current pixel
|
||||
c = b;
|
||||
a += *pCurr;
|
||||
*pCurr++ = (uint8_t)a;
|
||||
}
|
||||
} else { // multi-byte
|
||||
uint8_t *pEnd = &pCurr[iBpp];
|
||||
// first pixel is treated the same as 'up'
|
||||
while (pCurr < pEnd) {
|
||||
int a = *pCurr + *pPrev++;
|
||||
*pCurr++ = (uint8_t)a;
|
||||
}
|
||||
pEnd = pEnd + (iPitch - iBpp);
|
||||
while (pCurr < pEnd) {
|
||||
int a, b, c, pa, pb, pc, p;
|
||||
c = pPrev[-iBpp];
|
||||
a = pCurr[-iBpp];
|
||||
b = *pPrev++;
|
||||
p = b - c;
|
||||
pc = a - c;
|
||||
// asume no native ABS() instruction
|
||||
pa = p < 0 ? -p : p;
|
||||
pb = pc < 0 ? -pc : pc;
|
||||
pc = (p + pc) < 0 ? -(p + pc) : p + pc;
|
||||
if (pb < pa) {
|
||||
pa = pb; a = b;
|
||||
}
|
||||
if (pc < pa) a = c;
|
||||
a += *pCurr;
|
||||
*pCurr++ = (uint8_t)a;
|
||||
}
|
||||
} // multi-byte
|
||||
break;
|
||||
} // switch on filter type
|
||||
} /* DeFilter() */
|
||||
//
|
||||
// PNGInit
|
||||
// Parse the PNG file header and confirm that it's a valid file
|
||||
//
|
||||
// returns 0 for success, 1 for failure
|
||||
//
|
||||
PNG_STATIC int PNGInit(PNGIMAGE *pPNG)
|
||||
{
|
||||
return PNGParseInfo(pPNG); // gather info for image
|
||||
} /* PNGInit() */
|
||||
//
|
||||
// Decode the PNG file
|
||||
//
|
||||
// You must call open() before calling decode()
|
||||
// This function can be called repeatedly without having
|
||||
// to close and re-open the file
|
||||
//
|
||||
PNG_STATIC int DecodePNG(PNGIMAGE *pPage, void *pUser, int iOptions)
|
||||
{
|
||||
int err, y, iLen=0;
|
||||
int bDone, iOffset, iFileOffset, iBytesRead;
|
||||
int iMarker=0;
|
||||
uint8_t *tmp, *pCurr, *pPrev;
|
||||
z_stream d_stream; /* decompression stream */
|
||||
uint8_t *s = pPage->ucFileBuf;
|
||||
struct inflate_state *state;
|
||||
|
||||
// Either the image buffer must be allocated or a draw callback must be set before entering
|
||||
if (pPage->pImage == NULL && pPage->pfnDraw == NULL) {
|
||||
pPage->iError = PNG_NO_BUFFER;
|
||||
return 0;
|
||||
}
|
||||
// Use internal buffer to maintain the current and previous lines
|
||||
pCurr = pPage->ucPixels;
|
||||
pPrev = &pPage->ucPixels[pPage->iPitch+1];
|
||||
pPage->iError = PNG_SUCCESS;
|
||||
// Start decoding the image
|
||||
bDone = FALSE;
|
||||
// Inflate the compressed image data
|
||||
// The allocation functions are disabled and zlib has been modified
|
||||
// to not use malloc/free and instead the buffer is part of the PNG class
|
||||
d_stream.zalloc = (alloc_func)0;
|
||||
d_stream.zfree = (free_func)0;
|
||||
d_stream.opaque = (voidpf)0;
|
||||
// Insert the memory pointer here to avoid having to use malloc() inside zlib
|
||||
state = (struct inflate_state FAR *)pPage->ucZLIB;
|
||||
d_stream.state = (struct internal_state FAR *)state;
|
||||
state->window = &pPage->ucZLIB[sizeof(inflate_state)]; // point to 32k dictionary buffer
|
||||
err = inflateInit(&d_stream);
|
||||
#ifdef FUTURE
|
||||
// if (inpage->cCompression == PIL_COMP_IPHONE_FLATE)
|
||||
// err = mz_inflateInit2(&d_stream, -15); // undocumented option which ignores header and crcs
|
||||
// else
|
||||
// err = mz_inflateInit2(&d_stream, 15);
|
||||
#endif // FUTURE
|
||||
|
||||
iFileOffset = 8; // skip PNG file signature
|
||||
iOffset = 0; // internal buffer offset starts at 0
|
||||
// Read some data to start
|
||||
(*pPage->pfnSeek)(&pPage->PNGFile, iFileOffset);
|
||||
iBytesRead = (*pPage->pfnRead)(&pPage->PNGFile, s, PNG_FILE_BUF_SIZE);
|
||||
iFileOffset += iBytesRead;
|
||||
y = 0;
|
||||
d_stream.avail_out = 0;
|
||||
d_stream.next_out = pPage->pImage;
|
||||
|
||||
while (y < pPage->iHeight) { // continue until fully decoded
|
||||
// parse the markers until the next data block
|
||||
while (!bDone)
|
||||
{
|
||||
iLen = MOTOLONG(&s[iOffset]); // chunk length
|
||||
if (iLen < 0 || iLen + (iFileOffset - iBytesRead) > pPage->PNGFile.iSize) // invalid data
|
||||
{
|
||||
pPage->iError = PNG_DECODE_ERROR;
|
||||
return 1;
|
||||
}
|
||||
iMarker = MOTOLONG(&s[iOffset+4]);
|
||||
iOffset += 8; // point to the marker data
|
||||
switch (iMarker)
|
||||
{
|
||||
case 0x44474b62: // 'bKGD' DEBUG
|
||||
break;
|
||||
case 0x67414d41: //'gAMA'
|
||||
break;
|
||||
#ifdef FUTURE
|
||||
case 0x6663544C: //'fcTL' frame control block for animated PNG (need to get size of this partial image)
|
||||
pPage->iWidth = MOTOLONG(&pPage->pData[iOffset + 4]); // frame width
|
||||
pPage->iHeight = MOTOLONG(&pPage->pData[iOffset + 8]); // frame height
|
||||
bDone = TRUE;
|
||||
break;
|
||||
#endif
|
||||
case 0x504c5445: //'PLTE' palette colors
|
||||
memset(&pPage->ucPalette[768], 0xff, 256); // assume all colors are opaque unless specified
|
||||
memcpy(pPage->ucPalette, &s[iOffset], iLen);
|
||||
if (iOptions & PNG_FAST_PALETTE) { // create a RGB565 palette
|
||||
int i, iColors = 1 << pPage->ucBpp;
|
||||
uint16_t usPixel, *d;
|
||||
uint8_t *s = pPage->ucPalette;
|
||||
d = (uint16_t *)&pPage->ucPixels[sizeof(pPage->ucPixels)-512];
|
||||
for (i=0; i<iColors; i++) {
|
||||
usPixel = (s[2] >> 3); // blue
|
||||
usPixel |= ((s[1] >> 2) << 5); // green
|
||||
usPixel |= ((s[0] >> 3) << 11); // red
|
||||
*d++ = usPixel;
|
||||
s += 3;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x74524e53: //'tRNS' transparency info
|
||||
if (pPage->ucPixelType == PNG_PIXEL_INDEXED) // if palette exists
|
||||
{
|
||||
memcpy(&pPage->ucPalette[768], &s[iOffset], iLen);
|
||||
pPage->iHasAlpha = 1;
|
||||
}
|
||||
else if (iLen == 2) // for grayscale images
|
||||
{
|
||||
pPage->iTransparent = s[iOffset + 1]; // lower part of 2-byte value is transparent color index
|
||||
pPage->iHasAlpha = 1;
|
||||
}
|
||||
else if (iLen == 6) // transparent color for 24-bpp image
|
||||
{
|
||||
pPage->iTransparent = s[iOffset + 5]; // lower part of 2-byte value is transparent color value
|
||||
pPage->iTransparent |= (s[iOffset + 3] << 8);
|
||||
pPage->iTransparent |= (s[iOffset + 1] << 16);
|
||||
pPage->iHasAlpha = 1;
|
||||
}
|
||||
break;
|
||||
case 0x49444154: //'IDAT' image data block
|
||||
while (iLen) {
|
||||
if (iOffset >= iBytesRead) {
|
||||
// we ran out of data; get some more
|
||||
iBytesRead = (*pPage->pfnRead)(&pPage->PNGFile, pPage->ucFileBuf, (iLen > PNG_FILE_BUF_SIZE) ? PNG_FILE_BUF_SIZE : iLen);
|
||||
iFileOffset += iBytesRead;
|
||||
iOffset = 0;
|
||||
} else {
|
||||
// number of bytes remaining in buffer
|
||||
iBytesRead -= iOffset;
|
||||
}
|
||||
if (iBytesRead > iLen) { // we read too much
|
||||
d_stream.next_in = &pPage->ucFileBuf[iOffset];
|
||||
d_stream.avail_in = iLen;
|
||||
iOffset += iLen; // point to start of next marker
|
||||
iBytesRead -= iLen; // keep remaining byte count
|
||||
iLen = 0; // every byte will be decoded
|
||||
} else {
|
||||
d_stream.next_in = &pPage->ucFileBuf[iOffset];
|
||||
d_stream.avail_in = iBytesRead;
|
||||
iLen -= iBytesRead;
|
||||
iOffset += iBytesRead;
|
||||
iBytesRead = 0;
|
||||
}
|
||||
// if (iMarker == 0x66644154) // data starts at offset 4 in APNG frame data block
|
||||
// {
|
||||
// d_stream.next_in += 4;
|
||||
// d_stream.avail_in -= 4;
|
||||
// }
|
||||
err = 0;
|
||||
while (err == Z_OK) {
|
||||
if (d_stream.avail_out == 0) { // reset for next line
|
||||
d_stream.avail_out = pPage->iPitch+1;
|
||||
d_stream.next_out = pCurr;
|
||||
} // otherwise it could be a continuation of an unfinished line
|
||||
err = inflate(&d_stream, Z_NO_FLUSH, iOptions & PNG_CHECK_CRC);
|
||||
if ((err == Z_OK || err == Z_STREAM_END) && d_stream.avail_out == 0) {// successfully decoded line
|
||||
DeFilter(pCurr, pPrev, pPage->iWidth, pPage->iPitch);
|
||||
if (pPage->pImage == NULL) { // no image buffer, send it line by line
|
||||
PNGDRAW pngd;
|
||||
pngd.pUser = pUser;
|
||||
pngd.iPitch = pPage->iPitch;
|
||||
pngd.iWidth = pPage->iWidth;
|
||||
pngd.pPalette = pPage->ucPalette;
|
||||
pngd.pFastPalette = (iOptions & PNG_FAST_PALETTE) ? (uint16_t *)&pPage->ucPixels[sizeof(pPage->ucPixels)-512] : NULL;
|
||||
pngd.pPixels = pCurr+1;
|
||||
pngd.iPixelType = pPage->ucPixelType;
|
||||
pngd.iHasAlpha = pPage->iHasAlpha;
|
||||
pngd.iBpp = pPage->ucBpp;
|
||||
pngd.y = y;
|
||||
(*pPage->pfnDraw)(&pngd);
|
||||
} else {
|
||||
// copy to destination bitmap
|
||||
memcpy(&pPage->pImage[y * pPage->iPitch], &pCurr[1], pPage->iPitch);
|
||||
}
|
||||
y++;
|
||||
// swap current and previous lines
|
||||
tmp = pCurr; pCurr = pPrev; pPrev = tmp;
|
||||
} else { // some error
|
||||
tmp = NULL;
|
||||
}
|
||||
}
|
||||
if (err == Z_STREAM_END && d_stream.avail_out == 0) {
|
||||
// successful decode, stop here
|
||||
y = pPage->iHeight;
|
||||
bDone = TRUE;
|
||||
} else if (err == Z_DATA_ERROR || err == Z_STREAM_ERROR) {
|
||||
iLen = 0; // quit now
|
||||
y = pPage->iHeight;
|
||||
pPage->iError = PNG_DECODE_ERROR;
|
||||
bDone = TRUE; // force loop to exit with error
|
||||
} else if (err == Z_BUF_ERROR) {
|
||||
y |= 0; // need more data
|
||||
}
|
||||
} // while (iLen)
|
||||
if (y != pPage->iHeight && iFileOffset < pPage->PNGFile.iSize) {
|
||||
// need to read more IDAT chunks
|
||||
if (iBytesRead) { // data remaining in buffer
|
||||
// move the data down
|
||||
memmove(pPage->ucFileBuf, &pPage->ucFileBuf[iOffset], iBytesRead);
|
||||
iOffset = 0;
|
||||
} else {
|
||||
iBytesRead = (*pPage->pfnRead)(&pPage->PNGFile, pPage->ucFileBuf, PNG_FILE_BUF_SIZE);
|
||||
iFileOffset += iBytesRead;
|
||||
iOffset = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
// case 0x69545874: //'iTXt'
|
||||
// case 0x7a545874: //'zTXt'
|
||||
#ifdef FUTURE
|
||||
case 0x74455874: //'tEXt'
|
||||
{
|
||||
char szTemp[256];
|
||||
char *pDest = NULL;
|
||||
memcpy(szTemp, &s[iOffset], 80); // get the label length (Title, Author, Description, Copyright, Creation Time, Software, Disclaimer, Warning, Source, Comment)
|
||||
i = (int)strlen(szTemp) + 1; // start of actual text
|
||||
if (strcmp(szTemp, "Comment") == 0 || strcmp(szTemp, "Description") == 0) pDest = &pPage->szComment[0];
|
||||
else if (strcmp(szTemp, "Software") == 0) pDest = &pPage->szSoftware[0];
|
||||
else if (strcmp(szTemp, "Author") == 0) pDest = &pPage->szArtist[0];
|
||||
if (pDest != NULL)
|
||||
{
|
||||
if ((iLen - i) < 128)
|
||||
{
|
||||
memcpy(pPage->szComment, &pPage->pData[iOffset + i], iLen - i);
|
||||
pPage->szComment[iLen - i + 1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(pPage->szComment, &pPage->pData[iOffset + i], 127);
|
||||
pPage->szComment[127] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
} // switch
|
||||
iOffset += (iLen + 4); // skip data + CRC
|
||||
if (iOffset > iBytesRead-8) { // need to read more data
|
||||
iFileOffset += (iOffset - iBytesRead);
|
||||
(*pPage->pfnSeek)(&pPage->PNGFile, iFileOffset);
|
||||
iBytesRead = (*pPage->pfnRead)(&pPage->PNGFile, s, PNG_FILE_BUF_SIZE);
|
||||
iFileOffset += iBytesRead;
|
||||
iOffset = 0;
|
||||
}
|
||||
} // while !bDone
|
||||
} // while y < height
|
||||
err = inflateEnd(&d_stream);
|
||||
return pPage->iError;
|
||||
} /* DecodePNG() */
|
||||
534
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zconf.h
Normal file
534
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zconf.h
Normal file
@@ -0,0 +1,534 @@
|
||||
/* zconf.h -- configuration of the zlib compression library
|
||||
* Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* @(#) $Id$ */
|
||||
|
||||
#ifndef ZCONF_H
|
||||
#define ZCONF_H
|
||||
|
||||
/*
|
||||
* If you *really* need a unique prefix for all types and library functions,
|
||||
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
|
||||
* Even better than compiling with -DZ_PREFIX would be to use configure to set
|
||||
* this permanently in zconf.h using "./configure --zprefix".
|
||||
*/
|
||||
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
||||
# define Z_PREFIX_SET
|
||||
|
||||
/* all linked symbols and init macros */
|
||||
# define _dist_code z__dist_code
|
||||
# define _length_code z__length_code
|
||||
# define _tr_align z__tr_align
|
||||
# define _tr_flush_bits z__tr_flush_bits
|
||||
# define _tr_flush_block z__tr_flush_block
|
||||
# define _tr_init z__tr_init
|
||||
# define _tr_stored_block z__tr_stored_block
|
||||
# define _tr_tally z__tr_tally
|
||||
# define adler32 z_adler32
|
||||
# define adler32_combine z_adler32_combine
|
||||
# define adler32_combine64 z_adler32_combine64
|
||||
# define adler32_z z_adler32_z
|
||||
# ifndef Z_SOLO
|
||||
# define compress z_compress
|
||||
# define compress2 z_compress2
|
||||
# define compressBound z_compressBound
|
||||
# endif
|
||||
# define crc32 z_crc32
|
||||
# define crc32_combine z_crc32_combine
|
||||
# define crc32_combine64 z_crc32_combine64
|
||||
# define crc32_z z_crc32_z
|
||||
# define deflate z_deflate
|
||||
# define deflateBound z_deflateBound
|
||||
# define deflateCopy z_deflateCopy
|
||||
# define deflateEnd z_deflateEnd
|
||||
# define deflateGetDictionary z_deflateGetDictionary
|
||||
# define deflateInit z_deflateInit
|
||||
# define deflateInit2 z_deflateInit2
|
||||
# define deflateInit2_ z_deflateInit2_
|
||||
# define deflateInit_ z_deflateInit_
|
||||
# define deflateParams z_deflateParams
|
||||
# define deflatePending z_deflatePending
|
||||
# define deflatePrime z_deflatePrime
|
||||
# define deflateReset z_deflateReset
|
||||
# define deflateResetKeep z_deflateResetKeep
|
||||
# define deflateSetDictionary z_deflateSetDictionary
|
||||
# define deflateSetHeader z_deflateSetHeader
|
||||
# define deflateTune z_deflateTune
|
||||
# define deflate_copyright z_deflate_copyright
|
||||
# define get_crc_table z_get_crc_table
|
||||
# ifndef Z_SOLO
|
||||
# define gz_error z_gz_error
|
||||
# define gz_intmax z_gz_intmax
|
||||
# define gz_strwinerror z_gz_strwinerror
|
||||
# define gzbuffer z_gzbuffer
|
||||
# define gzclearerr z_gzclearerr
|
||||
# define gzclose z_gzclose
|
||||
# define gzclose_r z_gzclose_r
|
||||
# define gzclose_w z_gzclose_w
|
||||
# define gzdirect z_gzdirect
|
||||
# define gzdopen z_gzdopen
|
||||
# define gzeof z_gzeof
|
||||
# define gzerror z_gzerror
|
||||
# define gzflush z_gzflush
|
||||
# define gzfread z_gzfread
|
||||
# define gzfwrite z_gzfwrite
|
||||
# define gzgetc z_gzgetc
|
||||
# define gzgetc_ z_gzgetc_
|
||||
# define gzgets z_gzgets
|
||||
# define gzoffset z_gzoffset
|
||||
# define gzoffset64 z_gzoffset64
|
||||
# define gzopen z_gzopen
|
||||
# define gzopen64 z_gzopen64
|
||||
# ifdef _WIN32
|
||||
# define gzopen_w z_gzopen_w
|
||||
# endif
|
||||
# define gzprintf z_gzprintf
|
||||
# define gzputc z_gzputc
|
||||
# define gzputs z_gzputs
|
||||
# define gzread z_gzread
|
||||
# define gzrewind z_gzrewind
|
||||
# define gzseek z_gzseek
|
||||
# define gzseek64 z_gzseek64
|
||||
# define gzsetparams z_gzsetparams
|
||||
# define gztell z_gztell
|
||||
# define gztell64 z_gztell64
|
||||
# define gzungetc z_gzungetc
|
||||
# define gzvprintf z_gzvprintf
|
||||
# define gzwrite z_gzwrite
|
||||
# endif
|
||||
# define inflate z_inflate
|
||||
# define inflateBack z_inflateBack
|
||||
# define inflateBackEnd z_inflateBackEnd
|
||||
# define inflateBackInit z_inflateBackInit
|
||||
# define inflateBackInit_ z_inflateBackInit_
|
||||
# define inflateCodesUsed z_inflateCodesUsed
|
||||
# define inflateCopy z_inflateCopy
|
||||
# define inflateEnd z_inflateEnd
|
||||
# define inflateGetDictionary z_inflateGetDictionary
|
||||
# define inflateGetHeader z_inflateGetHeader
|
||||
# define inflateInit z_inflateInit
|
||||
# define inflateInit2 z_inflateInit2
|
||||
# define inflateInit2_ z_inflateInit2_
|
||||
# define inflateInit_ z_inflateInit_
|
||||
# define inflateMark z_inflateMark
|
||||
# define inflatePrime z_inflatePrime
|
||||
# define inflateReset z_inflateReset
|
||||
# define inflateReset2 z_inflateReset2
|
||||
# define inflateResetKeep z_inflateResetKeep
|
||||
# define inflateSetDictionary z_inflateSetDictionary
|
||||
# define inflateSync z_inflateSync
|
||||
# define inflateSyncPoint z_inflateSyncPoint
|
||||
# define inflateUndermine z_inflateUndermine
|
||||
# define inflateValidate z_inflateValidate
|
||||
# define inflate_copyright z_inflate_copyright
|
||||
# define inflate_fast z_inflate_fast
|
||||
# define inflate_table z_inflate_table
|
||||
# ifndef Z_SOLO
|
||||
# define uncompress z_uncompress
|
||||
# define uncompress2 z_uncompress2
|
||||
# endif
|
||||
# define zError z_zError
|
||||
# ifndef Z_SOLO
|
||||
# define zcalloc z_zcalloc
|
||||
# define zcfree z_zcfree
|
||||
# endif
|
||||
# define zlibCompileFlags z_zlibCompileFlags
|
||||
# define zlibVersion z_zlibVersion
|
||||
|
||||
/* all zlib typedefs in zlib.h and zconf.h */
|
||||
# define Byte z_Byte
|
||||
# define Bytef z_Bytef
|
||||
# define alloc_func z_alloc_func
|
||||
# define charf z_charf
|
||||
# define free_func z_free_func
|
||||
# ifndef Z_SOLO
|
||||
# define gzFile z_gzFile
|
||||
# endif
|
||||
# define gz_header z_gz_header
|
||||
# define gz_headerp z_gz_headerp
|
||||
# define in_func z_in_func
|
||||
# define intf z_intf
|
||||
# define out_func z_out_func
|
||||
# define uInt z_uInt
|
||||
# define uIntf z_uIntf
|
||||
# define uLong z_uLong
|
||||
# define uLongf z_uLongf
|
||||
# define voidp z_voidp
|
||||
# define voidpc z_voidpc
|
||||
# define voidpf z_voidpf
|
||||
|
||||
/* all zlib structs in zlib.h and zconf.h */
|
||||
# define gz_header_s z_gz_header_s
|
||||
# define internal_state z_internal_state
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||
# define MSDOS
|
||||
#endif
|
||||
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
|
||||
# define OS2
|
||||
#endif
|
||||
#if defined(_WINDOWS) && !defined(WINDOWS)
|
||||
# define WINDOWS
|
||||
#endif
|
||||
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
|
||||
# ifndef WIN32
|
||||
# define WIN32
|
||||
# endif
|
||||
#endif
|
||||
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
|
||||
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
|
||||
# ifndef SYS16BIT
|
||||
# define SYS16BIT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
|
||||
* than 64k bytes at a time (needed on systems with 16-bit int).
|
||||
*/
|
||||
#ifdef SYS16BIT
|
||||
# define MAXSEG_64K
|
||||
#endif
|
||||
#ifdef MSDOS
|
||||
# define UNALIGNED_OK
|
||||
#endif
|
||||
|
||||
#ifdef __STDC_VERSION__
|
||||
# ifndef STDC
|
||||
# define STDC
|
||||
# endif
|
||||
# if __STDC_VERSION__ >= 199901L
|
||||
# ifndef STDC99
|
||||
# define STDC99
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
|
||||
# define STDC
|
||||
#endif
|
||||
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
|
||||
# define STDC
|
||||
#endif
|
||||
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
|
||||
# define STDC
|
||||
#endif
|
||||
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
|
||||
# define STDC
|
||||
#endif
|
||||
|
||||
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
|
||||
# define STDC
|
||||
#endif
|
||||
|
||||
#ifndef STDC
|
||||
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
|
||||
# define const /* note: need a more gentle solution here */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(ZLIB_CONST) && !defined(z_const)
|
||||
# define z_const const
|
||||
#else
|
||||
# define z_const
|
||||
#endif
|
||||
|
||||
#ifdef Z_SOLO
|
||||
typedef unsigned long z_size_t;
|
||||
#else
|
||||
# define z_longlong long long
|
||||
# if defined(NO_SIZE_T)
|
||||
typedef unsigned NO_SIZE_T z_size_t;
|
||||
# elif defined(STDC)
|
||||
# include <stddef.h>
|
||||
typedef size_t z_size_t;
|
||||
# else
|
||||
typedef unsigned long z_size_t;
|
||||
# endif
|
||||
# undef z_longlong
|
||||
#endif
|
||||
|
||||
/* Maximum value for memLevel in deflateInit2 */
|
||||
#ifndef MAX_MEM_LEVEL
|
||||
# ifdef MAXSEG_64K
|
||||
# define MAX_MEM_LEVEL 8
|
||||
# else
|
||||
# define MAX_MEM_LEVEL 9
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
||||
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
|
||||
* created by gzip. (Files created by minigzip can still be extracted by
|
||||
* gzip.)
|
||||
*/
|
||||
#ifndef MAX_WBITS
|
||||
# define MAX_WBITS 15 /* 32K LZ77 window */
|
||||
#endif
|
||||
|
||||
/* The memory requirements for deflate are (in bytes):
|
||||
(1 << (windowBits+2)) + (1 << (memLevel+9))
|
||||
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
|
||||
plus a few kilobytes for small objects. For example, if you want to reduce
|
||||
the default memory requirements from 256K to 128K, compile with
|
||||
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
|
||||
Of course this will generally degrade compression (there's no free lunch).
|
||||
|
||||
The memory requirements for inflate are (in bytes) 1 << windowBits
|
||||
that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
|
||||
for small objects.
|
||||
*/
|
||||
|
||||
/* Type declarations */
|
||||
|
||||
#ifndef OF /* function prototypes */
|
||||
# ifdef STDC
|
||||
# define OF(args) args
|
||||
# else
|
||||
# define OF(args) ()
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef Z_ARG /* function prototypes for stdarg */
|
||||
# if defined(STDC) || defined(Z_HAVE_STDARG_H)
|
||||
# define Z_ARG(args) args
|
||||
# else
|
||||
# define Z_ARG(args) ()
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||
* model programming (small or medium model with some far allocations).
|
||||
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
||||
* just define FAR to be empty.
|
||||
*/
|
||||
#ifdef SYS16BIT
|
||||
# if defined(M_I86SM) || defined(M_I86MM)
|
||||
/* MSC small or medium model */
|
||||
# define SMALL_MEDIUM
|
||||
# ifdef _MSC_VER
|
||||
# define FAR _far
|
||||
# else
|
||||
# define FAR far
|
||||
# endif
|
||||
# endif
|
||||
# if (defined(__SMALL__) || defined(__MEDIUM__))
|
||||
/* Turbo C small or medium model */
|
||||
# define SMALL_MEDIUM
|
||||
# ifdef __BORLANDC__
|
||||
# define FAR _far
|
||||
# else
|
||||
# define FAR far
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(WINDOWS) || defined(WIN32)
|
||||
/* If building or using zlib as a DLL, define ZLIB_DLL.
|
||||
* This is not mandatory, but it offers a little performance increase.
|
||||
*/
|
||||
# ifdef ZLIB_DLL
|
||||
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
|
||||
# ifdef ZLIB_INTERNAL
|
||||
# define ZEXTERN extern __declspec(dllexport)
|
||||
# else
|
||||
# define ZEXTERN extern __declspec(dllimport)
|
||||
# endif
|
||||
# endif
|
||||
# endif /* ZLIB_DLL */
|
||||
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
|
||||
* define ZLIB_WINAPI.
|
||||
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
|
||||
*/
|
||||
# ifdef ZLIB_WINAPI
|
||||
# ifdef FAR
|
||||
# undef FAR
|
||||
# endif
|
||||
# include <windows.h>
|
||||
/* No need for _export, use ZLIB.DEF instead. */
|
||||
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
|
||||
# define ZEXPORT WINAPI
|
||||
# ifdef WIN32
|
||||
# define ZEXPORTVA WINAPIV
|
||||
# else
|
||||
# define ZEXPORTVA FAR CDECL
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined (__BEOS__)
|
||||
# ifdef ZLIB_DLL
|
||||
# ifdef ZLIB_INTERNAL
|
||||
# define ZEXPORT __declspec(dllexport)
|
||||
# define ZEXPORTVA __declspec(dllexport)
|
||||
# else
|
||||
# define ZEXPORT __declspec(dllimport)
|
||||
# define ZEXPORTVA __declspec(dllimport)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef ZEXTERN
|
||||
# define ZEXTERN extern
|
||||
#endif
|
||||
#ifndef ZEXPORT
|
||||
# define ZEXPORT
|
||||
#endif
|
||||
#ifndef ZEXPORTVA
|
||||
# define ZEXPORTVA
|
||||
#endif
|
||||
|
||||
#ifndef FAR
|
||||
# define FAR
|
||||
#endif
|
||||
|
||||
#if !defined(__MACTYPES__)
|
||||
typedef unsigned char Byte; /* 8 bits */
|
||||
#endif
|
||||
typedef unsigned int uInt; /* 16 bits or more */
|
||||
typedef unsigned long uLong; /* 32 bits or more */
|
||||
|
||||
#ifdef SMALL_MEDIUM
|
||||
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
|
||||
# define Bytef Byte FAR
|
||||
#else
|
||||
typedef Byte FAR Bytef;
|
||||
#endif
|
||||
typedef char FAR charf;
|
||||
typedef int FAR intf;
|
||||
typedef uInt FAR uIntf;
|
||||
typedef uLong FAR uLongf;
|
||||
|
||||
#ifdef STDC
|
||||
typedef void const *voidpc;
|
||||
typedef void FAR *voidpf;
|
||||
typedef void *voidp;
|
||||
#else
|
||||
typedef Byte const *voidpc;
|
||||
typedef Byte FAR *voidpf;
|
||||
typedef Byte *voidp;
|
||||
#endif
|
||||
|
||||
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
|
||||
# include <limits.h>
|
||||
# if (UINT_MAX == 0xffffffffUL)
|
||||
# define Z_U4 unsigned
|
||||
# elif (ULONG_MAX == 0xffffffffUL)
|
||||
# define Z_U4 unsigned long
|
||||
# elif (USHRT_MAX == 0xffffffffUL)
|
||||
# define Z_U4 unsigned short
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef Z_U4
|
||||
typedef Z_U4 z_crc_t;
|
||||
#else
|
||||
typedef unsigned long z_crc_t;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
||||
# define Z_HAVE_UNISTD_H
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */
|
||||
# define Z_HAVE_STDARG_H
|
||||
#endif
|
||||
|
||||
#ifdef STDC
|
||||
# ifndef Z_SOLO
|
||||
# include <sys/types.h> /* for off_t */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
|
||||
# ifndef Z_SOLO
|
||||
# include <stdarg.h> /* for va_list */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
# ifndef Z_SOLO
|
||||
# include <stddef.h> /* for wchar_t */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
|
||||
* "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
|
||||
* though the former does not conform to the LFS document), but considering
|
||||
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
|
||||
* equivalently requesting no 64-bit operations
|
||||
*/
|
||||
#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
|
||||
# undef _LARGEFILE64_SOURCE
|
||||
#endif
|
||||
|
||||
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
|
||||
# define Z_HAVE_UNISTD_H
|
||||
#endif
|
||||
#ifndef Z_SOLO
|
||||
# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
|
||||
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
|
||||
# ifdef VMS
|
||||
# include <unixio.h> /* for off_t */
|
||||
# endif
|
||||
# ifndef z_off_t
|
||||
# define z_off_t off_t
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
|
||||
# define Z_LFS64
|
||||
#endif
|
||||
|
||||
#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
|
||||
# define Z_LARGE64
|
||||
#endif
|
||||
|
||||
#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
|
||||
# define Z_WANT64
|
||||
#endif
|
||||
|
||||
#if !defined(SEEK_SET) && !defined(Z_SOLO)
|
||||
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||
# define SEEK_CUR 1 /* Seek from current position. */
|
||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||
#endif
|
||||
|
||||
#ifndef z_off_t
|
||||
# define z_off_t long
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) && defined(Z_LARGE64)
|
||||
# define z_off64_t off64_t
|
||||
#else
|
||||
# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
|
||||
# define z_off64_t __int64
|
||||
# else
|
||||
# define z_off64_t z_off_t
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* MVS linker does not support external names larger than 8 bytes */
|
||||
#if defined(__MVS__)
|
||||
#pragma map(deflateInit_,"DEIN")
|
||||
#pragma map(deflateInit2_,"DEIN2")
|
||||
#pragma map(deflateEnd,"DEEND")
|
||||
#pragma map(deflateBound,"DEBND")
|
||||
#pragma map(inflateInit_,"ININ")
|
||||
#pragma map(inflateInit2_,"ININ2")
|
||||
#pragma map(inflateEnd,"INEND")
|
||||
#pragma map(inflateSync,"INSY")
|
||||
#pragma map(inflateSetDictionary,"INSEDI")
|
||||
#pragma map(compressBound,"CMBND")
|
||||
#pragma map(inflate_table,"INTABL")
|
||||
#pragma map(inflate_fast,"INFA")
|
||||
#pragma map(inflate_copyright,"INCOPY")
|
||||
#endif
|
||||
|
||||
#endif /* ZCONF_H */
|
||||
1912
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zlib.h
Normal file
1912
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zlib.h
Normal file
File diff suppressed because it is too large
Load Diff
326
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zutil.c
Normal file
326
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zutil.c
Normal file
@@ -0,0 +1,326 @@
|
||||
/* zutil.c -- target dependent utility functions for the compression library
|
||||
* Copyright (C) 1995-2017 Jean-loup Gailly
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* @(#) $Id$ */
|
||||
|
||||
#include "zutil.h"
|
||||
//#ifndef Z_SOLO
|
||||
//# include "gzguts.h"
|
||||
//#endif
|
||||
|
||||
z_const char * const z_errmsg[10] = {
|
||||
(z_const char *)"need dictionary", /* Z_NEED_DICT 2 */
|
||||
(z_const char *)"stream end", /* Z_STREAM_END 1 */
|
||||
(z_const char *)"", /* Z_OK 0 */
|
||||
(z_const char *)"file error", /* Z_ERRNO (-1) */
|
||||
(z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */
|
||||
(z_const char *)"data error", /* Z_DATA_ERROR (-3) */
|
||||
(z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */
|
||||
(z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */
|
||||
(z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */
|
||||
(z_const char *)""
|
||||
};
|
||||
|
||||
|
||||
const char * ZEXPORT zlibVersion()
|
||||
{
|
||||
return ZLIB_VERSION;
|
||||
}
|
||||
|
||||
uLong ZEXPORT zlibCompileFlags()
|
||||
{
|
||||
uLong flags;
|
||||
|
||||
flags = 0;
|
||||
switch ((int)(sizeof(uInt))) {
|
||||
case 2: break;
|
||||
case 4: flags += 1; break;
|
||||
case 8: flags += 2; break;
|
||||
default: flags += 3;
|
||||
}
|
||||
switch ((int)(sizeof(uLong))) {
|
||||
case 2: break;
|
||||
case 4: flags += 1 << 2; break;
|
||||
case 8: flags += 2 << 2; break;
|
||||
default: flags += 3 << 2;
|
||||
}
|
||||
switch ((int)(sizeof(voidpf))) {
|
||||
case 2: break;
|
||||
case 4: flags += 1 << 4; break;
|
||||
case 8: flags += 2 << 4; break;
|
||||
default: flags += 3 << 4;
|
||||
}
|
||||
switch ((int)(sizeof(z_off_t))) {
|
||||
case 2: break;
|
||||
case 4: flags += 1 << 6; break;
|
||||
case 8: flags += 2 << 6; break;
|
||||
default: flags += 3 << 6;
|
||||
}
|
||||
#ifdef ZLIB_DEBUG
|
||||
flags += 1 << 8;
|
||||
#endif
|
||||
#if defined(ASMV) || defined(ASMINF)
|
||||
flags += 1 << 9;
|
||||
#endif
|
||||
#ifdef ZLIB_WINAPI
|
||||
flags += 1 << 10;
|
||||
#endif
|
||||
#ifdef BUILDFIXED
|
||||
flags += 1 << 12;
|
||||
#endif
|
||||
#ifdef DYNAMIC_CRC_TABLE
|
||||
flags += 1 << 13;
|
||||
#endif
|
||||
#ifdef NO_GZCOMPRESS
|
||||
flags += 1L << 16;
|
||||
#endif
|
||||
#ifdef NO_GZIP
|
||||
flags += 1L << 17;
|
||||
#endif
|
||||
#ifdef PKZIP_BUG_WORKAROUND
|
||||
flags += 1L << 20;
|
||||
#endif
|
||||
#ifdef FASTEST
|
||||
flags += 1L << 21;
|
||||
#endif
|
||||
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
|
||||
# ifdef NO_vsnprintf
|
||||
flags += 1L << 25;
|
||||
# ifdef HAS_vsprintf_void
|
||||
flags += 1L << 26;
|
||||
# endif
|
||||
# else
|
||||
# ifdef HAS_vsnprintf_void
|
||||
flags += 1L << 26;
|
||||
# endif
|
||||
# endif
|
||||
#else
|
||||
flags += 1L << 24;
|
||||
# ifdef NO_snprintf
|
||||
flags += 1L << 25;
|
||||
# ifdef HAS_sprintf_void
|
||||
flags += 1L << 26;
|
||||
# endif
|
||||
# else
|
||||
# ifdef HAS_snprintf_void
|
||||
flags += 1L << 26;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
return flags;
|
||||
}
|
||||
|
||||
#ifdef ZLIB_DEBUG
|
||||
#include <stdlib.h>
|
||||
# ifndef verbose
|
||||
# define verbose 0
|
||||
# endif
|
||||
int ZLIB_INTERNAL z_verbose = verbose;
|
||||
|
||||
void ZLIB_INTERNAL z_error (m)
|
||||
char *m;
|
||||
{
|
||||
fprintf(stderr, "%s\n", m);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* exported to allow conversion of error code to string for compress() and
|
||||
* uncompress()
|
||||
*/
|
||||
const char * ZEXPORT zError(err)
|
||||
int err;
|
||||
{
|
||||
return ERR_MSG(err);
|
||||
}
|
||||
|
||||
#if defined(_WIN32_WCE)
|
||||
/* The Microsoft C Run-Time Library for Windows CE doesn't have
|
||||
* errno. We define it as a global variable to simplify porting.
|
||||
* Its value is always 0 and should not be used.
|
||||
*/
|
||||
int errno = 0;
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_MEMCPY
|
||||
|
||||
void ZLIB_INTERNAL zmemcpy(dest, source, len)
|
||||
Bytef* dest;
|
||||
const Bytef* source;
|
||||
uInt len;
|
||||
{
|
||||
if (len == 0) return;
|
||||
do {
|
||||
*dest++ = *source++; /* ??? to be unrolled */
|
||||
} while (--len != 0);
|
||||
}
|
||||
|
||||
int ZLIB_INTERNAL zmemcmp(s1, s2, len)
|
||||
const Bytef* s1;
|
||||
const Bytef* s2;
|
||||
uInt len;
|
||||
{
|
||||
uInt j;
|
||||
|
||||
for (j = 0; j < len; j++) {
|
||||
if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ZLIB_INTERNAL zmemzero(dest, len)
|
||||
Bytef* dest;
|
||||
uInt len;
|
||||
{
|
||||
if (len == 0) return;
|
||||
do {
|
||||
*dest++ = 0; /* ??? to be unrolled */
|
||||
} while (--len != 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef Z_SOLO
|
||||
|
||||
#ifdef SYS16BIT
|
||||
|
||||
#ifdef __TURBOC__
|
||||
/* Turbo C in 16-bit mode */
|
||||
|
||||
# define MY_ZCALLOC
|
||||
|
||||
/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
|
||||
* and farmalloc(64K) returns a pointer with an offset of 8, so we
|
||||
* must fix the pointer. Warning: the pointer must be put back to its
|
||||
* original form in order to free it, use zcfree().
|
||||
*/
|
||||
|
||||
#define MAX_PTR 10
|
||||
/* 10*64K = 640K */
|
||||
|
||||
local int next_ptr = 0;
|
||||
|
||||
typedef struct ptr_table_s {
|
||||
voidpf org_ptr;
|
||||
voidpf new_ptr;
|
||||
} ptr_table;
|
||||
|
||||
local ptr_table table[MAX_PTR];
|
||||
/* This table is used to remember the original form of pointers
|
||||
* to large buffers (64K). Such pointers are normalized with a zero offset.
|
||||
* Since MSDOS is not a preemptive multitasking OS, this table is not
|
||||
* protected from concurrent access. This hack doesn't work anyway on
|
||||
* a protected system like OS/2. Use Microsoft C instead.
|
||||
*/
|
||||
|
||||
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
|
||||
{
|
||||
voidpf buf;
|
||||
ulg bsize = (ulg)items*size;
|
||||
|
||||
(void)opaque;
|
||||
|
||||
/* If we allocate less than 65520 bytes, we assume that farmalloc
|
||||
* will return a usable pointer which doesn't have to be normalized.
|
||||
*/
|
||||
if (bsize < 65520L) {
|
||||
buf = farmalloc(bsize);
|
||||
if (*(ush*)&buf != 0) return buf;
|
||||
} else {
|
||||
buf = farmalloc(bsize + 16L);
|
||||
}
|
||||
if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
|
||||
table[next_ptr].org_ptr = buf;
|
||||
|
||||
/* Normalize the pointer to seg:0 */
|
||||
*((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
|
||||
*(ush*)&buf = 0;
|
||||
table[next_ptr++].new_ptr = buf;
|
||||
return buf;
|
||||
}
|
||||
|
||||
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
||||
{
|
||||
int n;
|
||||
|
||||
(void)opaque;
|
||||
|
||||
if (*(ush*)&ptr != 0) { /* object < 64K */
|
||||
farfree(ptr);
|
||||
return;
|
||||
}
|
||||
/* Find the original pointer */
|
||||
for (n = 0; n < next_ptr; n++) {
|
||||
if (ptr != table[n].new_ptr) continue;
|
||||
|
||||
farfree(table[n].org_ptr);
|
||||
while (++n < next_ptr) {
|
||||
table[n-1] = table[n];
|
||||
}
|
||||
next_ptr--;
|
||||
return;
|
||||
}
|
||||
Assert(0, "zcfree: ptr not found");
|
||||
}
|
||||
|
||||
#endif /* __TURBOC__ */
|
||||
|
||||
|
||||
#ifdef M_I86
|
||||
/* Microsoft C in 16-bit mode */
|
||||
|
||||
# define MY_ZCALLOC
|
||||
|
||||
#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
|
||||
# define _halloc halloc
|
||||
# define _hfree hfree
|
||||
#endif
|
||||
|
||||
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
|
||||
{
|
||||
(void)opaque;
|
||||
return _halloc((long)items, size);
|
||||
}
|
||||
|
||||
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
||||
{
|
||||
(void)opaque;
|
||||
_hfree(ptr);
|
||||
}
|
||||
|
||||
#endif /* M_I86 */
|
||||
|
||||
#endif /* SYS16BIT */
|
||||
|
||||
|
||||
#ifndef MY_ZCALLOC /* Any system without a special alloc function */
|
||||
|
||||
#ifndef STDC
|
||||
extern voidp malloc OF((uInt size));
|
||||
extern voidp calloc OF((uInt items, uInt size));
|
||||
extern void free OF((voidpf ptr));
|
||||
#endif
|
||||
|
||||
voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
|
||||
voidpf opaque;
|
||||
unsigned items;
|
||||
unsigned size;
|
||||
{
|
||||
(void)opaque;
|
||||
// return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
|
||||
// (voidpf)calloc(items, size);
|
||||
return Z_NULL; // DEBUG - no longer used
|
||||
}
|
||||
|
||||
void ZLIB_INTERNAL zcfree (opaque, ptr)
|
||||
voidpf opaque;
|
||||
voidpf ptr;
|
||||
{
|
||||
(void)opaque;
|
||||
// free(ptr); // DEBUG - no longer used
|
||||
}
|
||||
|
||||
#endif /* MY_ZCALLOC */
|
||||
|
||||
#endif /* !Z_SOLO */
|
||||
271
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zutil.h
Normal file
271
ESP32-C6-LCD-1.47-Demo/Arduino/libraries/PNGdec/src/zutil.h
Normal file
@@ -0,0 +1,271 @@
|
||||
/* zutil.h -- internal interface and configuration of the compression library
|
||||
* Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
|
||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||
*/
|
||||
|
||||
/* WARNING: this file should *not* be used by applications. It is
|
||||
part of the implementation of the compression library and is
|
||||
subject to change. Applications should only use zlib.h.
|
||||
*/
|
||||
|
||||
/* @(#) $Id$ */
|
||||
|
||||
#ifndef ZUTIL_H
|
||||
#define ZUTIL_H
|
||||
|
||||
#ifdef HAVE_HIDDEN
|
||||
# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
||||
#else
|
||||
# define ZLIB_INTERNAL
|
||||
#endif
|
||||
|
||||
#include "zlib.h"
|
||||
|
||||
#if defined(STDC) && !defined(Z_SOLO)
|
||||
# if !(defined(_WIN32_WCE) && defined(_MSC_VER))
|
||||
# include <stddef.h>
|
||||
# endif
|
||||
# include <string.h>
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#ifdef Z_SOLO
|
||||
typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
|
||||
#endif
|
||||
|
||||
#ifndef local
|
||||
# define local static
|
||||
#endif
|
||||
/* since "static" is used to mean two completely different things in C, we
|
||||
define "local" for the non-static meaning of "static", for readability
|
||||
(compile with -Dlocal if your debugger can't find static symbols) */
|
||||
|
||||
typedef unsigned char uch;
|
||||
typedef uch FAR uchf;
|
||||
typedef unsigned short ush;
|
||||
typedef ush FAR ushf;
|
||||
typedef unsigned long ulg;
|
||||
|
||||
extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
||||
/* (size given to avoid silly warnings with Visual C++) */
|
||||
|
||||
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
|
||||
|
||||
#define ERR_RETURN(strm,err) \
|
||||
return (strm->msg = ERR_MSG(err), (err))
|
||||
/* To be used only when the state is known to be valid */
|
||||
|
||||
/* common constants */
|
||||
|
||||
#ifndef DEF_WBITS
|
||||
# define DEF_WBITS MAX_WBITS
|
||||
#endif
|
||||
/* default windowBits for decompression. MAX_WBITS is for compression only */
|
||||
|
||||
#if MAX_MEM_LEVEL >= 8
|
||||
# define DEF_MEM_LEVEL 8
|
||||
#else
|
||||
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
|
||||
#endif
|
||||
/* default memLevel */
|
||||
|
||||
#define STORED_BLOCK 0
|
||||
#define STATIC_TREES 1
|
||||
#define DYN_TREES 2
|
||||
/* The three kinds of block type */
|
||||
|
||||
#define MIN_MATCH 3
|
||||
#define MAX_MATCH 258
|
||||
/* The minimum and maximum match lengths */
|
||||
|
||||
#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
|
||||
|
||||
/* target dependencies */
|
||||
|
||||
#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
|
||||
# define OS_CODE 0x00
|
||||
# ifndef Z_SOLO
|
||||
# if defined(__TURBOC__) || defined(__BORLANDC__)
|
||||
# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
|
||||
/* Allow compilation with ANSI keywords only enabled */
|
||||
void _Cdecl farfree( void *block );
|
||||
void *_Cdecl farmalloc( unsigned long nbytes );
|
||||
# else
|
||||
# include <alloc.h>
|
||||
# endif
|
||||
# else /* MSC or DJGPP */
|
||||
# include <malloc.h>
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef AMIGA
|
||||
# define OS_CODE 1
|
||||
#endif
|
||||
|
||||
#if defined(VAXC) || defined(VMS)
|
||||
# define OS_CODE 2
|
||||
# define F_OPEN(name, mode) \
|
||||
fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
|
||||
#endif
|
||||
|
||||
#ifdef __370__
|
||||
# if __TARGET_LIB__ < 0x20000000
|
||||
# define OS_CODE 4
|
||||
# elif __TARGET_LIB__ < 0x40000000
|
||||
# define OS_CODE 11
|
||||
# else
|
||||
# define OS_CODE 8
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(ATARI) || defined(atarist)
|
||||
# define OS_CODE 5
|
||||
#endif
|
||||
|
||||
#ifdef OS2
|
||||
# define OS_CODE 6
|
||||
# if defined(M_I86) && !defined(Z_SOLO)
|
||||
# include <malloc.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(MACOS) || defined(TARGET_OS_MAC)
|
||||
# define OS_CODE 7
|
||||
# ifndef Z_SOLO
|
||||
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
||||
# include <unix.h> /* for fdopen */
|
||||
# else
|
||||
# ifndef fdopen
|
||||
# define fdopen(fd,mode) NULL /* No fdopen() */
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __acorn
|
||||
# define OS_CODE 13
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && !defined(__CYGWIN__)
|
||||
# define OS_CODE 10
|
||||
#endif
|
||||
|
||||
#ifdef _BEOS_
|
||||
# define OS_CODE 16
|
||||
#endif
|
||||
|
||||
#ifdef __TOS_OS400__
|
||||
# define OS_CODE 18
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
# define OS_CODE 19
|
||||
#endif
|
||||
|
||||
#if defined(_BEOS_) || defined(RISCOS)
|
||||
# define fdopen(fd,mode) NULL /* No fdopen() */
|
||||
#endif
|
||||
|
||||
#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
|
||||
# if defined(_WIN32_WCE)
|
||||
# define fdopen(fd,mode) NULL /* No fdopen() */
|
||||
# ifndef _PTRDIFF_T_DEFINED
|
||||
typedef int ptrdiff_t;
|
||||
# define _PTRDIFF_T_DEFINED
|
||||
# endif
|
||||
# else
|
||||
# define fdopen(fd,type) _fdopen(fd,type)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__BORLANDC__) && !defined(MSDOS)
|
||||
#pragma warn -8004
|
||||
#pragma warn -8008
|
||||
#pragma warn -8066
|
||||
#endif
|
||||
|
||||
/* provide prototypes for these when building zlib without LFS */
|
||||
#if !defined(_WIN32) && \
|
||||
(!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
|
||||
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
|
||||
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
|
||||
#endif
|
||||
|
||||
/* common defaults */
|
||||
|
||||
#ifndef OS_CODE
|
||||
# define OS_CODE 3 /* assume Unix */
|
||||
#endif
|
||||
|
||||
#ifndef F_OPEN
|
||||
# define F_OPEN(name, mode) fopen((name), (mode))
|
||||
#endif
|
||||
|
||||
/* functions */
|
||||
|
||||
#if defined(pyr) || defined(Z_SOLO)
|
||||
# define NO_MEMCPY
|
||||
#endif
|
||||
#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
|
||||
/* Use our own functions for small and medium model with MSC <= 5.0.
|
||||
* You may have to use the same strategy for Borland C (untested).
|
||||
* The __SC__ check is for Symantec.
|
||||
*/
|
||||
# define NO_MEMCPY
|
||||
#endif
|
||||
#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
|
||||
# define HAVE_MEMCPY
|
||||
#endif
|
||||
#ifdef HAVE_MEMCPY
|
||||
# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
|
||||
# define zmemcpy _fmemcpy
|
||||
# define zmemcmp _fmemcmp
|
||||
# define zmemzero(dest, len) _fmemset(dest, 0, len)
|
||||
# else
|
||||
# define zmemcpy memcpy
|
||||
# define zmemcmp memcmp
|
||||
# define zmemzero(dest, len) memset(dest, 0, len)
|
||||
# endif
|
||||
#else
|
||||
void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
|
||||
int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
|
||||
void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
|
||||
#endif
|
||||
|
||||
/* Diagnostic functions */
|
||||
#ifdef ZLIB_DEBUG
|
||||
# include <stdio.h>
|
||||
extern int ZLIB_INTERNAL z_verbose;
|
||||
extern void ZLIB_INTERNAL z_error OF((char *m));
|
||||
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
|
||||
# define Trace(x) {if (z_verbose>=0) fprintf x ;}
|
||||
# define Tracev(x) {if (z_verbose>0) fprintf x ;}
|
||||
# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
|
||||
# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
|
||||
# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
|
||||
#else
|
||||
# define Assert(cond,msg)
|
||||
# define Trace(x)
|
||||
# define Tracev(x)
|
||||
# define Tracevv(x)
|
||||
# define Tracec(c,x)
|
||||
# define Tracecv(c,x)
|
||||
#endif
|
||||
|
||||
#ifndef Z_SOLO
|
||||
voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
|
||||
unsigned size));
|
||||
void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr));
|
||||
#endif
|
||||
|
||||
#define ZALLOC(strm, items, size) \
|
||||
(*((strm)->zalloc))((strm)->opaque, (items), (size))
|
||||
#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
|
||||
#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
|
||||
|
||||
/* Reverse the bytes in a 32-bit value */
|
||||
#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
|
||||
(((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
|
||||
|
||||
#endif /* ZUTIL_H */
|
||||
Reference in New Issue
Block a user