diff --git a/src/editor/editor.jai b/src/editor/editor.jai index 67930b5..8752ca0 100644 --- a/src/editor/editor.jai +++ b/src/editor/editor.jai @@ -107,14 +107,16 @@ tick_editor_ui :: () { #if OS != .WASM { if in_editor_view { - if current_editor_view == { - case .Trile_Editor; - tick_trile_editor(); - case .Level_Editor; - tick_level_editor(); - case .Particle_Editor; - tick_particle_editor(); - } + disable_dof_post_process = false; + if current_editor_view == { + case .Trile_Editor; + disable_dof_post_process = true; + tick_trile_editor(); + case .Level_Editor; + tick_level_editor(); + case .Particle_Editor; + tick_particle_editor(); + } } } diff --git a/src/rendering/backend_sokol.jai b/src/rendering/backend_sokol.jai index f011cb9..16cdd89 100644 --- a/src/rendering/backend_sokol.jai +++ b/src/rendering/backend_sokol.jai @@ -736,6 +736,7 @@ backend_process_command_buckets :: () { } sg_apply_uniforms(UB_post_process_config, *(sg_range.{ ptr = *post_process_config_uniform, size = size_of(type_of(post_process_config_uniform)) })); dof_config_uniform : Dof_Config; + dof_config_uniform.dof_disabled = ifx disable_dof_post_process then cast(s32)1 else cast(s32)0; dof_config_uniform.dof_max = current_post_process.dof_max; dof_config_uniform.dof_point = current_post_process.dof_point; sg_apply_uniforms(UB_dof_config, *(sg_range.{ ptr = *dof_config_uniform, size = size_of(type_of(dof_config_uniform)) })); diff --git a/src/rendering/post_processing.jai b/src/rendering/post_processing.jai index f273cde..4f7fae1 100644 --- a/src/rendering/post_processing.jai +++ b/src/rendering/post_processing.jai @@ -1,3 +1,5 @@ +disable_dof_post_process : bool = false; + Post_Process :: struct { exposure : float = 1.0; @Slider,0,3,0.1; contrast : float = 1.0; @Slider,0,3,0.1; diff --git a/src/shaders/jai/shader_post_process_main.jai b/src/shaders/jai/shader_post_process_main.jai index fa6ef9d..8f478c9 100644 --- a/src/shaders/jai/shader_post_process_main.jai +++ b/src/shaders/jai/shader_post_process_main.jai @@ -96,9 +96,10 @@ Post_Process_Config :: struct { _: [4]u8; }; Dof_Config :: struct { + dof_disabled: s32; dof_max: float; dof_point: float; - _: [8]u8; + _: [4]u8; }; /* #version 430 @@ -156,7 +157,15 @@ vs_pp_source_glsl430 := u8.[ uniform post_process_config _174; - uniform vec4 dof_config[1]; + struct dof_config + { + int dof_disabled; + float dof_max; + float dof_point; + }; + + uniform dof_config _279; + layout(binding = 16) uniform sampler2D pptex_ppsmp; layout(binding = 17) uniform sampler2D pos_buf_pos_smp; layout(binding = 18) uniform sampler2D dof_tex_dof_smp; @@ -235,25 +244,24 @@ vs_pp_source_glsl430 := u8.[ { sampled_color_hdr = texture(pptex_ppsmp, _184).xyz; } - vec4 _284 = texture(pos_buf_pos_smp, _184); - vec4 _311 = texture(dof_tex_dof_smp, _184); - vec3 _313 = sampled_color_hdr; - vec3 _317 = mix(_313, _311.xyz, vec3(smoothstep(0.0, 1.0, abs(abs(_284.z) - dof_config[0].y) / max(dof_config[0].x, 9.9999997473787516355514526367188e-05)))); - sampled_color_hdr = _317; - vec4 _325 = texture(bloom_tex_bloom_smp, _184); - vec3 _336 = (_317 + (_325.xyz * _174.bloom_amount)) * _174.exposure; + if (_279.dof_disabled == 0) + { + sampled_color_hdr = mix(sampled_color_hdr, texture(dof_tex_dof_smp, _184).xyz, vec3(smoothstep(0.0, 1.0, abs(abs(texture(pos_buf_pos_smp, _184).z) - _279.dof_point) / max(_279.dof_max, 9.9999997473787516355514526367188e-05)))); + } + vec4 _331 = texture(bloom_tex_bloom_smp, _184); + vec3 _342 = (sampled_color_hdr + (_331.xyz * _174.bloom_amount)) * _174.exposure; vec3 color_ldr_linear; if (_174.tonemap > 0.5) { - vec3 param = _336; + vec3 param = _342; color_ldr_linear = aces(param); } else { - color_ldr_linear = _336; + color_ldr_linear = _342; } - vec3 _356 = ((color_ldr_linear - vec3(0.5)) * max(_174.contrast, 0.0)) + vec3(0.5); - color_ldr_linear = clamp(mix(vec3(dot(_356, vec3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _356, vec3(_174.saturation)), vec3(0.0), vec3(1.0)); + vec3 _362 = ((color_ldr_linear - vec3(0.5)) * max(_174.contrast, 0.0)) + vec3(0.5); + color_ldr_linear = clamp(mix(vec3(dot(_362, vec3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _362, vec3(_174.saturation)), vec3(0.0), vec3(1.0)); if (_174.dither_intensity > 0.0) { vec2 param_1 = gl_FragCoord.xy; @@ -267,19 +275,19 @@ vs_pp_source_glsl430 := u8.[ } else { - float _449 = color_ldr_linear.z * 15.0; - float _452 = floor(_449); - float _463 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; - float _469 = color_ldr_linear.x * 15.0; - color_ldr_linear = mix(texture(lut_lut_linear, vec2((((_452 * 16.0) + _469) + 0.5) * 0.00390625, _463)).xyz, texture(lut_lut_linear, vec2((((min(_452 + 1.0, 15.0) * 16.0) + _469) + 0.5) * 0.00390625, _463)).xyz, vec3(_449 - _452)); + float _454 = color_ldr_linear.z * 15.0; + float _457 = floor(_454); + float _468 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; + float _474 = color_ldr_linear.x * 15.0; + color_ldr_linear = mix(texture(lut_lut_linear, vec2((((_457 * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, texture(lut_lut_linear, vec2((((min(_457 + 1.0, 15.0) * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, vec3(_454 - _457)); } } vec3 color_srgb = (pow(color_ldr_linear, vec3(1.0 / _174.gamma)) * (1.0 - (smoothstep(0.0, _174.vignette_radius, _167) * _174.vignette_intensity))) * (1.0 - (((sin(gl_FragCoord.y * _174.scanlines_density) * 0.5) + 0.5) * _174.scanlines_intensity)); vec2 param_2 = texcoord; - vec3 _559 = color_srgb; - vec3 _561 = _559 + vec3((rand(param_2) - 0.5) * _174.film_grain_intensity); - color_srgb = _561; - frag_color = vec4(clamp(_561, vec3(0.0), vec3(1.0)), 1.0); + vec3 _564 = color_srgb; + vec3 _566 = _564 + vec3((rand(param_2) - 0.5) * _174.film_grain_intensity); + color_srgb = _566; + frag_color = vec4(clamp(_566, vec3(0.0), vec3(1.0)), 1.0); } */ @@ -331,296 +339,299 @@ fs_pp_source_glsl430 := u8.[ 0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f, 0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x31,0x37,0x34, - 0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20, - 0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x5b,0x31,0x5d,0x3b,0x0a,0x6c, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f, + 0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64, + 0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70,0x6f, + 0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, + 0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x37,0x39, + 0x3b,0x0a,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,0x70,0x70,0x74,0x65,0x78,0x5f, + 0x70,0x70,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69, + 0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66, + 0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x70,0x6f, + 0x73,0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,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,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d, + 0x31,0x38,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70, + 0x6c,0x65,0x72,0x32,0x44,0x20,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f, + 0x66,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69, + 0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x39,0x29,0x20,0x75,0x6e,0x69,0x66, + 0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c, + 0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d, 0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e, - 0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x70,0x6f,0x73,0x5f,0x62,0x75, - 0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x38,0x29,0x20, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73,0x6d, - 0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e, - 0x67,0x20,0x3d,0x20,0x31,0x39,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20, - 0x32,0x30,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x32,0x44,0x20,0x6c,0x75,0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20, - 0x3d,0x20,0x32,0x31,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f, - 0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,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,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,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,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20, - 0x61,0x63,0x65,0x73,0x28,0x76,0x65,0x63,0x33,0x20,0x78,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x35,0x30,0x39, - 0x39,0x39,0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36,0x38,0x33,0x35,0x39, - 0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x32, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34,0x37,0x37,0x34,0x36, - 0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2f, - 0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x34, - 0x33,0x30,0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32,0x30,0x32,0x31,0x34, - 0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36,0x32, - 0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x31,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, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x76,0x65,0x63,0x32,0x20,0x70, - 0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20, - 0x5f,0x36,0x38,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x70,0x6f,0x73,0x29, - 0x20,0x25,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x31,0x34,0x35,0x5b,0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f,0x36,0x38, - 0x2e,0x79,0x20,0x2a,0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31, - 0x35,0x36,0x32,0x35,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x28,0x76,0x65,0x63,0x32,0x20, - 0x63,0x6f,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,0x63, - 0x6f,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,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x32,0x20,0x5f,0x31,0x36,0x36,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20,0x3d,0x20, - 0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x38,0x34,0x20,0x3d,0x20,0x28,0x5f, - 0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x28,0x5f,0x31, - 0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c, - 0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65, - 0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28, - 0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e, - 0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x32,0x20,0x3d, - 0x20,0x5f,0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d,0x20,0x5f,0x31,0x39, - 0x32,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39,0x33,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32, - 0x20,0x3e,0x20,0x31,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,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x30, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f, - 0x31,0x38,0x34,0x2e,0x79,0x20,0x3c,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,0x5f,0x32,0x30,0x37,0x20,0x3d, - 0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32, - 0x31,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x21,0x5f,0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31, - 0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e,0x20,0x31,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,0x5f, - 0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x32,0x31,0x34,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,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x30,0x2e,0x30,0x2c,0x20,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,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37, - 0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72, - 0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x20,0x3e,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,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x32,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69, - 0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20,0x2b,0x20,0x5f,0x32,0x34,0x32,0x29, - 0x2e,0x78,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65, - 0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x79, - 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f, - 0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20,0x5f,0x32, - 0x34,0x32,0x29,0x2e,0x7a,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,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31, - 0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x32,0x38,0x34,0x20,0x3d,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x5f,0x70, - 0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x31,0x31,0x20,0x3d,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64, - 0x6f,0x66,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x31,0x33,0x20,0x3d,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x31,0x37,0x20, - 0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x31,0x33,0x2c,0x20,0x5f,0x33,0x31,0x31, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74, - 0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20, - 0x61,0x62,0x73,0x28,0x61,0x62,0x73,0x28,0x5f,0x32,0x38,0x34,0x2e,0x7a,0x29,0x20, - 0x2d,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x5b,0x30,0x5d,0x2e, - 0x79,0x29,0x20,0x2f,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e, - 0x66,0x69,0x67,0x5b,0x30,0x5d,0x2e,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, + 0x67,0x20,0x3d,0x20,0x32,0x30,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, + 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6c,0x75,0x74,0x5f,0x70,0x70, + 0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64, + 0x69,0x6e,0x67,0x20,0x3d,0x20,0x32,0x31,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72, + 0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6c,0x75,0x74,0x5f, + 0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,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,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,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,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76, + 0x65,0x63,0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x76,0x65,0x63,0x33,0x20,0x78,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c, + 0x61,0x6d,0x70,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32, + 0x2e,0x35,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36, + 0x38,0x33,0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28, + 0x30,0x2e,0x30,0x32,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34, + 0x37,0x37,0x34,0x36,0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29, + 0x29,0x29,0x20,0x2f,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a, + 0x20,0x32,0x2e,0x34,0x33,0x30,0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32, + 0x30,0x32,0x31,0x34,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63, + 0x33,0x28,0x30,0x2e,0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33, + 0x39,0x35,0x36,0x32,0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20, + 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,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,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29, + 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a, + 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x76,0x65, + 0x63,0x32,0x20,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76, + 0x65,0x63,0x32,0x20,0x5f,0x36,0x38,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x32,0x28, + 0x70,0x6f,0x73,0x29,0x20,0x25,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x38,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f, + 0x61,0x74,0x28,0x5f,0x31,0x34,0x35,0x5b,0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20, + 0x28,0x5f,0x36,0x38,0x2e,0x79,0x20,0x2a,0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20, + 0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x3b, + 0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x28,0x76, + 0x65,0x63,0x32,0x20,0x63,0x6f,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,0x63,0x6f,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,0x76, + 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x36,0x36,0x20,0x3d,0x20,0x74,0x65,0x78, + 0x63,0x6f,0x6f,0x72,0x64,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36, + 0x37,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x38,0x34,0x20, + 0x3d,0x20,0x28,0x5f,0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b, + 0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61, + 0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f, + 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x76, + 0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69, + 0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, + 0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, + 0x39,0x32,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d, + 0x20,0x5f,0x31,0x39,0x32,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39, + 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, + 0x5f,0x31,0x39,0x32,0x20,0x3e,0x20,0x31,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,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, + 0x5f,0x31,0x39,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30, + 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21, + 0x5f,0x32,0x30,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37, + 0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3c,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,0x5f,0x32, + 0x30,0x37,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, + 0x6c,0x20,0x5f,0x32,0x31,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e, + 0x20,0x31,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,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x31,0x34,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,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, + 0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,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,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f, + 0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, + 0x73,0x69,0x74,0x79,0x20,0x3e,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,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x34,0x32,0x20, + 0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f, + 0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e, + 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, + 0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x33,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78, + 0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20,0x2b,0x20,0x5f, + 0x32,0x34,0x32,0x29,0x2e,0x78,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38, + 0x34,0x29,0x2e,0x79,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70, + 0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20, + 0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x2e,0x7a,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,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x74,0x65,0x78, + 0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70, + 0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37,0x39,0x2e, + 0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20, + 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68, + 0x64,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x2c,0x20,0x74,0x65,0x78,0x74, + 0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f,0x66,0x5f, + 0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20, + 0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28, + 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x61,0x62,0x73,0x28,0x61,0x62, + 0x73,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x6f,0x73,0x5f,0x62,0x75, + 0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29, + 0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x70, + 0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39, + 0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, 0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35, 0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29, - 0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x5f,0x33,0x31, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x32,0x35, - 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x33,0x33,0x36,0x20,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37,0x20,0x2b,0x20,0x28, - 0x5f,0x33,0x32,0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c, - 0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x20, - 0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x5f,0x33,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,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,0x63,0x6f,0x6c, + 0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76, + 0x65,0x63,0x34,0x20,0x5f,0x33,0x33,0x31,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f, + 0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x34,0x32,0x20,0x3d,0x20,0x28, + 0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64, + 0x72,0x20,0x2b,0x20,0x28,0x5f,0x33,0x33,0x31,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, + 0x5f,0x31,0x37,0x34,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e, + 0x74,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73, + 0x75,0x72,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e, + 0x65,0x6d,0x61,0x70,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, + 0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72, + 0x61,0x6d,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,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x36,0x32,0x20,0x3d, + 0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, + 0x65,0x61,0x72,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, + 0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x6f,0x6e,0x74, + 0x72,0x61,0x73,0x74,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x76,0x65, + 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c, 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20, - 0x5f,0x33,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x35,0x36,0x20,0x3d,0x20,0x28,0x28,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2d, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x6d,0x61, - 0x78,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70, - 0x28,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33, - 0x35,0x36,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x30, - 0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39, - 0x30,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x33,0x39,0x39,0x39,0x38, - 0x30,0x35,0x34,0x35,0x30,0x34,0x33,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x2c,0x20, - 0x30,0x2e,0x30,0x37,0x32,0x30,0x39,0x39,0x39,0x39,0x38,0x35,0x39,0x33,0x33,0x33, - 0x30,0x33,0x38,0x33,0x33,0x30,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x2c, - 0x20,0x5f,0x33,0x35,0x36,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x37,0x34, - 0x2e,0x73,0x61,0x74,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43, - 0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2b,0x20,0x76,0x65,0x63, - 0x33,0x28,0x28,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x31,0x34,0x33,0x36,0x30,0x34,0x32, - 0x37,0x38,0x35,0x36,0x34,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e, - 0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65, - 0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75, - 0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,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,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75, - 0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x66, - 0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f, - 0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,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,0x34,0x34,0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x32,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f, - 0x72,0x28,0x5f,0x34,0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x33,0x20, - 0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2b, - 0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x34,0x36,0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c, - 0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c, - 0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76, - 0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x32,0x20,0x2a,0x20,0x31,0x36, - 0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x36,0x39,0x29,0x20,0x2b,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c, - 0x20,0x5f,0x34,0x36,0x33,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x6d,0x69,0x6e, - 0x28,0x5f,0x34,0x35,0x32,0x20,0x2b,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x35,0x2e, - 0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x36, - 0x39,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, - 0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x33,0x29,0x29,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x34,0x39,0x20,0x2d,0x20, - 0x5f,0x34,0x35,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70, - 0x6f,0x77,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20, - 0x5f,0x31,0x37,0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65, - 0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e, - 0x65,0x74,0x74,0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36, - 0x37,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74, - 0x74,0x65,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28, - 0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f, - 0x64,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20, - 0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63, - 0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x35,0x39,0x20, - 0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x31,0x20,0x3d,0x20,0x5f,0x35, - 0x35,0x39,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x72,0x61,0x6e,0x64,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69, - 0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x5f, - 0x35,0x36,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6c,0x61,0x6d,0x70, - 0x28,0x5f,0x35,0x36,0x31,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x64, + 0x6f,0x74,0x28,0x5f,0x33,0x36,0x32,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34, + 0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35, + 0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34,0x33,0x39,0x34,0x35,0x33, + 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30,0x39,0x39,0x39,0x39,0x38, + 0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30,0x30,0x37,0x38,0x31,0x32, + 0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x36,0x32,0x2c,0x20,0x76,0x65,0x63,0x33, + 0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e, + 0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76, + 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69, + 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f, + 0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f, + 0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x63, + 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, + 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x64, + 0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29, + 0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x31,0x34, + 0x33,0x36,0x30,0x34,0x32,0x37,0x38,0x35,0x36,0x34,0x34,0x35,0x33,0x31,0x32,0x35, + 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, + 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74, + 0x5f,0x6d,0x6f,0x64,0x65,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, + 0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32, + 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,0x6c,0x6f,0x72,0x5f,0x6c,0x64, + 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65, + 0x63,0x32,0x28,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f, + 0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31, + 0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b, + 0x20,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, + 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e, + 0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29, + 0x2c,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, + 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e, + 0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79, + 0x7a,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,0x34,0x35,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20, + 0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x37,0x20,0x3d, + 0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34,0x35,0x34,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x5f,0x34,0x36,0x38,0x20,0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c, + 0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35, + 0x2e,0x30,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30, + 0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x34,0x20,0x3d,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78, + 0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, + 0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x74,0x65,0x78,0x74, + 0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x37, + 0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29, + 0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39, + 0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a, + 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75, + 0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28, + 0x28,0x28,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x37,0x20,0x2b,0x20,0x31,0x2e,0x30, + 0x2c,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20, + 0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a, + 0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36, + 0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x34, + 0x35,0x34,0x20,0x2d,0x20,0x5f,0x34,0x35,0x37,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62, + 0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, + 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31, + 0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31,0x37,0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29, + 0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f, + 0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34, + 0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73, + 0x2c,0x20,0x5f,0x31,0x36,0x37,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76, + 0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, + 0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28, + 0x28,0x73,0x69,0x6e,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72, + 0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c, + 0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20, + 0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31, + 0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74, + 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x74,0x65,0x78, + 0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, + 0x5f,0x35,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67, + 0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x36, + 0x20,0x3d,0x20,0x5f,0x35,0x36,0x34,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28, + 0x72,0x61,0x6e,0x64,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20, + 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x66,0x69,0x6c,0x6d, + 0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67, + 0x62,0x20,0x3d,0x20,0x5f,0x35,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x36,0x36,0x2c,0x20,0x76,0x65,0x63,0x33, + 0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29, + 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #version 300 es @@ -678,7 +689,15 @@ vs_pp_source_glsl300es := u8.[ uniform post_process_config _174; - uniform highp vec4 dof_config[1]; + struct dof_config + { + int dof_disabled; + highp float dof_max; + highp float dof_point; + }; + + uniform dof_config _279; + uniform highp sampler2D pptex_ppsmp; uniform highp sampler2D pos_buf_pos_smp; uniform highp sampler2D dof_tex_dof_smp; @@ -757,25 +776,24 @@ vs_pp_source_glsl300es := u8.[ { sampled_color_hdr = texture(pptex_ppsmp, _184).xyz; } - highp vec4 _284 = texture(pos_buf_pos_smp, _184); - highp vec4 _311 = texture(dof_tex_dof_smp, _184); - highp vec3 _313 = sampled_color_hdr; - highp vec3 _317 = mix(_313, _311.xyz, vec3(smoothstep(0.0, 1.0, abs(abs(_284.z) - dof_config[0].y) / max(dof_config[0].x, 9.9999997473787516355514526367188e-05)))); - sampled_color_hdr = _317; - highp vec4 _325 = texture(bloom_tex_bloom_smp, _184); - highp vec3 _336 = (_317 + (_325.xyz * _174.bloom_amount)) * _174.exposure; + if (_279.dof_disabled == 0) + { + sampled_color_hdr = mix(sampled_color_hdr, texture(dof_tex_dof_smp, _184).xyz, vec3(smoothstep(0.0, 1.0, abs(abs(texture(pos_buf_pos_smp, _184).z) - _279.dof_point) / max(_279.dof_max, 9.9999997473787516355514526367188e-05)))); + } + highp vec4 _331 = texture(bloom_tex_bloom_smp, _184); + highp vec3 _342 = (sampled_color_hdr + (_331.xyz * _174.bloom_amount)) * _174.exposure; highp vec3 color_ldr_linear; if (_174.tonemap > 0.5) { - highp vec3 param = _336; + highp vec3 param = _342; color_ldr_linear = aces(param); } else { - color_ldr_linear = _336; + color_ldr_linear = _342; } - highp vec3 _356 = ((color_ldr_linear - vec3(0.5)) * max(_174.contrast, 0.0)) + vec3(0.5); - color_ldr_linear = clamp(mix(vec3(dot(_356, vec3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _356, vec3(_174.saturation)), vec3(0.0), vec3(1.0)); + highp vec3 _362 = ((color_ldr_linear - vec3(0.5)) * max(_174.contrast, 0.0)) + vec3(0.5); + color_ldr_linear = clamp(mix(vec3(dot(_362, vec3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _362, vec3(_174.saturation)), vec3(0.0), vec3(1.0)); if (_174.dither_intensity > 0.0) { highp vec2 param_1 = gl_FragCoord.xy; @@ -789,19 +807,19 @@ vs_pp_source_glsl300es := u8.[ } else { - highp float _449 = color_ldr_linear.z * 15.0; - highp float _452 = floor(_449); - highp float _463 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; - highp float _469 = color_ldr_linear.x * 15.0; - color_ldr_linear = mix(texture(lut_lut_linear, vec2((((_452 * 16.0) + _469) + 0.5) * 0.00390625, _463)).xyz, texture(lut_lut_linear, vec2((((min(_452 + 1.0, 15.0) * 16.0) + _469) + 0.5) * 0.00390625, _463)).xyz, vec3(_449 - _452)); + highp float _454 = color_ldr_linear.z * 15.0; + highp float _457 = floor(_454); + highp float _468 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; + highp float _474 = color_ldr_linear.x * 15.0; + color_ldr_linear = mix(texture(lut_lut_linear, vec2((((_457 * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, texture(lut_lut_linear, vec2((((min(_457 + 1.0, 15.0) * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, vec3(_454 - _457)); } } highp vec3 color_srgb = (pow(color_ldr_linear, vec3(1.0 / _174.gamma)) * (1.0 - (smoothstep(0.0, _174.vignette_radius, _167) * _174.vignette_intensity))) * (1.0 - (((sin(gl_FragCoord.y * _174.scanlines_density) * 0.5) + 0.5) * _174.scanlines_intensity)); highp vec2 param_2 = texcoord; - highp vec3 _559 = color_srgb; - highp vec3 _561 = _559 + vec3((rand(param_2) - 0.5) * _174.film_grain_intensity); - color_srgb = _561; - frag_color = vec4(clamp(_561, vec3(0.0), vec3(1.0)), 1.0); + highp vec3 _564 = color_srgb; + highp vec3 _566 = _564 + vec3((rand(param_2) - 0.5) * _174.film_grain_intensity); + color_srgb = _566; + frag_color = vec4(clamp(_566, vec3(0.0), vec3(1.0)), 1.0); } */ @@ -861,302 +879,304 @@ fs_pp_source_glsl300es := u8.[ 0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b, 0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6f,0x73, 0x74,0x5f,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67, - 0x20,0x5f,0x31,0x37,0x34,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x64,0x6f,0x66,0x5f,0x63, - 0x6f,0x6e,0x66,0x69,0x67,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,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,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,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x5f,0x70, - 0x6f,0x73,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, + 0x20,0x5f,0x31,0x37,0x34,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x64, + 0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x6e,0x74,0x20,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, + 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70, + 0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, + 0x6d,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x37, + 0x39,0x3b,0x0a,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,0x70,0x70,0x74,0x65, + 0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,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,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70, + 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,0x64,0x6f,0x66,0x5f,0x74,0x65, + 0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,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,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f, + 0x6f,0x6d,0x5f,0x73,0x6d,0x70,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, - 0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,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,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74, - 0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,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,0x6c,0x75,0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,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,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74, - 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 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,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x63, - 0x65,0x73,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x78,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32, - 0x2e,0x35,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36, - 0x38,0x33,0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x32,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34, - 0x37,0x37,0x34,0x36,0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29, - 0x29,0x29,0x20,0x2f,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a, - 0x20,0x32,0x2e,0x34,0x33,0x30,0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32, - 0x30,0x32,0x31,0x34,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33, - 0x39,0x35,0x36,0x32,0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,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,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x79, - 0x65,0x72,0x38,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70, - 0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20, - 0x5f,0x36,0x38,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x70,0x6f,0x73,0x29, - 0x20,0x25,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x31,0x34,0x35,0x5b,0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f,0x36,0x38, - 0x2e,0x79,0x20,0x2a,0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31, - 0x35,0x36,0x32,0x35,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64, - 0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x63,0x6f,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,0x63,0x6f,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,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x31,0x36,0x36,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x36,0x37,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f, - 0x31,0x36,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x38,0x34,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36, - 0x36,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x28,0x5f,0x31,0x36,0x37, - 0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64, - 0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34, - 0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69, - 0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30, - 0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x39,0x32,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d, - 0x20,0x5f,0x31,0x39,0x32,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39, - 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x32,0x20,0x3e,0x20,0x31,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,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21, - 0x5f,0x32,0x30,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37, - 0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3c,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,0x5f,0x32, - 0x30,0x37,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x32,0x31,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e, + 0x6c,0x75,0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,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,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61, + 0x72,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, + 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,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,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x68,0x69,0x67, + 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x68,0x69,0x67, + 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x78,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x78, + 0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x35,0x30,0x39,0x39,0x39, + 0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36,0x38,0x33,0x35,0x39,0x33,0x37, + 0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x32,0x39,0x39, + 0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34,0x37,0x37,0x34,0x36,0x32,0x37, + 0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2f,0x20,0x28, + 0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x34,0x33,0x30, + 0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32,0x30,0x32,0x31,0x34,0x38,0x34, + 0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x38, + 0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36,0x32,0x39,0x38, + 0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, + 0x28,0x30,0x2e,0x31,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,0x29,0x2c, + 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, + 0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x38,0x20,0x3d,0x20, + 0x69,0x76,0x65,0x63,0x32,0x28,0x70,0x6f,0x73,0x29,0x20,0x25,0x20,0x69,0x76,0x65, + 0x63,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x34,0x35,0x5b,0x5f,0x36, + 0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f,0x36,0x38,0x2e,0x79,0x20,0x2a,0x20,0x38, + 0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20, + 0x2d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x28,0x68,0x69,0x67,0x68,0x70, + 0x20,0x76,0x65,0x63,0x32,0x20,0x63,0x6f,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,0x63,0x6f,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,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31, + 0x36,0x36,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2d,0x20, + 0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, + 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20, + 0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f, + 0x31,0x38,0x34,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31, + 0x2e,0x30,0x20,0x2b,0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37, + 0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74, + 0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29, + 0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65, + 0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74, + 0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x32,0x20,0x3d,0x20,0x5f, + 0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, + 0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x20, + 0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, + 0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39,0x33,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x20,0x3e, 0x20,0x31,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,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a, + 0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x31,0x34,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,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,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,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,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,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,0x32,0x34,0x32,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x32,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69, - 0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20,0x2b,0x20,0x5f,0x32,0x34,0x32,0x29, - 0x2e,0x78,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65, - 0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x79, - 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f, - 0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20,0x5f,0x32, - 0x34,0x32,0x29,0x2e,0x7a,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,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, + 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x30,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x38, + 0x34,0x2e,0x79,0x20,0x3c,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,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f, + 0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x31,0x34, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f, + 0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x34,0x20, + 0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e,0x20,0x31,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,0x5f,0x32,0x31, + 0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x5f,0x32,0x31,0x34,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,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e, + 0x30,0x2c,0x20,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,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, + 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f, + 0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, + 0x73,0x69,0x74,0x79,0x20,0x3e,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,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,0x32,0x34,0x32,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37, + 0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72, + 0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, + 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64, + 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65, 0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31, - 0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x32, - 0x38,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x6f,0x73, - 0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31, - 0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x33,0x31,0x31,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73, + 0x38,0x34,0x20,0x2b,0x20,0x5f,0x32,0x34,0x32,0x29,0x2e,0x78,0x2c,0x20,0x74,0x65, + 0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d, + 0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x79,0x2c,0x20,0x74,0x65,0x78,0x74, + 0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c, + 0x20,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x2e,0x7a,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,0x73, + 0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72, + 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78, + 0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79, + 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x28,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c, + 0x65,0x64,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63, + 0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x73, + 0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72, + 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x74,0x65, + 0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29, + 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74, + 0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20, + 0x61,0x62,0x73,0x28,0x61,0x62,0x73,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c, + 0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x37,0x39, + 0x2e,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x6d,0x61, + 0x78,0x28,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x2c,0x20, + 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, + 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, + 0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, + 0x5f,0x33,0x33,0x31,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62, + 0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73, 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x31,0x33,0x20,0x3d, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68, - 0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x33,0x31,0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33, - 0x31,0x33,0x2c,0x20,0x5f,0x33,0x31,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x61,0x62,0x73,0x28,0x61,0x62,0x73,0x28, - 0x5f,0x32,0x38,0x34,0x2e,0x7a,0x29,0x20,0x2d,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f, - 0x6e,0x66,0x69,0x67,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x20,0x2f,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x5b,0x30,0x5d,0x2e,0x78, - 0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38, - 0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37, - 0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68, - 0x64,0x72,0x20,0x3d,0x20,0x5f,0x33,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x32,0x35,0x20,0x3d, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74, - 0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31, - 0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x33,0x33,0x36,0x20,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37, - 0x20,0x2b,0x20,0x28,0x5f,0x33,0x32,0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f, - 0x31,0x37,0x34,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74, - 0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73,0x75, - 0x72,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37, - 0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x5f,0x33,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x34,0x32,0x20,0x3d, + 0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f, + 0x68,0x64,0x72,0x20,0x2b,0x20,0x28,0x5f,0x33,0x33,0x31,0x2e,0x78,0x79,0x7a,0x20, + 0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f, + 0x75,0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70, + 0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, + 0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f, + 0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x20,0x3e,0x20,0x30, + 0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, + 0x65,0x61,0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61,0x6d, + 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, 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,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,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20, - 0x5f,0x33,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x35,0x36,0x20, - 0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x29,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x6f,0x6e, - 0x74,0x72,0x61,0x73,0x74,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d, - 0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28, - 0x64,0x6f,0x74,0x28,0x5f,0x33,0x35,0x36,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34, - 0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31, - 0x35,0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34,0x33,0x39,0x34,0x35, - 0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30,0x39,0x39,0x39,0x39, - 0x38,0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30,0x30,0x37,0x38,0x31, - 0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x35,0x36,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74,0x75,0x72,0x61,0x74,0x69,0x6f, - 0x6e,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29, - 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,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64, - 0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f, - 0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x62, - 0x61,0x79,0x65,0x72,0x38,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x36,0x36, - 0x36,0x36,0x36,0x37,0x30,0x31,0x34,0x33,0x36,0x30,0x34,0x32,0x37,0x38,0x35,0x36, - 0x34,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x21,0x3d,0x20, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f, - 0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,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,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, - 0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x70,0x70, - 0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x66,0x6c,0x6f,0x6f,0x72, - 0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e, - 0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, - 0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e, - 0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36, - 0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,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,0x34,0x34,0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31, - 0x35,0x2e,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,0x34,0x35, - 0x32,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34,0x34,0x39,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,0x34,0x36,0x33,0x20,0x3d,0x20, - 0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2b,0x20,0x30, - 0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20, + 0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33, + 0x36,0x32,0x20,0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72, + 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, + 0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x5f,0x31,0x37,0x34,0x2e, + 0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20, + 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, + 0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x76,0x65, + 0x63,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x36,0x32,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, + 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x30, + 0x2e,0x37,0x31,0x35,0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34,0x33, + 0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30,0x39, + 0x39,0x39,0x39,0x38,0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30,0x30, + 0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x36,0x32,0x2c,0x20, + 0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74,0x75,0x72,0x61, + 0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, + 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68, + 0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30, + 0x2e,0x30,0x29,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,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f, + 0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, + 0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c, + 0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, + 0x28,0x28,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, + 0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f, + 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30, + 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x31,0x34,0x33,0x36,0x30,0x34,0x32,0x37, + 0x38,0x35,0x36,0x34,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30, + 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20, + 0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74, + 0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,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,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74, + 0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x66,0x6c, + 0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, + 0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a, + 0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x6f, + 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, + 0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x6f, + 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, + 0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,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,0x34,0x36,0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20, 0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x32,0x20, - 0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x36,0x39,0x29,0x20, - 0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30, - 0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x33,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74, - 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28, - 0x28,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x32,0x20,0x2b,0x20,0x31,0x2e,0x30,0x2c, - 0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b, - 0x20,0x5f,0x34,0x36,0x39,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x33, - 0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x34, - 0x39,0x20,0x2d,0x20,0x5f,0x34,0x35,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x28,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31,0x37,0x34,0x2e,0x67, - 0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20, - 0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x72, - 0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36,0x37,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, - 0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61, - 0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e, - 0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65, - 0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,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,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x35,0x35,0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72, - 0x67,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x35,0x36,0x31,0x20,0x3d,0x20,0x5f,0x35,0x35,0x39,0x20,0x2b, - 0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x72,0x61,0x6e,0x64,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x37,0x34,0x2e,0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e, - 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x5f,0x35,0x36,0x31,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x36, - 0x31,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, + 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x5f,0x34,0x35,0x37,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34,0x35, + 0x34,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,0x34,0x36,0x38, + 0x20,0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, + 0x69,0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20, + 0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,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,0x34,0x37,0x34,0x20,0x3d,0x20, + 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, + 0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72, + 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x74,0x65, + 0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69, + 0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x5f,0x34, + 0x35,0x37,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x37, + 0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, + 0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x38,0x29,0x29,0x2e,0x78, + 0x79,0x7a,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f, + 0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32, + 0x28,0x28,0x28,0x28,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x37,0x20,0x2b,0x20,0x31, + 0x2e,0x30,0x2c,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30, + 0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29, + 0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f, + 0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, + 0x5f,0x34,0x35,0x34,0x20,0x2d,0x20,0x5f,0x34,0x35,0x37,0x29,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x28, + 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, + 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31,0x37, + 0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, + 0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30, + 0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74, + 0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36,0x37,0x29,0x20, + 0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f, + 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x28, + 0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28,0x67,0x6c,0x5f, + 0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x31, + 0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e, + 0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30, + 0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c, + 0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,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,0x74,0x65,0x78,0x63,0x6f, + 0x6f,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, + 0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72, + 0x5f,0x73,0x72,0x67,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, + 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x36,0x20,0x3d,0x20,0x5f,0x35,0x36, + 0x34,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x72,0x61,0x6e,0x64,0x28,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x37,0x34,0x2e,0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e, + 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x5f,0x35, + 0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28, + 0x5f,0x35,0x36,0x36,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c, + 0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30, + 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #include @@ -1283,6 +1303,7 @@ vs_pp_source_metal_macos := u8.[ struct dof_config { + int dof_disabled; float dof_max; float dof_point; }; @@ -1318,7 +1339,7 @@ vs_pp_source_metal_macos := u8.[ return fract(sin(dot(co, float2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); } - fragment main0_out main0(main0_in in [[stage_in]], constant post_process_config& _174 [[buffer(0)]], constant dof_config& _293 [[buffer(1)]], texture2d pptex [[texture(0)]], texture2d pos_buf [[texture(1)]], texture2d dof_tex [[texture(2)]], texture2d bloom_tex [[texture(3)]], texture2d lut [[texture(4)]], sampler ppsmp [[sampler(0)]], sampler pos_smp [[sampler(1)]], sampler dof_smp [[sampler(2)]], sampler bloom_smp [[sampler(3)]], sampler lut_linear [[sampler(4)]], float4 gl_FragCoord [[position]]) + fragment main0_out main0(main0_in in [[stage_in]], constant post_process_config& _174 [[buffer(0)]], constant dof_config& _279 [[buffer(1)]], texture2d pptex [[texture(0)]], texture2d pos_buf [[texture(1)]], texture2d dof_tex [[texture(2)]], texture2d bloom_tex [[texture(3)]], texture2d lut [[texture(4)]], sampler ppsmp [[sampler(0)]], sampler pos_smp [[sampler(1)]], sampler dof_smp [[sampler(2)]], sampler bloom_smp [[sampler(3)]], sampler lut_linear [[sampler(4)]], float4 gl_FragCoord [[position]]) { main0_out out = {}; float2 _166 = in.texcoord - float2(0.5); @@ -1371,25 +1392,24 @@ vs_pp_source_metal_macos := u8.[ { sampled_color_hdr = pptex.sample(ppsmp, _184).xyz; } - float4 _284 = pos_buf.sample(pos_smp, _184); - float4 _311 = dof_tex.sample(dof_smp, _184); - float3 _313 = sampled_color_hdr; - float3 _317 = mix(_313, _311.xyz, float3(smoothstep(0.0, 1.0, abs(abs(_284.z) - _293.dof_point) / fast::max(_293.dof_max, 9.9999997473787516355514526367188e-05)))); - sampled_color_hdr = _317; - float4 _325 = bloom_tex.sample(bloom_smp, _184); - float3 _336 = (_317 + (_325.xyz * _174.bloom_amount)) * _174.exposure; + if (_279.dof_disabled == 0) + { + sampled_color_hdr = mix(sampled_color_hdr, dof_tex.sample(dof_smp, _184).xyz, float3(smoothstep(0.0, 1.0, abs(abs(pos_buf.sample(pos_smp, _184).z) - _279.dof_point) / fast::max(_279.dof_max, 9.9999997473787516355514526367188e-05)))); + } + float4 _331 = bloom_tex.sample(bloom_smp, _184); + float3 _342 = (sampled_color_hdr + (_331.xyz * _174.bloom_amount)) * _174.exposure; float3 color_ldr_linear; if (_174.tonemap > 0.5) { - float3 param = _336; + float3 param = _342; color_ldr_linear = aces(param); } else { - color_ldr_linear = _336; + color_ldr_linear = _342; } - float3 _356 = ((color_ldr_linear - float3(0.5)) * fast::max(_174.contrast, 0.0)) + float3(0.5); - color_ldr_linear = fast::clamp(mix(float3(dot(_356, float3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _356, float3(_174.saturation)), float3(0.0), float3(1.0)); + float3 _362 = ((color_ldr_linear - float3(0.5)) * fast::max(_174.contrast, 0.0)) + float3(0.5); + color_ldr_linear = fast::clamp(mix(float3(dot(_362, float3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _362, float3(_174.saturation)), float3(0.0), float3(1.0)); if (_174.dither_intensity > 0.0) { float2 param_1 = gl_FragCoord.xy; @@ -1403,19 +1423,19 @@ vs_pp_source_metal_macos := u8.[ } else { - float _449 = color_ldr_linear.z * 15.0; - float _452 = floor(_449); - float _463 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; - float _469 = color_ldr_linear.x * 15.0; - color_ldr_linear = mix(lut.sample(lut_linear, float2((((_452 * 16.0) + _469) + 0.5) * 0.00390625, _463)).xyz, lut.sample(lut_linear, float2((((fast::min(_452 + 1.0, 15.0) * 16.0) + _469) + 0.5) * 0.00390625, _463)).xyz, float3(_449 - _452)); + float _454 = color_ldr_linear.z * 15.0; + float _457 = floor(_454); + float _468 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; + float _474 = color_ldr_linear.x * 15.0; + color_ldr_linear = mix(lut.sample(lut_linear, float2((((_457 * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, lut.sample(lut_linear, float2((((fast::min(_457 + 1.0, 15.0) * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, float3(_454 - _457)); } } float3 color_srgb = (powr(color_ldr_linear, float3(1.0 / _174.gamma)) * (1.0 - (smoothstep(0.0, _174.vignette_radius, _167) * _174.vignette_intensity))) * (1.0 - (((sin(gl_FragCoord.y * _174.scanlines_density) * 0.5) + 0.5) * _174.scanlines_intensity)); float2 param_2 = in.texcoord; - float3 _559 = color_srgb; - float3 _561 = _559 + float3((rand(param_2) - 0.5) * _174.film_grain_intensity); - color_srgb = _561; - out.frag_color = float4(fast::clamp(_561, float3(0.0), float3(1.0)), 1.0); + float3 _564 = color_srgb; + float3 _566 = _564 + float3((rand(param_2) - 0.5) * _174.film_grain_intensity); + color_srgb = _566; + out.frag_color = float4(fast::clamp(_566, float3(0.0), float3(1.0)), 1.0); return out; } @@ -1513,354 +1533,354 @@ fs_pp_source_metal_macos := u8.[ 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, 0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, 0x63,0x74,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x61, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66, - 0x5f,0x70,0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x63,0x6f,0x6e,0x73, - 0x74,0x61,0x6e,0x74,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72, - 0x72,0x61,0x79,0x3c,0x69,0x6e,0x74,0x2c,0x20,0x36,0x34,0x3e,0x20,0x5f,0x31,0x34, - 0x35,0x20,0x3d,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72, - 0x61,0x79,0x3c,0x69,0x6e,0x74,0x2c,0x20,0x36,0x34,0x3e,0x28,0x7b,0x20,0x30,0x2c, - 0x20,0x33,0x32,0x2c,0x20,0x38,0x2c,0x20,0x34,0x30,0x2c,0x20,0x32,0x2c,0x20,0x33, - 0x34,0x2c,0x20,0x31,0x30,0x2c,0x20,0x34,0x32,0x2c,0x20,0x34,0x38,0x2c,0x20,0x31, - 0x36,0x2c,0x20,0x35,0x36,0x2c,0x20,0x32,0x34,0x2c,0x20,0x35,0x30,0x2c,0x20,0x31, - 0x38,0x2c,0x20,0x35,0x38,0x2c,0x20,0x32,0x36,0x2c,0x20,0x31,0x32,0x2c,0x20,0x34, - 0x34,0x2c,0x20,0x34,0x2c,0x20,0x33,0x36,0x2c,0x20,0x31,0x34,0x2c,0x20,0x34,0x36, - 0x2c,0x20,0x36,0x2c,0x20,0x33,0x38,0x2c,0x20,0x36,0x30,0x2c,0x20,0x32,0x38,0x2c, - 0x20,0x35,0x32,0x2c,0x20,0x32,0x30,0x2c,0x20,0x36,0x32,0x2c,0x20,0x33,0x30,0x2c, - 0x20,0x35,0x34,0x2c,0x20,0x32,0x32,0x2c,0x20,0x33,0x2c,0x20,0x33,0x35,0x2c,0x20, - 0x31,0x31,0x2c,0x20,0x34,0x33,0x2c,0x20,0x31,0x2c,0x20,0x33,0x33,0x2c,0x20,0x39, - 0x2c,0x20,0x34,0x31,0x2c,0x20,0x35,0x31,0x2c,0x20,0x31,0x39,0x2c,0x20,0x35,0x39, - 0x2c,0x20,0x32,0x37,0x2c,0x20,0x34,0x39,0x2c,0x20,0x31,0x37,0x2c,0x20,0x35,0x37, - 0x2c,0x20,0x32,0x35,0x2c,0x20,0x31,0x35,0x2c,0x20,0x34,0x37,0x2c,0x20,0x37,0x2c, - 0x20,0x33,0x39,0x2c,0x20,0x31,0x33,0x2c,0x20,0x34,0x35,0x2c,0x20,0x35,0x2c,0x20, - 0x33,0x37,0x2c,0x20,0x36,0x33,0x2c,0x20,0x33,0x31,0x2c,0x20,0x35,0x35,0x2c,0x20, - 0x32,0x33,0x2c,0x20,0x36,0x31,0x2c,0x20,0x32,0x39,0x2c,0x20,0x35,0x33,0x2c,0x20, - 0x32,0x31,0x20,0x7d,0x29,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,0x32,0x20, - 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x30,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, - 0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x78,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78, - 0x20,0x2a,0x20,0x32,0x2e,0x35,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x30,0x34,0x36, - 0x33,0x32,0x35,0x36,0x38,0x33,0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x32,0x39,0x39,0x39,0x39,0x39,0x39, - 0x39,0x33,0x32,0x39,0x34,0x34,0x37,0x37,0x34,0x36,0x32,0x37,0x36,0x38,0x35,0x35, - 0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x28,0x78,0x20,0x2a, - 0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x34,0x33,0x30,0x30,0x30,0x30,0x30, - 0x36,0x36,0x37,0x35,0x37,0x32,0x30,0x32,0x31,0x34,0x38,0x34,0x33,0x37,0x35,0x29, - 0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x38,0x39,0x39, - 0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36,0x32,0x39,0x38,0x38,0x32, - 0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x31,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,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,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,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20, - 0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x70,0x6f, - 0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x5f,0x36, - 0x38,0x20,0x3d,0x20,0x69,0x6e,0x74,0x32,0x28,0x70,0x6f,0x73,0x29,0x20,0x25,0x20, - 0x69,0x6e,0x74,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x34,0x35,0x5b, - 0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f,0x36,0x38,0x2e,0x79,0x20,0x2a, - 0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35, - 0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,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,0x72, - 0x61,0x6e,0x64,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x63,0x6f,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,0x63,0x6f,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,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,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x5f,0x63, - 0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x31,0x37,0x34,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,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20, - 0x5f,0x32,0x39,0x33,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,0x70,0x70,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x70,0x6f,0x73,0x5f, - 0x62,0x75,0x66,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x31,0x29, - 0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c, - 0x6f,0x61,0x74,0x3e,0x20,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x33,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32, - 0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6c,0x75,0x74,0x20,0x5b,0x5b,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x34,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x20,0x70,0x70,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x20,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x20,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x33,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x20,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, - 0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x34,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, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x36,0x36,0x20,0x3d,0x20,0x69,0x6e, - 0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68, - 0x28,0x5f,0x31,0x36,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x20,0x5f,0x31,0x38,0x34,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x36,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73, - 0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34, - 0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69, - 0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30, - 0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x32,0x20,0x3d,0x20,0x5f, - 0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x20, - 0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39,0x33,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x20,0x3e, + 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61, + 0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b, + 0x0a,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x70,0x76,0x55,0x6e, + 0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x69,0x6e,0x74,0x2c,0x20,0x36, + 0x34,0x3e,0x20,0x5f,0x31,0x34,0x35,0x20,0x3d,0x20,0x73,0x70,0x76,0x55,0x6e,0x73, + 0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x69,0x6e,0x74,0x2c,0x20,0x36,0x34, + 0x3e,0x28,0x7b,0x20,0x30,0x2c,0x20,0x33,0x32,0x2c,0x20,0x38,0x2c,0x20,0x34,0x30, + 0x2c,0x20,0x32,0x2c,0x20,0x33,0x34,0x2c,0x20,0x31,0x30,0x2c,0x20,0x34,0x32,0x2c, + 0x20,0x34,0x38,0x2c,0x20,0x31,0x36,0x2c,0x20,0x35,0x36,0x2c,0x20,0x32,0x34,0x2c, + 0x20,0x35,0x30,0x2c,0x20,0x31,0x38,0x2c,0x20,0x35,0x38,0x2c,0x20,0x32,0x36,0x2c, + 0x20,0x31,0x32,0x2c,0x20,0x34,0x34,0x2c,0x20,0x34,0x2c,0x20,0x33,0x36,0x2c,0x20, + 0x31,0x34,0x2c,0x20,0x34,0x36,0x2c,0x20,0x36,0x2c,0x20,0x33,0x38,0x2c,0x20,0x36, + 0x30,0x2c,0x20,0x32,0x38,0x2c,0x20,0x35,0x32,0x2c,0x20,0x32,0x30,0x2c,0x20,0x36, + 0x32,0x2c,0x20,0x33,0x30,0x2c,0x20,0x35,0x34,0x2c,0x20,0x32,0x32,0x2c,0x20,0x33, + 0x2c,0x20,0x33,0x35,0x2c,0x20,0x31,0x31,0x2c,0x20,0x34,0x33,0x2c,0x20,0x31,0x2c, + 0x20,0x33,0x33,0x2c,0x20,0x39,0x2c,0x20,0x34,0x31,0x2c,0x20,0x35,0x31,0x2c,0x20, + 0x31,0x39,0x2c,0x20,0x35,0x39,0x2c,0x20,0x32,0x37,0x2c,0x20,0x34,0x39,0x2c,0x20, + 0x31,0x37,0x2c,0x20,0x35,0x37,0x2c,0x20,0x32,0x35,0x2c,0x20,0x31,0x35,0x2c,0x20, + 0x34,0x37,0x2c,0x20,0x37,0x2c,0x20,0x33,0x39,0x2c,0x20,0x31,0x33,0x2c,0x20,0x34, + 0x35,0x2c,0x20,0x35,0x2c,0x20,0x33,0x37,0x2c,0x20,0x36,0x33,0x2c,0x20,0x33,0x31, + 0x2c,0x20,0x35,0x35,0x2c,0x20,0x32,0x33,0x2c,0x20,0x36,0x31,0x2c,0x20,0x32,0x39, + 0x2c,0x20,0x35,0x33,0x2c,0x20,0x32,0x31,0x20,0x7d,0x29,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,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, + 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,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,0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x74,0x68,0x72, + 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, + 0x26,0x20,0x78,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x78, + 0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x35,0x30,0x39,0x39,0x39, + 0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36,0x38,0x33,0x35,0x39,0x33,0x37, + 0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x32, + 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34,0x37,0x37,0x34,0x36, + 0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2f, + 0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x34, + 0x33,0x30,0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32,0x30,0x32,0x31,0x34, + 0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x30,0x2e,0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35, + 0x36,0x32,0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2b,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x31,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,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, + 0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,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,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x74, + 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x32,0x26,0x20,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x6e,0x74,0x32,0x20,0x5f,0x36,0x38,0x20,0x3d,0x20,0x69,0x6e,0x74,0x32,0x28,0x70, + 0x6f,0x73,0x29,0x20,0x25,0x20,0x69,0x6e,0x74,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74, + 0x28,0x5f,0x31,0x34,0x35,0x5b,0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f, + 0x36,0x38,0x2e,0x79,0x20,0x2a,0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e, + 0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,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,0x72,0x61,0x6e,0x64,0x28,0x74,0x68,0x72,0x65,0x61,0x64, + 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x63, + 0x6f,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,0x63,0x6f, + 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,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,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f, + 0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x31,0x37, + 0x34,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,0x64,0x6f,0x66,0x5f,0x63,0x6f, + 0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x32,0x37,0x39,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,0x70,0x70,0x74,0x65,0x78, + 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c, + 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, + 0x3e,0x20,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74, + 0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72, + 0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x64,0x6f,0x66,0x5f,0x74, + 0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d, + 0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f, + 0x61,0x74,0x3e,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x20,0x5b,0x5b, + 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x33,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65, + 0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6c, + 0x75,0x74,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x34,0x29,0x5d, + 0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x70,0x70,0x73,0x6d,0x70, + 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c, + 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70, + 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c, + 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70, + 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x32,0x29,0x5d,0x5d,0x2c, + 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73, + 0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x33,0x29,0x5d, + 0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x6c,0x75,0x74,0x5f,0x6c, + 0x69,0x6e,0x65,0x61,0x72,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28, + 0x34,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,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x36, + 0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20, + 0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20,0x3d,0x20, + 0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x38,0x34,0x20,0x3d,0x20, + 0x28,0x5f,0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x28, + 0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72, + 0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e, + 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69, + 0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, + 0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, + 0x39,0x32,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d, + 0x20,0x5f,0x31,0x39,0x32,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39, + 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, + 0x5f,0x31,0x39,0x32,0x20,0x3e,0x20,0x31,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,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, + 0x5f,0x31,0x39,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30, + 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21, + 0x5f,0x32,0x30,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37, + 0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3c,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,0x5f,0x32, + 0x30,0x37,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, + 0x6c,0x20,0x5f,0x32,0x31,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e, 0x20,0x31,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,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x3b,0x0a, + 0x20,0x20,0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x38, - 0x34,0x2e,0x79,0x20,0x3c,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,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f, - 0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x31,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f, - 0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x34,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e,0x20,0x31,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,0x5f,0x32,0x31, - 0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x32,0x31,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,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,0x30,0x2e,0x30,0x2c,0x20,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,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f, + 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x31,0x34,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x7b,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,0x30,0x2e,0x30,0x2c,0x20,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,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f, + 0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37, + 0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72, + 0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, + 0x20,0x3e,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,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f, 0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,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,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f, - 0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x70, - 0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d, - 0x70,0x2c,0x20,0x28,0x5f,0x31,0x38,0x34,0x20,0x2b,0x20,0x5f,0x32,0x34,0x32,0x29, - 0x29,0x2e,0x78,0x2c,0x20,0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x79, - 0x2c,0x20,0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70, - 0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20,0x5f,0x32, - 0x34,0x32,0x29,0x29,0x2e,0x7a,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,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x70,0x70,0x74,0x65,0x78,0x2e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31, - 0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x32,0x38,0x34,0x20,0x3d, - 0x20,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x31,0x31,0x20, - 0x3d,0x20,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x28,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x31,0x33, - 0x20,0x3d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x33,0x31,0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x31,0x33, - 0x2c,0x20,0x5f,0x33,0x31,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x61,0x62,0x73,0x28,0x61,0x62,0x73,0x28, - 0x5f,0x32,0x38,0x34,0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x39,0x33,0x2e,0x64, - 0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x5f,0x32,0x39,0x33,0x2e,0x64,0x6f,0x66,0x5f,0x6d, - 0x61,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33, - 0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33, - 0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20, + 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, + 0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x28,0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c, + 0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x5f,0x31,0x38,0x34,0x20,0x2b, + 0x20,0x5f,0x32,0x34,0x32,0x29,0x29,0x2e,0x78,0x2c,0x20,0x70,0x70,0x74,0x65,0x78, + 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f, + 0x31,0x38,0x34,0x29,0x2e,0x79,0x2c,0x20,0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x5f,0x31,0x38, + 0x34,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x29,0x2e,0x7a,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,0x73,0x61,0x6d,0x70, + 0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20, + 0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73, + 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37, + 0x39,0x2e,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d, + 0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x5f,0x33,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x32,0x35,0x20,0x3d,0x20,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x33, - 0x36,0x20,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37,0x20,0x2b,0x20,0x28,0x5f,0x33,0x32, - 0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x20,0x3e, - 0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x5f,0x33,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x73,0x61,0x6d,0x70,0x6c, + 0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x2c,0x20,0x64,0x6f, + 0x66,0x5f,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x64,0x6f,0x66, + 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x2c, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74, + 0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x61,0x62,0x73, + 0x28,0x61,0x62,0x73,0x28,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x2e,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x28,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38, + 0x34,0x29,0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66, + 0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, + 0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78, + 0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38, + 0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37, + 0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33, + 0x33,0x31,0x20,0x3d,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x2e,0x73, + 0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c, + 0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x20,0x5f,0x33,0x34,0x32,0x20,0x3d,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c, + 0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x2b,0x20,0x28, + 0x5f,0x33,0x33,0x31,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e, + 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72, + 0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61, + 0x70,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, + 0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61, + 0x6d,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,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,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,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d, - 0x20,0x5f,0x33,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x35,0x36,0x20,0x3d,0x20,0x28, - 0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, - 0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x5f,0x31,0x37, - 0x34,0x2e,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x64, - 0x6f,0x74,0x28,0x5f,0x33,0x35,0x36,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36, - 0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37, - 0x31,0x35,0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34,0x33,0x39,0x34, - 0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30,0x39,0x39,0x39, - 0x39,0x38,0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30,0x30,0x37,0x38, - 0x31,0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x35,0x36,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74,0x75,0x72,0x61, - 0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, + 0x72,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x36,0x32,0x20, + 0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, + 0x6e,0x65,0x61,0x72,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, + 0x35,0x29,0x29,0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28, + 0x5f,0x31,0x37,0x34,0x2e,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x2c,0x20,0x30, + 0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, + 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, + 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a, + 0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x36,0x32,0x2c,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36, + 0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20, + 0x30,0x2e,0x37,0x31,0x35,0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34, + 0x33,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30, + 0x39,0x39,0x39,0x39,0x38,0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30, + 0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x36,0x32,0x2c, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74, + 0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31, + 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, + 0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73, + 0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, + 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,0x67,0x6c,0x5f,0x46,0x72,0x61, + 0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, + 0x65,0x61,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, + 0x70,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x62,0x61,0x79, + 0x65,0x72,0x38,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f, + 0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e, + 0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x36,0x36,0x36,0x36, + 0x36,0x37,0x30,0x31,0x34,0x33,0x36,0x30,0x34,0x32,0x37,0x38,0x35,0x36,0x34,0x34, + 0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e, - 0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,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,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f, - 0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, - 0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x62,0x61,0x79,0x65,0x72,0x38, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34, - 0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30, - 0x31,0x34,0x33,0x36,0x30,0x34,0x32,0x37,0x38,0x35,0x36,0x34,0x34,0x35,0x33,0x31, - 0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x21,0x3d,0x20,0x30, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64, - 0x65,0x20,0x3d,0x3d,0x20,0x32,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, - 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d, - 0x20,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d, - 0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x66,0x6c,0x6f,0x6f,0x72, - 0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e, - 0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, - 0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e, - 0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36, - 0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,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,0x34,0x34, - 0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x21, + 0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f, + 0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,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,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, + 0x72,0x20,0x3d,0x20,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70, + 0x70,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x66,0x6c, + 0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, + 0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a, + 0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x6f, + 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, + 0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x6f, + 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, + 0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,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,0x34,0x35,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72, + 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x37,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72, + 0x28,0x5f,0x34,0x35,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x38,0x20,0x3d, + 0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, + 0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2b,0x20, + 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x35,0x32,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34, - 0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x33,0x20,0x3d,0x20,0x28,0x28, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34, - 0x36,0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x6d, - 0x69,0x78,0x28,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6c,0x75, - 0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x32,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29, - 0x20,0x2b,0x20,0x5f,0x34,0x36,0x39,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34, - 0x36,0x33,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x6c,0x75,0x74,0x2e,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x28,0x28,0x66,0x61,0x73,0x74,0x3a, - 0x3a,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x32,0x20,0x2b,0x20,0x31,0x2e,0x30,0x2c, - 0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b, - 0x20,0x5f,0x34,0x36,0x39,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x33, - 0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f, - 0x34,0x34,0x39,0x20,0x2d,0x20,0x5f,0x34,0x35,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73, - 0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x72,0x28,0x63,0x6f,0x6c,0x6f, - 0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31,0x37,0x34,0x2e, - 0x67,0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f, - 0x72,0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36,0x37,0x29,0x20,0x2a,0x20, - 0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e, - 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28,0x67,0x6c,0x5f,0x46,0x72, - 0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34, - 0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e, - 0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x35, - 0x39,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x36,0x31,0x20, - 0x3d,0x20,0x5f,0x35,0x35,0x39,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x28,0x72,0x61,0x6e,0x64,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d, - 0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x66,0x69,0x6c, - 0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72, - 0x67,0x62,0x20,0x3d,0x20,0x5f,0x35,0x36,0x31,0x3b,0x0a,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,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x5f,0x35,0x36,0x31,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30, - 0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x20,0x5f,0x34,0x37,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, + 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e, + 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, + 0x3d,0x20,0x6d,0x69,0x78,0x28,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, + 0x28,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x32,0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x37,0x20,0x2a,0x20,0x31,0x36, + 0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e, + 0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c, + 0x20,0x5f,0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x6c,0x75,0x74, + 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65, + 0x61,0x72,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x28,0x28,0x66,0x61, + 0x73,0x74,0x3a,0x3a,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x37,0x20,0x2b,0x20,0x31, + 0x2e,0x30,0x2c,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30, + 0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29, + 0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f, + 0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x5f,0x34,0x35,0x34,0x20,0x2d,0x20,0x5f,0x34,0x35,0x37,0x29,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x72,0x28,0x63, + 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31, + 0x37,0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e, + 0x30,0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28, + 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74, + 0x74,0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36,0x37,0x29, + 0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65, + 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20, + 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28,0x67,0x6c, + 0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f, + 0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65, + 0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20, + 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e, + 0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f, + 0x6f,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, + 0x5f,0x35,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67, + 0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35, + 0x36,0x36,0x20,0x3d,0x20,0x5f,0x35,0x36,0x34,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x28,0x28,0x72,0x61,0x6e,0x64,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, + 0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e, + 0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, + 0x73,0x69,0x74,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72, + 0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x5f,0x35,0x36,0x36,0x3b,0x0a,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, + 0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x36,0x36,0x2c,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x31,0x2e,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, + 0x00, ]; postprocess_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc: sg_shader_desc; @@ -1926,9 +1946,15 @@ postprocess_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc.uniform_blocks[1].stage = .FRAGMENT; desc.uniform_blocks[1].layout = .STD140; desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "dof_config"; + desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; + desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; + desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_279.dof_disabled"; + desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT; + desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; + desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_279.dof_max"; + desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; + desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; + desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_279.dof_point"; desc.images[0].stage = .FRAGMENT; desc.images[0].multisampled = false; desc.images[0].image_type = ._2D; @@ -2043,9 +2069,15 @@ postprocess_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc.uniform_blocks[1].stage = .FRAGMENT; desc.uniform_blocks[1].layout = .STD140; desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "dof_config"; + desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; + desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; + desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_279.dof_disabled"; + desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT; + desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; + desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_279.dof_max"; + desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; + desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; + desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_279.dof_point"; desc.images[0].stage = .FRAGMENT; desc.images[0].multisampled = false; desc.images[0].image_type = ._2D; diff --git a/src/shaders/shader_post_process_main.glsl b/src/shaders/shader_post_process_main.glsl index 60288bb..da8d400 100644 --- a/src/shaders/shader_post_process_main.glsl +++ b/src/shaders/shader_post_process_main.glsl @@ -26,6 +26,7 @@ layout(binding = 4) uniform texture2D pos_buf; layout(binding = 4) uniform sampler pos_smp; layout(binding=1) uniform dof_config { + int dof_disabled; float dof_max; float dof_point; }; @@ -131,11 +132,13 @@ void main() { sampled_color_hdr = texture(sampler2D(pptex, ppsmp), distorted_texcoord).rgb; } - float view_z = texture(sampler2D(pos_buf, pos_smp), distorted_texcoord).z; - float depth = abs(view_z); - float coc = smoothstep(0.0, 1.0, abs(depth - dof_point) / max(dof_max, 0.0001)); - vec3 dof_blurred = texture(sampler2D(dof_tex, dof_smp), distorted_texcoord).rgb; - sampled_color_hdr = mix(sampled_color_hdr, dof_blurred, coc); + if(dof_disabled == 0) { + float view_z = texture(sampler2D(pos_buf, pos_smp), distorted_texcoord).z; + float depth = abs(view_z); + float coc = smoothstep(0.0, 1.0, abs(depth - dof_point) / max(dof_max, 0.0001)); + vec3 dof_blurred = texture(sampler2D(dof_tex, dof_smp), distorted_texcoord).rgb; + sampled_color_hdr = mix(sampled_color_hdr, dof_blurred, coc); + } vec3 bloom_color = texture(sampler2D(bloom_tex, bloom_smp), distorted_texcoord).rgb; vec3 color_hdr = (sampled_color_hdr + bloom_color * bloom_amount) * exposure;