From bd173c1c2e6ad957b4496151aaa3910d1c8ff0ca Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 28 Jan 2025 16:02:56 -0800
Subject: [PATCH] Updated testgputext to use shadercross
---
examples/testgputext.c | 27 +-
examples/testgputext/shaders/build-shaders.sh | 109 +-
examples/testgputext/shaders/dxbc50.h | 2 -
examples/testgputext/shaders/dxil60.h | 2 -
examples/testgputext/shaders/metal.h | 2 -
examples/testgputext/shaders/shader.frag | 13 -
examples/testgputext/shaders/shader.frag.dxil | Bin 0 -> 3856 bytes
.../testgputext/shaders/shader.frag.dxil.h | 325 ++++
examples/testgputext/shaders/shader.frag.hlsl | 17 +
.../testgputext/shaders/shader.frag.metal | 23 -
.../testgputext/shaders/shader.frag.metal.h | 40 -
examples/testgputext/shaders/shader.frag.msl | 23 +
.../testgputext/shaders/shader.frag.msl.h | 45 +
.../shaders/shader.frag.sm50.dxbc.h | 100 --
.../testgputext/shaders/shader.frag.sm50.hlsl | 32 -
.../shaders/shader.frag.sm60.dxil.h | 467 ------
.../testgputext/shaders/shader.frag.sm60.hlsl | 32 -
examples/testgputext/shaders/shader.frag.spv | Bin 0 -> 868 bytes
.../testgputext/shaders/shader.frag.spv.h | 120 +-
examples/testgputext/shaders/shader.vert | 19 -
examples/testgputext/shaders/shader.vert.dxil | Bin 0 -> 5236 bytes
.../testgputext/shaders/shader.vert.dxil.h | 440 ++++++
examples/testgputext/shaders/shader.vert.hlsl | 28 +
.../testgputext/shaders/shader.vert.metal | 34 -
.../testgputext/shaders/shader.vert.metal.h | 55 -
examples/testgputext/shaders/shader.vert.msl | 34 +
.../testgputext/shaders/shader.vert.msl.h | 69 +
.../shaders/shader.vert.sm50.dxbc.h | 1320 -----------------
.../testgputext/shaders/shader.vert.sm50.hlsl | 47 -
.../shaders/shader.vert.sm60.dxil.h | 723 ---------
.../testgputext/shaders/shader.vert.sm60.hlsl | 47 -
examples/testgputext/shaders/shader.vert.spv | Bin 0 -> 1312 bytes
.../testgputext/shaders/shader.vert.spv.h | 212 +--
examples/testgputext/shaders/spir-v.h | 2 -
34 files changed, 1192 insertions(+), 3217 deletions(-)
delete mode 100644 examples/testgputext/shaders/dxbc50.h
delete mode 100644 examples/testgputext/shaders/dxil60.h
delete mode 100644 examples/testgputext/shaders/metal.h
delete mode 100644 examples/testgputext/shaders/shader.frag
create mode 100644 examples/testgputext/shaders/shader.frag.dxil
create mode 100644 examples/testgputext/shaders/shader.frag.dxil.h
create mode 100644 examples/testgputext/shaders/shader.frag.hlsl
delete mode 100644 examples/testgputext/shaders/shader.frag.metal
delete mode 100644 examples/testgputext/shaders/shader.frag.metal.h
create mode 100644 examples/testgputext/shaders/shader.frag.msl
create mode 100644 examples/testgputext/shaders/shader.frag.msl.h
delete mode 100644 examples/testgputext/shaders/shader.frag.sm50.dxbc.h
delete mode 100644 examples/testgputext/shaders/shader.frag.sm50.hlsl
delete mode 100644 examples/testgputext/shaders/shader.frag.sm60.dxil.h
delete mode 100644 examples/testgputext/shaders/shader.frag.sm60.hlsl
create mode 100644 examples/testgputext/shaders/shader.frag.spv
delete mode 100644 examples/testgputext/shaders/shader.vert
create mode 100644 examples/testgputext/shaders/shader.vert.dxil
create mode 100644 examples/testgputext/shaders/shader.vert.dxil.h
create mode 100644 examples/testgputext/shaders/shader.vert.hlsl
delete mode 100644 examples/testgputext/shaders/shader.vert.metal
delete mode 100644 examples/testgputext/shaders/shader.vert.metal.h
create mode 100644 examples/testgputext/shaders/shader.vert.msl
create mode 100644 examples/testgputext/shaders/shader.vert.msl.h
delete mode 100644 examples/testgputext/shaders/shader.vert.sm50.dxbc.h
delete mode 100644 examples/testgputext/shaders/shader.vert.sm50.hlsl
delete mode 100644 examples/testgputext/shaders/shader.vert.sm60.dxil.h
delete mode 100644 examples/testgputext/shaders/shader.vert.sm60.hlsl
create mode 100644 examples/testgputext/shaders/shader.vert.spv
delete mode 100644 examples/testgputext/shaders/spir-v.h
diff --git a/examples/testgputext.c b/examples/testgputext.c
index dfa90926..3e5a2b9a 100644
--- a/examples/testgputext.c
+++ b/examples/testgputext.c
@@ -2,16 +2,18 @@
#include <SDL3/SDL_main.h>
#include <SDL3_ttf/SDL_ttf.h>
-#include "testgputext/shaders/spir-v.h"
-#include "testgputext/shaders/dxbc50.h"
-#include "testgputext/shaders/dxil60.h"
-#include "testgputext/shaders/metal.h"
+#include "testgputext/shaders/shader.vert.spv.h"
+#include "testgputext/shaders/shader.frag.spv.h"
+#include "testgputext/shaders/shader.vert.dxil.h"
+#include "testgputext/shaders/shader.frag.dxil.h"
+#include "testgputext/shaders/shader.vert.msl.h"
+#include "testgputext/shaders/shader.frag.msl.h"
#define SDL_MATH_3D_IMPLEMENTATION
#include "testgputext/SDL_math3d.h"
#define MAX_VERTEX_COUNT 4000
#define MAX_INDEX_COUNT 6000
-#define SUPPORTED_SHADER_FORMATS (SDL_GPU_SHADERFORMAT_SPIRV | SDL_GPU_SHADERFORMAT_DXBC | SDL_GPU_SHADERFORMAT_DXIL | SDL_GPU_SHADERFORMAT_MSL)
+#define SUPPORTED_SHADER_FORMATS (SDL_GPU_SHADERFORMAT_SPIRV | SDL_GPU_SHADERFORMAT_DXIL | SDL_GPU_SHADERFORMAT_MSL)
typedef SDL_FPoint Vec2;
@@ -79,20 +81,15 @@ SDL_GPUShader *load_shader(
createinfo.props = 0;
SDL_GPUShaderFormat format = SDL_GetGPUShaderFormats(device);
- if (format & SDL_GPU_SHADERFORMAT_DXBC) {
- createinfo.format = SDL_GPU_SHADERFORMAT_DXBC;
- createinfo.code = (Uint8*)(is_vertex ? shader_vert_sm50_dxbc : shader_frag_sm50_dxbc);
- createinfo.code_size = is_vertex ? SDL_arraysize(shader_vert_sm50_dxbc) : SDL_arraysize(shader_frag_sm50_dxbc);
- createinfo.entrypoint = is_vertex ? "VSMain" : "PSMain";
- } else if (format & SDL_GPU_SHADERFORMAT_DXIL) {
+ if (format & SDL_GPU_SHADERFORMAT_DXIL) {
createinfo.format = SDL_GPU_SHADERFORMAT_DXIL;
- createinfo.code = is_vertex ? shader_vert_sm60_dxil : shader_frag_sm60_dxil;
- createinfo.code_size = is_vertex ? SDL_arraysize(shader_vert_sm60_dxil) : SDL_arraysize(shader_frag_sm60_dxil);
+ createinfo.code = is_vertex ? shader_vert_dxil : shader_frag_dxil;
+ createinfo.code_size = is_vertex ? shader_vert_dxil_len : shader_frag_dxil_len;
createinfo.entrypoint = is_vertex ? "VSMain" : "PSMain";
} else if (format & SDL_GPU_SHADERFORMAT_MSL) {
createinfo.format = SDL_GPU_SHADERFORMAT_MSL;
- createinfo.code = is_vertex ? shader_vert_metal : shader_frag_metal;
- createinfo.code_size = is_vertex ? shader_vert_metal_len : shader_frag_metal_len;
+ createinfo.code = is_vertex ? shader_vert_msl : shader_frag_msl;
+ createinfo.code_size = is_vertex ? shader_vert_msl_len : shader_frag_msl_len;
createinfo.entrypoint = "main0";
} else {
createinfo.format = SDL_GPU_SHADERFORMAT_SPIRV;
diff --git a/examples/testgputext/shaders/build-shaders.sh b/examples/testgputext/shaders/build-shaders.sh
index 9b019e59..451413d7 100755
--- a/examples/testgputext/shaders/build-shaders.sh
+++ b/examples/testgputext/shaders/build-shaders.sh
@@ -2,30 +2,6 @@
set -e
-# NOTE: fxc is tested on Linux with https://github.com/mozilla/fxc2
-
-which fxc &>/dev/null && HAVE_FXC=1 || HAVE_FXC=0
-which dxc &>/dev/null && HAVE_DXC=1 || HAVE_DXC=0
-which spirv-cross &>/dev/null && HAVE_SPIRV_CROSS=1 || HAVE_SPIRV_CROSS=0
-
-[ "$HAVE_FXC" != 0 ] || echo "fxc not in PATH; D3D11 shaders will not be rebuilt"
-[ "$HAVE_DXC" != 0 ] || echo "dxc not in PATH; D3D12 shaders will not be rebuilt"
-[ "$HAVE_SPIRV_CROSS" != 0 ] || echo "spirv-cross not in PATH; D3D11, D3D12, Metal shaders will not be rebuilt"
-
-USE_FXC=${USE_FXC:-$HAVE_FXC}
-USE_DXC=${USE_DXC:-$HAVE_DXC}
-USE_SPIRV_CROSS=${USE_SPIRV_CROSS:-$HAVE_SPIRV_CROSS}
-
-spirv_bundle="spir-v.h"
-dxbc50_bundle="dxbc50.h"
-dxil60_bundle="dxil60.h"
-metal_bundle="metal.h"
-
-rm -f "$spirv_bundle"
-[ "$USE_SPIRV_CROSS" != 0 ] && rm -f "$metal_bundle"
-[ "$USE_SPIRV_CROSS" != 0 ] && [ "$USE_FXC" != 0 ] && rm -f "$dxbc50_bundle"
-[ "$USE_SPIRV_CROSS" != 0 ] && [ "$USE_DXC" != 0 ] && rm -f "$dxil60_bundle"
-
make-header() {
xxd -i "$1" | sed \
-e 's/^unsigned /const unsigned /g' \
@@ -33,74 +9,25 @@ make-header() {
> "$1.h"
}
-compile-hlsl-dxbc() {
- local src="$1"
- local profile="$2"
- local output_basename="$3"
- local var_name="$(echo "$output_basename" | sed -e 's/\./_/g')"
-
- fxc "$src" /E main /T $2 /Fh "$output_basename.tmp.h" || exit $?
- sed \
- -e "s/g_main/$var_name/;s/\r//g" \
- -e 's,^const,static const,' \
- -e 's,const unsigned,const signed,' \
- < "$output_basename.tmp.h" \
- > "$output_basename.h"
- rm -f "$output_basename.tmp.h"
-}
-
-compile-hlsl-dxil() {
- local src="$1"
- local profile="$2"
- local output_basename="$3"
- local var_name="$(echo "$output_basename" | sed -e 's/\./_/g')"
-
- dxc "$src" -E main -T $2 -Fh "$output_basename.tmp.h" -O3 || exit $?
- sed \
- -e "s/g_main/$var_name/;s/\r//g" \
- -e 's,^const,static const,' \
- < "$output_basename.tmp.h" \
- > "$output_basename.h"
- rm -f "$output_basename.tmp.h"
-}
-
-for i in *.vert *.frag; do
- spv="$i.spv"
- metal="$i.metal"
- hlsl50="$i.sm50.hlsl"
- dxbc50="$i.sm50.dxbc"
- hlsl60="$i.sm60.hlsl"
- dxil60="$i.sm60.dxil"
-
- glslangValidator -g0 -Os "$i" -V -o "$spv" --quiet
-
- make-header "$spv"
- echo "#include \"$spv.h\"" >> "$spirv_bundle"
-
- if [ "$USE_SPIRV_CROSS" = "0" ]; then
- continue
- fi
-
- spirv-cross "$spv" --hlsl --shader-model 50 --hlsl-enable-compat --output "$hlsl50"
- spirv-cross "$spv" --hlsl --shader-model 60 --hlsl-enable-compat --output "$hlsl60"
-
- if [ "${i##*.}" == "frag" ]; then
- hlsl_stage="ps"
- else
- hlsl_stage="vs"
- fi
-
- if [ "$USE_FXC" != "0" ]; then
- compile-hlsl-dxbc "$hlsl50" ${hlsl_stage}_5_0 "$dxbc50"
- echo "#include \"$dxbc50.h\"" >> "$dxbc50_bundle"
+# Requires shadercross CLI installed from SDL_shadercross
+for filename in *.vert.hlsl; do
+ if [ -f "$filename" ]; then
+ shadercross "$filename" -o "${filename/.hlsl/.spv}"
+ make-header "${filename/.hlsl/.spv}"
+ shadercross "$filename" -o "${filename/.hlsl/.msl}"
+ make-header "${filename/.hlsl/.msl}"
+ shadercross "$filename" -o "${filename/.hlsl/.dxil}"
+ make-header "${filename/.hlsl/.dxil}"
fi
+done
- if [ "$USE_DXC" != "0" ]; then
- compile-hlsl-dxil "$hlsl60" ${hlsl_stage}_6_0 "$dxil60"
- echo "#include \"$dxil60.h\"" >> "$dxil60_bundle"
+for filename in *.frag.hlsl; do
+ if [ -f "$filename" ]; then
+ shadercross "$filename" -o "${filename/.hlsl/.spv}"
+ make-header "${filename/.hlsl/.spv}"
+ shadercross "$filename" -o "${filename/.hlsl/.msl}"
+ make-header "${filename/.hlsl/.msl}"
+ shadercross "$filename" -o "${filename/.hlsl/.dxil}"
+ make-header "${filename/.hlsl/.dxil}"
fi
-
- spirv-cross "$spv" --msl --output "$metal"
- make-header "$metal"
- echo "#include \"$metal.h\"" >> "$metal_bundle"
done
diff --git a/examples/testgputext/shaders/dxbc50.h b/examples/testgputext/shaders/dxbc50.h
deleted file mode 100644
index 81e460ba..00000000
--- a/examples/testgputext/shaders/dxbc50.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "shader.vert.sm50.dxbc.h"
-#include "shader.frag.sm50.dxbc.h"
diff --git a/examples/testgputext/shaders/dxil60.h b/examples/testgputext/shaders/dxil60.h
deleted file mode 100644
index 0327232d..00000000
--- a/examples/testgputext/shaders/dxil60.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "shader.vert.sm60.dxil.h"
-#include "shader.frag.sm60.dxil.h"
diff --git a/examples/testgputext/shaders/metal.h b/examples/testgputext/shaders/metal.h
deleted file mode 100644
index 894722cc..00000000
--- a/examples/testgputext/shaders/metal.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "shader.vert.metal.h"
-#include "shader.frag.metal.h"
diff --git a/examples/testgputext/shaders/shader.frag b/examples/testgputext/shaders/shader.frag
deleted file mode 100644
index 291b5de0..00000000
--- a/examples/testgputext/shaders/shader.frag
+++ /dev/null
@@ -1,13 +0,0 @@
-#version 450
-
-layout (location = 0) in vec4 vcolour;
-layout (location = 1) in vec2 tex_coord;
-
-layout (location = 0) out vec4 frag_colour;
-
-layout (set = 2, binding = 0) uniform sampler2D tex;
-
-
-void main() {
- frag_colour = vcolour * texture(tex, tex_coord);
-}
diff --git a/examples/testgputext/shaders/shader.frag.dxil b/examples/testgputext/shaders/shader.frag.dxil
new file mode 100644
index 0000000000000000000000000000000000000000..02c948d37cd93169a8f1796fd57351ee61c07fb6
GIT binary patch
literal 3856
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
literal 0
HcmV?d00001
diff --git a/examples/testgputext/shaders/shader.frag.dxil.h b/examples/testgputext/shaders/shader.frag.dxil.h
new file mode 100644
index 00000000..f10683cf
--- /dev/null
+++ b/examples/testgputext/shaders/shader.frag.dxil.h
@@ -0,0 +1,325 @@
+static const unsigned char shader_frag_dxil[] = {
+ 0x44, 0x58, 0x42, 0x43, 0x0a, 0xc4, 0x73, 0x5d, 0x7a, 0xca, 0x68, 0x83,
+ 0xc6, 0xdc, 0xfc, 0x1f, 0x4c, 0xfc, 0x83, 0xee, 0x01, 0x00, 0x00, 0x00,
+ 0x10, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
+ 0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00,
+ 0xd8, 0x01, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x44, 0x08, 0x00, 0x00,
+ 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x54, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00,
+ 0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00,
+ 0x50, 0x53, 0x56, 0x30, 0xec, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
+ 0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x6d,
+ 0x61, 0x69, 0x6e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
+ 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00,
+ 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x48, 0x06, 0x00, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00,
+ 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00,
+ 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
+ 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
+ 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
+ 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
+ 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
+ 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
+ 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
+ 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
+ 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
+ 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
+ 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
+ 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
+ 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
+ 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
+ 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f,
+ 0xb0, 0x87, 0x90, 0xfc, 0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46,
+ 0xc5, 0x18, 0x63, 0x10, 0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21,
+ 0xf9, 0x21, 0xd0, 0x0c, 0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b,
+ 0x63, 0x0c, 0x42, 0xc8, 0xa0, 0x36, 0x47, 0x10, 0x14, 0x83, 0x91, 0x42,
+ 0xc8, 0x23, 0x38, 0x10, 0x30, 0x8c, 0x40, 0x0c, 0x33, 0xb5, 0xc1, 0x38,
+ 0xb0, 0x43, 0x38, 0xcc, 0xc3, 0x3c, 0xb8, 0x01, 0x2d, 0x94, 0x03, 0x3e,
+ 0xd0, 0x43, 0x3d, 0xc8, 0x43, 0x39, 0xc8, 0x01, 0x29, 0xf0, 0x81, 0x3d,
+ 0x94, 0xc3, 0x38, 0xd0, 0xc3, 0x3b, 0xc8, 0x03, 0x1f, 0x98, 0x03, 0x3b,
+ 0xbc, 0x43, 0x38, 0xd0, 0x03, 0x1b, 0x80, 0x01, 0x1d, 0xf8, 0x01, 0x18,
+ 0xf8, 0x81, 0x1e, 0xe8, 0x41, 0x3b, 0xa4, 0x03, 0x3c, 0xcc, 0xc3, 0x2f,
+ 0xd0, 0x43, 0x3e, 0xc0, 0x43, 0x39, 0xa0, 0x80, 0xcc, 0x24, 0x06, 0xe3,
+ 0xc0, 0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8,
+ 0x40, 0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6,
+ 0x50, 0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec,
+ 0xf0, 0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60,
+ 0xe0, 0x07, 0x48, 0x98, 0x94, 0xea, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4,
+ 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0xd0,
+ 0x4d, 0x04, 0x02, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
+ 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
+ 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
+ 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
+ 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
+ 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
+ 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
+ 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
+ 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
+ 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
+ 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
+ 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
+ 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+ 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
+ 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50, 0x12,
+ 0x65, 0x50, 0x1e, 0x85, 0x50, 0x2c, 0x54, 0x4a, 0x62, 0x04, 0xa0, 0x08,
+ 0x0a, 0xa1, 0x40, 0xc8, 0xce, 0x00, 0x10, 0x9e, 0x01, 0xa0, 0x3c, 0x16,
+ 0x62, 0x10, 0x81, 0x40, 0x20, 0xcf, 0x03, 0x00, 0x79, 0x18, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0xc4,
+ 0x8f, 0x0c, 0x6f, 0x0c, 0x05, 0x4e, 0x2e, 0xcd, 0x2e, 0x8c, 0xae, 0x2c,
+ 0x05, 0x24, 0xc6, 0x05, 0xc7, 0x05, 0xc6, 0x25, 0x06, 0x04, 0x25, 0x6c,
+ 0x6c, 0xc6, 0x26, 0xec, 0x26, 0xe7, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10,
+ 0x88, 0x62, 0x82, 0x40, 0x18, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04,
+ 0x05, 0xb8, 0xb9, 0x09, 0x02, 0x71, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20,
+ 0x58, 0x13, 0x07, 0xba, 0x32, 0xbc, 0x09, 0x02, 0x81, 0x4c, 0x10, 0x88,
+ 0x64, 0x83, 0x40, 0x34, 0x1b, 0x12, 0x42, 0x59, 0x18, 0x62, 0x60, 0x08,
+ 0x67, 0x43, 0xf0, 0x4c, 0x10, 0x30, 0x8a, 0xc4, 0x5c, 0x58, 0x1b, 0xdc,
+ 0x06, 0x84, 0x88, 0x24, 0x86, 0x18, 0x08, 0x60, 0x43, 0x30, 0x6d, 0x20,
+ 0x20, 0x00, 0xa0, 0x26, 0x08, 0x02, 0xb0, 0x01, 0xd8, 0x30, 0x10, 0xd7,
+ 0xb5, 0x21, 0xc0, 0x36, 0x0c, 0x83, 0x95, 0x4d, 0x10, 0xb2, 0x6a, 0x43,
+ 0xb0, 0x91, 0x68, 0x0b, 0x4b, 0x73, 0x23, 0x42, 0x55, 0x84, 0x35, 0xf4,
+ 0xf4, 0x24, 0x45, 0x34, 0x41, 0x28, 0x9c, 0x09, 0x42, 0xf1, 0x6c, 0x08,
+ 0x88, 0x09, 0x42, 0x01, 0x4d, 0x10, 0x8a, 0x68, 0x82, 0x40, 0x28, 0x13,
+ 0x04, 0x62, 0xd9, 0x20, 0x90, 0x41, 0x19, 0x6c, 0x58, 0x08, 0xef, 0x03,
+ 0x83, 0x30, 0x10, 0x83, 0x61, 0x0c, 0x08, 0x30, 0x30, 0x83, 0x0d, 0xc1,
+ 0xb0, 0x41, 0x20, 0x03, 0x32, 0xd8, 0xb0, 0x0c, 0xde, 0x07, 0x06, 0x68,
+ 0x20, 0x06, 0x83, 0x18, 0x0c, 0x60, 0x90, 0x06, 0x1b, 0x84, 0x33, 0x50,
+ 0x03, 0x26, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x13,
+ 0x84, 0x42, 0xda, 0xb0, 0x10, 0x6c, 0xf0, 0xb5, 0x41, 0x18, 0x80, 0xc1,
+ 0x30, 0x06, 0x04, 0x18, 0x98, 0xc1, 0x86, 0xc0, 0x0d, 0x36, 0x0c, 0x6b,
+ 0xf0, 0x06, 0xc0, 0x86, 0xc2, 0xea, 0xe0, 0xa0, 0x02, 0x68, 0x98, 0xb1,
+ 0xbd, 0x85, 0xd1, 0xcd, 0x4d, 0x10, 0x08, 0x86, 0x45, 0x9a, 0xdb, 0x1c,
+ 0xdd, 0xdc, 0x04, 0x81, 0x68, 0x68, 0xcc, 0xa5, 0x9d, 0x7d, 0xb1, 0x91,
+ 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x9a, 0xa3, 0x23, 0x42, 0x57, 0x86, 0xf7,
+ 0xe5, 0xf6, 0x26, 0xd7, 0xb6, 0x41, 0x91, 0x83, 0x39, 0xa0, 0x83, 0x3a,
+ 0xb0, 0x03, 0xe4, 0x0e, 0xe6, 0x00, 0x0f, 0x86, 0x2a, 0x6c, 0x6c, 0x76,
+ 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x82, 0xa0, 0x0a, 0x19,
+ 0x9e, 0x8b, 0x5d, 0x99, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0x94, 0x80, 0x68,
+ 0x42, 0x86, 0xe7, 0x62, 0x17, 0xc6, 0x66, 0x57, 0x26, 0x37, 0x25, 0x28,
+ 0xea, 0x90, 0xe1, 0xb9, 0xcc, 0xa1, 0x85, 0x91, 0x95, 0xc9, 0x35, 0xbd,
+ 0x91, 0x95, 0xb1, 0x4d, 0x09, 0x90, 0x32, 0x64, 0x78, 0x2e, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x53, 0x02, 0xaa, 0x12, 0x19,
+ 0x9e, 0x0b, 0x5d, 0x1e, 0x5c, 0x59, 0x90, 0x9b, 0xdb, 0x1b, 0x5d, 0x18,
+ 0x5d, 0xda, 0x9b, 0xdb, 0xdc, 0x94, 0x20, 0xab, 0x43, 0x86, 0xe7, 0x62,
+ 0x97, 0x56, 0x76, 0x97, 0x44, 0x36, 0x45, 0x17, 0x46, 0x57, 0x36, 0x25,
+ 0xd8, 0xea, 0x90, 0xe1, 0xb9, 0x94, 0xb9, 0xd1, 0xc9, 0xe5, 0x41, 0xbd,
+ 0xa5, 0xb9, 0xd1, 0xcd, 0x4d, 0x09, 0xe0, 0xa0, 0x0b, 0x19, 0x9e, 0xcb,
+ 0xd8, 0x5b, 0x9d, 0x1b, 0x5d, 0x99, 0xdc, 0xdc, 0x94, 0x00, 0x0f, 0x00,
+ 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
+ 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
+ 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
+ 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
+ 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
+ 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
+ 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
+ 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
+ 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
+ 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
+ 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
+ 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
+ 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
+ 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
+ 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
+ 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
+ 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
+ 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
+ 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
+ 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
+ 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
+ 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
+ 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
+ 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
+ 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
+ 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
+ 0x71, 0x20, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x46, 0x20, 0x0d, 0x97,
+ 0xef, 0x3c, 0xbe, 0x10, 0x11, 0xc0, 0x44, 0x84, 0x40, 0x33, 0x2c, 0x84,
+ 0x05, 0x4c, 0xc3, 0xe5, 0x3b, 0x8f, 0xbf, 0x38, 0xc0, 0x20, 0x36, 0x0f,
+ 0x35, 0xf9, 0xc5, 0x6d, 0xdb, 0x00, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x12,
+ 0xc0, 0x3c, 0x0b, 0xe1, 0x17, 0xb7, 0x6d, 0x02, 0xd5, 0x70, 0xf9, 0xce,
+ 0xe3, 0x4b, 0x93, 0x13, 0x11, 0x28, 0x35, 0x3d, 0xd4, 0xe4, 0x17, 0xb7,
+ 0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb0, 0x99, 0x43, 0x90, 0xb8, 0xcd, 0x60, 0x4f, 0x96, 0x7f, 0xd2, 0x95,
+ 0x8c, 0x20, 0xe5, 0x9e, 0x44, 0x58, 0x49, 0x4c, 0xc4, 0x06, 0x00, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xac, 0x06, 0x00, 0x00,
+ 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00,
+ 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
+ 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
+ 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
+ 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
+ 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
+ 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
+ 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
+ 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
+ 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
+ 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
+ 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
+ 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
+ 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
+ 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
+ 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f,
+ 0xb0, 0x87, 0x90, 0xfc, 0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46,
+ 0xc5, 0x18, 0x63, 0x10, 0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21,
+ 0xf9, 0x21, 0xd0, 0x0c, 0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b,
+ 0x63, 0x0c, 0x42, 0xc8, 0xa0, 0x36, 0x47, 0x10, 0x14, 0x83, 0x91, 0x42,
+ 0xc8, 0x23, 0x38, 0x10, 0x30, 0x8c, 0x40, 0x0c, 0x33, 0xb5, 0xc1, 0x38,
+ 0xb0, 0x43, 0x38, 0xcc, 0xc3, 0x3c, 0xb8, 0x01, 0x2d, 0x94, 0x03, 0x3e,
+ 0xd0, 0x43, 0x3d, 0xc8, 0x43, 0x39, 0xc8, 0x01, 0x29, 0xf0, 0x81, 0x3d,
+ 0x94, 0xc3, 0x38, 0xd0, 0xc3, 0x3b, 0xc8, 0x03, 0x1f, 0x98, 0x03, 0x3b,
+ 0xbc, 0x43, 0x38, 0xd0, 0x03, 0x1b, 0x80, 0x01, 0x1d, 0xf8, 0x01, 0x18,
+ 0xf8, 0x81, 0x1e, 0xe8, 0x4
(Patch may be truncated, please check the link at the top of this post.)