mirror of
https://github.com/facebook/zstd.git
synced 2024-11-24 11:26:45 +08:00
Merge pull request #1739 from cwoffenden/amalgamate
Tweaks to create a single-file decompressor
This commit is contained in:
commit
a8391cc5a8
2
contrib/declib/.gitignore
vendored
Normal file
2
contrib/declib/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
zstddeclib.c
|
||||
|
15
contrib/declib/README.md
Normal file
15
contrib/declib/README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Single File Zstandard Decompression Library
|
||||
|
||||
The script `combine.sh` creates an _amalgamated_ source file that can be used with or without `zstd.h`. This isn't a _header-only_ file but it does offer a similar level of simplicity when integrating into a project.
|
||||
|
||||
Create `zstddeclib.c` from the Zstd source using:
|
||||
```
|
||||
cd zstd/contrib/declib
|
||||
./combine.sh -r ../../lib -r ../../lib/common -r ../../lib/decompress -o zstddeclib.c zstddeclib-in.c
|
||||
```
|
||||
Then add the resulting file to your project (see the [example files](examples)). `build.sh` will run the above script then compile and test the library.
|
||||
|
||||
Why
|
||||
---
|
||||
|
||||
Because all it now takes to support decompressing Zstd is the addition of a single file, two if using the header, with no configuration or further build steps. The library is small, adding, for example, 25kB to an Emscripten compiled WebAssembly project. Native implementations add a little more, 40-70kB depending on the compiler and platform.
|
58
contrib/declib/build.sh
Executable file
58
contrib/declib/build.sh
Executable file
@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Where to find the sources
|
||||
ZSTD_SRC_ROOT="../../lib"
|
||||
|
||||
# Temporary compiled binary
|
||||
OUT_FILE="tempbin"
|
||||
|
||||
# Optional temporary compiled WebAssembly
|
||||
OUT_WASM="temp.wasm"
|
||||
|
||||
# Amalgamate the sources
|
||||
./combine.sh -r "$ZSTD_SRC_ROOT" -r "$ZSTD_SRC_ROOT/common" -r "$ZSTD_SRC_ROOT/decompress" -o zstddeclib.c zstddeclib-in.c
|
||||
# Did combining work?
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Combine script: FAILED"
|
||||
exit 1
|
||||
fi
|
||||
echo "Combine script: PASSED"
|
||||
|
||||
# Compile the generated output
|
||||
cc -Os -g0 -o $OUT_FILE examples/simple.c
|
||||
# Did compilation work?
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Compiling simple.c: FAILED"
|
||||
exit 1
|
||||
fi
|
||||
echo "Compiling simple.c: PASSED"
|
||||
|
||||
# Run then delete the compiled output
|
||||
./$OUT_FILE
|
||||
retVal=$?
|
||||
rm -f $OUT_FILE
|
||||
# Did the test work?
|
||||
if [ $retVal -ne 0 ]; then
|
||||
echo "Running simple.c: FAILED"
|
||||
exit 1
|
||||
fi
|
||||
echo "Running simple.c: PASSED"
|
||||
|
||||
# Is Emscripten available?
|
||||
which emcc > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "(Skipping Emscripten test)"
|
||||
else
|
||||
# Compile the Emscripten example
|
||||
CC_FLAGS="-Wall -Wextra -Os -g0 -flto --llvm-lto 3 -lGL -DNDEBUG=1"
|
||||
emcc $CC_FLAGS -s WASM=1 -o $OUT_WASM examples/emscripten.c
|
||||
# Did compilation work?
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Compiling emscripten.c: FAILED"
|
||||
exit 1
|
||||
fi
|
||||
echo "Compiling emscripten.c: PASSED"
|
||||
rm -f $OUT_WASM
|
||||
fi
|
||||
|
||||
exit 0
|
111
contrib/declib/combine.sh
Executable file
111
contrib/declib/combine.sh
Executable file
@ -0,0 +1,111 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Tool to bundle multiple C/C++ source files, inlining any includes.
|
||||
#
|
||||
# TODO: ROOTS and FOUND as arrays (since they fail on paths with spaces)
|
||||
|
||||
# Common file roots
|
||||
ROOTS="./"
|
||||
|
||||
# Files previously visited
|
||||
FOUND=""
|
||||
|
||||
# Optional destination file (empty string to write to stdout)
|
||||
DESTN=""
|
||||
|
||||
# Prints the script usage then exits
|
||||
function usage {
|
||||
echo "Usage: $0 [-r <path>] [-o <outfile>] infile"
|
||||
echo " -r file root search paths"
|
||||
echo " -o output file (otherwise stdout)"
|
||||
echo "Example: $0 -r ../my/path - r ../other/path -o out.c in.c"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Tests if list $1 has item $2
|
||||
function list_has_item {
|
||||
local list="$1"
|
||||
local item="$2"
|
||||
if [[ $list =~ (^|[[:space:]]*)"$item"($|[[:space:]]*) ]]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
# Adds a new line with the supplied arguments to $DESTN (or stdout)
|
||||
function write_line {
|
||||
if [ -n "$DESTN" ]; then
|
||||
printf "%s\n" "$@" >> "$DESTN"
|
||||
else
|
||||
printf "%s\n" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# Adds the contents of $1 with any of its includes inlined
|
||||
function add_file {
|
||||
# Match the path
|
||||
local file=
|
||||
if [ -f "$1" ]; then
|
||||
file="$1"
|
||||
else
|
||||
for root in $ROOTS; do
|
||||
if test -f "$root/$1"; then
|
||||
file="$root/$1"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if [ -n "$file" ]; then
|
||||
# Read the file
|
||||
local line
|
||||
while IFS= read -r line; do
|
||||
if [[ $line =~ ^[[:space:]]*\#[[:space:]]*include[[:space:]]*\"(.*)\".* ]]; then
|
||||
# We have an include directive
|
||||
local inc=${BASH_REMATCH[1]}
|
||||
if ! `list_has_item "$FOUND" "$inc"`; then
|
||||
# And we've not previously encountered it
|
||||
FOUND="$FOUND $inc"
|
||||
write_line "/**** start inlining $inc ****/"
|
||||
add_file "$inc"
|
||||
write_line "/**** ended inlining $inc ****/"
|
||||
else
|
||||
write_line "/**** skipping file: $inc ****/"
|
||||
fi
|
||||
else
|
||||
# Otherwise write the source line
|
||||
write_line "$line"
|
||||
fi
|
||||
done < "$file"
|
||||
else
|
||||
write_line "#error Unable to find \"$1\""
|
||||
fi
|
||||
}
|
||||
|
||||
while getopts ":r:o:" opts; do
|
||||
case $opts in
|
||||
r)
|
||||
ROOTS="$OPTARG $ROOTS"
|
||||
;;
|
||||
o)
|
||||
DESTN="$OPTARG"
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
if [ -f "$1" ]; then
|
||||
if [ -n "$DESTN" ]; then
|
||||
printf "" > "$DESTN"
|
||||
fi
|
||||
add_file $1
|
||||
else
|
||||
echo "Input file not found: '$1'"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
usage
|
||||
fi
|
||||
exit 0
|
7
contrib/declib/examples/README.md
Normal file
7
contrib/declib/examples/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Single File ZStandard Examples
|
||||
|
||||
The examples `#include` the generated `zstddeclib.c` directly but work equally as well when including `zstd.h` and compiling the amalgamated source separately.
|
||||
|
||||
`simple.c` is the most basic example of decompressing content and verifying the result.
|
||||
|
||||
`emscripten.c` is a bare-bones [Emscripten](https://github.com/emscripten-core/emscripten) compiled WebGL demo using Zstd to further compress a DXT1 texture. The 256x256 texture would normally be 32kB, but even when bundled with the Zstd decompressor the resulting WebAssembly weighs in at 45kB (`shell.html` is a support file to run the Wasm).
|
944
contrib/declib/examples/emscripten.c
Normal file
944
contrib/declib/examples/emscripten.c
Normal file
@ -0,0 +1,944 @@
|
||||
/**
|
||||
* \file emscripten.c
|
||||
* Emscripten example of using the single-file \c zstddeclib. Draws a rotating
|
||||
* textured quad with data from the in-line Zstd compressed DXT1 texture (DXT1
|
||||
* being hardware compression, further compressed with Zstd).
|
||||
* \n
|
||||
* Compile using:
|
||||
* \code
|
||||
* export CC_FLAGS="-Wall -Wextra -Os -g0 -flto --llvm-lto 3 -lGL -DNDEBUG=1"
|
||||
* export EM_FLAGS="-s WASM=1 -s ENVIRONMENT=web --shell-file shell.html --closure 1"
|
||||
* emcc $CC_FLAGS $EM_FLAGS -o out.html emscripten.c
|
||||
* \endcode
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <emscripten/emscripten.h>
|
||||
#include <emscripten/html5.h>
|
||||
|
||||
#include <GLES2/gl2.h>
|
||||
#include <GLES2/gl2ext.h>
|
||||
|
||||
#include "../zstddeclib.c"
|
||||
|
||||
//************************* Test Data (DXT texture) **************************/
|
||||
|
||||
/**
|
||||
* Zstd compressed DXT1 256x256 texture source.
|
||||
*
|
||||
* File credit: https://commons.wikimedia.org/wiki/File:FuBK-Testbild.png
|
||||
*/
|
||||
static uint8_t const srcZstd[] = {
|
||||
0x28, 0xb5, 0x2f, 0xfd, 0x60, 0x00, 0x7f, 0xfd, 0xe2, 0x00, 0x8a, 0x05,
|
||||
0xc9, 0x3c, 0x5c, 0x00, 0x8e, 0x39, 0xb3, 0x01, 0xb3, 0xa8, 0xf4, 0xeb,
|
||||
0x13, 0x29, 0xfe, 0x37, 0xcd, 0x0a, 0x2e, 0xa8, 0xc3, 0xc2, 0xaf, 0xdf,
|
||||
0x28, 0x0b, 0x96, 0x5f, 0x79, 0x8b, 0xf8, 0xa2, 0xb8, 0x4f, 0x23, 0x4b,
|
||||
0xd4, 0xe8, 0x9c, 0xeb, 0xc9, 0xf8, 0xc3, 0xcd, 0xeb, 0xed, 0x68, 0xae,
|
||||
0x60, 0x7c, 0xe7, 0x61, 0x90, 0x00, 0x9d, 0x43, 0xbf, 0x2e, 0x88, 0x22,
|
||||
0x90, 0xab, 0x1b, 0x84, 0x37, 0x82, 0x73, 0x3e, 0x92, 0x9c, 0xbd, 0x83,
|
||||
0x34, 0x6e, 0x7a, 0x88, 0x92, 0x6c, 0x28, 0x06, 0x9a, 0x6c, 0xef, 0x65,
|
||||
0xb9, 0x6f, 0x66, 0xfe, 0x0a, 0x4c, 0x6a, 0xb8, 0x26, 0x21, 0x3d, 0x9a,
|
||||
0x03, 0xc3, 0x03, 0xb7, 0x03, 0x9d, 0xcf, 0x34, 0x91, 0x71, 0xff, 0x4f,
|
||||
0xd3, 0x76, 0x70, 0x0d, 0xfe, 0x12, 0x20, 0xc6, 0x61, 0x46, 0x4b, 0x47,
|
||||
0xe5, 0x9c, 0xd3, 0x71, 0x0e, 0x35, 0x47, 0x6a, 0x82, 0xf0, 0x19, 0x00,
|
||||
0x26, 0xe1, 0x6b, 0x00, 0x8f, 0x2f, 0xe0, 0x73, 0x51, 0xf1, 0x43, 0x02,
|
||||
0xd7, 0x31, 0x7f, 0x56, 0xf4, 0x7e, 0x44, 0x58, 0x3c, 0x5c, 0x49, 0x3a,
|
||||
0xee, 0xc9, 0x39, 0x0f, 0x57, 0x5d, 0x22, 0x86, 0x21, 0x64, 0xc4, 0xc3,
|
||||
0x75, 0x53, 0x79, 0x8f, 0x8a, 0x8a, 0x8a, 0xb9, 0x4f, 0x48, 0xe4, 0xef,
|
||||
0xd7, 0xf4, 0xff, 0x7c, 0xba, 0x4f, 0x32, 0xa7, 0x51, 0x96, 0x91, 0x76,
|
||||
0x0f, 0x2d, 0x83, 0xe7, 0xdc, 0x1a, 0xf5, 0x7a, 0xba, 0x48, 0x4e, 0x3b,
|
||||
0x3b, 0x6f, 0x6d, 0x07, 0x69, 0xba, 0xd7, 0xb3, 0xe9, 0xb5, 0x0d, 0x4b,
|
||||
0x1f, 0x0e, 0x81, 0x6e, 0x41, 0x1d, 0x71, 0xc7, 0x05, 0x38, 0xa7, 0x18,
|
||||
0xd0, 0x91, 0x3c, 0xde, 0x3b, 0xe4, 0x7d, 0x41, 0xed, 0xd2, 0x1b, 0x32,
|
||||
0x35, 0xd3, 0xc3, 0x38, 0xbe, 0xc9, 0x80, 0xf6, 0x70, 0x40, 0x89, 0xac,
|
||||
0x15, 0x74, 0x14, 0x0c, 0x66, 0x1b, 0xbd, 0x2f, 0xa0, 0x65, 0x9e, 0x4f,
|
||||
0x0c, 0xc8, 0x90, 0x82, 0xd7, 0x09, 0x25, 0x43, 0x10, 0x74, 0x12, 0x16,
|
||||
0xd6, 0x4b, 0x8a, 0xbd, 0xe2, 0x5f, 0x06, 0x27, 0x5e, 0x32, 0x38, 0x79,
|
||||
0x9d, 0xb4, 0x71, 0x9e, 0x6f, 0x2e, 0x92, 0x70, 0x2d, 0xf7, 0x69, 0xaa,
|
||||
0x00, 0xb4, 0x31, 0xa8, 0xf6, 0xea, 0x10, 0x5d, 0xca, 0x5c, 0xa8, 0x28,
|
||||
0x53, 0x86, 0x20, 0xdc, 0x27, 0x5a, 0x86, 0x84, 0x36, 0x71, 0xfe, 0x3f,
|
||||
0x55, 0x80, 0xd7, 0x69, 0x34, 0x42, 0xd5, 0x1b, 0xfc, 0xf7, 0xfe, 0xdf,
|
||||
0x03, 0x08, 0x26, 0x9a, 0xe6, 0x5c, 0x26, 0xab, 0xd5, 0x6e, 0x31, 0xa2,
|
||||
0x5e, 0xb0, 0xff, 0x57, 0x1a, 0x7a, 0x6b, 0x9c, 0x0e, 0x3a, 0x3c, 0xa8,
|
||||
0xda, 0x06, 0xea, 0xd7, 0x95, 0x52, 0x64, 0xae, 0x2f, 0x50, 0x23, 0xde,
|
||||
0x04, 0x7f, 0xd6, 0xac, 0x64, 0x68, 0x9a, 0x46, 0xe2, 0xf0, 0xde, 0x6c,
|
||||
0x45, 0x03, 0x79, 0x64, 0x76, 0x9f, 0x6e, 0x1f, 0x20, 0xe0, 0x22, 0x31,
|
||||
0xf7, 0x38, 0xff, 0x15, 0x47, 0xfc, 0xfc, 0xfe, 0xdf, 0x27, 0xb7, 0xc6,
|
||||
0xf8, 0x5f, 0x69, 0xce, 0x6f, 0xcd, 0xa3, 0xe1, 0x42, 0xd1, 0x07, 0x49,
|
||||
0x75, 0x91, 0x6e, 0x1f, 0xcf, 0xe7, 0x33, 0x9d, 0xb5, 0x8b, 0x2c, 0x1b,
|
||||
0x7f, 0xb0, 0x9a, 0x91, 0xdd, 0x7d, 0x82, 0x52, 0xed, 0xdc, 0x10, 0xa3,
|
||||
0x81, 0xc2, 0x7d, 0xaa, 0x5d, 0x7a, 0x3d, 0xe4, 0xd7, 0x0d, 0x3b, 0x08,
|
||||
0x04, 0x0e, 0xbb, 0xb6, 0x78, 0x3c, 0xa8, 0xe8, 0xd6, 0x6c, 0x26, 0x13,
|
||||
0xc7, 0x43, 0x22, 0xbb, 0x1d, 0xf2, 0xc9, 0xf3, 0x29, 0xc3, 0x64, 0xfa,
|
||||
0xe7, 0xf4, 0x91, 0x86, 0xd3, 0x54, 0xf7, 0x29, 0xba, 0xc5, 0x02, 0x02,
|
||||
0xc2, 0x11, 0x72, 0xd2, 0xbd, 0xb4, 0xc2, 0xc9, 0xf4, 0x76, 0x9e, 0x8d,
|
||||
0x54, 0x22, 0x51, 0xc6, 0x01, 0x24, 0x3a, 0x3a, 0x46, 0x26, 0x2f, 0x54,
|
||||
0x16, 0xcf, 0x5b, 0x1f, 0x77, 0x9c, 0x7f, 0x87, 0xa7, 0x53, 0xbc, 0x56,
|
||||
0x93, 0xa1, 0x70, 0x65, 0xd4, 0xce, 0x3b, 0x3a, 0x93, 0x93, 0xde, 0x5a,
|
||||
0xa8, 0xaa, 0xaa, 0xea, 0x16, 0x83, 0xb3, 0x30, 0x9f, 0x20, 0x01, 0xef,
|
||||
0x85, 0x7a, 0x86, 0x78, 0x9d, 0xcd, 0x9a, 0xd6, 0x8a, 0x68, 0x86, 0xe5,
|
||||
0x16, 0x87, 0x82, 0x52, 0xc1, 0x53, 0xd6, 0xe9, 0x88, 0xe5, 0xbc, 0x27,
|
||||
0x7d, 0x9d, 0xca, 0x9b, 0xdb, 0x40, 0x29, 0xbe, 0x50, 0xc9, 0xa5, 0x25,
|
||||
0x4e, 0xbb, 0x09, 0xaa, 0x58, 0x8d, 0x8a, 0x8a, 0x82, 0xa7, 0x46, 0xb6,
|
||||
0xe7, 0x41, 0x45, 0x3d, 0xe1, 0x20, 0xe4, 0xf5, 0x72, 0x6b, 0x16, 0x0f,
|
||||
0x0e, 0xd7, 0xc1, 0x06, 0xaf, 0xf3, 0x5e, 0x72, 0xfe, 0x94, 0xd5, 0x5c,
|
||||
0x24, 0xdf, 0x12, 0x12, 0x62, 0x92, 0x41, 0x5e, 0xe7, 0x5b, 0x3b, 0xa1,
|
||||
0x54, 0xc9, 0xdf, 0xeb, 0x24, 0xda, 0x00, 0xe7, 0x3d, 0xe3, 0xee, 0x67,
|
||||
0x14, 0x41, 0x54, 0xaa, 0xf8, 0x5c, 0x9e, 0xc8, 0xe2, 0x51, 0x42, 0xd3,
|
||||
0xb4, 0x2b, 0x23, 0x67, 0x7b, 0xeb, 0x3b, 0xba, 0x82, 0x26, 0xca, 0x32,
|
||||
0x38, 0x41, 0x2e, 0xd2, 0x0c, 0xaf, 0x33, 0xb7, 0xd6, 0x76, 0x72, 0xb6,
|
||||
0x7b, 0x79, 0x8b, 0xf1, 0xf5, 0x9f, 0x5c, 0xca, 0xad, 0x36, 0x64, 0x24,
|
||||
0x70, 0x0e, 0x4f, 0xb3, 0x78, 0x64, 0x10, 0xeb, 0x71, 0xe0, 0x0f, 0x21,
|
||||
0xd0, 0x45, 0xe2, 0x32, 0x0c, 0xb4, 0x32, 0xf8, 0x1a, 0xe4, 0x5b, 0x77,
|
||||
0x2e, 0x0e, 0x45, 0xc2, 0x8d, 0xbe, 0x86, 0x73, 0x7a, 0x8a, 0x73, 0x6e,
|
||||
0x4c, 0xe6, 0xd6, 0x66, 0x1b, 0x93, 0x00, 0x25, 0x76, 0x91, 0xa0, 0x48,
|
||||
0x48, 0xf8, 0x67, 0x32, 0x88, 0x31, 0xc9, 0xf9, 0x5b, 0x37, 0x67, 0x14,
|
||||
0x2b, 0x7c, 0xa4, 0x71, 0x79, 0xeb, 0xe2, 0xeb, 0x3c, 0xd2, 0x20, 0x73,
|
||||
0xb6, 0xd7, 0x79, 0x63, 0xe1, 0x2c, 0x21, 0x75, 0x63, 0x81, 0x13, 0xaf,
|
||||
0xbe, 0xd7, 0xd9, 0xbb, 0x12, 0x17, 0x29, 0x67, 0xeb, 0x6c, 0xac, 0xe9,
|
||||
0x04, 0x4d, 0x62, 0xe7, 0x1d, 0xf5, 0x80, 0x98, 0xb3, 0xc9, 0x2c, 0x80,
|
||||
0x44, 0x44, 0xbd, 0xee, 0xa5, 0x91, 0x91, 0x91, 0x30, 0x69, 0xb7, 0xdb,
|
||||
0x3d, 0x79, 0x9d, 0x45, 0x46, 0x6e, 0x1f, 0x38, 0x37, 0x20, 0x15, 0xef,
|
||||
0x7d, 0x3d, 0x59, 0x61, 0xa5, 0xd6, 0x4d, 0x74, 0x2b, 0x67, 0x63, 0xf2,
|
||||
0x5a, 0x16, 0x7a, 0xf6, 0xfe, 0xee, 0x93, 0x2c, 0xc4, 0xe3, 0xb7, 0x86,
|
||||
0x22, 0x81, 0xd5, 0x36, 0x39, 0xdb, 0x8a, 0xd7, 0x79, 0xc4, 0xda, 0x3d,
|
||||
0x2b, 0x4c, 0x26, 0x53, 0xa6, 0x5a, 0xad, 0xc6, 0x5c, 0x24, 0x39, 0xc9,
|
||||
0xc6, 0xe4, 0x5f, 0x79, 0x1b, 0x19, 0xf1, 0x7f, 0x9d, 0x38, 0x41, 0xbd,
|
||||
0x77, 0xfa, 0x16, 0x03, 0x48, 0xc4, 0xd7, 0xd7, 0x17, 0xf2, 0x16, 0xc3,
|
||||
0x47, 0xc4, 0xa7, 0xf7, 0xb7, 0x36, 0xfe, 0x7e, 0xbf, 0xdc, 0xda, 0xb9,
|
||||
0xfe, 0xc9, 0xf4, 0x44, 0x22, 0x31, 0xb7, 0xca, 0xb2, 0x0c, 0x4f, 0x39,
|
||||
0xe7, 0xb9, 0x15, 0x4a, 0x55, 0x73, 0x91, 0xf8, 0x9d, 0x9d, 0x1d, 0x9c,
|
||||
0xb8, 0xfe, 0x7d, 0xaf, 0xd7, 0x83, 0xa7, 0x50, 0x24, 0x32, 0xb3, 0xd9,
|
||||
0x0c, 0xe7, 0xd6, 0x3b, 0x8f, 0x89, 0x89, 0x89, 0x7a, 0x3d, 0x8f, 0xc7,
|
||||
0x83, 0xa7, 0xb5, 0x0b, 0xbf, 0xb9, 0xb9, 0xf9, 0x38, 0x8e, 0x5f, 0x67,
|
||||
0xd4, 0x0b, 0x06, 0x83, 0x71, 0x91, 0x10, 0x0a, 0x85, 0x50, 0x2a, 0x78,
|
||||
0xfa, 0x58, 0x58, 0x58, 0x2e, 0xd2, 0xfa, 0xf3, 0x3c, 0x33, 0xbd, 0x35,
|
||||
0xcf, 0x91, 0x23, 0x47, 0xd4, 0xcb, 0xe8, 0xf3, 0xf9, 0xde, 0xba, 0x77,
|
||||
0x78, 0xba, 0xf2, 0xff, 0x87, 0x52, 0xe5, 0x6c, 0x5f, 0xab, 0xd5, 0x5e,
|
||||
0x67, 0x6d, 0x13, 0xc6, 0xae, 0x1d, 0x79, 0x8e, 0x05, 0x83, 0xca, 0x17,
|
||||
0xe2, 0x88, 0x71, 0x30, 0xc3, 0xd5, 0x52, 0xd8, 0xe1, 0x1d, 0xd5, 0x19,
|
||||
0x6d, 0x34, 0xa7, 0xe1, 0xfa, 0x42, 0x9b, 0x4c, 0xcc, 0xf8, 0x2f, 0x93,
|
||||
0xf1, 0x7a, 0x0f, 0x56, 0x3b, 0x08, 0x58, 0xc4, 0xda, 0xeb, 0x84, 0x22,
|
||||
0x91, 0xcd, 0xc8, 0xb1, 0xf5, 0x7a, 0xbd, 0xb7, 0xde, 0xf1, 0x7a, 0xbc,
|
||||
0xe9, 0x59, 0x9c, 0xe1, 0xaa, 0x56, 0x56, 0x50, 0x62, 0x30, 0xa5, 0xa1,
|
||||
0xff, 0x1b, 0x8b, 0xde, 0x7b, 0xbc, 0xdd, 0x6f, 0x56, 0x7c, 0xf2, 0x28,
|
||||
0x29, 0x62, 0x4e, 0xd0, 0x50, 0x31, 0x89, 0x67, 0x07, 0xa1, 0x50, 0x02,
|
||||
0x2c, 0xe0, 0x3f, 0xba, 0x15, 0x93, 0x89, 0x80, 0xb1, 0x92, 0x99, 0xca,
|
||||
0x0a, 0x2c, 0x76, 0x53, 0xf5, 0x7f, 0x64, 0x41, 0xfe, 0xc8, 0xb2, 0xef,
|
||||
0xf6, 0xc1, 0x3a, 0xc9, 0xf0, 0xde, 0xff, 0x61, 0x28, 0xbd, 0x5f, 0xd5,
|
||||
0x66, 0x45, 0xce, 0x7b, 0xe2, 0xc4, 0x2f, 0x73, 0x81, 0x05, 0x1f, 0x11,
|
||||
0xda, 0xfa, 0x6c, 0x4b, 0x9b, 0x81, 0xd5, 0xdc, 0xc4, 0x5e, 0xa0, 0xf0,
|
||||
0xec, 0xa5, 0x0e, 0xcc, 0x5c, 0x02, 0x8d, 0x18, 0x1b, 0xc2, 0x1a, 0x8e,
|
||||
0x1d, 0x26, 0x8c, 0x48, 0x04, 0xd4, 0x20, 0x64, 0x88, 0xcd, 0x04, 0xb7,
|
||||
0x23, 0xb1, 0x74, 0x8a, 0xc3, 0xe9, 0xff, 0xde, 0xa9, 0x22, 0xbc, 0xf1,
|
||||
0x84, 0x9f, 0xe9, 0xca, 0xbd, 0x64, 0xd6, 0x38, 0x9b, 0x6d, 0xff, 0xb6,
|
||||
0x96, 0x5b, 0xed, 0x26, 0xab, 0x22, 0xcd, 0x2b, 0xa2, 0x19, 0x8a, 0xb8,
|
||||
0xff, 0x18, 0xac, 0xab, 0xa0, 0xce, 0x28, 0x06, 0x73, 0x5c, 0x88, 0x8e,
|
||||
0x80, 0x0a, 0x24, 0x87, 0x1d, 0xf4, 0x2d, 0x39, 0xe6, 0x0c, 0xd5, 0x3f,
|
||||
0x21, 0x99, 0x06, 0x12, 0x11, 0x45, 0x95, 0x51, 0x81, 0xcc, 0x44, 0x31,
|
||||
0x91, 0x2a, 0xc2, 0x57, 0x91, 0x0b, 0x84, 0x70, 0xa0, 0xed, 0xb2, 0x7b,
|
||||
0x7e, 0x3d, 0xcf, 0x59, 0x0d, 0xab, 0x84, 0xf5, 0x59, 0x16, 0xd6, 0xc2,
|
||||
0x5a, 0x98, 0x2d, 0x46, 0x83, 0xcd, 0x70, 0x30, 0x13, 0xab, 0x41, 0x99,
|
||||
0xce, 0xc4, 0x6e, 0x60, 0x68, 0xdc, 0xc0, 0xbc, 0x80, 0x79, 0x01, 0xa3,
|
||||
0x13, 0xf3, 0xa5, 0x13, 0xe3, 0x13, 0x33, 0xc7, 0x94, 0x50, 0x23, 0xa1,
|
||||
0x84, 0x1a, 0x8d, 0x1a, 0x8d, 0x9a, 0x0d, 0x13, 0x54, 0x1b, 0x26, 0x84,
|
||||
0x2d, 0xa6, 0xc2, 0x16, 0x38, 0x5a, 0xe0, 0x68, 0x91, 0xc3, 0x45, 0x0e,
|
||||
0x17, 0x46, 0x17, 0x32, 0xe4, 0x8b, 0x1a, 0x5e, 0x20, 0x5f, 0xd4, 0xf0,
|
||||
0x42, 0x48, 0x90, 0x90, 0x78, 0x48, 0x5c, 0x15, 0x0f, 0x09, 0x1a, 0x12,
|
||||
0x74, 0x44, 0xc8, 0x89, 0x09, 0x84, 0xa4, 0x42, 0x18, 0x90, 0x0a, 0x4d,
|
||||
0x67, 0x50, 0xa7, 0x33, 0x98, 0xcc, 0x50, 0x81, 0xc9, 0x0c, 0xea, 0x04,
|
||||
0xe8, 0x18, 0xc0, 0xa0, 0xc6, 0x7a, 0xbb, 0x99, 0x88, 0xda, 0xc1, 0xd7,
|
||||
0x08, 0xb8, 0x22, 0xe7, 0x54, 0x11, 0xfa, 0x01, 0x74, 0xa8, 0x22, 0xa8,
|
||||
0x40, 0x08, 0x15, 0x49, 0x53, 0x6a, 0xa5, 0xf8, 0x96, 0xd4, 0x2e, 0x40,
|
||||
0xf9, 0xc7, 0xe3, 0xfc, 0x39, 0xf3, 0x2d, 0xb1, 0x7b, 0x84, 0x6d, 0xd7,
|
||||
0x3f, 0x5f, 0x61, 0xec, 0xb7, 0xb0, 0x0f, 0x81, 0x06, 0xfb, 0x18, 0xb6,
|
||||
0xd8, 0x67, 0x80, 0xcd, 0xc0, 0x0c, 0x4d, 0xc6, 0x0b, 0xd8, 0x0b, 0x98,
|
||||
0x27, 0xa2, 0x13, 0xf3, 0x30, 0x68, 0x8b, 0xcc, 0x31, 0xb4, 0x4f, 0xcc,
|
||||
0xca, 0xcc, 0x8b, 0x00, 0x4a, 0xa8, 0x15, 0xc9, 0x11, 0xe3, 0x37, 0x58,
|
||||
0x3b, 0x62, 0x8f, 0xa3, 0xc5, 0x0b, 0x1f, 0x6e, 0x3b, 0x39, 0x5c, 0xec,
|
||||
0x70, 0xb1, 0x92, 0x83, 0xd1, 0xc5, 0xca, 0x96, 0x0b, 0x03, 0xf2, 0x05,
|
||||
0x07, 0xa6, 0x90, 0xa2, 0x54, 0xc5, 0xb2, 0x15, 0x5b, 0x43, 0x82, 0xde,
|
||||
0x27, 0x26, 0x80, 0xab, 0x47, 0x84, 0x7a, 0xae, 0x84, 0x54, 0x88, 0xc9,
|
||||
0x8c, 0x15, 0x78, 0xf0, 0x15, 0xa8, 0xa8, 0x33, 0xfe, 0x63, 0x51, 0x41,
|
||||
0x56, 0x4c, 0x3d, 0x88, 0x89, 0x38, 0xa6, 0xf4, 0x44, 0x92, 0x20, 0xe7,
|
||||
0xfc, 0xa9, 0x33, 0x56, 0xa0, 0x1a, 0x31, 0x62, 0xc4, 0x31, 0xab, 0xc7,
|
||||
0xf4, 0x04, 0xe7, 0x9d, 0xfe, 0xa7, 0xb9, 0x52, 0x4b, 0xa9, 0x55, 0xab,
|
||||
0xa1, 0x90, 0x35, 0x95, 0xa8, 0x56, 0x7b, 0x3f, 0xc6, 0x44, 0x3f, 0x1f,
|
||||
0x91, 0x6e, 0x54, 0x42, 0x4e, 0x2a, 0x32, 0xf2, 0x2f, 0x6b, 0x4c, 0x8b,
|
||||
0x83, 0x95, 0xc0, 0x34, 0x8a, 0x86, 0x96, 0x08, 0x4d, 0x03, 0x4a, 0x60,
|
||||
0xe0, 0xe4, 0x36, 0x00, 0x97, 0x95, 0x56, 0x53, 0xbc, 0x2e, 0xd2, 0xad,
|
||||
0x01, 0xef, 0xde, 0x77, 0x47, 0x9c, 0x02, 0x13, 0xce, 0x21, 0x86, 0x01,
|
||||
0x46, 0xa2, 0xdb, 0x51, 0x8d, 0xb7, 0x74, 0x39, 0xd0, 0xff, 0x0f, 0x57,
|
||||
0x75, 0x5b, 0x3c, 0x3d, 0xe8, 0xaa, 0x3d, 0x16, 0x8b, 0xc9, 0x25, 0x78,
|
||||
0xaa, 0xfd, 0xab, 0xf7, 0x6a, 0x13, 0x1d, 0xf3, 0x04, 0xe6, 0x0c, 0xc4,
|
||||
0xc2, 0xf1, 0xf4, 0x24, 0x9d, 0x29, 0xaf, 0x00, 0x76, 0xee, 0x2b, 0x11,
|
||||
0xd4, 0x83, 0x58, 0x57, 0x1e, 0xe7, 0x7c, 0x6b, 0x46, 0x84, 0x65, 0x20,
|
||||
0x11, 0xd1, 0x2d, 0x23, 0x1f, 0x11, 0x9d, 0xd1, 0x0f, 0x8c, 0x9d, 0x0e,
|
||||
0x90, 0xf8, 0x53, 0x02, 0x0a, 0x63, 0x06, 0x46, 0x72, 0x05, 0xd5, 0xb7,
|
||||
0xe4, 0x49, 0xdb, 0x55, 0xbb, 0x14, 0x6b, 0x3a, 0x9c, 0x20, 0xd3, 0x46,
|
||||
0x15, 0xe8, 0xec, 0xb0, 0x73, 0x05, 0xe1, 0x5b, 0x02, 0x24, 0xe2, 0xf9,
|
||||
0x7f, 0x0b, 0x21, 0x6a, 0xe5, 0xe0, 0x61, 0x2b, 0x07, 0x2b, 0xcc, 0x0a,
|
||||
0xc3, 0xb2, 0x60, 0x43, 0x60, 0x65, 0xb0, 0x32, 0x5a, 0x09, 0x20, 0xd9,
|
||||
0x16, 0x2d, 0x0e, 0xa3, 0x16, 0x47, 0x4b, 0xb7, 0x1a, 0xa0, 0xd1, 0x34,
|
||||
0x9a, 0x56, 0x84, 0x46, 0xc4, 0x86, 0x45, 0x2b, 0x62, 0xf3, 0xc1, 0xe6,
|
||||
0x83, 0xcb, 0x1a, 0x6f, 0x02, 0x70, 0x59, 0x15, 0x5c, 0xd6, 0x75, 0x5d,
|
||||
0xf7, 0x55, 0xc0, 0xab, 0x80, 0x77, 0xf7, 0xee, 0xc0, 0x35, 0xa6, 0xf0,
|
||||
0x0e, 0x4e, 0x01, 0x06, 0x23, 0x9c, 0x42, 0xbc, 0x43, 0x1a, 0xef, 0x88,
|
||||
0x73, 0x88, 0x79, 0xe8, 0xb6, 0x60, 0xe8, 0xb6, 0x78, 0x54, 0xa0, 0xeb,
|
||||
0x81, 0xa7, 0x6a, 0x83, 0xa7, 0xca, 0xf3, 0xe5, 0x84, 0xe7, 0xeb, 0xa7,
|
||||
0x84, 0x54, 0xb7, 0x61, 0xcc, 0x7a, 0x74, 0x45, 0x95, 0x8b, 0xa7, 0xdf,
|
||||
0x4e, 0xa0, 0xee, 0x65, 0xb1, 0xea, 0x23, 0x12, 0xf5, 0xfa, 0xf5, 0x38,
|
||||
0x94, 0x4a, 0xe8, 0xd3, 0xaa, 0x44, 0xbd, 0xb8, 0x9c, 0x04, 0xe4, 0x01,
|
||||
0x97, 0x69, 0xa2, 0x0d, 0xfc, 0xbf, 0x14, 0xce, 0xcd, 0xb7, 0xe4, 0xf9,
|
||||
0xcf, 0x3a, 0xf1, 0xff, 0x35, 0x86, 0x3f, 0x6c, 0x85, 0xf9, 0x18, 0x1b,
|
||||
0xa3, 0xf7, 0x28, 0x2c, 0x0b, 0xbe, 0xa6, 0xb4, 0x50, 0xab, 0x8a, 0xfb,
|
||||
0x37, 0xd9, 0x8a, 0x00, 0xf6, 0xf6, 0x2a, 0xbd, 0xeb, 0x01, 0x8b, 0xc3,
|
||||
0xdb, 0x19, 0xb7, 0x11, 0x6c, 0x08, 0xf7, 0x01, 0x9c, 0xe6, 0x82, 0x8b,
|
||||
0x22, 0x01, 0x2f, 0x8d, 0xde, 0x42, 0x00, 0x7e, 0x81, 0x46, 0x03, 0xf6,
|
||||
0xc0, 0xbb, 0x43, 0x3b, 0xa1, 0xf7, 0x3e, 0x78, 0x9a, 0x5c, 0x9a, 0xfd,
|
||||
0x7e, 0x3b, 0xde, 0x6e, 0xf7, 0x9b, 0xdf, 0xba, 0xfe, 0x39, 0x7b, 0x00,
|
||||
0x31, 0x9b, 0xe1, 0x8e, 0x4b, 0xdf, 0xce, 0xce, 0x90, 0x90, 0x50, 0x94,
|
||||
0x94, 0x14, 0x1d, 0x53, 0x8d, 0x76, 0x13, 0xd0, 0xea, 0x73, 0x6e, 0xaa,
|
||||
0x84, 0x37, 0x47, 0x96, 0xa7, 0x45, 0xb7, 0x82, 0xba, 0x86, 0x44, 0x41,
|
||||
0xde, 0x9f, 0xd7, 0x9c, 0x39, 0x58, 0x57, 0x44, 0x9c, 0xa0, 0xac, 0x1b,
|
||||
0x46, 0xdd, 0x47, 0x13, 0x6b, 0x35, 0x1d, 0x14, 0x50, 0x68, 0x79, 0x9d,
|
||||
0x5d, 0x79, 0x73, 0xe5, 0xfd, 0x3f, 0x55, 0x64, 0xd7, 0x2e, 0x5f, 0xb8,
|
||||
0xb7, 0x2e, 0xb2, 0xab, 0xc2, 0x15, 0xfe, 0x79, 0x7d, 0x81, 0x32, 0xb1,
|
||||
0x44, 0x9f, 0x4e, 0x25, 0x1d, 0x8a, 0x99, 0xaa, 0x58, 0xed, 0xa2, 0xc3,
|
||||
0x06, 0xe5, 0x7d, 0x2f, 0x65, 0x45, 0x46, 0x6a, 0x17, 0x2a, 0x21, 0xbb,
|
||||
0xa7, 0xc8, 0xa6, 0x4a, 0x26, 0x8b, 0xb2, 0xa1, 0xd2, 0x10, 0xfd, 0x3a,
|
||||
0x93, 0x41, 0x8e, 0x34, 0xff, 0xf7, 0x92, 0xc9, 0x0a, 0xd3, 0x50, 0xaa,
|
||||
0xd7, 0xc9, 0x3a, 0x29, 0xe9, 0xa8, 0x5a, 0x5a, 0xcf, 0x7f, 0xa1, 0x94,
|
||||
0x86, 0x50, 0x2c, 0x91, 0xcf, 0x9f, 0x4f, 0x19, 0xfa, 0x85, 0xe2, 0x22,
|
||||
0x61, 0x43, 0xef, 0x3a, 0x1d, 0x92, 0xff, 0xfa, 0xa2, 0x34, 0x54, 0x8c,
|
||||
0xe9, 0xe8, 0x40, 0xef, 0x34, 0xff, 0x3e, 0xc5, 0x91, 0x53, 0x35, 0x64,
|
||||
0xb5, 0xfa, 0xd7, 0xd2, 0xd2, 0x32, 0x7b, 0x6b, 0x39, 0x09, 0x8a, 0xe4,
|
||||
0x75, 0xd6, 0x36, 0x2c, 0x3a, 0x74, 0xe8, 0x78, 0x6b, 0x15, 0x2a, 0x6a,
|
||||
0x35, 0x28, 0x95, 0x4e, 0x93, 0x26, 0x28, 0xa0, 0xa0, 0x42, 0x45, 0x12,
|
||||
0xf1, 0x0a, 0x2b, 0x07, 0x9e, 0xda, 0x4d, 0x1f, 0xbc, 0xc9, 0xba, 0xf1,
|
||||
0xbd, 0xff, 0x5b, 0x0c, 0x9f, 0x3c, 0xbd, 0x97, 0x4f, 0x96, 0x9c, 0x24,
|
||||
0x2b, 0x20, 0xd2, 0x91, 0xa6, 0x2a, 0xe9, 0x78, 0xa5, 0x24, 0x42, 0x04,
|
||||
0x4f, 0x73, 0x0e, 0xe4, 0x7b, 0xe7, 0xf1, 0x2e, 0x20, 0xb5, 0x02, 0x29,
|
||||
0x69, 0x2b, 0xac, 0x1a, 0x39, 0xa7, 0x69, 0xd6, 0x47, 0x06, 0x4e, 0xb7,
|
||||
0x0f, 0xbe, 0xc3, 0x0e, 0x2b, 0xf0, 0xc8, 0xc2, 0xf9, 0x0d, 0x37, 0xb0,
|
||||
0xc3, 0x65, 0x0b, 0xfb, 0xa3, 0xd4, 0xe2, 0xdc, 0x66, 0x63, 0x87, 0x3d,
|
||||
0x80, 0x48, 0x42, 0x39, 0x2f, 0x52, 0x84, 0x1d, 0x4e, 0xd5, 0xe0, 0x7c,
|
||||
0x38, 0x5c, 0x81, 0x47, 0x33, 0x9c, 0xa7, 0x48, 0xb1, 0xc2, 0x53, 0x45,
|
||||
0xce, 0x65, 0x64, 0xb4, 0x78, 0x3b, 0x24, 0x72, 0x05, 0x2a, 0xef, 0x9b,
|
||||
0x1b, 0x21, 0xa1, 0xa8, 0x17, 0x3b, 0xe4, 0x7c, 0x65, 0x85, 0xfd, 0x19,
|
||||
0x2a, 0x6f, 0xce, 0x5d, 0x5c, 0x58, 0x27, 0x1e, 0x78, 0x00, 0x02, 0xd9,
|
||||
0xa1, 0x11, 0x23, 0x2b, 0xcc, 0x79, 0xdb, 0x72, 0xfe, 0xc3, 0x0f, 0x2b,
|
||||
0x1c, 0xf5, 0x02, 0xf2, 0x5e, 0x8f, 0x1e, 0xff, 0x47, 0x33, 0xff, 0xed,
|
||||
0x0f, 0xce, 0x81, 0x3e, 0x3e, 0xcd, 0x9a, 0x5f, 0x5a, 0xb2, 0x9b, 0x5a,
|
||||
0xab, 0xff, 0x68, 0xf4, 0xdf, 0xee, 0xe1, 0x9c, 0xfd, 0xe1, 0x3c, 0xb8,
|
||||
0xc2, 0xff, 0x42, 0x94, 0x58, 0x0c, 0x45, 0x69, 0xa8, 0x77, 0x9a, 0x21,
|
||||
0xa7, 0xae, 0x20, 0xfe, 0x34, 0x4d, 0x6d, 0x68, 0x67, 0x47, 0xce, 0xad,
|
||||
0xb5, 0x8d, 0xd0, 0x11, 0x5b, 0x64, 0xf7, 0x00, 0x22, 0xc8, 0xd3, 0x91,
|
||||
0xe6, 0xe6, 0x5b, 0xa2, 0xa3, 0x03, 0x29, 0x9e, 0x96, 0x0c, 0x22, 0xec,
|
||||
0xfd, 0x88, 0xfd, 0xf1, 0xc3, 0x25, 0x8b, 0x07, 0xca, 0x83, 0x07, 0x2d,
|
||||
0x25, 0x15, 0xe7, 0x5c, 0x5d, 0xe5, 0x56, 0xbb, 0x67, 0xfe, 0xed, 0x76,
|
||||
0xf0, 0xb4, 0xfe, 0xf1, 0xd7, 0xa9, 0xc3, 0x06, 0x27, 0x38, 0xee, 0x53,
|
||||
0x93, 0x06, 0x21, 0x78, 0xeb, 0x64, 0x10, 0x0e, 0x4f, 0x93, 0x4b, 0x4b,
|
||||
0x4a, 0x43, 0xb7, 0x18, 0x3c, 0x72, 0xb6, 0xda, 0xc6, 0xa6, 0xc8, 0x66,
|
||||
0x9d, 0x5e, 0x00, 0xc0, 0x45, 0x02, 0x8a, 0x84, 0x8b, 0x84, 0x4b, 0x17,
|
||||
0xce, 0x6d, 0x7d, 0xe9, 0x71, 0x82, 0xf5, 0xc5, 0xa9, 0xf8, 0x62, 0xf7,
|
||||
0xac, 0x30, 0x3f, 0xd6, 0x70, 0xb3, 0xdb, 0xc7, 0xd5, 0x11, 0x6b, 0x07,
|
||||
0xbb, 0x2c, 0xe3, 0xda, 0x8a, 0xfa, 0xd1, 0x35, 0xc2, 0x13, 0xa6, 0x94,
|
||||
0xf4, 0x06, 0x69, 0x77, 0x7a, 0x67, 0x15, 0xca, 0x07, 0x6a, 0x29, 0xa9,
|
||||
0x97, 0x97, 0x97, 0x93, 0x22, 0xfb, 0x88, 0x35, 0xe1, 0x05, 0x39, 0x29,
|
||||
0xb9, 0xa4, 0x81, 0x8b, 0xa4, 0xd4, 0xda, 0x60, 0x46, 0xce, 0x54, 0x8d,
|
||||
0x12, 0xb4, 0x00, 0x02, 0x89, 0xd0, 0x61, 0x43, 0x08, 0xc9, 0xa5, 0x9c,
|
||||
0xad, 0x78, 0xc4, 0xd6, 0x2e, 0xbc, 0x22, 0xfb, 0x5e, 0x0a, 0xd5, 0x36,
|
||||
0xad, 0xd5, 0x4a, 0x6b, 0x75, 0xc4, 0xb6, 0x3f, 0x94, 0xb7, 0xcb, 0x8d,
|
||||
0x45, 0xed, 0xc2, 0x03, 0xb0, 0xb5, 0xba, 0x7a, 0xeb, 0xda, 0x26, 0xa6,
|
||||
0xfd, 0xd1, 0x9c, 0x55, 0x6a, 0x99, 0xa3, 0x99, 0x22, 0x23, 0x2b, 0xe8,
|
||||
0xe8, 0x00, 0xfb, 0x33, 0xdb, 0x41, 0x1b, 0x4f, 0xeb, 0x1d, 0xc7, 0x0e,
|
||||
0xb3, 0x6e, 0x80, 0xd0, 0xc3, 0xff, 0x54, 0x8d, 0xb9, 0x76, 0x59, 0xe1,
|
||||
0x5a, 0x6d, 0xb3, 0xc2, 0x40, 0x1e, 0x4c, 0xd5, 0xb0, 0x83, 0x6f, 0x9d,
|
||||
0x75, 0xa3, 0x73, 0xfe, 0x7c, 0x7e, 0xbc, 0xca, 0x49, 0xf2, 0xd5, 0x36,
|
||||
0x45, 0x46, 0xa4, 0x5a, 0x20, 0x36, 0x31, 0x93, 0xe8, 0x90, 0x92, 0x4a,
|
||||
0xad, 0xa0, 0x7f, 0xf5, 0xde, 0x69, 0x39, 0x09, 0xca, 0x64, 0x82, 0x09,
|
||||
0x26, 0x24, 0xe5, 0xd6, 0xac, 0x1b, 0x2f, 0xbc, 0xf0, 0x02, 0x07, 0x38,
|
||||
0xb1, 0x52, 0x4b, 0x03, 0x0d, 0x34, 0xe0, 0xc0, 0x45, 0x6a, 0xb6, 0x4b,
|
||||
0x4b, 0x30, 0xd8, 0x88, 0x66, 0x68, 0xb6, 0x32, 0x64, 0xc8, 0x50, 0xc2,
|
||||
0x09, 0x8a, 0x7a, 0xb5, 0x68, 0xd1, 0x02, 0x47, 0xce, 0xd6, 0x6c, 0x6f,
|
||||
0xdc, 0xb8, 0x31, 0x04, 0x12, 0x91, 0x5c, 0xe2, 0xc1, 0x83, 0xc7, 0x0d,
|
||||
0x39, 0x9b, 0x1d, 0xc4, 0xe1, 0xec, 0x66, 0xab, 0x25, 0x6b, 0xc9, 0x42,
|
||||
0xf5, 0x6f, 0x6a, 0x6a, 0x2a, 0x46, 0x6b, 0xc1, 0x14, 0x5f, 0xd9, 0x9f,
|
||||
0x66, 0x0b, 0xc3, 0x70, 0x50, 0x6d, 0xf3, 0xd6, 0x3c, 0xf0, 0xc0, 0x43,
|
||||
0x0d, 0x37, 0x16, 0xd1, 0x2d, 0xab, 0xb6, 0x2b, 0xea, 0x75, 0x75, 0x75,
|
||||
0xd5, 0x02, 0x0f, 0x94, 0xa9, 0xb5, 0x8a, 0xe3, 0x38, 0x06, 0x94, 0xaa,
|
||||
0xb5, 0x52, 0x51, 0x51, 0x39, 0xd2, 0x50, 0xa6, 0x22, 0x1b, 0x0a, 0x85,
|
||||
0x0a, 0x61, 0x87, 0xcd, 0x9a, 0x17, 0x00, 0x48, 0xd7, 0x97, 0x3b, 0x8a,
|
||||
0xc3, 0xe1, 0x12, 0xc0, 0x0e, 0xa1, 0x4c, 0x20, 0x80, 0x00, 0x02, 0x09,
|
||||
0x8a, 0x6c, 0x3b, 0xd8, 0x43, 0x0f, 0x3d, 0x20, 0xff, 0x93, 0x41, 0x42,
|
||||
0x04, 0xdb, 0x1f, 0x76, 0x50, 0xa6, 0xc8, 0x48, 0xb3, 0x46, 0x4a, 0x34,
|
||||
0x43, 0xe7, 0x8a, 0x25, 0x83, 0xb4, 0x6f, 0x3d, 0xcb, 0x44, 0xc2, 0xff,
|
||||
0xe7, 0xcd, 0x1a, 0xd9, 0x07, 0x6f, 0x0d, 0x24, 0x22, 0xb2, 0xdc, 0xfa,
|
||||
0xf0, 0xf4, 0x65, 0x4e, 0x3c, 0xfa, 0xd6, 0x32, 0xf0, 0xf4, 0xb3, 0x78,
|
||||
0x62, 0x36, 0xc6, 0x6f, 0x8d, 0x6d, 0xb3, 0x26, 0x28, 0x73, 0xab, 0x21,
|
||||
0x11, 0x09, 0x9f, 0x34, 0x81, 0xe2, 0xbf, 0x62, 0x86, 0x57, 0xab, 0xcf,
|
||||
0x98, 0x90, 0xc3, 0x80, 0xf1, 0x3a, 0x59, 0xe4, 0x92, 0x3a, 0xf6, 0x9b,
|
||||
0x3a, 0x09, 0x01, 0x04, 0x1a, 0x02, 0x85, 0x21, 0x58, 0x7a, 0x4a, 0xa6,
|
||||
0x8a, 0x48, 0x2f, 0x19, 0x1a, 0xea, 0x64, 0x90, 0xe7, 0x37, 0x67, 0x1e,
|
||||
0x93, 0xc6, 0x3a, 0x0c, 0x45, 0xa0, 0xa1, 0x83, 0x15, 0xb7, 0x5f, 0xaf,
|
||||
0x67, 0x43, 0x36, 0xfb, 0xe0, 0x04, 0x6e, 0xfa, 0xd6, 0x59, 0x3c, 0x0c,
|
||||
0x98, 0xa5, 0x1d, 0xd8, 0xd8, 0x01, 0xb1, 0xb1, 0xcb, 0xad, 0xcf, 0x13,
|
||||
0xc6, 0xa3, 0x99, 0xaa, 0x50, 0x4f, 0x05, 0xe7, 0x54, 0x0d, 0x25, 0xc9,
|
||||
0x7b, 0xa9, 0xe3, 0x75, 0x3a, 0xf9, 0x6e, 0x18, 0xa2, 0x86, 0x32, 0x39,
|
||||
0x85, 0x73, 0xb3, 0xa6, 0x58, 0x35, 0x22, 0xca, 0x2f, 0xcb, 0x39, 0x1b,
|
||||
0x14, 0x89, 0x91, 0xad, 0xfe, 0xf1, 0x68, 0xbc, 0xb5, 0xf2, 0x96, 0xff,
|
||||
0xc7, 0x4e, 0xd3, 0xcc, 0x73, 0xeb, 0xb2, 0x65, 0x06, 0xdf, 0xac, 0x09,
|
||||
0xba, 0xa3, 0x40, 0x0f, 0x04, 0xf2, 0x96, 0x33, 0x9c, 0xd8, 0xee, 0x89,
|
||||
0x3f, 0x8e, 0x73, 0x2b, 0x14, 0xc9, 0x0e, 0xb9, 0xdb, 0xe1, 0x04, 0xd9,
|
||||
0x4d, 0xcc, 0x67, 0x32, 0xff, 0xb3, 0x78, 0x68, 0xd0, 0x9c, 0xe7, 0xe0,
|
||||
0xb3, 0x2f, 0x8e, 0x98, 0xab, 0x39, 0x38, 0x4e, 0xec, 0x33, 0xfa, 0x7c,
|
||||
0x38, 0x37, 0xe5, 0x0d, 0x64, 0x8a, 0xf7, 0x66, 0x1d, 0x70, 0x23, 0x8a,
|
||||
0x9c, 0x9f, 0xc0, 0xe3, 0xfc, 0x59, 0x03, 0xfa, 0xc1, 0xd3, 0xda, 0x06,
|
||||
0x07, 0x04, 0x08, 0x10, 0x1a, 0x6a, 0x08, 0xf0, 0x60, 0xc5, 0xc5, 0x84,
|
||||
0x8e, 0xf0, 0x65, 0x32, 0xd8, 0x34, 0x40, 0x83, 0xc7, 0xb7, 0xe6, 0x23,
|
||||
0x35, 0x55, 0xb7, 0x18, 0x76, 0x10, 0x04, 0x40, 0x7a, 0x33, 0xb0, 0xf6,
|
||||
0xd6, 0xcb, 0x16, 0xe7, 0xb3, 0xa6, 0xc3, 0xec, 0x3e, 0xc9, 0xf4, 0x00,
|
||||
0x64, 0x2c, 0xb2, 0xcc, 0x84, 0xe6, 0xbc, 0x23, 0x49, 0x28, 0x6a, 0x81,
|
||||
0x06, 0x81, 0x50, 0xb9, 0xf5, 0x36, 0x6b, 0x07, 0x24, 0x7b, 0xbc, 0x53,
|
||||
0x17, 0x78, 0x93, 0x34, 0x8f, 0x1f, 0xec, 0xec, 0xfc, 0x70, 0xc3, 0xe0,
|
||||
0xae, 0x33, 0x16, 0x8b, 0xe2, 0x57, 0xdc, 0xad, 0x69, 0x78, 0xda, 0x7b,
|
||||
0x68, 0xdc, 0xe9, 0x07, 0x0a, 0x08, 0x40, 0x4c, 0xcc, 0x12, 0x87, 0x1a,
|
||||
0xc0, 0x6d, 0x8e, 0xa0, 0x82, 0x06, 0xb8, 0x49, 0x60, 0xb0, 0x28, 0x8e,
|
||||
0xc5, 0xc3, 0x6d, 0xf2, 0xe5, 0xfd, 0x42, 0xcd, 0xf0, 0x7c, 0xa1, 0xe2,
|
||||
0xd8, 0xaa, 0x79, 0xe4, 0xa9, 0x09, 0x8c, 0x8c, 0xa7, 0x50, 0x0c, 0x70,
|
||||
0xda, 0x3c, 0x9f, 0x4c, 0x1c, 0x6a, 0x1a, 0x7e, 0xb0, 0x93, 0x06, 0x1b,
|
||||
0x2c, 0xac, 0x16, 0xfe, 0x66, 0x82, 0xeb, 0x9d, 0xd6, 0x9c, 0xdb, 0xbc,
|
||||
0x79, 0xa6, 0xbe, 0x9b, 0x01, 0x5b, 0x05, 0xde, 0x90, 0x7a, 0xc6, 0x61,
|
||||
0xb1, 0xe0, 0xdf, 0xa9, 0xcd, 0xf4, 0x44, 0x22, 0x07, 0xfe, 0x7d, 0x3e,
|
||||
0xea, 0x2f, 0xad, 0x2f, 0x72, 0x5c, 0x2b, 0xae, 0x21, 0x34, 0x6b, 0x8c,
|
||||
0x7a, 0x95, 0x90, 0x37, 0x12, 0xf2, 0x55, 0xdf, 0x82, 0x82, 0x2c, 0xd2,
|
||||
0xfe, 0x3f, 0xa5, 0xaa, 0x6a, 0x74, 0xab, 0xb4, 0xf4, 0xaa, 0x5d, 0xda,
|
||||
0x7c, 0x5e, 0xd3, 0xc4, 0x00, 0xac, 0x98, 0x3c, 0x39, 0xd2, 0xdc, 0x4d,
|
||||
0x37, 0x76, 0x93, 0xf2, 0x36, 0xfe, 0xd3, 0x74, 0xe0, 0xda, 0x6c, 0x85,
|
||||
0x93, 0x41, 0xea, 0x0a, 0xcc, 0x48, 0x01, 0xce, 0x3c, 0xbb, 0x49, 0x49,
|
||||
0xd7, 0x9b, 0x81, 0x57, 0xb8, 0x15, 0x98, 0x75, 0x83, 0x5b, 0x09, 0x00,
|
||||
0x25, 0x05, 0x96, 0x7f, 0xca, 0xdb, 0x0e, 0xca, 0x28, 0xe9, 0xa0, 0x54,
|
||||
0x3f, 0x19, 0x26, 0x3e, 0x4d, 0x79, 0x0b, 0x8f, 0x34, 0x2d, 0xc8, 0xba,
|
||||
0x31, 0xc5, 0x71, 0x57, 0x40, 0x59, 0x28, 0x27, 0xd9, 0xc1, 0x94, 0x94,
|
||||
0x17, 0x28, 0x92, 0xde, 0xce, 0x37, 0xb4, 0x02, 0x6b, 0x9b, 0xff, 0xda,
|
||||
0x86, 0xd7, 0xf5, 0xeb, 0x3d, 0x67, 0xc7, 0x1c, 0x59, 0xd6, 0xe9, 0x62,
|
||||
0x2b, 0x9c, 0x53, 0x9b, 0x3d, 0x57, 0x20, 0x94, 0x09, 0xa6, 0x64, 0x81,
|
||||
0x52, 0x4a, 0x34, 0xef, 0x7a, 0x4d, 0xff, 0xc2, 0x9b, 0x7b, 0xa9, 0xbc,
|
||||
0x9f, 0xec, 0xa0, 0x92, 0xce, 0x37, 0x94, 0x43, 0x14, 0x52, 0xce, 0x40,
|
||||
0x49, 0x4d, 0x2e, 0x29, 0x6f, 0x5f, 0x54, 0x46, 0x52, 0x62, 0xa1, 0xb5,
|
||||
0xb2, 0x83, 0x3d, 0xaf, 0xc1, 0x0d, 0x29, 0x60, 0x58, 0xe8, 0x01, 0xc4,
|
||||
0xed, 0x03, 0xb9, 0x82, 0x0b, 0x29, 0xb5, 0x15, 0xb6, 0x83, 0x31, 0xe0,
|
||||
0x90, 0x6f, 0xe6, 0x9c, 0x66, 0x1e, 0x69, 0x62, 0xb0, 0x15, 0x95, 0x5a,
|
||||
0xed, 0x78, 0xec, 0x29, 0xa5, 0x4a, 0x17, 0xcc, 0xf3, 0x08, 0x3c, 0x4a,
|
||||
0xad, 0xde, 0x85, 0x37, 0x3e, 0x39, 0x88, 0x82, 0x72, 0x88, 0xee, 0x53,
|
||||
0xfd, 0xd3, 0x72, 0x0a, 0xe6, 0x00, 0x89, 0x64, 0x9a, 0x56, 0x22, 0xf4,
|
||||
0xb4, 0x8d, 0x2c, 0x4c, 0x36, 0xe0, 0x91, 0x42, 0x48, 0xcb, 0x01, 0x60,
|
||||
0x3e, 0x00, 0x55, 0x2b, 0x29, 0x41, 0xa4, 0x48, 0x7b, 0x0a, 0x4b, 0x00,
|
||||
0xa2, 0x5f, 0x29, 0x77, 0x0a, 0xd5, 0x27, 0xe5, 0xbe, 0x92, 0xf6, 0xe3,
|
||||
0xdf, 0x55, 0x31, 0x65, 0x97, 0x52, 0xaa, 0x44, 0xd9, 0x44, 0x19, 0x04,
|
||||
0x10, 0x47, 0x16, 0x3b, 0xd8, 0x83, 0xa7, 0xb7, 0x8f, 0x9f, 0x6f, 0x07,
|
||||
0xa8, 0x47, 0x45, 0x30, 0x38, 0xd4, 0xf9, 0x11, 0xcf, 0xbf, 0xe5, 0x09,
|
||||
0xf0, 0x2c, 0xbf, 0xc1, 0x90, 0x6e, 0x7c, 0x26, 0x3f, 0x13, 0xd2, 0x22,
|
||||
0x04, 0xf6, 0x45, 0x0b, 0x69, 0xa9, 0x6a, 0x63, 0x88, 0x21, 0x06, 0x58,
|
||||
0x0d, 0x29, 0x54, 0xb5, 0x45, 0x95, 0x9f, 0xe5, 0x84, 0x29, 0x52, 0x15,
|
||||
0xda, 0x8a, 0x4a, 0x01, 0x54, 0x3e, 0x45, 0x4b, 0xa5, 0x46, 0xa5, 0xa5,
|
||||
0xf9, 0xaf, 0xac, 0x6a, 0xd2, 0x84, 0x50, 0x63, 0x72, 0x05, 0x68, 0x0c,
|
||||
0xca, 0x5b, 0xa7, 0xd3, 0xc5, 0x40, 0xa9, 0x65, 0x07, 0xbf, 0xaa, 0xc1,
|
||||
0x77, 0x9f, 0x70, 0x82, 0x6a, 0x44, 0x2c, 0x1e, 0x1b, 0xe6, 0x5c, 0x1d,
|
||||
0x71, 0x6e, 0x9d, 0xab, 0x46, 0xb4, 0x81, 0x2e, 0x17, 0xb4, 0x54, 0x1a,
|
||||
0xf5, 0x5e, 0xe2, 0x58, 0xe0, 0xd6, 0xea, 0x09, 0xa5, 0x68, 0xb6, 0x04,
|
||||
0x31, 0xa3, 0x54, 0x28, 0x30, 0x53, 0xc0, 0x43, 0x84, 0x08, 0xc1, 0x44,
|
||||
0x14, 0x64, 0x01, 0x14, 0x38, 0x11, 0x03, 0x0a, 0x7a, 0xc3, 0x99, 0x25,
|
||||
0x0e, 0xcf, 0x06, 0xd4, 0x3e, 0x34, 0xfd, 0x0e, 0x39, 0xe0, 0x4c, 0xe0,
|
||||
0x4c, 0x48, 0xf1, 0x98, 0x08, 0x04, 0xb9, 0xd0, 0x47, 0xbc, 0x80, 0x87,
|
||||
0x70, 0x97, 0x19, 0x1d, 0x2b, 0x9f, 0x0f, 0x6e, 0x47, 0x21, 0xec, 0x70,
|
||||
0x04, 0xd3, 0xd2, 0x47, 0x28, 0xff, 0x3d, 0xa4, 0x3e, 0x40, 0x9a, 0xba,
|
||||
0xc2, 0x4f, 0x24, 0x07, 0x86, 0x79, 0xa8, 0xf3, 0xf5, 0xa2, 0x34, 0xdf,
|
||||
0x56, 0xc6, 0x66, 0x64, 0x04, 0x0c, 0x22, 0xa0, 0x00, 0x73, 0x93, 0x4a,
|
||||
0x30, 0x16, 0x0c, 0x48, 0x02, 0x49, 0x53, 0xd3, 0xde, 0x03, 0x63, 0x44,
|
||||
0xc4, 0x58, 0x1a, 0x0a, 0x18, 0x80, 0x01, 0x00, 0x03, 0x02, 0x06, 0x00,
|
||||
0x03, 0x8c, 0x05, 0x00, 0x00, 0x04, 0x30, 0x01, 0x00, 0x0c, 0x00, 0xc0,
|
||||
0x90, 0xc4, 0x03, 0x03, 0xd0, 0xad, 0xa1, 0x76, 0x51, 0xd2, 0xa5, 0xf6,
|
||||
0x80, 0xdc, 0x99, 0x4b, 0xa5, 0x31, 0x61, 0x8e, 0xde, 0xea, 0x35, 0xae,
|
||||
0x32, 0x26, 0x35, 0xf0, 0xdc, 0x90, 0xea, 0x00, 0x9f, 0x9b, 0x28, 0x5f,
|
||||
0x3a, 0x6e, 0xdb, 0x58, 0x39, 0x06, 0xec, 0xc2, 0xda, 0x4e, 0x6e, 0x3a,
|
||||
0xa0, 0x3b, 0x6c, 0xab, 0x4c, 0x62, 0xd7, 0x15, 0xb5, 0x5a, 0xa6, 0x01,
|
||||
0xa8, 0xbb, 0xf9, 0x7b, 0x01, 0xec, 0x76, 0xef, 0x4b, 0xca, 0x3e, 0x98,
|
||||
0x7e, 0xc6, 0x93, 0xe7, 0xdd, 0xee, 0x80, 0x55, 0x93, 0xa4, 0xc4, 0xcb,
|
||||
0xc2, 0x12, 0x64, 0xcd, 0xca, 0xc7, 0x60, 0x8c, 0x7d, 0x7a, 0x24, 0x0e,
|
||||
0xdf, 0xa9, 0xbc, 0x91, 0x5a, 0x04, 0x03, 0xf0, 0xae, 0xd3, 0x69, 0x51,
|
||||
0x6c, 0x8f, 0x04, 0xb1, 0x92, 0x18, 0x80, 0xe4, 0x0c, 0xa8, 0xf3, 0x0b,
|
||||
0x28, 0xbb, 0xad, 0xe3, 0x5f, 0x74, 0x28, 0x64, 0x3c, 0xa0, 0x9f, 0xd3,
|
||||
0xb2, 0x0e, 0xcb, 0xc8, 0xde, 0x0b, 0xed, 0x66, 0xf8, 0x52, 0xd4, 0x80,
|
||||
0x3d, 0x4e, 0x13, 0x8d, 0xef, 0x76, 0x01, 0x59, 0x03, 0x0d, 0xe8, 0x4e,
|
||||
0xec, 0xd7, 0x96, 0x5e, 0x76, 0x70, 0x37, 0xe6, 0xed, 0x46, 0x3c, 0x0b,
|
||||
0x84, 0xd7, 0x64, 0xde, 0x9a, 0x84, 0xcd, 0x87, 0x1e, 0xf1, 0x3c, 0xea,
|
||||
0x4c, 0x69, 0x8f, 0xfc, 0xff, 0x74, 0xe6, 0xdf, 0x31, 0xf6, 0x2e, 0x96,
|
||||
0x0f, 0xe8, 0x94, 0x18, 0x8c, 0xc3, 0x71, 0x03, 0xc3, 0x76, 0x92, 0x6a,
|
||||
0x08, 0x7b, 0x3f, 0xd5, 0x03, 0xfa, 0xb5, 0xd5, 0xbb, 0x15, 0xa0, 0xa7,
|
||||
0x9f, 0xc4, 0x1e, 0x80, 0x66, 0x2c, 0x6c, 0x6b, 0xc0, 0x46, 0x8e, 0xfa,
|
||||
0x12, 0x4a, 0x35, 0x80, 0xdd, 0xc6, 0xa3, 0x21, 0xae, 0x6e, 0xd8, 0xa7,
|
||||
0xb3, 0xeb, 0xf8, 0xb8, 0x73, 0xdb, 0xf4, 0x61, 0x75, 0x58, 0x3e, 0xa0,
|
||||
0x09, 0x0b, 0xdf, 0x4d, 0x6e, 0x5b, 0xf2, 0xd6, 0x9b, 0xb2, 0xfa, 0x6c,
|
||||
0x13, 0xd5, 0x4e, 0xbd, 0x08, 0x1d, 0xa1, 0xd9, 0xaa, 0xcd, 0x5a, 0xe2,
|
||||
0xd8, 0x85, 0x3d, 0x80, 0x54, 0xf4, 0x0c, 0xd0, 0x1f, 0x68, 0xaa, 0x3d,
|
||||
0xe2, 0xd3, 0x2a, 0xfc, 0x58, 0xe6, 0xf9, 0xd4, 0x04, 0xb2, 0x28, 0xbf,
|
||||
0xd7, 0xaf, 0x6f, 0xeb, 0x5b, 0xa4, 0x0c, 0xb8, 0x32, 0x60, 0x1d, 0x7b,
|
||||
0x71, 0x02, 0xec, 0x94, 0x6f, 0x3b, 0x93, 0xf3, 0x49, 0x53, 0x8a, 0x70,
|
||||
0x05, 0xdb, 0x9d, 0x11, 0xf3, 0x8e, 0xf0, 0x62, 0x80, 0xa4, 0x33, 0x20,
|
||||
0x23, 0x97, 0x01, 0x88, 0x0c, 0x01, 0x09, 0xc6, 0xd0, 0x32, 0x29, 0xe4,
|
||||
0x2e, 0x40, 0x22, 0x18, 0xac, 0x08, 0xd0, 0x25, 0x31, 0xe0, 0x7a, 0xb3,
|
||||
0xb0, 0x30, 0x40, 0x08, 0xb3, 0x0b, 0x13, 0xb9, 0xeb, 0x22, 0x75, 0xf5,
|
||||
0x4f, 0x09, 0x82, 0x39, 0xe0, 0xa6, 0xe0, 0x39, 0xc0, 0xdb, 0xfd, 0x6e,
|
||||
0x2e, 0xd1, 0x28, 0x64, 0x98, 0x59, 0x38, 0x25, 0x06, 0xdc, 0x6a, 0x96,
|
||||
0x29, 0xf8, 0xd8, 0xad, 0xd1, 0xeb, 0x2e, 0xe7, 0xce, 0x85, 0x77, 0xa9,
|
||||
0x8d, 0x3d, 0xc9, 0x34, 0xd2, 0xd4, 0x32, 0xcf, 0x18, 0x00, 0x34, 0xce,
|
||||
0x61, 0xd0, 0x81, 0x36, 0x86, 0x2e, 0x03, 0x6e, 0x19, 0xdb, 0xfe, 0xfe,
|
||||
0x9b, 0x03, 0x9c, 0x07, 0xe8, 0x8e, 0x76, 0x00, 0xea, 0x10, 0x71, 0x40,
|
||||
0x5c, 0x5c, 0xa3, 0xdd, 0xc9, 0x0c, 0x0e, 0xe1, 0xbb, 0xf6, 0xc3, 0x45,
|
||||
0x7b, 0xf8, 0x17, 0x34, 0x14, 0x83, 0xd7, 0xc8, 0x35, 0x1f, 0x4b, 0x06,
|
||||
0xe8, 0xf0, 0x59, 0xac, 0xc8, 0x48, 0x5a, 0x62, 0xd3, 0x06, 0x89, 0x6d,
|
||||
0x55, 0x01, 0xbb, 0xeb, 0x0c, 0x5a, 0x50, 0x93, 0x8f, 0xae, 0xe8, 0x1f,
|
||||
0x50, 0xd9, 0xe7, 0xbd, 0xd8, 0x33, 0x99, 0x96, 0xbe, 0x74, 0x6b, 0x10,
|
||||
0x8d, 0x01, 0xf1, 0x3c, 0xef, 0x31, 0x7a, 0x6d, 0x14, 0x4b, 0x32, 0x03,
|
||||
0x08, 0x92, 0x5b, 0x8e, 0x67, 0x46, 0xef, 0x8e, 0xc3, 0x01, 0x28, 0x2d,
|
||||
0x37, 0x09, 0xb2, 0xe3, 0x80, 0xb9, 0x60, 0xbc, 0xcb, 0xba, 0x5c, 0x2b,
|
||||
0xdb, 0xc5, 0xa1, 0x87, 0xba, 0x03, 0x7c, 0x71, 0x55, 0xc4, 0xd4, 0xf7,
|
||||
0xa3, 0xd9, 0xe9, 0x0e, 0xb0, 0xf2, 0xf7, 0xc3, 0xe3, 0xaf, 0x06, 0x67,
|
||||
0x27, 0x4f, 0x38, 0x6e, 0x0f, 0x68, 0xae, 0x51, 0xe3, 0xc1, 0x67, 0xd0,
|
||||
0xc1, 0x67, 0x2a, 0x9a, 0x1c, 0x10, 0x7f, 0xef, 0x9e, 0xee, 0x6e, 0x7e,
|
||||
0x6b, 0xb6, 0xd0, 0x63, 0x8a, 0x9c, 0x15, 0x98, 0x66, 0x25, 0x8d, 0xd3,
|
||||
0x0f, 0x78, 0x55, 0xf4, 0x01, 0x08, 0xf5, 0x22, 0xb7, 0x7f, 0x55, 0x26,
|
||||
0xd1, 0x72, 0x00, 0x96, 0x97, 0x67, 0x3f, 0xbb, 0x9b, 0x3d, 0x83, 0x99,
|
||||
0xbc, 0xd1, 0x60, 0xde, 0x2e, 0x02, 0xb8, 0xb6, 0x2a, 0x0c, 0x56, 0x61,
|
||||
0x68, 0x0c, 0xfd, 0xd1, 0xe0, 0xdb, 0x75, 0x2e, 0x21, 0x77, 0x94, 0xea,
|
||||
0xd8, 0x8c, 0x9a, 0xbd, 0x21, 0xaa, 0x00, 0x9a, 0xb3, 0x37, 0x01, 0x23,
|
||||
0xbb, 0x2d, 0xf7, 0x9f, 0x1c, 0xa1, 0x2e, 0x4a, 0xdb, 0x45, 0xff, 0x21,
|
||||
0xe9, 0xd2, 0xb5, 0x0c, 0xfb, 0x3c, 0x01, 0x03, 0x3f, 0xb1, 0x3f, 0x08,
|
||||
0xd9, 0xb9, 0x8b, 0xc8, 0x47, 0x8c, 0x19, 0x66, 0xb1, 0x2b, 0xac, 0x08,
|
||||
0x75, 0x57, 0x77, 0xb2, 0xa7, 0x0c, 0x7e, 0x88, 0x1d, 0x97, 0x1e, 0x80,
|
||||
0x88, 0xeb, 0x03, 0xd6, 0xfd, 0xec, 0xbf, 0xa9, 0xe1, 0x60, 0x96, 0xc6,
|
||||
0x07, 0x87, 0x98, 0x7e, 0x68, 0xdc, 0xda, 0x6e, 0x58, 0x42, 0xda, 0xc0,
|
||||
0x8a, 0xb1, 0xf1, 0x7a, 0x3e, 0xa7, 0xe3, 0x68, 0x47, 0x85, 0x3a, 0x8f,
|
||||
0x08, 0xc6, 0x3a, 0x8d, 0xae, 0x17, 0x8a, 0x79, 0x21, 0x18, 0xf7, 0xbc,
|
||||
0x67, 0x87, 0xb2, 0x2e, 0x1b, 0x00, 0xa1, 0x9d, 0xa7, 0x01, 0x08, 0x9c,
|
||||
0x54, 0xe8, 0xaa, 0x67, 0xb1, 0xf2, 0x11, 0xd1, 0x80, 0x9a, 0x7a, 0xc0,
|
||||
0x68, 0x82, 0x93, 0x16, 0x0d, 0xcf, 0x0f, 0x55, 0x03, 0x72, 0xe5, 0x01,
|
||||
0x19, 0x4d, 0xab, 0xca, 0xbc, 0x28, 0xfa, 0x1d, 0x89, 0xc0, 0xd7, 0x34,
|
||||
0x00, 0x76, 0x7b, 0x84, 0x7e, 0x5a, 0xb1, 0xc4, 0x1d, 0xc0, 0x90, 0xe9,
|
||||
0x01, 0x48, 0xfc, 0x80, 0x18, 0x00, 0xd1, 0x7c, 0x07, 0x2c, 0x4b, 0x03,
|
||||
0x68, 0xe3, 0xbe, 0x5b, 0x0d, 0xf8, 0x3e, 0x8b, 0x07, 0x04, 0x45, 0x06,
|
||||
0xdc, 0xe0, 0xef, 0x01, 0xa8, 0x55, 0xec, 0x61, 0x5d, 0x5d, 0x7b, 0x22,
|
||||
0x35, 0xe1, 0x83, 0x79, 0x80, 0x00, 0x36, 0x00, 0x79, 0x9a, 0xcc, 0x82,
|
||||
0xfc, 0x8d, 0x5f, 0x0e, 0x80, 0xae, 0xfa, 0x01, 0xe8, 0x24, 0x65, 0x01,
|
||||
0x41, 0x31, 0x11, 0xaa, 0xad, 0xfa, 0x1b, 0x80, 0x0d, 0xc8, 0xa2, 0x26,
|
||||
0x9c, 0x21, 0x5f, 0x43, 0x0c, 0x20, 0xa8, 0x2c, 0x24, 0xf3, 0x3e, 0xa2,
|
||||
0xf0, 0xb2, 0x01, 0xe8, 0x02, 0x00, 0x5a, 0x40, 0x78, 0x8d, 0x53, 0x1c,
|
||||
0x80, 0x32, 0x80, 0xef, 0xc0, 0x03, 0x0f, 0x9b, 0x0f, 0x18, 0x9d, 0x9b,
|
||||
0x5f, 0x65, 0x5f, 0xc6, 0xf2, 0x48, 0xf0, 0x77, 0xd9, 0x80, 0x65, 0x6b,
|
||||
0xbc, 0x2c, 0xc3, 0x2a, 0xf9, 0x75, 0x00, 0x3a, 0x5f, 0xee, 0x59, 0x6a,
|
||||
0x78, 0x6a, 0x2a, 0x6f, 0xd5, 0xa1, 0xbb, 0xf2, 0x38, 0x60, 0xb2, 0x9b,
|
||||
0x52, 0x2d, 0xb0, 0x69, 0x7d, 0xed, 0x00, 0xd4, 0x7f, 0x17, 0xfa, 0x1e,
|
||||
0x3a, 0x62, 0x94, 0x19, 0xc6, 0x2b, 0x69, 0x1b, 0x80, 0x98, 0x55, 0xf4,
|
||||
0xb0, 0x1d, 0x80, 0x6a, 0xab, 0x77, 0x04, 0x97, 0xc7, 0x5a, 0xc9, 0xe7,
|
||||
0x00, 0xba, 0x30, 0xcc, 0xe1, 0xc3, 0x87, 0x90, 0xe1, 0x0e, 0xa3, 0x3e,
|
||||
0x0d, 0xb0, 0xe1, 0x7c, 0x7a, 0x18, 0xf6, 0x93, 0x1c, 0x4e, 0x4c, 0x29,
|
||||
0xbe, 0x58, 0x42, 0x4b, 0xe8, 0x01, 0x2a, 0xd7, 0x18, 0x2d, 0x8d, 0x04,
|
||||
0x0c, 0x8a, 0x3d, 0xc9, 0x54, 0x94, 0x7d, 0xc2, 0x20, 0xb3, 0x3e, 0x43,
|
||||
0x41, 0x99, 0x46, 0x27, 0xba, 0x96, 0x99, 0xf7, 0xf1, 0x99, 0x56, 0x06,
|
||||
0x8f, 0x83, 0xe6, 0x05, 0x63, 0x92, 0x0d, 0x40, 0x88, 0x2e, 0x57, 0xbf,
|
||||
0xbe, 0x35, 0x7c, 0x1f, 0xae, 0x8d, 0xf6, 0x1d, 0xc1, 0xed, 0x01, 0xfd,
|
||||
0x39, 0x20, 0x64, 0xf3, 0x2b, 0xf5, 0xda, 0x1b, 0xb4, 0x47, 0x2b, 0xa8,
|
||||
0x57, 0x9a, 0xb0, 0x32, 0xaa, 0x44, 0x19, 0xdb, 0x23, 0xb9, 0x82, 0x3b,
|
||||
0x11, 0x3b, 0x5b, 0x10, 0xb5, 0x12, 0xc1, 0x99, 0x68, 0xf2, 0x49, 0xe0,
|
||||
0x0f, 0x60, 0x9c, 0x18, 0x55, 0xb6, 0x60, 0xd9, 0x09, 0x61, 0xee, 0xa1,
|
||||
0x43, 0x67, 0x48, 0x8b, 0x05, 0x9f, 0x10, 0x5f, 0x6a, 0x55, 0x45, 0x57,
|
||||
0x07, 0x58, 0x12, 0x03, 0x10, 0xfd, 0x02, 0x92, 0xc9, 0xf6, 0x0a, 0x95,
|
||||
0xd9, 0x84, 0x39, 0xcf, 0xca, 0x31, 0x5b, 0x02, 0x94, 0x0d, 0xd0, 0xd1,
|
||||
0x82, 0x1c, 0x94, 0x12, 0x10, 0x5b, 0x15, 0xc6, 0xb1, 0x89, 0x9e, 0x39,
|
||||
0xe9, 0x37, 0x99, 0xf2, 0x91, 0x5d, 0xc0, 0xbf, 0xde, 0x49, 0x5a, 0x7e,
|
||||
0x14, 0xe2, 0xf6, 0xce, 0x65, 0xc5, 0xed, 0x64, 0x1b, 0x00, 0xfd, 0x63,
|
||||
0x81, 0xcc, 0x88, 0x8f, 0x65, 0x03, 0x90, 0x94, 0x07, 0x94, 0xd5, 0xe9,
|
||||
0xa6, 0xa0, 0x6e, 0xe9, 0x8d, 0x6d, 0x15, 0xbd, 0x03, 0x56, 0x67, 0x28,
|
||||
0x35, 0xa3, 0xc7, 0x19, 0x2e, 0xca, 0x95, 0xb2, 0xe9, 0x86, 0x52, 0xef,
|
||||
0x80, 0x32, 0x33, 0x4a, 0xb3, 0x22, 0x14, 0x1b, 0x4e, 0xa6, 0x0e, 0xa0,
|
||||
0x3c, 0xeb, 0x07, 0x83, 0xc3, 0xc1, 0xa2, 0x77, 0xc0, 0x96, 0xe7, 0x15,
|
||||
0xb8, 0x58, 0x11, 0x06, 0x99, 0x01, 0x4b, 0x77, 0x40, 0xa3, 0x53, 0xde,
|
||||
0x3a, 0xd1, 0x18, 0xbf, 0x5a, 0x2f, 0x4b, 0xe8, 0xdd, 0x20, 0x39, 0x3a,
|
||||
0x40, 0xf5, 0x50, 0x77, 0x04, 0x67, 0xce, 0x92, 0x09, 0x09, 0xd8, 0xcf,
|
||||
0x1e, 0x02, 0x66, 0x5e, 0xe0, 0x34, 0x21, 0x4f, 0x03, 0xe4, 0x5e, 0x60,
|
||||
0x35, 0xcb, 0x83, 0xb4, 0x64, 0x2b, 0xe3, 0xfa, 0xd6, 0x36, 0xb9, 0xa3,
|
||||
0x03, 0x42, 0x42, 0x83, 0xc2, 0xd6, 0x3a, 0x33, 0xde, 0x8d, 0x05, 0xb4,
|
||||
0x03, 0x76, 0x9c, 0x17, 0x25, 0x5b, 0x4c, 0xcd, 0x00, 0x75, 0x2d, 0xde,
|
||||
0x3c, 0x40, 0xba, 0xf1, 0x80, 0x78, 0xfa, 0x00, 0x68, 0xf8, 0x9d, 0x6b,
|
||||
0x40, 0xe4, 0x95, 0xfd, 0xa0, 0xb8, 0xb1, 0xb4, 0x5c, 0x19, 0x5a, 0x09,
|
||||
0x84, 0xe4, 0x45, 0x60, 0xc0, 0x05, 0xbd, 0xf3, 0x1b, 0xed, 0xb0, 0x58,
|
||||
0x3c, 0x57, 0x99, 0xb1, 0x0b, 0x9b, 0x79, 0x62, 0xf6, 0x90, 0xf2, 0x01,
|
||||
0x9b, 0x85, 0xb5, 0x05, 0x04, 0x4e, 0xa7, 0x01, 0xbb, 0x40, 0x5c, 0xb7,
|
||||
0x24, 0x10, 0x3e, 0x61, 0x02, 0x97, 0x37, 0x13, 0x89, 0xaf, 0x4b, 0x78,
|
||||
0x4b, 0x5b, 0x30, 0x96, 0x5a, 0x90, 0xc0, 0xa1, 0x76, 0x6c, 0x9c, 0xcc,
|
||||
0xc7, 0xa8, 0x83, 0x62, 0x76, 0x76, 0x24, 0x56, 0x4f, 0x5e, 0x25, 0xdb,
|
||||
0xd5, 0xc5, 0xdf, 0x06, 0x78, 0xe1, 0x14, 0x1b, 0x1d, 0x35, 0x92, 0x8c,
|
||||
0xc0, 0xac, 0xad, 0xc3, 0x69, 0xb3, 0xd4, 0xf1, 0x1b, 0x72, 0xf5, 0x72,
|
||||
0x20, 0x58, 0x1d, 0x1b, 0x46, 0x95, 0x98, 0x44, 0x0f, 0x8c, 0x4d, 0xe3,
|
||||
0x36, 0x02, 0x11, 0xcf, 0x37, 0x6a, 0x40, 0xb1, 0x1c, 0xa3, 0x8a, 0x62,
|
||||
0x9b, 0x4d, 0x1f, 0x09, 0xcb, 0x0a, 0x54, 0x33, 0xf3, 0x7f, 0xbd, 0x06,
|
||||
0x58, 0x7c, 0x6b, 0x58, 0x57, 0x02, 0xba, 0x2e, 0x51, 0x4a, 0x0e, 0x98,
|
||||
0x5c, 0x30, 0x96, 0x41, 0x75, 0x44, 0xdf, 0xa9, 0x27, 0xc5, 0x51, 0x62,
|
||||
0x9d, 0x3f, 0x68, 0x4e, 0x4e, 0x86, 0x6f, 0xe5, 0x4d, 0xed, 0xd5, 0xcd,
|
||||
0xae, 0xb6, 0x81, 0x51, 0xa4, 0xf1, 0x44, 0x5b, 0x0a, 0xf0, 0xca, 0x32,
|
||||
0x6d, 0x47, 0x1f, 0x24, 0xd8, 0xe3, 0x65, 0xec, 0x29, 0xd6, 0xa9, 0xb2,
|
||||
0x6e, 0x75, 0xb3, 0x4b, 0xe5, 0xbe, 0x09, 0x0c, 0x80, 0x25, 0x91, 0x36,
|
||||
0x24, 0x64, 0x9a, 0x07, 0x10, 0xdd, 0xeb, 0xe4, 0xda, 0xcc, 0x9b, 0x0f,
|
||||
0x78, 0xb6, 0x7f, 0xea, 0x80, 0x31, 0x1e, 0xf0, 0x07, 0xf4, 0x56, 0x72,
|
||||
0xa1, 0xe3, 0x53, 0xa0, 0x89, 0x5e, 0x71, 0x9b, 0xc1, 0xd2, 0xab, 0xda,
|
||||
0x8e, 0xba, 0x0c, 0x47, 0xe6, 0x00, 0x61, 0x25, 0x77, 0xd5, 0x58, 0x27,
|
||||
0x9c, 0x91, 0x55, 0x8c, 0x80, 0xc1, 0x7f, 0x80, 0x14, 0x4b, 0x76, 0xda,
|
||||
0xd9, 0x74, 0x32, 0x5b, 0x35, 0x7c, 0xef, 0x5e, 0x8b, 0x5b, 0xf9, 0x26,
|
||||
0x74, 0x56, 0xa8, 0xc1, 0x76, 0x8c, 0x96, 0xd6, 0xa1, 0xb6, 0x0e, 0x2b,
|
||||
0xc7, 0xbf, 0x80, 0x8a, 0x76, 0xe1, 0xfe, 0xf1, 0x18, 0x72, 0x77, 0x73,
|
||||
0x80, 0x1a, 0x2f, 0x62, 0x81, 0xd9, 0x49, 0x3a, 0x91, 0xda, 0xfb, 0x4a,
|
||||
0xb9, 0x03, 0xfc, 0x34, 0x63, 0xc4, 0x38, 0x3a, 0x9a, 0xa1, 0x6e, 0x76,
|
||||
0x80, 0x5d, 0x82, 0xf6, 0x3b, 0xc0, 0x6f, 0x4b, 0x18, 0xe0, 0x34, 0x3b,
|
||||
0xf2, 0xac, 0x9d, 0xbe, 0x01, 0x2b, 0x64, 0x3d, 0x00, 0xf1, 0xdb, 0x3d,
|
||||
0x6f, 0x56, 0x04, 0x92, 0x06, 0x38, 0xde, 0x16, 0xa9, 0xf9, 0x94, 0x6f,
|
||||
0x6e, 0xaa, 0x89, 0x5e, 0x96, 0xe1, 0xb7, 0x0a, 0xa2, 0xf7, 0x1b, 0xdf,
|
||||
0x21, 0xeb, 0x0e, 0x85, 0x4e, 0x9c, 0x1a, 0x11, 0xd7, 0xda, 0x69, 0xea,
|
||||
0x2e, 0xce, 0xa1, 0x64, 0x03, 0x64, 0xc5, 0xdf, 0xde, 0xeb, 0x8c, 0x1f,
|
||||
0x91, 0xa1, 0xb0, 0x81, 0xd5, 0xcc, 0x07, 0x48, 0x79, 0x76, 0xce, 0x06,
|
||||
0xb8, 0xb1, 0x22, 0xee, 0x84, 0x86, 0xac, 0xb2, 0x37, 0x84, 0x11, 0xe4,
|
||||
0xfc, 0x52, 0x00, 0x50, 0x2c, 0x50, 0x2f, 0xd1, 0x51, 0x19, 0x13, 0x1c,
|
||||
0x9c, 0x46, 0x60, 0x4c, 0xcf, 0xf4, 0x3d, 0x05, 0xa8, 0xe3, 0xfc, 0x60,
|
||||
0x9a, 0xc6, 0xbe, 0xd9, 0x13, 0xe2, 0x56, 0xed, 0x2e, 0xe0, 0x80, 0x66,
|
||||
0x81, 0x5b, 0xf8, 0x51, 0x00, 0xf1, 0xf8, 0x2c, 0x0e, 0xf8, 0xba, 0x20,
|
||||
0xae, 0xb2, 0x0b, 0x9e, 0xab, 0x7a, 0x7a, 0xc0, 0x48, 0xff, 0xc3, 0xb5,
|
||||
0x97, 0x39, 0xc1, 0x71, 0x1d, 0xc0, 0xa3, 0x39, 0x18, 0x8e, 0x0c, 0x56,
|
||||
0xb3, 0xe0, 0x51, 0x03, 0xde, 0xee, 0x28, 0xab, 0xf1, 0xb2, 0xb7, 0x4c,
|
||||
0xcd, 0x8f, 0xaa, 0x2b, 0xa3, 0xdc, 0x26, 0xbd, 0xe0, 0xb6, 0x58, 0xef,
|
||||
0x14, 0xa4, 0x10, 0x7e, 0x3a, 0x0a, 0xc0, 0xdb, 0x19, 0x16, 0x64, 0xc2,
|
||||
0x77, 0x80, 0xbb, 0x7f, 0x84, 0x60, 0x1b, 0xc0, 0x5c, 0x49, 0x7c, 0x4d,
|
||||
0xf2, 0xb2, 0x4a, 0x65, 0xf6, 0x00, 0xad, 0x7c, 0xc8, 0xce, 0x41, 0x6a,
|
||||
0xaa, 0xa9, 0x45, 0x60, 0xf2, 0x06, 0x54, 0x3e, 0xe0, 0x6f, 0xfe, 0x16,
|
||||
0x66, 0xf6, 0xb3, 0x1b, 0x07, 0x44, 0xb5, 0xaf, 0x54, 0xcb, 0x2a, 0x3d,
|
||||
0xd2, 0xd8, 0xe8, 0x37, 0x2f, 0xc9, 0x6e, 0xcf, 0x80, 0x2d, 0x1b, 0x09,
|
||||
0x71, 0x7d, 0x99, 0x9d, 0x5a, 0x4d, 0x3b, 0xb1, 0xd6, 0x61, 0x90, 0xe5,
|
||||
0x55, 0xf4, 0xdd, 0xe2, 0x9d, 0xf5, 0xb1, 0x85, 0x79, 0xba, 0x3b, 0xd9,
|
||||
0x1d, 0xd9, 0x50, 0xe7, 0xd5, 0xa3, 0x2b, 0xb9, 0xdf, 0xec, 0x07, 0x87,
|
||||
0xc5, 0x11, 0x30, 0xba, 0x0e, 0xdb, 0x86, 0xa5, 0xb7, 0x24, 0xe4, 0x51,
|
||||
0x23, 0x66, 0xb2, 0xd0, 0x62, 0xa6, 0xe6, 0x4b, 0x0e, 0x98, 0x72, 0x26,
|
||||
0x30, 0x36, 0xec, 0x75, 0xdf, 0x5f, 0xc8, 0xc6, 0xf7, 0x91, 0xb4, 0x3f,
|
||||
0x7b, 0x40, 0xb3, 0x56, 0x72, 0x1c, 0x50, 0x7e, 0x8a, 0x3c, 0xdb, 0xd6,
|
||||
0x3f, 0x23, 0x60, 0xd7, 0x63, 0xce, 0x00, 0xd2, 0x66, 0x01, 0xed, 0x5a,
|
||||
0xf9, 0xe9, 0x63, 0x2e, 0x82, 0x2b, 0x06, 0x67, 0x20, 0x97, 0x01, 0xce,
|
||||
0x58, 0x05, 0x50, 0x35, 0x32, 0x66, 0x2e, 0x3a, 0x05, 0xce, 0x44, 0x8d,
|
||||
0x9f, 0xdc, 0x64, 0xab, 0x61, 0x7d, 0xeb, 0x1b, 0x1c, 0xe3, 0x59, 0xc5,
|
||||
0x73, 0x76, 0xab, 0x33, 0x3d, 0x32, 0xc2, 0xb4, 0xde, 0xb6, 0xce, 0x66,
|
||||
0x22, 0x59, 0x13, 0x87, 0x09, 0xf1, 0x0e, 0xa8, 0xd1, 0x0c, 0x68, 0x7b,
|
||||
0xd2, 0x05, 0x89, 0xa3, 0xaf, 0x04, 0x66, 0xa7, 0xb8, 0xcf, 0x69, 0x90,
|
||||
0xe8, 0x31, 0x93, 0x03, 0x68, 0x59, 0x37, 0xe6, 0x11, 0xb4, 0x93, 0xd2,
|
||||
0x00, 0x1c, 0xeb, 0xa2, 0xa8, 0x6f, 0xb1, 0xd4, 0x98, 0xb4, 0xaa, 0x73,
|
||||
0xd1, 0x5a, 0x8a, 0x5d, 0xb9, 0x38, 0x20, 0x3f, 0x34, 0x2b, 0xb4, 0xf1,
|
||||
0xc5, 0x3e, 0x77, 0xed, 0x85, 0xd1, 0x07, 0x3c, 0x38, 0x60, 0x4c, 0xda,
|
||||
0x01, 0x17, 0xa0, 0xe9, 0x1d, 0xb6, 0x6b, 0x74, 0xff, 0x1b, 0xfb, 0x72,
|
||||
0x80, 0xaa, 0x05, 0xff, 0xb4, 0x20, 0x35, 0x57, 0x4b, 0x6d, 0x50, 0x3d,
|
||||
0x4f, 0x29, 0xa7, 0x4b, 0x9b, 0xc6, 0x7f, 0x05, 0x7b, 0xfb, 0x74, 0xc4,
|
||||
0x80, 0x03, 0x8c, 0x0c, 0x88, 0xde, 0xee, 0x9f, 0x36, 0x3e, 0xbd, 0x6f,
|
||||
0x38, 0x71, 0x4d, 0x5e, 0x7a, 0xf0, 0xd2, 0x20, 0x49, 0x5f, 0xae, 0xc6,
|
||||
0x1b, 0x79, 0xf8, 0xa1, 0x9c, 0x26, 0xd3, 0x66, 0xb2, 0x6e, 0x2f, 0xd9,
|
||||
0x03, 0x37, 0xdd, 0xe0, 0xe1, 0x07, 0x67, 0xa7, 0x38, 0x08, 0x5c, 0x1a,
|
||||
0x15, 0x7c, 0xac, 0xdd, 0xd8, 0xed, 0x97, 0xc5, 0x64, 0xff, 0xa1, 0x57,
|
||||
0xb4, 0x07, 0x97, 0x71, 0x51, 0xb1, 0x86, 0xb6, 0x01, 0xea, 0x1e, 0xb5,
|
||||
0xbe, 0x22, 0x9e, 0xe9, 0x05, 0xec, 0x01, 0xa4, 0x4f, 0x97, 0x1b, 0xe0,
|
||||
0x6d, 0xeb, 0xfa, 0x3e, 0xd9, 0x83, 0xfd, 0x04, 0x1a, 0x10, 0x1b, 0x3d,
|
||||
0x00, 0xc4, 0x49, 0x93, 0x84, 0x57, 0x26, 0xa0, 0x9b, 0x4c, 0x86, 0xeb,
|
||||
0x80, 0xcc, 0xd0, 0xc4, 0x01, 0x8d, 0x7e, 0x24, 0xd8, 0x09, 0x13, 0x85,
|
||||
0x6e, 0x08, 0x71, 0x1b, 0x18, 0x98, 0xa1, 0x6a, 0xcd, 0x4d, 0x00, 0x36,
|
||||
0x7f, 0x80, 0x05, 0x88, 0x24, 0x64, 0x8a, 0xf4, 0x11, 0xfb, 0x89, 0x59,
|
||||
0x8d, 0x46, 0xe1, 0x02, 0xdd, 0xcd, 0x24, 0x0a, 0x53, 0xc3, 0x01, 0x8d,
|
||||
0xc6, 0x8c, 0xb5, 0xee, 0xdd, 0x74, 0x25, 0xbb, 0x63, 0xab, 0x3c, 0xee,
|
||||
0xfc, 0xad, 0xb8, 0xf3, 0x1e, 0x80, 0x0a, 0x20, 0x4e, 0x49, 0x6a, 0x29,
|
||||
0xf5, 0x39, 0xae, 0xf2, 0xde, 0x57, 0x0b, 0x1d, 0x67, 0xf3, 0x23, 0x24,
|
||||
0x94, 0x87, 0xdb, 0x8d, 0xb8, 0x08, 0x63, 0x05, 0x29, 0xc6, 0x57, 0xbb,
|
||||
0x3f, 0x84, 0x2e, 0xee, 0xd0, 0x57, 0xd4, 0x85, 0xb7, 0xa5, 0x76, 0xdc,
|
||||
0xcd, 0x05, 0xc8, 0x2c, 0xbe, 0xb1, 0x87, 0x0a, 0x4c, 0x60, 0x0c, 0x9a,
|
||||
0x94, 0x43, 0x55, 0x77, 0x1a, 0xcf, 0x80, 0xe8, 0xe2, 0x01, 0x3f, 0xb6,
|
||||
0xe1, 0xdc, 0xee, 0xe1, 0xd2, 0xb4, 0x5a, 0xe6, 0x07, 0x0b, 0xd5, 0x3d,
|
||||
0xa2, 0xe7, 0xca, 0xd8, 0x2e, 0x8b, 0x8f, 0x29, 0xb9, 0x3d, 0x36, 0x3e,
|
||||
0xd2, 0xf5, 0xb2, 0x1e, 0xf2, 0xac, 0xb3, 0x48, 0x34, 0xb1, 0xed, 0x76,
|
||||
0x67, 0xc0, 0xd6, 0xdb, 0xf4, 0x21, 0x60, 0x75, 0xe2, 0xf3, 0x5d, 0x56,
|
||||
0xac, 0xb9, 0x87, 0x5d, 0x63, 0xf8, 0x90, 0x03, 0x39, 0x0d, 0x51, 0xc3,
|
||||
0x4c, 0x4c, 0x68, 0xfa, 0x80, 0xc0, 0xca, 0x80, 0x8a, 0xb9, 0x2e, 0x08,
|
||||
0x06, 0x9c, 0x09, 0x5e, 0x9c, 0x4c, 0x1c, 0xa8, 0xbf, 0xfb, 0x20, 0xeb,
|
||||
0x82, 0x0c, 0x30, 0x50, 0x8a, 0x01, 0xb8, 0x5c, 0xd1, 0x71, 0x54, 0xa3,
|
||||
0x45, 0x2e, 0xed, 0x36, 0xf3, 0xd4, 0xcc, 0x6a, 0x94, 0x11, 0xc0, 0xda,
|
||||
0x26, 0xc2, 0x56, 0x31, 0xc9, 0x3f, 0xdf, 0xe8, 0x01, 0x71, 0xe0, 0x30,
|
||||
0x5b, 0x82, 0xfd, 0x7e, 0x28, 0xdd, 0x9c, 0xcd, 0xa7, 0xdf, 0x95, 0x31,
|
||||
0x5f, 0x18, 0x78, 0xff, 0x75, 0x63, 0x99, 0xfc, 0xec, 0xce, 0x0c, 0x57,
|
||||
0x66, 0xdb, 0x7b, 0x18, 0xbe, 0xdc, 0xd9, 0x65, 0xff, 0x7e, 0x38, 0x76,
|
||||
0xef, 0x05, 0xad, 0x8e, 0x72, 0xc0, 0x16, 0xff, 0xd6, 0xb4, 0xce, 0x04,
|
||||
0x03, 0xdc, 0xf5, 0x37, 0xe5, 0xb6, 0x02, 0x3a, 0xe7, 0xef, 0xd8, 0xa5,
|
||||
0x7b, 0xe2, 0x24, 0x4a, 0xcf, 0xef, 0x5e, 0x38, 0x4d, 0x47, 0x72, 0x0f,
|
||||
0x9a, 0x10, 0xf4, 0x4b, 0xab, 0x16, 0x67, 0x1b, 0xf3, 0x6e, 0x1a, 0x71,
|
||||
0x15, 0x5a, 0xa5, 0x08, 0xba, 0x48, 0xc9, 0xa8, 0xce, 0x95, 0x1a, 0xab,
|
||||
0x18, 0xdf, 0xee, 0xef, 0xee, 0xf1, 0x3c, 0x80, 0x36, 0x6b, 0x6d, 0x62,
|
||||
0x62, 0x87, 0xcb, 0x24, 0x81, 0x87, 0x01, 0x54, 0xe2, 0x5a, 0xa4, 0x1d,
|
||||
0x4a, 0xc0, 0xb4, 0xec, 0xdd, 0xb0, 0x17, 0x57, 0x05, 0xa9, 0x66, 0xb1,
|
||||
0xe5, 0xc2, 0xaf, 0x35, 0x08, 0x8c, 0x41, 0xb1, 0xd8, 0x86, 0x4e, 0x05,
|
||||
0x9b, 0x96, 0xb6, 0xbf, 0xf2, 0x49, 0xc5, 0x2e, 0xf7, 0x37, 0x7c, 0xcc,
|
||||
0x32, 0x37, 0x00, 0x2f, 0xbd, 0xd6, 0x1d, 0x9b, 0x26, 0x83, 0x03, 0x40,
|
||||
0x99, 0x5a, 0xb3, 0x63, 0xd3, 0x15, 0xcd, 0x89, 0xaa, 0x1b, 0xaa, 0x9e,
|
||||
0xbd, 0x06, 0x5e, 0x3a, 0xf3, 0xe9, 0xb8, 0xdf, 0xea, 0xfb, 0x0d, 0x16,
|
||||
0x49, 0xbd, 0x20, 0xa6, 0xa0, 0xb9, 0x0e, 0xbb, 0x1e, 0xd6, 0x2e, 0x3e,
|
||||
0xbb, 0x0f, 0x72, 0x34, 0x1b, 0xed, 0x01, 0x45, 0xe6, 0xd0, 0x07, 0xd4,
|
||||
0x06, 0x92, 0x33, 0xab, 0x9c, 0xb7, 0xca, 0x70, 0x26, 0x8d, 0xb7, 0x21,
|
||||
0xab, 0x98, 0x03, 0x2a, 0x1d, 0xbe, 0x22, 0xcf, 0x2c, 0x98, 0x88, 0xb6,
|
||||
0x74, 0x40, 0x81, 0x0d, 0x70, 0xbe, 0xaa, 0x8c, 0xdb, 0x5e, 0x2b, 0x91,
|
||||
0xe6, 0x80, 0xd7, 0xbd, 0x28, 0x35, 0x12, 0x70, 0x3e, 0x0b, 0x27, 0x8e,
|
||||
0x87, 0x60, 0x19, 0xc8, 0x2e, 0x10, 0x8e, 0x06, 0x30, 0xec, 0x75, 0x13,
|
||||
0x7a, 0xc0, 0xc4, 0x4d, 0xaa, 0x57, 0xd9, 0x0d, 0xa0, 0xa7, 0x1f, 0xa0,
|
||||
0xdf, 0x70, 0x6f, 0x8d, 0xaa, 0x20, 0xc6, 0x77, 0xc0, 0xca, 0x45, 0x78,
|
||||
0x75, 0x1a, 0x4b, 0x77, 0x00, 0x8e, 0x93, 0xad, 0xc5, 0x62, 0xd1, 0xb4,
|
||||
0xb4, 0xfe, 0xed, 0x7d, 0x73, 0x13, 0xb9, 0xfc, 0x32, 0xc8, 0x3f, 0xa3,
|
||||
0x19, 0x05, 0xf4, 0x3f, 0x97, 0x5d, 0x7e, 0xb2, 0x85, 0xb5, 0x04, 0x4b,
|
||||
0x9d, 0xa1, 0xde, 0x2d, 0x95, 0x4f, 0xca, 0x2e, 0xe9, 0xdd, 0x76, 0x0a,
|
||||
0x7c, 0xc8, 0x44, 0x17, 0xb2, 0xce, 0x3c, 0x15, 0xab, 0xb9, 0xa9, 0x59,
|
||||
0x7c, 0x54, 0x4c, 0x83, 0xe7, 0x09, 0x34, 0x27, 0x04, 0x54, 0x5c, 0xa3,
|
||||
0x35, 0x57, 0x2d, 0x8f, 0x1e, 0x26, 0xa8, 0xf4, 0x28, 0xda, 0xa2, 0xb4,
|
||||
0xdb, 0x54, 0x0b, 0xb4, 0x07, 0x63, 0xc5, 0xdb, 0xb4, 0x20, 0x6a, 0x00,
|
||||
0xf1, 0xa5, 0xe8, 0x8b, 0xe4, 0x35, 0xc4, 0x96, 0x54, 0x76, 0x00, 0x5e,
|
||||
0x37, 0x72, 0x7e, 0x15, 0xe8, 0x6e, 0x8b, 0x98, 0x13, 0x2d, 0x06, 0x64,
|
||||
0x71, 0x80, 0x43, 0x96, 0x60, 0x1b, 0x00, 0xe7, 0x70, 0x48, 0xf6, 0xf4,
|
||||
0x23, 0x0b, 0x16, 0x8a, 0x4c, 0x28, 0x50, 0x83, 0x32, 0x23, 0x34, 0x65,
|
||||
0x72, 0xb1, 0xcb, 0x84, 0x01, 0x34, 0xc2, 0x28, 0x96, 0x51, 0x1d, 0x06,
|
||||
0x65, 0x6f, 0xe1, 0x0a, 0x9f, 0xce, 0x80, 0xa3, 0x77, 0xf5, 0x36, 0x04,
|
||||
0x3e, 0x7b, 0xe8, 0xe7, 0xac, 0x6a, 0x04, 0x6e, 0x0a, 0x8c, 0xe8, 0x01,
|
||||
0x65, 0xec, 0xbd, 0x1b, 0x99, 0xea, 0x4b, 0xde, 0x7d, 0xc1, 0x9d, 0xa0,
|
||||
0xcc, 0x1b, 0x1f, 0xe0, 0x0a, 0xa5, 0x1f, 0x7a, 0x26, 0x02, 0x6a, 0x5a,
|
||||
0xe2, 0x4c, 0x58, 0x77, 0x2f, 0x04, 0x73, 0xe8, 0x60, 0x68, 0xc0, 0x26,
|
||||
0xf1, 0x0d, 0x56, 0x16, 0xa7, 0x0b, 0x47, 0x28, 0x00, 0x4a, 0x3b, 0xa9,
|
||||
0x8b, 0x56, 0xb9, 0xee, 0xf9, 0x2c, 0x33, 0xbd, 0xf2, 0x3a, 0xc4, 0x40,
|
||||
0xf6, 0x8b, 0x62, 0x40, 0x06, 0xd8, 0x22, 0x43, 0x8d, 0xa3, 0x05, 0xc2,
|
||||
0x73, 0xd1, 0x04, 0x4e, 0x65, 0x5d, 0x26, 0xe0, 0xd7, 0x5d, 0x7d, 0x4c,
|
||||
0x24, 0x7f, 0x8d, 0x27, 0xa7, 0xfd, 0xae, 0xd1, 0x8e, 0xf6, 0x75, 0xd9,
|
||||
0x4d, 0x1d, 0x23, 0x69, 0xb5, 0x20, 0xe0, 0x00, 0xce, 0xe2, 0x28, 0xdb,
|
||||
0x41, 0x07, 0xda, 0x01, 0xb4, 0x53, 0x29, 0xd9, 0x75, 0x0d, 0xd1, 0x98,
|
||||
0x9a, 0x5c, 0x5b, 0xf4, 0x7c, 0x79, 0xde, 0x64, 0x1e, 0x10, 0x32, 0x19,
|
||||
0xd7, 0x58, 0x6c, 0xc6, 0x00, 0x50, 0x4d, 0x67, 0x44, 0x7f, 0x09, 0xd8,
|
||||
0x92, 0x65, 0x1b, 0x3a, 0x8c, 0x81, 0x2f, 0x90, 0x70, 0xd3, 0x80, 0x2a,
|
||||
0x53, 0xaa, 0xb0, 0xd0, 0x15, 0x55, 0x9a, 0x5a, 0x70, 0x6a, 0x2f, 0xc4,
|
||||
0x6b, 0xac, 0xa5, 0x21, 0x61, 0xa0, 0x62, 0xae, 0x0a, 0xc9, 0xd2, 0x79,
|
||||
0xd2, 0xe8, 0x8c, 0x7a, 0xe1, 0xe8, 0x2e, 0x3b, 0x1e, 0x20, 0xe6, 0xa5,
|
||||
0x39, 0x32, 0xcd, 0xf4, 0x91, 0x03, 0x3b, 0x4c, 0x99, 0x3f, 0x60, 0x00,
|
||||
0x97, 0xed, 0xc0, 0x40, 0xa5, 0x1b, 0xe6, 0x02, 0x60, 0x1e, 0xa9, 0x73,
|
||||
0x9e, 0x27, 0xc6, 0x56, 0x7a, 0x66, 0xc9, 0x55, 0x8b, 0xf9, 0x0f, 0x49,
|
||||
0x13, 0x82, 0x0f, 0xa3, 0x4b, 0x44, 0xbc, 0x5a, 0x1c, 0xd1, 0xec, 0xf4,
|
||||
0xfc, 0xd9, 0xba, 0x6b, 0x2e, 0xad, 0xdd, 0x93, 0xe7, 0x5b, 0xc6, 0x1a,
|
||||
0x31, 0x8c, 0xb4, 0x0a, 0xab, 0x65, 0x4d, 0xd9, 0xbc, 0x27, 0x98, 0x2e,
|
||||
0x02
|
||||
};
|
||||
|
||||
/**
|
||||
* Uncompressed size of \c #srcZstd.
|
||||
*/
|
||||
#define DXT1_256x256 32768
|
||||
|
||||
/**
|
||||
* Destination for decoding \c #srcZstd.
|
||||
*/
|
||||
static uint8_t dstDxt1[DXT1_256x256] = {};
|
||||
|
||||
#ifndef ZSTD_VERSION_MAJOR
|
||||
/**
|
||||
* For the case where the decompression library hasn't been included we add a
|
||||
* dummy function to fake the process and stop the buffers being optimised out.
|
||||
*/
|
||||
size_t ZSTD_decompress(void* dst, size_t dstLen, const void* src, size_t srcLen) {
|
||||
return (memcmp(dst, src, (srcLen < dstLen) ? srcLen : dstLen)) ? dstLen : 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************** Program and Shaders ***************************/
|
||||
|
||||
/**
|
||||
* Program object ID.
|
||||
*/
|
||||
static GLuint progId = 0;
|
||||
|
||||
/**
|
||||
* Vertex shader ID.
|
||||
*/
|
||||
static GLuint vertId = 0;
|
||||
|
||||
/**
|
||||
* Fragment shader ID.
|
||||
*/
|
||||
static GLuint fragId = 0;
|
||||
|
||||
//********************************* Uniforms *********************************/
|
||||
|
||||
/**
|
||||
* Quad rotation angle ID.
|
||||
*/
|
||||
static GLint uRotId = -1;
|
||||
|
||||
/**
|
||||
* Draw colour ID.
|
||||
*/
|
||||
static GLint uTx0Id = -1;
|
||||
|
||||
//******************************* Shader Source ******************************/
|
||||
|
||||
/**
|
||||
* Vertex shader to draw texture mapped polys with an applied rotation.
|
||||
*/
|
||||
static GLchar const vertShader2D[] =
|
||||
#if GL_ES_VERSION_2_0
|
||||
"#version 100\n"
|
||||
"precision mediump float;\n"
|
||||
#else
|
||||
"#version 120\n"
|
||||
#endif
|
||||
"uniform float uRot;" // rotation
|
||||
"attribute vec2 aPos;" // vertex position coords
|
||||
"attribute vec2 aUV0;" // vertex texture UV0
|
||||
"varying vec2 vUV0;" // (passed to fragment shader)
|
||||
"void main() {"
|
||||
" float cosA = cos(radians(uRot));"
|
||||
" float sinA = sin(radians(uRot));"
|
||||
" mat3 rot = mat3(cosA, -sinA, 0.0,"
|
||||
" sinA, cosA, 0.0,"
|
||||
" 0.0, 0.0, 1.0);"
|
||||
" gl_Position = vec4(rot * vec3(aPos, 1.0), 1.0);"
|
||||
" vUV0 = aUV0;"
|
||||
"}";
|
||||
|
||||
/**
|
||||
* Fragment shader for the above polys.
|
||||
*/
|
||||
static GLchar const fragShader2D[] =
|
||||
#if GL_ES_VERSION_2_0
|
||||
"#version 100\n"
|
||||
"precision mediump float;\n"
|
||||
#else
|
||||
"#version 120\n"
|
||||
#endif
|
||||
"uniform sampler2D uTx0;"
|
||||
"varying vec2 vUV0;" // (passed from fragment shader)
|
||||
"void main() {"
|
||||
" gl_FragColor = texture2D(uTx0, vUV0);"
|
||||
"}";
|
||||
|
||||
/**
|
||||
* Helper to compile a shader.
|
||||
*
|
||||
* \param type shader type
|
||||
* \param text shader source
|
||||
* \return the shader ID (or zero if compilation failed)
|
||||
*/
|
||||
static GLuint compileShader(GLenum const type, const GLchar* text) {
|
||||
GLuint shader = glCreateShader(type);
|
||||
if (shader) {
|
||||
glShaderSource (shader, 1, &text, NULL);
|
||||
glCompileShader(shader);
|
||||
GLint compiled;
|
||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
|
||||
if (compiled) {
|
||||
return shader;
|
||||
} else {
|
||||
GLint logLen;
|
||||
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLen);
|
||||
if (logLen > 1) {
|
||||
GLchar* logStr = malloc(logLen);
|
||||
glGetShaderInfoLog(shader, logLen, NULL, logStr);
|
||||
#ifndef NDEBUG
|
||||
printf("Shader compilation error: %s\n", logStr);
|
||||
#endif
|
||||
free(logStr);
|
||||
}
|
||||
glDeleteShader(shader);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//********************************** Helpers *********************************/
|
||||
|
||||
/**
|
||||
* Vertex position index.
|
||||
*/
|
||||
#define GL_VERT_POSXY_ID 0
|
||||
|
||||
/**
|
||||
* Vertex UV0 index.
|
||||
*/
|
||||
#define GL_VERT_TXUV0_ID 1
|
||||
|
||||
/**
|
||||
* \c GL vec2 storage type.
|
||||
*/
|
||||
struct vec2 {
|
||||
float x;
|
||||
float y;
|
||||
};
|
||||
|
||||
/**
|
||||
* Combined 2D vertex and 2D texture coordinates.
|
||||
*/
|
||||
struct posTex2d {
|
||||
struct vec2 pos;
|
||||
struct vec2 uv0;
|
||||
};
|
||||
|
||||
//****************************************************************************/
|
||||
|
||||
/**
|
||||
* Current quad rotation angle (in degrees, updated per frame).
|
||||
*/
|
||||
static float rotDeg = 0.0f;
|
||||
|
||||
/**
|
||||
* Emscripten (single) GL context.
|
||||
*/
|
||||
static EMSCRIPTEN_WEBGL_CONTEXT_HANDLE glCtx = 0;
|
||||
|
||||
/**
|
||||
* Emscripten resize handler.
|
||||
*/
|
||||
static EM_BOOL resize(int type, const EmscriptenUiEvent* e, void* data) {
|
||||
double surfaceW;
|
||||
double surfaceH;
|
||||
if (emscripten_get_element_css_size ("#canvas", &surfaceW, &surfaceH) == EMSCRIPTEN_RESULT_SUCCESS) {
|
||||
emscripten_set_canvas_element_size("#canvas", surfaceW, surfaceH);
|
||||
if (glCtx) {
|
||||
glViewport(0, 0, (int) surfaceW, (int) surfaceH);
|
||||
}
|
||||
}
|
||||
(void) type;
|
||||
(void) data;
|
||||
(void) e;
|
||||
return EM_FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Boilerplate to create a WebGL context.
|
||||
*/
|
||||
static EM_BOOL initContext() {
|
||||
// Default attributes
|
||||
EmscriptenWebGLContextAttributes attr;
|
||||
emscripten_webgl_init_context_attributes(&attr);
|
||||
if ((glCtx = emscripten_webgl_create_context("#canvas", &attr))) {
|
||||
// Bind the context and fire a resize to get the initial size
|
||||
emscripten_webgl_make_context_current(glCtx);
|
||||
emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, EM_FALSE, resize);
|
||||
resize(0, NULL, NULL);
|
||||
return EM_TRUE;
|
||||
}
|
||||
return EM_FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called once per frame (clears the screen and draws the rotating quad).
|
||||
*/
|
||||
static void tick() {
|
||||
glClearColor(1.0f, 0.0f, 1.0f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
if (uRotId >= 0) {
|
||||
glUniform1f(uRotId, rotDeg);
|
||||
rotDeg += 0.1f;
|
||||
if (rotDeg >= 360.0f) {
|
||||
rotDeg -= 360.0f;
|
||||
}
|
||||
}
|
||||
|
||||
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
|
||||
glFlush();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the GL context, shaders and quad data, decompresses the Zstd data
|
||||
* and 'uploads' the resulting texture.
|
||||
*
|
||||
* As a (naive) comparison, removing Zstd and building with "-Os -g0 s WASM=1
|
||||
* -lGL emscripten.c" results in a 19kB WebAssembly file; re-adding Zstd
|
||||
* increases the Wasm by 25kB.
|
||||
*/
|
||||
int main() {
|
||||
if (initContext()) {
|
||||
// Compile shaders and set the initial GL state
|
||||
if ((progId = glCreateProgram())) {
|
||||
vertId = compileShader(GL_VERTEX_SHADER, vertShader2D);
|
||||
fragId = compileShader(GL_FRAGMENT_SHADER, fragShader2D);
|
||||
|
||||
glBindAttribLocation(progId, GL_VERT_POSXY_ID, "aPos");
|
||||
glBindAttribLocation(progId, GL_VERT_TXUV0_ID, "aUV0");
|
||||
|
||||
glAttachShader(progId, vertId);
|
||||
glAttachShader(progId, fragId);
|
||||
glLinkProgram (progId);
|
||||
glUseProgram (progId);
|
||||
uRotId = glGetUniformLocation(progId, "uRot");
|
||||
uTx0Id = glGetUniformLocation(progId, "uTx0");
|
||||
if (uTx0Id >= 0) {
|
||||
glUniform1i(uTx0Id, 0);
|
||||
}
|
||||
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
glDisable(GL_DITHER);
|
||||
|
||||
glCullFace(GL_BACK);
|
||||
glEnable(GL_CULL_FACE);
|
||||
}
|
||||
|
||||
GLuint vertsBuf = 0;
|
||||
GLuint indexBuf = 0;
|
||||
GLuint txName = 0;
|
||||
// Create the textured quad (vert positions then UVs)
|
||||
struct posTex2d verts2d[] = {
|
||||
{{-0.85f, -0.85f}, {0.0f, 0.0f}}, // BL
|
||||
{{ 0.85f, -0.85f}, {1.0f, 0.0f}}, // BR
|
||||
{{-0.85f, 0.85f}, {0.0f, 1.0f}}, // TL
|
||||
{{ 0.85f, 0.85f}, {1.0f, 1.0f}}, // TR
|
||||
};
|
||||
uint16_t index2d[] = {
|
||||
0, 1, 2,
|
||||
2, 1, 3,
|
||||
};
|
||||
glGenBuffers(1, &vertsBuf);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vertsBuf);
|
||||
glBufferData(GL_ARRAY_BUFFER,
|
||||
sizeof(verts2d), verts2d, GL_STATIC_DRAW);
|
||||
glVertexAttribPointer(GL_VERT_POSXY_ID, 2,
|
||||
GL_FLOAT, GL_FALSE, sizeof(struct posTex2d), 0);
|
||||
glVertexAttribPointer(GL_VERT_TXUV0_ID, 2,
|
||||
GL_FLOAT, GL_FALSE, sizeof(struct posTex2d),
|
||||
(void*) offsetof(struct posTex2d, uv0));
|
||||
glGenBuffers(1, &indexBuf);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuf);
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER,
|
||||
sizeof(index2d), index2d, GL_STATIC_DRAW);
|
||||
glEnableVertexAttribArray(GL_VERT_POSXY_ID);
|
||||
glEnableVertexAttribArray(GL_VERT_TXUV0_ID);
|
||||
|
||||
// Decode the Zstd data and create the texture
|
||||
if (ZSTD_decompress(dstDxt1, DXT1_256x256, srcZstd, sizeof srcZstd) == DXT1_256x256) {
|
||||
glGenTextures(1, &txName);
|
||||
glBindTexture(GL_TEXTURE_2D, txName);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glCompressedTexImage2D(GL_TEXTURE_2D, 0,
|
||||
GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
|
||||
256, 256, 0, DXT1_256x256, dstDxt1);
|
||||
} else {
|
||||
printf("Failed to decode Zstd data\n");
|
||||
}
|
||||
emscripten_set_main_loop(tick, 0, EM_FALSE);
|
||||
emscripten_exit_with_live_runtime();
|
||||
}
|
||||
return EXIT_FAILURE;
|
||||
}
|
31
contrib/declib/examples/shell.html
Normal file
31
contrib/declib/examples/shell.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<title>Emscripten Shell</title>
|
||||
<style>
|
||||
body {background:#333; font-family:"Verdana","Helvetica Neue","Helvetica","Arial",sans-serif; margin:1em 0;}
|
||||
#canvas{position:absolute; top:0px; left:0px; border:none; margin:0; width: 100%; height: 100%; overflow: hidden; display: block;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id="canvas" oncontextmenu="event.preventDefault()"></canvas>
|
||||
<script>
|
||||
function trace(msg) {
|
||||
console.log(msg);
|
||||
}
|
||||
|
||||
var Module = {
|
||||
print: trace, printErr: trace, setStatus: trace, monitorRunDependencies: trace,
|
||||
canvas: (function() {
|
||||
return document.getElementById("canvas");
|
||||
})(),
|
||||
preRun: [], postRun: [],
|
||||
};
|
||||
</script>
|
||||
{{{ SCRIPT }}}
|
||||
</body>
|
||||
</html>
|
3408
contrib/declib/examples/simple.c
Normal file
3408
contrib/declib/examples/simple.c
Normal file
File diff suppressed because it is too large
Load Diff
68
contrib/declib/zstddeclib-in.c
Executable file
68
contrib/declib/zstddeclib-in.c
Executable file
@ -0,0 +1,68 @@
|
||||
/**
|
||||
* \file zstddeclib.c
|
||||
* Single-file Zstandard decompressor.
|
||||
*
|
||||
* Generate using:
|
||||
* \code
|
||||
* combine.sh -r ../../lib -r ../../lib/common -r ../../lib/decompress -o zstddeclib.c zstddeclib-in.c
|
||||
* \endcode
|
||||
*/
|
||||
/*
|
||||
* BSD License
|
||||
*
|
||||
* For Zstandard software
|
||||
*
|
||||
* Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name Facebook nor the names of its contributors may be used
|
||||
* to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/*
|
||||
* Settings to bake for the standalone decompressor.
|
||||
*
|
||||
* Note: It's important that none of these affects 'zstd.h' (only the
|
||||
* implementation files we're amalgamating).
|
||||
*/
|
||||
#define DEBUGLEVEL 0
|
||||
#define XXH_NAMESPACE ZSTD_
|
||||
#define XXH_PRIVATE_API
|
||||
#define XXH_INLINE_ALL
|
||||
#define ZSTD_LEGACY_SUPPORT 0
|
||||
#define ZSTD_LIB_COMPRESSION 0
|
||||
#define ZSTD_LIB_DEPRECATED 0
|
||||
#define ZSTD_NOBENCH
|
||||
#define ZSTD_STRIP_ERROR_STRINGS
|
||||
|
||||
#include "debug.c"
|
||||
#include "entropy_common.c"
|
||||
#include "error_private.c"
|
||||
#include "fse_decompress.c"
|
||||
#include "xxhash.c"
|
||||
#include "zstd_common.c"
|
||||
#include "huf_decompress.c"
|
||||
#include "zstd_ddict.c"
|
||||
#include "zstd_decompress.c"
|
||||
#include "zstd_decompress_block.c"
|
@ -127,9 +127,14 @@
|
||||
} \
|
||||
}
|
||||
|
||||
/* vectorization */
|
||||
/* vectorization
|
||||
* older GCC (pre gcc-4.3 picked as the cutoff) uses a different syntax */
|
||||
#if !defined(__clang__) && defined(__GNUC__)
|
||||
# define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize")))
|
||||
# if (__GNUC__ == 4 && __GNUC_MINOR__ > 3) || (__GNUC__ >= 5)
|
||||
# define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize")))
|
||||
# else
|
||||
# define DONT_VECTORIZE _Pragma("GCC optimize(\"no-tree-vectorize\")")
|
||||
# endif
|
||||
#else
|
||||
# define DONT_VECTORIZE
|
||||
#endif
|
||||
|
@ -52,7 +52,9 @@
|
||||
#define FSE_STATIC_ASSERT(c) DEBUG_STATIC_ASSERT(c) /* use only *after* variable declarations */
|
||||
|
||||
/* check and forward error code */
|
||||
#ifndef CHECK_F
|
||||
#define CHECK_F(f) { size_t const e = f; if (FSE_isError(e)) return e; }
|
||||
#endif
|
||||
|
||||
|
||||
/* **************************************************************
|
||||
|
@ -61,7 +61,9 @@
|
||||
* Error Management
|
||||
****************************************************************/
|
||||
#define HUF_isError ERR_isError
|
||||
#ifndef CHECK_F
|
||||
#define CHECK_F(f) { size_t const err_ = (f); if (HUF_isError(err_)) return err_; }
|
||||
#endif
|
||||
|
||||
|
||||
/* **************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user