trueno/src/shaders/jai/shader_plane.jai

2633 lines
176 KiB
Plaintext

/*
#version:1# (machine generated, don't edit!)
Generated by sokol-shdc (https://github.com/floooh/sokol-tools)
Cmdline:
sokol-shdc -i shader_plane.glsl -o ./jai/shader_plane.jai -l glsl430:glsl300es:metal_macos -f sokol_jai
Overview:
=========
Shader program: 'plane':
Get shader desc: plane_shader_desc(sg_query_backend())
Vertex Shader: vs_plane
Fragment Shader: fs_plane
Attributes:
ATTR_plane_position => 0
Bindings:
Uniform block 'plane_vs_params':
Jai struct: Plane_Vs_Params
Bind slot: UB_plane_vs_params => 0
Uniform block 'plane_world_config':
Jai struct: Plane_World_Config
Bind slot: UB_plane_world_config => 1
Uniform block 'plane_data':
Jai struct: Plane_Data
Bind slot: UB_plane_data => 2
Image 'reftex':
Image type: ._2D
Sample type: .FLOAT
Multisampled: false
Bind slot: IMG_reftex => 0
Sampler 'refsmp':
Type: .FILTERING
Bind slot: SMP_refsmp => 0
*/
ATTR_plane_position :: 0;
UB_plane_vs_params :: 0;
UB_plane_world_config :: 1;
UB_plane_data :: 2;
IMG_reftex :: 0;
SMP_refsmp :: 0;
Plane_Vs_Params :: struct {
mvp: [16]float;
};
Plane_World_Config :: struct {
skyBase: [3]float;
_: [4]u8;
skyTop: [3]float;
_: [4]u8;
sunDisk: [3]float;
_: [4]u8;
horizonHalo: [3]float;
_: [4]u8;
sunHalo: [3]float;
_: [4]u8;
sunLightColor: [3]float;
_: [4]u8;
sunPosition: [3]float;
sunIntensity: float;
skyIntensity: float;
hasClouds: s32;
hasPlane: s32;
planeHeight: float;
planeType: s32;
time: float;
grassDensity: float;
_: [4]u8;
};
Plane_Data :: struct {
screen_w: s32;
screen_h: s32;
is_reflection_pass: s32;
_: [4]u8;
};
/*
#version 430
uniform vec4 plane_vs_params[4];
layout(location = 0) in vec4 position;
layout(location = 0) out vec4 pos;
layout(location = 1) flat out int idx;
void main()
{
vec3 _16 = position.xyz * 1000.0;
float _35 = _16.x;
gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_35, float(gl_InstanceID) * 0.006000000052154064178466796875, _16.z, 1.0);
pos = vec4(_35, _16.yz, 1.0);
idx = gl_InstanceID;
}
*/
vs_plane_source_glsl430 := u8.[
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e,
0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6c,0x61,0x6e,0x65,
0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,
0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,
0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,
0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,
0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,
0x61,0x74,0x20,0x6f,0x75,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,
0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x20,0x3d,0x20,0x70,0x6f,
0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,
0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,
0x33,0x35,0x20,0x3d,0x20,0x5f,0x31,0x36,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,
0x74,0x34,0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,
0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,
0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,
0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x70,
0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,
0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x33,0x35,0x2c,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,
0x49,0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x36,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x35,0x32,0x31,0x35,0x34,0x30,0x36,0x34,0x31,0x37,0x38,0x34,0x36,0x36,
0x37,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,
0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x76,
0x65,0x63,0x34,0x28,0x5f,0x33,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x79,0x7a,0x2c,
0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,
0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,
0x7d,0x0a,0x0a,0x00,
];
/*
#version 430
struct plane_world_config
{
vec3 skyBase;
vec3 skyTop;
vec3 sunDisk;
vec3 horizonHalo;
vec3 sunHalo;
vec3 sunLightColor;
vec3 sunPosition;
float sunIntensity;
float skyIntensity;
int hasClouds;
int hasPlane;
float planeHeight;
int planeType;
float time;
float grassDensity;
};
uniform plane_world_config _207;
uniform ivec4 plane_data[1];
layout(binding = 16) uniform sampler2D reftex_refsmp;
layout(location = 0) out vec4 frag_color;
layout(location = 0) in vec4 pos;
layout(location = 1) flat in int idx;
float random(vec2 st)
{
return fract(sin(dot(st, vec2(12.98980045318603515625, 78.233001708984375))) * 43758.546875);
}
float _noise(vec2 st)
{
vec2 _110 = floor(st);
vec2 _113 = fract(st);
vec2 param = _110;
float _118 = random(param);
vec2 param_1 = _110 + vec2(1.0, 0.0);
float _125 = random(param_1);
vec2 param_2 = _110 + vec2(0.0, 1.0);
vec2 param_3 = _110 + vec2(1.0);
vec2 _148 = (_113 * _113) * (vec2(3.0) - (_113 * 2.0));
float _152 = _148.x;
float _158 = _148.y;
return (mix(_118, _125, _152) + (((random(param_2) - _118) * _158) * (1.0 - _152))) + (((random(param_3) - _125) * _152) * _158);
}
uint murmurHash12(inout uvec2 src)
{
src *= uvec2(1540483477u);
src ^= (src >> uvec2(24u));
src *= uvec2(1540483477u);
uint _66 = ((3744546739u ^ src.x) * 1540483477u) ^ src.y;
uint _73 = (_66 ^ (_66 >> 13u)) * 1540483477u;
return _73 ^ (_73 >> 15u);
}
float hash12(vec2 src)
{
uvec2 param = floatBitsToUint(src);
uint _86 = murmurHash12(param);
return uintBitsToFloat((_86 & 8388607u) | 1065353216u) - 1.0;
}
vec3 wave(vec4 wave_1, vec3 p, inout vec3 tangent, inout vec3 binormal)
{
float _188 = 6.282000064849853515625 / wave_1.w;
vec2 _196 = normalize(vec2(wave_1.x, wave_1.y));
float _216 = _188 * (dot(_196, p.xz) - (_207.time * 0.20000000298023223876953125));
float _220 = wave_1.z / _188;
float _222 = _196.x;
float _223 = -_222;
float _229 = sin(_216);
float _230 = wave_1.z * _229;
float _236 = cos(_216);
float _237 = wave_1.z * _236;
float _243 = _196.y;
float _249 = (_223 * _243) * _230;
tangent += vec3((_223 * _222) * _230, _222 * _237, _249);
binormal += vec3(_249, _243 * _237, ((-_243) * _243) * _230);
float _290 = _220 * _236;
return vec3(_222 * _290, _220 * _229, _243 * _290);
}
void main()
{
if (_207.planeType == 1)
{
frag_color = texelFetch(reftex_refsmp, ivec2(int(gl_FragCoord.x), int(float(plane_data[0].y) - gl_FragCoord.y)), 0) * vec4(0.89999997615814208984375, 0.89999997615814208984375, 1.0, 1.0);
}
else
{
vec2 _363 = pos.xz * _207.grassDensity;
float _365 = _363.y;
float _371 = _363.x + (sin(_365) * 0.5);
vec2 _756 = vec2(_371, _365 + (sin(_371) * 0.5));
vec2 ruohokeskus = round(_756);
vec2 param = _756 * vec2(0.0199999995529651641845703125);
float _390 = _noise(param);
vec2 _395 = _756 * vec2(0.00200000009499490261077880859375);
vec2 param_1 = _395;
float _397 = _noise(param_1);
vec2 param_2 = _395;
float _403 = _noise(param_2);
float noiseval_plantti = _403;
if (_403 < 0.89999997615814208984375)
{
noiseval_plantti = 0.0;
}
else
{
noiseval_plantti = (noiseval_plantti - 0.89999997615814208984375) * 10.0;
}
vec2 param_3 = _756.yx * vec2(0.001428571413271129131317138671875);
float _420 = _noise(param_3);
int is_water = 0;
float is_water_coast = 1.0;
float coast_multiplier = 0.0;
if (_420 > 0.89999997615814208984375)
{
is_water = 1;
if (_420 < 0.930000007152557373046875)
{
is_water_coast = (_420 - 0.89999997615814208984375) * 33.33300018310546875;
}
}
if (_420 > 0.800000011920928955078125)
{
coast_multiplier = (_420 - 0.800000011920928955078125) * 10.0;
}
vec2 param_4 = ruohokeskus;
float rand = (hash12(param_4) - 0.4000000059604644775390625) + (0.4000000059604644775390625 * _397);
vec2 param_5 = round(_363 * 10.0);
vec4 _476 = vec4(vec3(0.800000011920928955078125, 0.699999988079071044921875, 0.5) * mix(0.800000011920928955078125, 1.0, hash12(param_5)), 1.0);
if (is_water == 1)
{
vec4 param_6 = vec4(1.0, 0.5, 0.100000001490116119384765625, 0.89999997615814208984375);
vec3 param_7 = pos.xyz;
vec3 param_8 = vec3(1.0, 0.0, 0.0);
vec3 param_9 = vec3(0.0, 0.0, 1.0);
vec3 _496 = wave(param_6, param_7, param_8, param_9);
vec3 _507 = normalize(cross(normalize(param_9), normalize(param_8)));
vec2 _512 = _507.xz * 0.004999999888241291046142578125;
bool _551 = idx > 0;
bool _559;
if (!_551)
{
_559 = plane_data[0].z == 1;
}
else
{
_559 = _551;
}
if (_559)
{
discard;
}
float _599 = smoothstep(0.0, 0.89999997615814208984375, is_water_coast);
frag_color = vec4(min(vec3(1.0), vec3(mix(1.0, 0.800000011920928955078125, _599)) + ((_207.sunLightColor * (min(max(max(dot(normalize(_207.sunPosition), _507), 0.0), 0.100000001490116119384765625), 1.0) * _207.sunIntensity)) * 0.100000001490116119384765625)), 1.0) * mix(_476, texelFetch(reftex_refsmp, ivec2(int(gl_FragCoord.x + float(int(clamp(_512.x, -0.00999999977648258209228515625, 0.00999999977648258209228515625) * float(plane_data[0].x)))), int(float(plane_data[0].y + int(clamp(_512.y, -0.00999999977648258209228515625, 0.00999999977648258209228515625) * float(plane_data[0].y))) - gl_FragCoord.y)), 0), vec4(_599));
}
else
{
float _620 = float(idx);
float _621 = 0.0078125 * _620;
float _624 = rand;
float _627 = max(0.0, _624 - mix(0.0, 1.0, coast_multiplier));
rand = _627;
vec2 _736 = ruohokeskus;
_736.x = _736.x + ((sin(_207.time * 1.2000000476837158203125) * 0.20000000298023223876953125) * _621);
ruohokeskus = _736;
bool _647 = idx > 0;
if (_647 && (_627 < 0.20000000298023223876953125))
{
discard;
}
bool _666;
if (_647)
{
_666 = ((rand - _621) * 0.5) < length(_736 - _756);
}
else
{
_666 = _647;
}
if (_666)
{
discard;
}
else
{
if (idx == 0)
{
frag_color = mix(vec4(_397 * 0.5, 0.20000000298023223876953125 + (_390 * 0.20000000298023223876953125), 0.100000001490116119384765625, 1.0), _476, vec4(coast_multiplier));
}
else
{
float _711 = (_620 * 0.015625) + 0.4000000059604644775390625;
frag_color = mix(mix(vec4(_397 * 0.5, min(1.0, _621 + 0.20000000298023223876953125) + (_390 * 0.20000000298023223876953125), 0.100000001490116119384765625, 1.0), vec4(_621, _620 * 0.0023437500931322574615478515625, 0.0, 1.0), vec4(noiseval_plantti)), vec4(_711, _711, 0.0, 1.0), vec4(coast_multiplier));
}
}
}
}
}
*/
fs_plane_source_glsl430 := u8.[
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74,
0x72,0x75,0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,
0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,
0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,
0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,
0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,
0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,
0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,
0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,
0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,
0x68,0x61,0x73,0x50,0x6c,0x61,0x6e,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,
0x70,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,
0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x67,0x72,
0x61,0x73,0x73,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,
0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,
0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x30,0x37,0x3b,
0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,
0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,
0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,
0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,
0x6c,0x65,0x72,0x32,0x44,0x20,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,
0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,
0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,
0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,
0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,
0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,
0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,
0x61,0x6e,0x64,0x6f,0x6d,0x28,0x76,0x65,0x63,0x32,0x20,0x73,0x74,0x29,0x0a,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x72,0x61,0x63,
0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,0x74,0x2c,0x20,0x76,0x65,
0x63,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,
0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,
0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,
0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,
0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x6e,0x6f,0x69,
0x73,0x65,0x28,0x76,0x65,0x63,0x32,0x20,0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x31,0x30,0x20,0x3d,0x20,0x66,0x6c,
0x6f,0x6f,0x72,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,
0x32,0x20,0x5f,0x31,0x31,0x33,0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,
0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,
0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x31,0x38,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,
0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,
0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x31,
0x31,0x30,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,
0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,
0x31,0x32,0x35,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,
0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,
0x33,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,
0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,
0x31,0x34,0x38,0x20,0x3d,0x20,0x28,0x5f,0x31,0x31,0x33,0x20,0x2a,0x20,0x5f,0x31,
0x31,0x33,0x29,0x20,0x2a,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x33,0x2e,0x30,0x29,
0x20,0x2d,0x20,0x28,0x5f,0x31,0x31,0x33,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x32,
0x20,0x3d,0x20,0x5f,0x31,0x34,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x38,0x20,0x3d,0x20,0x5f,0x31,0x34,0x38,
0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,
0x6d,0x69,0x78,0x28,0x5f,0x31,0x31,0x38,0x2c,0x20,0x5f,0x31,0x32,0x35,0x2c,0x20,
0x5f,0x31,0x35,0x32,0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,
0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20,0x5f,0x31,0x31,
0x38,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x38,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,
0x30,0x20,0x2d,0x20,0x5f,0x31,0x35,0x32,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,
0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,
0x20,0x2d,0x20,0x5f,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x32,0x29,
0x20,0x2a,0x20,0x5f,0x31,0x35,0x38,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x75,0x69,0x6e,
0x74,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,0x69,
0x6e,0x6f,0x75,0x74,0x20,0x75,0x76,0x65,0x63,0x32,0x20,0x73,0x72,0x63,0x29,0x0a,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,0x75,0x76,0x65,
0x63,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x5e,0x3d,0x20,0x28,0x73,0x72,0x63,
0x20,0x3e,0x3e,0x20,0x75,0x76,0x65,0x63,0x32,0x28,0x32,0x34,0x75,0x29,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,0x75,0x76,0x65,0x63,
0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x36,0x36,0x20,0x3d,0x20,0x28,
0x28,0x33,0x37,0x34,0x34,0x35,0x34,0x36,0x37,0x33,0x39,0x75,0x20,0x5e,0x20,0x73,
0x72,0x63,0x2e,0x78,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,
0x37,0x37,0x75,0x29,0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x79,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x37,0x33,0x20,0x3d,0x20,0x28,0x5f,0x36,
0x36,0x20,0x5e,0x20,0x28,0x5f,0x36,0x36,0x20,0x3e,0x3e,0x20,0x31,0x33,0x75,0x29,
0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x37,0x33,0x20,
0x5e,0x20,0x28,0x5f,0x37,0x33,0x20,0x3e,0x3e,0x20,0x31,0x35,0x75,0x29,0x3b,0x0a,
0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,
0x76,0x65,0x63,0x32,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x75,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x55,0x69,0x6e,0x74,0x28,0x73,0x72,
0x63,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x38,0x36,
0x20,0x3d,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,
0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,
0x72,0x6e,0x20,0x75,0x69,0x6e,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x46,0x6c,0x6f,
0x61,0x74,0x28,0x28,0x5f,0x38,0x36,0x20,0x26,0x20,0x38,0x33,0x38,0x38,0x36,0x30,
0x37,0x75,0x29,0x20,0x7c,0x20,0x31,0x30,0x36,0x35,0x33,0x35,0x33,0x32,0x31,0x36,
0x75,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,
0x33,0x20,0x77,0x61,0x76,0x65,0x28,0x76,0x65,0x63,0x34,0x20,0x77,0x61,0x76,0x65,
0x5f,0x31,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,0x69,0x6e,0x6f,0x75,
0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x2c,0x20,
0x69,0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x62,0x69,0x6e,0x6f,0x72,
0x6d,0x61,0x6c,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x31,0x38,0x38,0x20,0x3d,0x20,0x36,0x2e,0x32,0x38,0x32,0x30,0x30,0x30,
0x30,0x36,0x34,0x38,0x34,0x39,0x38,0x35,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x20,
0x2f,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x39,0x36,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,
0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x65,0x63,0x32,0x28,0x77,0x61,0x76,0x65,0x5f,
0x31,0x2e,0x78,0x2c,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x79,0x29,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31,0x36,0x20,
0x3d,0x20,0x5f,0x31,0x38,0x38,0x20,0x2a,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,
0x39,0x36,0x2c,0x20,0x70,0x2e,0x78,0x7a,0x29,0x20,0x2d,0x20,0x28,0x5f,0x32,0x30,
0x37,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,
0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,
0x2e,0x7a,0x20,0x2f,0x20,0x5f,0x31,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x39,0x36,
0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,
0x32,0x33,0x20,0x3d,0x20,0x2d,0x5f,0x32,0x32,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x39,0x20,0x3d,0x20,0x73,0x69,0x6e,
0x28,0x5f,0x32,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x32,0x33,0x30,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,
0x7a,0x20,0x2a,0x20,0x5f,0x32,0x32,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x5f,0x32,0x33,0x36,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x5f,
0x32,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x32,0x33,0x37,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x7a,0x20,
0x2a,0x20,0x5f,0x32,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x32,0x34,0x33,0x20,0x3d,0x20,0x5f,0x31,0x39,0x36,0x2e,0x79,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x34,0x39,0x20,
0x3d,0x20,0x28,0x5f,0x32,0x32,0x33,0x20,0x2a,0x20,0x5f,0x32,0x34,0x33,0x29,0x20,
0x2a,0x20,0x5f,0x32,0x33,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x61,0x6e,0x67,
0x65,0x6e,0x74,0x20,0x2b,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x5f,0x32,0x32,
0x33,0x20,0x2a,0x20,0x5f,0x32,0x32,0x32,0x29,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,
0x2c,0x20,0x5f,0x32,0x32,0x32,0x20,0x2a,0x20,0x5f,0x32,0x33,0x37,0x2c,0x20,0x5f,
0x32,0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x69,0x6e,0x6f,0x72,0x6d,
0x61,0x6c,0x20,0x2b,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x32,0x34,0x39,0x2c,
0x20,0x5f,0x32,0x34,0x33,0x20,0x2a,0x20,0x5f,0x32,0x33,0x37,0x2c,0x20,0x28,0x28,
0x2d,0x5f,0x32,0x34,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x34,0x33,0x29,0x20,0x2a,
0x20,0x5f,0x32,0x33,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x32,0x39,0x30,0x20,0x3d,0x20,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,
0x5f,0x32,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,
0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x32,0x32,0x32,0x20,0x2a,0x20,0x5f,0x32,0x39,
0x30,0x2c,0x20,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f,0x32,0x32,0x39,0x2c,0x20,
0x5f,0x32,0x34,0x33,0x20,0x2a,0x20,0x5f,0x32,0x39,0x30,0x29,0x3b,0x0a,0x7d,0x0a,
0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x30,0x37,0x2e,0x70,0x6c,0x61,0x6e,
0x65,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,
0x68,0x28,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73,0x6d,0x70,0x2c,
0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x46,0x72,
0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,
0x66,0x6c,0x6f,0x61,0x74,0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,
0x5b,0x30,0x5d,0x2e,0x79,0x29,0x20,0x2d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,
0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x29,0x29,0x2c,0x20,0x30,0x29,0x20,0x2a,0x20,
0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,
0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,
0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,
0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,
0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,
0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x33,0x36,0x33,0x20,0x3d,0x20,0x70,
0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x30,0x37,0x2e,0x67,0x72,0x61,
0x73,0x73,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x36,0x35,0x20,0x3d,0x20,
0x5f,0x33,0x36,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x37,0x31,0x20,0x3d,0x20,0x5f,0x33,0x36,
0x33,0x2e,0x78,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x5f,0x33,0x36,0x35,0x29,
0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x37,0x35,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,
0x32,0x28,0x5f,0x33,0x37,0x31,0x2c,0x20,0x5f,0x33,0x36,0x35,0x20,0x2b,0x20,0x28,
0x73,0x69,0x6e,0x28,0x5f,0x33,0x37,0x31,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,
0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x72,0x6f,
0x75,0x6e,0x64,0x28,0x5f,0x37,0x35,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,
0x5f,0x37,0x35,0x36,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x31,
0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,
0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x30,0x20,
0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x33,
0x39,0x35,0x20,0x3d,0x20,0x5f,0x37,0x35,0x36,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,
0x28,0x30,0x2e,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x34,0x39,
0x39,0x34,0x39,0x30,0x32,0x36,0x31,0x30,0x37,0x37,0x38,0x38,0x30,0x38,0x35,0x39,
0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,
0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33,0x39,
0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,
0x5f,0x33,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x33,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,
0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,
0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x5f,0x34,0x30,
0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,
0x34,0x30,0x33,0x20,0x3c,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,
0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,
0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x6f,0x69,0x73,
0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x28,
0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,
0x20,0x2d,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,
0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,
0x31,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x37,0x35,0x36,0x2e,0x79,0x78,0x20,0x2a,
0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x30,0x31,0x34,0x32,0x38,0x35,0x37,
0x31,0x34,0x31,0x33,0x32,0x37,0x31,0x31,0x32,0x39,0x31,0x33,0x31,0x33,0x31,0x37,
0x31,0x33,0x38,0x36,0x37,0x31,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x32,0x30,0x20,0x3d,
0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,
0x5f,0x77,0x61,0x74,0x65,0x72,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,
0x65,0x72,0x5f,0x63,0x6f,0x61,0x73,0x74,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,
0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x20,0x3d,
0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,
0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x3e,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,
0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,
0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,
0x65,0x72,0x20,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x3c,0x20,0x30,
0x2e,0x39,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x31,0x35,0x32,0x35,0x35,0x37,
0x33,0x37,0x33,0x30,0x34,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,
0x72,0x5f,0x63,0x6f,0x61,0x73,0x74,0x20,0x3d,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,
0x2d,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,
0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x33,
0x33,0x2e,0x33,0x33,0x33,0x30,0x30,0x30,0x31,0x38,0x33,0x31,0x30,0x35,0x34,0x36,
0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x3e,0x20,
0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,
0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,
0x65,0x72,0x20,0x3d,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x2d,0x20,0x30,0x2e,0x38,
0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,
0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,
0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,
0x64,0x20,0x3d,0x20,0x28,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x34,0x29,0x20,0x2d,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,
0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,
0x32,0x35,0x20,0x2a,0x20,0x5f,0x33,0x39,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,
0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,0x33,0x36,0x33,0x20,0x2a,0x20,
0x31,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,
0x65,0x63,0x34,0x20,0x5f,0x34,0x37,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,
0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,
0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,
0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,
0x29,0x20,0x2a,0x20,0x6d,0x69,0x78,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,
0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,
0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x73,0x5f,
0x77,0x61,0x74,0x65,0x72,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,
0x20,0x76,0x65,0x63,0x34,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,
0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,
0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,
0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,
0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x37,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,
0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,
0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x5f,0x34,0x39,0x36,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x28,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x38,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,
0x33,0x20,0x5f,0x35,0x30,0x37,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,
0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,
0x7a,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x29,0x2c,0x20,0x6e,0x6f,0x72,
0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,
0x65,0x63,0x32,0x20,0x5f,0x35,0x31,0x32,0x20,0x3d,0x20,0x5f,0x35,0x30,0x37,0x2e,
0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x34,0x39,0x39,0x39,0x39,0x39,0x39,
0x38,0x38,0x38,0x32,0x34,0x31,0x32,0x39,0x31,0x30,0x34,0x36,0x31,0x34,0x32,0x35,
0x37,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x35,0x31,0x20,0x3d,0x20,0x69,
0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x35,0x39,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,
0x5f,0x35,0x35,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x5f,0x35,0x35,0x39,0x20,0x3d,0x20,0x70,0x6c,0x61,0x6e,0x65,
0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x7a,0x20,0x3d,0x3d,0x20,0x31,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,
0x35,0x39,0x20,0x3d,0x20,0x5f,0x35,0x35,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x35,0x39,0x29,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,
0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x39,0x20,0x3d,0x20,0x73,0x6d,0x6f,
0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,
0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,
0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,0x72,
0x5f,0x63,0x6f,0x61,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,
0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x6e,0x28,0x76,0x65,0x63,0x33,0x28,
0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x69,0x78,0x28,0x31,
0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,
0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,
0x5f,0x35,0x39,0x39,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,0x30,0x37,0x2e,
0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,
0x28,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,
0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x30,0x37,0x2e,
0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x2c,0x20,0x5f,0x35,
0x30,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,
0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x20,
0x2a,0x20,0x5f,0x32,0x30,0x37,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,
0x69,0x74,0x79,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,
0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x20,0x2a,0x20,
0x6d,0x69,0x78,0x28,0x5f,0x34,0x37,0x36,0x2c,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,
0x65,0x74,0x63,0x68,0x28,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73,
0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,
0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x20,0x2b,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,
0x35,0x31,0x32,0x2e,0x78,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,
0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,
0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,
0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,
0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,
0x78,0x29,0x29,0x29,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x66,0x6c,0x6f,0x61,0x74,
0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x79,
0x20,0x2b,0x20,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x31,
0x32,0x2e,0x79,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,
0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,
0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,
0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,
0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,
0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x79,0x29,
0x29,0x29,0x20,0x2d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,
0x64,0x2e,0x79,0x29,0x29,0x2c,0x20,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,
0x5f,0x35,0x39,0x39,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x30,0x20,
0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x64,0x78,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x36,0x32,0x31,0x20,0x3d,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x31,0x32,0x35,
0x20,0x2a,0x20,0x5f,0x36,0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x34,0x20,
0x3d,0x20,0x72,0x61,0x6e,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x37,0x20,0x3d,
0x20,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x32,0x34,0x20,0x2d,
0x20,0x6d,0x69,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x63,
0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x29,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,
0x61,0x6e,0x64,0x20,0x3d,0x20,0x5f,0x36,0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x37,0x33,
0x36,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x33,
0x36,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x37,0x33,0x36,0x2e,0x78,0x20,0x2b,0x20,0x28,
0x28,0x73,0x69,0x6e,0x28,0x5f,0x32,0x30,0x37,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,
0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,
0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,
0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x36,0x32,
0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x37,
0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x34,0x37,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,
0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x34,0x37,0x20,0x26,0x26,0x20,0x28,0x5f,0x36,
0x32,0x37,0x20,0x3c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,
0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,
0x35,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x36,0x36,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,
0x5f,0x36,0x34,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x5f,0x36,0x36,0x36,0x20,0x3d,0x20,0x28,0x28,0x72,0x61,0x6e,
0x64,0x20,0x2d,0x20,0x5f,0x36,0x32,0x31,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,
0x20,0x3c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x37,0x33,0x36,0x20,0x2d,
0x20,0x5f,0x37,0x35,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x5f,0x36,0x36,0x36,0x20,0x3d,0x20,0x5f,0x36,0x34,0x37,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,
0x5f,0x36,0x36,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x64,
0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,
0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,
0x65,0x63,0x34,0x28,0x5f,0x33,0x39,0x37,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,
0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,
0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x20,0x2b,0x20,0x28,
0x5f,0x33,0x39,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,
0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,
0x36,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x5f,0x34,0x37,0x36,0x2c,
0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,
0x69,0x70,0x6c,0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x31,
0x31,0x20,0x3d,0x20,0x28,0x5f,0x36,0x32,0x30,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,
0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,
0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,
0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x76,0x65,
0x63,0x34,0x28,0x5f,0x33,0x39,0x37,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x6d,
0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x32,0x31,0x20,0x2b,0x20,0x30,
0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,
0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,
0x5f,0x33,0x39,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,
0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,
0x36,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,
0x5f,0x36,0x32,0x31,0x2c,0x20,0x5f,0x36,0x32,0x30,0x20,0x2a,0x20,0x30,0x2e,0x30,
0x30,0x32,0x33,0x34,0x33,0x37,0x35,0x30,0x30,0x39,0x33,0x31,0x33,0x32,0x32,0x35,
0x37,0x34,0x36,0x31,0x35,0x34,0x37,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,
0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,
0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,
0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x37,0x31,0x31,0x2c,0x20,0x5f,
0x37,0x31,0x31,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,
0x76,0x65,0x63,0x34,0x28,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,
0x70,0x6c,0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#version 300 es
uniform vec4 plane_vs_params[4];
layout(location = 0) in vec4 position;
out vec4 pos;
flat out int idx;
void main()
{
vec3 _16 = position.xyz * 1000.0;
float _35 = _16.x;
gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_35, float(gl_InstanceID) * 0.006000000052154064178466796875, _16.z, 1.0);
pos = vec4(_35, _16.yz, 1.0);
idx = gl_InstanceID;
}
*/
vs_plane_source_glsl300es := u8.[
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6c,
0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,
0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,
0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,
0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x66,0x6c,0x61,0x74,0x20,0x6f,0x75,0x74,0x20,
0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,
0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,
0x20,0x5f,0x31,0x36,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,
0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x5f,0x31,
0x36,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,
0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x70,0x6c,0x61,0x6e,
0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,
0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,
0x31,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,
0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,
0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,
0x63,0x34,0x28,0x5f,0x33,0x35,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,
0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x30,
0x2e,0x30,0x30,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x32,0x31,0x35,0x34,
0x30,0x36,0x34,0x31,0x37,0x38,0x34,0x36,0x36,0x37,0x39,0x36,0x38,0x37,0x35,0x2c,
0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x33,0x35,
0x2c,0x20,0x5f,0x31,0x36,0x2e,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,
0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#version 300 es
precision mediump float;
precision highp int;
struct plane_world_config
{
highp vec3 skyBase;
highp vec3 skyTop;
highp vec3 sunDisk;
highp vec3 horizonHalo;
highp vec3 sunHalo;
highp vec3 sunLightColor;
highp vec3 sunPosition;
highp float sunIntensity;
highp float skyIntensity;
int hasClouds;
int hasPlane;
highp float planeHeight;
int planeType;
highp float time;
highp float grassDensity;
};
uniform plane_world_config _207;
uniform ivec4 plane_data[1];
uniform highp sampler2D reftex_refsmp;
layout(location = 0) out highp vec4 frag_color;
in highp vec4 pos;
flat in int idx;
highp float random(highp vec2 st)
{
return fract(sin(dot(st, vec2(12.98980045318603515625, 78.233001708984375))) * 43758.546875);
}
highp float _noise(highp vec2 st)
{
highp vec2 _110 = floor(st);
highp vec2 _113 = fract(st);
highp vec2 param = _110;
highp float _118 = random(param);
highp vec2 param_1 = _110 + vec2(1.0, 0.0);
highp float _125 = random(param_1);
highp vec2 param_2 = _110 + vec2(0.0, 1.0);
highp vec2 param_3 = _110 + vec2(1.0);
highp vec2 _148 = (_113 * _113) * (vec2(3.0) - (_113 * 2.0));
highp float _152 = _148.x;
highp float _158 = _148.y;
return (mix(_118, _125, _152) + (((random(param_2) - _118) * _158) * (1.0 - _152))) + (((random(param_3) - _125) * _152) * _158);
}
uint murmurHash12(inout uvec2 src)
{
src *= uvec2(1540483477u);
src ^= (src >> uvec2(24u));
src *= uvec2(1540483477u);
uint _66 = ((3744546739u ^ src.x) * 1540483477u) ^ src.y;
uint _73 = (_66 ^ (_66 >> 13u)) * 1540483477u;
return _73 ^ (_73 >> 15u);
}
highp float hash12(highp vec2 src)
{
uvec2 param = floatBitsToUint(src);
uint _86 = murmurHash12(param);
return uintBitsToFloat((_86 & 8388607u) | 1065353216u) - 1.0;
}
highp vec3 wave(highp vec4 wave_1, highp vec3 p, inout highp vec3 tangent, inout highp vec3 binormal)
{
highp float _188 = 6.282000064849853515625 / wave_1.w;
highp vec2 _196 = normalize(vec2(wave_1.x, wave_1.y));
highp float _216 = _188 * (dot(_196, p.xz) - (_207.time * 0.20000000298023223876953125));
highp float _220 = wave_1.z / _188;
highp float _222 = _196.x;
highp float _223 = -_222;
highp float _229 = sin(_216);
highp float _230 = wave_1.z * _229;
highp float _236 = cos(_216);
highp float _237 = wave_1.z * _236;
highp float _243 = _196.y;
highp float _249 = (_223 * _243) * _230;
tangent += vec3((_223 * _222) * _230, _222 * _237, _249);
binormal += vec3(_249, _243 * _237, ((-_243) * _243) * _230);
highp float _290 = _220 * _236;
return vec3(_222 * _290, _220 * _229, _243 * _290);
}
void main()
{
if (_207.planeType == 1)
{
frag_color = texelFetch(reftex_refsmp, ivec2(int(gl_FragCoord.x), int(float(plane_data[0].y) - gl_FragCoord.y)), 0) * vec4(0.89999997615814208984375, 0.89999997615814208984375, 1.0, 1.0);
}
else
{
highp vec2 _363 = pos.xz * _207.grassDensity;
highp float _365 = _363.y;
highp float _371 = _363.x + (sin(_365) * 0.5);
highp vec2 _756 = vec2(_371, _365 + (sin(_371) * 0.5));
highp vec2 ruohokeskus = round(_756);
highp vec2 param = _756 * vec2(0.0199999995529651641845703125);
highp float _390 = _noise(param);
highp vec2 _395 = _756 * vec2(0.00200000009499490261077880859375);
highp vec2 param_1 = _395;
highp float _397 = _noise(param_1);
highp vec2 param_2 = _395;
highp float _403 = _noise(param_2);
highp float noiseval_plantti = _403;
if (_403 < 0.89999997615814208984375)
{
noiseval_plantti = 0.0;
}
else
{
noiseval_plantti = (noiseval_plantti - 0.89999997615814208984375) * 10.0;
}
highp vec2 param_3 = _756.yx * vec2(0.001428571413271129131317138671875);
highp float _420 = _noise(param_3);
int is_water = 0;
highp float is_water_coast = 1.0;
highp float coast_multiplier = 0.0;
if (_420 > 0.89999997615814208984375)
{
is_water = 1;
if (_420 < 0.930000007152557373046875)
{
is_water_coast = (_420 - 0.89999997615814208984375) * 33.33300018310546875;
}
}
if (_420 > 0.800000011920928955078125)
{
coast_multiplier = (_420 - 0.800000011920928955078125) * 10.0;
}
highp vec2 param_4 = ruohokeskus;
highp float rand = (hash12(param_4) - 0.4000000059604644775390625) + (0.4000000059604644775390625 * _397);
highp vec2 param_5 = round(_363 * 10.0);
highp vec4 _476 = vec4(vec3(0.800000011920928955078125, 0.699999988079071044921875, 0.5) * mix(0.800000011920928955078125, 1.0, hash12(param_5)), 1.0);
if (is_water == 1)
{
highp vec4 param_6 = vec4(1.0, 0.5, 0.100000001490116119384765625, 0.89999997615814208984375);
highp vec3 param_7 = pos.xyz;
highp vec3 param_8 = vec3(1.0, 0.0, 0.0);
highp vec3 param_9 = vec3(0.0, 0.0, 1.0);
highp vec3 _496 = wave(param_6, param_7, param_8, param_9);
highp vec3 _507 = normalize(cross(normalize(param_9), normalize(param_8)));
highp vec2 _512 = _507.xz * 0.004999999888241291046142578125;
bool _551 = idx > 0;
bool _559;
if (!_551)
{
_559 = plane_data[0].z == 1;
}
else
{
_559 = _551;
}
if (_559)
{
discard;
}
highp float _599 = smoothstep(0.0, 0.89999997615814208984375, is_water_coast);
frag_color = vec4(min(vec3(1.0), vec3(mix(1.0, 0.800000011920928955078125, _599)) + ((_207.sunLightColor * (min(max(max(dot(normalize(_207.sunPosition), _507), 0.0), 0.100000001490116119384765625), 1.0) * _207.sunIntensity)) * 0.100000001490116119384765625)), 1.0) * mix(_476, texelFetch(reftex_refsmp, ivec2(int(gl_FragCoord.x + float(int(clamp(_512.x, -0.00999999977648258209228515625, 0.00999999977648258209228515625) * float(plane_data[0].x)))), int(float(plane_data[0].y + int(clamp(_512.y, -0.00999999977648258209228515625, 0.00999999977648258209228515625) * float(plane_data[0].y))) - gl_FragCoord.y)), 0), vec4(_599));
}
else
{
highp float _620 = float(idx);
highp float _621 = 0.0078125 * _620;
highp float _624 = rand;
highp float _627 = max(0.0, _624 - mix(0.0, 1.0, coast_multiplier));
rand = _627;
highp vec2 _736 = ruohokeskus;
_736.x = _736.x + ((sin(_207.time * 1.2000000476837158203125) * 0.20000000298023223876953125) * _621);
ruohokeskus = _736;
bool _647 = idx > 0;
if (_647 && (_627 < 0.20000000298023223876953125))
{
discard;
}
bool _666;
if (_647)
{
_666 = ((rand - _621) * 0.5) < length(_736 - _756);
}
else
{
_666 = _647;
}
if (_666)
{
discard;
}
else
{
if (idx == 0)
{
frag_color = mix(vec4(_397 * 0.5, 0.20000000298023223876953125 + (_390 * 0.20000000298023223876953125), 0.100000001490116119384765625, 1.0), _476, vec4(coast_multiplier));
}
else
{
highp float _711 = (_620 * 0.015625) + 0.4000000059604644775390625;
frag_color = mix(mix(vec4(_397 * 0.5, min(1.0, _621 + 0.20000000298023223876953125) + (_390 * 0.20000000298023223876953125), 0.100000001490116119384765625, 1.0), vec4(_621, _620 * 0.0023437500931322574615478515625, 0.0, 1.0), vec4(noiseval_plantti)), vec4(_711, _711, 0.0, 1.0), vec4(coast_multiplier));
}
}
}
}
}
*/
fs_plane_source_glsl300es := u8.[
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69,
0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73,
0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,
0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,
0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,
0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,
0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,
0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,
0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,
0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,
0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,
0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x50,0x6c,0x61,0x6e,0x65,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x67,0x72,0x61,0x73,0x73,0x44,0x65,0x6e,0x73,
0x69,0x74,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,
0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,
0x66,0x69,0x67,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,
0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,
0x61,0x74,0x61,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,
0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,
0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73,0x6d,0x70,0x3b,0x0a,0x0a,
0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,
0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,
0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,
0x73,0x3b,0x0a,0x66,0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,
0x64,0x78,0x3b,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,
0x63,0x32,0x20,0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,
0x75,0x72,0x6e,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,
0x74,0x28,0x73,0x74,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,
0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,
0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,
0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,
0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,
0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,
0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x73,0x74,0x29,0x0a,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,
0x20,0x5f,0x31,0x31,0x30,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x73,0x74,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,
0x32,0x20,0x5f,0x31,0x31,0x33,0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,
0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,
0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x31,0x31,0x38,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,
0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,
0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,
0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,
0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x35,0x20,0x3d,0x20,0x72,0x61,
0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x76,
0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x76,
0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x34,0x38,0x20,0x3d,0x20,
0x28,0x5f,0x31,0x31,0x33,0x20,0x2a,0x20,0x5f,0x31,0x31,0x33,0x29,0x20,0x2a,0x20,
0x28,0x76,0x65,0x63,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20,0x28,0x5f,0x31,
0x31,0x33,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x32,
0x20,0x3d,0x20,0x5f,0x31,0x34,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x38,0x20,
0x3d,0x20,0x5f,0x31,0x34,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,
0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x31,0x38,0x2c,0x20,
0x5f,0x31,0x32,0x35,0x2c,0x20,0x5f,0x31,0x35,0x32,0x29,0x20,0x2b,0x20,0x28,0x28,
0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,
0x20,0x2d,0x20,0x5f,0x31,0x31,0x38,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x38,0x29,
0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x35,0x32,0x29,0x29,
0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x33,0x29,0x20,0x2d,0x20,0x5f,0x31,0x32,0x35,0x29,0x20,0x2a,
0x20,0x5f,0x31,0x35,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x38,0x29,0x3b,0x0a,
0x7d,0x0a,0x0a,0x75,0x69,0x6e,0x74,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,
0x73,0x68,0x31,0x32,0x28,0x69,0x6e,0x6f,0x75,0x74,0x20,0x75,0x76,0x65,0x63,0x32,
0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,
0x2a,0x3d,0x20,0x75,0x76,0x65,0x63,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,
0x34,0x37,0x37,0x75,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x5e,
0x3d,0x20,0x28,0x73,0x72,0x63,0x20,0x3e,0x3e,0x20,0x75,0x76,0x65,0x63,0x32,0x28,
0x32,0x34,0x75,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,
0x3d,0x20,0x75,0x76,0x65,0x63,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,
0x37,0x37,0x75,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,
0x36,0x36,0x20,0x3d,0x20,0x28,0x28,0x33,0x37,0x34,0x34,0x35,0x34,0x36,0x37,0x33,
0x39,0x75,0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x78,0x29,0x20,0x2a,0x20,0x31,0x35,
0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x20,0x5e,0x20,0x73,0x72,0x63,
0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x37,0x33,
0x20,0x3d,0x20,0x28,0x5f,0x36,0x36,0x20,0x5e,0x20,0x28,0x5f,0x36,0x36,0x20,0x3e,
0x3e,0x20,0x31,0x33,0x75,0x29,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,
0x33,0x34,0x37,0x37,0x75,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,
0x6e,0x20,0x5f,0x37,0x33,0x20,0x5e,0x20,0x28,0x5f,0x37,0x33,0x20,0x3e,0x3e,0x20,
0x31,0x35,0x75,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x68,0x69,0x67,0x68,
0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x75,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x55,0x69,0x6e,0x74,0x28,
0x73,0x72,0x63,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,
0x38,0x36,0x20,0x3d,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,
0x32,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,
0x74,0x75,0x72,0x6e,0x20,0x75,0x69,0x6e,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x46,
0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x38,0x36,0x20,0x26,0x20,0x38,0x33,0x38,0x38,
0x36,0x30,0x37,0x75,0x29,0x20,0x7c,0x20,0x31,0x30,0x36,0x35,0x33,0x35,0x33,0x32,
0x31,0x36,0x75,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x76,0x65,0x28,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,
0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,
0x69,0x6e,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,
0x20,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x2c,0x20,0x69,0x6e,0x6f,0x75,0x74,0x20,
0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x62,0x69,0x6e,0x6f,0x72,
0x6d,0x61,0x6c,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x38,0x20,0x3d,0x20,0x36,0x2e,
0x32,0x38,0x32,0x30,0x30,0x30,0x30,0x36,0x34,0x38,0x34,0x39,0x38,0x35,0x33,0x35,
0x31,0x35,0x36,0x32,0x35,0x20,0x2f,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x77,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,
0x20,0x5f,0x31,0x39,0x36,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,
0x65,0x28,0x76,0x65,0x63,0x32,0x28,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x78,0x2c,
0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31,
0x36,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38,0x20,0x2a,0x20,0x28,0x64,0x6f,0x74,0x28,
0x5f,0x31,0x39,0x36,0x2c,0x20,0x70,0x2e,0x78,0x7a,0x29,0x20,0x2d,0x20,0x28,0x5f,
0x32,0x30,0x37,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,
0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x30,0x20,
0x3d,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x7a,0x20,0x2f,0x20,0x5f,0x31,0x38,
0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x32,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x39,0x36,0x2e,0x78,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x32,0x32,0x33,0x20,0x3d,0x20,0x2d,0x5f,0x32,0x32,0x32,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x32,0x32,0x39,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x5f,0x32,0x31,0x36,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x32,0x33,0x30,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,
0x7a,0x20,0x2a,0x20,0x5f,0x32,0x32,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33,0x36,0x20,0x3d,
0x20,0x63,0x6f,0x73,0x28,0x5f,0x32,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33,0x37,
0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x7a,0x20,0x2a,0x20,0x5f,0x32,
0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x5f,0x32,0x34,0x33,0x20,0x3d,0x20,0x5f,0x31,0x39,0x36,0x2e,
0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x32,0x34,0x39,0x20,0x3d,0x20,0x28,0x5f,0x32,0x32,0x33,0x20,
0x2a,0x20,0x5f,0x32,0x34,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x20,0x2b,0x3d,0x20,0x76,
0x65,0x63,0x33,0x28,0x28,0x5f,0x32,0x32,0x33,0x20,0x2a,0x20,0x5f,0x32,0x32,0x32,
0x29,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,0x2c,0x20,0x5f,0x32,0x32,0x32,0x20,0x2a,
0x20,0x5f,0x32,0x33,0x37,0x2c,0x20,0x5f,0x32,0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x62,0x69,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x2b,0x3d,0x20,0x76,0x65,
0x63,0x33,0x28,0x5f,0x32,0x34,0x39,0x2c,0x20,0x5f,0x32,0x34,0x33,0x20,0x2a,0x20,
0x5f,0x32,0x33,0x37,0x2c,0x20,0x28,0x28,0x2d,0x5f,0x32,0x34,0x33,0x29,0x20,0x2a,
0x20,0x5f,0x32,0x34,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x32,0x39,0x30,0x20,0x3d,0x20,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f,0x32,
0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,
0x65,0x63,0x33,0x28,0x5f,0x32,0x32,0x32,0x20,0x2a,0x20,0x5f,0x32,0x39,0x30,0x2c,
0x20,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f,0x32,0x32,0x39,0x2c,0x20,0x5f,0x32,
0x34,0x33,0x20,0x2a,0x20,0x5f,0x32,0x39,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,
0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x30,0x37,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,
0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28,
0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73,0x6d,0x70,0x2c,0x20,0x69,
0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,
0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x66,0x6c,
0x6f,0x61,0x74,0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,
0x5d,0x2e,0x79,0x29,0x20,0x2d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,
0x6f,0x72,0x64,0x2e,0x79,0x29,0x29,0x2c,0x20,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,
0x63,0x34,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,
0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,
0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,
0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,
0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,
0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x33,0x36,0x33,
0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x30,0x37,
0x2e,0x67,0x72,0x61,0x73,0x73,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x33,0x36,0x35,0x20,0x3d,0x20,0x5f,0x33,0x36,0x33,0x2e,0x79,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x37,0x31,0x20,0x3d,0x20,0x5f,0x33,0x36,
0x33,0x2e,0x78,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x5f,0x33,0x36,0x35,0x29,
0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x37,0x35,0x36,
0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x33,0x37,0x31,0x2c,0x20,0x5f,0x33,
0x36,0x35,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x5f,0x33,0x37,0x31,0x29,0x20,
0x2a,0x20,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x72,0x75,0x6f,0x68,
0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,
0x5f,0x37,0x35,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,
0x3d,0x20,0x5f,0x37,0x35,0x36,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,
0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,
0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x33,0x39,0x30,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,
0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x33,0x39,0x35,
0x20,0x3d,0x20,0x5f,0x37,0x35,0x36,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x30,
0x2e,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x34,0x39,0x39,0x34,
0x39,0x30,0x32,0x36,0x31,0x30,0x37,0x37,0x38,0x38,0x30,0x38,0x35,0x39,0x33,0x37,
0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,
0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,
0x20,0x5f,0x33,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x37,0x20,
0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,
0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,
0x5f,0x33,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x33,0x20,0x3d,
0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,
0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x5f,0x34,0x30,0x33,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x30,0x33,0x20,
0x3c,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,
0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,
0x74,0x74,0x69,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,
0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,
0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x28,0x6e,0x6f,0x69,0x73,
0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x2d,0x20,0x30,
0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,
0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x37,0x35,0x36,0x2e,0x79,0x78,
0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x30,0x31,0x34,0x32,0x38,
0x35,0x37,0x31,0x34,0x31,0x33,0x32,0x37,0x31,0x31,0x32,0x39,0x31,0x33,0x31,0x33,
0x31,0x37,0x31,0x33,0x38,0x36,0x37,0x31,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x34,0x32,0x30,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,0x72,0x20,0x3d,
0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,
0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,0x72,
0x5f,0x63,0x6f,0x61,0x73,0x74,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,
0x65,0x72,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x3e,0x20,0x30,0x2e,0x38,
0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,
0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x73,
0x5f,0x77,0x61,0x74,0x65,0x72,0x20,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x30,
0x20,0x3c,0x20,0x30,0x2e,0x39,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x31,0x35,
0x32,0x35,0x35,0x37,0x33,0x37,0x33,0x30,0x34,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x73,0x5f,
0x77,0x61,0x74,0x65,0x72,0x5f,0x63,0x6f,0x61,0x73,0x74,0x20,0x3d,0x20,0x28,0x5f,
0x34,0x32,0x30,0x20,0x2d,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,
0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,
0x20,0x2a,0x20,0x33,0x33,0x2e,0x33,0x33,0x33,0x30,0x30,0x30,0x31,0x38,0x33,0x31,
0x30,0x35,0x34,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,
0x30,0x20,0x3e,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,
0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,
0x69,0x70,0x6c,0x69,0x65,0x72,0x20,0x3d,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x2d,
0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,
0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x31,
0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,
0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,
0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,
0x64,0x20,0x3d,0x20,0x28,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x34,0x29,0x20,0x2d,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,
0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,
0x32,0x35,0x20,0x2a,0x20,0x5f,0x33,0x39,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,
0x33,0x36,0x33,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,
0x5f,0x34,0x37,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x65,0x63,0x33,
0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,
0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,
0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,
0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,
0x6d,0x69,0x78,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,
0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,
0x31,0x2e,0x30,0x2c,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,
0x72,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,
0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,
0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,
0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,
0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,
0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,
0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x70,0x6f,
0x73,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,
0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,
0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x76,0x65,
0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x39,0x36,0x20,0x3d,
0x20,0x77,0x61,0x76,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x2c,
0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,
0x33,0x20,0x5f,0x35,0x30,0x37,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,
0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,
0x7a,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x29,0x2c,0x20,0x6e,0x6f,0x72,
0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x35,0x31,0x32,0x20,0x3d,
0x20,0x5f,0x35,0x30,0x37,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x34,
0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x32,0x34,0x31,0x32,0x39,0x31,0x30,
0x34,0x36,0x31,0x34,0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,
0x35,0x31,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,
0x35,0x35,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x35,0x35,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x35,0x39,0x20,0x3d,
0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x7a,
0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x5f,0x35,0x35,0x39,0x20,0x3d,0x20,0x5f,0x35,0x35,0x31,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,
0x35,0x35,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x35,0x39,0x39,0x20,0x3d,0x20,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,
0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,
0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,
0x37,0x35,0x2c,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,0x72,0x5f,0x63,0x6f,0x61,
0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,
0x63,0x34,0x28,0x6d,0x69,0x6e,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,
0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x69,0x78,0x28,0x31,0x2e,0x30,0x2c,0x20,
0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,
0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x5f,0x35,0x39,0x39,
0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,0x30,0x37,0x2e,0x73,0x75,0x6e,0x4c,
0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x28,0x6d,0x69,0x6e,
0x28,0x6d,0x61,0x78,0x28,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x6e,0x6f,0x72,
0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x30,0x37,0x2e,0x73,0x75,0x6e,0x50,
0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x2c,0x20,0x5f,0x35,0x30,0x37,0x29,0x2c,
0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,
0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x32,
0x30,0x37,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,
0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,
0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,
0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x20,0x2a,0x20,0x6d,0x69,0x78,0x28,
0x5f,0x34,0x37,0x36,0x2c,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68,
0x28,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73,0x6d,0x70,0x2c,0x20,
0x69,0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,
0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x31,0x32,0x2e,
0x78,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,
0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,
0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,
0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x70,0x6c,
0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x78,0x29,0x29,0x29,
0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x70,0x6c,0x61,
0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x79,0x20,0x2b,0x20,0x69,
0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x31,0x32,0x2e,0x79,0x2c,
0x20,0x2d,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,
0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,
0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,
0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,
0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x70,0x6c,0x61,0x6e,
0x65,0x5f,0x64,0x61,0x74,0x61,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x29,0x29,0x20,0x2d,
0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x29,
0x29,0x2c,0x20,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x35,0x39,0x39,
0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,
0x30,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x64,0x78,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,
0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x31,0x20,0x3d,0x20,0x30,
0x2e,0x30,0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x5f,0x36,0x32,0x30,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,
0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x34,0x20,0x3d,0x20,
0x72,0x61,0x6e,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,
0x32,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,
0x32,0x34,0x20,0x2d,0x20,0x6d,0x69,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,
0x30,0x2c,0x20,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,
0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x72,0x61,0x6e,0x64,0x20,0x3d,0x20,0x5f,0x36,0x32,0x37,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,
0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x37,0x33,0x36,0x20,0x3d,0x20,0x72,0x75,
0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x33,0x36,0x2e,0x78,0x20,0x3d,0x20,
0x5f,0x37,0x33,0x36,0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,0x69,0x6e,0x28,0x5f,
0x32,0x30,0x37,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,0x2e,0x32,0x30,0x30,
0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,
0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,
0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x36,0x32,0x31,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,
0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x37,0x33,0x36,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,
0x36,0x34,0x37,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,
0x36,0x34,0x37,0x20,0x26,0x26,0x20,0x28,0x5f,0x36,0x32,0x37,0x20,0x3c,0x20,0x30,
0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,
0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,
0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,
0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x34,0x37,0x29,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x36,
0x36,0x36,0x20,0x3d,0x20,0x28,0x28,0x72,0x61,0x6e,0x64,0x20,0x2d,0x20,0x5f,0x36,
0x32,0x31,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e,
0x67,0x74,0x68,0x28,0x5f,0x37,0x33,0x36,0x20,0x2d,0x20,0x5f,0x37,0x35,0x36,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,
0x36,0x36,0x36,0x20,0x3d,0x20,0x5f,0x36,0x34,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x36,0x36,0x29,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,
0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,
0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x34,0x28,0x5f,0x33,
0x39,0x37,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,
0x39,0x35,0x33,0x31,0x32,0x35,0x20,0x2b,0x20,0x28,0x5f,0x33,0x39,0x30,0x20,0x2a,
0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,
0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,
0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,
0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x31,
0x2e,0x30,0x29,0x2c,0x20,0x5f,0x34,0x37,0x36,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,
0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,
0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x31,
0x31,0x20,0x3d,0x20,0x28,0x5f,0x36,0x32,0x30,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,
0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,
0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,
0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x76,0x65,
0x63,0x34,0x28,0x5f,0x33,0x39,0x37,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x6d,
0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x32,0x31,0x20,0x2b,0x20,0x30,
0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,
0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,
0x5f,0x33,0x39,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,
0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,
0x36,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,
0x5f,0x36,0x32,0x31,0x2c,0x20,0x5f,0x36,0x32,0x30,0x20,0x2a,0x20,0x30,0x2e,0x30,
0x30,0x32,0x33,0x34,0x33,0x37,0x35,0x30,0x30,0x39,0x33,0x31,0x33,0x32,0x32,0x35,
0x37,0x34,0x36,0x31,0x35,0x34,0x37,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,
0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,
0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,
0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x37,0x31,0x31,0x2c,0x20,0x5f,
0x37,0x31,0x31,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,
0x76,0x65,0x63,0x34,0x28,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,
0x70,0x6c,0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct plane_vs_params
{
float4x4 mvp;
};
struct main0_out
{
float4 pos [[user(locn0)]];
int idx [[user(locn1)]];
float4 gl_Position [[position]];
};
struct main0_in
{
float4 position [[attribute(0)]];
};
vertex main0_out main0(main0_in in [[stage_in]], constant plane_vs_params& _28 [[buffer(0)]], uint gl_InstanceIndex [[instance_id]])
{
main0_out out = {};
float3 _16 = in.position.xyz * 1000.0;
float _35 = _16.x;
out.gl_Position = _28.mvp * float4(_35, float(int(gl_InstanceIndex)) * 0.006000000052154064178466796875, _16.z, 1.0);
out.pos = float4(_35, _16.yz, 1.0);
out.idx = int(gl_InstanceIndex);
return out;
}
*/
vs_plane_source_metal_macos := u8.[
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,
0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,
0x70,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,
0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,
0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,
0x74,0x20,0x69,0x64,0x78,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,
0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,
0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,
0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,
0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,
0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,
0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,
0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,
0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,
0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,
0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,0x38,0x20,0x5b,0x5b,0x62,0x75,0x66,
0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x75,0x69,0x6e,0x74,0x20,0x67,
0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x20,
0x5b,0x5b,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x5f,0x69,0x64,0x5d,0x5d,0x29,
0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,
0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,
0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,
0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x33,0x35,0x20,0x3d,0x20,0x5f,0x31,0x36,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
0x20,0x3d,0x20,0x5f,0x32,0x38,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x34,0x28,0x5f,0x33,0x35,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,
0x6e,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,
0x64,0x65,0x78,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x36,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x35,0x32,0x31,0x35,0x34,0x30,0x36,0x34,0x31,0x37,0x38,0x34,
0x36,0x36,0x37,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,
0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x70,
0x6f,0x73,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x33,0x35,0x2c,
0x20,0x5f,0x31,0x36,0x2e,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74,
0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,
0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,
0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct plane_world_config
{
float3 skyBase;
float3 skyTop;
float3 sunDisk;
float3 horizonHalo;
float3 sunHalo;
float3 sunLightColor;
packed_float3 sunPosition;
float sunIntensity;
float skyIntensity;
int hasClouds;
int hasPlane;
float planeHeight;
int planeType;
float time;
float grassDensity;
};
struct plane_data
{
int screen_w;
int screen_h;
int is_reflection_pass;
};
struct main0_out
{
float4 frag_color [[color(0)]];
};
struct main0_in
{
float4 pos [[user(locn0)]];
int idx [[user(locn1)]];
};
static inline __attribute__((always_inline))
float random(thread const float2& st)
{
return fract(sin(dot(st, float2(12.98980045318603515625, 78.233001708984375))) * 43758.546875);
}
static inline __attribute__((always_inline))
float _noise(thread const float2& st)
{
float2 _110 = floor(st);
float2 _113 = fract(st);
float2 param = _110;
float _118 = random(param);
float2 param_1 = _110 + float2(1.0, 0.0);
float _125 = random(param_1);
float2 param_2 = _110 + float2(0.0, 1.0);
float2 param_3 = _110 + float2(1.0);
float2 _148 = (_113 * _113) * (float2(3.0) - (_113 * 2.0));
float _152 = _148.x;
float _158 = _148.y;
return (mix(_118, _125, _152) + (((random(param_2) - _118) * _158) * (1.0 - _152))) + (((random(param_3) - _125) * _152) * _158);
}
static inline __attribute__((always_inline))
uint murmurHash12(thread uint2& src)
{
src *= uint2(1540483477u);
src ^= (src >> uint2(24u));
src *= uint2(1540483477u);
uint _66 = ((3744546739u ^ src.x) * 1540483477u) ^ src.y;
uint _73 = (_66 ^ (_66 >> 13u)) * 1540483477u;
return _73 ^ (_73 >> 15u);
}
static inline __attribute__((always_inline))
float hash12(thread const float2& src)
{
uint2 param = as_type<uint2>(src);
uint _86 = murmurHash12(param);
return as_type<float>((_86 & 8388607u) | 1065353216u) - 1.0;
}
static inline __attribute__((always_inline))
float3 wave(thread const float4& wave_1, thread const float3& p, thread float3& tangent, thread float3& binormal, constant plane_world_config& _207)
{
float _188 = 6.282000064849853515625 / wave_1.w;
float2 _196 = fast::normalize(float2(wave_1.x, wave_1.y));
float _216 = _188 * (dot(_196, p.xz) - (_207.time * 0.20000000298023223876953125));
float _220 = wave_1.z / _188;
float _222 = _196.x;
float _223 = -_222;
float _229 = sin(_216);
float _230 = wave_1.z * _229;
float _236 = cos(_216);
float _237 = wave_1.z * _236;
float _243 = _196.y;
float _249 = (_223 * _243) * _230;
tangent += float3((_223 * _222) * _230, _222 * _237, _249);
binormal += float3(_249, _243 * _237, ((-_243) * _243) * _230);
float _290 = _220 * _236;
return float3(_222 * _290, _220 * _229, _243 * _290);
}
fragment main0_out main0(main0_in in [[stage_in]], constant plane_world_config& _207 [[buffer(0)]], constant plane_data& _334 [[buffer(1)]], texture2d<float> reftex [[texture(0)]], sampler refsmp [[sampler(0)]], float4 gl_FragCoord [[position]])
{
main0_out out = {};
if (_207.planeType == 1)
{
out.frag_color = reftex.read(uint2(int2(int(gl_FragCoord.x), int(float(_334.screen_h) - gl_FragCoord.y))), 0) * float4(0.89999997615814208984375, 0.89999997615814208984375, 1.0, 1.0);
}
else
{
float2 _363 = in.pos.xz * _207.grassDensity;
float _365 = _363.y;
float _371 = _363.x + (sin(_365) * 0.5);
float2 _756 = float2(_371, _365 + (sin(_371) * 0.5));
float2 ruohokeskus = round(_756);
float2 param = _756 * float2(0.0199999995529651641845703125);
float _390 = _noise(param);
float2 _395 = _756 * float2(0.00200000009499490261077880859375);
float2 param_1 = _395;
float _397 = _noise(param_1);
float2 param_2 = _395;
float _403 = _noise(param_2);
float noiseval_plantti = _403;
if (_403 < 0.89999997615814208984375)
{
noiseval_plantti = 0.0;
}
else
{
noiseval_plantti = (noiseval_plantti - 0.89999997615814208984375) * 10.0;
}
float2 param_3 = _756.yx * float2(0.001428571413271129131317138671875);
float _420 = _noise(param_3);
int is_water = 0;
float is_water_coast = 1.0;
float coast_multiplier = 0.0;
if (_420 > 0.89999997615814208984375)
{
is_water = 1;
if (_420 < 0.930000007152557373046875)
{
is_water_coast = (_420 - 0.89999997615814208984375) * 33.33300018310546875;
}
}
if (_420 > 0.800000011920928955078125)
{
coast_multiplier = (_420 - 0.800000011920928955078125) * 10.0;
}
float2 param_4 = ruohokeskus;
float rand = (hash12(param_4) - 0.4000000059604644775390625) + (0.4000000059604644775390625 * _397);
float2 param_5 = round(_363 * 10.0);
float4 _476 = float4(float3(0.800000011920928955078125, 0.699999988079071044921875, 0.5) * mix(0.800000011920928955078125, 1.0, hash12(param_5)), 1.0);
if (is_water == 1)
{
float4 param_6 = float4(1.0, 0.5, 0.100000001490116119384765625, 0.89999997615814208984375);
float3 param_7 = in.pos.xyz;
float3 param_8 = float3(1.0, 0.0, 0.0);
float3 param_9 = float3(0.0, 0.0, 1.0);
float3 _496 = wave(param_6, param_7, param_8, param_9, _207);
float3 _507 = fast::normalize(cross(fast::normalize(param_9), fast::normalize(param_8)));
float2 _512 = _507.xz * 0.004999999888241291046142578125;
bool _551 = in.idx > 0;
bool _559;
if (!_551)
{
_559 = _334.is_reflection_pass == 1;
}
else
{
_559 = _551;
}
if (_559)
{
discard_fragment();
}
float _599 = smoothstep(0.0, 0.89999997615814208984375, is_water_coast);
out.frag_color = float4(fast::min(float3(1.0), float3(mix(1.0, 0.800000011920928955078125, _599)) + ((_207.sunLightColor * (fast::min(fast::max(fast::max(dot(fast::normalize(float3(_207.sunPosition)), _507), 0.0), 0.100000001490116119384765625), 1.0) * _207.sunIntensity)) * 0.100000001490116119384765625)), 1.0) * mix(_476, reftex.read(uint2(int2(int(gl_FragCoord.x + float(int(fast::clamp(_512.x, -0.00999999977648258209228515625, 0.00999999977648258209228515625) * float(_334.screen_w)))), int(float(_334.screen_h + int(fast::clamp(_512.y, -0.00999999977648258209228515625, 0.00999999977648258209228515625) * float(_334.screen_h))) - gl_FragCoord.y))), 0), float4(_599));
}
else
{
float _620 = float(in.idx);
float _621 = 0.0078125 * _620;
float _624 = rand;
float _627 = fast::max(0.0, _624 - mix(0.0, 1.0, coast_multiplier));
rand = _627;
float2 _736 = ruohokeskus;
_736.x = _736.x + ((sin(_207.time * 1.2000000476837158203125) * 0.20000000298023223876953125) * _621);
ruohokeskus = _736;
bool _647 = in.idx > 0;
if (_647 && (_627 < 0.20000000298023223876953125))
{
discard_fragment();
}
bool _666;
if (_647)
{
_666 = ((rand - _621) * 0.5) < length(_736 - _756);
}
else
{
_666 = _647;
}
if (_666)
{
discard_fragment();
}
else
{
if (in.idx == 0)
{
out.frag_color = mix(float4(_397 * 0.5, 0.20000000298023223876953125 + (_390 * 0.20000000298023223876953125), 0.100000001490116119384765625, 1.0), _476, float4(coast_multiplier));
}
else
{
float _711 = (_620 * 0.015625) + 0.4000000059604644775390625;
out.frag_color = mix(mix(float4(_397 * 0.5, fast::min(1.0, _621 + 0.20000000298023223876953125) + (_390 * 0.20000000298023223876953125), 0.100000001490116119384765625, 1.0), float4(_621, _620 * 0.0023437500931322574615478515625, 0.0, 1.0), float4(noiseval_plantti)), float4(_711, _711, 0.0, 1.0), float4(coast_multiplier));
}
}
}
}
return out;
}
*/
fs_plane_source_metal_macos := u8.[
0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69,
0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64,
0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74,
0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,
0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,
0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,
0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,
0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,
0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,
0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x54,
0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,
0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x48,0x61,
0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,
0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,
0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,
0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,
0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x50,0x6c,0x61,0x6e,0x65,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,
0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,
0x20,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x67,0x72,0x61,0x73,0x73,0x44,0x65,0x6e,0x73,0x69,
0x74,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,
0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,
0x63,0x74,0x69,0x6f,0x6e,0x5f,0x70,0x61,0x73,0x73,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,
0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,
0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,
0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,
0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,
0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,
0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,
0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,
0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,
0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,
0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,
0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x73,0x74,0x29,
0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x72,
0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,0x74,0x2c,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,
0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,
0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,
0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,
0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,
0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,
0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,
0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x6e,0x6f,
0x69,0x73,0x65,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x31,0x30,0x20,0x3d,
0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x31,0x33,0x20,0x3d,0x20,0x66,0x72,
0x61,0x63,0x74,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x31,0x38,
0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x35,0x20,0x3d,
0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,
0x5f,0x33,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x32,0x28,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x32,0x20,0x5f,0x31,0x34,0x38,0x20,0x3d,0x20,0x28,0x5f,0x31,0x31,0x33,
0x20,0x2a,0x20,0x5f,0x31,0x31,0x33,0x29,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,
0x74,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20,0x28,0x5f,0x31,0x31,0x33,0x20,
0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x31,0x35,0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x38,0x2e,0x78,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x38,
0x20,0x3d,0x20,0x5f,0x31,0x34,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,
0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x31,0x38,0x2c,
0x20,0x5f,0x31,0x32,0x35,0x2c,0x20,0x5f,0x31,0x35,0x32,0x29,0x20,0x2b,0x20,0x28,
0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,
0x29,0x20,0x2d,0x20,0x5f,0x31,0x31,0x38,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x38,
0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x35,0x32,0x29,
0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x20,0x2d,0x20,0x5f,0x31,0x32,0x35,0x29,0x20,
0x2a,0x20,0x5f,0x31,0x35,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x38,0x29,0x3b,
0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,
0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,
0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,
0x0a,0x75,0x69,0x6e,0x74,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,
0x31,0x32,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x75,0x69,0x6e,0x74,0x32,0x26,
0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,
0x2a,0x3d,0x20,0x75,0x69,0x6e,0x74,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,
0x34,0x37,0x37,0x75,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x5e,
0x3d,0x20,0x28,0x73,0x72,0x63,0x20,0x3e,0x3e,0x20,0x75,0x69,0x6e,0x74,0x32,0x28,
0x32,0x34,0x75,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,
0x3d,0x20,0x75,0x69,0x6e,0x74,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,
0x37,0x37,0x75,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,
0x36,0x36,0x20,0x3d,0x20,0x28,0x28,0x33,0x37,0x34,0x34,0x35,0x34,0x36,0x37,0x33,
0x39,0x75,0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x78,0x29,0x20,0x2a,0x20,0x31,0x35,
0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x20,0x5e,0x20,0x73,0x72,0x63,
0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x37,0x33,
0x20,0x3d,0x20,0x28,0x5f,0x36,0x36,0x20,0x5e,0x20,0x28,0x5f,0x36,0x36,0x20,0x3e,
0x3e,0x20,0x31,0x33,0x75,0x29,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,
0x33,0x34,0x37,0x37,0x75,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,
0x6e,0x20,0x5f,0x37,0x33,0x20,0x5e,0x20,0x28,0x5f,0x37,0x33,0x20,0x3e,0x3e,0x20,
0x31,0x35,0x75,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,
0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,
0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,
0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,
0x31,0x32,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,
0x20,0x61,0x73,0x5f,0x74,0x79,0x70,0x65,0x3c,0x75,0x69,0x6e,0x74,0x32,0x3e,0x28,
0x73,0x72,0x63,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,
0x38,0x36,0x20,0x3d,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,
0x32,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,
0x74,0x75,0x72,0x6e,0x20,0x61,0x73,0x5f,0x74,0x79,0x70,0x65,0x3c,0x66,0x6c,0x6f,
0x61,0x74,0x3e,0x28,0x28,0x5f,0x38,0x36,0x20,0x26,0x20,0x38,0x33,0x38,0x38,0x36,
0x30,0x37,0x75,0x29,0x20,0x7c,0x20,0x31,0x30,0x36,0x35,0x33,0x35,0x33,0x32,0x31,
0x36,0x75,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,
0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,
0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,
0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,
0x33,0x20,0x77,0x61,0x76,0x65,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,
0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x26,0x20,0x77,0x61,0x76,0x65,
0x5f,0x31,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x70,0x2c,0x20,0x74,0x68,0x72,0x65,
0x61,0x64,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x74,0x61,0x6e,0x67,0x65,
0x6e,0x74,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x33,0x26,0x20,0x62,0x69,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2c,0x20,0x63,0x6f,0x6e,
0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,
0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x32,0x30,0x37,0x29,0x0a,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x38,
0x20,0x3d,0x20,0x36,0x2e,0x32,0x38,0x32,0x30,0x30,0x30,0x30,0x36,0x34,0x38,0x34,
0x39,0x38,0x35,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x20,0x2f,0x20,0x77,0x61,0x76,
0x65,0x5f,0x31,0x2e,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x32,0x20,0x5f,0x31,0x39,0x36,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,
0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,
0x77,0x61,0x76,0x65,0x5f,0x31,0x2e,0x78,0x2c,0x20,0x77,0x61,0x76,0x65,0x5f,0x31,
0x2e,0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x32,0x31,0x36,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38,0x20,0x2a,0x20,0x28,0x64,
0x6f,0x74,0x28,0x5f,0x31,0x39,0x36,0x2c,0x20,0x70,0x2e,0x78,0x7a,0x29,0x20,0x2d,
0x20,0x28,0x5f,0x32,0x30,0x37,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,
0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,
0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x77,
0x61,0x76,0x65,0x5f,0x31,0x2e,0x7a,0x20,0x2f,0x20,0x5f,0x31,0x38,0x38,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x32,0x20,0x3d,
0x20,0x5f,0x31,0x39,0x36,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x32,0x32,0x33,0x20,0x3d,0x20,0x2d,0x5f,0x32,0x32,0x32,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x39,0x20,
0x3d,0x20,0x73,0x69,0x6e,0x28,0x5f,0x32,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33,0x30,0x20,0x3d,0x20,0x77,0x61,
0x76,0x65,0x5f,0x31,0x2e,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x32,0x39,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33,0x36,0x20,0x3d,0x20,
0x63,0x6f,0x73,0x28,0x5f,0x32,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33,0x37,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,
0x5f,0x31,0x2e,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x34,0x33,0x20,0x3d,0x20,0x5f,0x31,
0x39,0x36,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x32,0x34,0x39,0x20,0x3d,0x20,0x28,0x5f,0x32,0x32,0x33,0x20,0x2a,0x20,0x5f,
0x32,0x34,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x74,0x61,0x6e,0x67,0x65,0x6e,0x74,0x20,0x2b,0x3d,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x33,0x28,0x28,0x5f,0x32,0x32,0x33,0x20,0x2a,0x20,0x5f,0x32,0x32,0x32,0x29,
0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,0x2c,0x20,0x5f,0x32,0x32,0x32,0x20,0x2a,0x20,
0x5f,0x32,0x33,0x37,0x2c,0x20,0x5f,0x32,0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x62,0x69,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x2b,0x3d,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x33,0x28,0x5f,0x32,0x34,0x39,0x2c,0x20,0x5f,0x32,0x34,0x33,0x20,0x2a,
0x20,0x5f,0x32,0x33,0x37,0x2c,0x20,0x28,0x28,0x2d,0x5f,0x32,0x34,0x33,0x29,0x20,
0x2a,0x20,0x5f,0x32,0x34,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x39,0x30,0x20,
0x3d,0x20,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f,0x32,0x33,0x36,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,
0x28,0x5f,0x32,0x32,0x32,0x20,0x2a,0x20,0x5f,0x32,0x39,0x30,0x2c,0x20,0x5f,0x32,
0x32,0x30,0x20,0x2a,0x20,0x5f,0x32,0x32,0x39,0x2c,0x20,0x5f,0x32,0x34,0x33,0x20,
0x2a,0x20,0x5f,0x32,0x39,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,
0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,
0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,
0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,
0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,
0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x32,0x30,0x37,
0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,
0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,
0x61,0x74,0x61,0x26,0x20,0x5f,0x33,0x33,0x34,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,
0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,
0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x72,0x65,0x66,0x74,0x65,0x78,
0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,
0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x72,0x65,0x66,0x73,0x6d,0x70,0x20,
0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,
0x6f,0x72,0x64,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,
0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,
0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x69,0x66,0x20,0x28,0x5f,0x32,0x30,0x37,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,
0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,
0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x72,0x65,0x66,0x74,0x65,0x78,0x2e,0x72,
0x65,0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x69,
0x6e,0x74,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,
0x78,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x33,
0x33,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x29,0x20,0x2d,0x20,0x67,
0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x29,0x29,0x29,
0x2c,0x20,0x30,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,
0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,
0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,
0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,
0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x32,0x20,0x5f,0x33,0x36,0x33,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,
0x2e,0x78,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x30,0x37,0x2e,0x67,0x72,0x61,0x73,0x73,
0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x36,0x35,0x20,0x3d,0x20,0x5f,0x33,
0x36,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x5f,0x33,0x37,0x31,0x20,0x3d,0x20,0x5f,0x33,0x36,0x33,0x2e,
0x78,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x5f,0x33,0x36,0x35,0x29,0x20,0x2a,
0x20,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x37,0x35,0x36,0x20,0x3d,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x32,0x28,0x5f,0x33,0x37,0x31,0x2c,0x20,0x5f,0x33,0x36,0x35,0x20,0x2b,
0x20,0x28,0x73,0x69,0x6e,0x28,0x5f,0x33,0x37,0x31,0x29,0x20,0x2a,0x20,0x30,0x2e,
0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x32,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,
0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,0x37,0x35,0x36,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,
0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x37,0x35,0x36,0x20,0x2a,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x32,0x28,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,
0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,
0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x33,0x39,0x30,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,
0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x33,0x39,0x35,0x20,0x3d,0x20,0x5f,
0x37,0x35,0x36,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x30,
0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x34,0x39,0x39,0x34,0x39,0x30,
0x32,0x36,0x31,0x30,0x37,0x37,0x38,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33,0x39,0x35,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,
0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,
0x5f,0x33,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x33,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,
0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,
0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x5f,0x34,0x30,
0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,
0x34,0x30,0x33,0x20,0x3c,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,
0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,
0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x6f,0x69,0x73,
0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,0x20,0x3d,0x20,0x28,
0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,0x74,0x69,
0x20,0x2d,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,
0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,
0x31,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x37,0x35,0x36,0x2e,0x79,0x78,
0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x30,0x30,0x31,0x34,
0x32,0x38,0x35,0x37,0x31,0x34,0x31,0x33,0x32,0x37,0x31,0x31,0x32,0x39,0x31,0x33,
0x31,0x33,0x31,0x37,0x31,0x33,0x38,0x36,0x37,0x31,0x38,0x37,0x35,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,
0x32,0x30,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,
0x74,0x20,0x69,0x73,0x5f,0x77,0x61,0x74,0x65,0x72,0x20,0x3d,0x20,0x30,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x73,
0x5f,0x77,0x61,0x74,0x65,0x72,0x5f,0x63,0x6f,0x61,0x73,0x74,0x20,0x3d,0x20,0x31,
0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,
0x65,0x72,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x3e,0x20,0x30,0x2e,0x38,
0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,
0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x73,
0x5f,0x77,0x61,0x74,0x65,0x72,0x20,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x30,
0x20,0x3c,0x20,0x30,0x2e,0x39,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x31,0x35,
0x32,0x35,0x35,0x37,0x33,0x37,0x33,0x30,0x34,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x73,0x5f,
0x77,0x61,0x74,0x65,0x72,0x5f,0x63,0x6f,0x61,0x73,0x74,0x20,0x3d,0x20,0x28,0x5f,
0x34,0x32,0x30,0x20,0x2d,0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,
0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,
0x20,0x2a,0x20,0x33,0x33,0x2e,0x33,0x33,0x33,0x30,0x30,0x30,0x31,0x38,0x33,0x31,
0x30,0x35,0x34,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,
0x30,0x20,0x3e,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,
0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,0x6c,0x74,
0x69,0x70,0x6c,0x69,0x65,0x72,0x20,0x3d,0x20,0x28,0x5f,0x34,0x32,0x30,0x20,0x2d,
0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,
0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x31,
0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,
0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x20,0x3d,0x20,0x28,0x68,0x61,0x73,0x68,0x31,
0x32,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2d,0x20,0x30,0x2e,0x34,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,
0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x30,0x2e,0x34,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,
0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x20,0x2a,0x20,0x5f,0x33,0x39,0x37,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,
0x28,0x5f,0x33,0x36,0x33,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x34,
0x37,0x36,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x6c,0x6f,0x61,
0x74,0x33,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,
0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,
0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,
0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,0x29,0x20,
0x2a,0x20,0x6d,0x69,0x78,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,
0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x73,0x5f,0x77,0x61,
0x74,0x65,0x72,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,
0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,
0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,
0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,
0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,
0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,
0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,
0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,
0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,
0x20,0x5f,0x34,0x39,0x36,0x20,0x3d,0x20,0x77,0x61,0x76,0x65,0x28,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x38,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,
0x20,0x5f,0x32,0x30,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x30,0x37,0x20,
0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,
0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,
0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x29,
0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,
0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
0x20,0x5f,0x35,0x31,0x32,0x20,0x3d,0x20,0x5f,0x35,0x30,0x37,0x2e,0x78,0x7a,0x20,
0x2a,0x20,0x30,0x2e,0x30,0x30,0x34,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,
0x32,0x34,0x31,0x32,0x39,0x31,0x30,0x34,0x36,0x31,0x34,0x32,0x35,0x37,0x38,0x31,
0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x35,0x31,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,
0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x35,0x39,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,
0x5f,0x35,0x35,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x5f,0x35,0x35,0x39,0x20,0x3d,0x20,0x5f,0x33,0x33,0x34,0x2e,
0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x70,0x61,
0x73,0x73,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x35,0x39,0x20,0x3d,0x20,0x5f,0x35,0x35,
0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,
0x28,0x5f,0x35,0x35,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,
0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x39,0x20,0x3d,0x20,
0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,
0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,
0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x69,0x73,0x5f,0x77,0x61,
0x74,0x65,0x72,0x5f,0x63,0x6f,0x61,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,
0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,
0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x69,0x6e,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,
0x28,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x6d,0x69,
0x78,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,
0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,
0x35,0x2c,0x20,0x5f,0x35,0x39,0x39,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,
0x30,0x37,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,
0x20,0x2a,0x20,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x69,0x6e,0x28,0x66,0x61,
0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,
0x78,0x28,0x64,0x6f,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,
0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x30,
0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,
0x20,0x5f,0x35,0x30,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,
0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,
0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,
0x30,0x29,0x20,0x2a,0x20,0x5f,0x32,0x30,0x37,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,
0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,
0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,
0x20,0x2a,0x20,0x6d,0x69,0x78,0x28,0x5f,0x34,0x37,0x36,0x2c,0x20,0x72,0x65,0x66,
0x74,0x65,0x78,0x2e,0x72,0x65,0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,
0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,
0x6f,0x6f,0x72,0x64,0x2e,0x78,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,
0x6e,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,
0x35,0x31,0x32,0x2e,0x78,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,
0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,
0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,
0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,
0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x28,0x5f,0x33,0x33,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,
0x29,0x29,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,
0x33,0x33,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x20,0x2b,0x20,0x69,
0x6e,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,
0x35,0x31,0x32,0x2e,0x79,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,
0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,
0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,
0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,
0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x28,0x5f,0x33,0x33,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x29,
0x29,0x29,0x20,0x2d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,
0x64,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x34,0x28,0x5f,0x35,0x39,0x39,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,
0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,
0x32,0x30,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x2e,0x69,0x64,
0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x31,0x20,0x3d,0x20,0x30,0x2e,0x30,
0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x5f,0x36,0x32,0x30,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x36,0x32,0x34,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x36,0x32,0x37,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,
0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x32,0x34,0x20,0x2d,0x20,0x6d,0x69,0x78,
0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x63,0x6f,0x61,0x73,0x74,
0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x61,0x6e,0x64,0x20,
0x3d,0x20,0x5f,0x36,0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x37,0x33,0x36,0x20,
0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x33,0x36,0x2e,
0x78,0x20,0x3d,0x20,0x5f,0x37,0x33,0x36,0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,
0x69,0x6e,0x28,0x5f,0x32,0x30,0x37,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,
0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,
0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,
0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x36,0x32,0x31,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x75,
0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x37,0x33,0x36,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,
0x6f,0x6c,0x20,0x5f,0x36,0x34,0x37,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,0x64,0x78,
0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x34,0x37,0x20,0x26,0x26,0x20,0x28,0x5f,
0x36,0x32,0x37,0x20,0x3c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,
0x32,0x35,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,
0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x34,0x37,
0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x5f,0x36,0x36,0x36,0x20,0x3d,0x20,0x28,0x28,0x72,0x61,0x6e,0x64,0x20,0x2d,0x20,
0x5f,0x36,0x32,0x31,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,
0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x37,0x33,0x36,0x20,0x2d,0x20,0x5f,0x37,0x35,
0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,
0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x5f,0x36,0x36,0x36,0x20,0x3d,0x20,0x5f,0x36,0x34,0x37,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x36,0x36,
0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,
0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,
0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x2e,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,
0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,
0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,
0x61,0x74,0x34,0x28,0x5f,0x33,0x39,0x37,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,
0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,
0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x20,0x2b,0x20,0x28,
0x5f,0x33,0x39,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,
0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,
0x36,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x5f,0x34,0x37,0x36,0x2c,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x63,0x6f,0x61,0x73,0x74,0x5f,0x6d,0x75,
0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,
0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,
0x37,0x31,0x31,0x20,0x3d,0x20,0x28,0x5f,0x36,0x32,0x30,0x20,0x2a,0x20,0x30,0x2e,
0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,
0x39,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,
0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,
0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x33,0x39,0x37,0x20,
0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x69,0x6e,
0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x32,0x31,0x20,0x2b,0x20,0x30,0x2e,0x32,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,
0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x33,
0x39,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,
0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,
0x35,0x29,0x2c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,
0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,
0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,
0x5f,0x36,0x32,0x31,0x2c,0x20,0x5f,0x36,0x32,0x30,0x20,0x2a,0x20,0x30,0x2e,0x30,
0x30,0x32,0x33,0x34,0x33,0x37,0x35,0x30,0x30,0x39,0x33,0x31,0x33,0x32,0x32,0x35,
0x37,0x34,0x36,0x31,0x35,0x34,0x37,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,
0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x34,0x28,0x6e,0x6f,0x69,0x73,0x65,0x76,0x61,0x6c,0x5f,0x70,0x6c,0x61,0x6e,0x74,
0x74,0x69,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x37,0x31,
0x31,0x2c,0x20,0x5f,0x37,0x31,0x31,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,
0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x63,0x6f,0x61,0x73,0x74,
0x5f,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x29,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,
0x0a,0x0a,0x00,
];
plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
desc: sg_shader_desc;
desc.label = "plane_shader";
if backend == {
case .GLCORE;
desc.vertex_func.source = xx *vs_plane_source_glsl430;
desc.vertex_func.entry = "main";
desc.fragment_func.source = xx *fs_plane_source_glsl430;
desc.fragment_func.entry = "main";
desc.attrs[0].base_type = .FLOAT;
desc.attrs[0].glsl_name = "position";
desc.uniform_blocks[0].stage = .VERTEX;
desc.uniform_blocks[0].layout = .STD140;
desc.uniform_blocks[0].size = 64;
desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4;
desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4;
desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "plane_vs_params";
desc.uniform_blocks[1].stage = .FRAGMENT;
desc.uniform_blocks[1].layout = .STD140;
desc.uniform_blocks[1].size = 144;
desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_207.skyBase";
desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_207.skyTop";
desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_207.sunDisk";
desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_207.horizonHalo";
desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_207.sunHalo";
desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_207.sunLightColor";
desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_207.sunPosition";
desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_207.sunIntensity";
desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_207.skyIntensity";
desc.uniform_blocks[1].glsl_uniforms[9].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_207.hasClouds";
desc.uniform_blocks[1].glsl_uniforms[10].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_207.hasPlane";
desc.uniform_blocks[1].glsl_uniforms[11].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_207.planeHeight";
desc.uniform_blocks[1].glsl_uniforms[12].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_207.planeType";
desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_207.time";
desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_207.grassDensity";
desc.uniform_blocks[2].stage = .FRAGMENT;
desc.uniform_blocks[2].layout = .STD140;
desc.uniform_blocks[2].size = 16;
desc.uniform_blocks[2].glsl_uniforms[0].type = .INT4;
desc.uniform_blocks[2].glsl_uniforms[0].array_count = 1;
desc.uniform_blocks[2].glsl_uniforms[0].glsl_name = "plane_data";
desc.images[0].stage = .FRAGMENT;
desc.images[0].multisampled = false;
desc.images[0].image_type = ._2D;
desc.images[0].sample_type = .FLOAT;
desc.samplers[0].stage = .FRAGMENT;
desc.samplers[0].sampler_type = .FILTERING;
desc.image_sampler_pairs[0].stage = .FRAGMENT;
desc.image_sampler_pairs[0].image_slot = 0;
desc.image_sampler_pairs[0].sampler_slot = 0;
desc.image_sampler_pairs[0].glsl_name = "reftex_refsmp";
case .GLES3;
desc.vertex_func.source = xx *vs_plane_source_glsl300es;
desc.vertex_func.entry = "main";
desc.fragment_func.source = xx *fs_plane_source_glsl300es;
desc.fragment_func.entry = "main";
desc.attrs[0].base_type = .FLOAT;
desc.attrs[0].glsl_name = "position";
desc.uniform_blocks[0].stage = .VERTEX;
desc.uniform_blocks[0].layout = .STD140;
desc.uniform_blocks[0].size = 64;
desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4;
desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4;
desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "plane_vs_params";
desc.uniform_blocks[1].stage = .FRAGMENT;
desc.uniform_blocks[1].layout = .STD140;
desc.uniform_blocks[1].size = 144;
desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_207.skyBase";
desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_207.skyTop";
desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_207.sunDisk";
desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_207.horizonHalo";
desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_207.sunHalo";
desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_207.sunLightColor";
desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_207.sunPosition";
desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_207.sunIntensity";
desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_207.skyIntensity";
desc.uniform_blocks[1].glsl_uniforms[9].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_207.hasClouds";
desc.uniform_blocks[1].glsl_uniforms[10].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_207.hasPlane";
desc.uniform_blocks[1].glsl_uniforms[11].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_207.planeHeight";
desc.uniform_blocks[1].glsl_uniforms[12].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_207.planeType";
desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_207.time";
desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_207.grassDensity";
desc.uniform_blocks[2].stage = .FRAGMENT;
desc.uniform_blocks[2].layout = .STD140;
desc.uniform_blocks[2].size = 16;
desc.uniform_blocks[2].glsl_uniforms[0].type = .INT4;
desc.uniform_blocks[2].glsl_uniforms[0].array_count = 1;
desc.uniform_blocks[2].glsl_uniforms[0].glsl_name = "plane_data";
desc.images[0].stage = .FRAGMENT;
desc.images[0].multisampled = false;
desc.images[0].image_type = ._2D;
desc.images[0].sample_type = .FLOAT;
desc.samplers[0].stage = .FRAGMENT;
desc.samplers[0].sampler_type = .FILTERING;
desc.image_sampler_pairs[0].stage = .FRAGMENT;
desc.image_sampler_pairs[0].image_slot = 0;
desc.image_sampler_pairs[0].sampler_slot = 0;
desc.image_sampler_pairs[0].glsl_name = "reftex_refsmp";
case .METAL_MACOS;
desc.vertex_func.source = xx *vs_plane_source_metal_macos;
desc.vertex_func.entry = "main0";
desc.fragment_func.source = xx *fs_plane_source_metal_macos;
desc.fragment_func.entry = "main0";
desc.attrs[0].base_type = .FLOAT;
desc.uniform_blocks[0].stage = .VERTEX;
desc.uniform_blocks[0].layout = .STD140;
desc.uniform_blocks[0].size = 64;
desc.uniform_blocks[0].msl_buffer_n = 0;
desc.uniform_blocks[1].stage = .FRAGMENT;
desc.uniform_blocks[1].layout = .STD140;
desc.uniform_blocks[1].size = 144;
desc.uniform_blocks[1].msl_buffer_n = 0;
desc.uniform_blocks[2].stage = .FRAGMENT;
desc.uniform_blocks[2].layout = .STD140;
desc.uniform_blocks[2].size = 16;
desc.uniform_blocks[2].msl_buffer_n = 1;
desc.images[0].stage = .FRAGMENT;
desc.images[0].multisampled = false;
desc.images[0].image_type = ._2D;
desc.images[0].sample_type = .FLOAT;
desc.images[0].msl_texture_n = 0;
desc.samplers[0].stage = .FRAGMENT;
desc.samplers[0].sampler_type = .FILTERING;
desc.samplers[0].msl_sampler_n = 0;
desc.image_sampler_pairs[0].stage = .FRAGMENT;
desc.image_sampler_pairs[0].image_slot = 0;
desc.image_sampler_pairs[0].sampler_slot = 0;
}
return desc;
}