[core] upgrade mapbox-gl-js pin to the most recent version

This commit is contained in:
Konstantin Käfer
2019-05-03 11:41:49 +02:00
parent 20a807fdf3
commit a53c88159f
39 changed files with 709 additions and 672 deletions

View File

@@ -18,22 +18,22 @@
"npm-run-all": "^4.0.2"
},
"devDependencies": {
"@mapbox/flow-remove-types": "^1.3.0-await.upstream.2",
"@octokit/rest": "^16.0.0",
"@octokit/plugin-retry": "^2.2.0",
"aws-sdk": "^2.285.1",
"csscolorparser": "^1.0.2",
"ejs": "^2.4.1",
"esm": "^3.0.84",
"csscolorparser": "~1.0.2",
"ejs": "^2.5.7",
"esm": "~3.0.84",
"express": "^4.11.1",
"flow-remove-types": "^1.2.1",
"json-stringify-pretty-compact": "^1.0.4",
"json-stringify-pretty-compact": "^2.0.0",
"jsonwebtoken": "^8.3.0",
"lodash": "^4.16.4",
"mapbox-gl-styles": "2.0.2",
"pixelmatch": "^4.0.2",
"pngjs": "^3.0.0",
"pngjs": "^3.4.0",
"pretty-bytes": "^5.1.0",
"request": "^2.72.0",
"request": "^2.88.0",
"semver": "^5.5.0",
"tape": "^4.5.1",
"xcode": "^1.0.0"

View File

@@ -111,7 +111,7 @@ public final class Property {
// SYMBOL_Z_ORDER: Controls the order in which overlapping symbols in the same layer are rendered
/**
* If {@link SYMBOL_SORT_KEY} is set, sort based on that. Otherwise sort symbols by their position relative to the viewport.
* If {@link SYMBOL_SORT_KEY} is set, sort based on that. Otherwise sort symbols by their y-position relative to the viewport.
*/
public static final String SYMBOL_Z_ORDER_AUTO = "auto";
/**

View File

@@ -159,7 +159,7 @@ typedef NS_ENUM(NSUInteger, MGLSymbolPlacement) {
typedef NS_ENUM(NSUInteger, MGLSymbolZOrder) {
/**
If `MGLSymbolStyleLayer.symbolSortKey` is set, sort based on that.
Otherwise sort symbols by their position relative to the viewport.
Otherwise sort symbols by their y-position relative to the viewport.
*/
MGLSymbolZOrderAuto,
/**
@@ -1075,7 +1075,7 @@ MGL_EXPORT
* Constant `MGLSymbolZOrder` values
* Any of the following constant string values:
* `auto`: If `symbol-sort-key` is set, sort based on that. Otherwise sort
symbols by their position relative to the viewport.
symbols by their y-position relative to the viewport.
* `viewport-y`: Specify this z order if symbols’ appearance relies on lower
features overlapping higher features. For example, symbols with a pin-like
appearance would require this z order.
@@ -1500,6 +1500,9 @@ MGL_EXPORT
This property is measured in ems.
The default value of this property is an expression that evaluates to the float
`0`. Set this property to `nil` to reset it to the default value.
This property is only applied to the style if `textOffset` is set to `nil`.
Otherwise, it is ignored.

View File

@@ -71,6 +71,7 @@
"query-tests/regressions/mapbox-gl-js#6555": "skip - no querySourceFeatures in mbgl-node; needs issue",
"render-tests/background-color/transition": "https://github.com/mapbox/mapbox-gl-native/issues/10619",
"render-tests/canvas/default": "skip - js specific",
"render-tests/canvas/update": "skip - js specific",
"render-tests/collator/resolved-locale": "Some test platforms don't resolve 'en' locale",
"render-tests/collator/default": "Some test platforms don't resolve 'en' locale",
"render-tests/custom-layer-js/depth": "skip - js specific",
@@ -155,6 +156,8 @@
"render-tests/remove-feature-state/data-expression": "https://github.com/mapbox/mapbox-gl-native/issues/12413",
"render-tests/remove-feature-state/default": "https://github.com/mapbox/mapbox-gl-native/issues/12413",
"render-tests/remove-feature-state/vector-source": "https://github.com/mapbox/mapbox-gl-native/issues/12413",
"render-tests/regressions/mapbox-gl-js#8026": "skip - js specific",
"render-tests/fill-extrusion-geometry/linestring": "https://github.com/mapbox/mapbox-gl-native/pull/14240",
"query-tests/remove-feature-state/default": "https://github.com/mapbox/mapbox-gl-native/issues/12413",
"query-tests/fill-extrusion/base-in": "https://github.com/mapbox/mapbox-gl-native/issues/13139",
"query-tests/fill-extrusion/box-in": "https://github.com/mapbox/mapbox-gl-native/issues/13139",
@@ -164,6 +167,7 @@
"query-tests/fill-extrusion/sort-rotated": "https://github.com/mapbox/mapbox-gl-native/issues/13139",
"query-tests/fill-extrusion/sort": "https://github.com/mapbox/mapbox-gl-native/issues/13139",
"query-tests/fill-extrusion/top-in": "https://github.com/mapbox/mapbox-gl-native/issues/13139",
"query-tests/regressions/mapbox-gl-js#7883": "https://github.com/mapbox/mapbox-gl-native/issues/14585",
"expression-tests/number-format/currency": "https://github.com/mapbox/mapbox-gl-native/issues/13632",
"expression-tests/number-format/default": "https://github.com/mapbox/mapbox-gl-native/issues/13632",
"expression-tests/number-format/precision": "https://github.com/mapbox/mapbox-gl-native/issues/13632"

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env node
require('flow-remove-types/register');
require('@mapbox/flow-remove-types/register');
const path = require('path');
const outputPath = 'src/mbgl/programs';

View File

@@ -21,6 +21,7 @@ class CircleProgram : public Program<
uniforms::matrix,
uniforms::scale_with_map,
uniforms::extrude_scale,
uniforms::device_pixel_ratio,
uniforms::camera_to_center_distance,
uniforms::pitch_with_map>,
TypeList<>,

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<CircleProgram> {
static constexpr const char* name = "circle";
static constexpr const uint8_t hash[8] = { 0xf0, 0x3e, 0x18, 0xb7, 0x75, 0xb2, 0xde, 0xa9 };
static constexpr const uint8_t hash[8] = { 0x1d, 0x47, 0x35, 0xbb, 0x94, 0x3d, 0x93, 0xca };
static constexpr const auto vertexOffset = 2927;
static constexpr const auto fragmentOffset = 6093;
static constexpr const auto fragmentOffset = 6135;
};
constexpr const char* ShaderSource<CircleProgram>::name;
@@ -43,10 +43,13 @@ uniform mat4 u_matrix;
uniform bool u_scale_with_map;
uniform bool u_pitch_with_map;
uniform vec2 u_extrude_scale;
uniform lowp float u_device_pixel_ratio;
uniform highp float u_camera_to_center_distance;
attribute vec2 a_pos;
varying vec3 v_data;
#ifndef HAS_UNIFORM_u_color
uniform lowp float u_color_t;
@@ -111,8 +114,6 @@ uniform lowp float u_stroke_opacity;
#endif
varying vec3 v_data;
void main(void) {
#ifndef HAS_UNIFORM_u_color
@@ -196,7 +197,7 @@ void main(void) {
// This is a minimum blur distance that serves as a faux-antialiasing for
// the circle. since blur is a ratio of the circle's size and the intent is
// to keep the blur at roughly 1px, the two are inversely related.
lowp float antialiasblur = 1.0 / DEVICE_PIXEL_RATIO / (radius + stroke_width);
lowp float antialiasblur = 1.0 / u_device_pixel_ratio / (radius + stroke_width);
v_data = vec3(extrude.x, extrude.y, antialiasblur);
}
@@ -205,6 +206,8 @@ void main(void) {
// Uncompressed source of circle.fragment.glsl:
/*
varying vec3 v_data;
#ifndef HAS_UNIFORM_u_color
varying highp vec4 color;
@@ -255,8 +258,6 @@ uniform lowp float u_stroke_opacity;
#endif
varying vec3 v_data;
void main() {
#ifdef HAS_UNIFORM_u_color

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<ClippingMaskProgram> {
static constexpr const char* name = "clipping_mask";
static constexpr const uint8_t hash[8] = { 0x3e, 0x17, 0xc2, 0x3a, 0x1f, 0xf0, 0xa8, 0xa3 };
static constexpr const auto vertexOffset = 7848;
static constexpr const auto fragmentOffset = 7944;
static constexpr const auto vertexOffset = 7891;
static constexpr const auto fragmentOffset = 7987;
};
constexpr const char* ShaderSource<ClippingMaskProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<CollisionBoxProgram> {
static constexpr const char* name = "collision_box";
static constexpr const uint8_t hash[8] = { 0xcb, 0x6a, 0x9b, 0xd1, 0x1f, 0x31, 0xf8, 0x5b };
static constexpr const auto vertexOffset = 9956;
static constexpr const auto fragmentOffset = 10635;
static constexpr const auto vertexOffset = 10000;
static constexpr const auto fragmentOffset = 10679;
};
constexpr const char* ShaderSource<CollisionBoxProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<CollisionCircleProgram> {
static constexpr const char* name = "collision_circle";
static constexpr const uint8_t hash[8] = { 0x99, 0x2e, 0xad, 0x8c, 0xd3, 0x88, 0xae, 0x82 };
static constexpr const auto vertexOffset = 10858;
static constexpr const auto fragmentOffset = 11774;
static constexpr const auto vertexOffset = 10902;
static constexpr const auto fragmentOffset = 11818;
};
constexpr const char* ShaderSource<CollisionCircleProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<DebugProgram> {
static constexpr const char* name = "debug";
static constexpr const uint8_t hash[8] = { 0xa8, 0x7d, 0x87, 0x6e, 0x36, 0xa8, 0x81, 0xe3 };
static constexpr const auto vertexOffset = 12450;
static constexpr const auto fragmentOffset = 12546;
static constexpr const auto vertexOffset = 12494;
static constexpr const auto fragmentOffset = 12590;
};
constexpr const char* ShaderSource<DebugProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<FillProgram> {
static constexpr const char* name = "fill";
static constexpr const uint8_t hash[8] = { 0x87, 0xea, 0x65, 0x7f, 0x0c, 0x9b, 0x97, 0x5d };
static constexpr const auto vertexOffset = 12610;
static constexpr const auto fragmentOffset = 13254;
static constexpr const auto vertexOffset = 12654;
static constexpr const auto fragmentOffset = 13298;
};
constexpr const char* ShaderSource<FillProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<FillExtrusionProgram> {
static constexpr const char* name = "fill_extrusion";
static constexpr const uint8_t hash[8] = { 0x9d, 0x76, 0x7f, 0xaa, 0x86, 0x57, 0x56, 0x96 };
static constexpr const auto vertexOffset = 21238;
static constexpr const auto fragmentOffset = 23169;
static constexpr const auto vertexOffset = 21283;
static constexpr const auto fragmentOffset = 23214;
};
constexpr const char* ShaderSource<FillExtrusionProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<FillExtrusionPatternProgram> {
static constexpr const char* name = "fill_extrusion_pattern";
static constexpr const uint8_t hash[8] = { 0x5a, 0x8f, 0x1a, 0xbf, 0x43, 0x62, 0xf0, 0x86 };
static constexpr const auto vertexOffset = 23285;
static constexpr const auto fragmentOffset = 26256;
static constexpr const auto vertexOffset = 23330;
static constexpr const auto fragmentOffset = 26301;
};
constexpr const char* ShaderSource<FillExtrusionPatternProgram>::name;

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<FillOutlineProgram> {
static constexpr const char* name = "fill_outline";
static constexpr const uint8_t hash[8] = { 0x56, 0x65, 0x69, 0x4b, 0x70, 0x2d, 0x3d, 0xc4 };
static constexpr const auto vertexOffset = 13678;
static constexpr const auto fragmentOffset = 14503;
static constexpr const uint8_t hash[8] = { 0x51, 0x25, 0x43, 0x9d, 0x41, 0x73, 0xe1, 0xbb };
static constexpr const auto vertexOffset = 13722;
static constexpr const auto fragmentOffset = 14547;
};
constexpr const char* ShaderSource<FillOutlineProgram>::name;
@@ -89,6 +89,8 @@ void main() {
// Uncompressed source of fill_outline.fragment.glsl:
/*
varying vec2 v_pos;
#ifndef HAS_UNIFORM_u_outline_color
varying highp vec4 outline_color;
@@ -104,8 +106,6 @@ uniform lowp float u_opacity;
#endif
varying vec2 v_pos;
void main() {
#ifdef HAS_UNIFORM_u_outline_color

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<FillOutlinePatternProgram> {
static constexpr const char* name = "fill_outline_pattern";
static constexpr const uint8_t hash[8] = { 0x56, 0x9c, 0x2f, 0x58, 0x6b, 0x31, 0xff, 0x84 };
static constexpr const auto vertexOffset = 15092;
static constexpr const auto fragmentOffset = 16952;
static constexpr const auto vertexOffset = 15137;
static constexpr const auto fragmentOffset = 16997;
};
constexpr const char* ShaderSource<FillOutlinePatternProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<FillPatternProgram> {
static constexpr const char* name = "fill_pattern";
static constexpr const uint8_t hash[8] = { 0x74, 0xa9, 0x97, 0x01, 0x96, 0xbd, 0x87, 0x36 };
static constexpr const auto vertexOffset = 18259;
static constexpr const auto fragmentOffset = 20038;
static constexpr const auto vertexOffset = 18304;
static constexpr const auto fragmentOffset = 20083;
};
constexpr const char* ShaderSource<FillPatternProgram>::name;

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<HeatmapProgram> {
static constexpr const char* name = "heatmap";
static constexpr const uint8_t hash[8] = { 0xab, 0x97, 0x81, 0x5c, 0xa2, 0x88, 0xaa, 0x7e };
static constexpr const auto vertexOffset = 7983;
static constexpr const auto fragmentOffset = 9030;
static constexpr const uint8_t hash[8] = { 0xe5, 0xa4, 0x9c, 0x31, 0x01, 0xe5, 0x4a, 0xe0 };
static constexpr const auto vertexOffset = 8026;
static constexpr const auto fragmentOffset = 9074;
};
constexpr const char* ShaderSource<HeatmapProgram>::name;
@@ -40,6 +40,16 @@ Context::createProgram<gl::Context>(const ProgramParameters& programParameters)
// Uncompressed source of heatmap.vertex.glsl:
/*
uniform mat4 u_matrix;
uniform float u_extrude_scale;
uniform float u_opacity;
uniform float u_intensity;
attribute vec2 a_pos;
varying vec2 v_extrude;
#ifndef HAS_UNIFORM_u_weight
uniform lowp float u_weight_t;
attribute highp vec2 a_weight;
@@ -57,15 +67,6 @@ uniform mediump float u_radius;
#endif
uniform mat4 u_matrix;
uniform float u_extrude_scale;
uniform float u_opacity;
uniform float u_intensity;
attribute vec2 a_pos;
varying vec2 v_extrude;
// Effective "0" in the kernel density texture to adjust the kernel size to;
// this empirically chosen number minimizes artifacts on overlapping kernels
// for typical heatmap cases (assuming clustered source)
@@ -124,6 +125,10 @@ void main(void) {
// Uncompressed source of heatmap.fragment.glsl:
/*
uniform highp float u_intensity;
varying vec2 v_extrude;
#ifndef HAS_UNIFORM_u_weight
varying highp float weight;
@@ -132,9 +137,6 @@ uniform highp float u_weight;
#endif
uniform highp float u_intensity;
varying vec2 v_extrude;
// Gaussian kernel coefficient: 1 / sqrt(2 * PI)
#define GAUSS_COEF 0.3989422804014327

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<HeatmapTextureProgram> {
static constexpr const char* name = "heatmap_texture";
static constexpr const uint8_t hash[8] = { 0x9f, 0xc7, 0x56, 0xb2, 0x9e, 0x8f, 0x15, 0xff };
static constexpr const auto vertexOffset = 9491;
static constexpr const auto fragmentOffset = 9671;
static constexpr const auto vertexOffset = 9535;
static constexpr const auto fragmentOffset = 9715;
};
constexpr const char* ShaderSource<HeatmapTextureProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<HillshadeProgram> {
static constexpr const char* name = "hillshade";
static constexpr const uint8_t hash[8] = { 0x8a, 0x11, 0x29, 0x18, 0x52, 0x7f, 0x3b, 0xbb };
static constexpr const auto vertexOffset = 29068;
static constexpr const auto fragmentOffset = 29239;
static constexpr const auto vertexOffset = 29113;
static constexpr const auto fragmentOffset = 29284;
};
constexpr const char* ShaderSource<HillshadeProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<HillshadePrepareProgram> {
static constexpr const char* name = "hillshade_prepare";
static constexpr const uint8_t hash[8] = { 0xe6, 0x01, 0xf2, 0xbb, 0xa0, 0x77, 0x1d, 0xeb };
static constexpr const auto vertexOffset = 27653;
static constexpr const auto fragmentOffset = 27946;
static constexpr const auto vertexOffset = 27698;
static constexpr const auto fragmentOffset = 27991;
};
constexpr const char* ShaderSource<HillshadePrepareProgram>::name;

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LineProgram> {
static constexpr const char* name = "line";
static constexpr const uint8_t hash[8] = { 0x44, 0x46, 0x9e, 0x59, 0x02, 0xbb, 0xaa, 0xae };
static constexpr const auto vertexOffset = 30313;
static constexpr const auto fragmentOffset = 33237;
static constexpr const uint8_t hash[8] = { 0x02, 0xe9, 0x14, 0x54, 0x14, 0xe4, 0xbc, 0x11 };
static constexpr const auto vertexOffset = 30358;
static constexpr const auto fragmentOffset = 33316;
};
constexpr const char* ShaderSource<LineProgram>::name;
@@ -39,12 +39,6 @@ Context::createProgram<gl::Context>(const ProgramParameters& programParameters)
// Uncompressed source of line.vertex.glsl:
/*
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0
// floor(127 / 2) == 63.0
// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
// stored in a byte (-128..127). we scale regular normals up to length 63, but
@@ -58,7 +52,8 @@ attribute vec4 a_data;
uniform mat4 u_matrix;
uniform mediump float u_ratio;
uniform vec2 u_gl_units_to_pixels;
uniform vec2 u_units_to_pixels;
uniform lowp float u_device_pixel_ratio;
varying vec2 v_normal;
varying vec2 v_width2;
@@ -161,6 +156,10 @@ void main() {
#endif
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
vec2 a_extrude = a_data.xy - 128.0;
float a_direction = mod(a_data.z, 4.0) - 1.0;
@@ -199,7 +198,7 @@ void main() {
// calculate how much the perspective view squishes or stretches the extrude
float extrude_length_without_perspective = length(dist);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
v_width2 = vec2(outset, inset);
@@ -209,6 +208,12 @@ void main() {
// Uncompressed source of line.fragment.glsl:
/*
uniform lowp float u_device_pixel_ratio;
varying vec2 v_width2;
varying vec2 v_normal;
varying float v_gamma_scale;
#ifndef HAS_UNIFORM_u_color
varying highp vec4 color;
@@ -231,10 +236,6 @@ uniform lowp float u_opacity;
#endif
varying vec2 v_width2;
varying vec2 v_normal;
varying float v_gamma_scale;
void main() {
#ifdef HAS_UNIFORM_u_color
@@ -258,7 +259,7 @@ void main() {
// Calculate the antialiasing fade factor. This is either when fading in
// the line in case of an offset line (v_width2.t) or when fading out
// (v_width2.s)
float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;
float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
gl_FragColor = color * (alpha * opacity);

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LineGradientProgram> {
static constexpr const char* name = "line_gradient";
static constexpr const uint8_t hash[8] = { 0xee, 0xdd, 0x10, 0x3d, 0x1a, 0x21, 0x26, 0x25 };
static constexpr const auto vertexOffset = 34063;
static constexpr const auto fragmentOffset = 36782;
static constexpr const uint8_t hash[8] = { 0x0f, 0xa3, 0xae, 0x1c, 0x38, 0xf2, 0x60, 0x54 };
static constexpr const auto vertexOffset = 34185;
static constexpr const auto fragmentOffset = 36938;
};
constexpr const char* ShaderSource<LineGradientProgram>::name;
@@ -43,10 +43,6 @@ Context::createProgram<gl::Context>(const ProgramParameters& programParameters)
// the attribute conveying progress along a line is scaled to [0, 2^15)
#define MAX_LINE_DISTANCE 32767.0
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0
// floor(127 / 2) == 63.0
// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
// stored in a byte (-128..127). we scale regular normals up to length 63, but
@@ -60,7 +56,8 @@ attribute vec4 a_data;
uniform mat4 u_matrix;
uniform mediump float u_ratio;
uniform vec2 u_gl_units_to_pixels;
uniform lowp float u_device_pixel_ratio;
uniform vec2 u_units_to_pixels;
varying vec2 v_normal;
varying vec2 v_width2;
@@ -147,6 +144,10 @@ void main() {
#endif
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
vec2 a_extrude = a_data.xy - 128.0;
float a_direction = mod(a_data.z, 4.0) - 1.0;
@@ -185,7 +186,7 @@ void main() {
// calculate how much the perspective view squishes or stretches the extrude
float extrude_length_without_perspective = length(dist);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
v_width2 = vec2(outset, inset);
@@ -195,6 +196,13 @@ void main() {
// Uncompressed source of line_gradient.fragment.glsl:
/*
uniform lowp float u_device_pixel_ratio;
uniform sampler2D u_image;
varying vec2 v_width2;
varying vec2 v_normal;
varying float v_gamma_scale;
varying highp float v_lineprogress;
#ifndef HAS_UNIFORM_u_blur
@@ -211,13 +219,6 @@ uniform lowp float u_opacity;
#endif
uniform sampler2D u_image;
varying vec2 v_width2;
varying vec2 v_normal;
varying float v_gamma_scale;
varying highp float v_lineprogress;
void main() {
#ifdef HAS_UNIFORM_u_blur
@@ -236,7 +237,7 @@ void main() {
// Calculate the antialiasing fade factor. This is either when fading in
// the line in case of an offset line (v_width2.t) or when fading out
// (v_width2.s)
float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;
float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
// For gradient lines, v_lineprogress is the ratio along the entire line,

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LinePatternProgram> {
static constexpr const char* name = "line_pattern";
static constexpr const uint8_t hash[8] = { 0x73, 0xa0, 0x59, 0x46, 0x57, 0xa5, 0x60, 0x25 };
static constexpr const auto vertexOffset = 37569;
static constexpr const auto fragmentOffset = 40890;
static constexpr const uint8_t hash[8] = { 0x14, 0x72, 0xee, 0xac, 0x1f, 0xc7, 0xf6, 0x82 };
static constexpr const auto vertexOffset = 37768;
static constexpr const auto fragmentOffset = 41123;
};
constexpr const char* ShaderSource<LinePatternProgram>::name;
@@ -51,16 +51,13 @@ Context::createProgram<gl::Context>(const ProgramParameters& programParameters)
// long distances for long segments. Use this value to unscale the distance.
#define LINE_DISTANCE_SCALE 2.0
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0
attribute vec4 a_pos_normal;
attribute vec4 a_data;
uniform mat4 u_matrix;
uniform vec2 u_gl_units_to_pixels;
uniform vec2 u_units_to_pixels;
uniform mediump float u_ratio;
uniform lowp float u_device_pixel_ratio;
varying vec2 v_normal;
varying vec2 v_width2;
@@ -179,6 +176,10 @@ void main() {
#endif
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
vec2 a_extrude = a_data.xy - 128.0;
float a_direction = mod(a_data.z, 4.0) - 1.0;
float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
@@ -216,7 +217,7 @@ void main() {
// calculate how much the perspective view squishes or stretches the extrude
float extrude_length_without_perspective = length(dist);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
v_linesofar = a_linesofar;
@@ -227,6 +228,7 @@ void main() {
// Uncompressed source of line_pattern.fragment.glsl:
/*
uniform lowp float u_device_pixel_ratio;
uniform vec2 u_texsize;
uniform float u_fade;
uniform mediump vec4 u_scale;
@@ -312,7 +314,7 @@ void main() {
// Calculate the antialiasing fade factor. This is either when fading in
// the line in case of an offset line (v_width2.t) or when fading out
// (v_width2.s)
float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;
float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
float x_a = mod(v_linesofar / pattern_size_a.x, 1.0);

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LineSDFProgram> {
static constexpr const char* name = "line_sdf";
static constexpr const uint8_t hash[8] = { 0x66, 0x20, 0x75, 0x4e, 0xbe, 0x02, 0x9e, 0x67 };
static constexpr const auto vertexOffset = 43203;
static constexpr const auto fragmentOffset = 46817;
static constexpr const uint8_t hash[8] = { 0x21, 0x0f, 0x62, 0x9d, 0x31, 0x97, 0xad, 0x16 };
static constexpr const auto vertexOffset = 43478;
static constexpr const auto fragmentOffset = 47126;
};
constexpr const char* ShaderSource<LineSDFProgram>::name;
@@ -51,20 +51,17 @@ Context::createProgram<gl::Context>(const ProgramParameters& programParameters)
// long distances for long segments. Use this value to unscale the distance.
#define LINE_DISTANCE_SCALE 2.0
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0
attribute vec4 a_pos_normal;
attribute vec4 a_data;
uniform mat4 u_matrix;
uniform mediump float u_ratio;
uniform lowp float u_device_pixel_ratio;
uniform vec2 u_patternscale_a;
uniform float u_tex_y_a;
uniform vec2 u_patternscale_b;
uniform float u_tex_y_b;
uniform vec2 u_gl_units_to_pixels;
uniform vec2 u_units_to_pixels;
varying vec2 v_normal;
varying vec2 v_width2;
@@ -185,6 +182,10 @@ void main() {
#endif
// the distance over which the line edge fades out.
// Retina devices need a smaller distance to avoid aliasing.
float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
vec2 a_extrude = a_data.xy - 128.0;
float a_direction = mod(a_data.z, 4.0) - 1.0;
float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
@@ -222,7 +223,7 @@ void main() {
// calculate how much the perspective view squishes or stretches the extrude
float extrude_length_without_perspective = length(dist);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);
@@ -236,6 +237,7 @@ void main() {
// Uncompressed source of line_sdf.fragment.glsl:
/*
uniform lowp float u_device_pixel_ratio;
uniform sampler2D u_image;
uniform float u_sdfgamma;
uniform float u_mix;
@@ -315,7 +317,7 @@ void main() {
// Calculate the antialiasing fade factor. This is either when fading in
// the line in case of an offset line (v_width2.t) or when fading out
// (v_width2.s)
float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;
float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
float sdfdist_a = texture2D(u_image, v_tex_a).a;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<RasterProgram> {
static constexpr const char* name = "raster";
static constexpr const uint8_t hash[8] = { 0x40, 0x3d, 0x6c, 0xf4, 0xd0, 0x41, 0x51, 0x0e };
static constexpr const auto vertexOffset = 48320;
static constexpr const auto fragmentOffset = 48669;
static constexpr const auto vertexOffset = 48671;
static constexpr const auto fragmentOffset = 49020;
};
constexpr const char* ShaderSource<RasterProgram>::name;

View File

@@ -11,454 +11,453 @@ namespace gl {
constexpr const uint8_t compressedShaderSource[] = {
0x78, 0xda, 0xed, 0x3d, 0xfd, 0x6f, 0xe3, 0x36, 0xb2, 0xf7, 0x73, 0xfe, 0x0a, 0x17, 0x05, 0x0e,
0x92, 0x2c, 0x5b, 0xb6, 0x93, 0xec, 0x97, 0x4e, 0xaf, 0x08, 0x76, 0xb3, 0x7d, 0x01, 0xda, 0xdd,
0x60, 0xd3, 0xf6, 0x15, 0x57, 0x2c, 0x0c, 0xc9, 0x56, 0x1c, 0xdf, 0xd9, 0x96, 0x9f, 0xad, 0x24,
0x76, 0x0e, 0xf9, 0xdf, 0x1f, 0x87, 0xdf, 0xa4, 0x48, 0x59, 0xb6, 0x13, 0xe7, 0xe3, 0x19, 0x45,
0x37, 0x16, 0x39, 0x1c, 0x0e, 0xc9, 0xe1, 0x70, 0x66, 0x48, 0x0e, 0x7f, 0x1c, 0x5e, 0xf6, 0xd3,
0xcb, 0xda, 0xcf, 0xbf, 0x74, 0x4f, 0x2f, 0x0e, 0xa6, 0xb3, 0xb4, 0x37, 0x9c, 0x0f, 0xb3, 0x49,
0xed, 0x6a, 0x38, 0xb8, 0x9a, 0xd6, 0x2e, 0x47, 0x59, 0x9c, 0x87, 0x07, 0x3f, 0xa6, 0xa3, 0x79,
0x7a, 0xf0, 0xe3, 0xf0, 0xb2, 0xf6, 0x03, 0x82, 0x1d, 0x4e, 0xd2, 0xbe, 0x33, 0xca, 0x6e, 0xa7,
0xee, 0xc1, 0x8f, 0xe4, 0xb3, 0x06, 0x5f, 0x08, 0x6a, 0xd2, 0x1f, 0x5e, 0xaa, 0x60, 0xe3, 0xb4,
0x3f, 0xbc, 0x1e, 0x4b, 0x90, 0x34, 0xc1, 0x08, 0x8c, 0xeb, 0x14, 0xa0, 0xf8, 0x93, 0x03, 0x92,
0x3f, 0x37, 0x69, 0xaf, 0x53, 0xbb, 0x9e, 0x4c, 0xe3, 0xde, 0xbf, 0xbb, 0x98, 0x38, 0xa7, 0x97,
0x4d, 0xe6, 0x39, 0x21, 0xb4, 0x06, 0xc9, 0x69, 0xff, 0x8f, 0x78, 0x74, 0x9d, 0xba, 0xb5, 0xff,
0x0c, 0x27, 0x2c, 0xe5, 0x6c, 0x92, 0xe3, 0xc4, 0x08, 0x25, 0x39, 0x32, 0x50, 0x08, 0x30, 0x37,
0xad, 0x48, 0x05, 0x0b, 0x3a, 0xc7, 0x6f, 0xc2, 0x59, 0x9a, 0x5f, 0xcf, 0x26, 0x35, 0xa8, 0xd0,
0xb9, 0x69, 0xf9, 0x2a, 0x44, 0xe3, 0xa6, 0xe5, 0x21, 0x20, 0x37, 0xbc, 0x97, 0x09, 0xca, 0xd0,
0xbf, 0xc3, 0x7c, 0x69, 0x20, 0xe9, 0x2b, 0xc9, 0xa1, 0x44, 0xa1, 0xff, 0x69, 0x82, 0x44, 0x10,
0x03, 0x09, 0x3a, 0x4a, 0xd5, 0xa4, 0x91, 0xa2, 0x84, 0x1b, 0xb4, 0x3b, 0x6f, 0x9b, 0x2d, 0x7f,
0x9c, 0xf5, 0xd5, 0x82, 0x7e, 0xa7, 0xd9, 0x72, 0x09, 0x41, 0x47, 0xb5, 0x7e, 0xda, 0xcb, 0xfa,
0x69, 0xb7, 0x97, 0x8d, 0xb2, 0x19, 0x25, 0x07, 0x13, 0x9a, 0x4e, 0x20, 0xbd, 0xff, 0x11, 0xd2,
0x11, 0x31, 0xa2, 0xa2, 0x23, 0x47, 0xe9, 0x54, 0x19, 0xee, 0xaf, 0xd6, 0x77, 0x44, 0xd4, 0xf1,
0x31, 0xaa, 0xd4, 0x0e, 0xd3, 0x66, 0x30, 0x07, 0x88, 0x04, 0xd2, 0x72, 0x0a, 0x3c, 0x1e, 0x2e,
0xba, 0xb8, 0x25, 0x12, 0x19, 0xd2, 0x10, 0xf8, 0x72, 0x67, 0xe5, 0x82, 0x26, 0x54, 0x4c, 0x1e,
0x29, 0x44, 0x84, 0x2f, 0x7f, 0xb6, 0xbf, 0xfb, 0x39, 0x6b, 0xac, 0x54, 0x91, 0xd6, 0xe0, 0x23,
0x5a, 0x13, 0xa6, 0x71, 0x5e, 0xa8, 0x0a, 0x43, 0x8c, 0x87, 0x13, 0x9c, 0x1d, 0x29, 0x7d, 0x86,
0x29, 0x96, 0x0b, 0x0b, 0x02, 0xe8, 0x37, 0x6a, 0xb1, 0x1b, 0x12, 0x0c, 0xf1, 0xa2, 0x12, 0x86,
0x8e, 0x86, 0xe1, 0x10, 0x30, 0x48, 0xcd, 0x65, 0x94, 0xf8, 0x0c, 0x21, 0x6b, 0x62, 0xa7, 0x36,
0x48, 0xf3, 0xee, 0x34, 0xce, 0xf3, 0x74, 0x36, 0xe9, 0x4e, 0xb3, 0xb9, 0xd2, 0x97, 0xc3, 0x45,
0x3a, 0x42, 0x75, 0x66, 0xb3, 0x7e, 0xf7, 0x7a, 0x3a, 0x4d, 0x67, 0xbe, 0x25, 0x13, 0xcd, 0x51,
0x2d, 0x93, 0x22, 0x9c, 0x0f, 0xef, 0xb4, 0x61, 0x18, 0x8e, 0xd2, 0xee, 0xf5, 0x64, 0x98, 0xcf,
0xbb, 0x79, 0xd6, 0xc5, 0x38, 0xe6, 0x4a, 0xc1, 0x6c, 0x4e, 0x7a, 0xaf, 0x53, 0xcb, 0x2e, 0x2f,
0xe7, 0x69, 0x1e, 0x01, 0x37, 0xb2, 0xff, 0x8b, 0x04, 0xc9, 0x15, 0xb9, 0x30, 0x6f, 0x9a, 0x2d,
0x53, 0x5a, 0xbd, 0x48, 0xad, 0x02, 0xc5, 0xfa, 0xca, 0x31, 0xd1, 0xe7, 0x21, 0xa2, 0xea, 0x84,
0x1a, 0x37, 0x90, 0x8b, 0x85, 0xf7, 0x07, 0x7f, 0xfb, 0xd1, 0x2c, 0xe3, 0xa8, 0x2c, 0x7a, 0x7e,
0x52, 0xee, 0x6f, 0x88, 0xfe, 0xd9, 0x30, 0xb9, 0xce, 0x53, 0xd2, 0xe1, 0x31, 0x0c, 0x7a, 0x88,
0x5a, 0x7c, 0x99, 0xcd, 0xc6, 0x88, 0xdf, 0x72, 0xc4, 0xf4, 0x5d, 0xf4, 0x67, 0x36, 0x5c, 0x84,
0x37, 0xd9, 0xb0, 0x8f, 0x92, 0x86, 0x13, 0x07, 0x8d, 0xc9, 0x60, 0xd4, 0x3d, 0xcf, 0xe6, 0xc3,
0x1c, 0xb5, 0x2e, 0x62, 0x10, 0x1e, 0x9e, 0xde, 0x18, 0x85, 0xdf, 0xf2, 0xdb, 0x2e, 0x74, 0x08,
0x43, 0x45, 0xe6, 0x0f, 0xe1, 0x58, 0x8e, 0x9f, 0x4e, 0x5f, 0x26, 0xce, 0x0a, 0x35, 0x7c, 0x9e,
0xc5, 0x03, 0xc2, 0xf0, 0xb4, 0xa4, 0x27, 0x60, 0x0f, 0x68, 0x57, 0x7f, 0xfd, 0xe3, 0xf4, 0xdb,
0xa7, 0x6f, 0x27, 0xff, 0xd3, 0x3d, 0xfb, 0x72, 0x71, 0x7e, 0xfa, 0xf1, 0xb7, 0xaf, 0xdf, 0x0e,
0x94, 0x92, 0x98, 0xa6, 0x36, 0x92, 0x58, 0x21, 0x6b, 0xb3, 0x44, 0x95, 0xda, 0x40, 0x89, 0x56,
0x24, 0x69, 0xbb, 0xf2, 0xd8, 0x76, 0xe3, 0xd2, 0xdc, 0xa4, 0x90, 0xab, 0xb3, 0x66, 0x19, 0x00,
0xe6, 0xc0, 0x42, 0xa7, 0xcc, 0x7b, 0xf1, 0x48, 0xae, 0x57, 0x4d, 0x4f, 0x0a, 0xe9, 0x26, 0x5e,
0x0d, 0x8d, 0xc3, 0x7b, 0x13, 0xcf, 0x96, 0xc3, 0xc9, 0x80, 0x24, 0xdd, 0x40, 0x12, 0xaa, 0xc6,
0x90, 0x98, 0x6c, 0x30, 0xe4, 0x14, 0x5d, 0xa4, 0xcb, 0x11, 0x43, 0x97, 0xf8, 0x86, 0x5e, 0xf0,
0x79, 0xbb, 0x3d, 0x7d, 0x00, 0x7c, 0x73, 0x13, 0x7d, 0x5c, 0x39, 0xab, 0x38, 0xd9, 0xba, 0xe2,
0x44, 0xaf, 0x38, 0x59, 0x51, 0xb1, 0xca, 0xe4, 0x32, 0x6b, 0xe4, 0x23, 0x3b, 0xdb, 0x24, 0x33,
0x7b, 0x1e, 0x2a, 0x97, 0x94, 0x94, 0x2b, 0xe4, 0xe5, 0xe9, 0x02, 0xcb, 0x1f, 0x9d, 0x23, 0xc6,
0x12, 0x4f, 0xeb, 0x53, 0x8d, 0xa5, 0xcf, 0xe3, 0xf1, 0x74, 0x94, 0xce, 0x3a, 0x9f, 0x50, 0xde,
0x70, 0x1c, 0x0f, 0xd2, 0x4d, 0xb9, 0x03, 0xe7, 0x60, 0x0c, 0xb8, 0x57, 0xb1, 0xa0, 0xa6, 0xa5,
0x7d, 0x3c, 0xfd, 0x98, 0x40, 0x8f, 0x60, 0x05, 0x52, 0x3b, 0x29, 0xe0, 0x6d, 0xf0, 0xd5, 0x1e,
0x92, 0x32, 0x04, 0x6a, 0xba, 0x18, 0x62, 0x81, 0xd0, 0x8e, 0x50, 0x3e, 0x92, 0xd5, 0x69, 0xe7,
0x93, 0x43, 0x1b, 0xe0, 0x13, 0x76, 0x50, 0xc9, 0x41, 0x8c, 0x21, 0x08, 0x4a, 0x54, 0x82, 0x3a,
0x45, 0x8a, 0x12, 0x1b, 0x45, 0x89, 0x91, 0xa2, 0x6e, 0x22, 0xd3, 0xd4, 0x31, 0xd3, 0xd4, 0x71,
0x43, 0x45, 0x30, 0x41, 0xa5, 0xa4, 0x0d, 0x3e, 0x29, 0xe6, 0xe3, 0x11, 0x73, 0x77, 0x23, 0xe3,
0x92, 0x2c, 0x1b, 0x71, 0x61, 0x72, 0x3b, 0xcc, 0xaf, 0x10, 0xc0, 0x54, 0xcf, 0x9d, 0x0e, 0xf3,
0xde, 0x55, 0x31, 0x97, 0xb2, 0x1d, 0x6a, 0xe4, 0xec, 0x1a, 0x69, 0x21, 0x18, 0x07, 0xcf, 0x94,
0xd4, 0x79, 0x90, 0xf7, 0xf1, 0x38, 0x9d, 0xc5, 0x30, 0x69, 0x7a, 0xe9, 0x04, 0x75, 0x62, 0xb7,
0x3f, 0x9c, 0xe7, 0xf1, 0xa4, 0x97, 0x9a, 0x25, 0x13, 0x34, 0x78, 0x02, 0x2d, 0xfe, 0xef, 0x93,
0x8b, 0xee, 0xef, 0x5f, 0xce, 0x3e, 0x7f, 0xfd, 0xf6, 0x6b, 0x97, 0xca, 0xfe, 0x03, 0x56, 0x03,
0x2c, 0x8e, 0xa2, 0x02, 0xc8, 0xea, 0xe6, 0x12, 0x3a, 0x42, 0x00, 0x1e, 0x8e, 0x98, 0xae, 0x37,
0x8c, 0x7b, 0xa5, 0x2c, 0x92, 0x41, 0x57, 0x62, 0x95, 0x76, 0x65, 0xa9, 0x92, 0x16, 0x56, 0x03,
0x61, 0xb3, 0x18, 0xad, 0xbe, 0x73, 0x33, 0x65, 0x24, 0x4f, 0x21, 0x8d, 0xa9, 0x01, 0xb4, 0xc5,
0x04, 0x82, 0x53, 0xa7, 0x28, 0x09, 0x35, 0x9a, 0xa9, 0x51, 0xa8, 0xc2, 0xb0, 0x4a, 0x56, 0x50,
0x99, 0x8c, 0xae, 0x2d, 0xbd, 0x07, 0x39, 0x0a, 0x85, 0x38, 0x97, 0x92, 0x07, 0x99, 0x9c, 0x38,
0xa9, 0x18, 0x4e, 0xd7, 0xe8, 0x2a, 0x60, 0x5d, 0x41, 0x12, 0xe5, 0x70, 0x73, 0x79, 0x9a, 0x69,
0x25, 0x8c, 0xab, 0x0b, 0x45, 0xda, 0xc4, 0xcc, 0xb1, 0x93, 0x27, 0xc1, 0x94, 0x50, 0x38, 0xcf,
0x67, 0xd9, 0xbf, 0xd3, 0x32, 0xd6, 0x93, 0x21, 0xec, 0x1c, 0x28, 0x43, 0x99, 0x18, 0x51, 0xc9,
0x2f, 0xe3, 0x47, 0x1d, 0x70, 0x35, 0xed, 0xb7, 0xc3, 0x7e, 0x7e, 0x55, 0x4a, 0x3b, 0x86, 0x28,
0x63, 0x51, 0x19, 0xce, 0xc2, 0xa8, 0x0a, 0xc8, 0x0a, 0x76, 0xd5, 0x61, 0x57, 0xb7, 0xa1, 0x94,
0x51, 0x54, 0x18, 0x2b, 0xbf, 0xa8, 0x60, 0x26, 0xb6, 0xd1, 0x20, 0xca, 0xb8, 0xa7, 0x08, 0x4a,
0xdc, 0x05, 0x62, 0x81, 0x3c, 0x44, 0x0b, 0x64, 0x3f, 0xce, 0x63, 0x69, 0x7d, 0x84, 0x5f, 0x68,
0x8d, 0x2c, 0x15, 0x6f, 0x3d, 0xa2, 0xe8, 0xea, 0x26, 0x26, 0x95, 0x61, 0x3e, 0x17, 0x75, 0x2e,
0x23, 0x4f, 0x97, 0x66, 0xd1, 0x5a, 0x32, 0x8b, 0xfc, 0x89, 0x74, 0xdb, 0x99, 0x49, 0x25, 0x5f,
0x08, 0x30, 0x5e, 0xa1, 0x49, 0x40, 0x45, 0xeb, 0xc8, 0x20, 0xf8, 0xc7, 0x50, 0x23, 0x24, 0xfb,
0x4c, 0x18, 0xf1, 0xda, 0x34, 0x89, 0x13, 0xad, 0x25, 0x57, 0xe8, 0x5f, 0x43, 0x65, 0x34, 0xc7,
0x97, 0xc4, 0x8c, 0xa9, 0x4a, 0x8e, 0x60, 0x13, 0x71, 0x21, 0x7f, 0x98, 0x46, 0x54, 0xce, 0xf7,
0x75, 0x41, 0x62, 0x1a, 0x5f, 0x15, 0xe1, 0xc6, 0xa2, 0x40, 0xfe, 0x30, 0x74, 0x8d, 0x9c, 0xed,
0xeb, 0x32, 0xc2, 0xc2, 0x05, 0x2a, 0xca, 0x2d, 0x26, 0xb8, 0xfa, 0x69, 0xa7, 0x4e, 0x8c, 0x9f,
0x3e, 0xfb, 0x4d, 0xc3, 0xa8, 0x63, 0xb5, 0x4e, 0x5f, 0xec, 0xb3, 0x22, 0x0a, 0x4d, 0x84, 0x2b,
0x04, 0x75, 0x91, 0xd8, 0x35, 0xe0, 0xee, 0xf2, 0xd0, 0x3f, 0x0d, 0xa1, 0x35, 0xf6, 0x86, 0xb3,
0x1e, 0xd2, 0x9b, 0x88, 0x4e, 0x13, 0xa1, 0xaa, 0xf0, 0xb0, 0x22, 0x60, 0xaf, 0xd5, 0x3c, 0x76,
0x43, 0x64, 0x84, 0x3b, 0xba, 0xf6, 0xc4, 0x54, 0xe4, 0x5e, 0x36, 0x9b, 0x20, 0x3d, 0x68, 0xca,
0x2c, 0x29, 0x05, 0x15, 0x2d, 0xa9, 0x6a, 0x65, 0xa8, 0xa4, 0x56, 0xa8, 0x1e, 0x51, 0x52, 0x3d,
0x87, 0x4c, 0xbe, 0xba, 0xdc, 0xef, 0xa0, 0x41, 0xaa, 0xba, 0xd9, 0x7d, 0x0d, 0xfa, 0x85, 0xba,
0xa1, 0xa6, 0xb3, 0xec, 0x5f, 0x69, 0x2f, 0x4f, 0xfb, 0x8c, 0x7c, 0xd5, 0x96, 0x53, 0xe8, 0x21,
0x36, 0xdd, 0x76, 0xb5, 0x7b, 0x8e, 0x5e, 0x63, 0xf3, 0x36, 0x28, 0xd1, 0x0c, 0x91, 0x45, 0x65,
0xb7, 0x34, 0x35, 0x52, 0xa8, 0x9b, 0x81, 0x36, 0xaf, 0xa4, 0x58, 0xb1, 0x51, 0x96, 0x9e, 0x96,
0x70, 0x34, 0x17, 0xcb, 0x75, 0x9b, 0x5a, 0xa6, 0xf0, 0x1a, 0xa8, 0xdc, 0xa0, 0x06, 0xb9, 0xf4,
0x6d, 0x78, 0x7f, 0x2f, 0xf1, 0x7a, 0x3c, 0xc9, 0x87, 0xf1, 0x68, 0x18, 0xcf, 0xb1, 0xb8, 0x44,
0xcc, 0x1a, 0x7c, 0x3a, 0xfd, 0xe3, 0xec, 0xe3, 0x69, 0xf7, 0xfc, 0xec, 0xcf, 0xd3, 0x5f, 0xba,
0xdf, 0x4e, 0x7e, 0x3b, 0xfb, 0x1a, 0x18, 0x6b, 0x09, 0xc9, 0x82, 0x05, 0x8c, 0x7f, 0xe8, 0xd0,
0xfa, 0x9a, 0x0b, 0x9f, 0xfd, 0x5a, 0xfa, 0x0a, 0x6a, 0x97, 0x3a, 0xba, 0xac, 0x2b, 0xd9, 0x63,
0xab, 0xdb, 0xbb, 0x51, 0x98, 0x1f, 0x59, 0xf3, 0xdd, 0x9d, 0xf2, 0xfa, 0x14, 0x4a, 0xe7, 0x53,
0xaa, 0x8a, 0x4f, 0xa0, 0xdf, 0x51, 0xdd, 0xce, 0x36, 0x21, 0xaa, 0x68, 0x6a, 0x56, 0x6e, 0xaf,
0xac, 0x75, 0x59, 0xf8, 0x78, 0xb5, 0x1e, 0x65, 0x67, 0xd2, 0xaa, 0x0a, 0xd1, 0x0a, 0x0e, 0x5c,
0x5f, 0x93, 0x59, 0xc1, 0x5e, 0x1b, 0xe9, 0x20, 0x2b, 0x19, 0x67, 0x6b, 0xbd, 0x01, 0xb3, 0x05,
0x12, 0xea, 0x21, 0x41, 0xc2, 0x24, 0xf7, 0x28, 0x9d, 0x0c, 0x10, 0x65, 0xe4, 0x0f, 0x93, 0xaf,
0x6e, 0x68, 0x15, 0xdd, 0x14, 0xcf, 0x5d, 0xa8, 0x65, 0xa2, 0x05, 0x14, 0xe7, 0x37, 0xc6, 0xf1,
0xc2, 0xc1, 0x4a, 0xb3, 0x26, 0x97, 0x95, 0x91, 0xea, 0xe6, 0xd1, 0x7c, 0x9c, 0x65, 0xf9, 0xd5,
0x3c, 0x4f, 0xa7, 0x4e, 0xab, 0xd9, 0xf2, 0x75, 0x44, 0xbe, 0x4a, 0x20, 0xd1, 0x6f, 0x08, 0x0e,
0xaa, 0x8b, 0x46, 0x72, 0x5f, 0xd6, 0xfe, 0x51, 0x43, 0x58, 0xda, 0xb5, 0x9f, 0xe0, 0x4f, 0xed,
0x43, 0x4d, 0xc2, 0x5e, 0xc0, 0x0c, 0xd5, 0x69, 0xd8, 0x09, 0xc3, 0x9a, 0x17, 0x20, 0xcd, 0x35,
0xc6, 0x5b, 0xe0, 0x71, 0x27, 0x99, 0xc7, 0xf4, 0x3e, 0x99, 0x63, 0x3c, 0x4d, 0x27, 0x94, 0x34,
0xe8, 0x2d, 0x1c, 0x67, 0x8f, 0xbd, 0x25, 0x62, 0xdf, 0xe5, 0x10, 0xe4, 0x58, 0x57, 0xd8, 0xdb,
0x14, 0xcd, 0xa5, 0xdc, 0x2c, 0xba, 0x48, 0x9e, 0xd9, 0x15, 0x01, 0xed, 0x20, 0xf9, 0x9a, 0x13,
0x82, 0x14, 0xa6, 0x59, 0xc6, 0xa5, 0x40, 0x45, 0xbf, 0x0b, 0x8f, 0xd8, 0x7a, 0x6b, 0x78, 0xb9,
0xa3, 0x93, 0x15, 0x32, 0x7b, 0x2b, 0x6d, 0x6e, 0x71, 0x96, 0x3e, 0x44, 0x3a, 0xdc, 0x64, 0x0e,
0x39, 0x55, 0x76, 0x52, 0x68, 0x1d, 0x21, 0xd9, 0xc1, 0x94, 0x7b, 0xef, 0x9f, 0xa7, 0xdf, 0xbe,
0x62, 0x95, 0x0c, 0x6f, 0x5d, 0x07, 0xed, 0x37, 0xcd, 0x56, 0xc8, 0x37, 0xe6, 0x7e, 0x3e, 0xf9,
0xfd, 0xe2, 0xa2, 0xfb, 0xf1, 0xeb, 0xe9, 0x67, 0x34, 0xb3, 0x0e, 0xdf, 0xbf, 0x7b, 0x7f, 0xd4,
0xe9, 0xbc, 0x6b, 0x1d, 0xb5, 0xda, 0x47, 0x87, 0x9d, 0xb7, 0x07, 0x55, 0xbd, 0x08, 0x94, 0x33,
0xc8, 0x1f, 0x83, 0xfd, 0x44, 0x32, 0x7c, 0xc1, 0x26, 0x9a, 0xa1, 0x29, 0x33, 0x42, 0xb4, 0xde,
0x68, 0x9b, 0x97, 0xa8, 0x07, 0xf7, 0x2c, 0xd0, 0x13, 0x10, 0x78, 0x04, 0xfb, 0xdd, 0x4a, 0xd6,
0x1a, 0x41, 0x78, 0x11, 0xcd, 0xff, 0x77, 0x96, 0x3b, 0x0d, 0x94, 0xec, 0x8d, 0xb2, 0x81, 0x03,
0xa3, 0x11, 0x90, 0x06, 0x06, 0xd2, 0x18, 0x07, 0x62, 0x20, 0x5c, 0x37, 0x38, 0x44, 0x43, 0xc4,
0x87, 0x34, 0xba, 0xf0, 0xf4, 0x8a, 0x43, 0x4d, 0xf6, 0x33, 0x3d, 0x9e, 0x10, 0x5d, 0xb0, 0xc1,
0x88, 0xed, 0x95, 0xcd, 0xc9, 0x24, 0xd7, 0x4d, 0xc6, 0x3a, 0x05, 0x26, 0x42, 0xc2, 0x28, 0x49,
0x80, 0xdf, 0x56, 0x89, 0x85, 0x07, 0x9a, 0xda, 0x66, 0x20, 0x31, 0x17, 0x2c, 0x6c, 0xbf, 0x36,
0x43, 0x5b, 0xd5, 0x26, 0xda, 0x9c, 0x2a, 0x8c, 0x49, 0x72, 0xfb, 0x51, 0x03, 0x75, 0xa3, 0x87,
0xc6, 0x0c, 0xff, 0xdf, 0xcf, 0x72, 0x87, 0xd3, 0xe5, 0xf3, 0x5f, 0x8c, 0x1f, 0x6e, 0xe2, 0x51,
0x44, 0xd0, 0x78, 0x52, 0xb3, 0x3c, 0x41, 0xb6, 0x97, 0x2e, 0xa6, 0x4e, 0x5f, 0x5b, 0x95, 0xf0,
0xc0, 0xa1, 0xa2, 0xb0, 0x7b, 0xc4, 0xfe, 0x77, 0x77, 0xb0, 0x0f, 0x7d, 0x9b, 0xcd, 0x46, 0xfd,
0xaa, 0x3b, 0xb9, 0x6b, 0x2d, 0x49, 0x1e, 0x45, 0x2e, 0x6d, 0xdd, 0x36, 0x17, 0x51, 0x4c, 0xfe,
0xd2, 0xef, 0x25, 0x88, 0xad, 0x06, 0x49, 0x5b, 0xca, 0x9b, 0x9d, 0xc5, 0x9d, 0x43, 0x53, 0x0e,
0x59, 0x92, 0x67, 0x28, 0xc5, 0xbe, 0xeb, 0xbf, 0xa2, 0x11, 0xf4, 0xa8, 0x88, 0x61, 0x57, 0x0d,
0x03, 0xbb, 0xcd, 0x99, 0xb4, 0xf9, 0xa6, 0x40, 0x89, 0xca, 0x7d, 0x2c, 0x25, 0x72, 0x1f, 0xe6,
0x9a, 0x36, 0xac, 0x5b, 0x1d, 0x2c, 0x68, 0x55, 0xd1, 0x1d, 0x0a, 0x89, 0xf1, 0xa4, 0x77, 0x95,
0xcd, 0xcc, 0x79, 0x6c, 0x32, 0x15, 0x31, 0x8d, 0xe2, 0x5e, 0x6a, 0xe0, 0x83, 0xf9, 0xd5, 0xf0,
0x32, 0x0f, 0x2b, 0x71, 0x52, 0xf9, 0x1a, 0x68, 0x77, 0x5d, 0xb0, 0x11, 0xa2, 0xb3, 0x87, 0x91,
0xa2, 0x27, 0x4f, 0xb2, 0xfc, 0xf7, 0x39, 0xa4, 0x6b, 0xfb, 0xc2, 0x92, 0xcf, 0xe9, 0x3c, 0x43,
0xd3, 0xad, 0xc0, 0x8a, 0xa2, 0x3f, 0x08, 0x27, 0xca, 0xf3, 0x5e, 0x50, 0x45, 0xa1, 0x18, 0x55,
0x91, 0x8a, 0xb4, 0x79, 0xab, 0x16, 0xcb, 0x46, 0x23, 0x7c, 0xf6, 0xa6, 0x3b, 0x4d, 0x67, 0xf3,
0x29, 0x82, 0x1b, 0xde, 0xa4, 0x88, 0x15, 0xd0, 0x54, 0x88, 0x7a, 0x23, 0xc4, 0x11, 0x68, 0xe8,
0x8e, 0xeb, 0x20, 0x33, 0x9c, 0x92, 0x96, 0x07, 0xd6, 0xda, 0x5d, 0xac, 0xe2, 0x1e, 0xc1, 0xf0,
0xaf, 0xd4, 0xfb, 0x98, 0xa8, 0xd0, 0x3d, 0x3f, 0x0e, 0x1f, 0xed, 0x3a, 0x1d, 0xc6, 0x15, 0xfe,
0x1e, 0xaf, 0xa4, 0x55, 0x21, 0x1b, 0x96, 0x88, 0xb1, 0x0a, 0x9e, 0xc2, 0x74, 0x4c, 0x44, 0x22,
0x9e, 0xc3, 0xdb, 0x0c, 0x28, 0x35, 0x4a, 0x46, 0xd3, 0xab, 0x38, 0x42, 0xfd, 0x17, 0x1a, 0xa5,
0x1c, 0x6e, 0x34, 0x6b, 0xb8, 0x87, 0x81, 0xb1, 0xc7, 0x8d, 0x55, 0x55, 0xfb, 0xaf, 0x1a, 0x4c,
0x45, 0x93, 0xfe, 0x2b, 0x95, 0xc4, 0xd3, 0x95, 0x96, 0xbe, 0x27, 0xc5, 0x29, 0x49, 0xc6, 0xf2,
0x5e, 0xd4, 0x6c, 0x87, 0xf7, 0x3b, 0x99, 0x85, 0xcf, 0x6a, 0xba, 0x69, 0xe9, 0xda, 0xb6, 0xb2,
0xb6, 0x48, 0x9b, 0x93, 0x99, 0x92, 0xb2, 0x9f, 0xb9, 0xc6, 0x99, 0x2b, 0xd3, 0x37, 0x8d, 0xfb,
0x7d, 0xd4, 0x81, 0xdd, 0xcb, 0xb8, 0x97, 0x67, 0xe0, 0x67, 0xed, 0x14, 0x26, 0x36, 0xe7, 0x9f,
0xc2, 0x74, 0x56, 0x0b, 0x3f, 0xc6, 0xec, 0x66, 0xe3, 0x1f, 0xc5, 0xc9, 0x5c, 0x08, 0x98, 0xe6,
0xd2, 0x95, 0x94, 0x59, 0x41, 0x9f, 0x4a, 0x4f, 0xa8, 0xf1, 0x43, 0xb4, 0x86, 0x7f, 0xbb, 0x94,
0x7a, 0x49, 0x6d, 0xe0, 0xab, 0xff, 0x0d, 0x82, 0xc2, 0xde, 0x77, 0x56, 0xf7, 0xf3, 0xe0, 0x7a,
0x5d, 0xbc, 0x49, 0xaa, 0xc5, 0xda, 0xc2, 0xad, 0xb7, 0xa9, 0x54, 0xeb, 0x51, 0x71, 0xd6, 0x61,
0x47, 0x9c, 0x15, 0x82, 0x35, 0x87, 0x92, 0xd6, 0x1c, 0xb7, 0xd4, 0xfb, 0x24, 0x74, 0x61, 0xcf,
0x84, 0x33, 0x34, 0x78, 0xd4, 0xda, 0xc8, 0x62, 0x35, 0x02, 0x07, 0x86, 0x51, 0x54, 0x2c, 0x38,
0x36, 0x2a, 0x65, 0x55, 0x31, 0xfe, 0x01, 0x96, 0x4a, 0xfb, 0x83, 0x14, 0xf3, 0xad, 0xd1, 0x75,
0x54, 0xea, 0xdf, 0x6a, 0x28, 0x9b, 0x97, 0xd0, 0xd3, 0x0d, 0x1d, 0xb3, 0xd5, 0xc9, 0x44, 0xbc,
0x8f, 0xf7, 0xbb, 0x3b, 0x0c, 0x6b, 0xd8, 0xf8, 0x58, 0x79, 0xf4, 0x75, 0x4d, 0xfa, 0x5e, 0xda,
0x49, 0xaa, 0xe7, 0x74, 0x20, 0xa8, 0x60, 0xa0, 0x3e, 0xf9, 0x99, 0x8d, 0x1d, 0x1c, 0x6b, 0xa8,
0xca, 0xc3, 0x4f, 0xb2, 0xf1, 0xf7, 0xc0, 0x9b, 0x66, 0x8f, 0xbc, 0x71, 0xb3, 0xd6, 0xee, 0x89,
0xc1, 0x16, 0x7d, 0x90, 0xe3, 0x9f, 0x6b, 0xc8, 0x0a, 0xa3, 0xbf, 0xc1, 0x60, 0x95, 0xdb, 0x06,
0xe7, 0x3a, 0x1f, 0x0d, 0x27, 0xa5, 0x47, 0xe5, 0x14, 0x10, 0xbb, 0x8c, 0x51, 0xc0, 0x4c, 0xb2,
0x46, 0x05, 0x28, 0xe3, 0xaa, 0x02, 0xe4, 0x2b, 0x92, 0x3d, 0x6a, 0x87, 0x2b, 0x5f, 0x26, 0x59,
0xa4, 0x00, 0xf8, 0x85, 0xc1, 0x30, 0xc9, 0x26, 0x0d, 0xe7, 0x46, 0xbd, 0xf9, 0xd4, 0xb2, 0x0a,
0xf3, 0x6c, 0xe4, 0xa8, 0xba, 0x79, 0xa0, 0x68, 0xdc, 0x75, 0x98, 0x34, 0x01, 0x78, 0x85, 0x19,
0xd7, 0x5b, 0x05, 0x9c, 0xda, 0xe7, 0x3b, 0x67, 0xcd, 0x87, 0xe2, 0xae, 0x15, 0xae, 0x36, 0x8b,
0x3c, 0x53, 0xda, 0xbe, 0x09, 0x9b, 0x6c, 0x29, 0x23, 0x85, 0xa6, 0x28, 0xd4, 0x58, 0x44, 0x7b,
0x83, 0x4b, 0xc1, 0x6c, 0x86, 0xec, 0xa1, 0x25, 0x53, 0x10, 0x89, 0xf2, 0x0e, 0x6e, 0x4b, 0x6d,
0x03, 0x14, 0x94, 0x6f, 0xc0, 0xa2, 0x6b, 0x82, 0x32, 0xd9, 0x9e, 0x83, 0x8b, 0x33, 0x21, 0xbc,
0x3b, 0x07, 0xef, 0xc3, 0xdd, 0x20, 0x62, 0x67, 0x37, 0xb0, 0x71, 0xb3, 0xed, 0x0d, 0xa0, 0xea,
0xcb, 0xc0, 0xb3, 0x3f, 0xd2, 0xcd, 0xee, 0x71, 0x5c, 0xce, 0xb2, 0xb1, 0x19, 0x8f, 0x0c, 0x61,
0xa4, 0x15, 0x56, 0x29, 0x19, 0x48, 0x25, 0x98, 0x5e, 0x04, 0x95, 0xb2, 0x4d, 0x44, 0xd3, 0xe1,
0xd1, 0xe1, 0x2a, 0x10, 0x9e, 0x67, 0xe5, 0x64, 0x23, 0x43, 0x67, 0x15, 0xd1, 0x79, 0x56, 0x42,
0x32, 0xca, 0xac, 0x40, 0x30, 0x81, 0xaa, 0xbe, 0x5a, 0x3d, 0xd5, 0x91, 0x5c, 0x65, 0xb8, 0xe5,
0x8f, 0x28, 0xee, 0x9a, 0x06, 0x49, 0xda, 0x8b, 0x56, 0x47, 0x31, 0xda, 0x74, 0xb0, 0xc4, 0xcf,
0x28, 0xee, 0x16, 0x3b, 0xd9, 0x58, 0x21, 0x82, 0x35, 0x77, 0xb5, 0x7c, 0x91, 0x16, 0x2e, 0x4d,
0x45, 0x32, 0x4d, 0x70, 0xe8, 0x44, 0x81, 0x80, 0xdb, 0x53, 0x2a, 0xc4, 0xdd, 0x6d, 0xa8, 0xe3,
0x48, 0x22, 0x51, 0x91, 0x09, 0x83, 0x92, 0x8f, 0xca, 0x53, 0x07, 0x18, 0x08, 0x9e, 0x6f, 0xd8,
0x1f, 0x47, 0x85, 0x4c, 0x73, 0x11, 0x8a, 0xfb, 0xbc, 0x6a, 0x0e, 0x3b, 0x0b, 0x03, 0x24, 0x5c,
0x50, 0x9f, 0x12, 0xc9, 0x61, 0xc7, 0x5b, 0xf2, 0x4c, 0x4d, 0xbf, 0x0d, 0xab, 0x2d, 0xef, 0x40,
0x2b, 0x12, 0xe6, 0xd3, 0x51, 0xbc, 0xa4, 0x37, 0x04, 0xc9, 0x56, 0xb0, 0x23, 0x77, 0x41, 0x73,
0xd1, 0x90, 0xfb, 0xac, 0xb9, 0x70, 0x03, 0x41, 0xbe, 0xaf, 0x82, 0x2e, 0x55, 0xd0, 0xa5, 0x0c,
0x6a, 0xaa, 0x2f, 0x29, 0xd6, 0x97, 0xa8, 0xf5, 0x25, 0x25, 0xf5, 0x25, 0x6a, 0x7d, 0x49, 0xa1,
0xbe, 0x2d, 0x2f, 0x52, 0xf2, 0x0e, 0xf7, 0xd4, 0x4e, 0xf2, 0xf9, 0x18, 0x3d, 0xd4, 0xcd, 0x49,
0x3a, 0x80, 0x6a, 0x3d, 0x89, 0xa5, 0x9e, 0x0d, 0x14, 0xb2, 0x15, 0xb7, 0x1d, 0xed, 0xfb, 0x90,
0x4c, 0x3c, 0x5e, 0xc6, 0xfd, 0xf4, 0x51, 0x97, 0xbc, 0xdd, 0xad, 0x5a, 0xbb, 0x5e, 0x6e, 0x1e,
0x73, 0xad, 0x78, 0x8c, 0x63, 0x87, 0x4a, 0x67, 0x6d, 0x22, 0xd0, 0x4b, 0x7b, 0xe3, 0xc5, 0x09,
0xec, 0xf5, 0x2e, 0xe5, 0x5a, 0xae, 0xe4, 0x3e, 0xd1, 0x85, 0x5c, 0xcb, 0x75, 0xdc, 0x07, 0xbb,
0x8c, 0xfb, 0xc8, 0x46, 0x85, 0xe9, 0x7a, 0x2f, 0x08, 0x22, 0xea, 0xf9, 0xf7, 0x76, 0x18, 0xc7,
0xe0, 0x79, 0x58, 0x12, 0x7b, 0xb3, 0x61, 0x6f, 0x36, 0xec, 0xcd, 0x86, 0xbd, 0xd9, 0x60, 0x31,
0x1b, 0xfe, 0x99, 0x65, 0xe3, 0xed, 0x4d, 0x87, 0xd7, 0x6e, 0x15, 0xec, 0x24, 0x06, 0x4b, 0xa9,
0xe9, 0xc0, 0xc7, 0x69, 0x07, 0xe6, 0x43, 0xa1, 0xae, 0xd5, 0xd6, 0x80, 0xa2, 0xf3, 0x3f, 0x44,
0x90, 0x93, 0xbd, 0xea, 0xbf, 0x57, 0xfd, 0xf7, 0xaa, 0xff, 0xeb, 0x52, 0xfd, 0x2b, 0x2a, 0xea,
0xbb, 0x51, 0xd1, 0x0f, 0x51, 0xea, 0x08, 0xce, 0xa2, 0xab, 0xb1, 0xd1, 0xd8, 0x94, 0xe2, 0xd9,
0xf2, 0xfe, 0xad, 0x22, 0x4b, 0x70, 0xae, 0x38, 0x9c, 0xaf, 0x4b, 0xc2, 0x9b, 0x74, 0x96, 0x0f,
0x91, 0x84, 0xed, 0x0e, 0xe0, 0x18, 0x4d, 0x3a, 0xc9, 0xc3, 0x52, 0x89, 0xb4, 0xfa, 0xec, 0x24,
0xe8, 0x85, 0x13, 0x54, 0x1e, 0xa1, 0x4c, 0x95, 0x7d, 0xe2, 0x23, 0x24, 0x34, 0xd9, 0xd6, 0x8f,
0xf9, 0x5e, 0x6d, 0x6c, 0xbd, 0x38, 0x8b, 0x72, 0xec, 0x17, 0x97, 0x20, 0xb7, 0xfc, 0x02, 0x03,
0x83, 0x28, 0x11, 0x6d, 0x57, 0x25, 0x37, 0xa7, 0xae, 0x56, 0xdc, 0x9c, 0xba, 0xaa, 0x70, 0x87,
0xe2, 0xaa, 0xca, 0x85, 0x99, 0x6d, 0xcf, 0xdf, 0x54, 0x3f, 0x48, 0x51, 0x45, 0xc7, 0xc6, 0xe3,
0x21, 0xb7, 0x02, 0x12, 0x4c, 0x01, 0x3a, 0x50, 0xb2, 0xcf, 0x06, 0xc9, 0x78, 0x6d, 0x88, 0x14,
0x5c, 0x63, 0x18, 0xe4, 0xc2, 0x57, 0xb6, 0x2b, 0x4b, 0x57, 0xec, 0xca, 0xd2, 0x55, 0xd9, 0x95,
0x25, 0x56, 0x7c, 0x9d, 0x11, 0x28, 0x1e, 0xec, 0x78, 0xc0, 0x33, 0x3c, 0x78, 0xd6, 0x92, 0x19,
0x12, 0x49, 0x53, 0x05, 0x49, 0xed, 0xbb, 0x10, 0x77, 0x14, 0xdc, 0xdf, 0x04, 0xd7, 0x01, 0x7c,
0xb8, 0x21, 0xa5, 0x9f, 0x25, 0x92, 0x4f, 0xe6, 0x76, 0x20, 0x11, 0x2f, 0x09, 0x8e, 0xe6, 0x02,
0xdf, 0x6e, 0x5a, 0xa9, 0x04, 0xe6, 0xf8, 0x1c, 0x61, 0xab, 0xf6, 0x13, 0xed, 0x9a, 0xda, 0x07,
0x3c, 0x3e, 0xa0, 0x1a, 0x4a, 0xb7, 0x3b, 0x6f, 0x70, 0x9c, 0x5a, 0xfc, 0xb3, 0x39, 0xf3, 0x5a,
0xcd, 0x4e, 0xbb, 0xf3, 0xa6, 0x4e, 0x3e, 0x07, 0xe8, 0xf3, 0x6d, 0xfb, 0xb8, 0x43, 0x3f, 0x13,
0xf4, 0xd9, 0x7a, 0xdb, 0xe9, 0x84, 0x74, 0x7a, 0xab, 0x27, 0x1a, 0xf9, 0x21, 0x59, 0xc2, 0xa8,
0xe3, 0x04, 0x64, 0x0c, 0x96, 0x49, 0x1c, 0xee, 0xd0, 0x17, 0xff, 0x60, 0x50, 0x8c, 0xa6, 0x1e,
0xc9, 0xc0, 0xdc, 0x1f, 0x33, 0x83, 0x93, 0xa3, 0xd9, 0x04, 0xf5, 0x1d, 0x39, 0xed, 0x0b, 0x77,
0x79, 0x48, 0xfb, 0x83, 0xf6, 0x9b, 0xc3, 0x77, 0x47, 0x10, 0x1d, 0x96, 0x4b, 0x44, 0x57, 0x54,
0x2f, 0x97, 0x04, 0x99, 0x0e, 0x92, 0xb8, 0xa1, 0x4b, 0x47, 0x17, 0x42, 0x9e, 0x92, 0x2c, 0xd1,
0x09, 0xf5, 0x22, 0x14, 0x60, 0xf4, 0x25, 0x8c, 0x24, 0x5e, 0x04, 0x1d, 0x86, 0x65, 0xed, 0x87,
0x08, 0x2e, 0x7e, 0xd4, 0xfe, 0x23, 0x41, 0x78, 0x11, 0xab, 0xb1, 0x20, 0x70, 0xdd, 0xba, 0x63,
0x48, 0xf5, 0x48, 0xf3, 0x9c, 0xbc, 0x8e, 0xd9, 0xc0, 0x9b, 0x66, 0xb7, 0x0e, 0x19, 0xaf, 0xa0,
0x7d, 0xdc, 0xa2, 0xc7, 0x44, 0x7d, 0x68, 0x09, 0x1a, 0x0c, 0xf4, 0xf1, 0xfe, 0x9d, 0x6f, 0x6e,
0x11, 0xd0, 0x8a, 0xe3, 0xf1, 0x76, 0xe9, 0x60, 0xd6, 0x69, 0xcf, 0xb1, 0xb1, 0x95, 0xa9, 0x94,
0xd7, 0x9a, 0xe6, 0x8c, 0xa2, 0x87, 0xba, 0x0e, 0x65, 0xec, 0x34, 0xdb, 0xa5, 0x03, 0x4b, 0x11,
0x0f, 0x54, 0xc4, 0x03, 0x3b, 0xe2, 0x41, 0x39, 0xe2, 0x81, 0x86, 0x38, 0x51, 0x11, 0x27, 0x76,
0xc4, 0x49, 0x39, 0xe2, 0x44, 0x45, 0xec, 0x49, 0xba, 0xa3, 0x74, 0xeb, 0x41, 0x59, 0xaa, 0x4a,
0x6e, 0xe3, 0x4a, 0x8b, 0xd9, 0xb3, 0xf5, 0xd0, 0x69, 0x2b, 0x18, 0x3d, 0x85, 0x6b, 0xf4, 0xdf,
0x6d, 0xa9, 0x18, 0x3c, 0xa2, 0xca, 0xb2, 0x85, 0xce, 0x51, 0x7d, 0x2f, 0x07, 0x86, 0x9c, 0xd6,
0x3b, 0x78, 0x00, 0x05, 0x45, 0x89, 0x94, 0x07, 0xcb, 0x9e, 0x29, 0x5e, 0x88, 0x41, 0x6f, 0x29,
0x60, 0x7d, 0x58, 0xb5, 0x45, 0x26, 0xeb, 0x4a, 0xbd, 0xef, 0x2d, 0x15, 0x35, 0xeb, 0x33, 0x06,
0xdc, 0x7b, 0xd7, 0xe8, 0x33, 0x74, 0x8d, 0x62, 0x2e, 0x5d, 0x4b, 0x55, 0xd3, 0x78, 0x72, 0x3d,
0x4d, 0x6d, 0x7d, 0xed, 0xac, 0xc0, 0x69, 0xd1, 0x26, 0xfc, 0xb4, 0xf7, 0xbd, 0xbe, 0x9c, 0x23,
0x1b, 0x65, 0x2a, 0x2f, 0xbd, 0x8e, 0xd2, 0x1f, 0xa4, 0xfc, 0x02, 0x98, 0x0c, 0xf2, 0xfa, 0x9d,
0xb6, 0x0f, 0xa1, 0xf3, 0x93, 0x9c, 0xbb, 0xc8, 0xa2, 0xdb, 0xaf, 0xb4, 0x09, 0xee, 0xf8, 0x99,
0x19, 0x70, 0xf9, 0x30, 0xdc, 0x11, 0x6c, 0x68, 0xd6, 0xfe, 0xfe, 0xf7, 0x1a, 0xd3, 0x6c, 0x23,
0x50, 0x6c, 0xa5, 0x84, 0x3b, 0x04, 0x41, 0x94, 0xee, 0x83, 0x9f, 0xc8, 0xba, 0x7c, 0xf0, 0x81,
0x3c, 0x17, 0x21, 0x8f, 0xa7, 0x7f, 0xe7, 0x69, 0x1a, 0xc8, 0x4e, 0xce, 0xaf, 0xec, 0xe6, 0xf4,
0x0a, 0xad, 0x85, 0xa9, 0x0e, 0x16, 0xe3, 0xa7, 0xa2, 0xf5, 0x72, 0xf8, 0x10, 0xd6, 0x0b, 0xdc,
0x7f, 0x7c, 0x2d, 0x26, 0x0b, 0xeb, 0xd6, 0xe6, 0x6c, 0xc0, 0xad, 0x00, 0x9b, 0xf6, 0x8f, 0x31,
0xe3, 0x18, 0x75, 0xd0, 0x14, 0x9f, 0xfe, 0x3a, 0x74, 0x0b, 0x76, 0x00, 0xcd, 0xc3, 0xb5, 0x48,
0x43, 0xa7, 0x99, 0x03, 0xbb, 0xde, 0x49, 0xd8, 0x44, 0x17, 0x7d, 0x5c, 0xa5, 0x72, 0x57, 0x9a,
0xe1, 0xeb, 0xde, 0xba, 0xc0, 0x03, 0xb5, 0x5a, 0xc3, 0xb2, 0x8e, 0x42, 0x35, 0x6d, 0x69, 0xbf,
0xe1, 0xb1, 0xdf, 0xf0, 0xd8, 0x78, 0xc3, 0x83, 0xbe, 0x3f, 0xb4, 0xa0, 0x2f, 0x02, 0xd9, 0xf7,
0x3c, 0x0a, 0x5b, 0x23, 0xb4, 0x84, 0xa7, 0xc9, 0xab, 0xc7, 0xf5, 0x87, 0xf4, 0x87, 0x63, 0x58,
0x29, 0xb2, 0x49, 0x58, 0x2d, 0x92, 0x03, 0x6d, 0xf6, 0x43, 0x84, 0xc4, 0x91, 0xc3, 0x18, 0x90,
0x00, 0x4f, 0xd3, 0xf9, 0x70, 0x84, 0x60, 0x21, 0x78, 0x97, 0x4c, 0x19, 0xbd, 0x28, 0x8d, 0xf5,
0x60, 0x47, 0xca, 0x40, 0x6a, 0x23, 0x28, 0x6c, 0x81, 0x92, 0xc4, 0xce, 0xbe, 0x2a, 0xa4, 0x06,
0xef, 0xda, 0xef, 0x71, 0xb4, 0x2a, 0x8c, 0xa4, 0x4e, 0x2b, 0x2a, 0x79, 0x45, 0x48, 0x7b, 0x29,
0x4d, 0x09, 0xd5, 0x54, 0x65, 0x61, 0xb2, 0x77, 0xb3, 0xbe, 0xe6, 0xdd, 0x65, 0x48, 0x52, 0x14,
0x9e, 0x13, 0x89, 0x17, 0x38, 0x9d, 0x7c, 0x23, 0x7d, 0xeb, 0x74, 0x94, 0xde, 0x80, 0x8a, 0x34,
0x71, 0x68, 0x64, 0x63, 0xc4, 0x91, 0x3e, 0x95, 0x81, 0xc3, 0x78, 0xce, 0x42, 0x48, 0xe0, 0xd0,
0xb2, 0x45, 0xce, 0x24, 0xd3, 0xc9, 0xc3, 0x01, 0xd1, 0xf8, 0x83, 0x4b, 0x38, 0xf0, 0xe1, 0xac,
0x8e, 0xff, 0x0c, 0xe8, 0x63, 0x4d, 0xf8, 0x23, 0x21, 0x1f, 0xe4, 0x5f, 0x37, 0x40, 0x0a, 0x29,
0xd2, 0x1e, 0x0a, 0xef, 0x8f, 0x94, 0x0f, 0x16, 0x56, 0x46, 0x25, 0xa2, 0xa1, 0x4f, 0xea, 0x58,
0x99, 0x6d, 0xd0, 0x82, 0x48, 0xdb, 0xe6, 0x3f, 0x97, 0x58, 0x3b, 0x63, 0x9a, 0x5d, 0x62, 0x2d,
0xdb, 0xb2, 0x15, 0xe9, 0x59, 0x8b, 0xac, 0xac, 0xad, 0x5f, 0x85, 0xd2, 0x96, 0x52, 0x24, 0x35,
0x14, 0x91, 0xf3, 0x2f, 0x2b, 0x50, 0xa3, 0x62, 0x1c, 0x54, 0x21, 0xc2, 0x4c, 0xff, 0x55, 0x49,
0x6f, 0x99, 0x4b, 0x0c, 0x2b, 0x90, 0x67, 0x2e, 0x99, 0x2e, 0xe2, 0xc1, 0x20, 0xc5, 0x71, 0x26,
0x60, 0x46, 0x03, 0x8b, 0xd6, 0xfe, 0x51, 0xeb, 0x60, 0x1b, 0xa9, 0xd5, 0x3c, 0x42, 0x06, 0x12,
0x4f, 0x3c, 0x6a, 0x1e, 0xe3, 0xc4, 0xc3, 0x63, 0x94, 0x8a, 0xfe, 0x50, 0x4b, 0x30, 0x9d, 0x0d,
0x6f, 0xa8, 0x01, 0xd8, 0xab, 0x5f, 0xa2, 0xff, 0x86, 0x6e, 0xc3, 0x89, 0xeb, 0x7d, 0xf4, 0xdf,
0xc0, 0xf5, 0x9d, 0x41, 0xfd, 0x0a, 0xfd, 0x47, 0xd2, 0x12, 0xf4, 0x5f, 0xcf, 0x75, 0x83, 0x1a,
0xa8, 0xbe, 0xa8, 0x0e, 0xdf, 0x21, 0xc8, 0x1b, 0x7c, 0x7a, 0x40, 0x5c, 0x05, 0x41, 0x50, 0xbd,
0xfd, 0xbe, 0x89, 0x58, 0xb6, 0xd3, 0x20, 0x60, 0x7a, 0xe8, 0x29, 0xac, 0xee, 0x62, 0xe1, 0x83,
0x89, 0x68, 0x2e, 0xe0, 0xec, 0x3b, 0xc4, 0x36, 0xf1, 0xc9, 0xf7, 0x92, 0x7f, 0xb3, 0x78, 0x63,
0xc2, 0x62, 0x78, 0x04, 0x31, 0xfc, 0x44, 0xd2, 0x96, 0x08, 0x47, 0x93, 0x6c, 0x2c, 0x8f, 0x37,
0xb6, 0x5a, 0xc2, 0x8d, 0x50, 0x85, 0xf1, 0x44, 0xba, 0x12, 0xc0, 0xd2, 0xb1, 0x76, 0xa5, 0x7b,
0xc9, 0xaf, 0xe2, 0x7e, 0x76, 0xab, 0xa7, 0x82, 0xd0, 0x35, 0x82, 0xc7, 0x3d, 0x88, 0x80, 0x22,
0x82, 0xde, 0x9d, 0x9f, 0xd5, 0x0e, 0x9b, 0xed, 0xa3, 0xf6, 0xf1, 0xfb, 0xce, 0x9b, 0xe3, 0xc3,
0xe3, 0x77, 0xef, 0xdf, 0xbe, 0x3f, 0x3c, 0x30, 0x04, 0xd4, 0x01, 0x0b, 0xd4, 0x1a, 0xcb, 0x4c,
0xe6, 0x48, 0x87, 0x3c, 0x70, 0x87, 0x2c, 0x23, 0x88, 0x67, 0xe8, 0xca, 0x01, 0x0d, 0xf1, 0x8a,
0xf1, 0x99, 0x04, 0xa0, 0xe9, 0x21, 0x63, 0x17, 0xec, 0xb3, 0x78, 0x32, 0x77, 0x1c, 0xd1, 0xe4,
0xbf, 0x5a, 0xdf, 0x1b, 0xd2, 0x57, 0xfb, 0xbb, 0xeb, 0x61, 0x63, 0x8f, 0x46, 0x75, 0x73, 0xeb,
0x6a, 0x26, 0xc7, 0x3c, 0xca, 0xa6, 0x69, 0x84, 0x24, 0xee, 0x04, 0x41, 0x77, 0x8e, 0x3d, 0x7a,
0x34, 0x1a, 0x53, 0xe4, 0x06, 0x52, 0xbd, 0xfc, 0x5c, 0x34, 0x0e, 0xf5, 0x12, 0x51, 0xfe, 0x25,
0x66, 0x26, 0x9a, 0x64, 0x18, 0x03, 0x65, 0x62, 0xbf, 0x41, 0x73, 0x5d, 0x34, 0xed, 0xce, 0xcf,
0xf0, 0xfd, 0x0e, 0x96, 0xc7, 0xdd, 0x19, 0xe0, 0x88, 0xf8, 0x20, 0xb7, 0x91, 0x9b, 0x8b, 0x11,
0x1d, 0x2f, 0xee, 0xb2, 0x8a, 0xef, 0x86, 0xe3, 0x6b, 0x1c, 0xea, 0x97, 0xa4, 0x2f, 0xeb, 0xe7,
0x67, 0xa1, 0xa4, 0x7b, 0xb7, 0x9b, 0xef, 0xde, 0x1e, 0x37, 0x44, 0x5c, 0xbf, 0x76, 0xf3, 0xed,
0x31, 0xcd, 0x47, 0x93, 0x94, 0xbc, 0xcf, 0x09, 0xf1, 0x83, 0x78, 0x29, 0x12, 0xd8, 0xf1, 0x02,
0x37, 0x9d, 0x17, 0xc3, 0x4d, 0x01, 0x79, 0x81, 0xc6, 0x01, 0x4d, 0x76, 0xec, 0x58, 0xc5, 0xbd,
0x43, 0x46, 0x22, 0x10, 0xa9, 0x0c, 0x29, 0xc9, 0x70, 0x3d, 0xf6, 0x0d, 0x31, 0x72, 0xa1, 0x00,
0x23, 0x1b, 0x33, 0x0c, 0x1e, 0x2f, 0xa9, 0x42, 0xb6, 0x6f, 0x8a, 0x33, 0xe9, 0xfe, 0x2a, 0x1e,
0x28, 0x92, 0x02, 0x11, 0xc1, 0xc8, 0x2f, 0x6a, 0x7c, 0x8b, 0x66, 0x75, 0x8a, 0xfe, 0x07, 0x60,
0x61, 0x12, 0x41, 0x05, 0x14, 0x4e, 0x87, 0x8c, 0x4d, 0x9d, 0xf6, 0x97, 0x1b, 0x9c, 0x9f, 0x61,
0x59, 0x22, 0xb8, 0x89, 0x84, 0x64, 0x86, 0x42, 0xb4, 0x66, 0xf2, 0x12, 0x16, 0x99, 0x09, 0xbe,
0xc4, 0xfc, 0x3e, 0x06, 0x42, 0xaa, 0x0a, 0xe2, 0x64, 0x99, 0xf8, 0x72, 0xa2, 0x14, 0x39, 0x24,
0xb7, 0x90, 0xb0, 0xa2, 0x54, 0x71, 0x33, 0x76, 0xeb, 0xd2, 0xe7, 0x76, 0xc2, 0x8d, 0x4f, 0xc9,
0x93, 0x2f, 0xbf, 0x9d, 0x9d, 0xfc, 0x72, 0x76, 0x72, 0x71, 0xf6, 0xe5, 0xe7, 0x9a, 0x25, 0x20,
0x3e, 0x22, 0x98, 0xc3, 0xe3, 0x96, 0xe1, 0x20, 0xc7, 0xc7, 0xef, 0xde, 0x1e, 0xb6, 0xda, 0x6f,
0x0e, 0x0a, 0x9b, 0x50, 0xa0, 0xc2, 0x13, 0x9f, 0x4a, 0x71, 0x83, 0x0a, 0x07, 0x05, 0x2f, 0x57,
0x70, 0x8b, 0xa1, 0x6c, 0x21, 0x3c, 0x92, 0x26, 0x9d, 0x50, 0x0b, 0xf5, 0x77, 0xfc, 0x34, 0x51,
0x47, 0x29, 0xd0, 0x52, 0x71, 0xec, 0x9b, 0x4e, 0x21, 0x32, 0xd2, 0x20, 0x1e, 0x8f, 0x63, 0x16,
0xea, 0xc8, 0x10, 0x20, 0x14, 0x54, 0xfb, 0x49, 0x3a, 0xcf, 0x2e, 0xe3, 0xd9, 0x8b, 0x0b, 0x1b,
0xb3, 0x7f, 0xda, 0x6a, 0x83, 0x63, 0xa5, 0x83, 0x78, 0x5a, 0xf2, 0x34, 0x14, 0xcb, 0x2d, 0x8b,
0xd3, 0xcc, 0x60, 0x56, 0x45, 0x6a, 0x96, 0xe1, 0xca, 0xba, 0x0c, 0xbf, 0xa6, 0x6a, 0x69, 0x12,
0xce, 0xb3, 0x77, 0x18, 0xce, 0x2e, 0xef, 0x14, 0x0e, 0x52, 0x42, 0x42, 0x49, 0x87, 0xac, 0xec,
0x8d, 0x4a, 0x5d, 0xa1, 0xf6, 0xc3, 0xf3, 0x0b, 0x31, 0xf4, 0xda, 0x1f, 0x68, 0xe2, 0x4c, 0xaf,
0x0e, 0x0c, 0x4b, 0x36, 0x10, 0xc2, 0xb2, 0x7c, 0x79, 0x4e, 0x58, 0x42, 0x56, 0x0b, 0x34, 0x6b,
0xf2, 0xbc, 0xdc, 0x22, 0xf2, 0xc2, 0xb1, 0xa1, 0x47, 0x70, 0x86, 0x2f, 0xe6, 0x82, 0xb1, 0x3f,
0x68, 0xe9, 0x75, 0xd8, 0x5d, 0x6d, 0x83, 0xad, 0x1f, 0x58, 0x27, 0x94, 0xf7, 0x00, 0x6b, 0xbe,
0xc6, 0xe7, 0x4a, 0x38, 0xcd, 0x28, 0x66, 0x2f, 0x24, 0x34, 0xda, 0x9d, 0x77, 0x48, 0xbd, 0xa7,
0x8a, 0x51, 0x97, 0x7b, 0xfc, 0x23, 0x12, 0xc8, 0x9b, 0xbc, 0x7f, 0x80, 0x83, 0x34, 0x82, 0xa2,
0x12, 0x4a, 0x4b, 0x54, 0xc4, 0x63, 0x67, 0x13, 0x20, 0x70, 0x05, 0xb8, 0x75, 0xfa, 0x75, 0xeb,
0xbd, 0x39, 0xa2, 0xf1, 0xbf, 0x85, 0xbb, 0x4f, 0x5e, 0xb4, 0xc1, 0x91, 0xa8, 0xcc, 0x5e, 0xbe,
0x67, 0x29, 0xc1, 0x80, 0x33, 0x91, 0xfe, 0xa6, 0x3b, 0x65, 0x21, 0x1f, 0x5f, 0xf6, 0x03, 0xf4,
0x06, 0x66, 0xec, 0xc6, 0xa3, 0x4b, 0x92, 0x29, 0x72, 0xe8, 0x68, 0x00, 0xf1, 0x1e, 0x1d, 0x10,
0xa6, 0xd5, 0x42, 0x3a, 0xc3, 0x52, 0x77, 0xd8, 0x2f, 0xae, 0x07, 0x2b, 0x3a, 0x0b, 0x58, 0xa9,
0x5c, 0xb9, 0xcb, 0xae, 0x73, 0xa5, 0x2c, 0xaf, 0xd7, 0x2b, 0x62, 0xe9, 0xe0, 0x17, 0x1a, 0x40,
0x31, 0xaa, 0x3b, 0x82, 0x3e, 0xaa, 0x9b, 0x93, 0xe7, 0x1b, 0xe4, 0x8a, 0x5c, 0xb5, 0x53, 0xf0,
0xa5, 0x48, 0x52, 0x9d, 0x27, 0x62, 0x45, 0x12, 0x0d, 0x42, 0x93, 0x6b, 0x58, 0x91, 0x96, 0x06,
0x50, 0xcb, 0xcf, 0x49, 0xf4, 0x68, 0xa4, 0x90, 0x5e, 0x6b, 0x75, 0x90, 0x5e, 0xe9, 0x44, 0xe4,
0xaf, 0x5e, 0x8d, 0xc7, 0xf6, 0xad, 0x90, 0x32, 0x9d, 0x43, 0xe0, 0xe6, 0xc6, 0xb5, 0x7f, 0x0d,
0xaf, 0x94, 0x6b, 0x4f, 0x58, 0x31, 0xc6, 0x52, 0x6d, 0x4b, 0xa0, 0x3f, 0xa0, 0xca, 0x15, 0xdb,
0xa6, 0x2b, 0x3b, 0x36, 0x29, 0x5e, 0xf4, 0xee, 0x28, 0xc5, 0x70, 0xff, 0x15, 0x2a, 0x33, 0xc6,
0x57, 0xc4, 0x6f, 0x48, 0xa1, 0x2e, 0x93, 0x83, 0x5f, 0xb2, 0x7b, 0xa5, 0xe4, 0x76, 0xa8, 0xb5,
0x94, 0xa9, 0x48, 0xa1, 0xd2, 0xc2, 0x55, 0x79, 0xcf, 0xa4, 0x27, 0x82, 0x2d, 0x2d, 0xa9, 0x7b,
0xd1, 0x6a, 0x1a, 0x83, 0x15, 0x04, 0x85, 0x4c, 0xad, 0x24, 0x0e, 0x12, 0xc2, 0x14, 0x3e, 0xe6,
0xe2, 0xa7, 0x0b, 0x07, 0xf7, 0x82, 0xde, 0x67, 0x2a, 0x57, 0xd1, 0xcd, 0xea, 0xbc, 0x51, 0x71,
0x7f, 0xdc, 0x90, 0x75, 0xbb, 0x79, 0x29, 0xc8, 0x74, 0xe5, 0x9a, 0xb4, 0xdd, 0xf5, 0x58, 0xdf,
0x34, 0xe7, 0xa1, 0x20, 0xa1, 0x13, 0xe1, 0x77, 0x6e, 0xea, 0x66, 0xdb, 0x0d, 0x0a, 0xc9, 0x7d,
0x24, 0x5f, 0xd4, 0x26, 0x76, 0xe9, 0x18, 0xf5, 0x17, 0x54, 0xd7, 0x70, 0x38, 0xfa, 0xbc, 0x81,
0x11, 0xbb, 0xbe, 0xa8, 0x10, 0x47, 0x0a, 0x75, 0x03, 0x9c, 0x6e, 0x31, 0x5e, 0x1f, 0x21, 0x34,
0x14, 0xb7, 0x3a, 0x7f, 0x3d, 0xf9, 0xb3, 0xfb, 0xcb, 0xd9, 0x97, 0xd3, 0xee, 0xa7, 0xb3, 0x8b,
0xdf, 0x4e, 0xbe, 0x7c, 0x3c, 0xad, 0x1d, 0x76, 0xde, 0xbe, 0x79, 0x2b, 0xd9, 0xa5, 0x7b, 0x3b,
0xb6, 0xba, 0x1d, 0x8b, 0x24, 0xe7, 0x60, 0x96, 0xce, 0xad, 0x31, 0x3b, 0xf6, 0x16, 0xe3, 0xde,
0x62, 0x7c, 0xad, 0x16, 0xe3, 0xde, 0x86, 0xdb, 0xdb, 0x70, 0xcf, 0xdc, 0x86, 0x63, 0xe2, 0xb9,
0xaa, 0x19, 0x17, 0x14, 0x56, 0xc7, 0xbd, 0x61, 0xb7, 0x37, 0xec, 0xf6, 0x86, 0xdd, 0x13, 0x19,
0x76, 0x2f, 0xc8, 0xf2, 0xaa, 0xbc, 0x6f, 0xbc, 0xb9, 0x4d, 0xb6, 0x5a, 0x09, 0xad, 0x72, 0x7c,
0x70, 0x6f, 0x7a, 0xe9, 0xa6, 0x97, 0xe5, 0x39, 0x2f, 0xba, 0x51, 0x0e, 0xec, 0xaa, 0x76, 0xb3,
0xfd, 0x59, 0xaf, 0xc7, 0xb1, 0xd8, 0x8a, 0xf6, 0x15, 0xcb, 0x51, 0x56, 0xaa, 0xee, 0xc5, 0xc7,
0x93, 0x5f, 0x4e, 0x6b, 0x9d, 0x0d, 0x2c, 0xb9, 0x87, 0xb6, 0xd7, 0xec, 0x16, 0x59, 0xb9, 0x45,
0xb7, 0x8d, 0xbd, 0x26, 0x76, 0x15, 0xcb, 0x26, 0xd1, 0xde, 0x4c, 0x7b, 0x38, 0x33, 0xed, 0x19,
0x58, 0x45, 0xcf, 0xce, 0x52, 0xdc, 0xb1, 0x99, 0xb6, 0xbf, 0x27, 0xf9, 0x8c, 0xee, 0x49, 0xbe,
0x72, 0x73, 0xf8, 0x69, 0xcd, 0xcf, 0xe7, 0x66, 0x8c, 0xef, 0xca, 0x1c, 0xfe, 0x7f, 0x73, 0x73,
0x75, 0x7b, 0x93, 0x9f, 0xc1, 0xad, 0xb7, 0x79, 0x6b, 0xd0, 0xa1, 0xf6, 0x36, 0xff, 0xde, 0xe6,
0xdf, 0xdb, 0xfc, 0x0f, 0x61, 0xf3, 0x8b, 0xa9, 0x18, 0xcb, 0x0a, 0x7a, 0xb9, 0x2f, 0x60, 0x93,
0x9b, 0x92, 0x8a, 0xbc, 0xd1, 0x43, 0x90, 0xac, 0xb4, 0xc9, 0x77, 0x67, 0x68, 0xbc, 0x96, 0x8b,
0x8a, 0x2f, 0x7f, 0xa7, 0x7c, 0xb5, 0xab, 0xe4, 0x19, 0xdd, 0x78, 0x7c, 0x42, 0x57, 0xce, 0x3e,
0xa4, 0xef, 0xeb, 0x7a, 0xe8, 0x43, 0xee, 0x6a, 0xb9, 0x7d, 0x6a, 0x9b, 0x9b, 0x0b, 0x8f, 0xf7,
0x5a, 0xa0, 0x06, 0xc7, 0xd5, 0x00, 0x97, 0x26, 0x9c, 0x89, 0x01, 0x27, 0xa2, 0xda, 0xa3, 0xfd,
0x5d, 0x86, 0x11, 0x28, 0x0e, 0x5f, 0x94, 0xff, 0x90, 0x60, 0x5b, 0xa0, 0x8e, 0x24, 0xf7, 0x6e,
0xf9, 0x02, 0x11, 0xa8, 0xfd, 0xdc, 0x5c, 0xa8, 0xf0, 0x49, 0x39, 0x7c, 0xa2, 0xc2, 0x2f, 0xbb,
0xf8, 0x85, 0xe0, 0x3a, 0xef, 0x09, 0xa4, 0xe0, 0xd0, 0x1b, 0x5d, 0x9c, 0x3e, 0x4c, 0x93, 0xa3,
0xd5, 0xba, 0xac, 0x77, 0xe8, 0x33, 0x27, 0xae, 0x4e, 0xd0, 0x52, 0x20, 0x4f, 0x36, 0x41, 0x9e,
0xd8, 0x91, 0x27, 0x82, 0x31, 0x70, 0x60, 0x8e, 0xf5, 0x6f, 0x41, 0x63, 0x0e, 0x42, 0xbd, 0xea,
0xa3, 0x96, 0xbb, 0x12, 0xae, 0x64, 0x83, 0x3b, 0xcc, 0x14, 0x57, 0x82, 0x70, 0x25, 0xae, 0xe2,
0xf1, 0x05, 0x5c, 0xc6, 0x7b, 0xcc, 0xa8, 0x52, 0xdf, 0x9c, 0x91, 0xb8, 0xe6, 0xfb, 0xcb, 0xc4,
0x07, 0xfc, 0x80, 0xef, 0x2d, 0xbc, 0x60, 0x0f, 0x70, 0xa5, 0x13, 0x3b, 0x74, 0xb0, 0xc8, 0x33,
0xcd, 0x71, 0x41, 0xc1, 0x43, 0xbd, 0xdf, 0x5d, 0x4a, 0xe9, 0xa6, 0x52, 0x89, 0xa5, 0x54, 0xf2,
0x48, 0xa7, 0x83, 0x68, 0x2a, 0x54, 0x12, 0x9b, 0x12, 0x93, 0x4d, 0x94, 0xc2, 0xfd, 0x7d, 0x97,
0xfd, 0xe9, 0xa5, 0xfd, 0xe9, 0xa5, 0x72, 0xb7, 0x38, 0x1b, 0x32, 0x83, 0xcf, 0xec, 0x21, 0x5c,
0xe6, 0xd8, 0x51, 0x54, 0x42, 0xa5, 0xc8, 0xb7, 0xf6, 0x95, 0x00, 0x31, 0xf1, 0x97, 0x94, 0x5b,
0xd6, 0x9b, 0x2a, 0xd8, 0xfe, 0xf2, 0xce, 0xfe, 0xe0, 0xd7, 0x33, 0x39, 0xf8, 0xb5, 0x3b, 0xdf,
0xb6, 0x34, 0x15, 0xc5, 0x4f, 0x43, 0xcd, 0x22, 0xd3, 0x57, 0xe7, 0xa7, 0xa9, 0xc9, 0x32, 0x26,
0xe3, 0x24, 0xdb, 0xbb, 0xa0, 0xf7, 0x2e, 0xe8, 0xbd, 0x0b, 0xfa, 0x15, 0xba, 0xa0, 0xb1, 0xaa,
0x1e, 0x51, 0x99, 0xc1, 0xe7, 0xa5, 0xa7, 0x5b, 0x1f, 0xcd, 0x45, 0x20, 0x09, 0x14, 0x3e, 0x7e,
0x05, 0xb0, 0x65, 0x9d, 0x1b, 0x26, 0x2e, 0xc5, 0x9e, 0xac, 0xc4, 0x9e, 0x54, 0xc3, 0x9e, 0x48,
0xd8, 0x21, 0xd4, 0x56, 0x35, 0x37, 0xf9, 0xea, 0x17, 0x49, 0xe7, 0xfd, 0x4b, 0xdc, 0xad, 0xc5,
0x18, 0x4b, 0xc8, 0x62, 0x7b, 0x66, 0x56, 0xd0, 0xfe, 0x16, 0x57, 0xf9, 0x3a, 0xbc, 0x3b, 0x3d,
0xf8, 0x71, 0x95, 0xd8, 0x97, 0x78, 0xa1, 0xcc, 0x88, 0xa1, 0xe4, 0x20, 0x40, 0xb1, 0xc7, 0x4b,
0x3b, 0x7c, 0x0d, 0x75, 0xe5, 0x05, 0xfa, 0x47, 0x91, 0x10, 0x82, 0xdc, 0x6e, 0x6c, 0x8c, 0x46,
0x84, 0x45, 0x89, 0xdb, 0x8c, 0x35, 0xe0, 0xc4, 0x0a, 0x9c, 0x14, 0x80, 0xb1, 0x2b, 0x8f, 0xd7,
0xe2, 0x73, 0x14, 0x3e, 0x96, 0x73, 0x6e, 0x48, 0x1c, 0x73, 0x91, 0xf2, 0x9e, 0xea, 0x71, 0x43,
0x48, 0x47, 0x59, 0x42, 0x93, 0x98, 0xb7, 0xa6, 0x1c, 0x8a, 0xf6, 0xf1, 0x8f, 0x7f, 0x56, 0x3a,
0x61, 0x99, 0x8f, 0xd0, 0x0a, 0x32, 0x93, 0x1f, 0x53, 0xe0, 0x32, 0x1f, 0xaf, 0x28, 0x96, 0xcc,
0xe4, 0xfa, 0xf2, 0x32, 0x9d, 0x95, 0x3d, 0xb4, 0xba, 0x66, 0x18, 0xae, 0x96, 0x21, 0xad, 0xbd,
0x69, 0x6c, 0xae, 0x56, 0xe4, 0x38, 0xe6, 0xd8, 0x85, 0x0d, 0x38, 0x79, 0x1b, 0xa8, 0xf4, 0xd7,
0x5c, 0x88, 0x32, 0x44, 0x4a, 0xb6, 0x23, 0x12, 0xca, 0x0d, 0x1e, 0xf4, 0x96, 0x3b, 0x00, 0xc2,
0x4f, 0x89, 0xae, 0x92, 0x3a, 0x57, 0xde, 0x4b, 0xee, 0x16, 0xfb, 0x49, 0x7f, 0x8c, 0xa2, 0xb0,
0xd4, 0xb6, 0xec, 0x59, 0xed, 0xca, 0xdd, 0x54, 0x18, 0x9d, 0x19, 0xc4, 0x40, 0x42, 0xaa, 0xc4,
0x1c, 0x82, 0x46, 0x97, 0x65, 0x83, 0xb0, 0x2c, 0x8e, 0x7c, 0x8c, 0xba, 0x0d, 0x87, 0x83, 0xd3,
0xdf, 0xe7, 0x10, 0x4e, 0xc5, 0x49, 0x3e, 0x8b, 0xe7, 0xa6, 0xf7, 0x3b, 0xe0, 0x31, 0x8d, 0xf9,
0x74, 0x38, 0xe9, 0xde, 0xe2, 0x90, 0xb0, 0xda, 0x91, 0x72, 0x21, 0x96, 0x5b, 0xc5, 0x89, 0xd9,
0x22, 0x41, 0xc5, 0x5a, 0x2b, 0x62, 0x96, 0xb6, 0x09, 0x58, 0x9b, 0x04, 0x8c, 0x26, 0xc8, 0x9a,
0x31, 0x51, 0xfd, 0x51, 0x15, 0x34, 0x61, 0x36, 0x48, 0x22, 0xf1, 0x33, 0x60, 0x60, 0xe1, 0x3d,
0x2f, 0xd4, 0xd6, 0x0b, 0xb5, 0x45, 0xa1, 0xb6, 0x28, 0xd4, 0x86, 0x42, 0x9a, 0xbf, 0x9f, 0x60,
0xf3, 0x69, 0x48, 0x52, 0x36, 0xfa, 0xf4, 0x9d, 0xa0, 0x66, 0x2c, 0x07, 0x6e, 0xc6, 0x5d, 0xc2,
0xf1, 0x02, 0xda, 0x10, 0xbe, 0x70, 0xc0, 0x67, 0x08, 0xb6, 0x8d, 0x3e, 0x7c, 0xb5, 0xc7, 0x20,
0x08, 0xbd, 0xeb, 0x5b, 0xf2, 0xee, 0x16, 0x4b, 0x6b, 0xde, 0xf2, 0x6e, 0xc1, 0xe3, 0xa2, 0xc5,
0x37, 0x29, 0x92, 0x0e, 0x69, 0xc4, 0x1e, 0xd5, 0x61, 0x2f, 0x25, 0xb1, 0x27, 0x92, 0xdc, 0xe0,
0x10, 0xc2, 0x58, 0x42, 0x10, 0x6b, 0x87, 0xc2, 0x36, 0xd0, 0x17, 0x84, 0xef, 0x2a, 0x0e, 0x3f,
0x10, 0x0c, 0x15, 0xe2, 0xd9, 0xe3, 0x15, 0x86, 0x9f, 0x4c, 0x1f, 0x32, 0xf4, 0xc0, 0x50, 0x60,
0x5f, 0x93, 0x06, 0xea, 0xac, 0xe8, 0xaf, 0x4c, 0x70, 0x19, 0x22, 0xf4, 0xdb, 0x82, 0x07, 0xaa,
0xf0, 0x2b, 0xa4, 0x68, 0x12, 0x16, 0x4b, 0x0a, 0x12, 0x2f, 0x8c, 0x11, 0xe9, 0xf3, 0x6a, 0x7c,
0xdc, 0x76, 0x3a, 0x7c, 0x3e, 0x0b, 0xf1, 0xb5, 0x9d, 0xfc, 0x45, 0xbd, 0x34, 0xcf, 0xe9, 0x94,
0x39, 0x3f, 0x8b, 0x0a, 0xc1, 0xf6, 0x42, 0xe3, 0x96, 0x09, 0xb5, 0x96, 0xcd, 0x5b, 0x26, 0x4a,
0xea, 0x21, 0x94, 0xe0, 0x76, 0x92, 0x2a, 0x73, 0x99, 0x1b, 0x01, 0x33, 0xa6, 0x2e, 0x84, 0x92,
0x2c, 0x1b, 0x81, 0x90, 0x99, 0x93, 0x8d, 0x36, 0x08, 0xf4, 0xd8, 0xc5, 0xc4, 0xc6, 0x92, 0xa4,
0xd7, 0x80, 0x2e, 0xd3, 0x18, 0xcb, 0xd2, 0x02, 0x9c, 0xfa, 0xa8, 0x1c, 0x86, 0x2d, 0xcb, 0xb4,
0x64, 0xf5, 0xe2, 0x31, 0xe2, 0x41, 0x30, 0xe4, 0x20, 0xe8, 0x1a, 0x92, 0xcc, 0x2c, 0x54, 0xbf,
0x05, 0x7e, 0x3a, 0xcc, 0x7b, 0x57, 0x3a, 0xad, 0xb3, 0x2c, 0x8f, 0xf3, 0xb4, 0x3b, 0x5f, 0x8e,
0x93, 0x6c, 0x64, 0x29, 0x48, 0x42, 0xcc, 0x69, 0xbb, 0x49, 0x8a, 0x10, 0xef, 0x5d, 0xe1, 0x08,
0x8c, 0x2f, 0x60, 0xf7, 0x60, 0xc5, 0x06, 0x1a, 0x49, 0x1d, 0xc5, 0x49, 0x8a, 0x16, 0xae, 0x51,
0x3c, 0x49, 0x2d, 0x10, 0x03, 0xf6, 0xc0, 0x80, 0x96, 0x2d, 0x38, 0x00, 0x44, 0xb0, 0x9e, 0x8c,
0x47, 0x80, 0x98, 0xcb, 0xe3, 0x78, 0x1a, 0x5a, 0x8e, 0x5c, 0x15, 0x4d, 0xbb, 0x82, 0x61, 0xa7,
0xb0, 0xe8, 0x33, 0x79, 0x69, 0x5b, 0xe8, 0x31, 0x91, 0x3c, 0x2b, 0xf9, 0x49, 0x13, 0xe6, 0x26,
0x55, 0x73, 0xd9, 0x39, 0x15, 0xac, 0x79, 0x08, 0x0f, 0x20, 0x4b, 0x84, 0x0e, 0x61, 0xa9, 0x08,
0x54, 0xe6, 0xcb, 0x79, 0x3a, 0x18, 0x43, 0xb0, 0x41, 0xc4, 0x79, 0xa3, 0x34, 0x6a, 0x68, 0xf3,
0xfa, 0xaf, 0xce, 0x77, 0xa6, 0xa8, 0x42, 0x9f, 0xc2, 0x02, 0xf6, 0x83, 0x65, 0xfa, 0xc2, 0x53,
0x18, 0x3f, 0xd8, 0x67, 0x2d, 0xea, 0x54, 0x4c, 0x05, 0x88, 0x41, 0x42, 0xd0, 0x5f, 0xad, 0xef,
0x3e, 0xfd, 0xd5, 0xfe, 0xee, 0xb3, 0x09, 0xec, 0x06, 0x38, 0x6e, 0x71, 0x78, 0x5f, 0x83, 0x3e,
0xab, 0x41, 0x8d, 0xdb, 0x55, 0xc8, 0x2b, 0x2b, 0x22, 0x2e, 0x6b, 0xca, 0x6a, 0xc4, 0x54, 0xaa,
0x50, 0x7c, 0x6a, 0x9a, 0xea, 0x2b, 0x3b, 0xcf, 0x86, 0x93, 0x7c, 0x55, 0x08, 0x6d, 0x1a, 0x09,
0x99, 0x4b, 0x23, 0x24, 0x82, 0xae, 0x32, 0x21, 0x8d, 0x22, 0x15, 0x5b, 0x53, 0x1d, 0x45, 0x06,
0x45, 0xa4, 0x4b, 0xa4, 0xcf, 0x91, 0xda, 0x4f, 0x07, 0x56, 0xc4, 0x41, 0x89, 0x08, 0xac, 0x7d,
0x38, 0x28, 0xc9, 0x0d, 0xac, 0x38, 0x15, 0xda, 0x24, 0x97, 0x16, 0x25, 0x8f, 0x98, 0x65, 0x60,
0xa7, 0x80, 0x0b, 0x53, 0xa5, 0x1d, 0x9b, 0x5e, 0xe0, 0x59, 0x0e, 0xa1, 0x27, 0xbd, 0xa8, 0x50,
0x9a, 0x9d, 0x8b, 0x42, 0x8a, 0x00, 0x3b, 0xff, 0x44, 0xe5, 0x44, 0xed, 0x27, 0xcc, 0xa5, 0x41,
0xe7, 0x08, 0x7b, 0x59, 0xf1, 0x48, 0x28, 0xac, 0x8e, 0xa5, 0x33, 0x91, 0xd5, 0xa0, 0xc9, 0xa3,
0x9a, 0x42, 0xc2, 0x5f, 0x8a, 0xf8, 0x66, 0xba, 0x22, 0x99, 0x5a, 0xe7, 0x2b, 0x07, 0x91, 0xc4,
0x5e, 0x6e, 0xe3, 0x90, 0xd0, 0xfc, 0xe9, 0x98, 0x58, 0x1f, 0xaf, 0xc5, 0x32, 0x28, 0x8c, 0x20,
0x86, 0x4c, 0x22, 0x53, 0x45, 0x00, 0x6f, 0x4c, 0xbf, 0x0d, 0xf5, 0x66, 0xe0, 0xf8, 0xb1, 0x0e,
0x9c, 0x9d, 0xc2, 0x07, 0xb4, 0xd4, 0x85, 0xc6, 0x87, 0xe3, 0x57, 0x70, 0xc6, 0x2b, 0xbc, 0x97,
0xbb, 0x02, 0xcf, 0x76, 0xc4, 0xab, 0x93, 0x08, 0x87, 0x29, 0x95, 0x65, 0x40, 0x5d, 0xc3, 0xaf,
0xf2, 0x27, 0x29, 0xd8, 0x43, 0xd2, 0x09, 0x07, 0x67, 0x2d, 0x2f, 0x08, 0x0e, 0xe4, 0x1a, 0xfb,
0xa4, 0x1d, 0x17, 0x61, 0xaf, 0x32, 0x47, 0xe3, 0x63, 0x3f, 0x3d, 0x27, 0xc7, 0xd7, 0x7f, 0xf5,
0x68, 0xa4, 0x5f, 0xd9, 0xf3, 0x0c, 0xb2, 0xd1, 0xb4, 0xba, 0xf0, 0x31, 0x91, 0x21, 0x51, 0x47,
0x2a, 0x81, 0x6a, 0x24, 0x3b, 0x4e, 0x5b, 0x7d, 0xa8, 0x43, 0x5a, 0x2b, 0x1c, 0xa8, 0x09, 0xb7,
0x75, 0xad, 0x3d, 0x1e, 0xdf, 0xb8, 0x0a, 0x0e, 0x21, 0x5a, 0x2f, 0xe7, 0x4b, 0x29, 0xfe, 0xf4,
0x0d, 0x95, 0xca, 0xe8, 0xdf, 0x40, 0x5a, 0xa0, 0x60, 0xf4, 0xe5, 0x25, 0x88, 0x2d, 0x27, 0xf4,
0xd3, 0x51, 0x75, 0x28, 0x1e, 0x9d, 0x5c, 0x68, 0x0a, 0x91, 0x9c, 0x8f, 0x84, 0x28, 0xb6, 0x29,
0x20, 0x0e, 0xaf, 0xa2, 0x4f, 0xd4, 0x3e, 0x34, 0x54, 0xfd, 0x42, 0x5d, 0xf8, 0xf8, 0xcb, 0x4a,
0xe0, 0x26, 0x81, 0xd8, 0xd9, 0x0a, 0xd2, 0xd6, 0xf7, 0xba, 0x54, 0xd4, 0xb5, 0x3a, 0x6f, 0xa9,
0xa9, 0x14, 0x3e, 0x49, 0xa8, 0xa8, 0xf5, 0xd7, 0xf6, 0x2d, 0x9d, 0x69, 0x12, 0x10, 0x71, 0x34,
0x51, 0x00, 0x4f, 0xab, 0x57, 0xd1, 0xd4, 0x65, 0x6b, 0x92, 0xfe, 0x26, 0xfe, 0x20, 0x97, 0x9c,
0xbb, 0xda, 0xab, 0xfc, 0x0f, 0xaf, 0xf2, 0xdb, 0x3c, 0xc5, 0xc3, 0xd1, 0xa8, 0xec, 0xe4, 0x92,
0xc8, 0xb7, 0x1f, 0x5f, 0x12, 0x30, 0xa6, 0x33, 0x4c, 0x52, 0x6e, 0x99, 0xf3, 0x5f, 0x05, 0x2b,
0x7b, 0x86, 0x28, 0x1e, 0x65, 0x65, 0x14, 0x8b, 0x7c, 0x3b, 0xc5, 0x02, 0xc6, 0x44, 0xb1, 0x94,
0x5b, 0x46, 0xb1, 0x0a, 0xf6, 0xa2, 0x0f, 0x3b, 0xe1, 0xa6, 0x94, 0x9c, 0x9b, 0x11, 0xf9, 0xf6,
0x77, 0x43, 0x39, 0x88, 0xf1, 0xed, 0x50, 0x91, 0x5b, 0xfa, 0x4a, 0x94, 0x02, 0xb6, 0x8a, 0x60,
0xfb, 0xb9, 0x36, 0x9e, 0x5d, 0x4e, 0xae, 0xed, 0x84, 0x9b, 0xc8, 0x5c, 0x49, 0xac, 0xb2, 0x37,
0xf1, 0x1c, 0x6d, 0xc1, 0xc7, 0x34, 0xd9, 0xd7, 0x75, 0x1f, 0x98, 0x4c, 0xfc, 0x6a, 0x36, 0x2b,
0x48, 0x61, 0xc5, 0xed, 0x7a, 0x48, 0x13, 0xdb, 0x95, 0xac, 0x55, 0x49, 0xca, 0x89, 0x9f, 0xa6,
0x23, 0x56, 0x22, 0xd7, 0x57, 0x65, 0x9f, 0xe9, 0xb0, 0x95, 0x8c, 0x6a, 0x23, 0xf9, 0x25, 0x7e,
0x9a, 0x68, 0x11, 0xb9, 0xbe, 0x2a, 0xd5, 0x4c, 0xb4, 0xc8, 0xa8, 0xd6, 0x97, 0x4c, 0x3b, 0x3f,
0x9b, 0x25, 0x09, 0x1c, 0xf1, 0xd3, 0xf4, 0x5c, 0x2c, 0xcf, 0xf4, 0x55, 0x29, 0x64, 0x7c, 0x36,
0x56, 0xc2, 0xb4, 0x89, 0x28, 0xe1, 0xbf, 0x6c, 0x84, 0xd0, 0x53, 0x71, 0x92, 0x74, 0xb1, 0x92,
0x41, 0xb7, 0x2e, 0x8b, 0x32, 0x62, 0xef, 0xd5, 0xd8, 0x7b, 0x35, 0xf6, 0x5e, 0x8d, 0xbd, 0x57,
0x63, 0xef, 0xd5, 0x78, 0x3d, 0x5e, 0x0d, 0x76, 0x22, 0x58, 0x9c, 0x79, 0x53, 0x4e, 0xc9, 0x11,
0x3e, 0x78, 0x56, 0x8e, 0x0f, 0xf1, 0x5a, 0xd2, 0x6c, 0x9a, 0x8d, 0x62, 0x68, 0xfd, 0x16, 0x9e,
0x10, 0xaa, 0x9f, 0x91, 0x13, 0x6e, 0xa8, 0x6d, 0xcd, 0x05, 0xdc, 0xb9, 0xc2, 0x57, 0xc7, 0x88,
0x92, 0x46, 0x36, 0x10, 0xa5, 0x0e, 0xf2, 0xc9, 0x9b, 0x94, 0xb6, 0xfa, 0x49, 0x30, 0x39, 0x7a,
0xf9, 0xe9, 0xe2, 0xd3, 0xe7, 0xee, 0xf9, 0x9f, 0xb5, 0x77, 0xd2, 0x7d, 0xa8, 0xd3, 0x4f, 0x3f,
0x9f, 0x76, 0x7f, 0x3e, 0xf9, 0xf5, 0xd7, 0x13, 0xd4, 0xda, 0x76, 0xeb, 0xd8, 0x70, 0x18, 0xe6,
0xa0, 0xa8, 0x35, 0xc3, 0x62, 0x5c, 0xc1, 0x0e, 0xde, 0xad, 0x0d, 0xbb, 0x43, 0xfb, 0x73, 0x57,
0x26, 0xe4, 0x4e, 0xed, 0xbf, 0x47, 0x30, 0xdf, 0x4c, 0xde, 0x3c, 0xb3, 0xc9, 0x23, 0x9f, 0xb6,
0xb2, 0x58, 0x69, 0x5b, 0x18, 0x32, 0xa5, 0x5c, 0xba, 0x9e, 0x1d, 0x52, 0x6e, 0x86, 0xac, 0x65,
0x46, 0x3c, 0xc6, 0xe9, 0x3b, 0x89, 0x79, 0xd6, 0xd3, 0xe7, 0xcb, 0x38, 0x63, 0x3d, 0x95, 0x1c,
0xc4, 0x33, 0x1d, 0x1e, 0x50, 0xac, 0x8b, 0x22, 0x9d, 0x0e, 0x13, 0xbf, 0xac, 0x8e, 0xf5, 0x41,
0x96, 0xb8, 0x94, 0x25, 0x33, 0x6b, 0x3c, 0xcd, 0x14, 0x3a, 0x76, 0x45, 0x9d, 0x46, 0x04, 0x6d,
0x20, 0x23, 0x21, 0x0d, 0xa9, 0xcc, 0x7e, 0x98, 0xb8, 0x48, 0x88, 0xc2, 0xc0, 0xe1, 0xf8, 0x3d,
0x85, 0x35, 0xdd, 0x50, 0x3e, 0x53, 0x79, 0x7d, 0x79, 0x19, 0x39, 0x58, 0x55, 0x6e, 0xe0, 0x7b,
0x0b, 0x54, 0x6d, 0xe6, 0x8a, 0x38, 0xf4, 0x0f, 0x3b, 0x8c, 0x13, 0x49, 0x2c, 0x40, 0xaa, 0x73,
0x78, 0xf7, 0x79, 0xed, 0x66, 0xfb, 0x7d, 0x40, 0x84, 0x73, 0x5d, 0x50, 0xe1, 0x96, 0x90, 0x41,
0xea, 0x86, 0x9a, 0xc5, 0x68, 0x06, 0x62, 0x41, 0xa5, 0xc8, 0xc2, 0x7b, 0x89, 0x5c, 0x7c, 0x24,
0xd0, 0xe4, 0x2f, 0x06, 0x6f, 0x71, 0x33, 0x2e, 0x76, 0x08, 0xa9, 0xab, 0x1f, 0xe1, 0x0f, 0x4f,
0x9e, 0xa0, 0x8a, 0x9a, 0x83, 0x7d, 0xd5, 0xd2, 0x21, 0x42, 0x20, 0xad, 0x21, 0x23, 0xf0, 0x21,
0xa5, 0xae, 0xa4, 0x54, 0x3c, 0x31, 0xe8, 0xa9, 0x2b, 0xd9, 0x56, 0xbe, 0xec, 0xff, 0x03, 0x24,
0xfc, 0xa9, 0x11
0x92, 0x2c, 0x5b, 0xb6, 0x93, 0xec, 0x47, 0x75, 0x7a, 0xc5, 0xa2, 0xbb, 0xed, 0x0b, 0xd0, 0xee,
0x2e, 0x36, 0xed, 0xbd, 0xc3, 0x15, 0x0b, 0x43, 0xb2, 0x65, 0x47, 0xef, 0x6c, 0xcb, 0x4f, 0x56,
0x12, 0x3b, 0x87, 0xfc, 0xef, 0x8f, 0x33, 0xfc, 0x10, 0x49, 0x51, 0xf2, 0x47, 0x62, 0x27, 0x9b,
0x33, 0x8a, 0x6e, 0x2c, 0x72, 0x38, 0x1c, 0x92, 0xc3, 0xe1, 0xcc, 0x90, 0x1c, 0x7e, 0x9f, 0x8c,
0x86, 0xf1, 0xa8, 0xf1, 0xcb, 0xaf, 0xfd, 0x0f, 0x97, 0x27, 0xf3, 0x2c, 0x1e, 0x24, 0x8b, 0x24,
0x9d, 0x35, 0xae, 0x92, 0xf1, 0xd5, 0xbc, 0x31, 0x9a, 0xa4, 0x61, 0xee, 0x9f, 0x7c, 0x1f, 0x4f,
0x16, 0xf1, 0xc9, 0xf7, 0xc9, 0xa8, 0xf1, 0x1d, 0x81, 0x4d, 0x66, 0xf1, 0xd0, 0x9a, 0xa4, 0xb7,
0x73, 0xfb, 0xe4, 0x7b, 0xfa, 0xd9, 0x80, 0x2f, 0x02, 0x35, 0x1b, 0x26, 0x23, 0x15, 0x6c, 0x1a,
0x0f, 0x93, 0xeb, 0xa9, 0x04, 0xc9, 0x12, 0x8c, 0xc0, 0x58, 0x67, 0x01, 0x8a, 0x9f, 0x02, 0x90,
0xfe, 0xb9, 0x89, 0x07, 0xbd, 0xc6, 0xf5, 0x6c, 0x1e, 0x0e, 0xfe, 0xd5, 0x47, 0xe2, 0xac, 0x41,
0x3a, 0x5b, 0xe4, 0x94, 0xd0, 0x06, 0x24, 0xc7, 0xc3, 0xbf, 0x87, 0x93, 0xeb, 0xd8, 0x6e, 0xfc,
0x3b, 0x99, 0xf1, 0x94, 0x8b, 0x59, 0x8e, 0x89, 0x01, 0x49, 0xb2, 0x64, 0x20, 0x1f, 0x60, 0x6e,
0x3a, 0x81, 0x0a, 0xe6, 0xf5, 0xce, 0x5f, 0xf9, 0x59, 0x9c, 0x5f, 0x67, 0xb3, 0x06, 0x54, 0x68,
0xdd, 0x74, 0x5c, 0x15, 0xa2, 0x75, 0xd3, 0x71, 0x08, 0x90, 0xed, 0xdf, 0xcb, 0x04, 0xa5, 0xe4,
0xdf, 0x24, 0x5f, 0x19, 0x48, 0xfa, 0x44, 0x73, 0x18, 0x51, 0xe4, 0x7f, 0x96, 0x20, 0x11, 0xc4,
0x41, 0xbc, 0x9e, 0x52, 0x35, 0x6d, 0x64, 0x51, 0xc2, 0xf6, 0xba, 0xbd, 0xd7, 0xed, 0x8e, 0x3b,
0x4d, 0x87, 0x6a, 0x41, 0xb7, 0xd7, 0xee, 0xd8, 0x94, 0xa0, 0xb3, 0xc6, 0x30, 0x1e, 0xa4, 0xc3,
0xb8, 0x3f, 0x48, 0x27, 0x69, 0xc6, 0xc8, 0x41, 0x42, 0xe3, 0x19, 0xa4, 0x0f, 0x7f, 0x82, 0x74,
0x42, 0x4c, 0x51, 0xd1, 0x99, 0xa5, 0x74, 0xaa, 0x0c, 0xf7, 0x67, 0xe7, 0x2b, 0x21, 0xea, 0xfc,
0x9c, 0x54, 0x5a, 0x0d, 0xd3, 0xe5, 0x30, 0x27, 0x84, 0x04, 0xda, 0x72, 0x06, 0x3c, 0x4d, 0x96,
0x7d, 0x6c, 0x89, 0x44, 0x86, 0x34, 0x04, 0xae, 0xdc, 0x59, 0x79, 0x41, 0x13, 0x29, 0x26, 0x8f,
0x14, 0x21, 0xc2, 0x95, 0x3f, 0xbb, 0x5f, 0xdd, 0x9c, 0x37, 0x56, 0xaa, 0x48, 0x6b, 0xf0, 0x19,
0xab, 0x09, 0x69, 0x5c, 0x94, 0xaa, 0x42, 0x88, 0x69, 0x32, 0xc3, 0xec, 0x40, 0xe9, 0x33, 0xa4,
0x58, 0x2e, 0x5c, 0x10, 0xc0, 0xbe, 0x49, 0x8b, 0x6d, 0x9f, 0x62, 0x08, 0x97, 0x1b, 0x61, 0xe8,
0x69, 0x18, 0x4e, 0x01, 0x83, 0xd4, 0x5c, 0x4e, 0x89, 0xcb, 0x11, 0xf2, 0x26, 0xf6, 0x1a, 0xe3,
0x38, 0xef, 0xcf, 0xc3, 0x3c, 0x8f, 0xb3, 0x59, 0x7f, 0x9e, 0x2e, 0x94, 0xbe, 0x4c, 0x96, 0xf1,
0x84, 0xd4, 0x99, 0x66, 0xc3, 0xfe, 0xf5, 0x7c, 0x1e, 0x67, 0x6e, 0x45, 0x26, 0x99, 0xa3, 0x5a,
0x26, 0x43, 0xb8, 0x48, 0xee, 0xb4, 0x61, 0x48, 0x26, 0x71, 0xff, 0x7a, 0x96, 0xe4, 0x8b, 0x7e,
0x9e, 0xf6, 0x11, 0xc7, 0x42, 0x29, 0x98, 0x2e, 0x68, 0xef, 0xf5, 0x1a, 0xe9, 0x68, 0xb4, 0x88,
0xf3, 0x00, 0xb8, 0x91, 0xff, 0x5f, 0x26, 0x48, 0xae, 0xc8, 0x86, 0x79, 0xd3, 0xee, 0x98, 0xd2,
0x9a, 0x65, 0x6a, 0x15, 0x28, 0xde, 0x57, 0x96, 0x89, 0x3e, 0x87, 0x10, 0xd5, 0xa4, 0xd4, 0xd8,
0x9e, 0x5c, 0xcc, 0xbf, 0x3f, 0xf9, 0xcb, 0xf7, 0x66, 0x19, 0xc7, 0x64, 0xd1, 0xf3, 0x93, 0x72,
0x7f, 0x21, 0xf4, 0x67, 0x49, 0x74, 0x9d, 0xc7, 0xb4, 0xc3, 0x43, 0x18, 0x74, 0x9f, 0xb4, 0x78,
0x94, 0x66, 0x53, 0xc2, 0x6f, 0x39, 0x61, 0xfa, 0x3e, 0xf9, 0x93, 0x25, 0x4b, 0xff, 0x26, 0x4d,
0x86, 0x24, 0x29, 0x99, 0x59, 0x64, 0x4c, 0xc6, 0x93, 0xfe, 0xe7, 0x74, 0x91, 0xe4, 0xa4, 0x75,
0x01, 0x87, 0x70, 0x70, 0x7a, 0x23, 0x0a, 0xb7, 0xe3, 0x76, 0x6d, 0xe8, 0x10, 0x8e, 0x8a, 0xce,
0x1f, 0xca, 0xb1, 0x02, 0x3f, 0x9b, 0xbe, 0x5c, 0x9c, 0x95, 0x6a, 0xf8, 0x39, 0x0b, 0xc7, 0x94,
0xe1, 0x59, 0x49, 0xa7, 0x80, 0x3d, 0x61, 0x5d, 0xfd, 0xe9, 0xef, 0x1f, 0xbe, 0xbc, 0xff, 0xf2,
0xee, 0x7f, 0xfa, 0x17, 0x1f, 0x2f, 0x3f, 0x7f, 0xf8, 0xe9, 0xf7, 0x4f, 0x5f, 0x4e, 0x94, 0x92,
0x48, 0x53, 0x97, 0x48, 0x2c, 0x9f, 0xb7, 0x59, 0xa2, 0x4a, 0x6d, 0xa0, 0x44, 0x2b, 0x91, 0xb4,
0x7d, 0x79, 0x6c, 0xfb, 0x61, 0x6d, 0x6e, 0x54, 0xca, 0xd5, 0x59, 0xb3, 0x0e, 0x00, 0x39, 0xb0,
0xd4, 0x29, 0x8b, 0x41, 0x38, 0x91, 0xeb, 0x55, 0xd3, 0xa3, 0x52, 0xba, 0x89, 0x57, 0x7d, 0xe3,
0xf0, 0xde, 0x84, 0xd9, 0x2a, 0x99, 0x8d, 0x69, 0xd2, 0x0d, 0x24, 0x91, 0x6a, 0x0c, 0x89, 0xd1,
0x0e, 0x43, 0xce, 0xd0, 0x05, 0xba, 0x1c, 0x31, 0x74, 0x89, 0x6b, 0xe8, 0x05, 0x57, 0xb4, 0xdb,
0xd1, 0x07, 0xc0, 0x35, 0x37, 0xd1, 0xc5, 0xca, 0x79, 0xc5, 0xd1, 0x83, 0x2b, 0x8e, 0xf4, 0x8a,
0xa3, 0x35, 0x15, 0xab, 0x4c, 0x2e, 0xb3, 0x46, 0x3e, 0xa9, 0x66, 0x9b, 0x28, 0xab, 0xce, 0x23,
0xe5, 0xa2, 0x9a, 0x72, 0xa5, 0xbc, 0x3c, 0x5e, 0xa2, 0xfc, 0xd1, 0x39, 0x62, 0x2a, 0xf1, 0xb4,
0x3e, 0xd5, 0x78, 0xfa, 0x22, 0x9c, 0xce, 0x27, 0x71, 0xd6, 0x7b, 0x4f, 0xf2, 0x92, 0x69, 0x38,
0x8e, 0x77, 0xe5, 0x0e, 0xcc, 0x41, 0x0c, 0xd8, 0xab, 0x28, 0xa8, 0x59, 0x69, 0x17, 0xa7, 0x1f,
0x17, 0xe8, 0x01, 0xac, 0x40, 0x6a, 0x27, 0x79, 0xa2, 0x0d, 0xae, 0xda, 0x43, 0x52, 0x46, 0x81,
0x9a, 0x2d, 0x86, 0x28, 0x10, 0xba, 0x01, 0xc9, 0x27, 0xb2, 0x3a, 0xee, 0xbd, 0xb7, 0x58, 0x03,
0x5c, 0xca, 0x0e, 0x2a, 0x39, 0x84, 0x31, 0x0a, 0x82, 0x22, 0x95, 0xa0, 0x5e, 0x99, 0xa2, 0xa8,
0x8a, 0xa2, 0xc8, 0x48, 0x51, 0x3f, 0x92, 0x69, 0xea, 0x99, 0x69, 0xea, 0xd9, 0xbe, 0x22, 0x98,
0xa0, 0x52, 0xda, 0x06, 0x97, 0x16, 0x73, 0x71, 0xc4, 0xec, 0xc3, 0xc8, 0xb8, 0x28, 0x4d, 0x27,
0x42, 0x98, 0xdc, 0x26, 0xf9, 0x15, 0x01, 0x98, 0xeb, 0xb9, 0xf3, 0x24, 0x1f, 0x5c, 0x95, 0x73,
0x19, 0xdb, 0x91, 0x46, 0x66, 0xd7, 0x44, 0x0b, 0x41, 0x1c, 0x22, 0x13, 0x96, 0x2e, 0xc1, 0x6d,
0xc3, 0xf8, 0x26, 0x19, 0xc4, 0x6c, 0xb6, 0x65, 0x21, 0x11, 0x1d, 0x02, 0x4e, 0x52, 0xfb, 0x61,
0x5d, 0x08, 0xa7, 0x71, 0x16, 0xc2, 0xe4, 0x1a, 0xc4, 0x33, 0xd2, 0xd9, 0xfd, 0x61, 0xb2, 0xc8,
0xc3, 0xd9, 0x20, 0x5e, 0x2b, 0xc1, 0x4e, 0x09, 0x3b, 0x0e, 0xc3, 0x3c, 0xc4, 0xce, 0x9a, 0x41,
0x6f, 0xfd, 0xf7, 0xbb, 0xcb, 0xfe, 0x1f, 0x1f, 0x2f, 0x7e, 0xfe, 0xf4, 0xe5, 0xb7, 0x3e, 0x5b,
0x37, 0x4e, 0x8c, 0xd4, 0x61, 0x56, 0x3f, 0x97, 0xaa, 0xa0, 0x44, 0xe1, 0x50, 0x86, 0x6c, 0xad,
0xe2, 0x55, 0x49, 0x59, 0x34, 0x83, 0xad, 0xe2, 0x6a, 0x7b, 0x94, 0x65, 0x4e, 0x5a, 0x94, 0x0d,
0x84, 0x65, 0x21, 0x59, 0xb9, 0x17, 0x66, 0xca, 0x68, 0x9e, 0x42, 0x1a, 0x57, 0x21, 0x58, 0x2f,
0x50, 0x08, 0x41, 0x9d, 0xa2, 0x60, 0x34, 0x58, 0xa6, 0x46, 0xa1, 0x0a, 0xc3, 0x2b, 0x59, 0x43,
0x65, 0x34, 0xb9, 0xae, 0xe8, 0x3d, 0xc8, 0x51, 0x28, 0xc4, 0x5c, 0x46, 0x1e, 0x64, 0x0a, 0xe2,
0xa4, 0x62, 0x98, 0xae, 0xd1, 0x55, 0xc2, 0xba, 0x86, 0x24, 0x36, 0x3b, 0xcc, 0xe5, 0x59, 0x66,
0x25, 0x61, 0x42, 0xd5, 0x28, 0xd3, 0x56, 0xcc, 0xba, 0x6a, 0xf2, 0x24, 0x98, 0x1a, 0x0a, 0x17,
0x79, 0x96, 0xfe, 0x2b, 0xae, 0x63, 0x3d, 0x19, 0xa2, 0x9a, 0x03, 0x65, 0x28, 0x13, 0x23, 0x2a,
0xf9, 0x75, 0xfc, 0xa8, 0x03, 0xae, 0xa7, 0xfd, 0x36, 0x19, 0xe6, 0x57, 0xb5, 0xb4, 0x23, 0x44,
0x1d, 0x8b, 0xca, 0x70, 0x15, 0x8c, 0xaa, 0x80, 0xac, 0x61, 0x57, 0x1d, 0x76, 0x7d, 0x1b, 0x6a,
0x19, 0x45, 0x85, 0xa9, 0xe4, 0x17, 0x15, 0xcc, 0xc4, 0x36, 0x1a, 0x44, 0x1d, 0xf7, 0x94, 0x41,
0xa9, 0xab, 0x41, 0xac, 0xa3, 0xf0, 0x8b, 0xac, 0xa5, 0xb5, 0xa2, 0x6c, 0x40, 0x15, 0x62, 0xdd,
0x14, 0x65, 0xf2, 0xca, 0x15, 0x62, 0xcd, 0xe6, 0xa4, 0xe8, 0x92, 0x2b, 0xd8, 0x4a, 0x3e, 0xd1,
0x3f, 0x81, 0x6e, 0x63, 0x73, 0x09, 0xe4, 0x16, 0xc2, 0x4a, 0x54, 0x68, 0x12, 0x46, 0xc1, 0x36,
0xf2, 0x06, 0xfe, 0x31, 0xd4, 0x08, 0xc9, 0x2e, 0x17, 0x3c, 0xa2, 0x36, 0x4d, 0xba, 0x04, 0x5b,
0xc9, 0x10, 0xf6, 0xd7, 0x50, 0x19, 0xcb, 0x71, 0x25, 0x91, 0x62, 0xaa, 0x52, 0x20, 0xd8, 0x45,
0x34, 0xc8, 0x1f, 0xa6, 0x11, 0x95, 0xf3, 0x5d, 0x5d, 0x68, 0x98, 0xc6, 0x57, 0x45, 0xb8, 0xf3,
0xb4, 0x97, 0x3f, 0x0c, 0x5d, 0x23, 0x67, 0xbb, 0xba, 0x3c, 0xa8, 0xe0, 0x02, 0x15, 0xe5, 0x03,
0x26, 0xb3, 0xfa, 0x59, 0x4d, 0x5d, 0x31, 0x7e, 0xfa, 0x4c, 0x37, 0x0d, 0xa3, 0x8e, 0xb5, 0x72,
0xaa, 0xa2, 0x6f, 0x8b, 0x2a, 0x3e, 0x01, 0x56, 0x08, 0x6a, 0x25, 0xb5, 0x7f, 0xc0, 0x2d, 0xe6,
0x90, 0x7f, 0x5a, 0x85, 0x76, 0x39, 0x48, 0xb2, 0x01, 0xd1, 0xaf, 0xa8, 0x4e, 0x13, 0x90, 0xaa,
0x70, 0x58, 0x09, 0xb0, 0xd3, 0x69, 0x9f, 0xdb, 0x3e, 0x31, 0xd6, 0x2d, 0x5d, 0xcb, 0xe2, 0xaa,
0xf4, 0x20, 0xcd, 0x66, 0x44, 0x0f, 0x9a, 0x73, 0x8b, 0x4b, 0x41, 0xc5, 0x4a, 0xaa, 0xda, 0x1b,
0x29, 0xa9, 0x15, 0x6a, 0x06, 0x8c, 0x54, 0xc7, 0xa2, 0x93, 0xaf, 0x29, 0xf7, 0x3b, 0x68, 0x9a,
0xaa, 0x0e, 0x77, 0xdf, 0x80, 0x7e, 0x61, 0xee, 0xaa, 0x79, 0x96, 0xfe, 0x6f, 0x3c, 0xc8, 0xe3,
0x21, 0x27, 0x5f, 0xb5, 0xf9, 0x14, 0x7a, 0xa8, 0xed, 0xf7, 0xb0, 0xda, 0x1d, 0x4b, 0xaf, 0xb1,
0x7d, 0xeb, 0xd5, 0x68, 0x86, 0xc4, 0xf2, 0xaa, 0xb6, 0x48, 0x35, 0x52, 0x98, 0x3b, 0x82, 0x35,
0xaf, 0xa6, 0x58, 0xb9, 0x51, 0x15, 0x3d, 0x2d, 0xe1, 0x68, 0x2f, 0x57, 0xdb, 0x36, 0xb5, 0x4e,
0xe1, 0x35, 0x50, 0xb9, 0x43, 0x0d, 0x72, 0xe9, 0x5b, 0xff, 0xfe, 0x5e, 0xe2, 0xf5, 0x70, 0x96,
0x27, 0xe1, 0x24, 0x09, 0x17, 0x28, 0x2e, 0x09, 0xb3, 0x7a, 0x26, 0x45, 0xdd, 0x33, 0xd6, 0xe3,
0x53, 0x65, 0x1b, 0x58, 0xff, 0xd4, 0x62, 0x35, 0xb6, 0x97, 0x2e, 0xff, 0xb5, 0x72, 0x15, 0xe4,
0x68, 0x1c, 0x6f, 0xad, 0xab, 0xef, 0x5b, 0xe3, 0x3e, 0x8c, 0xce, 0xbc, 0x67, 0xe5, 0xf7, 0x70,
0xfa, 0xeb, 0x53, 0xe8, 0x9d, 0x4f, 0xa9, 0x2d, 0xee, 0x59, 0xc5, 0x63, 0xea, 0x5d, 0x15, 0xf3,
0x6f, 0xa2, 0xac, 0x55, 0x72, 0xf6, 0xc6, 0x8a, 0x57, 0x05, 0xcf, 0xae, 0x57, 0xa5, 0xaa, 0x19,
0x72, 0x53, 0x9d, 0x68, 0x0d, 0xb7, 0x6d, 0xaf, 0xcc, 0xac, 0x61, 0xa5, 0x9d, 0xd4, 0x90, 0xb5,
0x4c, 0xf2, 0x60, 0xd5, 0x01, 0xe5, 0x20, 0x91, 0xeb, 0x3e, 0x45, 0xc2, 0x85, 0xf7, 0x24, 0x9e,
0x8d, 0x09, 0x65, 0xf4, 0x0f, 0x17, 0xb0, 0xb6, 0x5f, 0x29, 0xbd, 0x19, 0x9e, 0x3b, 0x5f, 0xcb,
0x24, 0x6b, 0x28, 0xe6, 0xb7, 0xa6, 0xe1, 0xd2, 0x42, 0xbd, 0x59, 0x13, 0xcc, 0xca, 0x48, 0xf5,
0xf3, 0x60, 0x31, 0x4d, 0xd3, 0xfc, 0x6a, 0x91, 0xc7, 0x73, 0xab, 0xd3, 0xee, 0xb8, 0x3a, 0x22,
0x57, 0x25, 0x90, 0xaa, 0x38, 0x14, 0x07, 0x53, 0x47, 0x03, 0xb9, 0x2f, 0x1b, 0x7f, 0x6b, 0x10,
0x2c, 0xdd, 0xc6, 0x8f, 0xf0, 0xa7, 0xf1, 0x43, 0x43, 0xc2, 0x5e, 0xc2, 0x0c, 0xd5, 0x69, 0xd8,
0x29, 0xc3, 0x9a, 0x57, 0x20, 0xcd, 0x8b, 0x26, 0x5a, 0xe0, 0x08, 0x7f, 0x9a, 0xc3, 0x55, 0x3f,
0x99, 0x63, 0x1c, 0x4d, 0x2d, 0x94, 0x94, 0xe8, 0x07, 0xf8, 0xd8, 0xf6, 0xbd, 0x7b, 0x52, 0xbd,
0x21, 0x52, 0x90, 0xb3, 0xd6, 0xd5, 0xc7, 0x45, 0x93, 0xd9, 0x5f, 0x57, 0xe5, 0x18, 0xe6, 0xe9,
0x09, 0xd1, 0x4e, 0x66, 0x0b, 0xc8, 0xd9, 0x64, 0x2f, 0x81, 0xd5, 0x51, 0xb5, 0xc0, 0xdf, 0xc6,
0x64, 0x7a, 0xe7, 0x66, 0xc9, 0x49, 0xf3, 0xcc, 0xce, 0x10, 0xa8, 0x8d, 0xe6, 0x6b, 0x6e, 0x10,
0x5a, 0x98, 0x65, 0x19, 0x57, 0x22, 0x15, 0xfd, 0x21, 0x7c, 0x72, 0xdb, 0xa9, 0x10, 0x74, 0xb7,
0x53, 0xa6, 0xf5, 0x9f, 0x1f, 0xbe, 0x7c, 0x42, 0xb5, 0x0c, 0xb7, 0xb9, 0xbd, 0xee, 0xab, 0x76,
0xc7, 0x17, 0x9b, 0x78, 0xbf, 0xbc, 0xfb, 0xe3, 0xf2, 0xb2, 0xff, 0xd3, 0xa7, 0x0f, 0x3f, 0x93,
0xa9, 0x75, 0xfa, 0xf6, 0xcd, 0xdb, 0xb3, 0x5e, 0xef, 0x4d, 0xe7, 0xac, 0xd3, 0x3d, 0x3b, 0xed,
0xbd, 0xde, 0xd8, 0x93, 0xc0, 0xc6, 0x81, 0xfe, 0x31, 0xd8, 0x50, 0x34, 0xc3, 0x2d, 0x06, 0x45,
0x33, 0x36, 0xe5, 0x6e, 0x0f, 0xb6, 0xeb, 0x5b, 0xf3, 0x1a, 0xf5, 0xe8, 0xde, 0x05, 0x76, 0x5a,
0x02, 0x79, 0x7d, 0xd8, 0xdf, 0xc8, 0x62, 0xa3, 0x08, 0x2f, 0x83, 0xc5, 0xff, 0x65, 0xb9, 0xd5,
0x22, 0xc9, 0xce, 0x24, 0x1d, 0x5b, 0x30, 0x1a, 0x1e, 0x6d, 0xa0, 0x27, 0xcd, 0x06, 0xaf, 0x18,
0x08, 0xdb, 0xf6, 0x4e, 0xc9, 0x10, 0x09, 0xe6, 0x0f, 0x2e, 0x1d, 0xbd, 0x62, 0x5f, 0x13, 0xfe,
0x5c, 0x97, 0xa7, 0x44, 0x97, 0xec, 0x30, 0x6a, 0x7f, 0xa5, 0x0b, 0x3a, 0xcb, 0x75, 0xb3, 0xb1,
0xc9, 0x80, 0xa9, 0x94, 0x30, 0x8a, 0x12, 0x98, 0x99, 0x92, 0x5c, 0x50, 0x67, 0x42, 0x31, 0xa3,
0x77, 0x9a, 0xbc, 0x8f, 0x35, 0x01, 0xb7, 0x64, 0xe8, 0x4a, 0xbd, 0x89, 0x91, 0xb5, 0x09, 0x63,
0xd2, 0xdc, 0x61, 0xd0, 0x22, 0xdd, 0xe8, 0x90, 0x31, 0xc3, 0xff, 0x87, 0x69, 0x6e, 0x89, 0xb6,
0xbb, 0xe2, 0x17, 0xe7, 0x87, 0x9b, 0x70, 0x12, 0x50, 0x34, 0x8e, 0xd4, 0x75, 0x4e, 0x41, 0xb6,
0x13, 0x2f, 0xe7, 0xd6, 0x50, 0x5b, 0x96, 0x70, 0xe0, 0x48, 0x51, 0xd8, 0x69, 0xe2, 0xff, 0xdb,
0x07, 0xd8, 0xb3, 0xbe, 0x4d, 0xb3, 0xc9, 0x70, 0xd3, 0x5d, 0xdf, 0xad, 0xd6, 0x24, 0x87, 0x21,
0x97, 0xb6, 0x79, 0xdb, 0xcb, 0x20, 0xa4, 0x7f, 0xd9, 0xf7, 0x0a, 0xc4, 0x56, 0x8b, 0xa6, 0xad,
0x64, 0x06, 0x2c, 0xef, 0x32, 0x9a, 0x72, 0xe8, 0x9a, 0x9c, 0x91, 0x94, 0xea, 0x13, 0x02, 0x6b,
0x1a, 0xc1, 0x8e, 0x95, 0x18, 0x76, 0xe0, 0x10, 0xd8, 0x6e, 0x67, 0xd2, 0x46, 0x9d, 0x02, 0x55,
0x54, 0xee, 0xa2, 0x94, 0xc8, 0x5d, 0x98, 0x6b, 0xda, 0xb0, 0x3e, 0xe8, 0x10, 0x42, 0x67, 0x13,
0xe5, 0xa1, 0x94, 0x18, 0xce, 0x06, 0x57, 0x69, 0x66, 0xce, 0xe3, 0x13, 0xb6, 0x8c, 0x69, 0x12,
0x0e, 0x62, 0x03, 0x1f, 0x2c, 0xae, 0x92, 0x51, 0xee, 0x6f, 0xc4, 0x49, 0xf5, 0xda, 0x42, 0xb5,
0xfb, 0x82, 0x8f, 0x10, 0x9b, 0x3d, 0x9c, 0x14, 0x3d, 0x79, 0x96, 0xe6, 0x7f, 0x2c, 0x20, 0x5d,
0xdb, 0x43, 0x96, 0xfc, 0x4e, 0x9f, 0x53, 0x32, 0xdd, 0x4a, 0xac, 0x58, 0xf4, 0x07, 0xe5, 0x44,
0x79, 0xde, 0x17, 0x54, 0x31, 0x28, 0x4e, 0x55, 0xa0, 0x22, 0x6d, 0xdf, 0xaa, 0xc5, 0xd2, 0xc9,
0x04, 0xcf, 0xe9, 0xf4, 0xe7, 0x71, 0xb6, 0x98, 0x13, 0xb8, 0xe4, 0x26, 0xa6, 0x5e, 0x90, 0x60,
0x30, 0x21, 0x1c, 0x41, 0x86, 0xee, 0xbc, 0x09, 0x32, 0xc3, 0xaa, 0x69, 0xb9, 0x57, 0x59, 0xbb,
0x8d, 0x3a, 0xee, 0x19, 0x0c, 0xff, 0x5a, 0xc5, 0x8f, 0x8b, 0x0a, 0xdd, 0xfb, 0x63, 0x89, 0xd1,
0x6e, 0xb2, 0x61, 0x5c, 0xe3, 0xf3, 0x71, 0x6a, 0x5a, 0xe5, 0xf3, 0x61, 0x09, 0x38, 0xab, 0xe0,
0x14, 0x66, 0x63, 0x52, 0x24, 0xae, 0x64, 0xff, 0xcd, 0x2e, 0x03, 0xca, 0xac, 0x92, 0xc9, 0xfc,
0x2a, 0x0c, 0x48, 0xff, 0xf9, 0x46, 0x29, 0x87, 0x8d, 0xe6, 0x0d, 0x77, 0x10, 0x18, 0xbd, 0x6e,
0xbc, 0xaa, 0xc6, 0x7f, 0x35, 0x60, 0x2a, 0x9a, 0x14, 0x60, 0xa9, 0x24, 0x4e, 0x57, 0x56, 0xfa,
0x9e, 0x16, 0x67, 0x24, 0x19, 0xcb, 0x3b, 0x41, 0xbb, 0xeb, 0xdf, 0x1f, 0x64, 0x16, 0x3e, 0xab,
0xe9, 0xa6, 0xa5, 0x6b, 0xdb, 0xc8, 0x9a, 0x22, 0x60, 0x4e, 0xe6, 0x4a, 0xca, 0x71, 0xe6, 0x1a,
0x67, 0xae, 0x4c, 0xdf, 0x3c, 0x1c, 0x0e, 0x49, 0x07, 0xf6, 0x47, 0xe1, 0x20, 0x4f, 0xc1, 0xd7,
0xda, 0x2b, 0x4d, 0x6c, 0xc1, 0x3f, 0xa5, 0xe9, 0xac, 0x16, 0xde, 0xc7, 0xec, 0xe6, 0xe3, 0x1f,
0x84, 0xd1, 0xa2, 0x10, 0x30, 0xed, 0x95, 0x2d, 0x29, 0xb3, 0x05, 0x7d, 0x2a, 0x3d, 0xbe, 0xc6,
0x0f, 0xc1, 0x16, 0x3e, 0xee, 0x5a, 0xea, 0x25, 0xb5, 0x41, 0xac, 0xfe, 0x37, 0x04, 0x0a, 0x3d,
0xf0, 0xbc, 0xee, 0xe7, 0xc1, 0xf5, 0xba, 0x78, 0x93, 0x54, 0x8b, 0xad, 0x85, 0xdb, 0x60, 0x57,
0xa9, 0x36, 0x60, 0xe2, 0xac, 0xc7, 0x8f, 0x43, 0x2b, 0x04, 0x6b, 0x1e, 0x25, 0xad, 0x39, 0x76,
0xad, 0xfb, 0xa9, 0xd0, 0x85, 0x1d, 0x13, 0x4e, 0xdf, 0xe0, 0x52, 0xeb, 0x12, 0x8b, 0xd5, 0x08,
0xec, 0x19, 0x46, 0x51, 0xb1, 0xe0, 0xf8, 0xa8, 0xd4, 0x55, 0xc5, 0xf9, 0x07, 0x58, 0x2a, 0x1e,
0x8e, 0x63, 0xe4, 0x5b, 0xa3, 0xef, 0xa8, 0xd6, 0xc1, 0xd5, 0x52, 0x36, 0x30, 0xa1, 0xa7, 0x5b,
0x3a, 0xe6, 0x4a, 0x2f, 0x13, 0x75, 0x3f, 0xde, 0x1f, 0xee, 0xe0, 0xac, 0x61, 0x97, 0x63, 0xed,
0x31, 0xd9, 0x2d, 0xe9, 0xfb, 0xd6, 0x4e, 0x4e, 0x3d, 0xa7, 0x03, 0x40, 0x25, 0x03, 0xf5, 0xc9,
0xcf, 0x6d, 0x1c, 0xe0, 0x68, 0xc3, 0xa6, 0x3c, 0xfc, 0x24, 0xbb, 0x7c, 0x8f, 0xbc, 0x43, 0xb6,
0xe7, 0x9d, 0x9b, 0xad, 0xb6, 0x4f, 0x0c, 0xb6, 0xe8, 0xa3, 0x1c, 0x15, 0xdd, 0x42, 0x56, 0x18,
0xfd, 0x0d, 0x06, 0xab, 0xbc, 0x6a, 0x70, 0xae, 0xf3, 0x49, 0x32, 0xab, 0x3d, 0x1a, 0xa7, 0x80,
0x54, 0xcb, 0x18, 0x05, 0xcc, 0x24, 0x6b, 0x54, 0x80, 0x3a, 0xae, 0x2a, 0x41, 0xbe, 0x20, 0xd9,
0xa3, 0x76, 0xb8, 0xf2, 0x65, 0x92, 0x45, 0x0a, 0x80, 0x5b, 0x1a, 0x0c, 0x93, 0x6c, 0xd2, 0x70,
0xee, 0xd4, 0x9b, 0x4f, 0x2d, 0xab, 0x90, 0x67, 0x03, 0x4b, 0xd5, 0xcd, 0x3d, 0x45, 0xe3, 0x6e,
0xc2, 0xa4, 0xf1, 0xc0, 0x2b, 0xcc, 0xb9, 0x5e, 0x3d, 0xdb, 0xb0, 0x15, 0xe3, 0x1f, 0x9c, 0x5d,
0x0f, 0x27, 0x0c, 0xd5, 0x86, 0xee, 0xc2, 0x27, 0x0f, 0x14, 0x92, 0x85, 0xaa, 0x58, 0xe8, 0xb1,
0x64, 0x60, 0x5a, 0x42, 0x0c, 0xa6, 0x19, 0x31, 0x88, 0x56, 0x5c, 0x43, 0xa4, 0xda, 0x3b, 0xf8,
0x2d, 0xb5, 0x2d, 0x50, 0xd0, 0xbe, 0x01, 0x8b, 0xae, 0x0a, 0xca, 0x64, 0x3b, 0x16, 0x16, 0xe7,
0x52, 0xf8, 0x70, 0x1e, 0xde, 0xc7, 0xbb, 0x6e, 0xc4, 0x4f, 0x6a, 0xa0, 0x75, 0xf3, 0xd0, 0xeb,
0x42, 0x9b, 0x4f, 0x87, 0x67, 0x7f, 0x86, 0x9b, 0x5f, 0xfa, 0x18, 0x65, 0xe9, 0xd4, 0x8c, 0x47,
0x86, 0x30, 0xd2, 0x0a, 0xcb, 0x94, 0x0c, 0xa4, 0x12, 0xcc, 0x6e, 0x8d, 0x4a, 0xd9, 0x26, 0xa2,
0xd9, 0xf0, 0xe8, 0x70, 0x1b, 0x10, 0x9e, 0xa7, 0xf5, 0x64, 0x13, 0x4b, 0x67, 0x1d, 0xd1, 0x79,
0x5a, 0x43, 0x32, 0xc9, 0xdc, 0x80, 0x60, 0x0a, 0xb5, 0xf9, 0x72, 0xf5, 0x54, 0xe7, 0x72, 0x95,
0xe1, 0x96, 0x3f, 0x82, 0xb0, 0x6f, 0x1a, 0x24, 0x69, 0xeb, 0x57, 0x1d, 0xc5, 0x60, 0xd7, 0xc1,
0x2a, 0x7e, 0x06, 0x61, 0xbf, 0xdc, 0xc9, 0xc6, 0x0a, 0x09, 0xac, 0xb9, 0xab, 0xe5, 0x5b, 0xb7,
0x70, 0xc3, 0x2a, 0x90, 0x69, 0x82, 0x63, 0x27, 0x0a, 0x04, 0x5c, 0xb5, 0x52, 0x21, 0xee, 0x6e,
0x7d, 0x1d, 0x47, 0x14, 0x14, 0x15, 0x99, 0x30, 0x28, 0xf9, 0xa4, 0x3c, 0xf3, 0x80, 0x81, 0xe0,
0xf9, 0x82, 0x0e, 0x39, 0x26, 0x64, 0xda, 0x4b, 0xbf, 0xb8, 0xfc, 0xab, 0xe6, 0xf0, 0xd3, 0x30,
0x40, 0xc2, 0x25, 0x73, 0x2a, 0xd1, 0x1c, 0x7e, 0xc0, 0x25, 0x4f, 0xd5, 0xf4, 0x5b, 0x7f, 0xb3,
0xf5, 0x1d, 0x68, 0x25, 0xc2, 0x7c, 0x3e, 0x09, 0x57, 0xec, 0x3a, 0x21, 0xdd, 0x0b, 0xb6, 0xe4,
0x2e, 0x68, 0x2f, 0x5b, 0x72, 0x9f, 0xb5, 0x97, 0xb6, 0x57, 0x90, 0xef, 0xaa, 0xa0, 0x2b, 0x15,
0x74, 0x25, 0x83, 0x9a, 0xea, 0x8b, 0xca, 0xf5, 0x45, 0x6a, 0x7d, 0x51, 0x4d, 0x7d, 0x91, 0x5a,
0x5f, 0x54, 0xaa, 0xef, 0x81, 0xb7, 0x2e, 0x45, 0x87, 0x3b, 0x6a, 0x27, 0xb9, 0x62, 0x8c, 0x1e,
0xeb, 0x9a, 0x25, 0x1b, 0x40, 0xb5, 0x9e, 0xa8, 0xa2, 0x9e, 0x1d, 0x34, 0xb2, 0x35, 0x57, 0x23,
0xab, 0x37, 0x22, 0xb9, 0x78, 0x1c, 0x85, 0xc3, 0x78, 0xaf, 0x4b, 0xde, 0xe1, 0x56, 0xad, 0x43,
0x2f, 0x37, 0xfb, 0x5c, 0x2b, 0xf6, 0x71, 0xf0, 0x50, 0xe9, 0xac, 0x5d, 0x04, 0x7a, 0x6d, 0x6f,
0x7c, 0x73, 0x02, 0x7b, 0xbb, 0x1b, 0xbc, 0x15, 0xf7, 0x77, 0x9f, 0xe8, 0xf6, 0x6e, 0xc5, 0xdd,
0xdd, 0x47, 0xbb, 0xb9, 0xbb, 0x67, 0xa3, 0xc2, 0x74, 0x17, 0x18, 0x04, 0x11, 0x73, 0xfd, 0x3b,
0x07, 0x0c, 0x7a, 0xf0, 0x3c, 0x2c, 0x89, 0xa3, 0xd9, 0x70, 0x34, 0x1b, 0x8e, 0x66, 0xc3, 0xd1,
0x6c, 0xa8, 0x30, 0x1b, 0xfe, 0x99, 0xa6, 0xd3, 0x87, 0x9b, 0x0e, 0x2f, 0xdd, 0x2a, 0x38, 0x48,
0xc0, 0x96, 0x5a, 0xd3, 0x41, 0x8c, 0xd3, 0x01, 0xcc, 0x87, 0x52, 0x5d, 0xeb, 0xad, 0x01, 0x45,
0xe7, 0x7f, 0x8c, 0x88, 0x28, 0x47, 0xd5, 0xff, 0xa8, 0xfa, 0x1f, 0x55, 0xff, 0x97, 0xa5, 0xfa,
0x6f, 0xa8, 0xa8, 0x1f, 0x46, 0x45, 0x3f, 0x25, 0xa9, 0x13, 0x38, 0x8c, 0xae, 0x06, 0x52, 0xe3,
0x53, 0x4a, 0x64, 0xcb, 0x1b, 0xb8, 0x8a, 0x2c, 0xc1, 0xdc, 0xe2, 0x06, 0x80, 0x2e, 0x09, 0x6f,
0xe2, 0x2c, 0x4f, 0x88, 0x84, 0xed, 0x8f, 0xe1, 0x1c, 0x4d, 0x3c, 0xcb, 0xfd, 0x5a, 0x89, 0xb4,
0xfe, 0xf0, 0x24, 0xe8, 0x85, 0x33, 0x52, 0x9e, 0xa0, 0x8c, 0x95, 0x8d, 0xe2, 0x33, 0x22, 0x34,
0xf9, 0xd6, 0x8f, 0xf9, 0x16, 0x6d, 0x58, 0x79, 0x4d, 0x96, 0xe4, 0x54, 0xdf, 0x13, 0x82, 0xdc,
0xfa, 0x9b, 0x08, 0x1c, 0xa2, 0x46, 0xb4, 0x5d, 0xd5, 0x5c, 0x54, 0xba, 0x5a, 0x73, 0x51, 0xe9,
0x6a, 0x83, 0xcb, 0x10, 0x57, 0x9b, 0xdc, 0x98, 0x79, 0xe8, 0x01, 0x9c, 0xcd, 0x4f, 0x52, 0x6c,
0xa2, 0x63, 0xe3, 0x78, 0xc8, 0xad, 0x80, 0x04, 0x53, 0x94, 0x0e, 0x92, 0xec, 0xf2, 0x41, 0x32,
0xde, 0x1b, 0xa2, 0x05, 0xb7, 0x18, 0x06, 0xb9, 0xf0, 0x55, 0xd5, 0x9d, 0xa5, 0x2b, 0x7e, 0x67,
0xe9, 0xaa, 0xee, 0xce, 0x12, 0x2f, 0xbe, 0xcd, 0x08, 0x94, 0x4f, 0x76, 0x3c, 0xe2, 0x21, 0x1e,
0x9c, 0xb5, 0x74, 0x86, 0x04, 0xd2, 0x54, 0x21, 0x52, 0xfb, 0xce, 0xc7, 0x8e, 0x82, 0x1b, 0x9c,
0xe0, 0x3a, 0x80, 0x0f, 0xdb, 0x67, 0xf4, 0xf3, 0x44, 0xfa, 0xc9, 0xdd, 0x0e, 0x34, 0x3c, 0x26,
0xc5, 0xd1, 0x5e, 0xe2, 0xf5, 0xa6, 0xb5, 0x4a, 0x60, 0x8e, 0x07, 0x09, 0x3b, 0x8d, 0x1f, 0x59,
0xd7, 0x34, 0x7e, 0xc0, 0xf1, 0x01, 0xd5, 0x50, 0xba, 0xdf, 0x79, 0x83, 0x41, 0x6d, 0xf1, 0x67,
0x3b, 0x73, 0x3a, 0xed, 0x5e, 0xb7, 0xf7, 0xaa, 0x49, 0x3f, 0xc7, 0xe4, 0xf3, 0x75, 0xf7, 0xbc,
0xc7, 0x3e, 0x23, 0xf2, 0xd9, 0x79, 0xdd, 0xeb, 0xf9, 0x6c, 0x7a, 0xab, 0x47, 0x1a, 0xc5, 0x29,
0x59, 0xca, 0xa8, 0xd3, 0x08, 0x64, 0x0c, 0xca, 0x24, 0x01, 0x77, 0xea, 0x16, 0xff, 0x20, 0x28,
0xa2, 0x69, 0x06, 0x32, 0xb0, 0xf0, 0xc7, 0x64, 0x70, 0x74, 0x34, 0x9d, 0x91, 0xbe, 0xa3, 0xc7,
0x7d, 0xe1, 0x32, 0x0f, 0x6d, 0xbf, 0xd7, 0x7d, 0x75, 0xfa, 0xe6, 0x0c, 0x42, 0xc9, 0x0a, 0x89,
0x68, 0x17, 0xd5, 0xcb, 0x25, 0x41, 0xa6, 0x83, 0x24, 0x6e, 0xe9, 0xd2, 0xd1, 0x86, 0xf8, 0xa8,
0x34, 0xab, 0xe8, 0x84, 0x66, 0x19, 0x0a, 0x30, 0xba, 0x12, 0x46, 0x1a, 0x34, 0x82, 0x0d, 0xc3,
0xaa, 0xf1, 0x5d, 0x00, 0x37, 0x3f, 0x1a, 0xff, 0x96, 0x20, 0x9c, 0x80, 0xd7, 0x58, 0x12, 0xb8,
0x76, 0xd3, 0x32, 0xa4, 0x3a, 0xb4, 0x79, 0x56, 0xde, 0x44, 0x36, 0x70, 0xe6, 0xe9, 0xad, 0x45,
0xc7, 0xcb, 0xeb, 0x9e, 0x77, 0xd8, 0x39, 0x51, 0x17, 0x5a, 0x42, 0x06, 0x83, 0x7c, 0xbc, 0x7d,
0xe3, 0x9a, 0x5b, 0x04, 0xb4, 0x62, 0xf0, 0xde, 0x3e, 0x1b, 0xcc, 0x26, 0xeb, 0x39, 0x3e, 0xb6,
0x32, 0x95, 0xf2, 0x5a, 0xd3, 0xce, 0x18, 0x7a, 0xa8, 0xeb, 0x54, 0xc6, 0xce, 0xb2, 0x6d, 0x36,
0xb0, 0x0c, 0xf1, 0x58, 0x45, 0x3c, 0xae, 0x46, 0x3c, 0xae, 0x47, 0x3c, 0xd6, 0x10, 0x47, 0x2a,
0xe2, 0xa8, 0x1a, 0x71, 0x54, 0x8f, 0x38, 0x52, 0x11, 0x3b, 0x92, 0xee, 0xa8, 0x1e, 0xed, 0x28,
0x96, 0xaa, 0x9a, 0xfb, 0xb8, 0xd2, 0x62, 0xf6, 0x6c, 0x3d, 0x74, 0xda, 0x0a, 0xc6, 0x8e, 0xe1,
0x1a, 0xfd, 0x77, 0x0f, 0x54, 0x0c, 0xf6, 0xa8, 0xb2, 0x3c, 0x40, 0xe7, 0xd8, 0x7c, 0x2f, 0x07,
0x86, 0x9c, 0xd5, 0x3b, 0x7e, 0x04, 0x05, 0x45, 0x09, 0x8d, 0x07, 0xcb, 0x9e, 0x29, 0x3a, 0x88,
0x41, 0x6f, 0x29, 0x61, 0x7d, 0x5c, 0xb5, 0x45, 0x26, 0xeb, 0x4a, 0xbd, 0x5e, 0x2d, 0x15, 0x35,
0xeb, 0x33, 0x06, 0xdc, 0x47, 0xd7, 0xe8, 0x33, 0x74, 0x8d, 0x22, 0x97, 0x6e, 0xa5, 0xaa, 0x69,
0x3c, 0xb9, 0x9d, 0xa6, 0xb6, 0xbd, 0x76, 0x56, 0xe2, 0xb4, 0x60, 0x17, 0x7e, 0x3a, 0xfa, 0x5e,
0xbf, 0x9d, 0x23, 0x1b, 0x75, 0x2a, 0x2f, 0xbb, 0x8f, 0x32, 0x1c, 0xc7, 0xe2, 0x06, 0x98, 0x0c,
0xf2, 0xf2, 0x9d, 0xb6, 0x8f, 0xa1, 0xf3, 0xd3, 0x9c, 0xbb, 0xa0, 0x42, 0xb7, 0x5f, 0x6b, 0x13,
0xdc, 0x89, 0x33, 0x33, 0xe0, 0xf2, 0xe1, 0xb8, 0x03, 0xd8, 0xd0, 0x6c, 0xfc, 0xf5, 0xaf, 0x0d,
0xae, 0xd9, 0x06, 0xa0, 0xd8, 0x4a, 0x09, 0x77, 0x04, 0x82, 0x2a, 0xdd, 0x27, 0x3f, 0xd2, 0x75,
0xf9, 0xe4, 0x07, 0xfa, 0xb6, 0x84, 0x3c, 0x9e, 0xee, 0x9d, 0xa3, 0x69, 0x20, 0x07, 0x39, 0xbf,
0x72, 0x98, 0xd3, 0x2b, 0xac, 0x16, 0xae, 0x3a, 0x54, 0x18, 0x3f, 0x1b, 0x5a, 0x2f, 0xa7, 0x8f,
0x61, 0xbd, 0xc0, 0x05, 0xc8, 0x97, 0x62, 0xb2, 0xf0, 0x6e, 0x6d, 0x67, 0x63, 0x61, 0x05, 0x54,
0x69, 0xff, 0x88, 0x19, 0xc3, 0xd4, 0x41, 0x53, 0x5c, 0xf6, 0xeb, 0xd4, 0x2e, 0xd9, 0x01, 0x2c,
0x0f, 0x6b, 0x91, 0x86, 0x4e, 0x33, 0x07, 0x0e, 0xbd, 0x93, 0xb0, 0x8b, 0x2e, 0xba, 0x5f, 0xa5,
0xf2, 0x50, 0x9a, 0xe1, 0xcb, 0xde, 0xba, 0xc0, 0x81, 0x5a, 0xaf, 0x61, 0x55, 0x8e, 0xc2, 0x66,
0xda, 0xd2, 0x71, 0xc3, 0xe3, 0xb8, 0xe1, 0xb1, 0xf3, 0x86, 0x07, 0x7b, 0xac, 0x68, 0xc9, 0x9e,
0x0f, 0xaa, 0xde, 0xf3, 0x28, 0x6d, 0x8d, 0xb0, 0x12, 0x8e, 0x26, 0xaf, 0xf6, 0xeb, 0x0f, 0x19,
0x26, 0x53, 0x58, 0x29, 0xd2, 0x99, 0xbf, 0x59, 0x28, 0x07, 0xd6, 0xec, 0xc7, 0x88, 0x89, 0x23,
0xc7, 0x31, 0xa0, 0x11, 0x9e, 0xe6, 0x8b, 0x64, 0x42, 0x60, 0x59, 0x50, 0x55, 0x41, 0x19, 0xbb,
0x29, 0x8d, 0x7a, 0xb0, 0x25, 0x65, 0x10, 0xb5, 0x11, 0x14, 0x36, 0x4f, 0x49, 0xe2, 0x67, 0x5f,
0x15, 0x52, 0xbd, 0x37, 0xdd, 0xb7, 0x18, 0xae, 0x0a, 0x91, 0x34, 0x59, 0x45, 0x35, 0x4f, 0x0e,
0x69, 0xcf, 0xaa, 0x61, 0x97, 0x6e, 0xb3, 0x30, 0x55, 0x77, 0xb3, 0xbe, 0xe6, 0xdd, 0xa5, 0x44,
0x52, 0x94, 0xde, 0x1e, 0x09, 0x97, 0x98, 0x4e, 0xbf, 0x89, 0xbe, 0xf5, 0x61, 0x12, 0xdf, 0x80,
0x8a, 0x34, 0xb3, 0x58, 0x78, 0x63, 0xc2, 0x91, 0x2e, 0x93, 0x81, 0x49, 0xb8, 0xe0, 0x31, 0x24,
0x30, 0xba, 0x6c, 0x99, 0x33, 0xe9, 0x74, 0x72, 0x30, 0x22, 0x9a, 0x78, 0x9d, 0x09, 0x43, 0x1f,
0x66, 0x4d, 0xfc, 0x33, 0x66, 0x2f, 0x3b, 0xe1, 0x47, 0x44, 0x3f, 0xe8, 0xbf, 0xb6, 0x47, 0x14,
0x52, 0xa2, 0x3d, 0x94, 0x1e, 0x2b, 0xa9, 0x1f, 0x2c, 0x54, 0x46, 0x25, 0xa2, 0xa1, 0x4f, 0x9a,
0xa8, 0xcc, 0xb6, 0x58, 0x41, 0xa2, 0x6d, 0x8b, 0x9f, 0x2b, 0xd4, 0xce, 0xb8, 0x66, 0x17, 0x55,
0x96, 0xed, 0x54, 0x15, 0x19, 0x54, 0x16, 0x59, 0x5b, 0xdb, 0x70, 0x13, 0x4a, 0x3b, 0x4a, 0x91,
0xd8, 0x50, 0x44, 0xce, 0x1f, 0x6d, 0x40, 0x8d, 0x8a, 0x71, 0xbc, 0x09, 0x11, 0x66, 0xfa, 0xaf,
0x6a, 0x7a, 0xcb, 0x5c, 0x22, 0xd9, 0x80, 0x3c, 0x73, 0xc9, 0x78, 0x19, 0x8e, 0xc7, 0x31, 0x06,
0x9a, 0x80, 0x19, 0x0d, 0x2c, 0xda, 0xf8, 0x5b, 0xa3, 0x87, 0x36, 0x52, 0xa7, 0x7d, 0x46, 0x0c,
0x24, 0x91, 0x78, 0xd6, 0x3e, 0xc7, 0xc4, 0xd3, 0x73, 0x92, 0x4a, 0xfe, 0x30, 0x4b, 0x30, 0xce,
0x92, 0x1b, 0x66, 0x00, 0x0e, 0x9a, 0x23, 0xf2, 0x5f, 0x62, 0xb7, 0xac, 0xb0, 0x39, 0x24, 0xff,
0x8d, 0x6d, 0xd7, 0x1a, 0x37, 0xaf, 0xc8, 0x7f, 0x34, 0x2d, 0x22, 0xff, 0x0d, 0x6c, 0xdb, 0x6b,
0x80, 0xea, 0x4b, 0xea, 0x70, 0x2d, 0x8a, 0xbc, 0x25, 0xa6, 0x07, 0x04, 0x56, 0x28, 0x08, 0x6a,
0x76, 0xdf, 0xb6, 0x09, 0xcb, 0xf6, 0x5a, 0x14, 0x4c, 0x8f, 0x3d, 0x85, 0xea, 0x2e, 0x0a, 0x1f,
0x24, 0xa2, 0xbd, 0x84, 0xb3, 0xef, 0x10, 0xdc, 0xc4, 0xa5, 0xdf, 0x2b, 0xf1, 0xcd, 0x03, 0x8e,
0x15, 0x16, 0xc3, 0x1e, 0xc4, 0xf0, 0x13, 0x49, 0x5b, 0x2a, 0x1c, 0x4d, 0xb2, 0xb1, 0x3e, 0xe0,
0xd8, 0x7a, 0x09, 0x37, 0x21, 0x15, 0x86, 0x33, 0xe9, 0x4a, 0x00, 0x4f, 0x47, 0xed, 0x4a, 0xf7,
0x92, 0x5f, 0x85, 0xc3, 0xf4, 0x56, 0x4f, 0x05, 0xa1, 0x6b, 0x04, 0x0f, 0x07, 0x10, 0x02, 0xa5,
0x08, 0xe3, 0xf8, 0xf9, 0xa2, 0x71, 0xda, 0xee, 0x9e, 0x75, 0xcf, 0xdf, 0xf6, 0x5e, 0x9d, 0x9f,
0x9e, 0xbf, 0x79, 0xfb, 0xfa, 0xed, 0xe9, 0x89, 0x21, 0xa2, 0x0e, 0x58, 0xa0, 0x95, 0xc1, 0xcc,
0x64, 0x8e, 0xb4, 0xe8, 0x6b, 0x78, 0xc4, 0x32, 0x82, 0x80, 0x86, 0xb6, 0x1c, 0xd1, 0x10, 0x57,
0x8c, 0x9f, 0x69, 0x04, 0x9a, 0x01, 0x31, 0x76, 0xc1, 0x3e, 0x0b, 0x67, 0x0b, 0xcb, 0x2a, 0x9a,
0xfc, 0x67, 0xe7, 0x6b, 0x4b, 0xfa, 0xea, 0x7e, 0xb5, 0x1d, 0x34, 0xf6, 0x58, 0x58, 0x37, 0xbb,
0xa9, 0x66, 0x0a, 0xcc, 0x93, 0x74, 0x1e, 0x07, 0x44, 0xe2, 0xce, 0x08, 0x74, 0xef, 0xdc, 0x61,
0x47, 0xa3, 0x91, 0x22, 0xdb, 0x93, 0xea, 0x15, 0xe7, 0xa2, 0x31, 0xd6, 0x4b, 0xc0, 0xf8, 0x97,
0x9a, 0x99, 0x64, 0x92, 0x21, 0x06, 0xc6, 0xc4, 0x6e, 0x8b, 0xe5, 0xda, 0x64, 0xda, 0x7d, 0xbe,
0xc0, 0xfb, 0x1d, 0x3c, 0x4f, 0xb8, 0x33, 0xc0, 0x11, 0xf1, 0x83, 0xdc, 0x46, 0x61, 0x2e, 0x06,
0x6c, 0xbc, 0x84, 0xcb, 0x2a, 0xbc, 0x4b, 0xa6, 0xd7, 0x18, 0xec, 0x97, 0xa6, 0xaf, 0x9a, 0x9f,
0x2f, 0x7c, 0x49, 0xf7, 0xee, 0xb6, 0xdf, 0xbc, 0x3e, 0x6f, 0x15, 0x81, 0xfd, 0xba, 0xed, 0xd7,
0xe7, 0x2c, 0x9f, 0x4c, 0x52, 0xfa, 0x98, 0x27, 0x04, 0x10, 0x12, 0xa5, 0x68, 0x64, 0xc7, 0x4b,
0x6c, 0xba, 0x28, 0x86, 0x4d, 0x01, 0x79, 0x41, 0xc6, 0x81, 0x4c, 0x76, 0x74, 0xac, 0x62, 0xef,
0xd0, 0x91, 0xf0, 0x8a, 0x54, 0x8e, 0x94, 0x66, 0xd8, 0x0e, 0xff, 0x86, 0x28, 0xb9, 0x50, 0x80,
0x93, 0x8d, 0x0c, 0x83, 0xe3, 0x25, 0x55, 0xc8, 0xf7, 0x4d, 0x31, 0x93, 0xed, 0xaf, 0xe2, 0x40,
0xd1, 0x14, 0x08, 0x09, 0x46, 0x7f, 0x31, 0xe3, 0xbb, 0x68, 0x56, 0xaf, 0xec, 0x7f, 0x00, 0x16,
0xa6, 0x21, 0x54, 0x40, 0xe1, 0xb4, 0xe8, 0xd8, 0x34, 0x59, 0x7f, 0xd9, 0xde, 0xe7, 0x0b, 0x94,
0x25, 0x05, 0x37, 0xd1, 0xa0, 0xcc, 0x50, 0x88, 0xd5, 0x4c, 0x9f, 0xcd, 0xa2, 0x33, 0xc1, 0x95,
0x98, 0xdf, 0x45, 0x20, 0xa2, 0xaa, 0x10, 0x4e, 0x96, 0x89, 0xaf, 0x27, 0x4a, 0x91, 0x43, 0x72,
0x0b, 0x29, 0x2b, 0x4a, 0x15, 0xb7, 0x43, 0xbb, 0x29, 0x7d, 0x3e, 0x4c, 0xb8, 0x89, 0x29, 0x89,
0x94, 0x62, 0xd8, 0xe2, 0xf3, 0x37, 0xaf, 0x4f, 0x3b, 0xdd, 0x57, 0x27, 0xa5, 0x4d, 0x25, 0x50,
0xc9, 0xa9, 0x8f, 0xa4, 0xbc, 0xe1, 0x84, 0x71, 0xed, 0xeb, 0x15, 0xd6, 0x72, 0x24, 0x58, 0xf9,
0x41, 0x2c, 0x26, 0x6d, 0xf4, 0x17, 0xfc, 0x36, 0x7d, 0x57, 0x4b, 0x93, 0x6f, 0x8c, 0x4c, 0x2d,
0x15, 0x23, 0xde, 0xf4, 0x4a, 0xf1, 0x90, 0xc6, 0xe1, 0x74, 0x1a, 0xf2, 0x00, 0x47, 0x86, 0xf0,
0x9e, 0xa0, 0xcf, 0xcf, 0xe2, 0x45, 0x3a, 0x0a, 0xb3, 0x6f, 0x2e, 0x58, 0xcc, 0xf1, 0x01, 0xab,
0x1d, 0xce, 0x92, 0x8e, 0xc3, 0x79, 0xcd, 0x03, 0x50, 0x3c, 0xb7, 0x2e, 0x16, 0x32, 0x87, 0x59,
0x17, 0x0d, 0x59, 0x86, 0xab, 0xeb, 0x32, 0x7c, 0x6f, 0xb5, 0xa2, 0x49, 0x98, 0x57, 0xdd, 0x61,
0x98, 0x5d, 0xdf, 0x29, 0x02, 0xa4, 0x86, 0x84, 0x9a, 0x0e, 0x59, 0xdb, 0x1b, 0x1b, 0x75, 0x85,
0xda, 0x0f, 0xcf, 0x2f, 0xb0, 0xd0, 0x4b, 0x7f, 0x9a, 0x49, 0x30, 0xbd, 0x3a, 0x30, 0x3c, 0xd9,
0x40, 0x08, 0xcf, 0x72, 0xe5, 0x39, 0x51, 0x11, 0xa8, 0xba, 0x40, 0xb3, 0x25, 0xcf, 0xcb, 0x2d,
0xa2, 0x6f, 0x20, 0x1b, 0x7a, 0x04, 0x33, 0xdc, 0x62, 0x2e, 0x18, 0xfb, 0x83, 0x95, 0xde, 0x86,
0xdd, 0xd5, 0x36, 0x54, 0xf5, 0x03, 0xef, 0x84, 0xfa, 0x1e, 0xe0, 0xcd, 0x57, 0xdb, 0x4e, 0xf3,
0xde, 0x7d, 0xfc, 0xfd, 0xe2, 0xdd, 0xaf, 0x17, 0xef, 0x2e, 0x2f, 0x3e, 0xfe, 0x52, 0xfd, 0x24,
0x0d, 0x28, 0xf9, 0x6a, 0xd0, 0xcd, 0x20, 0xe4, 0x0f, 0x29, 0xb4, 0xba, 0xbd, 0x37, 0x24, 0x9b,
0x69, 0x4f, 0x7d, 0xb1, 0x2d, 0x10, 0xd0, 0x70, 0xdf, 0xf4, 0x99, 0x04, 0x0c, 0xe5, 0x08, 0xda,
0x8c, 0x2f, 0x2d, 0x69, 0x81, 0x88, 0xb0, 0x4d, 0x81, 0xc0, 0x5f, 0x60, 0x37, 0xd9, 0xd7, 0xad,
0xf3, 0xea, 0x8c, 0x45, 0x09, 0x2f, 0x7c, 0x82, 0xb2, 0x26, 0x00, 0xde, 0x46, 0x65, 0xb6, 0x8b,
0x8d, 0x4d, 0x09, 0x06, 0x3c, 0x8e, 0xec, 0x37, 0xdb, 0x4e, 0xf3, 0x05, 0x3f, 0xf0, 0x1f, 0xd8,
0x3a, 0x66, 0x11, 0x87, 0x93, 0x11, 0xcd, 0x2c, 0x72, 0xd8, 0xe8, 0x01, 0xf1, 0x0e, 0x1b, 0x40,
0xae, 0xfa, 0x42, 0x3a, 0xc7, 0xd2, 0xb4, 0xf8, 0x2f, 0xa1, 0x2c, 0xcb, 0x7d, 0x8b, 0xa6, 0xac,
0xd0, 0x00, 0xd3, 0xeb, 0x5c, 0x29, 0x2b, 0xea, 0x75, 0xca, 0x58, 0x7a, 0xf8, 0x90, 0x03, 0x68,
0x4f, 0x4d, 0xab, 0xa0, 0x8f, 0x29, 0xf0, 0xf4, 0x95, 0x07, 0xb9, 0x22, 0x5b, 0xed, 0x14, 0xbc,
0x39, 0x49, 0xab, 0x73, 0x8a, 0x88, 0x92, 0x54, 0xe3, 0xd0, 0xe4, 0x20, 0x6a, 0xdb, 0xd2, 0x00,
0x6a, 0xf9, 0x39, 0x8d, 0x31, 0x4d, 0xb4, 0xd6, 0x6b, 0xad, 0x0e, 0xda, 0x2b, 0xbd, 0x80, 0xfe,
0xd5, 0xab, 0x71, 0xf8, 0xe6, 0x16, 0xd1, 0xb8, 0x73, 0x08, 0xef, 0xdc, 0xba, 0x76, 0xaf, 0xe1,
0xdd, 0x73, 0xed, 0xb1, 0x2b, 0xce, 0x58, 0xaa, 0x01, 0x0a, 0xf4, 0x7b, 0x4c, 0x63, 0xe3, 0x7b,
0x79, 0x75, 0x67, 0x2b, 0x8b, 0x37, 0xc2, 0x7b, 0x4a, 0x31, 0xec, 0xbf, 0x52, 0x65, 0xc6, 0x28,
0x8c, 0xf8, 0xda, 0x14, 0xe9, 0x32, 0x39, 0x44, 0x26, 0xbf, 0x7c, 0x4a, 0xaf, 0x90, 0x56, 0x96,
0x32, 0x15, 0x29, 0x55, 0x5a, 0xba, 0x4f, 0xef, 0x94, 0x94, 0x4f, 0xb0, 0xb6, 0x25, 0xdd, 0x30,
0x58, 0x4f, 0xa0, 0xb7, 0x86, 0x1a, 0x9f, 0xeb, 0xa0, 0xd4, 0x85, 0x42, 0x39, 0xc2, 0x45, 0x16,
0x56, 0x2e, 0xec, 0x6c, 0xa9, 0xed, 0x6a, 0x7a, 0xad, 0x59, 0x07, 0x36, 0x69, 0xbb, 0x4f, 0xf3,
0x10, 0xd5, 0x37, 0xf4, 0x40, 0xd4, 0x9e, 0xc3, 0xdf, 0x1d, 0xe6, 0xd9, 0x21, 0xd3, 0xed, 0x6d,
0xca, 0x1c, 0xb6, 0xc3, 0x99, 0xa7, 0xbd, 0xf0, 0x0b, 0x12, 0x7a, 0x01, 0x3e, 0x9a, 0xd3, 0xac,
0x5a, 0x89, 0xa0, 0x98, 0xcc, 0x46, 0xf2, 0xad, 0x6f, 0x6a, 0xe4, 0x4e, 0x49, 0x8f, 0x41, 0x85,
0x2d, 0x4b, 0x54, 0x90, 0xb7, 0x10, 0xb5, 0xed, 0x16, 0x55, 0x62, 0xdc, 0x51, 0xdb, 0xc3, 0xf4,
0x0a, 0x4b, 0x78, 0x0f, 0x71, 0xa6, 0x84, 0xc9, 0xfb, 0xdb, 0xbb, 0x7f, 0xf4, 0x7f, 0xbd, 0xf8,
0xf8, 0xa1, 0xff, 0xfe, 0xe2, 0xf2, 0xf7, 0x77, 0x1f, 0x7f, 0xfa, 0xd0, 0x38, 0xed, 0xbd, 0x7e,
0xf5, 0xba, 0xdd, 0x79, 0x36, 0x46, 0xf1, 0xa6, 0xaf, 0x49, 0x57, 0x18, 0xcf, 0xfb, 0x37, 0x8a,
0x89, 0x58, 0x1d, 0x67, 0xf1, 0xa2, 0x32, 0xea, 0xc7, 0xd1, 0xfc, 0x3c, 0x9a, 0x9f, 0x2f, 0xd5,
0xfc, 0x3c, 0x1a, 0x84, 0x47, 0x83, 0xf0, 0x85, 0x19, 0x84, 0x5c, 0x9c, 0x6f, 0x6a, 0x13, 0x7a,
0xa5, 0x25, 0xf4, 0x68, 0x25, 0x1e, 0xad, 0xc4, 0xa3, 0x95, 0xf8, 0x3c, 0xac, 0xc4, 0x8d, 0x77,
0x83, 0x77, 0xb6, 0x1f, 0x1f, 0xa8, 0x18, 0xbe, 0x18, 0x1b, 0xf0, 0x68, 0xc7, 0x19, 0xec, 0xb8,
0x8a, 0x97, 0xc6, 0xd8, 0x16, 0x3e, 0x70, 0xb6, 0xca, 0x2a, 0xd5, 0x2f, 0x8e, 0xed, 0xc7, 0xfc,
0x2b, 0x1b, 0x77, 0x3c, 0x47, 0x59, 0xd1, 0xfa, 0x97, 0x3f, 0xbd, 0xfb, 0xf5, 0x03, 0x88, 0xf6,
0x47, 0x37, 0xfe, 0xd6, 0xec, 0x79, 0x3e, 0xcc, 0x36, 0x7c, 0x88, 0xf1, 0x57, 0xec, 0x77, 0xee,
0xe0, 0x3d, 0x3a, 0xda, 0x7c, 0x3b, 0xd8, 0x7c, 0xcf, 0xc0, 0xc4, 0x7a, 0x76, 0x66, 0xe7, 0x81,
0x6d, 0xbe, 0xe3, 0xb5, 0xcd, 0x67, 0x74, 0x6d, 0xf3, 0x85, 0xdb, 0xd6, 0x4f, 0x6b, 0xcb, 0x3e,
0x37, 0xcb, 0xfe, 0x50, 0xb6, 0xf5, 0x7f, 0xc2, 0x45, 0xda, 0x27, 0xf2, 0x1f, 0x70, 0xb8, 0xed,
0xb6, 0x95, 0x0d, 0x8a, 0xd6, 0xd1, 0x81, 0x70, 0x74, 0x20, 0x1c, 0x1d, 0x08, 0x0f, 0x76, 0x20,
0x14, 0xf3, 0x30, 0x94, 0xb5, 0xf9, 0xc7, 0x75, 0x2c, 0x6c, 0x73, 0x1b, 0x54, 0x11, 0x62, 0x7a,
0x98, 0x95, 0xb5, 0x1e, 0x8a, 0xc3, 0x59, 0x2f, 0x2f, 0xe5, 0x32, 0xe6, 0x7f, 0x82, 0xdb, 0xe5,
0x19, 0xdd, 0xea, 0x7c, 0x42, 0xb7, 0xd0, 0x31, 0x6c, 0xf1, 0xcb, 0x7a, 0xcc, 0x44, 0xee, 0x6a,
0xb9, 0x7d, 0x6a, 0x9b, 0xdb, 0x4b, 0x47, 0xf4, 0x9a, 0xa7, 0x06, 0x00, 0xd6, 0x00, 0x57, 0x26,
0x9c, 0x91, 0x01, 0x27, 0xa1, 0xda, 0x61, 0xfd, 0x5d, 0x87, 0x11, 0x28, 0xf6, 0xbf, 0x31, 0x5f,
0x24, 0xc5, 0xb6, 0x24, 0x5d, 0x49, 0x6f, 0x17, 0x8b, 0x25, 0xc2, 0x53, 0x7b, 0xba, 0xbd, 0x54,
0xe1, 0xa3, 0x7a, 0xf8, 0x48, 0x85, 0x5f, 0xf5, 0xf1, 0x21, 0xe4, 0xa6, 0xe8, 0x0b, 0xa2, 0x07,
0xb1, 0x7b, 0x6b, 0x82, 0x3e, 0xa4, 0xc9, 0xd2, 0x6a, 0x5d, 0x35, 0x7b, 0xec, 0x31, 0x17, 0x5b,
0x27, 0x68, 0x55, 0x20, 0x8f, 0x76, 0x41, 0x1e, 0x55, 0x23, 0x8f, 0x0a, 0xd6, 0xc0, 0xf0, 0x23,
0xdb, 0xdf, 0xf5, 0x46, 0x1e, 0x22, 0xbd, 0xea, 0x92, 0x96, 0xdb, 0x12, 0xae, 0x68, 0x87, 0x9b,
0xda, 0x0c, 0x57, 0x44, 0x70, 0x45, 0xb6, 0xe2, 0x3d, 0x06, 0x5c, 0xc6, 0xdb, 0xda, 0xa4, 0x52,
0xd7, 0x9c, 0x11, 0xd9, 0xe6, 0x5b, 0xda, 0xd4, 0x9f, 0xfc, 0x88, 0xaf, 0x4a, 0x3c, 0x23, 0x6f,
0xf2, 0xa3, 0x1e, 0x25, 0x62, 0x83, 0x44, 0x5f, 0xa1, 0x0e, 0x4b, 0xaa, 0x1d, 0xe9, 0xf5, 0xfe,
0x4a, 0x4a, 0x37, 0x95, 0x8a, 0x2a, 0x4a, 0x45, 0xfb, 0x38, 0xb6, 0xc4, 0x52, 0xa1, 0x86, 0xd0,
0x94, 0x18, 0xed, 0x7e, 0x0e, 0xf2, 0x78, 0xab, 0xe7, 0x78, 0xac, 0xea, 0x78, 0xac, 0xaa, 0xca,
0xc5, 0xce, 0x87, 0xcc, 0xe0, 0x7f, 0x7b, 0x0c, 0xf7, 0x3b, 0x3a, 0x91, 0x6a, 0xa8, 0x2c, 0xf2,
0x2b, 0xfb, 0xaa, 0x00, 0x31, 0xf1, 0x97, 0x94, 0x5b, 0xd7, 0x9b, 0x2a, 0xd8, 0xf1, 0x8a, 0xd2,
0xf1, 0x44, 0xda, 0x33, 0x39, 0x91, 0x76, 0x38, 0x3f, 0xb9, 0x34, 0x15, 0x8b, 0x9f, 0x86, 0x9a,
0x8b, 0x4c, 0x57, 0x9d, 0x9f, 0xa6, 0x26, 0xcb, 0x98, 0x4c, 0x93, 0xec, 0xe8, 0xce, 0x3e, 0xba,
0xb3, 0x8f, 0xee, 0xec, 0xff, 0x78, 0x77, 0x36, 0xea, 0xf5, 0x01, 0x13, 0x30, 0x62, 0x52, 0x3a,
0xba, 0x9d, 0xd2, 0x5e, 0x7a, 0x92, 0xf4, 0x11, 0x83, 0x57, 0x02, 0x5b, 0x35, 0x85, 0x09, 0x63,
0x33, 0xec, 0xd1, 0x5a, 0xec, 0xd1, 0x66, 0xd8, 0x23, 0x09, 0x3b, 0x84, 0x1c, 0xdb, 0xf7, 0x59,
0x3e, 0xdd, 0xc8, 0x5a, 0x0c, 0x47, 0xd8, 0xfd, 0xe5, 0x98, 0x54, 0xc4, 0x56, 0x7c, 0x66, 0xa6,
0xd5, 0xf1, 0x8a, 0x59, 0xfd, 0xe2, 0x7e, 0x38, 0xe5, 0x7a, 0xbf, 0x9a, 0xf1, 0xb7, 0x78, 0x6b,
0xce, 0x88, 0xa1, 0xe6, 0xa4, 0x42, 0xb9, 0xc7, 0x6b, 0x3b, 0x7c, 0x6b, 0x1d, 0xe8, 0x1b, 0xf3,
0xb5, 0x12, 0x31, 0x04, 0xb9, 0xfd, 0xd0, 0x18, 0xbf, 0x09, 0x85, 0x89, 0xdd, 0x0e, 0x35, 0xe0,
0xa8, 0x12, 0x38, 0x2a, 0x01, 0xa3, 0x5b, 0x50, 0xd4, 0xe2, 0x0a, 0x14, 0x2e, 0x4a, 0x3a, 0xdb,
0xa7, 0x4e, 0xbe, 0x40, 0x79, 0x81, 0xf6, 0xbc, 0x55, 0xc8, 0x47, 0x59, 0x96, 0xd3, 0x28, 0xc1,
0xa6, 0x1c, 0x86, 0x76, 0xff, 0xc7, 0x52, 0x37, 0x3a, 0x29, 0x9a, 0x4f, 0xc8, 0x5a, 0x93, 0xc9,
0xcf, 0x4f, 0x08, 0xa9, 0x8f, 0x6b, 0x4f, 0x45, 0x66, 0x74, 0x3d, 0x1a, 0xc5, 0x59, 0xdd, 0xd3,
0xb4, 0x5b, 0x06, 0x2e, 0xeb, 0x18, 0xd2, 0xba, 0xbb, 0x46, 0x33, 0xeb, 0x04, 0x96, 0x65, 0x8e,
0xf6, 0xd8, 0x82, 0x13, 0xc1, 0x9e, 0x4a, 0x7f, 0xc3, 0x86, 0xb8, 0x4c, 0xb4, 0x64, 0x37, 0xa0,
0xc1, 0xef, 0xe0, 0x09, 0x74, 0xb9, 0x03, 0x20, 0x60, 0x57, 0xd1, 0x55, 0x52, 0xe7, 0xca, 0x3b,
0xd3, 0xfd, 0x72, 0x3f, 0xe9, 0xcf, 0x77, 0x94, 0x16, 0xdb, 0x4e, 0x75, 0x56, 0x77, 0xe3, 0x6e,
0x2a, 0x8d, 0x4e, 0x06, 0x51, 0xa3, 0x88, 0xd2, 0xb1, 0x80, 0x30, 0xdb, 0x75, 0xd9, 0x20, 0x2e,
0xcb, 0x23, 0x1f, 0x92, 0x6e, 0xc3, 0x00, 0x7a, 0xfa, 0x8b, 0x26, 0x85, 0xaf, 0x72, 0x96, 0x67,
0xe1, 0xc2, 0xf4, 0xe2, 0x09, 0x3c, 0x3f, 0xb2, 0x98, 0x27, 0xb3, 0xfe, 0x2d, 0x06, 0xd1, 0xd5,
0x22, 0xd2, 0x15, 0x82, 0xb9, 0x53, 0x9e, 0x98, 0x1d, 0x1a, 0x86, 0xad, 0xb3, 0x26, 0xca, 0x6b,
0x97, 0x82, 0x75, 0x69, 0x88, 0x6d, 0x8a, 0xac, 0x1d, 0x52, 0x0b, 0x81, 0x54, 0xc1, 0x12, 0xb2,
0x71, 0x14, 0x14, 0x3f, 0x3d, 0x0e, 0xe6, 0xdf, 0x8b, 0x42, 0x5d, 0xbd, 0x50, 0xb7, 0x28, 0xd4,
0x2d, 0x0a, 0x75, 0xa1, 0x90, 0xb6, 0x77, 0x40, 0xb1, 0xb9, 0x2c, 0x88, 0x2b, 0x1f, 0x7d, 0xf6,
0xb2, 0x52, 0x3b, 0x94, 0x43, 0x5d, 0x63, 0x97, 0x08, 0xbc, 0x80, 0xd6, 0x87, 0x2f, 0x0c, 0x91,
0x0d, 0xe1, 0xc9, 0xc9, 0x87, 0xab, 0xf6, 0x18, 0x84, 0xed, 0xb7, 0xdd, 0x8a, 0xbc, 0xbb, 0xe5,
0xaa, 0x32, 0x6f, 0x75, 0xb7, 0x14, 0x91, 0xe4, 0xc2, 0x9b, 0x98, 0x48, 0x87, 0x38, 0xe0, 0xcf,
0x10, 0xf1, 0xb7, 0xa5, 0xf8, 0xa3, 0x52, 0xb6, 0x77, 0x0a, 0x81, 0x3f, 0x21, 0xec, 0xb7, 0xc5,
0x60, 0x5b, 0xe4, 0x0b, 0x02, 0x9e, 0x95, 0x87, 0x1f, 0x08, 0x86, 0x0a, 0x71, 0xf6, 0x38, 0xa5,
0xe1, 0xa7, 0xd3, 0x87, 0x0e, 0x3d, 0x30, 0x14, 0x98, 0xed, 0xb4, 0x81, 0x3a, 0x2b, 0xba, 0x6b,
0x13, 0x6c, 0x8e, 0x88, 0xfc, 0xae, 0xc0, 0x03, 0x55, 0xb8, 0x1b, 0xa4, 0x68, 0x12, 0x16, 0x25,
0x05, 0x8d, 0xb0, 0xc6, 0x89, 0x74, 0x45, 0x35, 0x2e, 0xb6, 0x9d, 0x0d, 0x9f, 0xcb, 0x83, 0xa2,
0x3d, 0x4c, 0xfe, 0x92, 0x5e, 0x5a, 0xe4, 0x6c, 0xca, 0x7c, 0xbe, 0x08, 0x4a, 0xe1, 0x09, 0x7d,
0xe3, 0x76, 0x0d, 0x33, 0xaa, 0xcd, 0xdb, 0x35, 0x4a, 0xea, 0x29, 0x94, 0x10, 0xe6, 0x94, 0x2a,
0x73, 0xb9, 0xb7, 0x01, 0x19, 0x53, 0x17, 0x42, 0x51, 0x9a, 0x4e, 0x40, 0xc8, 0x2c, 0xe8, 0xa6,
0x1d, 0x84, 0xc6, 0xec, 0x23, 0xb1, 0xa1, 0x24, 0xe9, 0x35, 0xa0, 0x51, 0x1c, 0xa2, 0x2c, 0x2d,
0xc1, 0xa9, 0xcf, 0xf0, 0x21, 0x6c, 0x5d, 0x66, 0x45, 0xd6, 0x20, 0x9c, 0x12, 0x1e, 0x04, 0x93,
0x0f, 0xc2, 0xd4, 0x11, 0xc9, 0xcc, 0x1f, 0x37, 0xa8, 0x80, 0x9f, 0x27, 0xf9, 0xe0, 0x4a, 0xa7,
0x35, 0x4b, 0xf3, 0x30, 0x8f, 0xfb, 0x8b, 0xd5, 0x34, 0x4a, 0x27, 0x15, 0x05, 0x69, 0x50, 0x3e,
0xcd, 0x04, 0x52, 0x84, 0xf8, 0xe0, 0x4a, 0x89, 0x59, 0x59, 0xb1, 0x33, 0x46, 0x53, 0x27, 0x61,
0x44, 0x34, 0xa0, 0xf9, 0x24, 0x9c, 0xc5, 0x15, 0x10, 0x34, 0x50, 0xb4, 0x96, 0x57, 0xf4, 0x2d,
0x08, 0x37, 0x3d, 0x19, 0xdb, 0x46, 0x4d, 0xd6, 0x69, 0x38, 0xaf, 0x3a, 0x1a, 0x55, 0x36, 0x9b,
0x4a, 0x46, 0x93, 0x32, 0xf8, 0xdf, 0xc0, 0x26, 0xcb, 0x33, 0x79, 0x98, 0xbc, 0x50, 0x62, 0x02,
0x79, 0x4a, 0x8a, 0x43, 0x2b, 0xdc, 0xf5, 0xaa, 0xe6, 0xf2, 0x23, 0x2f, 0xa8, 0x76, 0x14, 0x5e,
0x42, 0x9e, 0x08, 0x63, 0xc6, 0x53, 0x09, 0xa8, 0xcc, 0x94, 0x8b, 0x78, 0x3c, 0x85, 0xd8, 0x8c,
0x84, 0xed, 0x26, 0x71, 0xd0, 0xd2, 0x26, 0xf5, 0x9f, 0xbd, 0xaf, 0x5c, 0x4b, 0x85, 0x61, 0x87,
0xd5, 0xeb, 0xbb, 0x8a, 0xb9, 0x0b, 0x2f, 0x87, 0x7c, 0x57, 0x3d, 0x65, 0x49, 0xa7, 0x22, 0x15,
0x20, 0x03, 0x29, 0x41, 0x7f, 0x76, 0xbe, 0xba, 0xec, 0x57, 0xf7, 0xab, 0xcb, 0x67, 0xaf, 0xed,
0x61, 0x98, 0x67, 0xff, 0xbe, 0x01, 0x7d, 0xd6, 0x80, 0x1a, 0x1f, 0x56, 0xa1, 0xa8, 0xac, 0x8c,
0xb8, 0xae, 0x29, 0xeb, 0x11, 0x33, 0x91, 0xc2, 0xf0, 0xa9, 0x69, 0xaa, 0x3f, 0xed, 0x73, 0x9a,
0xcc, 0xf2, 0x75, 0x11, 0xc7, 0x59, 0xe0, 0x68, 0x21, 0x8a, 0x88, 0xfc, 0xb9, 0x4a, 0x0b, 0x51,
0x14, 0xa8, 0xd8, 0xda, 0xea, 0x28, 0x72, 0x28, 0x2a, 0x5a, 0x02, 0x7d, 0x1a, 0x37, 0x7e, 0x3c,
0xa9, 0x44, 0xec, 0xd5, 0xc8, 0xbf, 0xc6, 0x0f, 0x27, 0x35, 0xb9, 0x5e, 0x25, 0x4e, 0x85, 0x36,
0xc9, 0xf3, 0xc5, 0xc8, 0xa3, 0x36, 0x19, 0x18, 0x29, 0xe0, 0xe6, 0x54, 0x69, 0x47, 0xbb, 0x0b,
0xbc, 0xcf, 0x3e, 0xf4, 0xa4, 0x13, 0x94, 0x4a, 0xf3, 0x23, 0x56, 0x44, 0x0b, 0xe0, 0x47, 0xa9,
0x98, 0x28, 0x6b, 0xfc, 0x88, 0x5c, 0xea, 0xf5, 0xce, 0xd0, 0x13, 0x8b, 0x23, 0xa1, 0xb0, 0x3a,
0x8a, 0x66, 0x2a, 0xa8, 0x41, 0x8d, 0x27, 0x35, 0xf9, 0x94, 0xbf, 0x14, 0xd9, 0xcd, 0x15, 0x45,
0x3a, 0xb5, 0x3e, 0xaf, 0x1d, 0x44, 0x1a, 0xaa, 0xba, 0x8b, 0x11, 0xb4, 0xc5, 0x4b, 0x3b, 0xa1,
0x3e, 0x5e, 0xcb, 0x95, 0x57, 0x1a, 0x41, 0x84, 0x8c, 0x02, 0x53, 0x45, 0x00, 0x6f, 0x4c, 0xbf,
0xf5, 0xf5, 0x66, 0x60, 0xb8, 0x5d, 0x0b, 0x8e, 0x61, 0xe1, 0x59, 0x2f, 0x75, 0x95, 0x71, 0xe1,
0x24, 0x17, 0x1c, 0x17, 0xf3, 0xef, 0xe5, 0xae, 0xc0, 0xd9, 0x4e, 0x78, 0x75, 0x16, 0x60, 0x54,
0x57, 0x59, 0x06, 0x34, 0x35, 0xfc, 0x2a, 0x7f, 0xd2, 0x82, 0x03, 0x22, 0x9d, 0x30, 0x96, 0x6d,
0x7d, 0x41, 0x70, 0x32, 0x37, 0xf8, 0x27, 0xeb, 0xb8, 0x00, 0x3d, 0xcf, 0x02, 0x8d, 0x8b, 0xbe,
0x7c, 0x41, 0x8e, 0xab, 0xff, 0x1a, 0xb0, 0xc0, 0xc8, 0xb2, 0x77, 0x1a, 0x64, 0xa3, 0x69, 0xf5,
0x13, 0x63, 0x22, 0x43, 0x92, 0x8e, 0x54, 0x42, 0xf1, 0x48, 0x46, 0x9c, 0xbc, 0x3a, 0x32, 0x8f,
0xb5, 0x56, 0xd2, 0x53, 0x13, 0x6e, 0x9b, 0x5a, 0x63, 0x1c, 0xb1, 0x13, 0xe6, 0x9d, 0x42, 0x64,
0x63, 0xc1, 0x94, 0x52, 0xac, 0xee, 0x1b, 0x26, 0x92, 0xc9, 0xbf, 0x9e, 0xb4, 0x80, 0xc2, 0xd0,
0xcb, 0x4b, 0x24, 0x5f, 0x4b, 0xd8, 0xa7, 0xa5, 0x6a, 0x4f, 0x22, 0x92, 0x7b, 0xa1, 0x23, 0x04,
0x72, 0x3e, 0x91, 0xa0, 0x68, 0x4d, 0x40, 0xcc, 0x62, 0x45, 0x93, 0x68, 0xfc, 0xd0, 0x52, 0x35,
0x0b, 0x75, 0x61, 0x16, 0xaf, 0x50, 0x81, 0x83, 0x04, 0xe2, 0x8c, 0x2b, 0x48, 0x3b, 0x5f, 0x9b,
0x52, 0x51, 0xdb, 0xae, 0x0a, 0xc9, 0xcd, 0x8c, 0xa4, 0xc7, 0xd6, 0x0a, 0x0e, 0x77, 0xf0, 0x76,
0x2b, 0x47, 0x9a, 0x04, 0x44, 0x5d, 0x4c, 0x0c, 0xc0, 0xd1, 0x5a, 0xa7, 0xe8, 0xe8, 0xb2, 0x1d,
0xc9, 0x7e, 0x53, 0x4f, 0x90, 0x4d, 0x4f, 0x6f, 0x1d, 0x95, 0xfd, 0xfd, 0x29, 0xfb, 0xcf, 0x46,
0x89, 0xde, 0xa7, 0x15, 0xb1, 0xad, 0x45, 0x53, 0x67, 0x75, 0xd4, 0x2b, 0xfb, 0xc0, 0x1e, 0x8a,
0x27, 0xe8, 0x94, 0x25, 0x76, 0xab, 0x26, 0xf4, 0x28, 0x99, 0x4c, 0xea, 0x0e, 0x9f, 0x15, 0xf9,
0xd5, 0x27, 0xd0, 0x0a, 0x18, 0xd3, 0x31, 0x34, 0x29, 0xb7, 0x6e, 0xab, 0x45, 0x05, 0xab, 0x7b,
0x24, 0x2b, 0x9c, 0xa4, 0x75, 0x14, 0x17, 0xf9, 0xd5, 0x14, 0x17, 0x30, 0x26, 0x8a, 0xa5, 0xdc,
0x3a, 0x8a, 0x55, 0xb0, 0x6f, 0xfa, 0xbc, 0x1a, 0x36, 0xa5, 0xe6, 0xe8, 0x53, 0x91, 0x5f, 0xfd,
0xaa, 0xad, 0x00, 0x31, 0xbe, 0x6c, 0x5b, 0xe4, 0xd6, 0xbe, 0x61, 0xa6, 0x80, 0xad, 0x23, 0xb8,
0xfa, 0x68, 0xa2, 0xc8, 0xae, 0x27, 0xb7, 0xea, 0x90, 0x62, 0x91, 0xb9, 0x96, 0x58, 0x65, 0x27,
0x68, 0x13, 0x3b, 0x55, 0x9a, 0x70, 0xc5, 0x4f, 0xd3, 0x81, 0xad, 0x22, 0xd7, 0x55, 0xa7, 0xa1,
0xe9, 0xe8, 0x96, 0x8c, 0x6a, 0xa7, 0xa9, 0x54, 0xfc, 0x34, 0xd1, 0x52, 0xe4, 0xba, 0xea, 0x04,
0x33, 0xd1, 0x22, 0xa3, 0xda, 0x7e, 0x92, 0x1c, 0xfc, 0xa4, 0x97, 0xc4, 0xfb, 0xc5, 0x4f, 0xd3,
0xbb, 0xba, 0x22, 0xd3, 0x55, 0x27, 0x84, 0xf1, 0x7d, 0x5d, 0x09, 0xd3, 0x2e, 0x5c, 0x2d, 0x7e,
0x55, 0x11, 0xc2, 0xce, 0xd8, 0x49, 0x8c, 0x5e, 0x49, 0x06, 0xdb, 0xb3, 0x34, 0xb0, 0xeb, 0xd1,
0x9f, 0x71, 0xf4, 0x67, 0x1c, 0xfd, 0x19, 0x47, 0x7f, 0xc6, 0xd1, 0x9f, 0xf1, 0x32, 0xfc, 0x19,
0xfc, 0x70, 0x71, 0x71, 0x22, 0x4e, 0x39, 0x40, 0x47, 0x99, 0xe0, 0x59, 0xb9, 0x3c, 0x8a, 0x37,
0xa5, 0xb2, 0x79, 0x3a, 0x09, 0xa1, 0xf5, 0x0f, 0xf0, 0x81, 0x30, 0x03, 0x88, 0x9e, 0x7f, 0x23,
0x6d, 0x6b, 0x2f, 0xe1, 0xce, 0x16, 0x5e, 0x3d, 0xa3, 0x56, 0x10, 0xdd, 0x34, 0x94, 0x3a, 0xc8,
0xa5, 0x2f, 0x77, 0x56, 0xd5, 0x8f, 0x6e, 0x15, 0x7e, 0xb9, 0xea, 0xf2, 0xfd, 0xcf, 0xfd, 0xcf,
0xff, 0x68, 0xbc, 0x69, 0x77, 0x4e, 0xca, 0xa6, 0x26, 0xac, 0xae, 0x7e, 0x9d, 0x03, 0xc6, 0x6c,
0x0c, 0xca, 0x47, 0x63, 0xb6, 0x3d, 0x9f, 0xa7, 0xd9, 0xb9, 0x8f, 0x69, 0x0a, 0x1e, 0xd6, 0x8c,
0x3b, 0xa0, 0x09, 0x76, 0x28, 0x2b, 0xea, 0xa0, 0x26, 0xd0, 0x3e, 0x2d, 0x98, 0x5a, 0x36, 0xd9,
0xce, 0x00, 0xa9, 0xb7, 0x3f, 0xb6, 0xb2, 0x1f, 0xf6, 0x71, 0xde, 0x4e, 0x1a, 0xbd, 0xed, 0x14,
0xf9, 0xba, 0xa1, 0xd9, 0x58, 0x17, 0xa7, 0x30, 0x1f, 0xde, 0xff, 0xf2, 0xa1, 0xff, 0xcb, 0xbb,
0xdf, 0x7e, 0x7b, 0x47, 0x34, 0x86, 0x6e, 0xe7, 0xdc, 0x33, 0x87, 0xdb, 0xe3, 0x62, 0x9c, 0xcd,
0x72, 0xd0, 0xbe, 0xcb, 0xa2, 0x9f, 0xcd, 0x76, 0x71, 0x2d, 0x1e, 0x95, 0x46, 0x9e, 0xb8, 0x92,
0x25, 0x38, 0xef, 0x28, 0x96, 0x59, 0x28, 0xe2, 0x1b, 0x2a, 0x3e, 0x45, 0x78, 0x08, 0x3a, 0x6a,
0xd2, 0xf0, 0xcb, 0xd2, 0x0e, 0x89, 0x0b, 0x8a, 0x26, 0x7a, 0x96, 0xc0, 0xef, 0x28, 0x92, 0xd0,
0xf6, 0xe5, 0x13, 0x97, 0xd7, 0xa3, 0x51, 0x60, 0xa1, 0x3e, 0xdd, 0xc2, 0xab, 0x0f, 0x4c, 0xb7,
0x16, 0xda, 0x3a, 0xf4, 0x25, 0x3f, 0xa8, 0x13, 0x48, 0xec, 0x42, 0xab, 0xb3, 0x44, 0x57, 0x3b,
0xdd, 0x76, 0xf7, 0xad, 0x47, 0x85, 0x78, 0xb3, 0xa0, 0xc2, 0xae, 0x21, 0x83, 0xd6, 0x0d, 0x35,
0x17, 0x23, 0xef, 0x15, 0x0b, 0x2f, 0x43, 0xe6, 0xdf, 0x4b, 0xe4, 0xe2, 0x71, 0x41, 0x93, 0x47,
0x19, 0xfc, 0xc9, 0xed, 0xb0, 0xdc, 0x21, 0xb4, 0xae, 0x61, 0x80, 0x1f, 0x8e, 0xbc, 0x1e, 0x28,
0xba, 0x10, 0x7a, 0xb3, 0xa5, 0x03, 0x86, 0x40, 0x5a, 0x4b, 0x46, 0xe0, 0x42, 0x4a, 0x53, 0x49,
0xd9, 0xf0, 0x34, 0xa1, 0xa3, 0xae, 0x78, 0x0f, 0xf2, 0x76, 0xff, 0x3f, 0x5e, 0x36, 0x53, 0x8c
};
const char* shaderSource() {

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<SymbolIconProgram> {
static constexpr const char* name = "symbol_icon";
static constexpr const uint8_t hash[8] = { 0x96, 0x0c, 0xef, 0xec, 0x37, 0x23, 0xf9, 0xb1 };
static constexpr const auto vertexOffset = 49728;
static constexpr const auto fragmentOffset = 52382;
static constexpr const uint8_t hash[8] = { 0xf3, 0x81, 0x62, 0xe8, 0x24, 0x49, 0xc6, 0x8f };
static constexpr const auto vertexOffset = 50079;
static constexpr const auto fragmentOffset = 52727;
};
constexpr const char* ShaderSource<SymbolIconProgram>::name;
@@ -56,6 +56,18 @@ uniform bool u_rotate_symbol;
uniform highp float u_aspect_ratio;
uniform float u_fade_change;
uniform mat4 u_matrix;
uniform mat4 u_label_plane_matrix;
uniform mat4 u_coord_matrix;
uniform bool u_is_text;
uniform bool u_pitch_with_map;
uniform vec2 u_texsize;
varying vec2 v_tex;
varying float v_fade_opacity;
#ifndef HAS_UNIFORM_u_opacity
uniform lowp float u_opacity_t;
@@ -66,18 +78,6 @@ uniform lowp float u_opacity;
#endif
uniform mat4 u_matrix;
uniform mat4 u_label_plane_matrix;
uniform mat4 u_gl_coord_matrix;
uniform bool u_is_text;
uniform bool u_pitch_with_map;
uniform vec2 u_texsize;
varying vec2 v_tex;
varying float v_fade_opacity;
void main() {
#ifndef HAS_UNIFORM_u_opacity
@@ -137,7 +137,7 @@ void main() {
mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
gl_Position = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
v_tex = a_tex / u_texsize;
vec2 fade_opacity = unpack_opacity(a_fade_opacity);
@@ -151,6 +151,9 @@ void main() {
/*
uniform sampler2D u_texture;
varying vec2 v_tex;
varying float v_fade_opacity;
#ifndef HAS_UNIFORM_u_opacity
varying lowp float opacity;
@@ -159,9 +162,6 @@ uniform lowp float u_opacity;
#endif
varying vec2 v_tex;
varying float v_fade_opacity;
void main() {
#ifdef HAS_UNIFORM_u_opacity

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<SymbolSDFIconProgram> {
static constexpr const char* name = "symbol_sdf_icon";
static constexpr const uint8_t hash[8] = { 0x13, 0xfc, 0x05, 0x2a, 0xd1, 0x93, 0xfb, 0x7d };
static constexpr const auto vertexOffset = 52787;
static constexpr const auto fragmentOffset = 56827;
static constexpr const uint8_t hash[8] = { 0x4b, 0x0b, 0x5f, 0x6b, 0xa9, 0xec, 0x84, 0x19 };
static constexpr const auto vertexOffset = 53132;
static constexpr const auto fragmentOffset = 57166;
};
constexpr const char* ShaderSource<SymbolSDFIconProgram>::name;
@@ -57,6 +57,20 @@ uniform bool u_is_size_zoom_constant;
uniform bool u_is_size_feature_constant;
uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
uniform highp float u_size; // used when size is both zoom and feature constant
uniform mat4 u_matrix;
uniform mat4 u_label_plane_matrix;
uniform mat4 u_coord_matrix;
uniform bool u_is_text;
uniform bool u_pitch_with_map;
uniform highp float u_pitch;
uniform bool u_rotate_symbol;
uniform highp float u_aspect_ratio;
uniform highp float u_camera_to_center_distance;
uniform float u_fade_change;
uniform vec2 u_texsize;
varying vec2 v_data0;
varying vec3 v_data1;
#ifndef HAS_UNIFORM_u_fill_color
@@ -104,23 +118,6 @@ uniform lowp float u_halo_blur;
#endif
uniform mat4 u_matrix;
uniform mat4 u_label_plane_matrix;
uniform mat4 u_gl_coord_matrix;
uniform bool u_is_text;
uniform bool u_pitch_with_map;
uniform highp float u_pitch;
uniform bool u_rotate_symbol;
uniform highp float u_aspect_ratio;
uniform highp float u_camera_to_center_distance;
uniform float u_fade_change;
uniform vec2 u_texsize;
varying vec2 v_data0;
varying vec3 v_data1;
void main() {
#ifndef HAS_UNIFORM_u_fill_color
@@ -215,7 +212,7 @@ void main() {
mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
gl_Position = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
float gamma_scale = gl_Position.w;
vec2 tex = a_tex / u_texsize;
@@ -232,9 +229,16 @@ void main() {
// Uncompressed source of symbol_sdf_icon.fragment.glsl:
/*
#define SDF_PX 8.0
#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO
uniform bool u_is_halo;
uniform sampler2D u_texture;
uniform highp float u_gamma_scale;
uniform lowp float u_device_pixel_ratio;
uniform bool u_is_text;
varying vec2 v_data0;
varying vec3 v_data1;
#ifndef HAS_UNIFORM_u_fill_color
varying highp vec4 fill_color;
@@ -271,13 +275,6 @@ uniform lowp float u_halo_blur;
#endif
uniform sampler2D u_texture;
uniform highp float u_gamma_scale;
uniform bool u_is_text;
varying vec2 v_data0;
varying vec3 v_data1;
void main() {
#ifdef HAS_UNIFORM_u_fill_color
@@ -305,6 +302,8 @@ void main() {
#endif
float EDGE_GAMMA = 0.105 / u_device_pixel_ratio;
vec2 tex = v_data0.xy;
float gamma_scale = v_data1.x;
float size = v_data1.y;

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<SymbolSDFTextProgram> {
static constexpr const char* name = "symbol_sdf_text";
static constexpr const uint8_t hash[8] = { 0x13, 0xfc, 0x05, 0x2a, 0xd1, 0x93, 0xfb, 0x7d };
static constexpr const auto vertexOffset = 52787;
static constexpr const auto fragmentOffset = 56827;
static constexpr const uint8_t hash[8] = { 0x4b, 0x0b, 0x5f, 0x6b, 0xa9, 0xec, 0x84, 0x19 };
static constexpr const auto vertexOffset = 53132;
static constexpr const auto fragmentOffset = 57166;
};
constexpr const char* ShaderSource<SymbolSDFTextProgram>::name;
@@ -57,6 +57,20 @@ uniform bool u_is_size_zoom_constant;
uniform bool u_is_size_feature_constant;
uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
uniform highp float u_size; // used when size is both zoom and feature constant
uniform mat4 u_matrix;
uniform mat4 u_label_plane_matrix;
uniform mat4 u_coord_matrix;
uniform bool u_is_text;
uniform bool u_pitch_with_map;
uniform highp float u_pitch;
uniform bool u_rotate_symbol;
uniform highp float u_aspect_ratio;
uniform highp float u_camera_to_center_distance;
uniform float u_fade_change;
uniform vec2 u_texsize;
varying vec2 v_data0;
varying vec3 v_data1;
#ifndef HAS_UNIFORM_u_fill_color
@@ -104,23 +118,6 @@ uniform lowp float u_halo_blur;
#endif
uniform mat4 u_matrix;
uniform mat4 u_label_plane_matrix;
uniform mat4 u_gl_coord_matrix;
uniform bool u_is_text;
uniform bool u_pitch_with_map;
uniform highp float u_pitch;
uniform bool u_rotate_symbol;
uniform highp float u_aspect_ratio;
uniform highp float u_camera_to_center_distance;
uniform float u_fade_change;
uniform vec2 u_texsize;
varying vec2 v_data0;
varying vec3 v_data1;
void main() {
#ifndef HAS_UNIFORM_u_fill_color
@@ -215,7 +212,7 @@ void main() {
mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
gl_Position = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
float gamma_scale = gl_Position.w;
vec2 tex = a_tex / u_texsize;
@@ -232,9 +229,16 @@ void main() {
// Uncompressed source of symbol_sdf_text.fragment.glsl:
/*
#define SDF_PX 8.0
#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO
uniform bool u_is_halo;
uniform sampler2D u_texture;
uniform highp float u_gamma_scale;
uniform lowp float u_device_pixel_ratio;
uniform bool u_is_text;
varying vec2 v_data0;
varying vec3 v_data1;
#ifndef HAS_UNIFORM_u_fill_color
varying highp vec4 fill_color;
@@ -271,13 +275,6 @@ uniform lowp float u_halo_blur;
#endif
uniform sampler2D u_texture;
uniform highp float u_gamma_scale;
uniform bool u_is_text;
varying vec2 v_data0;
varying vec3 v_data1;
void main() {
#ifdef HAS_UNIFORM_u_fill_color
@@ -305,6 +302,8 @@ void main() {
#endif
float EDGE_GAMMA = 0.105 / u_device_pixel_ratio;
vec2 tex = v_data0.xy;
float gamma_scale = v_data1.x;
float size = v_data1.y;

View File

@@ -23,6 +23,7 @@ Values makeValues(const style::LinePaintProperties::PossiblyEvaluated& propertie
const RenderTile& tile,
const TransformState& state,
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio,
Args&&... args) {
return Values {
@@ -32,7 +33,8 @@ Values makeValues(const style::LinePaintProperties::PossiblyEvaluated& propertie
state)
),
uniforms::ratio::Value( 1.0f / tile.id.pixelsToTileUnits(1.0, state.getZoom()) ),
uniforms::gl_units_to_pixels::Value({ {1.0f / pixelsToGLUnits[0], 1.0f / pixelsToGLUnits[1]} }),
uniforms::units_to_pixels::Value({ {1.0f / pixelsToGLUnits[0], 1.0f / pixelsToGLUnits[1]} }),
uniforms::device_pixel_ratio::Value( pixelRatio ),
std::forward<Args>(args)...
};
}
@@ -41,12 +43,14 @@ LineProgram::LayoutUniformValues
LineProgram::layoutUniformValues(const style::LinePaintProperties::PossiblyEvaluated& properties,
const RenderTile& tile,
const TransformState& state,
const std::array<float, 2>& pixelsToGLUnits) {
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio) {
return makeValues<LineProgram::LayoutUniformValues>(
properties,
tile,
state,
pixelsToGLUnits
pixelsToGLUnits,
pixelRatio
);
}
@@ -78,6 +82,7 @@ LineSDFProgram::layoutUniformValues(const style::LinePaintProperties::PossiblyEv
tile,
state,
pixelsToGLUnits,
pixelRatio,
uniforms::patternscale_a::Value( scaleA ),
uniforms::patternscale_b::Value( scaleB ),
uniforms::tex_y_a::Value( posA.y ),
@@ -92,9 +97,9 @@ LinePatternProgram::LayoutUniformValues LinePatternProgram::layoutUniformValues(
const RenderTile& tile,
const TransformState& state,
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio,
const Size atlasSize,
const CrossfadeParameters& crossfade,
const float pixelRatio) {
const CrossfadeParameters& crossfade) {
const auto tileRatio = 1 / tile.id.pixelsToTileUnits(1, state.getIntegerZoom());
@@ -103,6 +108,7 @@ LinePatternProgram::LayoutUniformValues LinePatternProgram::layoutUniformValues(
tile,
state,
pixelsToGLUnits,
pixelRatio,
uniforms::scale::Value ({ {pixelRatio, tileRatio, crossfade.fromScale, crossfade.toScale} }),
uniforms::texsize::Value( atlasSize ),
uniforms::fade::Value( crossfade.t )
@@ -113,12 +119,14 @@ LineGradientProgram::LayoutUniformValues LineGradientProgram::layoutUniformValue
const style::LinePaintProperties::PossiblyEvaluated& properties,
const RenderTile& tile,
const TransformState& state,
const std::array<float, 2>& pixelsToGLUnits) {
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio) {
return makeValues<LineGradientProgram::LayoutUniformValues>(
properties,
tile,
state,
pixelsToGLUnits
pixelsToGLUnits,
pixelRatio
);
}

View File

@@ -23,7 +23,7 @@ MBGL_DEFINE_UNIFORM_SCALAR(float, tex_y_b);
MBGL_DEFINE_UNIFORM_SCALAR(float, sdfgamma);
MBGL_DEFINE_UNIFORM_VECTOR(float, 2, patternscale_a);
MBGL_DEFINE_UNIFORM_VECTOR(float, 2, patternscale_b);
MBGL_DEFINE_UNIFORM_VECTOR(float, 2, gl_units_to_pixels);
MBGL_DEFINE_UNIFORM_VECTOR(float, 2, units_to_pixels);
} // namespace uniforms
using LineLayoutAttributes = TypeList<
@@ -37,7 +37,8 @@ class LineProgram : public Program<
TypeList<
uniforms::matrix,
uniforms::ratio,
uniforms::gl_units_to_pixels>,
uniforms::units_to_pixels,
uniforms::device_pixel_ratio>,
TypeList<>,
style::LinePaintProperties>
{
@@ -93,7 +94,8 @@ public:
layoutUniformValues(const style::LinePaintProperties::PossiblyEvaluated&,
const RenderTile&,
const TransformState&,
const std::array<float, 2>& pixelsToGLUnits);
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio);
};
class LinePatternProgram : public Program<
@@ -103,7 +105,8 @@ class LinePatternProgram : public Program<
TypeList<
uniforms::matrix,
uniforms::ratio,
uniforms::gl_units_to_pixels,
uniforms::units_to_pixels,
uniforms::device_pixel_ratio,
uniforms::scale,
uniforms::texsize,
uniforms::fade>,
@@ -119,9 +122,9 @@ public:
const RenderTile&,
const TransformState&,
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio,
Size atlasSize,
const CrossfadeParameters& crossfade,
const float pixelRatio);
const CrossfadeParameters& crossfade);
};
class LineSDFProgram : public Program<
@@ -131,7 +134,8 @@ class LineSDFProgram : public Program<
TypeList<
uniforms::matrix,
uniforms::ratio,
uniforms::gl_units_to_pixels,
uniforms::units_to_pixels,
uniforms::device_pixel_ratio,
uniforms::patternscale_a,
uniforms::patternscale_b,
uniforms::tex_y_a,
@@ -164,7 +168,8 @@ class LineGradientProgram : public Program<
TypeList<
uniforms::matrix,
uniforms::ratio,
uniforms::gl_units_to_pixels>,
uniforms::units_to_pixels,
uniforms::device_pixel_ratio>,
TypeList<
textures::image>,
style::LinePaintProperties>
@@ -176,7 +181,8 @@ public:
layoutUniformValues(const style::LinePaintProperties::PossiblyEvaluated&,
const RenderTile&,
const TransformState&,
const std::array<float, 2>& pixelsToGLUnits);
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio);
};
using LineLayoutVertex = LineProgram::LayoutVertex;

View File

@@ -87,7 +87,7 @@ Values makeValues(const bool isText,
values.translateAnchor,
state) ),
uniforms::label_plane_matrix::Value(labelPlaneMatrix),
uniforms::gl_coord_matrix::Value( tile.translateVtxMatrix(glCoordMatrix,
uniforms::coord_matrix::Value( tile.translateVtxMatrix(glCoordMatrix,
values.translate,
values.translateAnchor,
state,
@@ -135,6 +135,7 @@ SymbolSDFProgram<Name, PaintProperties>::layoutUniformValues(const bool isText,
const style::SymbolPropertyValues& values,
const Size& texsize,
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio,
const bool alongLine,
const RenderTile& tile,
const TransformState& state,
@@ -155,6 +156,7 @@ SymbolSDFProgram<Name, PaintProperties>::layoutUniformValues(const bool isText,
state,
symbolFadeChange,
uniforms::gamma_scale::Value( gammaScale ),
uniforms::device_pixel_ratio::Value( pixelRatio ),
uniforms::is_halo::Value( part == SymbolSDFPart::Halo )
);
}

View File

@@ -28,7 +28,7 @@ class RenderTile;
class TransformState;
namespace uniforms {
MBGL_DEFINE_UNIFORM_MATRIX(double, 4, gl_coord_matrix);
MBGL_DEFINE_UNIFORM_MATRIX(double, 4, coord_matrix);
MBGL_DEFINE_UNIFORM_MATRIX(double, 4, label_plane_matrix);
MBGL_DEFINE_UNIFORM_SCALAR(bool, is_halo);
MBGL_DEFINE_UNIFORM_SCALAR(float, gamma_scale);
@@ -385,7 +385,7 @@ class SymbolIconProgram : public SymbolProgram<
TypeList<
uniforms::matrix,
uniforms::label_plane_matrix,
uniforms::gl_coord_matrix,
uniforms::coord_matrix,
uniforms::extrude_scale,
uniforms::texsize,
uniforms::fade_change,
@@ -426,7 +426,7 @@ class SymbolSDFProgram : public SymbolProgram<
TypeList<
uniforms::matrix,
uniforms::label_plane_matrix,
uniforms::gl_coord_matrix,
uniforms::coord_matrix,
uniforms::extrude_scale,
uniforms::texsize,
uniforms::fade_change,
@@ -437,6 +437,7 @@ class SymbolSDFProgram : public SymbolProgram<
uniforms::rotate_symbol,
uniforms::aspect_ratio,
uniforms::gamma_scale,
uniforms::device_pixel_ratio,
uniforms::is_halo>,
TypeList<
textures::texture>,
@@ -450,7 +451,7 @@ public:
TypeList<
uniforms::matrix,
uniforms::label_plane_matrix,
uniforms::gl_coord_matrix,
uniforms::coord_matrix,
uniforms::extrude_scale,
uniforms::texsize,
uniforms::fade_change,
@@ -461,6 +462,7 @@ public:
uniforms::rotate_symbol,
uniforms::aspect_ratio,
uniforms::gamma_scale,
uniforms::device_pixel_ratio,
uniforms::is_halo>,
TypeList<
textures::texture>,
@@ -477,6 +479,7 @@ public:
const style::SymbolPropertyValues&,
const Size& texsize,
const std::array<float, 2>& pixelsToGLUnits,
const float pixelRatio,
const bool alongLine,
const RenderTile&,
const TransformState&,

View File

@@ -37,6 +37,7 @@ MBGL_DEFINE_UNIFORM_SCALAR(Size, world);
MBGL_DEFINE_UNIFORM_SCALAR(Size, texsize);
MBGL_DEFINE_UNIFORM_SCALAR(bool, pitch_with_map);
MBGL_DEFINE_UNIFORM_SCALAR(float, camera_to_center_distance);
MBGL_DEFINE_UNIFORM_SCALAR(float, device_pixel_ratio);
MBGL_DEFINE_UNIFORM_SCALAR(float, fade);
MBGL_DEFINE_UNIFORM_SCALAR(float, fade_change);
MBGL_DEFINE_UNIFORM_SCALAR(float, weight);

View File

@@ -83,6 +83,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
tile.id.pixelsToTileUnits(1, parameters.state.getZoom()),
tile.id.pixelsToTileUnits(1, parameters.state.getZoom()) }}
: parameters.pixelsToGLUnits ),
uniforms::device_pixel_ratio::Value( parameters.pixelRatio ),
uniforms::camera_to_center_distance::Value( parameters.state.getCameraToCenterDistance() ),
uniforms::pitch_with_map::Value( pitchWithMap )
},

View File

@@ -150,9 +150,9 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
tile,
parameters.state,
parameters.pixelsToGLUnits,
parameters.pixelRatio,
texsize,
crossfade,
parameters.pixelRatio),
crossfade),
posA,
posB,
LinePatternProgram::TextureBindings{
@@ -168,7 +168,8 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
evaluated,
tile,
parameters.state,
parameters.pixelsToGLUnits),
parameters.pixelsToGLUnits,
parameters.pixelRatio),
{},
{},
LineGradientProgram::TextureBindings{
@@ -180,7 +181,8 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
evaluated,
tile,
parameters.state,
parameters.pixelsToGLUnits),
parameters.pixelsToGLUnits,
parameters.pixelRatio),
{},
{},
LineProgram::TextureBindings{});

View File

@@ -157,7 +157,7 @@ void drawIcon(const DrawFn& draw,
if (bucket.sdfIcons) {
if (values.hasHalo) {
draw(parameters.programs.getSymbolLayerPrograms().symbolIconSDF,
SymbolSDFIconProgram::layoutUniformValues(false, false, values, iconSize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Halo),
SymbolSDFIconProgram::layoutUniformValues(false, false, values, iconSize, parameters.pixelsToGLUnits, parameters.pixelRatio, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Halo),
bucket.icon,
iconSegments,
bucket.iconSizeBinder,
@@ -171,7 +171,7 @@ void drawIcon(const DrawFn& draw,
if (values.hasFill) {
draw(parameters.programs.getSymbolLayerPrograms().symbolIconSDF,
SymbolSDFIconProgram::layoutUniformValues(false, false, values, iconSize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Fill),
SymbolSDFIconProgram::layoutUniformValues(false, false, values, iconSize, parameters.pixelsToGLUnits, parameters.pixelRatio, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Fill),
bucket.icon,
iconSegments,
bucket.iconSizeBinder,
@@ -302,7 +302,7 @@ void drawText(const DrawFn& draw,
if (values.hasHalo) {
draw(parameters.programs.getSymbolLayerPrograms().symbolGlyph,
SymbolSDFTextProgram::layoutUniformValues(true, hasVariablePacement, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Halo),
SymbolSDFTextProgram::layoutUniformValues(true, hasVariablePacement, values, texsize, parameters.pixelsToGLUnits, parameters.pixelRatio, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Halo),
bucket.text,
textSegments,
bucket.textSizeBinder,
@@ -316,7 +316,7 @@ void drawText(const DrawFn& draw,
if (values.hasFill) {
draw(parameters.programs.getSymbolLayerPrograms().symbolGlyph,
SymbolSDFTextProgram::layoutUniformValues(true, hasVariablePacement, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Fill),
SymbolSDFTextProgram::layoutUniformValues(true, hasVariablePacement, values, texsize, parameters.pixelsToGLUnits, parameters.pixelRatio, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Fill),
bucket.text,
textSegments,
bucket.textSizeBinder,