diff --git a/config.def.h b/config.def.h index a91eb62f4505..a271075955a1 100644 --- a/config.def.h +++ b/config.def.h @@ -506,7 +506,7 @@ #define DEFAULT_VIDEO_HDR_PAPER_WHITE_NITS 200.0f /* Should we expand the colour gamut when using hdr */ -#define DEFAULT_VIDEO_HDR_EXPAND_GAMUT false +#define DEFAULT_VIDEO_HDR_EXPAND_GAMUT 0 /* Enable a basic HDR scanline implementation which is the main reason for using HDR in RetroArch */ #define DEFAULT_VIDEO_HDR_SCANLINES true diff --git a/configuration.c b/configuration.c index 287029d1ce2d..2c165a862c9f 100644 --- a/configuration.c +++ b/configuration.c @@ -1920,7 +1920,6 @@ static struct config_bool_setting *populate_settings_bool( SETTING_BOOL("video_force_srgb_disable", &settings->bools.video_force_srgb_disable, true, false, false); SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, DEFAULT_FULLSCREEN, false); SETTING_BOOL("video_hdr_enable", &settings->bools.video_hdr_enable, true, DEFAULT_VIDEO_HDR_ENABLE, false); - SETTING_BOOL("video_hdr_expand_gamut", &settings->bools.video_hdr_expand_gamut, true, DEFAULT_VIDEO_HDR_EXPAND_GAMUT, false); SETTING_BOOL("video_hdr_scanlines", &settings->bools.video_hdr_scanlines, true, DEFAULT_VIDEO_HDR_SCANLINES, false); SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, DEFAULT_VSYNC, false); SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, DEFAULT_ADAPTIVE_VSYNC, false); @@ -2560,7 +2559,8 @@ static struct config_uint_setting *populate_settings_uint( SETTING_UINT("video_record_scale_factor", &settings->uints.video_record_scale_factor, true, 1, false); SETTING_UINT("video_stream_scale_factor", &settings->uints.video_stream_scale_factor, true, 1, false); - SETTING_UINT("video_hdr_subpixel_layout", &settings->uints.video_hdr_subpixel_layout, true, DEFAULT_VIDEO_HDR_SUBPIXEL_LAYOUT, false); + SETTING_UINT("video_hdr_subpixel_layout", &settings->uints.video_hdr_subpixel_layout, true, DEFAULT_VIDEO_HDR_SUBPIXEL_LAYOUT, false); + SETTING_UINT("video_hdr_expand_gamut", &settings->uints.video_hdr_expand_gamut, true, DEFAULT_VIDEO_HDR_EXPAND_GAMUT, false); #ifdef HAVE_NETWORKING SETTING_UINT("streaming_mode", &settings->uints.streaming_mode, true, STREAMING_MODE_TWITCH, false); #endif diff --git a/configuration.h b/configuration.h index 69f93276af47..e1f98d1217dc 100644 --- a/configuration.h +++ b/configuration.h @@ -383,6 +383,7 @@ typedef struct settings unsigned video_shader_subframes; unsigned video_autoswitch_refresh_rate; unsigned video_hdr_subpixel_layout; + unsigned video_hdr_expand_gamut; unsigned quit_on_close_content; @@ -689,7 +690,6 @@ typedef struct settings bool video_wiiu_prefer_drc; bool video_notch_write_over_enable; bool video_hdr_enable; - bool video_hdr_expand_gamut; bool video_hdr_scanlines; bool video_use_metal_arg_buffers; diff --git a/gfx/common/dxgi_common.h b/gfx/common/dxgi_common.h index aadc8172b69a..957d721ec5bc 100644 --- a/gfx/common/dxgi_common.h +++ b/gfx/common/dxgi_common.h @@ -38,7 +38,7 @@ typedef struct ALIGN(16) float max_nits; /* 1000.0f */ unsigned subpixel_layout; /* 0 */ float scanlines; /* 1.0f */ - float expand_gamut; /* 0.0f */ + unsigned expand_gamut; /* 0 */ float inverse_tonemap; /* 1.0f */ float hdr10; /* 1.0f */ } dxgi_hdr_uniform_t; diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index b894194af483..d2e3f019ad4f 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -412,7 +412,7 @@ typedef struct float enable_hdr; float paper_white_nits; float max_nits; - float expand_gamut; + unsigned expand_gamut; float scanlines; unsigned subpixel_layout; float inverse_tonemap; @@ -1635,13 +1635,13 @@ static void d3d11_set_hdr_paper_white_nits(void* data, float paper_white_nits) } } -static void d3d11_set_hdr_expand_gamut(void* data, bool expand_gamut) +static void d3d11_set_hdr_expand_gamut(void* data, unsigned expand_gamut) { D3D11_MAPPED_SUBRESOURCE mapped_ubo; dxgi_hdr_uniform_t *ubo = NULL; d3d11_video_t* d3d11 = (d3d11_video_t*)data; - d3d11->hdr.ubo_values.expand_gamut = expand_gamut ? 1.0f : 0.0f; + d3d11->hdr.ubo_values.expand_gamut = expand_gamut; d3d11->context->lpVtbl->Map( d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); @@ -1653,7 +1653,7 @@ static void d3d11_set_hdr_expand_gamut(void* data, bool expand_gamut) { for (unsigned i = 0; i < d3d11->shader_preset->passes; i++) { - d3d11->pass[i].expand_gamut = expand_gamut ? 1.0f : 0.0f; + d3d11->pass[i].expand_gamut = expand_gamut; } } } @@ -2703,7 +2703,7 @@ static void *d3d11_gfx_init(const video_info_t* video, d3d11->hdr.ubo_values.subpixel_layout = settings->uints.video_hdr_subpixel_layout; d3d11->hdr.ubo_values.expand_gamut = - settings->bools.video_hdr_expand_gamut; + settings->uints.video_hdr_expand_gamut; d3d11->hdr.ubo_values.inverse_tonemap = 1.0f; /* Use this to turn on/off the inverse tonemap */ d3d11->hdr.ubo_values.hdr10 = 1.0f; /* Use this to turn on/off the hdr10 */ @@ -3619,7 +3619,7 @@ static bool d3d11_gfx_frame( d3d11->pass[i].max_nits = settings->floats.video_hdr_max_nits; d3d11->pass[i].scanlines = settings->bools.video_hdr_scanlines ? 1.0f : 0.0f; d3d11->pass[i].subpixel_layout = settings->uints.video_hdr_subpixel_layout; - d3d11->pass[i].expand_gamut = settings->bools.video_hdr_expand_gamut ? 1.0f : 0.0f; + d3d11->pass[i].expand_gamut = settings->uints.video_hdr_expand_gamut; } #endif /* HAVE_DXGI_HDR */ diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index 06bc30590a52..faaff6b1d368 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -1887,17 +1887,17 @@ static void d3d12_set_hdr_paper_white_nits(void* data, float paper_white_nits) } } -static void d3d12_set_hdr_expand_gamut(void* data, bool expand_gamut) +static void d3d12_set_hdr_expand_gamut(void* data, unsigned expand_gamut) { d3d12_video_t *d3d12 = (d3d12_video_t*)data; - d3d12->hdr.ubo_values.expand_gamut = expand_gamut ? 1.0f : 0.0f; + d3d12->hdr.ubo_values.expand_gamut = expand_gamut; if(d3d12->shader_preset) { for (unsigned i = 0; i < d3d12->shader_preset->passes; i++) { - d3d12->pass[i].expand_gamut = expand_gamut ? 1.0f : 0.0f; + d3d12->pass[i].expand_gamut = expand_gamut; } } } @@ -3505,7 +3505,7 @@ static void *d3d12_gfx_init(const video_info_t* video, d3d12->hdr.ubo_values.subpixel_layout = settings->uints.video_hdr_subpixel_layout; d3d12->hdr.ubo_values.scanlines = settings->bools.video_hdr_scanlines; - d3d12->hdr.ubo_values.expand_gamut = settings->bools.video_hdr_expand_gamut; + d3d12->hdr.ubo_values.expand_gamut = settings->uints.video_hdr_expand_gamut; d3d12->hdr.ubo_values.inverse_tonemap = 1.0f; /* Use this to turn on/off the inverse tonemap */ d3d12->hdr.ubo_values.hdr10 = 1.0f; /* Use this to turn on/off the hdr10 */ @@ -4185,7 +4185,7 @@ static bool d3d12_gfx_frame( d3d12->pass[i].max_nits = settings->floats.video_hdr_max_nits; d3d12->pass[i].scanlines = settings->bools.video_hdr_scanlines ? 1.0f : 0.0f; d3d12->pass[i].subpixel_layout = settings->uints.video_hdr_subpixel_layout; - d3d12->pass[i].expand_gamut = settings->bools.video_hdr_expand_gamut ? 1.0f : 0.0f; + d3d12->pass[i].expand_gamut = settings->uints.video_hdr_expand_gamut; } #endif /* HAVE_DXGI_HDR */ diff --git a/gfx/drivers/d3d_shaders/hdr_sm5.hlsl.h b/gfx/drivers/d3d_shaders/hdr_sm5.hlsl.h index 8bd5abf3d4d7..ac932886af93 100644 --- a/gfx/drivers/d3d_shaders/hdr_sm5.hlsl.h +++ b/gfx/drivers/d3d_shaders/hdr_sm5.hlsl.h @@ -10,7 +10,7 @@ SRC( float max_nits; /* 1000.0f */ uint subpixel_layout; /* 0 */ float scanlines; /* 1.0f */ - float expand_gamut; /* 0.0f */ + uint expand_gamut; /* 0 */ float inverse_tonemap; float hdr10; }; @@ -82,14 +82,14 @@ static const float k_crt_green_horizontal_convergence = 0.0f; static const float k_crt_blue_horizontal_convergence = 0.0f; static const float k_crt_red_scanline_min = 0.45f; -static const float k_crt_red_scanline_max = 0.70f; -static const float k_crt_red_scanline_attack = 0.30f; +static const float k_crt_red_scanline_max = 0.90f; +static const float k_crt_red_scanline_attack = 0.60f; static const float k_crt_green_scanline_min = 0.45f; -static const float k_crt_green_scanline_max = 0.70f; -static const float k_crt_green_scanline_attack = 0.30f; +static const float k_crt_green_scanline_max = 0.90f; +static const float k_crt_green_scanline_attack = 0.60f; static const float k_crt_blue_scanline_min = 0.45f; -static const float k_crt_blue_scanline_max = 0.70f; -static const float k_crt_blue_scanline_attack = 0.30f; +static const float k_crt_blue_scanline_max = 0.90f; +static const float k_crt_blue_scanline_attack = 0.60f; static const float k_crt_red_beam_sharpness = 1.30f; static const float k_crt_red_beam_attack = 1.00f; @@ -111,6 +111,13 @@ static const float3x3 k709to2020 = { 0.0163916f, 0.0880132f, 0.8955950f } }; +static const float3x3 k2020toP3 = +{ + { 1.343578f, -0.282180f, -0.061399f }, + {-0.065297f, 1.075788f, -0.010490f }, + { 0.002822f, -0.019598f, 1.016777f } +}; + static const float4 kFallOffControlPoints = float4(0.0f, 0.0f, 0.0f, 1.0f); static const float4 kAttackControlPoints = float4(0.0f, 1.0f, 1.0f, 1.0f); @@ -122,9 +129,9 @@ static const float4x4 kCubicBezier = float4x4( 1.0f, 0.0f, 0.0f, 0.0f, /* START Converted from (Copyright (c) Microsoft Corporation - Licensed under the MIT License.) https://github.com/microsoft/Xbox-ATG-Samples/tree/master/Kits/ATGTK/HDR */ static const float3x3 kExpanded709to2020 = { - { 0.6274040f, 0.3292820f, 0.0433136f }, - { 0.0457456, 0.941777, 0.0124772 }, - { -0.00121055, 0.0176041, 0.983607 } + { 0.6274040, 0.3292820, 0.0433136 }, + { 0.0457456, 0.941777, 0.0124772 }, + {-0.00121055, 0.0176041, 0.983607 } }; float3 LinearToST2084(float3 normalizedLinearValue) @@ -149,59 +156,110 @@ float3 InverseTonemap(const float3 sdr_linear, const float max_nits, const float return sdr_linear * (tonemapped_val / input_val); } -float4 Sample(float2 texcoord) +float3 Sample(float2 texcoord) { const float4 sdr = t0.Sample(s0, texcoord); - const float3 sdr_linear = pow(abs(sdr.rgb), 2.2f); + const float3 sdr_linear = pow(abs(sdr.rgb), 2.22f); - return float4(sdr_linear, sdr.a); + return sdr_linear; } float4 Sample(float4 colour, float2 texcoord) { const float4 sdr = colour * t0.Sample(s0, texcoord); - const float3 sdr_linear = pow(abs(sdr.rgb), 2.2f); + const float3 sdr_linear = pow(abs(sdr.rgb), 2.22f); return float4(sdr_linear, sdr.a); } -float4 HDR(const float4 sdr_linear) +float3 To2020(const float3 sdr_linear) { - const float3 hdr_linear = InverseTonemap(sdr_linear.rgb, global.max_nits, global.paper_white_nits); + float3 rec2020; + + if(global.expand_gamut == 0) + { + rec2020 = mul(k709to2020, sdr_linear); + } + else if(global.expand_gamut == 1) + { + rec2020 = mul( kExpanded709to2020, sdr_linear); + } + else if(global.expand_gamut == 2) + { + rec2020 = mul(k709to2020, sdr_linear); + rec2020 = mul(k2020toP3, rec2020); + } + else + { + rec2020 = sdr_linear; + } - return float4(hdr_linear, sdr_linear.a); + rec2020 = max(rec2020, float3(0.0f, 0.0f, 0.0f)); + + return rec2020; } -float3 HDR10(const float3 hdr_linear) +float4 To2020(const float4 sdr_linear) { - float3 rec2020 = mul(k709to2020, hdr_linear); + float3 rec2020; - if(global.expand_gamut > 0.0f) + if(global.expand_gamut == 0) + { + rec2020 = mul(k709to2020, sdr_linear.rgb); + } + else if(global.expand_gamut == 1) + { + rec2020 = mul( kExpanded709to2020, sdr_linear.rgb); + } + else if(global.expand_gamut == 2) + { + rec2020 = mul(k709to2020, sdr_linear.rgb); + rec2020 = mul(k2020toP3, rec2020); + } + else { - rec2020 = mul( kExpanded709to2020, hdr_linear); + rec2020 = sdr_linear.rgb; } - const float3 linearColour = rec2020 * (global.paper_white_nits / kMaxNitsFor2084); + rec2020 = max(rec2020, float3(0.0f, 0.0f, 0.0f)); + + return float4(rec2020, sdr_linear.a); +} + +float3 HDR(const float3 sdr_linear) +{ + return InverseTonemap(sdr_linear, global.max_nits, global.paper_white_nits); +} + +float4 HDR(const float4 sdr_linear) +{ + const float3 hdr_linear = InverseTonemap(sdr_linear.rgb, global.max_nits, global.paper_white_nits); + + return float4(hdr_linear, sdr_linear.a); +} + +float3 LinearToSignal(const float3 linear_colour) +{ + // Always Encode to Gamma 2.4 + return pow(max(linear_colour.rgb, float3(0.0f, 0.0f, 0.0f)), 1.0f / 2.4f); +} + +float3 HDR10(const float3 hdr_linear) +{ + const float3 pq_input = hdr_linear * (global.paper_white_nits / kMaxNitsFor2084); - const float3 hdr10 = LinearToST2084(max(linearColour, 0.0f)); + const float3 hdr10 = LinearToST2084(max(pq_input, 0.0f)); return hdr10; } float4 HDR10(const float4 hdr_linear) { - float3 rec2020 = mul(k709to2020, hdr_linear.rgb); - - if(global.expand_gamut > 0.0f) - { - rec2020 = mul( kExpanded709to2020, hdr_linear.rgb); - } - - const float3 linearColour = rec2020 * (global.paper_white_nits / kMaxNitsFor2084); + const float3 pq_input = hdr_linear.rgb * (global.paper_white_nits / kMaxNitsFor2084); - const float3 hdr10 = LinearToST2084(max(linearColour, 0.0f)); + const float3 hdr10 = LinearToST2084(max(pq_input, 0.0f)); return float4(hdr10, hdr_linear.a); } @@ -248,13 +306,13 @@ float ScanlineColour(const uint channel, const float2 tex_coord_0 = float2(source_tex_coord_x, source_tex_coord_y); const float2 tex_coord_1 = float2(source_tex_coord_x + (1.0f / source_size.x), source_tex_coord_y); - const float hdr_channel_0 = HDR(Sample(tex_coord_0))[channel]; - const float hdr_channel_1 = HDR(Sample(tex_coord_1))[channel]; + const float hdr_channel_0 = LinearToSignal(HDR(To2020(Sample(tex_coord_0))))[channel]; + const float hdr_channel_1 = LinearToSignal(HDR(To2020(Sample(tex_coord_1))))[channel]; const float horiz_interp = Bezier(narrowed_source_pixel_offset, BeamControlPoints(beam_attack, hdr_channel_0 > hdr_channel_1)); const float hdr_channel = lerp(hdr_channel_0, hdr_channel_1, horiz_interp); - const float physics_signal = pow(max(hdr_channel, 0.0f), 1.0f / 2.2f); + const float physics_signal = hdr_channel; const float signal_strength = clamp(physics_signal, 0.0f, 2.5f); @@ -368,7 +426,9 @@ float3 Scanlines(float2 texcoord) scanline_colour = scanline_channel_0 * kColourMask[channel_0]; } - return HDR10(scanline_colour); + float3 linear_colour = pow(max(scanline_colour, float3(0.0f, 0.0f, 0.0f)), 2.4f); + + return HDR10(linear_colour); } float4 PSMain(PSInput input) : SV_TARGET @@ -381,16 +441,16 @@ float4 PSMain(PSInput input) : SV_TARGET } else { - return HDR10(HDR(Sample(input.color, input.texcoord))); + return HDR10(HDR(To2020(Sample(input.color, input.texcoord)))); } } else if(global.inverse_tonemap > 0.0f) { - return HDR(Sample(input.color, input.texcoord)); + return HDR(To2020(Sample(input.color, input.texcoord))); } else if(global.hdr10 > 0.0f) { - return HDR10(Sample(input.color, input.texcoord)); + return HDR10(To2020(Sample(input.color, input.texcoord))); } else { diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 3c018359e537..61c70ad04da3 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -88,7 +88,7 @@ typedef struct VKALIGN(16) float max_nits; /* 1000.0f */ unsigned not_used3; /* 0 */ float not_used4; /* 1.0f */ - float expand_gamut; /* 1.0f */ + unsigned expand_gamut; /* 0 */ float inverse_tonemap; /* 1.0f */ float hdr10; /* 1.0f */ } vulkan_hdr_uniform_t; @@ -3072,11 +3072,11 @@ static void vulkan_set_hdr_paper_white_nits(void* data, float paper_white_nits) } } -static void vulkan_set_hdr_expand_gamut(void* data, bool expand_gamut) +static void vulkan_set_hdr_expand_gamut(void* data, unsigned expand_gamut) { vk_t *vk = (vk_t*)data; - vk->hdr.ubo_values.expand_gamut = expand_gamut ? 1.0f : 0.0f; + vk->hdr.ubo_values.expand_gamut = expand_gamut; if(vk->filter_chain) { @@ -3193,7 +3193,7 @@ static bool vulkan_init_default_filter_chain(vk_t *vk) vulkan_filter_chain_set_max_nits(vk->filter_chain_default, settings->floats.video_hdr_max_nits); vulkan_filter_chain_set_paper_white_nits(vk->filter_chain_default, settings->floats.video_hdr_paper_white_nits); - vulkan_filter_chain_set_expand_gamut(vk->filter_chain_default, settings->bools.video_hdr_expand_gamut ? 1.0f : 0.0f); + vulkan_filter_chain_set_expand_gamut(vk->filter_chain_default, settings->uints.video_hdr_expand_gamut); vulkan_filter_chain_set_scanlines(vk->filter_chain_default, settings->bools.video_hdr_scanlines ? 1.0f : 0.0f); vulkan_filter_chain_set_subpixel_layout(vk->filter_chain_default, settings->uints.video_hdr_subpixel_layout); @@ -3287,7 +3287,7 @@ static bool vulkan_init_filter_chain_preset(vk_t *vk, const char *shader_path) vulkan_filter_chain_set_max_nits(vk->filter_chain, settings->floats.video_hdr_max_nits); vulkan_filter_chain_set_paper_white_nits(vk->filter_chain, settings->floats.video_hdr_paper_white_nits); - vulkan_filter_chain_set_expand_gamut(vk->filter_chain, settings->bools.video_hdr_expand_gamut ? 1.0f : 0.0f); + vulkan_filter_chain_set_expand_gamut(vk->filter_chain, settings->uints.video_hdr_expand_gamut); vulkan_filter_chain_set_scanlines(vk->filter_chain, settings->bools.video_hdr_scanlines ? 1.0f : 0.0f); vulkan_filter_chain_set_subpixel_layout(vk->filter_chain, settings->uints.video_hdr_subpixel_layout); @@ -3830,7 +3830,7 @@ static void *vulkan_init(const video_info_t *video, vk->hdr.ubo_values.max_nits = settings->floats.video_hdr_max_nits; vk->hdr.ubo_values.paper_white_nits = settings->floats.video_hdr_paper_white_nits; - vk->hdr.ubo_values.expand_gamut = settings->bools.video_hdr_expand_gamut; + vk->hdr.ubo_values.expand_gamut = settings->uints.video_hdr_expand_gamut; vk->hdr.ubo_values.inverse_tonemap = 1.0f; /* Use this to turn on/off the inverse tonemap */ vk->hdr.ubo_values.hdr10 = 1.0f; /* Use this to turn on/off the hdr10 */ @@ -5157,7 +5157,7 @@ static bool vulkan_frame(void *data, const void *frame, rp_info.framebuffer = backbuffer->framebuffer; VULKAN_IMAGE_LAYOUT_TRANSITION(vk->cmd, vk->offscreen_buffer.image, - use_offscreen_buffer ? + use_offscreen_buffer ? VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL : VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, use_offscreen_buffer ? @@ -5229,7 +5229,7 @@ static bool vulkan_frame(void *data, const void *frame, #endif if (!string_is_empty(msg)) - font_driver_render_msg(vk, msg, NULL, NULL); + font_driver_render_msg(vk, msg, NULL, NULL); #ifdef HAVE_GFX_WIDGETS if (widgets_active) diff --git a/gfx/drivers/vulkan_shaders/hdr.frag b/gfx/drivers/vulkan_shaders/hdr.frag index 61d03c392a7d..18d0bcb645fc 100644 --- a/gfx/drivers/vulkan_shaders/hdr.frag +++ b/gfx/drivers/vulkan_shaders/hdr.frag @@ -56,14 +56,14 @@ const float k_crt_green_horizontal_convergence = 0.0; const float k_crt_blue_horizontal_convergence = 0.0; const float k_crt_red_scanline_min = 0.45; -const float k_crt_red_scanline_max = 0.70; -const float k_crt_red_scanline_attack = 0.30; +const float k_crt_red_scanline_max = 0.90; +const float k_crt_red_scanline_attack = 0.60; const float k_crt_green_scanline_min = 0.45; -const float k_crt_green_scanline_max = 0.70; -const float k_crt_green_scanline_attack = 0.30; +const float k_crt_green_scanline_max = 0.90; +const float k_crt_green_scanline_attack = 0.60; const float k_crt_blue_scanline_min = 0.45; -const float k_crt_blue_scanline_max = 0.70; -const float k_crt_blue_scanline_attack = 0.30; +const float k_crt_blue_scanline_max = 0.90; +const float k_crt_blue_scanline_attack = 0.60; const float k_crt_red_beam_sharpness = 1.30; const float k_crt_red_beam_attack = 1.00; @@ -88,26 +88,113 @@ const mat4 kCubicBezier = mat4( 0.0, 0.0, 0.0, 1.0 ); -vec4 Sample(vec2 texcoord) +vec3 Sample(vec2 texcoord) { vec4 sdr = texture(Source, texcoord); - vec3 sdr_linear = pow(abs(sdr.rgb), vec3(2.2)); - return vec4(sdr_linear, sdr.a); + vec3 sdr_linear = pow(abs(sdr.rgb), vec3(2.22)); + return sdr_linear; } vec4 Sample(vec4 colour, vec2 texcoord) { vec4 sdr = colour * texture(Source, texcoord); - vec3 sdr_linear = pow(abs(sdr.rgb), vec3(2.2)); + vec3 sdr_linear = pow(abs(sdr.rgb), vec3(2.22)); return vec4(sdr_linear, sdr.a); } +vec3 To2020(const vec3 sdr_linear) +{ + vec3 rec2020; + + uint gamut = global.ExpandGamut; + + if(gamut == 0u) + { + rec2020 = sdr_linear * k709to2020; + } + else if(gamut == 1u) + { + rec2020 = sdr_linear * kExpanded709to2020; + } + else if(gamut == 2u) + { + rec2020 = sdr_linear * k709to2020; + rec2020 = rec2020 * k2020toP3; + } + else + { + rec2020 = sdr_linear; + } + + rec2020 = max(rec2020, vec3(0.0f)); + + return rec2020; +} + +vec4 To2020(const vec4 sdr_linear) +{ + vec3 rec2020; + + uint gamut = global.ExpandGamut; + + if(gamut == 0u) + { + rec2020 = sdr_linear.rgb * k709to2020; + } + else if(gamut == 1u) + { + rec2020 = sdr_linear.rgb * kExpanded709to2020; + } + else if(gamut == 2u) + { + rec2020 = sdr_linear.rgb * k709to2020; + rec2020 = rec2020 * k2020toP3; + } + else + { + rec2020 = sdr_linear.rgb; + } + + rec2020 = max(rec2020, vec3(0.0f)); + + return vec4(rec2020, sdr_linear.a); +} + +vec3 HDR(const vec3 sdr_linear) +{ + return InverseTonemap(sdr_linear); +} + vec4 HDR(const vec4 sdr_linear) { vec3 hdr_linear = InverseTonemap(sdr_linear.rgb); return vec4(hdr_linear, sdr_linear.a); } +vec3 LinearToSignal(const vec3 linear_colour) +{ + // Always Encode to Gamma 2.4 + return pow(max(linear_colour.rgb, vec3(0.0f)), vec3(1.0f / 2.4f)); +} + +vec3 HDR10(const vec3 hdr_linear) +{ + vec3 pq_input = hdr_linear * vec3(global.PaperWhiteNits / kMaxNitsFor2084); + + vec3 hdr10 = LinearToST2084(max(pq_input, vec3(0.0f))); + + return hdr10; +} + +vec4 HDR10(const vec4 hdr_linear) +{ + vec3 pq_input = hdr_linear.rgb * vec3(global.PaperWhiteNits / kMaxNitsFor2084); + + vec3 hdr10 = LinearToST2084(max(pq_input, vec3(0.0f))); + + return vec4(hdr10, hdr_linear.a); +} + float Bezier(const float t0, const vec4 control_points) { vec4 t = vec4(1.0, t0, t0*t0, t0*t0*t0); @@ -148,13 +235,13 @@ float ScanlineColour(const uint channel, vec2 tex_coord_0 = vec2(source_tex_coord_x, source_tex_coord_y); vec2 tex_coord_1 = vec2(source_tex_coord_x + (1.0 / source_size.x), source_tex_coord_y); - float hdr_channel_0 = HDR(Sample(tex_coord_0))[channel]; - float hdr_channel_1 = HDR(Sample(tex_coord_1))[channel]; + float hdr_channel_0 = LinearToSignal(HDR(To2020(Sample(tex_coord_0))))[channel]; + float hdr_channel_1 = LinearToSignal(HDR(To2020(Sample(tex_coord_1))))[channel]; float horiz_interp = Bezier(narrowed_source_pixel_offset, BeamControlPoints(beam_attack, hdr_channel_0 > hdr_channel_1)); float hdr_channel = mix(hdr_channel_0, hdr_channel_1, horiz_interp); - float physics_signal = pow(max(hdr_channel, 0.0), 1.0 / 2.2); + float physics_signal = hdr_channel; float signal_strength = clamp(physics_signal, 0.0, 2.5); @@ -268,7 +355,9 @@ vec3 Scanlines(vec2 texcoord) scanline_colour = scanline_channel_0 * kColourMask[channel_0]; } - return LinearToHDR10(scanline_colour); + vec3 linear_colour = pow(max(scanline_colour, vec3(0.0f)), vec3(2.4f)); + + return HDR10(linear_colour); } void main() @@ -281,16 +370,16 @@ void main() } else { - FragColor = LinearToHDR10(HDR(Sample(kDefaultColor, vTexCoord))); + FragColor = HDR10(HDR(To2020(Sample(kDefaultColor, vTexCoord)))); } } else if(global.InverseTonemap > 0.0) { - FragColor = HDR(Sample(kDefaultColor, vTexCoord)); + FragColor = HDR(To2020(Sample(kDefaultColor, vTexCoord))); } else if(global.HDR10 > 0.0) { - FragColor = LinearToHDR10(Sample(kDefaultColor, vTexCoord)); + FragColor = HDR10(To2020(Sample(kDefaultColor, vTexCoord))); } else { diff --git a/gfx/drivers/vulkan_shaders/hdr.frag.inc b/gfx/drivers/vulkan_shaders/hdr.frag.inc index b3c69c5de937..04edfca07f22 100644 --- a/gfx/drivers/vulkan_shaders/hdr.frag.inc +++ b/gfx/drivers/vulkan_shaders/hdr.frag.inc @@ -1,9 +1,9 @@ -{0x07230203,0x00010000,0x000d000b,0x000002f5, +{0x07230203,0x00010000,0x000d000b,0x0000033d, 0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001, 0x0007000f,0x00000004,0x00000004,0x6e69616d, -0x00000000,0x0000029f,0x000002a1,0x00030010, +0x00000000,0x000002e6,0x000002e8,0x00030010, 0x00000004,0x00000007,0x00030003,0x00000001, 0x00000136,0x000a0004,0x475f4c47,0x4c474f4f, 0x70635f45,0x74735f70,0x5f656c79,0x656e696c, @@ -17,1203 +17,1307 @@ 0x0000000f,0x656e694c,0x6f547261,0x30325453, 0x76283438,0x003b3366,0x00080005,0x0000000e, 0x6d726f6e,0x7a696c61,0x694c6465,0x7261656e, -0x756c6156,0x00000065,0x00090005,0x00000012, -0x6d726f4e,0x7a696c61,0x52444865,0x6e656353, -0x6c615665,0x76286575,0x003b3366,0x00060005, -0x00000011,0x53726468,0x656e6563,0x756c6156, -0x00000065,0x00070005,0x00000015,0x656e694c, -0x6f547261,0x31524448,0x66762830,0x00003b33, -0x00050005,0x00000014,0x5f726468,0x656e696c, -0x00007261,0x00070005,0x0000001b,0x656e694c, -0x6f547261,0x31524448,0x66762830,0x00003b34, -0x00050005,0x0000001a,0x5f726468,0x656e696c, -0x00007261,0x00050005,0x00000021,0x706d6153, -0x7628656c,0x003b3266,0x00050005,0x00000020, -0x63786574,0x64726f6f,0x00000000,0x00060005, -0x00000026,0x706d6153,0x7628656c,0x763b3466, -0x003b3266,0x00040005,0x00000024,0x6f6c6f63, -0x00007275,0x00050005,0x00000025,0x63786574, -0x64726f6f,0x00000000,0x00050005,0x0000002a, -0x28524448,0x3b346676,0x00000000,0x00050005, -0x00000029,0x5f726473,0x656e696c,0x00007261, -0x00060005,0x0000002f,0x697a6542,0x66287265, -0x66763b31,0x00003b34,0x00030005,0x0000002d, -0x00003074,0x00060005,0x0000002e,0x746e6f63, +0x756c6156,0x00000065,0x00050005,0x00000015, +0x706d6153,0x7628656c,0x003b3266,0x00050005, +0x00000014,0x63786574,0x64726f6f,0x00000000, +0x00060005,0x0000001c,0x706d6153,0x7628656c, +0x763b3466,0x003b3266,0x00040005,0x0000001a, +0x6f6c6f63,0x00007275,0x00050005,0x0000001b, +0x63786574,0x64726f6f,0x00000000,0x00050005, +0x0000001f,0x30326f54,0x76283032,0x003b3366, +0x00050005,0x0000001e,0x5f726473,0x656e696c, +0x00007261,0x00050005,0x00000023,0x30326f54, +0x76283032,0x003b3466,0x00050005,0x00000022, +0x5f726473,0x656e696c,0x00007261,0x00050005, +0x00000026,0x28524448,0x3b336676,0x00000000, +0x00050005,0x00000025,0x5f726473,0x656e696c, +0x00007261,0x00050005,0x00000029,0x28524448, +0x3b346676,0x00000000,0x00050005,0x00000028, +0x5f726473,0x656e696c,0x00007261,0x00070005, +0x0000002c,0x656e694c,0x6f547261,0x6e676953, +0x76286c61,0x003b3366,0x00060005,0x0000002b, +0x656e696c,0x635f7261,0x756f6c6f,0x00000072, +0x00050005,0x0000002f,0x31524448,0x66762830, +0x00003b33,0x00050005,0x0000002e,0x5f726468, +0x656e696c,0x00007261,0x00050005,0x00000032, +0x31524448,0x66762830,0x00003b34,0x00050005, +0x00000031,0x5f726468,0x656e696c,0x00007261, +0x00060005,0x00000037,0x697a6542,0x66287265, +0x66763b31,0x00003b34,0x00030005,0x00000035, +0x00003074,0x00060005,0x00000036,0x746e6f63, 0x5f6c6f72,0x6e696f70,0x00007374,0x00090005, -0x00000035,0x6d616542,0x746e6f43,0x506c6f72, +0x0000003d,0x6d616542,0x746e6f43,0x506c6f72, 0x746e696f,0x31662873,0x3b31623b,0x00000000, -0x00050005,0x00000033,0x6d616562,0x7474615f, -0x006b6361,0x00040005,0x00000034,0x6c6c6166, -0x0066666f,0x00100005,0x00000045,0x6e616353, +0x00050005,0x0000003b,0x6d616562,0x7474615f, +0x006b6361,0x00040005,0x0000003c,0x6c6c6166, +0x0066666f,0x00100005,0x0000004d,0x6e616353, 0x656e696c,0x6f6c6f43,0x75287275,0x66763b31, 0x66763b32,0x31663b32,0x3b31663b,0x663b3166, 0x31663b31,0x3b31663b,0x663b3166,0x31663b31, -0x0000003b,0x00040005,0x00000039,0x6e616863, -0x006c656e,0x00050005,0x0000003a,0x5f786574, -0x726f6f63,0x00000064,0x00050005,0x0000003b, +0x0000003b,0x00040005,0x00000041,0x6e616863, +0x006c656e,0x00050005,0x00000042,0x5f786574, +0x726f6f63,0x00000064,0x00050005,0x00000043, 0x72756f73,0x735f6563,0x00657a69,0x00060005, -0x0000003c,0x6e616373,0x656e696c,0x7a69735f, -0x00000065,0x00070005,0x0000003d,0x72756f73, +0x00000044,0x6e616373,0x656e696c,0x7a69735f, +0x00000065,0x00070005,0x00000045,0x72756f73, 0x745f6563,0x635f7865,0x64726f6f,0x0000785f, -0x000a0005,0x0000003e,0x7272616e,0x6465776f, +0x000a0005,0x00000046,0x7272616e,0x6465776f, 0x756f735f,0x5f656372,0x65786970,0x666f5f6c, -0x74657366,0x00000000,0x00080005,0x0000003f, +0x74657366,0x00000000,0x00080005,0x00000047, 0x74726576,0x6c616369,0x6e6f635f,0x67726576, -0x65636e65,0x00000000,0x00050005,0x00000040, +0x65636e65,0x00000000,0x00050005,0x00000048, 0x6d616562,0x7474615f,0x006b6361,0x00060005, -0x00000041,0x6e616373,0x656e696c,0x6e696d5f, -0x00000000,0x00060005,0x00000042,0x6e616373, +0x00000049,0x6e616373,0x656e696c,0x6e696d5f, +0x00000000,0x00060005,0x0000004a,0x6e616373, 0x656e696c,0x78616d5f,0x00000000,0x00060005, -0x00000043,0x6e616373,0x656e696c,0x7474615f, -0x006b6361,0x00060005,0x00000044,0x74726576, +0x0000004b,0x6e616373,0x656e696c,0x7474615f, +0x006b6361,0x00060005,0x0000004c,0x74726576, 0x6c616369,0x6169625f,0x00000073,0x00100005, -0x00000053,0x656e6547,0x65746172,0x6e616353, +0x0000005b,0x656e6547,0x65746172,0x6e616353, 0x656e696c,0x3b317528,0x3b326676,0x3b326676, 0x663b3166,0x31663b31,0x3b31663b,0x663b3166, 0x31663b31,0x3b31663b,0x00000000,0x00040005, -0x00000048,0x6e616863,0x006c656e,0x00050005, -0x00000049,0x5f786574,0x726f6f63,0x00000064, -0x00050005,0x0000004a,0x72756f73,0x735f6563, -0x00657a69,0x00060005,0x0000004b,0x6e616373, +0x00000050,0x6e616863,0x006c656e,0x00050005, +0x00000051,0x5f786574,0x726f6f63,0x00000064, +0x00050005,0x00000052,0x72756f73,0x735f6563, +0x00657a69,0x00060005,0x00000053,0x6e616373, 0x656e696c,0x7a69735f,0x00000065,0x00080005, -0x0000004c,0x69726f68,0x746e6f7a,0x635f6c61, +0x00000054,0x69726f68,0x746e6f7a,0x635f6c61, 0x65766e6f,0x6e656772,0x00006563,0x00080005, -0x0000004d,0x74726576,0x6c616369,0x6e6f635f, +0x00000055,0x74726576,0x6c616369,0x6e6f635f, 0x67726576,0x65636e65,0x00000000,0x00060005, -0x0000004e,0x6d616562,0x6168735f,0x656e7072, -0x00007373,0x00050005,0x0000004f,0x6d616562, -0x7474615f,0x006b6361,0x00060005,0x00000050, +0x00000056,0x6d616562,0x6168735f,0x656e7072, +0x00007373,0x00050005,0x00000057,0x6d616562, +0x7474615f,0x006b6361,0x00060005,0x00000058, 0x6e616373,0x656e696c,0x6e696d5f,0x00000000, -0x00060005,0x00000051,0x6e616373,0x656e696c, -0x78616d5f,0x00000000,0x00060005,0x00000052, +0x00060005,0x00000059,0x6e616373,0x656e696c, +0x78616d5f,0x00000000,0x00060005,0x0000005a, 0x6e616373,0x656e696c,0x7474615f,0x006b6361, -0x00060005,0x00000057,0x6e616353,0x656e696c, -0x66762873,0x00003b32,0x00050005,0x00000056, +0x00060005,0x0000005e,0x6e616353,0x656e696c, +0x66762873,0x00003b32,0x00050005,0x0000005d, 0x63786574,0x64726f6f,0x00000000,0x00050005, -0x0000005a,0x75706e69,0x61765f74,0x0000006c, -0x00050005,0x00000069,0x6b616570,0x7461725f, -0x00006f69,0x00030005,0x0000006b,0x004f4255, -0x00040006,0x0000006b,0x00000000,0x0050564d, -0x00060006,0x0000006b,0x00000001,0x72756f53, -0x69536563,0x0000657a,0x00060006,0x0000006b, +0x00000061,0x75706e69,0x61765f74,0x0000006c, +0x00050005,0x00000070,0x6b616570,0x7461725f, +0x00006f69,0x00030005,0x00000072,0x004f4255, +0x00040006,0x00000072,0x00000000,0x0050564d, +0x00060006,0x00000072,0x00000001,0x72756f53, +0x69536563,0x0000657a,0x00060006,0x00000072, 0x00000002,0x7074754f,0x69537475,0x0000657a, -0x00070006,0x0000006b,0x00000003,0x65706150, +0x00070006,0x00000072,0x00000003,0x65706150, 0x69685772,0x694e6574,0x00007374,0x00050006, -0x0000006b,0x00000004,0x4e78614d,0x00737469, -0x00070006,0x0000006b,0x00000005,0x70627553, +0x00000072,0x00000004,0x4e78614d,0x00737469, +0x00070006,0x00000072,0x00000005,0x70627553, 0x6c657869,0x6f79614c,0x00007475,0x00060006, -0x0000006b,0x00000006,0x6e616353,0x656e696c, -0x00000073,0x00060006,0x0000006b,0x00000007, +0x00000072,0x00000006,0x6e616353,0x656e696c, +0x00000073,0x00060006,0x00000072,0x00000007, 0x61707845,0x6147646e,0x0074756d,0x00070006, -0x0000006b,0x00000008,0x65766e49,0x54657372, -0x6d656e6f,0x00007061,0x00050006,0x0000006b, +0x00000072,0x00000008,0x65766e49,0x54657372, +0x6d656e6f,0x00007061,0x00050006,0x00000072, 0x00000009,0x31524448,0x00000030,0x00040005, -0x0000006d,0x626f6c67,0x00006c61,0x00050005, -0x00000077,0x656d756e,0x6f746172,0x00000072, -0x00050005,0x00000079,0x6f6e6564,0x616e696d, -0x00726f74,0x00060005,0x00000081,0x656e6f74, +0x00000074,0x626f6c67,0x00006c61,0x00050005, +0x0000007e,0x656d756e,0x6f746172,0x00000072, +0x00050005,0x00000080,0x6f6e6564,0x616e696d, +0x00726f74,0x00060005,0x00000088,0x656e6f74, 0x7070616d,0x765f6465,0x00006c61,0x00040005, -0x0000008c,0x30325453,0x00003438,0x00040005, -0x000000ad,0x32636572,0x00303230,0x00060005, -0x000000d0,0x656e696c,0x6f437261,0x72756f6c, -0x00000000,0x00040005,0x000000d1,0x61726170, -0x0000006d,0x00040005,0x000000d7,0x61726170, -0x0000006d,0x00040005,0x000000db,0x32636572, -0x00303230,0x00060005,0x000000e7,0x656e696c, -0x6f437261,0x72756f6c,0x00000000,0x00040005, -0x000000e8,0x61726170,0x0000006d,0x00040005, -0x000000eb,0x31726468,0x00000030,0x00040005, -0x000000ef,0x61726170,0x0000006d,0x00030005, -0x000000fb,0x00726473,0x00040005,0x000000ff, -0x72756f53,0x00006563,0x00050005,0x00000103, +0x00000093,0x30325453,0x00003438,0x00030005, +0x000000ac,0x00726473,0x00040005,0x000000b0, +0x72756f53,0x00006563,0x00050005,0x000000b4, 0x5f726473,0x656e696c,0x00007261,0x00030005, -0x00000113,0x00726473,0x00050005,0x00000119, -0x5f726473,0x656e696c,0x00007261,0x00050005, -0x00000127,0x5f726468,0x656e696c,0x00007261, -0x00030005,0x00000132,0x00000074,0x00060005, -0x00000145,0x656e6e69,0x74615f72,0x6b636174, -0x00000000,0x00060005,0x00000147,0x6574756f, -0x74615f72,0x6b636174,0x00000000,0x00090005, -0x0000015a,0x72727563,0x5f746e65,0x72756f73, -0x705f6563,0x7469736f,0x5f6e6f69,0x00000079, -0x00050005,0x0000015f,0x746e6563,0x6c5f7265, -0x00656e69,0x00070005,0x00000165,0x74736964, -0x65636e61,0x5f6f745f,0x656e696c,0x00000000, -0x00070005,0x00000170,0x72756f73,0x745f6563, -0x635f7865,0x64726f6f,0x0000795f,0x00050005, -0x00000174,0x5f786574,0x726f6f63,0x00305f64, -0x00050005,0x00000177,0x5f786574,0x726f6f63, -0x00315f64,0x00060005,0x0000017d,0x5f726468, -0x6e616863,0x5f6c656e,0x00000030,0x00040005, -0x0000017e,0x61726170,0x0000006d,0x00060005, -0x00000183,0x5f726468,0x6e616863,0x5f6c656e, -0x00000031,0x00040005,0x00000184,0x61726170, -0x0000006d,0x00060005,0x00000189,0x69726f68, -0x6e695f7a,0x70726574,0x00000000,0x00050005, -0x0000018f,0x5f726468,0x6e616863,0x006c656e, -0x00060005,0x00000194,0x73796870,0x5f736369, -0x6e676973,0x00006c61,0x00060005,0x00000199, -0x6e676973,0x735f6c61,0x6e657274,0x00687467, -0x00080005,0x0000019d,0x6d616562,0x6469775f, -0x615f6874,0x73756a64,0x6e656d74,0x00000074, -0x00060005,0x0000019f,0x5f776172,0x74736964, -0x65636e61,0x00000000,0x00070005,0x000001a4, -0x74736964,0x65636e61,0x6a64615f,0x65747375, -0x00000064,0x00070005,0x000001a7,0x65666665, -0x76697463,0x69645f65,0x6e617473,0x00006563, -0x00050005,0x000001ab,0x6d616562,0x6469775f, -0x00006874,0x00090005,0x000001b8,0x6e616863, -0x5f6c656e,0x6e616373,0x656e696c,0x7369645f, -0x636e6174,0x00000065,0x00080005,0x000001bd, -0x6e616863,0x5f6c656e,0x746e6f63,0x5f6c6f72, -0x6e696f70,0x00007374,0x00050005,0x000001c2, -0x696d756c,0x636e616e,0x00000065,0x00090005, -0x000001cb,0x72727563,0x5f746e65,0x72756f73, -0x705f6563,0x7469736f,0x5f6e6f69,0x00000078, -0x00080005,0x000001d0,0x72727563,0x5f746e65, -0x72756f73,0x635f6563,0x65746e65,0x00785f72, -0x00070005,0x000001d4,0x72756f73,0x745f6563, -0x635f7865,0x64726f6f,0x0000785f,0x00070005, -0x000001d8,0x72756f73,0x705f6563,0x6c657869, -0x66666f5f,0x00746573,0x000a0005,0x000001db, -0x7272616e,0x6465776f,0x756f735f,0x5f656372, -0x65786970,0x666f5f6c,0x74657366,0x00000000, -0x00050005,0x000001e1,0x61746f74,0x696c5f6c, -0x00746867,0x00050005,0x000001f5,0x72756f73, -0x735f6563,0x00657a69,0x00050005,0x000001fb, -0x7074756f,0x735f7475,0x00657a69,0x00060005, -0x00000200,0x6e616373,0x656e696c,0x6f6f635f, -0x00006472,0x00070005,0x00000215,0x72727563, -0x5f746e65,0x69736f70,0x6e6f6974,0x00000000, -0x00040005,0x0000021a,0x6b73616d,0x00000000, -0x00050005,0x00000221,0x6f6c6f63,0x6d5f7275, -0x006b7361,0x00050005,0x0000022c,0x65646e69, -0x6c626178,0x00000065,0x00060005,0x00000235, -0x6e616373,0x656e696c,0x7a69735f,0x00000065, -0x00080005,0x0000023b,0x69726f68,0x746e6f7a, -0x635f6c61,0x65766e6f,0x6e656772,0x00006563, -0x00080005,0x0000023d,0x74726576,0x6c616369, -0x6e6f635f,0x67726576,0x65636e65,0x00000000, -0x00060005,0x0000023e,0x6d616562,0x6168735f, -0x656e7072,0x00007373,0x00050005,0x00000241, -0x6d616562,0x7474615f,0x006b6361,0x00060005, -0x00000243,0x6e616373,0x656e696c,0x6e696d5f, -0x00000000,0x00060005,0x00000246,0x6e616373, -0x656e696c,0x78616d5f,0x00000000,0x00060005, -0x00000249,0x6e616373,0x656e696c,0x7474615f, -0x006b6361,0x00060005,0x0000024c,0x6e616863, -0x5f6c656e,0x6e756f63,0x00000074,0x00060005, -0x0000024f,0x6e616373,0x656e696c,0x6c6f635f, -0x0072756f,0x00050005,0x00000254,0x6e616863, -0x5f6c656e,0x00000030,0x00070005,0x00000258, -0x6e616373,0x656e696c,0x6168635f,0x6c656e6e, -0x0000305f,0x00050005,0x0000027b,0x65646e69, -0x6c626178,0x00000065,0x00040005,0x0000027f, -0x61726170,0x0000006d,0x00050005,0x0000029f, +0x000000be,0x00726473,0x00050005,0x000000c4, +0x5f726473,0x656e696c,0x00007261,0x00040005, +0x000000d4,0x756d6167,0x00000074,0x00040005, +0x000000dd,0x32636572,0x00303230,0x00040005, +0x00000119,0x756d6167,0x00000074,0x00040005, +0x00000120,0x32636572,0x00303230,0x00050005, +0x00000142,0x5f726468,0x656e696c,0x00007261, +0x00050005,0x00000153,0x695f7170,0x7475706e, +0x00000000,0x00040005,0x0000015a,0x31726468, +0x00000030,0x00040005,0x0000015d,0x61726170, +0x0000006d,0x00050005,0x00000162,0x695f7170, +0x7475706e,0x00000000,0x00040005,0x00000169, +0x31726468,0x00000030,0x00040005,0x0000016c, +0x61726170,0x0000006d,0x00030005,0x00000176, +0x00000074,0x00060005,0x00000189,0x656e6e69, +0x74615f72,0x6b636174,0x00000000,0x00060005, +0x0000018b,0x6574756f,0x74615f72,0x6b636174, +0x00000000,0x00090005,0x0000019e,0x72727563, +0x5f746e65,0x72756f73,0x705f6563,0x7469736f, +0x5f6e6f69,0x00000079,0x00050005,0x000001a3, +0x746e6563,0x6c5f7265,0x00656e69,0x00070005, +0x000001a9,0x74736964,0x65636e61,0x5f6f745f, +0x656e696c,0x00000000,0x00070005,0x000001b4, +0x72756f73,0x745f6563,0x635f7865,0x64726f6f, +0x0000795f,0x00050005,0x000001b8,0x5f786574, +0x726f6f63,0x00305f64,0x00050005,0x000001bb, +0x5f786574,0x726f6f63,0x00315f64,0x00060005, +0x000001c1,0x5f726468,0x6e616863,0x5f6c656e, +0x00000030,0x00040005,0x000001c2,0x61726170, +0x0000006d,0x00060005,0x000001c9,0x5f726468, +0x6e616863,0x5f6c656e,0x00000031,0x00040005, +0x000001ca,0x61726170,0x0000006d,0x00060005, +0x000001d1,0x69726f68,0x6e695f7a,0x70726574, +0x00000000,0x00050005,0x000001d7,0x5f726468, +0x6e616863,0x006c656e,0x00060005,0x000001dc, +0x73796870,0x5f736369,0x6e676973,0x00006c61, +0x00060005,0x000001de,0x6e676973,0x735f6c61, +0x6e657274,0x00687467,0x00080005,0x000001e2, +0x6d616562,0x6469775f,0x615f6874,0x73756a64, +0x6e656d74,0x00000074,0x00060005,0x000001e4, +0x5f776172,0x74736964,0x65636e61,0x00000000, +0x00070005,0x000001e9,0x74736964,0x65636e61, +0x6a64615f,0x65747375,0x00000064,0x00070005, +0x000001ec,0x65666665,0x76697463,0x69645f65, +0x6e617473,0x00006563,0x00050005,0x000001f0, +0x6d616562,0x6469775f,0x00006874,0x00090005, +0x000001fd,0x6e616863,0x5f6c656e,0x6e616373, +0x656e696c,0x7369645f,0x636e6174,0x00000065, +0x00080005,0x00000202,0x6e616863,0x5f6c656e, +0x746e6f63,0x5f6c6f72,0x6e696f70,0x00007374, +0x00050005,0x00000207,0x696d756c,0x636e616e, +0x00000065,0x00090005,0x00000210,0x72727563, +0x5f746e65,0x72756f73,0x705f6563,0x7469736f, +0x5f6e6f69,0x00000078,0x00080005,0x00000215, +0x72727563,0x5f746e65,0x72756f73,0x635f6563, +0x65746e65,0x00785f72,0x00070005,0x00000219, +0x72756f73,0x745f6563,0x635f7865,0x64726f6f, +0x0000785f,0x00070005,0x0000021d,0x72756f73, +0x705f6563,0x6c657869,0x66666f5f,0x00746573, +0x000a0005,0x00000220,0x7272616e,0x6465776f, +0x756f735f,0x5f656372,0x65786970,0x666f5f6c, +0x74657366,0x00000000,0x00050005,0x00000226, +0x61746f74,0x696c5f6c,0x00746867,0x00050005, +0x0000023a,0x72756f73,0x735f6563,0x00657a69, +0x00050005,0x00000240,0x7074756f,0x735f7475, +0x00657a69,0x00060005,0x00000245,0x6e616373, +0x656e696c,0x6f6f635f,0x00006472,0x00070005, +0x0000025a,0x72727563,0x5f746e65,0x69736f70, +0x6e6f6974,0x00000000,0x00040005,0x0000025e, +0x6b73616d,0x00000000,0x00050005,0x00000265, +0x6f6c6f63,0x6d5f7275,0x006b7361,0x00050005, +0x0000026f,0x65646e69,0x6c626178,0x00000065, +0x00060005,0x00000278,0x6e616373,0x656e696c, +0x7a69735f,0x00000065,0x00080005,0x0000027e, +0x69726f68,0x746e6f7a,0x635f6c61,0x65766e6f, +0x6e656772,0x00006563,0x00080005,0x0000027f, +0x74726576,0x6c616369,0x6e6f635f,0x67726576, +0x65636e65,0x00000000,0x00060005,0x00000280, +0x6d616562,0x6168735f,0x656e7072,0x00007373, +0x00050005,0x00000283,0x6d616562,0x7474615f, +0x006b6361,0x00060005,0x00000285,0x6e616373, +0x656e696c,0x6e696d5f,0x00000000,0x00060005, +0x00000288,0x6e616373,0x656e696c,0x78616d5f, +0x00000000,0x00060005,0x0000028b,0x6e616373, +0x656e696c,0x7474615f,0x006b6361,0x00060005, +0x0000028e,0x6e616863,0x5f6c656e,0x6e756f63, +0x00000074,0x00060005,0x00000291,0x6e616373, +0x656e696c,0x6c6f635f,0x0072756f,0x00050005, +0x00000296,0x6e616863,0x5f6c656e,0x00000030, +0x00070005,0x0000029a,0x6e616373,0x656e696c, +0x6168635f,0x6c656e6e,0x0000305f,0x00050005, +0x000002bd,0x65646e69,0x6c626178,0x00000065, +0x00060005,0x000002c1,0x656e696c,0x635f7261, +0x756f6c6f,0x00000072,0x00050005,0x000002e6, 0x67617246,0x6f6c6f43,0x00000072,0x00050005, -0x000002a1,0x78655476,0x726f6f43,0x00000064, -0x00040005,0x000002a2,0x61726170,0x0000006d, -0x00040005,0x000002ab,0x61726170,0x0000006d, -0x00040005,0x000002ac,0x61726170,0x0000006d, -0x00040005,0x000002b0,0x61726170,0x0000006d, -0x00040005,0x000002b8,0x61726170,0x0000006d, -0x00040005,0x000002b9,0x61726170,0x0000006d, -0x00040005,0x000002c3,0x61726170,0x0000006d, -0x00040005,0x000002c4,0x61726170,0x0000006d, -0x00040005,0x000002c7,0x61726170,0x0000006d, -0x00040005,0x000002ca,0x61726170,0x0000006d, -0x00040005,0x000002cb,0x61726170,0x0000006d, -0x00030047,0x00000039,0x00000000,0x00030047, -0x00000048,0x00000000,0x00030047,0x0000005b, -0x00000000,0x00030047,0x0000005d,0x00000000, -0x00030047,0x0000005f,0x00000000,0x00030047, -0x0000006b,0x00000002,0x00040048,0x0000006b, -0x00000000,0x00000005,0x00050048,0x0000006b, +0x000002e8,0x78655476,0x726f6f43,0x00000064, +0x00040005,0x000002e9,0x61726170,0x0000006d, +0x00040005,0x000002f2,0x61726170,0x0000006d, +0x00040005,0x000002f3,0x61726170,0x0000006d, +0x00040005,0x000002ff,0x61726170,0x0000006d, +0x00040005,0x00000300,0x61726170,0x0000006d, +0x00040005,0x0000030b,0x61726170,0x0000006d, +0x00040005,0x0000030c,0x61726170,0x0000006d, +0x00040005,0x00000312,0x61726170,0x0000006d, +0x00040005,0x00000313,0x61726170,0x0000006d, +0x00030047,0x00000041,0x00000000,0x00030047, +0x00000050,0x00000000,0x00030047,0x00000062, +0x00000000,0x00030047,0x00000064,0x00000000, +0x00030047,0x00000066,0x00000000,0x00030047, +0x00000072,0x00000002,0x00040048,0x00000072, +0x00000000,0x00000005,0x00050048,0x00000072, 0x00000000,0x00000007,0x00000010,0x00050048, -0x0000006b,0x00000000,0x00000023,0x00000000, -0x00050048,0x0000006b,0x00000001,0x00000023, -0x00000040,0x00050048,0x0000006b,0x00000002, -0x00000023,0x00000050,0x00050048,0x0000006b, +0x00000072,0x00000000,0x00000023,0x00000000, +0x00050048,0x00000072,0x00000001,0x00000023, +0x00000040,0x00050048,0x00000072,0x00000002, +0x00000023,0x00000050,0x00050048,0x00000072, 0x00000003,0x00000023,0x00000060,0x00050048, -0x0000006b,0x00000004,0x00000023,0x00000064, -0x00040048,0x0000006b,0x00000005,0x00000000, -0x00050048,0x0000006b,0x00000005,0x00000023, -0x00000068,0x00050048,0x0000006b,0x00000006, -0x00000023,0x0000006c,0x00050048,0x0000006b, +0x00000072,0x00000004,0x00000023,0x00000064, +0x00040048,0x00000072,0x00000005,0x00000000, +0x00050048,0x00000072,0x00000005,0x00000023, +0x00000068,0x00050048,0x00000072,0x00000006, +0x00000023,0x0000006c,0x00040048,0x00000072, +0x00000007,0x00000000,0x00050048,0x00000072, 0x00000007,0x00000023,0x00000070,0x00050048, -0x0000006b,0x00000008,0x00000023,0x00000074, -0x00050048,0x0000006b,0x00000009,0x00000023, -0x00000078,0x00040047,0x0000006d,0x00000021, -0x00000000,0x00040047,0x0000006d,0x00000022, -0x00000000,0x00030047,0x000000f2,0x00000000, -0x00040047,0x000000ff,0x00000021,0x00000002, -0x00040047,0x000000ff,0x00000022,0x00000000, -0x00030047,0x0000021a,0x00000000,0x00030047, -0x00000221,0x00000000,0x00030047,0x00000223, -0x00000000,0x00030047,0x00000224,0x00000000, -0x00030047,0x00000225,0x00000000,0x00030047, -0x00000226,0x00000000,0x00030047,0x0000022a, -0x00000000,0x00030047,0x0000022e,0x00000000, -0x00030047,0x0000022f,0x00000000,0x00030047, -0x00000230,0x00000000,0x00030047,0x00000231, -0x00000000,0x00030047,0x00000232,0x00000000, -0x00030047,0x00000234,0x00000000,0x00030047, -0x0000024c,0x00000000,0x00030047,0x0000024d, -0x00000000,0x00030047,0x0000024e,0x00000000, -0x00030047,0x00000250,0x00000000,0x00030047, -0x00000254,0x00000000,0x00030047,0x00000255, -0x00000000,0x00030047,0x00000256,0x00000000, -0x00030047,0x00000257,0x00000000,0x00030047, -0x00000259,0x00000000,0x00030047,0x0000025d, -0x00000000,0x00030047,0x00000260,0x00000000, -0x00030047,0x00000263,0x00000000,0x00030047, -0x00000266,0x00000000,0x00030047,0x00000269, -0x00000000,0x00030047,0x0000026c,0x00000000, -0x00030047,0x0000026f,0x00000000,0x00030047, -0x00000279,0x00000000,0x00040047,0x0000029f, -0x0000001e,0x00000000,0x00040047,0x000002a1, -0x0000001e,0x00000000,0x00030047,0x000002f2, -0x00000000,0x00030047,0x000002f3,0x00000000, -0x00030047,0x000002f4,0x00000000,0x00020013, -0x00000002,0x00030021,0x00000003,0x00000002, -0x00030016,0x00000006,0x00000020,0x00040017, -0x00000007,0x00000006,0x00000003,0x00040021, -0x00000008,0x00000007,0x00000007,0x00040020, -0x0000000c,0x00000007,0x00000007,0x00040021, -0x0000000d,0x00000007,0x0000000c,0x00040017, -0x00000017,0x00000006,0x00000004,0x00040020, -0x00000018,0x00000007,0x00000017,0x00040021, -0x00000019,0x00000017,0x00000018,0x00040017, -0x0000001d,0x00000006,0x00000002,0x00040020, -0x0000001e,0x00000007,0x0000001d,0x00040021, -0x0000001f,0x00000017,0x0000001e,0x00050021, -0x00000023,0x00000017,0x00000018,0x0000001e, -0x00040021,0x00000028,0x00000017,0x00000017, -0x00050021,0x0000002c,0x00000006,0x00000006, -0x00000017,0x00020014,0x00000031,0x00050021, -0x00000032,0x00000017,0x00000006,0x00000031, -0x00040015,0x00000037,0x00000020,0x00000000, -0x000f0021,0x00000038,0x00000006,0x00000037, -0x0000001d,0x0000001d,0x00000006,0x00000006, +0x00000072,0x00000008,0x00000023,0x00000074, +0x00050048,0x00000072,0x00000009,0x00000023, +0x00000078,0x00040047,0x00000074,0x00000021, +0x00000000,0x00040047,0x00000074,0x00000022, +0x00000000,0x00040047,0x000000b0,0x00000021, +0x00000002,0x00040047,0x000000b0,0x00000022, +0x00000000,0x00030047,0x000000ca,0x00000000, +0x00030047,0x000000d4,0x00000000,0x00030047, +0x000000d8,0x00000000,0x00030047,0x000000d9, +0x00000000,0x00030047,0x000000ee,0x00000000, +0x00030047,0x000000fd,0x00000000,0x00030047, +0x00000119,0x00000000,0x00030047,0x0000011b, +0x00000000,0x00030047,0x0000011c,0x00000000, +0x00030047,0x00000124,0x00000000,0x00030047, +0x0000012b,0x00000000,0x00030047,0x0000025e, +0x00000000,0x00030047,0x00000265,0x00000000, +0x00030047,0x00000267,0x00000000,0x00030047, +0x00000268,0x00000000,0x00030047,0x00000269, +0x00000000,0x00030047,0x0000026a,0x00000000, +0x00030047,0x0000026d,0x00000000,0x00030047, +0x00000271,0x00000000,0x00030047,0x00000272, +0x00000000,0x00030047,0x00000273,0x00000000, +0x00030047,0x00000274,0x00000000,0x00030047, +0x00000275,0x00000000,0x00030047,0x00000277, +0x00000000,0x00030047,0x0000028e,0x00000000, +0x00030047,0x0000028f,0x00000000,0x00030047, +0x00000290,0x00000000,0x00030047,0x00000292, +0x00000000,0x00030047,0x00000296,0x00000000, +0x00030047,0x00000297,0x00000000,0x00030047, +0x00000298,0x00000000,0x00030047,0x00000299, +0x00000000,0x00030047,0x0000029b,0x00000000, +0x00030047,0x0000029f,0x00000000,0x00030047, +0x000002a2,0x00000000,0x00030047,0x000002a5, +0x00000000,0x00030047,0x000002a8,0x00000000, +0x00030047,0x000002ab,0x00000000,0x00030047, +0x000002ae,0x00000000,0x00030047,0x000002b1, +0x00000000,0x00030047,0x000002bb,0x00000000, +0x00040047,0x000002e6,0x0000001e,0x00000000, +0x00040047,0x000002e8,0x0000001e,0x00000000, +0x00030047,0x0000033a,0x00000000,0x00030047, +0x0000033b,0x00000000,0x00030047,0x0000033c, +0x00000000,0x00020013,0x00000002,0x00030021, +0x00000003,0x00000002,0x00030016,0x00000006, +0x00000020,0x00040017,0x00000007,0x00000006, +0x00000003,0x00040021,0x00000008,0x00000007, +0x00000007,0x00040020,0x0000000c,0x00000007, +0x00000007,0x00040021,0x0000000d,0x00000007, +0x0000000c,0x00040017,0x00000011,0x00000006, +0x00000002,0x00040020,0x00000012,0x00000007, +0x00000011,0x00040021,0x00000013,0x00000007, +0x00000012,0x00040017,0x00000017,0x00000006, +0x00000004,0x00040020,0x00000018,0x00000007, +0x00000017,0x00050021,0x00000019,0x00000017, +0x00000018,0x00000012,0x00040021,0x00000021, +0x00000017,0x00000017,0x00050021,0x00000034, +0x00000006,0x00000006,0x00000017,0x00020014, +0x00000039,0x00050021,0x0000003a,0x00000017, +0x00000006,0x00000039,0x00040015,0x0000003f, +0x00000020,0x00000000,0x000f0021,0x00000040, +0x00000006,0x0000003f,0x00000011,0x00000011, +0x00000006,0x00000006,0x00000006,0x00000006, 0x00000006,0x00000006,0x00000006,0x00000006, -0x00000006,0x00000006,0x00000006,0x000e0021, -0x00000047,0x00000006,0x00000037,0x0000001d, -0x0000001d,0x00000006,0x00000006,0x00000006, +0x00000006,0x000e0021,0x0000004f,0x00000006, +0x0000003f,0x00000011,0x00000011,0x00000006, 0x00000006,0x00000006,0x00000006,0x00000006, -0x00000006,0x00040021,0x00000055,0x00000007, -0x0000001e,0x00040020,0x00000059,0x00000007, -0x00000006,0x0004002b,0x00000037,0x0000005b, -0x00000000,0x0004002b,0x00000037,0x0000005d, -0x00000001,0x0004002b,0x00000037,0x0000005f, -0x00000002,0x0004002b,0x00000006,0x00000064, -0x38d1b717,0x00040018,0x0000006a,0x00000017, -0x00000004,0x000c001e,0x0000006b,0x0000006a, -0x00000017,0x00000017,0x00000006,0x00000006, -0x00000037,0x00000006,0x00000006,0x00000006, -0x00000006,0x00040020,0x0000006c,0x00000002, -0x0000006b,0x0004003b,0x0000006c,0x0000006d, -0x00000002,0x00040015,0x0000006e,0x00000020, -0x00000001,0x0004002b,0x0000006e,0x0000006f, -0x00000004,0x00040020,0x00000070,0x00000002, -0x00000006,0x0004002b,0x0000006e,0x00000073, -0x00000003,0x0004002b,0x00000006,0x0000007a, -0x3f800000,0x0004002b,0x00000006,0x0000008d, -0x3f560000,0x0004002b,0x00000006,0x0000008e, -0x4196d000,0x0004002b,0x00000006,0x00000091, -0x3e232000,0x0006002c,0x00000007,0x00000092, -0x00000091,0x00000091,0x00000091,0x0004002b, -0x00000006,0x00000097,0x41958000,0x0004002b, -0x00000006,0x0000009f,0x429db000,0x0006002c, -0x00000007,0x000000a0,0x0000009f,0x0000009f, -0x0000009f,0x0004002b,0x00000006,0x000000a8, -0x461c4000,0x00040018,0x000000af,0x00000007, -0x00000003,0x0004002b,0x00000006,0x000000b0, -0x3f209d8c,0x0004002b,0x00000006,0x000000b1, -0x3ea897a6,0x0004002b,0x00000006,0x000000b2, -0x3d31699a,0x0006002c,0x00000007,0x000000b3, -0x000000b0,0x000000b1,0x000000b2,0x0004002b, -0x00000006,0x000000b4,0x3d8d82ba,0x0004002b, -0x00000006,0x000000b5,0x3f6b66f9,0x0004002b, -0x00000006,0x000000b6,0x3c3a2454,0x0006002c, -0x00000007,0x000000b7,0x000000b4,0x000000b5, -0x000000b6,0x0004002b,0x00000006,0x000000b8, -0x3c8647ad,0x0004002b,0x00000006,0x000000b9, -0x3db44044,0x0004002b,0x00000006,0x000000ba, -0x3f6545b7,0x0006002c,0x00000007,0x000000bb, -0x000000b8,0x000000b9,0x000000ba,0x0006002c, -0x000000af,0x000000bc,0x000000b3,0x000000b7, -0x000000bb,0x0004002b,0x0000006e,0x000000be, -0x00000007,0x0004002b,0x00000006,0x000000c1, -0x00000000,0x0004002b,0x00000006,0x000000c6, -0x3d3b5fbd,0x0004002b,0x00000006,0x000000c7, -0x3f71184c,0x0004002b,0x00000006,0x000000c8, -0x3c4c6d2b,0x0006002c,0x00000007,0x000000c9, -0x000000c6,0x000000c7,0x000000c8,0x0004002b, -0x00000006,0x000000ca,0xba9eab51,0x0004002b, -0x00000006,0x000000cb,0x3c903679,0x0004002b, -0x00000006,0x000000cc,0x3f7bcdab,0x0006002c, -0x00000007,0x000000cd,0x000000ca,0x000000cb, -0x000000cc,0x0006002c,0x000000af,0x000000ce, -0x000000b3,0x000000c9,0x000000cd,0x0004002b, -0x00000037,0x000000f2,0x00000003,0x00090019, -0x000000fc,0x00000006,0x00000001,0x00000000, +0x00000006,0x00000006,0x00000006,0x00040020, +0x00000060,0x00000007,0x00000006,0x0004002b, +0x0000003f,0x00000062,0x00000000,0x0004002b, +0x0000003f,0x00000064,0x00000001,0x0004002b, +0x0000003f,0x00000066,0x00000002,0x0004002b, +0x00000006,0x0000006b,0x38d1b717,0x00040018, +0x00000071,0x00000017,0x00000004,0x000c001e, +0x00000072,0x00000071,0x00000017,0x00000017, +0x00000006,0x00000006,0x0000003f,0x00000006, +0x0000003f,0x00000006,0x00000006,0x00040020, +0x00000073,0x00000002,0x00000072,0x0004003b, +0x00000073,0x00000074,0x00000002,0x00040015, +0x00000075,0x00000020,0x00000001,0x0004002b, +0x00000075,0x00000076,0x00000004,0x00040020, +0x00000077,0x00000002,0x00000006,0x0004002b, +0x00000075,0x0000007a,0x00000003,0x0004002b, +0x00000006,0x00000081,0x3f800000,0x0004002b, +0x00000006,0x00000094,0x3f560000,0x0004002b, +0x00000006,0x00000095,0x4196d000,0x0004002b, +0x00000006,0x00000098,0x3e232000,0x0006002c, +0x00000007,0x00000099,0x00000098,0x00000098, +0x00000098,0x0004002b,0x00000006,0x0000009e, +0x41958000,0x0004002b,0x00000006,0x000000a6, +0x429db000,0x0006002c,0x00000007,0x000000a7, +0x000000a6,0x000000a6,0x000000a6,0x00090019, +0x000000ad,0x00000006,0x00000001,0x00000000, 0x00000000,0x00000000,0x00000001,0x00000000, -0x0003001b,0x000000fd,0x000000fc,0x00040020, -0x000000fe,0x00000000,0x000000fd,0x0004003b, -0x000000fe,0x000000ff,0x00000000,0x0004002b, -0x00000006,0x00000107,0x400ccccd,0x0006002c, -0x00000007,0x00000108,0x00000107,0x00000107, -0x00000107,0x0004002b,0x00000006,0x00000138, -0xc0400000,0x0004002b,0x00000006,0x00000139, -0x40400000,0x0004002b,0x00000006,0x0000013a, -0xbf800000,0x0007002c,0x00000017,0x0000013b, -0x0000007a,0x00000138,0x00000139,0x0000013a, -0x0004002b,0x00000006,0x0000013c,0xc0c00000, -0x0007002c,0x00000017,0x0000013d,0x000000c1, -0x00000139,0x0000013c,0x00000139,0x0007002c, -0x00000017,0x0000013e,0x000000c1,0x000000c1, -0x00000139,0x00000138,0x0007002c,0x00000017, -0x0000013f,0x000000c1,0x000000c1,0x000000c1, -0x0000007a,0x0007002c,0x0000006a,0x00000140, -0x0000013b,0x0000013d,0x0000013e,0x0000013f, -0x0007002c,0x00000017,0x00000152,0x000000c1, -0x0000007a,0x0000007a,0x0000007a,0x0004002b, -0x00000006,0x00000162,0x3f000000,0x0004002b, -0x00000006,0x0000016b,0x3fc00000,0x0004002b, -0x00000006,0x00000197,0x3ee8ba2f,0x0004002b, -0x00000006,0x0000019b,0x40200000,0x0004002b, -0x00000006,0x000001a9,0x40000000,0x0003002a, -0x00000031,0x000001e5,0x0004002b,0x0000006e, -0x000001f6,0x00000001,0x00040020,0x000001f7, -0x00000002,0x00000017,0x0004002b,0x0000006e, -0x000001fc,0x00000002,0x0005002c,0x0000001d, -0x00000202,0x00000162,0x00000162,0x0005002c, -0x0000001d,0x0000020c,0x0000007a,0x0000007a, -0x0005002c,0x0000001d,0x00000211,0x000000c1, -0x000000c1,0x00040020,0x00000219,0x00000007, -0x00000037,0x0004002b,0x00000006,0x0000021d, -0x40800000,0x0004001c,0x00000222,0x00000037, -0x000000f2,0x0004002b,0x00000037,0x00000223, -0x00000951,0x0004002b,0x00000037,0x00000224, -0x00000591,0x0004002b,0x00000037,0x00000225, -0x00000159,0x0006002c,0x00000222,0x00000226, -0x00000223,0x00000224,0x00000225,0x0004002b, -0x0000006e,0x00000227,0x00000005,0x00040020, -0x00000228,0x00000002,0x00000037,0x00040020, -0x0000022b,0x00000007,0x00000222,0x0004002b, -0x00000037,0x00000230,0x00000004,0x0004002b, -0x00000037,0x00000233,0x0000000f,0x0006002c, -0x00000007,0x0000023c,0x000000c1,0x000000c1, -0x000000c1,0x0004002b,0x00000006,0x0000023f, -0x3fa66666,0x0006002c,0x00000007,0x00000240, -0x0000023f,0x0000023f,0x0000023f,0x0006002c, -0x00000007,0x00000242,0x0000007a,0x0000007a, -0x0000007a,0x0004002b,0x00000006,0x00000244, -0x3ee66666,0x0006002c,0x00000007,0x00000245, -0x00000244,0x00000244,0x00000244,0x0004002b, -0x00000006,0x00000247,0x3f333333,0x0006002c, -0x00000007,0x00000248,0x00000247,0x00000247, -0x00000247,0x0004002b,0x00000006,0x0000024a, -0x3e99999a,0x0006002c,0x00000007,0x0000024b, -0x0000024a,0x0000024a,0x0000024a,0x0004001c, -0x00000274,0x00000007,0x000000f2,0x0006002c, -0x00000007,0x00000275,0x0000007a,0x000000c1, -0x000000c1,0x0006002c,0x00000007,0x00000276, -0x000000c1,0x0000007a,0x000000c1,0x0006002c, -0x00000007,0x00000277,0x000000c1,0x000000c1, -0x0000007a,0x0006002c,0x00000274,0x00000278, -0x00000275,0x00000276,0x00000277,0x00040020, -0x0000027a,0x00000007,0x00000274,0x0004002b, -0x0000006e,0x00000284,0x00000008,0x0004002b, -0x0000006e,0x0000028a,0x00000009,0x0004002b, -0x0000006e,0x00000291,0x00000006,0x0004002b, -0x00000006,0x00000299,0x44700000,0x00040020, -0x0000029e,0x00000003,0x00000017,0x0004003b, -0x0000029e,0x0000029f,0x00000003,0x00040020, -0x000002a0,0x00000001,0x0000001d,0x0004003b, -0x000002a0,0x000002a1,0x00000001,0x0007002c, -0x00000017,0x000002aa,0x0000007a,0x0000007a, -0x0000007a,0x0000007a,0x0004002b,0x00000006, -0x000002ce,0x3e59b3d0,0x0004002b,0x00000006, -0x000002cf,0x3f371759,0x0004002b,0x00000006, -0x000002d0,0x3d93dd98,0x0006002c,0x00000007, -0x000002d1,0x000002ce,0x000002cf,0x000002d0, -0x0004002b,0x00000006,0x000002d2,0x3e5cf9a0, -0x0004002b,0x00000006,0x000002d3,0x3f33e3c1, -0x0004002b,0x00000006,0x000002d4,0x3df7be12, -0x0006002c,0x00000007,0x000002d5,0x000002d2, -0x000002d3,0x000002d4,0x0004002b,0x00000006, -0x000002d6,0x3fd48af8,0x0004002b,0x00000006, -0x000002d7,0xbf166fa6,0x0004002b,0x00000006, -0x000002d8,0xbd953254,0x0006002c,0x00000007, -0x000002d9,0x000002d6,0x000002d7,0x000002d8, -0x0004002b,0x00000006,0x000002da,0xbdff1455, -0x0004002b,0x00000006,0x000002db,0x3f9102dd, -0x0004002b,0x00000006,0x000002dc,0xbc08cbec, -0x0006002c,0x00000007,0x000002dd,0x000002da, -0x000002db,0x000002dc,0x0004002b,0x00000006, -0x000002de,0xbc94b0fd,0x0004002b,0x00000006, -0x000002df,0xbdcdfc4f,0x0004002b,0x00000006, -0x000002e0,0x3f8f3289,0x0006002c,0x00000007, -0x000002e1,0x000002de,0x000002df,0x000002e0, -0x0006002c,0x000000af,0x000002e2,0x000002d9, -0x000002dd,0x000002e1,0x0004002b,0x00000006, -0x000002e3,0x3fd15326,0x0004002b,0x00000006, -0x000002e4,0xbf1210e0,0x0004002b,0x00000006, -0x000002e5,0xbd84a904,0x0006002c,0x00000007, -0x000002e6,0x000002e3,0x000002e4,0x000002e5, -0x0004002b,0x00000006,0x000002e7,0xbda2c691, -0x0004002b,0x00000006,0x000002e8,0x3f8b7e91, -0x0004002b,0x00000006,0x000002e9,0xbc2927ac, -0x0006002c,0x00000007,0x000002ea,0x000002e7, -0x000002e8,0x000002e9,0x0004002b,0x00000006, -0x000002eb,0x3b61206c,0x0004002b,0x00000006, -0x000002ec,0xbca58927,0x0004002b,0x00000006, -0x000002ed,0x3f822585,0x0006002c,0x00000007, -0x000002ee,0x000002eb,0x000002ec,0x000002ed, -0x0006002c,0x000000af,0x000002ef,0x000002e6, -0x000002ea,0x000002ee,0x0004002b,0x00000006, -0x000002f0,0x40490fdb,0x0004002b,0x00000006, -0x000002f1,0x402df854,0x0004002b,0x00000037, -0x000002f2,0x00000006,0x0004002b,0x00000037, -0x000002f3,0x00000005,0x0004002b,0x00000037, -0x000002f4,0x00000009,0x00050036,0x00000002, -0x00000004,0x00000000,0x00000003,0x000200f8, -0x00000005,0x0004003b,0x0000001e,0x000002a2, -0x00000007,0x0004003b,0x00000018,0x000002ab, -0x00000007,0x0004003b,0x0000001e,0x000002ac, -0x00000007,0x0004003b,0x00000018,0x000002b0, -0x00000007,0x0004003b,0x00000018,0x000002b8, -0x00000007,0x0004003b,0x0000001e,0x000002b9, -0x00000007,0x0004003b,0x00000018,0x000002c3, -0x00000007,0x0004003b,0x0000001e,0x000002c4, -0x00000007,0x0004003b,0x00000018,0x000002c7, -0x00000007,0x0004003b,0x00000018,0x000002ca, -0x00000007,0x0004003b,0x0000001e,0x000002cb, -0x00000007,0x00050041,0x00000070,0x00000285, -0x0000006d,0x00000284,0x0004003d,0x00000006, -0x00000286,0x00000285,0x000500ba,0x00000031, -0x00000287,0x00000286,0x000000c1,0x000300f7, -0x00000289,0x00000000,0x000400fa,0x00000287, -0x00000288,0x00000289,0x000200f8,0x00000288, -0x00050041,0x00000070,0x0000028b,0x0000006d, -0x0000028a,0x0004003d,0x00000006,0x0000028c, -0x0000028b,0x000500ba,0x00000031,0x0000028d, -0x0000028c,0x000000c1,0x000200f9,0x00000289, -0x000200f8,0x00000289,0x000700f5,0x00000031, -0x0000028e,0x00000287,0x00000005,0x0000028d, -0x00000288,0x000300f7,0x00000290,0x00000000, -0x000400fa,0x0000028e,0x0000028f,0x000002b2, -0x000200f8,0x0000028f,0x00050041,0x00000070, -0x00000292,0x0000006d,0x00000291,0x0004003d, -0x00000006,0x00000293,0x00000292,0x000500ba, -0x00000031,0x00000294,0x00000293,0x000000c1, -0x000300f7,0x00000296,0x00000000,0x000400fa, -0x00000294,0x00000295,0x00000296,0x000200f8, -0x00000295,0x00060041,0x00000070,0x00000297, -0x0000006d,0x000001fc,0x0000005d,0x0004003d, -0x00000006,0x00000298,0x00000297,0x000500ba, -0x00000031,0x0000029a,0x00000298,0x00000299, -0x000200f9,0x00000296,0x000200f8,0x00000296, -0x000700f5,0x00000031,0x0000029b,0x00000294, -0x0000028f,0x0000029a,0x00000295,0x000300f7, -0x0000029d,0x00000000,0x000400fa,0x0000029b, -0x0000029c,0x000002a9,0x000200f8,0x0000029c, -0x0004003d,0x0000001d,0x000002a3,0x000002a1, -0x0003003e,0x000002a2,0x000002a3,0x00050039, -0x00000007,0x000002a4,0x00000057,0x000002a2, -0x00050051,0x00000006,0x000002a5,0x000002a4, -0x00000000,0x00050051,0x00000006,0x000002a6, -0x000002a4,0x00000001,0x00050051,0x00000006, -0x000002a7,0x000002a4,0x00000002,0x00070050, -0x00000017,0x000002a8,0x000002a5,0x000002a6, -0x000002a7,0x0000007a,0x0003003e,0x0000029f, -0x000002a8,0x000200f9,0x0000029d,0x000200f8, -0x000002a9,0x0003003e,0x000002ab,0x000002aa, -0x0004003d,0x0000001d,0x000002ad,0x000002a1, -0x0003003e,0x000002ac,0x000002ad,0x00060039, -0x00000017,0x000002ae,0x00000026,0x000002ab, -0x000002ac,0x00050039,0x00000017,0x000002af, -0x0000002a,0x000002ae,0x0003003e,0x000002b0, -0x000002af,0x00050039,0x00000017,0x000002b1, -0x0000001b,0x000002b0,0x0003003e,0x0000029f, -0x000002b1,0x000200f9,0x0000029d,0x000200f8, -0x0000029d,0x000200f9,0x00000290,0x000200f8, -0x000002b2,0x00050041,0x00000070,0x000002b3, -0x0000006d,0x00000284,0x0004003d,0x00000006, -0x000002b4,0x000002b3,0x000500ba,0x00000031, -0x000002b5,0x000002b4,0x000000c1,0x000300f7, -0x000002b7,0x00000000,0x000400fa,0x000002b5, -0x000002b6,0x000002bd,0x000200f8,0x000002b6, -0x0003003e,0x000002b8,0x000002aa,0x0004003d, -0x0000001d,0x000002ba,0x000002a1,0x0003003e, -0x000002b9,0x000002ba,0x00060039,0x00000017, -0x000002bb,0x00000026,0x000002b8,0x000002b9, -0x00050039,0x00000017,0x000002bc,0x0000002a, -0x000002bb,0x0003003e,0x0000029f,0x000002bc, -0x000200f9,0x000002b7,0x000200f8,0x000002bd, -0x00050041,0x00000070,0x000002be,0x0000006d, -0x0000028a,0x0004003d,0x00000006,0x000002bf, -0x000002be,0x000500ba,0x00000031,0x000002c0, -0x000002bf,0x000000c1,0x000300f7,0x000002c2, -0x00000000,0x000400fa,0x000002c0,0x000002c1, -0x000002c9,0x000200f8,0x000002c1,0x0003003e, -0x000002c3,0x000002aa,0x0004003d,0x0000001d, -0x000002c5,0x000002a1,0x0003003e,0x000002c4, -0x000002c5,0x00060039,0x00000017,0x000002c6, -0x00000026,0x000002c3,0x000002c4,0x0003003e, -0x000002c7,0x000002c6,0x00050039,0x00000017, -0x000002c8,0x0000001b,0x000002c7,0x0003003e, -0x0000029f,0x000002c8,0x000200f9,0x000002c2, -0x000200f8,0x000002c9,0x0003003e,0x000002ca, -0x000002aa,0x0004003d,0x0000001d,0x000002cc, -0x000002a1,0x0003003e,0x000002cb,0x000002cc, -0x00060039,0x00000017,0x000002cd,0x00000026, -0x000002ca,0x000002cb,0x0003003e,0x0000029f, -0x000002cd,0x000200f9,0x000002c2,0x000200f8, -0x000002c2,0x000200f9,0x000002b7,0x000200f8, -0x000002b7,0x000200f9,0x00000290,0x000200f8, -0x00000290,0x000100fd,0x00010038,0x00050036, -0x00000007,0x0000000a,0x00000000,0x00000008, -0x00030037,0x00000007,0x00000009,0x000200f8, -0x0000000b,0x0004003b,0x00000059,0x0000005a, -0x00000007,0x0004003b,0x00000059,0x00000069, -0x00000007,0x0004003b,0x00000059,0x00000077, -0x00000007,0x0004003b,0x00000059,0x00000079, -0x00000007,0x0004003b,0x00000059,0x00000081, -0x00000007,0x00050051,0x00000006,0x0000005c, -0x00000009,0x00000000,0x00050051,0x00000006, -0x0000005e,0x00000009,0x00000001,0x00050051, -0x00000006,0x00000060,0x00000009,0x00000002, -0x0007000c,0x00000006,0x00000061,0x00000001, -0x00000028,0x0000005e,0x00000060,0x0007000c, -0x00000006,0x00000062,0x00000001,0x00000028, -0x0000005c,0x00000061,0x0003003e,0x0000005a, -0x00000062,0x0004003d,0x00000006,0x00000063, -0x0000005a,0x000500b8,0x00000031,0x00000065, -0x00000063,0x00000064,0x000300f7,0x00000067, -0x00000000,0x000400fa,0x00000065,0x00000066, -0x00000067,0x000200f8,0x00000066,0x000200fe, -0x00000009,0x000200f8,0x00000067,0x00050041, -0x00000070,0x00000071,0x0000006d,0x0000006f, -0x0004003d,0x00000006,0x00000072,0x00000071, -0x00050041,0x00000070,0x00000074,0x0000006d, -0x00000073,0x0004003d,0x00000006,0x00000075, -0x00000074,0x00050088,0x00000006,0x00000076, -0x00000072,0x00000075,0x0003003e,0x00000069, -0x00000076,0x0004003d,0x00000006,0x00000078, -0x0000005a,0x0003003e,0x00000077,0x00000078, -0x0004003d,0x00000006,0x0000007b,0x0000005a, -0x0004003d,0x00000006,0x0000007c,0x00000069, -0x00050088,0x00000006,0x0000007d,0x0000007a, -0x0000007c,0x00050083,0x00000006,0x0000007e, -0x0000007a,0x0000007d,0x00050085,0x00000006, -0x0000007f,0x0000007b,0x0000007e,0x00050083, -0x00000006,0x00000080,0x0000007a,0x0000007f, -0x0003003e,0x00000079,0x00000080,0x0004003d, -0x00000006,0x00000082,0x00000077,0x0004003d, -0x00000006,0x00000083,0x00000079,0x0007000c, -0x00000006,0x00000084,0x00000001,0x00000028, -0x00000083,0x00000064,0x00050088,0x00000006, -0x00000085,0x00000082,0x00000084,0x0003003e, -0x00000081,0x00000085,0x0004003d,0x00000006, -0x00000086,0x00000081,0x0004003d,0x00000006, -0x00000087,0x0000005a,0x00050088,0x00000006, -0x00000088,0x00000086,0x00000087,0x0005008e, -0x00000007,0x00000089,0x00000009,0x00000088, -0x000200fe,0x00000089,0x00010038,0x00050036, -0x00000007,0x0000000f,0x00000000,0x0000000d, -0x00030037,0x0000000c,0x0000000e,0x000200f8, -0x00000010,0x0004003b,0x0000000c,0x0000008c, -0x00000007,0x0004003d,0x00000007,0x0000008f, -0x0000000e,0x0006000c,0x00000007,0x00000090, -0x00000001,0x00000004,0x0000008f,0x0007000c, -0x00000007,0x00000093,0x00000001,0x0000001a, -0x00000090,0x00000092,0x0005008e,0x00000007, -0x00000094,0x00000093,0x0000008e,0x00060050, -0x00000007,0x00000095,0x0000008d,0x0000008d, -0x0000008d,0x00050081,0x00000007,0x00000096, -0x00000095,0x00000094,0x0004003d,0x00000007, -0x00000098,0x0000000e,0x0006000c,0x00000007, -0x00000099,0x00000001,0x00000004,0x00000098, -0x0007000c,0x00000007,0x0000009a,0x00000001, -0x0000001a,0x00000099,0x00000092,0x0005008e, -0x00000007,0x0000009b,0x0000009a,0x00000097, -0x00060050,0x00000007,0x0000009c,0x0000007a, -0x0000007a,0x0000007a,0x00050081,0x00000007, -0x0000009d,0x0000009c,0x0000009b,0x00050088, -0x00000007,0x0000009e,0x00000096,0x0000009d, -0x0007000c,0x00000007,0x000000a1,0x00000001, -0x0000001a,0x0000009e,0x000000a0,0x0003003e, -0x0000008c,0x000000a1,0x0004003d,0x00000007, -0x000000a2,0x0000008c,0x000200fe,0x000000a2, -0x00010038,0x00050036,0x00000007,0x00000012, -0x00000000,0x0000000d,0x00030037,0x0000000c, -0x00000011,0x000200f8,0x00000013,0x0004003d, -0x00000007,0x000000a5,0x00000011,0x00050041, -0x00000070,0x000000a6,0x0000006d,0x00000073, -0x0004003d,0x00000006,0x000000a7,0x000000a6, -0x00050088,0x00000006,0x000000a9,0x000000a7, -0x000000a8,0x0005008e,0x00000007,0x000000aa, -0x000000a5,0x000000a9,0x000200fe,0x000000aa, -0x00010038,0x00050036,0x00000007,0x00000015, -0x00000000,0x0000000d,0x00030037,0x0000000c, -0x00000014,0x000200f8,0x00000016,0x0004003b, -0x0000000c,0x000000ad,0x00000007,0x0004003b, -0x0000000c,0x000000d0,0x00000007,0x0004003b, -0x0000000c,0x000000d1,0x00000007,0x0004003b, -0x0000000c,0x000000d7,0x00000007,0x0004003d, -0x00000007,0x000000ae,0x00000014,0x00050090, -0x00000007,0x000000bd,0x000000ae,0x000000bc, -0x0003003e,0x000000ad,0x000000bd,0x00050041, -0x00000070,0x000000bf,0x0000006d,0x000000be, -0x0004003d,0x00000006,0x000000c0,0x000000bf, -0x000500ba,0x00000031,0x000000c2,0x000000c0, -0x000000c1,0x000300f7,0x000000c4,0x00000000, -0x000400fa,0x000000c2,0x000000c3,0x000000c4, -0x000200f8,0x000000c3,0x0004003d,0x00000007, -0x000000c5,0x00000014,0x00050090,0x00000007, -0x000000cf,0x000000c5,0x000000ce,0x0003003e, -0x000000ad,0x000000cf,0x000200f9,0x000000c4, -0x000200f8,0x000000c4,0x0004003d,0x00000007, -0x000000d2,0x000000ad,0x0003003e,0x000000d1, -0x000000d2,0x00050039,0x00000007,0x000000d3, -0x00000012,0x000000d1,0x0003003e,0x000000d0, -0x000000d3,0x0004003d,0x00000007,0x000000d4, -0x000000d0,0x00060050,0x00000007,0x000000d5, -0x000000c1,0x000000c1,0x000000c1,0x0007000c, -0x00000007,0x000000d6,0x00000001,0x00000028, -0x000000d4,0x000000d5,0x0003003e,0x000000d7, -0x000000d6,0x00050039,0x00000007,0x000000d8, -0x0000000f,0x000000d7,0x000200fe,0x000000d8, -0x00010038,0x00050036,0x00000017,0x0000001b, +0x0003001b,0x000000ae,0x000000ad,0x00040020, +0x000000af,0x00000000,0x000000ae,0x0004003b, +0x000000af,0x000000b0,0x00000000,0x0004002b, +0x00000006,0x000000b8,0x400e147b,0x0006002c, +0x00000007,0x000000b9,0x000000b8,0x000000b8, +0x000000b8,0x0004002b,0x0000003f,0x000000ca, +0x00000003,0x00040020,0x000000d3,0x00000007, +0x0000003f,0x0004002b,0x00000075,0x000000d5, +0x00000007,0x00040020,0x000000d6,0x00000002, +0x0000003f,0x00040018,0x000000de,0x00000007, +0x00000003,0x0004002b,0x00000006,0x000000df, +0x3f209d8c,0x0004002b,0x00000006,0x000000e0, +0x3ea897a6,0x0004002b,0x00000006,0x000000e1, +0x3d31699a,0x0006002c,0x00000007,0x000000e2, +0x000000df,0x000000e0,0x000000e1,0x0004002b, +0x00000006,0x000000e3,0x3d8d82ba,0x0004002b, +0x00000006,0x000000e4,0x3f6b66f9,0x0004002b, +0x00000006,0x000000e5,0x3c3a2454,0x0006002c, +0x00000007,0x000000e6,0x000000e3,0x000000e4, +0x000000e5,0x0004002b,0x00000006,0x000000e7, +0x3c8647ad,0x0004002b,0x00000006,0x000000e8, +0x3db44044,0x0004002b,0x00000006,0x000000e9, +0x3f6545b7,0x0006002c,0x00000007,0x000000ea, +0x000000e7,0x000000e8,0x000000e9,0x0006002c, +0x000000de,0x000000eb,0x000000e2,0x000000e6, +0x000000ea,0x0004002b,0x00000006,0x000000f2, +0x3d3b5fbd,0x0004002b,0x00000006,0x000000f3, +0x3f71184c,0x0004002b,0x00000006,0x000000f4, +0x3c4c6d2b,0x0006002c,0x00000007,0x000000f5, +0x000000f2,0x000000f3,0x000000f4,0x0004002b, +0x00000006,0x000000f6,0xba9eab51,0x0004002b, +0x00000006,0x000000f7,0x3c903679,0x0004002b, +0x00000006,0x000000f8,0x3f7bcdab,0x0006002c, +0x00000007,0x000000f9,0x000000f6,0x000000f7, +0x000000f8,0x0006002c,0x000000de,0x000000fa, +0x000000e2,0x000000f5,0x000000f9,0x0004002b, +0x00000006,0x00000103,0x3fabfa5d,0x0004002b, +0x00000006,0x00000104,0xbe9079e6,0x0004002b, +0x00000006,0x00000105,0xbd7b7d85,0x0006002c, +0x00000007,0x00000106,0x00000103,0x00000104, +0x00000105,0x0004002b,0x00000006,0x00000107, +0xbd85ba6f,0x0004002b,0x00000006,0x00000108, +0x3f89b36c,0x0004002b,0x00000006,0x00000109, +0xbc2bde40,0x0006002c,0x00000007,0x0000010a, +0x00000107,0x00000108,0x00000109,0x0004002b, +0x00000006,0x0000010b,0x3b38f14e,0x0004002b, +0x00000006,0x0000010c,0xbca08bfc,0x0004002b, +0x00000006,0x0000010d,0x3f8225c0,0x0006002c, +0x00000007,0x0000010e,0x0000010b,0x0000010c, +0x0000010d,0x0006002c,0x000000de,0x0000010f, +0x00000106,0x0000010a,0x0000010e,0x0004002b, +0x00000006,0x00000113,0x00000000,0x0006002c, +0x00000007,0x00000114,0x00000113,0x00000113, +0x00000113,0x0004002b,0x00000006,0x0000014e, +0x3ed55555,0x0006002c,0x00000007,0x0000014f, +0x0000014e,0x0000014e,0x0000014e,0x0004002b, +0x00000006,0x00000156,0x461c4000,0x0004002b, +0x00000006,0x0000017c,0xc0400000,0x0004002b, +0x00000006,0x0000017d,0x40400000,0x0004002b, +0x00000006,0x0000017e,0xbf800000,0x0007002c, +0x00000017,0x0000017f,0x00000081,0x0000017c, +0x0000017d,0x0000017e,0x0004002b,0x00000006, +0x00000180,0xc0c00000,0x0007002c,0x00000017, +0x00000181,0x00000113,0x0000017d,0x00000180, +0x0000017d,0x0007002c,0x00000017,0x00000182, +0x00000113,0x00000113,0x0000017d,0x0000017c, +0x0007002c,0x00000017,0x00000183,0x00000113, +0x00000113,0x00000113,0x00000081,0x0007002c, +0x00000071,0x00000184,0x0000017f,0x00000181, +0x00000182,0x00000183,0x0007002c,0x00000017, +0x00000196,0x00000113,0x00000081,0x00000081, +0x00000081,0x0004002b,0x00000006,0x000001a6, +0x3f000000,0x0004002b,0x00000006,0x000001af, +0x3fc00000,0x0004002b,0x00000006,0x000001e0, +0x40200000,0x0004002b,0x00000006,0x000001ee, +0x40000000,0x0003002a,0x00000039,0x0000022a, +0x0004002b,0x00000075,0x0000023b,0x00000001, +0x00040020,0x0000023c,0x00000002,0x00000017, +0x0004002b,0x00000075,0x00000241,0x00000002, +0x0005002c,0x00000011,0x00000247,0x000001a6, +0x000001a6,0x0005002c,0x00000011,0x00000251, +0x00000081,0x00000081,0x0005002c,0x00000011, +0x00000256,0x00000113,0x00000113,0x0004002b, +0x00000006,0x00000261,0x40800000,0x0004001c, +0x00000266,0x0000003f,0x000000ca,0x0004002b, +0x0000003f,0x00000267,0x00000951,0x0004002b, +0x0000003f,0x00000268,0x00000591,0x0004002b, +0x0000003f,0x00000269,0x00000159,0x0006002c, +0x00000266,0x0000026a,0x00000267,0x00000268, +0x00000269,0x0004002b,0x00000075,0x0000026b, +0x00000005,0x00040020,0x0000026e,0x00000007, +0x00000266,0x0004002b,0x0000003f,0x00000273, +0x00000004,0x0004002b,0x0000003f,0x00000276, +0x0000000f,0x0004002b,0x00000006,0x00000281, +0x3fa66666,0x0006002c,0x00000007,0x00000282, +0x00000281,0x00000281,0x00000281,0x0006002c, +0x00000007,0x00000284,0x00000081,0x00000081, +0x00000081,0x0004002b,0x00000006,0x00000286, +0x3ee66666,0x0006002c,0x00000007,0x00000287, +0x00000286,0x00000286,0x00000286,0x0004002b, +0x00000006,0x00000289,0x3f666666,0x0006002c, +0x00000007,0x0000028a,0x00000289,0x00000289, +0x00000289,0x0004002b,0x00000006,0x0000028c, +0x3f19999a,0x0006002c,0x00000007,0x0000028d, +0x0000028c,0x0000028c,0x0000028c,0x0004001c, +0x000002b6,0x00000007,0x000000ca,0x0006002c, +0x00000007,0x000002b7,0x00000081,0x00000113, +0x00000113,0x0006002c,0x00000007,0x000002b8, +0x00000113,0x00000081,0x00000113,0x0006002c, +0x00000007,0x000002b9,0x00000113,0x00000113, +0x00000081,0x0006002c,0x000002b6,0x000002ba, +0x000002b7,0x000002b8,0x000002b9,0x00040020, +0x000002bc,0x00000007,0x000002b6,0x0004002b, +0x00000006,0x000002c4,0x4019999a,0x0006002c, +0x00000007,0x000002c5,0x000002c4,0x000002c4, +0x000002c4,0x0004002b,0x00000075,0x000002cb, +0x00000008,0x0004002b,0x00000075,0x000002d1, +0x00000009,0x0004002b,0x00000075,0x000002d8, +0x00000006,0x0004002b,0x00000006,0x000002e0, +0x44700000,0x00040020,0x000002e5,0x00000003, +0x00000017,0x0004003b,0x000002e5,0x000002e6, +0x00000003,0x00040020,0x000002e7,0x00000001, +0x00000011,0x0004003b,0x000002e7,0x000002e8, +0x00000001,0x0007002c,0x00000017,0x000002f1, +0x00000081,0x00000081,0x00000081,0x00000081, +0x0004002b,0x00000006,0x00000316,0x3e59b3d0, +0x0004002b,0x00000006,0x00000317,0x3f371759, +0x0004002b,0x00000006,0x00000318,0x3d93dd98, +0x0006002c,0x00000007,0x00000319,0x00000316, +0x00000317,0x00000318,0x0004002b,0x00000006, +0x0000031a,0x3e5cf9a0,0x0004002b,0x00000006, +0x0000031b,0x3f33e3c1,0x0004002b,0x00000006, +0x0000031c,0x3df7be12,0x0006002c,0x00000007, +0x0000031d,0x0000031a,0x0000031b,0x0000031c, +0x0004002b,0x00000006,0x0000031e,0x3fd48af8, +0x0004002b,0x00000006,0x0000031f,0xbf166fa6, +0x0004002b,0x00000006,0x00000320,0xbd953254, +0x0006002c,0x00000007,0x00000321,0x0000031e, +0x0000031f,0x00000320,0x0004002b,0x00000006, +0x00000322,0xbdff1455,0x0004002b,0x00000006, +0x00000323,0x3f9102dd,0x0004002b,0x00000006, +0x00000324,0xbc08cbec,0x0006002c,0x00000007, +0x00000325,0x00000322,0x00000323,0x00000324, +0x0004002b,0x00000006,0x00000326,0xbc94b0fd, +0x0004002b,0x00000006,0x00000327,0xbdcdfc4f, +0x0004002b,0x00000006,0x00000328,0x3f8f3289, +0x0006002c,0x00000007,0x00000329,0x00000326, +0x00000327,0x00000328,0x0006002c,0x000000de, +0x0000032a,0x00000321,0x00000325,0x00000329, +0x0004002b,0x00000006,0x0000032b,0x3fd15326, +0x0004002b,0x00000006,0x0000032c,0xbf1210e0, +0x0004002b,0x00000006,0x0000032d,0xbd84a904, +0x0006002c,0x00000007,0x0000032e,0x0000032b, +0x0000032c,0x0000032d,0x0004002b,0x00000006, +0x0000032f,0xbda2c691,0x0004002b,0x00000006, +0x00000330,0x3f8b7e91,0x0004002b,0x00000006, +0x00000331,0xbc2927ac,0x0006002c,0x00000007, +0x00000332,0x0000032f,0x00000330,0x00000331, +0x0004002b,0x00000006,0x00000333,0x3b61206c, +0x0004002b,0x00000006,0x00000334,0xbca58927, +0x0004002b,0x00000006,0x00000335,0x3f822585, +0x0006002c,0x00000007,0x00000336,0x00000333, +0x00000334,0x00000335,0x0006002c,0x000000de, +0x00000337,0x0000032e,0x00000332,0x00000336, +0x0004002b,0x00000006,0x00000338,0x40490fdb, +0x0004002b,0x00000006,0x00000339,0x402df854, +0x0004002b,0x0000003f,0x0000033a,0x00000006, +0x0004002b,0x0000003f,0x0000033b,0x00000005, +0x0004002b,0x0000003f,0x0000033c,0x00000009, +0x00050036,0x00000002,0x00000004,0x00000000, +0x00000003,0x000200f8,0x00000005,0x0004003b, +0x00000012,0x000002e9,0x00000007,0x0004003b, +0x00000018,0x000002f2,0x00000007,0x0004003b, +0x00000012,0x000002f3,0x00000007,0x0004003b, +0x00000018,0x000002ff,0x00000007,0x0004003b, +0x00000012,0x00000300,0x00000007,0x0004003b, +0x00000018,0x0000030b,0x00000007,0x0004003b, +0x00000012,0x0000030c,0x00000007,0x0004003b, +0x00000018,0x00000312,0x00000007,0x0004003b, +0x00000012,0x00000313,0x00000007,0x00050041, +0x00000077,0x000002cc,0x00000074,0x000002cb, +0x0004003d,0x00000006,0x000002cd,0x000002cc, +0x000500ba,0x00000039,0x000002ce,0x000002cd, +0x00000113,0x000300f7,0x000002d0,0x00000000, +0x000400fa,0x000002ce,0x000002cf,0x000002d0, +0x000200f8,0x000002cf,0x00050041,0x00000077, +0x000002d2,0x00000074,0x000002d1,0x0004003d, +0x00000006,0x000002d3,0x000002d2,0x000500ba, +0x00000039,0x000002d4,0x000002d3,0x00000113, +0x000200f9,0x000002d0,0x000200f8,0x000002d0, +0x000700f5,0x00000039,0x000002d5,0x000002ce, +0x00000005,0x000002d4,0x000002cf,0x000300f7, +0x000002d7,0x00000000,0x000400fa,0x000002d5, +0x000002d6,0x000002f9,0x000200f8,0x000002d6, +0x00050041,0x00000077,0x000002d9,0x00000074, +0x000002d8,0x0004003d,0x00000006,0x000002da, +0x000002d9,0x000500ba,0x00000039,0x000002db, +0x000002da,0x00000113,0x000300f7,0x000002dd, +0x00000000,0x000400fa,0x000002db,0x000002dc, +0x000002dd,0x000200f8,0x000002dc,0x00060041, +0x00000077,0x000002de,0x00000074,0x00000241, +0x00000064,0x0004003d,0x00000006,0x000002df, +0x000002de,0x000500ba,0x00000039,0x000002e1, +0x000002df,0x000002e0,0x000200f9,0x000002dd, +0x000200f8,0x000002dd,0x000700f5,0x00000039, +0x000002e2,0x000002db,0x000002d6,0x000002e1, +0x000002dc,0x000300f7,0x000002e4,0x00000000, +0x000400fa,0x000002e2,0x000002e3,0x000002f0, +0x000200f8,0x000002e3,0x0004003d,0x00000011, +0x000002ea,0x000002e8,0x0003003e,0x000002e9, +0x000002ea,0x00050039,0x00000007,0x000002eb, +0x0000005e,0x000002e9,0x00050051,0x00000006, +0x000002ec,0x000002eb,0x00000000,0x00050051, +0x00000006,0x000002ed,0x000002eb,0x00000001, +0x00050051,0x00000006,0x000002ee,0x000002eb, +0x00000002,0x00070050,0x00000017,0x000002ef, +0x000002ec,0x000002ed,0x000002ee,0x00000081, +0x0003003e,0x000002e6,0x000002ef,0x000200f9, +0x000002e4,0x000200f8,0x000002f0,0x0003003e, +0x000002f2,0x000002f1,0x0004003d,0x00000011, +0x000002f4,0x000002e8,0x0003003e,0x000002f3, +0x000002f4,0x00060039,0x00000017,0x000002f5, +0x0000001c,0x000002f2,0x000002f3,0x00050039, +0x00000017,0x000002f6,0x00000023,0x000002f5, +0x00050039,0x00000017,0x000002f7,0x00000029, +0x000002f6,0x00050039,0x00000017,0x000002f8, +0x00000032,0x000002f7,0x0003003e,0x000002e6, +0x000002f8,0x000200f9,0x000002e4,0x000200f8, +0x000002e4,0x000200f9,0x000002d7,0x000200f8, +0x000002f9,0x00050041,0x00000077,0x000002fa, +0x00000074,0x000002cb,0x0004003d,0x00000006, +0x000002fb,0x000002fa,0x000500ba,0x00000039, +0x000002fc,0x000002fb,0x00000113,0x000300f7, +0x000002fe,0x00000000,0x000400fa,0x000002fc, +0x000002fd,0x00000305,0x000200f8,0x000002fd, +0x0003003e,0x000002ff,0x000002f1,0x0004003d, +0x00000011,0x00000301,0x000002e8,0x0003003e, +0x00000300,0x00000301,0x00060039,0x00000017, +0x00000302,0x0000001c,0x000002ff,0x00000300, +0x00050039,0x00000017,0x00000303,0x00000023, +0x00000302,0x00050039,0x00000017,0x00000304, +0x00000029,0x00000303,0x0003003e,0x000002e6, +0x00000304,0x000200f9,0x000002fe,0x000200f8, +0x00000305,0x00050041,0x00000077,0x00000306, +0x00000074,0x000002d1,0x0004003d,0x00000006, +0x00000307,0x00000306,0x000500ba,0x00000039, +0x00000308,0x00000307,0x00000113,0x000300f7, +0x0000030a,0x00000000,0x000400fa,0x00000308, +0x00000309,0x00000311,0x000200f8,0x00000309, +0x0003003e,0x0000030b,0x000002f1,0x0004003d, +0x00000011,0x0000030d,0x000002e8,0x0003003e, +0x0000030c,0x0000030d,0x00060039,0x00000017, +0x0000030e,0x0000001c,0x0000030b,0x0000030c, +0x00050039,0x00000017,0x0000030f,0x00000023, +0x0000030e,0x00050039,0x00000017,0x00000310, +0x00000032,0x0000030f,0x0003003e,0x000002e6, +0x00000310,0x000200f9,0x0000030a,0x000200f8, +0x00000311,0x0003003e,0x00000312,0x000002f1, +0x0004003d,0x00000011,0x00000314,0x000002e8, +0x0003003e,0x00000313,0x00000314,0x00060039, +0x00000017,0x00000315,0x0000001c,0x00000312, +0x00000313,0x0003003e,0x000002e6,0x00000315, +0x000200f9,0x0000030a,0x000200f8,0x0000030a, +0x000200f9,0x000002fe,0x000200f8,0x000002fe, +0x000200f9,0x000002d7,0x000200f8,0x000002d7, +0x000100fd,0x00010038,0x00050036,0x00000007, +0x0000000a,0x00000000,0x00000008,0x00030037, +0x00000007,0x00000009,0x000200f8,0x0000000b, +0x0004003b,0x00000060,0x00000061,0x00000007, +0x0004003b,0x00000060,0x00000070,0x00000007, +0x0004003b,0x00000060,0x0000007e,0x00000007, +0x0004003b,0x00000060,0x00000080,0x00000007, +0x0004003b,0x00000060,0x00000088,0x00000007, +0x00050051,0x00000006,0x00000063,0x00000009, +0x00000000,0x00050051,0x00000006,0x00000065, +0x00000009,0x00000001,0x00050051,0x00000006, +0x00000067,0x00000009,0x00000002,0x0007000c, +0x00000006,0x00000068,0x00000001,0x00000028, +0x00000065,0x00000067,0x0007000c,0x00000006, +0x00000069,0x00000001,0x00000028,0x00000063, +0x00000068,0x0003003e,0x00000061,0x00000069, +0x0004003d,0x00000006,0x0000006a,0x00000061, +0x000500b8,0x00000039,0x0000006c,0x0000006a, +0x0000006b,0x000300f7,0x0000006e,0x00000000, +0x000400fa,0x0000006c,0x0000006d,0x0000006e, +0x000200f8,0x0000006d,0x000200fe,0x00000009, +0x000200f8,0x0000006e,0x00050041,0x00000077, +0x00000078,0x00000074,0x00000076,0x0004003d, +0x00000006,0x00000079,0x00000078,0x00050041, +0x00000077,0x0000007b,0x00000074,0x0000007a, +0x0004003d,0x00000006,0x0000007c,0x0000007b, +0x00050088,0x00000006,0x0000007d,0x00000079, +0x0000007c,0x0003003e,0x00000070,0x0000007d, +0x0004003d,0x00000006,0x0000007f,0x00000061, +0x0003003e,0x0000007e,0x0000007f,0x0004003d, +0x00000006,0x00000082,0x00000061,0x0004003d, +0x00000006,0x00000083,0x00000070,0x00050088, +0x00000006,0x00000084,0x00000081,0x00000083, +0x00050083,0x00000006,0x00000085,0x00000081, +0x00000084,0x00050085,0x00000006,0x00000086, +0x00000082,0x00000085,0x00050083,0x00000006, +0x00000087,0x00000081,0x00000086,0x0003003e, +0x00000080,0x00000087,0x0004003d,0x00000006, +0x00000089,0x0000007e,0x0004003d,0x00000006, +0x0000008a,0x00000080,0x0007000c,0x00000006, +0x0000008b,0x00000001,0x00000028,0x0000008a, +0x0000006b,0x00050088,0x00000006,0x0000008c, +0x00000089,0x0000008b,0x0003003e,0x00000088, +0x0000008c,0x0004003d,0x00000006,0x0000008d, +0x00000088,0x0004003d,0x00000006,0x0000008e, +0x00000061,0x00050088,0x00000006,0x0000008f, +0x0000008d,0x0000008e,0x0005008e,0x00000007, +0x00000090,0x00000009,0x0000008f,0x000200fe, +0x00000090,0x00010038,0x00050036,0x00000007, +0x0000000f,0x00000000,0x0000000d,0x00030037, +0x0000000c,0x0000000e,0x000200f8,0x00000010, +0x0004003b,0x0000000c,0x00000093,0x00000007, +0x0004003d,0x00000007,0x00000096,0x0000000e, +0x0006000c,0x00000007,0x00000097,0x00000001, +0x00000004,0x00000096,0x0007000c,0x00000007, +0x0000009a,0x00000001,0x0000001a,0x00000097, +0x00000099,0x0005008e,0x00000007,0x0000009b, +0x0000009a,0x00000095,0x00060050,0x00000007, +0x0000009c,0x00000094,0x00000094,0x00000094, +0x00050081,0x00000007,0x0000009d,0x0000009c, +0x0000009b,0x0004003d,0x00000007,0x0000009f, +0x0000000e,0x0006000c,0x00000007,0x000000a0, +0x00000001,0x00000004,0x0000009f,0x0007000c, +0x00000007,0x000000a1,0x00000001,0x0000001a, +0x000000a0,0x00000099,0x0005008e,0x00000007, +0x000000a2,0x000000a1,0x0000009e,0x00060050, +0x00000007,0x000000a3,0x00000081,0x00000081, +0x00000081,0x00050081,0x00000007,0x000000a4, +0x000000a3,0x000000a2,0x00050088,0x00000007, +0x000000a5,0x0000009d,0x000000a4,0x0007000c, +0x00000007,0x000000a8,0x00000001,0x0000001a, +0x000000a5,0x000000a7,0x0003003e,0x00000093, +0x000000a8,0x0004003d,0x00000007,0x000000a9, +0x00000093,0x000200fe,0x000000a9,0x00010038, +0x00050036,0x00000007,0x00000015,0x00000000, +0x00000013,0x00030037,0x00000012,0x00000014, +0x000200f8,0x00000016,0x0004003b,0x00000018, +0x000000ac,0x00000007,0x0004003b,0x0000000c, +0x000000b4,0x00000007,0x0004003d,0x000000ae, +0x000000b1,0x000000b0,0x0004003d,0x00000011, +0x000000b2,0x00000014,0x00050057,0x00000017, +0x000000b3,0x000000b1,0x000000b2,0x0003003e, +0x000000ac,0x000000b3,0x0004003d,0x00000017, +0x000000b5,0x000000ac,0x0008004f,0x00000007, +0x000000b6,0x000000b5,0x000000b5,0x00000000, +0x00000001,0x00000002,0x0006000c,0x00000007, +0x000000b7,0x00000001,0x00000004,0x000000b6, +0x0007000c,0x00000007,0x000000ba,0x00000001, +0x0000001a,0x000000b7,0x000000b9,0x0003003e, +0x000000b4,0x000000ba,0x0004003d,0x00000007, +0x000000bb,0x000000b4,0x000200fe,0x000000bb, +0x00010038,0x00050036,0x00000017,0x0000001c, 0x00000000,0x00000019,0x00030037,0x00000018, -0x0000001a,0x000200f8,0x0000001c,0x0004003b, -0x0000000c,0x000000db,0x00000007,0x0004003b, -0x0000000c,0x000000e7,0x00000007,0x0004003b, -0x0000000c,0x000000e8,0x00000007,0x0004003b, -0x0000000c,0x000000eb,0x00000007,0x0004003b, -0x0000000c,0x000000ef,0x00000007,0x0004003d, -0x00000017,0x000000dc,0x0000001a,0x0008004f, -0x00000007,0x000000dd,0x000000dc,0x000000dc, +0x0000001a,0x00030037,0x00000012,0x0000001b, +0x000200f8,0x0000001d,0x0004003b,0x00000018, +0x000000be,0x00000007,0x0004003b,0x0000000c, +0x000000c4,0x00000007,0x0004003d,0x00000017, +0x000000bf,0x0000001a,0x0004003d,0x000000ae, +0x000000c0,0x000000b0,0x0004003d,0x00000011, +0x000000c1,0x0000001b,0x00050057,0x00000017, +0x000000c2,0x000000c0,0x000000c1,0x00050085, +0x00000017,0x000000c3,0x000000bf,0x000000c2, +0x0003003e,0x000000be,0x000000c3,0x0004003d, +0x00000017,0x000000c5,0x000000be,0x0008004f, +0x00000007,0x000000c6,0x000000c5,0x000000c5, +0x00000000,0x00000001,0x00000002,0x0006000c, +0x00000007,0x000000c7,0x00000001,0x00000004, +0x000000c6,0x0007000c,0x00000007,0x000000c8, +0x00000001,0x0000001a,0x000000c7,0x000000b9, +0x0003003e,0x000000c4,0x000000c8,0x0004003d, +0x00000007,0x000000c9,0x000000c4,0x00050041, +0x00000060,0x000000cb,0x000000be,0x000000ca, +0x0004003d,0x00000006,0x000000cc,0x000000cb, +0x00050051,0x00000006,0x000000cd,0x000000c9, +0x00000000,0x00050051,0x00000006,0x000000ce, +0x000000c9,0x00000001,0x00050051,0x00000006, +0x000000cf,0x000000c9,0x00000002,0x00070050, +0x00000017,0x000000d0,0x000000cd,0x000000ce, +0x000000cf,0x000000cc,0x000200fe,0x000000d0, +0x00010038,0x00050036,0x00000007,0x0000001f, +0x00000000,0x00000008,0x00030037,0x00000007, +0x0000001e,0x000200f8,0x00000020,0x0004003b, +0x000000d3,0x000000d4,0x00000007,0x0004003b, +0x0000000c,0x000000dd,0x00000007,0x00050041, +0x000000d6,0x000000d7,0x00000074,0x000000d5, +0x0004003d,0x0000003f,0x000000d8,0x000000d7, +0x0003003e,0x000000d4,0x000000d8,0x0004003d, +0x0000003f,0x000000d9,0x000000d4,0x000500aa, +0x00000039,0x000000da,0x000000d9,0x00000062, +0x000300f7,0x000000dc,0x00000000,0x000400fa, +0x000000da,0x000000db,0x000000ed,0x000200f8, +0x000000db,0x00050090,0x00000007,0x000000ec, +0x0000001e,0x000000eb,0x0003003e,0x000000dd, +0x000000ec,0x000200f9,0x000000dc,0x000200f8, +0x000000ed,0x0004003d,0x0000003f,0x000000ee, +0x000000d4,0x000500aa,0x00000039,0x000000ef, +0x000000ee,0x00000064,0x000300f7,0x000000f1, +0x00000000,0x000400fa,0x000000ef,0x000000f0, +0x000000fc,0x000200f8,0x000000f0,0x00050090, +0x00000007,0x000000fb,0x0000001e,0x000000fa, +0x0003003e,0x000000dd,0x000000fb,0x000200f9, +0x000000f1,0x000200f8,0x000000fc,0x0004003d, +0x0000003f,0x000000fd,0x000000d4,0x000500aa, +0x00000039,0x000000fe,0x000000fd,0x00000066, +0x000300f7,0x00000100,0x00000000,0x000400fa, +0x000000fe,0x000000ff,0x00000111,0x000200f8, +0x000000ff,0x00050090,0x00000007,0x00000101, +0x0000001e,0x000000eb,0x0003003e,0x000000dd, +0x00000101,0x0004003d,0x00000007,0x00000102, +0x000000dd,0x00050090,0x00000007,0x00000110, +0x00000102,0x0000010f,0x0003003e,0x000000dd, +0x00000110,0x000200f9,0x00000100,0x000200f8, +0x00000111,0x0003003e,0x000000dd,0x0000001e, +0x000200f9,0x00000100,0x000200f8,0x00000100, +0x000200f9,0x000000f1,0x000200f8,0x000000f1, +0x000200f9,0x000000dc,0x000200f8,0x000000dc, +0x0004003d,0x00000007,0x00000112,0x000000dd, +0x0007000c,0x00000007,0x00000115,0x00000001, +0x00000028,0x00000112,0x00000114,0x0003003e, +0x000000dd,0x00000115,0x0004003d,0x00000007, +0x00000116,0x000000dd,0x000200fe,0x00000116, +0x00010038,0x00050036,0x00000017,0x00000023, +0x00000000,0x00000021,0x00030037,0x00000017, +0x00000022,0x000200f8,0x00000024,0x0004003b, +0x000000d3,0x00000119,0x00000007,0x0004003b, +0x0000000c,0x00000120,0x00000007,0x00050041, +0x000000d6,0x0000011a,0x00000074,0x000000d5, +0x0004003d,0x0000003f,0x0000011b,0x0000011a, +0x0003003e,0x00000119,0x0000011b,0x0004003d, +0x0000003f,0x0000011c,0x00000119,0x000500aa, +0x00000039,0x0000011d,0x0000011c,0x00000062, +0x000300f7,0x0000011f,0x00000000,0x000400fa, +0x0000011d,0x0000011e,0x00000123,0x000200f8, +0x0000011e,0x0008004f,0x00000007,0x00000121, +0x00000022,0x00000022,0x00000000,0x00000001, +0x00000002,0x00050090,0x00000007,0x00000122, +0x00000121,0x000000eb,0x0003003e,0x00000120, +0x00000122,0x000200f9,0x0000011f,0x000200f8, +0x00000123,0x0004003d,0x0000003f,0x00000124, +0x00000119,0x000500aa,0x00000039,0x00000125, +0x00000124,0x00000064,0x000300f7,0x00000127, +0x00000000,0x000400fa,0x00000125,0x00000126, +0x0000012a,0x000200f8,0x00000126,0x0008004f, +0x00000007,0x00000128,0x00000022,0x00000022, 0x00000000,0x00000001,0x00000002,0x00050090, -0x00000007,0x000000de,0x000000dd,0x000000bc, -0x0003003e,0x000000db,0x000000de,0x00050041, -0x00000070,0x000000df,0x0000006d,0x000000be, -0x0004003d,0x00000006,0x000000e0,0x000000df, -0x000500ba,0x00000031,0x000000e1,0x000000e0, -0x000000c1,0x000300f7,0x000000e3,0x00000000, -0x000400fa,0x000000e1,0x000000e2,0x000000e3, -0x000200f8,0x000000e2,0x0004003d,0x00000017, -0x000000e4,0x0000001a,0x0008004f,0x00000007, -0x000000e5,0x000000e4,0x000000e4,0x00000000, -0x00000001,0x00000002,0x00050090,0x00000007, -0x000000e6,0x000000e5,0x000000ce,0x0003003e, -0x000000db,0x000000e6,0x000200f9,0x000000e3, -0x000200f8,0x000000e3,0x0004003d,0x00000007, -0x000000e9,0x000000db,0x0003003e,0x000000e8, -0x000000e9,0x00050039,0x00000007,0x000000ea, -0x00000012,0x000000e8,0x0003003e,0x000000e7, -0x000000ea,0x0004003d,0x00000007,0x000000ec, -0x000000e7,0x00060050,0x00000007,0x000000ed, -0x000000c1,0x000000c1,0x000000c1,0x0007000c, -0x00000007,0x000000ee,0x00000001,0x00000028, -0x000000ec,0x000000ed,0x0003003e,0x000000ef, -0x000000ee,0x00050039,0x00000007,0x000000f0, -0x0000000f,0x000000ef,0x0003003e,0x000000eb, -0x000000f0,0x0004003d,0x00000007,0x000000f1, -0x000000eb,0x00050041,0x00000059,0x000000f3, -0x0000001a,0x000000f2,0x0004003d,0x00000006, -0x000000f4,0x000000f3,0x00050051,0x00000006, -0x000000f5,0x000000f1,0x00000000,0x00050051, -0x00000006,0x000000f6,0x000000f1,0x00000001, -0x00050051,0x00000006,0x000000f7,0x000000f1, -0x00000002,0x00070050,0x00000017,0x000000f8, -0x000000f5,0x000000f6,0x000000f7,0x000000f4, -0x000200fe,0x000000f8,0x00010038,0x00050036, -0x00000017,0x00000021,0x00000000,0x0000001f, -0x00030037,0x0000001e,0x00000020,0x000200f8, -0x00000022,0x0004003b,0x00000018,0x000000fb, -0x00000007,0x0004003b,0x0000000c,0x00000103, -0x00000007,0x0004003d,0x000000fd,0x00000100, -0x000000ff,0x0004003d,0x0000001d,0x00000101, -0x00000020,0x00050057,0x00000017,0x00000102, -0x00000100,0x00000101,0x0003003e,0x000000fb, -0x00000102,0x0004003d,0x00000017,0x00000104, -0x000000fb,0x0008004f,0x00000007,0x00000105, -0x00000104,0x00000104,0x00000000,0x00000001, -0x00000002,0x0006000c,0x00000007,0x00000106, -0x00000001,0x00000004,0x00000105,0x0007000c, -0x00000007,0x00000109,0x00000001,0x0000001a, -0x00000106,0x00000108,0x0003003e,0x00000103, -0x00000109,0x0004003d,0x00000007,0x0000010a, -0x00000103,0x00050041,0x00000059,0x0000010b, -0x000000fb,0x000000f2,0x0004003d,0x00000006, -0x0000010c,0x0000010b,0x00050051,0x00000006, -0x0000010d,0x0000010a,0x00000000,0x00050051, -0x00000006,0x0000010e,0x0000010a,0x00000001, -0x00050051,0x00000006,0x0000010f,0x0000010a, -0x00000002,0x00070050,0x00000017,0x00000110, -0x0000010d,0x0000010e,0x0000010f,0x0000010c, -0x000200fe,0x00000110,0x00010038,0x00050036, -0x00000017,0x00000026,0x00000000,0x00000023, -0x00030037,0x00000018,0x00000024,0x00030037, -0x0000001e,0x00000025,0x000200f8,0x00000027, -0x0004003b,0x00000018,0x00000113,0x00000007, -0x0004003b,0x0000000c,0x00000119,0x00000007, -0x0004003d,0x00000017,0x00000114,0x00000024, -0x0004003d,0x000000fd,0x00000115,0x000000ff, -0x0004003d,0x0000001d,0x00000116,0x00000025, -0x00050057,0x00000017,0x00000117,0x00000115, -0x00000116,0x00050085,0x00000017,0x00000118, -0x00000114,0x00000117,0x0003003e,0x00000113, -0x00000118,0x0004003d,0x00000017,0x0000011a, -0x00000113,0x0008004f,0x00000007,0x0000011b, -0x0000011a,0x0000011a,0x00000000,0x00000001, -0x00000002,0x0006000c,0x00000007,0x0000011c, -0x00000001,0x00000004,0x0000011b,0x0007000c, -0x00000007,0x0000011d,0x00000001,0x0000001a, -0x0000011c,0x00000108,0x0003003e,0x00000119, -0x0000011d,0x0004003d,0x00000007,0x0000011e, -0x00000119,0x00050041,0x00000059,0x0000011f, -0x00000113,0x000000f2,0x0004003d,0x00000006, -0x00000120,0x0000011f,0x00050051,0x00000006, -0x00000121,0x0000011e,0x00000000,0x00050051, -0x00000006,0x00000122,0x0000011e,0x00000001, -0x00050051,0x00000006,0x00000123,0x0000011e, -0x00000002,0x00070050,0x00000017,0x00000124, -0x00000121,0x00000122,0x00000123,0x00000120, -0x000200fe,0x00000124,0x00010038,0x00050036, -0x00000017,0x0000002a,0x00000000,0x00000028, -0x00030037,0x00000017,0x00000029,0x000200f8, -0x0000002b,0x0004003b,0x0000000c,0x00000127, -0x00000007,0x0008004f,0x00000007,0x00000128, -0x00000029,0x00000029,0x00000000,0x00000001, -0x00000002,0x00050039,0x00000007,0x00000129, -0x0000000a,0x00000128,0x0003003e,0x00000127, -0x00000129,0x0004003d,0x00000007,0x0000012a, -0x00000127,0x00050051,0x00000006,0x0000012b, -0x00000029,0x00000003,0x00050051,0x00000006, -0x0000012c,0x0000012a,0x00000000,0x00050051, -0x00000006,0x0000012d,0x0000012a,0x00000001, -0x00050051,0x00000006,0x0000012e,0x0000012a, -0x00000002,0x00070050,0x00000017,0x0000012f, -0x0000012c,0x0000012d,0x0000012e,0x0000012b, -0x000200fe,0x0000012f,0x00010038,0x00050036, -0x00000006,0x0000002f,0x00000000,0x0000002c, -0x00030037,0x00000006,0x0000002d,0x00030037, -0x00000017,0x0000002e,0x000200f8,0x00000030, -0x0004003b,0x00000018,0x00000132,0x00000007, -0x00050085,0x00000006,0x00000133,0x0000002d, -0x0000002d,0x00050085,0x00000006,0x00000134, -0x0000002d,0x0000002d,0x00050085,0x00000006, -0x00000135,0x00000134,0x0000002d,0x00070050, -0x00000017,0x00000136,0x0000007a,0x0000002d, -0x00000133,0x00000135,0x0003003e,0x00000132, -0x00000136,0x0004003d,0x00000017,0x00000137, -0x00000132,0x00050091,0x00000017,0x00000141, -0x00000140,0x0000002e,0x00050094,0x00000006, -0x00000142,0x00000137,0x00000141,0x000200fe, -0x00000142,0x00010038,0x00050036,0x00000017, -0x00000035,0x00000000,0x00000032,0x00030037, -0x00000006,0x00000033,0x00030037,0x00000031, -0x00000034,0x000200f8,0x00000036,0x0004003b, -0x00000059,0x00000145,0x00000007,0x0004003b, -0x00000059,0x00000147,0x00000007,0x0004003b, -0x00000018,0x0000014a,0x00000007,0x0008000c, -0x00000006,0x00000146,0x00000001,0x0000002b, -0x00000033,0x000000c1,0x0000007a,0x0003003e, -0x00000145,0x00000146,0x00050083,0x00000006, -0x00000148,0x00000033,0x0000007a,0x0008000c, -0x00000006,0x00000149,0x00000001,0x0000002b, -0x00000148,0x000000c1,0x0000007a,0x0003003e, -0x00000147,0x00000149,0x000300f7,0x0000014c, -0x00000000,0x000400fa,0x00000034,0x0000014b, -0x00000151,0x000200f8,0x0000014b,0x0004003d, -0x00000006,0x0000014d,0x00000147,0x0004003d, -0x00000006,0x0000014e,0x00000145,0x00070050, -0x00000017,0x0000014f,0x000000c1,0x0000014d, -0x0000014e,0x000000c1,0x00050081,0x00000017, -0x00000150,0x0000013f,0x0000014f,0x0003003e, -0x0000014a,0x00000150,0x000200f9,0x0000014c, -0x000200f8,0x00000151,0x0004003d,0x00000006, -0x00000153,0x00000145,0x0004003d,0x00000006, -0x00000154,0x00000147,0x00070050,0x00000017, -0x00000155,0x000000c1,0x00000153,0x00000154, -0x000000c1,0x00050083,0x00000017,0x00000156, -0x00000152,0x00000155,0x0003003e,0x0000014a, -0x00000156,0x000200f9,0x0000014c,0x000200f8, -0x0000014c,0x0004003d,0x00000017,0x00000157, -0x0000014a,0x000200fe,0x00000157,0x00010038, -0x00050036,0x00000006,0x00000045,0x00000000, -0x00000038,0x00030037,0x00000037,0x00000039, -0x00030037,0x0000001d,0x0000003a,0x00030037, -0x0000001d,0x0000003b,0x00030037,0x00000006, -0x0000003c,0x00030037,0x00000006,0x0000003d, -0x00030037,0x00000006,0x0000003e,0x00030037, -0x00000006,0x0000003f,0x00030037,0x00000006, -0x00000040,0x00030037,0x00000006,0x00000041, -0x00030037,0x00000006,0x00000042,0x00030037, -0x00000006,0x00000043,0x00030037,0x00000006, -0x00000044,0x000200f8,0x00000046,0x0004003b, -0x00000059,0x0000015a,0x00000007,0x0004003b, -0x00000059,0x0000015f,0x00000007,0x0004003b, -0x00000059,0x00000165,0x00000007,0x0004003b, -0x00000059,0x00000170,0x00000007,0x0004003b, -0x0000001e,0x00000174,0x00000007,0x0004003b, -0x0000001e,0x00000177,0x00000007,0x0004003b, -0x00000059,0x0000017d,0x00000007,0x0004003b, -0x0000001e,0x0000017e,0x00000007,0x0004003b, -0x00000059,0x00000183,0x00000007,0x0004003b, -0x0000001e,0x00000184,0x00000007,0x0004003b, -0x00000059,0x00000189,0x00000007,0x0004003b, -0x00000059,0x0000018f,0x00000007,0x0004003b, -0x00000059,0x00000194,0x00000007,0x0004003b, -0x00000059,0x00000199,0x00000007,0x0004003b, -0x00000059,0x0000019d,0x00000007,0x0004003b, -0x00000059,0x0000019f,0x00000007,0x0004003b, -0x00000059,0x000001a4,0x00000007,0x0004003b, -0x00000059,0x000001a7,0x00000007,0x0004003b, -0x00000059,0x000001ab,0x00000007,0x0004003b, -0x00000059,0x000001b8,0x00000007,0x0004003b, -0x00000018,0x000001bd,0x00000007,0x0004003b, -0x00000059,0x000001c2,0x00000007,0x00050051, -0x00000006,0x0000015b,0x0000003a,0x00000001, -0x00050051,0x00000006,0x0000015c,0x0000003b, -0x00000001,0x00050085,0x00000006,0x0000015d, -0x0000015b,0x0000015c,0x00050083,0x00000006, -0x0000015e,0x0000015d,0x0000003f,0x0003003e, -0x0000015a,0x0000015e,0x0004003d,0x00000006, -0x00000160,0x0000015a,0x0006000c,0x00000006, -0x00000161,0x00000001,0x00000008,0x00000160, -0x00050081,0x00000006,0x00000163,0x00000161, -0x00000162,0x00050081,0x00000006,0x00000164, -0x00000163,0x00000044,0x0003003e,0x0000015f, -0x00000164,0x0004003d,0x00000006,0x00000166, -0x0000015a,0x0004003d,0x00000006,0x00000167, -0x0000015f,0x00050083,0x00000006,0x00000168, -0x00000166,0x00000167,0x0003003e,0x00000165, -0x00000168,0x0004003d,0x00000006,0x00000169, -0x00000165,0x0006000c,0x00000006,0x0000016a, -0x00000001,0x00000004,0x00000169,0x000500ba, -0x00000031,0x0000016c,0x0000016a,0x0000016b, -0x000300f7,0x0000016e,0x00000000,0x000400fa, -0x0000016c,0x0000016d,0x0000016e,0x000200f8, -0x0000016d,0x000200fe,0x000000c1,0x000200f8, -0x0000016e,0x0004003d,0x00000006,0x00000171, -0x0000015f,0x00050051,0x00000006,0x00000172, -0x0000003b,0x00000001,0x00050088,0x00000006, -0x00000173,0x00000171,0x00000172,0x0003003e, -0x00000170,0x00000173,0x0004003d,0x00000006, -0x00000175,0x00000170,0x00050050,0x0000001d, -0x00000176,0x0000003d,0x00000175,0x0003003e, -0x00000174,0x00000176,0x00050051,0x00000006, -0x00000178,0x0000003b,0x00000000,0x00050088, -0x00000006,0x00000179,0x0000007a,0x00000178, -0x00050081,0x00000006,0x0000017a,0x0000003d, -0x00000179,0x0004003d,0x00000006,0x0000017b, -0x00000170,0x00050050,0x0000001d,0x0000017c, -0x0000017a,0x0000017b,0x0003003e,0x00000177, -0x0000017c,0x0004003d,0x0000001d,0x0000017f, -0x00000174,0x0003003e,0x0000017e,0x0000017f, -0x00050039,0x00000017,0x00000180,0x00000021, -0x0000017e,0x00050039,0x00000017,0x00000181, -0x0000002a,0x00000180,0x0005004d,0x00000006, -0x00000182,0x00000181,0x00000039,0x0003003e, -0x0000017d,0x00000182,0x0004003d,0x0000001d, -0x00000185,0x00000177,0x0003003e,0x00000184, -0x00000185,0x00050039,0x00000017,0x00000186, -0x00000021,0x00000184,0x00050039,0x00000017, -0x00000187,0x0000002a,0x00000186,0x0005004d, -0x00000006,0x00000188,0x00000187,0x00000039, -0x0003003e,0x00000183,0x00000188,0x0004003d, -0x00000006,0x0000018a,0x0000017d,0x0004003d, -0x00000006,0x0000018b,0x00000183,0x000500ba, -0x00000031,0x0000018c,0x0000018a,0x0000018b, -0x00060039,0x00000017,0x0000018d,0x00000035, -0x00000040,0x0000018c,0x00060039,0x00000006, -0x0000018e,0x0000002f,0x0000003e,0x0000018d, -0x0003003e,0x00000189,0x0000018e,0x0004003d, -0x00000006,0x00000190,0x0000017d,0x0004003d, -0x00000006,0x00000191,0x00000183,0x0004003d, -0x00000006,0x00000192,0x00000189,0x0008000c, -0x00000006,0x00000193,0x00000001,0x0000002e, -0x00000190,0x00000191,0x00000192,0x0003003e, -0x0000018f,0x00000193,0x0004003d,0x00000006, -0x00000195,0x0000018f,0x0007000c,0x00000006, -0x00000196,0x00000001,0x00000028,0x00000195, -0x000000c1,0x0007000c,0x00000006,0x00000198, -0x00000001,0x0000001a,0x00000196,0x00000197, -0x0003003e,0x00000194,0x00000198,0x0004003d, -0x00000006,0x0000019a,0x00000194,0x0008000c, -0x00000006,0x0000019c,0x00000001,0x0000002b, -0x0000019a,0x000000c1,0x0000019b,0x0003003e, -0x00000199,0x0000019c,0x00050088,0x00000006, -0x0000019e,0x00000162,0x0000003c,0x0003003e, -0x0000019d,0x0000019e,0x0004003d,0x00000006, -0x000001a0,0x00000165,0x0006000c,0x00000006, -0x000001a1,0x00000001,0x00000004,0x000001a0, -0x0004003d,0x00000006,0x000001a2,0x0000019d, -0x00050083,0x00000006,0x000001a3,0x000001a1, -0x000001a2,0x0003003e,0x0000019f,0x000001a3, -0x0004003d,0x00000006,0x000001a5,0x0000019f, -0x0007000c,0x00000006,0x000001a6,0x00000001, -0x00000028,0x000000c1,0x000001a5,0x0003003e, -0x000001a4,0x000001a6,0x0004003d,0x00000006, -0x000001a8,0x000001a4,0x00050085,0x00000006, -0x000001aa,0x000001a8,0x000001a9,0x0003003e, -0x000001a7,0x000001aa,0x0004003d,0x00000006, -0x000001ac,0x00000199,0x0007000c,0x00000006, -0x000001ad,0x00000001,0x00000025,0x000001ac, -0x0000007a,0x0008000c,0x00000006,0x000001ae, -0x00000001,0x0000002e,0x00000041,0x00000042, -0x000001ad,0x0003003e,0x000001ab,0x000001ae, -0x0004003d,0x00000006,0x000001af,0x00000199, -0x000500ba,0x00000031,0x000001b0,0x000001af, -0x0000007a,0x000300f7,0x000001b2,0x00000000, -0x000400fa,0x000001b0,0x000001b1,0x000001b2, -0x000200f8,0x000001b1,0x0004003d,0x00000006, -0x000001b3,0x00000199,0x00050083,0x00000006, -0x000001b4,0x000001b3,0x0000007a,0x00050085, -0x00000006,0x000001b5,0x000001b4,0x000000c1, -0x0004003d,0x00000006,0x000001b6,0x000001ab, -0x00050081,0x00000006,0x000001b7,0x000001b6, -0x000001b5,0x0003003e,0x000001ab,0x000001b7, -0x000200f9,0x000001b2,0x000200f8,0x000001b2, -0x0004003d,0x00000006,0x000001b9,0x000001a7, -0x0004003d,0x00000006,0x000001ba,0x000001ab, -0x00050088,0x00000006,0x000001bb,0x000001b9, -0x000001ba,0x0008000c,0x00000006,0x000001bc, -0x00000001,0x0000002b,0x000001bb,0x000000c1, -0x0000007a,0x0003003e,0x000001b8,0x000001bc, -0x0004003d,0x00000006,0x000001be,0x00000199, -0x0007000c,0x00000006,0x000001bf,0x00000001, -0x00000025,0x000001be,0x0000007a,0x00050085, -0x00000006,0x000001c0,0x000001bf,0x00000043, -0x00070050,0x00000017,0x000001c1,0x0000007a, -0x0000007a,0x000001c0,0x000000c1,0x0003003e, -0x000001bd,0x000001c1,0x0004003d,0x00000006, -0x000001c3,0x000001b8,0x0004003d,0x00000017, -0x000001c4,0x000001bd,0x00060039,0x00000006, -0x000001c5,0x0000002f,0x000001c3,0x000001c4, -0x0003003e,0x000001c2,0x000001c5,0x0004003d, -0x00000006,0x000001c6,0x000001c2,0x0004003d, -0x00000006,0x000001c7,0x0000018f,0x00050085, -0x00000006,0x000001c8,0x000001c6,0x000001c7, -0x000200fe,0x000001c8,0x00010038,0x00050036, -0x00000006,0x00000053,0x00000000,0x00000047, -0x00030037,0x00000037,0x00000048,0x00030037, -0x0000001d,0x00000049,0x00030037,0x0000001d, -0x0000004a,0x00030037,0x00000006,0x0000004b, -0x00030037,0x00000006,0x0000004c,0x00030037, -0x00000006,0x0000004d,0x00030037,0x00000006, -0x0000004e,0x00030037,0x00000006,0x0000004f, -0x00030037,0x00000006,0x00000050,0x00030037, -0x00000006,0x00000051,0x00030037,0x00000006, -0x00000052,0x000200f8,0x00000054,0x0004003b, -0x00000059,0x000001cb,0x00000007,0x0004003b, -0x00000059,0x000001d0,0x00000007,0x0004003b, -0x00000059,0x000001d4,0x00000007,0x0004003b, -0x00000059,0x000001d8,0x00000007,0x0004003b, -0x00000059,0x000001db,0x00000007,0x0004003b, -0x00000059,0x000001e1,0x00000007,0x00050051, -0x00000006,0x000001cc,0x00000049,0x00000000, -0x00050051,0x00000006,0x000001cd,0x0000004a, -0x00000000,0x00050085,0x00000006,0x000001ce, -0x000001cc,0x000001cd,0x00050083,0x00000006, -0x000001cf,0x000001ce,0x0000004c,0x0003003e, -0x000001cb,0x000001cf,0x0004003d,0x00000006, -0x000001d1,0x000001cb,0x0006000c,0x00000006, -0x000001d2,0x00000001,0x00000008,0x000001d1, -0x00050081,0x00000006,0x000001d3,0x000001d2, -0x00000162,0x0003003e,0x000001d0,0x000001d3, -0x0004003d,0x00000006,0x000001d5,0x000001d0, -0x00050051,0x00000006,0x000001d6,0x0000004a, -0x00000000,0x00050088,0x00000006,0x000001d7, -0x000001d5,0x000001d6,0x0003003e,0x000001d4, -0x000001d7,0x0004003d,0x00000006,0x000001d9, -0x000001cb,0x0006000c,0x00000006,0x000001da, -0x00000001,0x0000000a,0x000001d9,0x0003003e, -0x000001d8,0x000001da,0x0004003d,0x00000006, -0x000001dc,0x000001d8,0x00050083,0x00000006, -0x000001dd,0x000001dc,0x00000162,0x00050085, -0x00000006,0x000001de,0x000001dd,0x0000004e, -0x00050081,0x00000006,0x000001df,0x000001de, -0x00000162,0x0008000c,0x00000006,0x000001e0, -0x00000001,0x0000002b,0x000001df,0x000000c1, -0x0000007a,0x0003003e,0x000001db,0x000001e0, -0x0004003d,0x00000006,0x000001e2,0x000001d4, -0x0004003d,0x00000006,0x000001e3,0x000001db, -0x00100039,0x00000006,0x000001e4,0x00000045, -0x00000048,0x00000049,0x0000004a,0x0000004b, -0x000001e2,0x000001e3,0x0000004d,0x0000004f, -0x00000050,0x00000051,0x00000052,0x000000c1, -0x0003003e,0x000001e1,0x000001e4,0x000300f7, -0x000001e7,0x00000000,0x000400fa,0x000001e5, -0x000001e6,0x000001e7,0x000200f8,0x000001e6, -0x0004003d,0x00000006,0x000001e8,0x000001d4, -0x0004003d,0x00000006,0x000001e9,0x000001db, -0x00100039,0x00000006,0x000001ea,0x00000045, -0x00000048,0x00000049,0x0000004a,0x0000004b, -0x000001e8,0x000001e9,0x0000004d,0x0000004f, -0x00000050,0x00000051,0x00000052,0x0000007a, -0x0004003d,0x00000006,0x000001eb,0x000001e1, -0x00050081,0x00000006,0x000001ec,0x000001eb, -0x000001ea,0x0003003e,0x000001e1,0x000001ec, -0x0004003d,0x00000006,0x000001ed,0x000001d4, -0x0004003d,0x00000006,0x000001ee,0x000001db, -0x00100039,0x00000006,0x000001ef,0x00000045, -0x00000048,0x00000049,0x0000004a,0x0000004b, -0x000001ed,0x000001ee,0x0000004d,0x0000004f, -0x00000050,0x00000051,0x00000052,0x0000013a, -0x0004003d,0x00000006,0x000001f0,0x000001e1, -0x00050081,0x00000006,0x000001f1,0x000001f0, -0x000001ef,0x0003003e,0x000001e1,0x000001f1, -0x000200f9,0x000001e7,0x000200f8,0x000001e7, -0x0004003d,0x00000006,0x000001f2,0x000001e1, -0x000200fe,0x000001f2,0x00010038,0x00050036, -0x00000007,0x00000057,0x00000000,0x00000055, -0x00030037,0x0000001e,0x00000056,0x000200f8, -0x00000058,0x0004003b,0x0000001e,0x000001f5, -0x00000007,0x0004003b,0x0000001e,0x000001fb, -0x00000007,0x0004003b,0x0000001e,0x00000200, -0x00000007,0x0004003b,0x0000001e,0x00000215, -0x00000007,0x0004003b,0x00000219,0x0000021a, -0x00000007,0x0004003b,0x00000219,0x00000221, -0x00000007,0x0004003b,0x0000022b,0x0000022c, -0x00000007,0x0004003b,0x00000059,0x00000235, -0x00000007,0x0004003b,0x0000000c,0x0000023b, -0x00000007,0x0004003b,0x0000000c,0x0000023d, -0x00000007,0x0004003b,0x0000000c,0x0000023e, -0x00000007,0x0004003b,0x0000000c,0x00000241, -0x00000007,0x0004003b,0x0000000c,0x00000243, -0x00000007,0x0004003b,0x0000000c,0x00000246, -0x00000007,0x0004003b,0x0000000c,0x00000249, -0x00000007,0x0004003b,0x00000219,0x0000024c, -0x00000007,0x0004003b,0x0000000c,0x0000024f, -0x00000007,0x0004003b,0x00000219,0x00000254, -0x00000007,0x0004003b,0x00000059,0x00000258, -0x00000007,0x0004003b,0x0000027a,0x0000027b, -0x00000007,0x0004003b,0x0000000c,0x0000027f, -0x00000007,0x00050041,0x000001f7,0x000001f8, -0x0000006d,0x000001f6,0x0004003d,0x00000017, -0x000001f9,0x000001f8,0x0007004f,0x0000001d, -0x000001fa,0x000001f9,0x000001f9,0x00000000, -0x00000001,0x0003003e,0x000001f5,0x000001fa, -0x00050041,0x000001f7,0x000001fd,0x0000006d, -0x000001fc,0x0004003d,0x00000017,0x000001fe, -0x000001fd,0x0007004f,0x0000001d,0x000001ff, -0x000001fe,0x000001fe,0x00000000,0x00000001, -0x0003003e,0x000001fb,0x000001ff,0x0004003d, -0x0000001d,0x00000201,0x00000056,0x00050083, -0x0000001d,0x00000203,0x00000201,0x00000202, -0x0003003e,0x00000200,0x00000203,0x0004003d, -0x0000001d,0x00000204,0x00000200,0x00050041, -0x00000059,0x00000205,0x00000200,0x0000005d, -0x0004003d,0x00000006,0x00000206,0x00000205, -0x00050085,0x00000006,0x00000207,0x000000c1, -0x00000206,0x00050081,0x00000006,0x00000208, -0x0000007a,0x00000207,0x00050050,0x0000001d, -0x00000209,0x00000208,0x0000007a,0x00050085, -0x0000001d,0x0000020a,0x00000204,0x00000209, -0x0003003e,0x00000200,0x0000020a,0x0004003d, -0x0000001d,0x0000020b,0x00000200,0x00050085, -0x0000001d,0x0000020d,0x0000020b,0x0000020c, -0x0003003e,0x00000200,0x0000020d,0x0004003d, -0x0000001d,0x0000020e,0x00000200,0x00050081, -0x0000001d,0x0000020f,0x0000020e,0x00000202, -0x0003003e,0x00000200,0x0000020f,0x0004003d, -0x0000001d,0x00000210,0x00000200,0x0004003d, -0x0000001d,0x00000212,0x000001fb,0x00050088, -0x0000001d,0x00000213,0x00000211,0x00000212, -0x00050081,0x0000001d,0x00000214,0x00000210, -0x00000213,0x0003003e,0x00000200,0x00000214, -0x0004003d,0x0000001d,0x00000216,0x00000056, -0x0004003d,0x0000001d,0x00000217,0x000001fb, -0x00050085,0x0000001d,0x00000218,0x00000216, -0x00000217,0x0003003e,0x00000215,0x00000218, -0x00050041,0x00000059,0x0000021b,0x00000215, -0x0000005b,0x0004003d,0x00000006,0x0000021c, -0x0000021b,0x0005008d,0x00000006,0x0000021e, -0x0000021c,0x0000021d,0x0006000c,0x00000006, -0x0000021f,0x00000001,0x00000008,0x0000021e, -0x0004006d,0x00000037,0x00000220,0x0000021f, -0x0003003e,0x0000021a,0x00000220,0x00050041, -0x00000228,0x00000229,0x0000006d,0x00000227, -0x0004003d,0x00000037,0x0000022a,0x00000229, -0x0003003e,0x0000022c,0x00000226,0x00050041, -0x00000219,0x0000022d,0x0000022c,0x0000022a, -0x0004003d,0x00000037,0x0000022e,0x0000022d, -0x0004003d,0x00000037,0x0000022f,0x0000021a, -0x00050084,0x00000037,0x00000231,0x0000022f, -0x00000230,0x000500c2,0x00000037,0x00000232, -0x0000022e,0x00000231,0x000500c7,0x00000037, -0x00000234,0x00000232,0x00000233,0x0003003e, -0x00000221,0x00000234,0x00050041,0x00000059, -0x00000236,0x000001fb,0x0000005d,0x0004003d, -0x00000006,0x00000237,0x00000236,0x00050041, -0x00000059,0x00000238,0x000001f5,0x0000005d, -0x0004003d,0x00000006,0x00000239,0x00000238, -0x00050088,0x00000006,0x0000023a,0x00000237, -0x00000239,0x0003003e,0x00000235,0x0000023a, -0x0003003e,0x0000023b,0x0000023c,0x0003003e, -0x0000023d,0x0000023c,0x0003003e,0x0000023e, -0x00000240,0x0003003e,0x00000241,0x00000242, -0x0003003e,0x00000243,0x00000245,0x0003003e, -0x00000246,0x00000248,0x0003003e,0x00000249, -0x0000024b,0x0004003d,0x00000037,0x0000024d, -0x00000221,0x000500c7,0x00000037,0x0000024e, -0x0000024d,0x000000f2,0x0003003e,0x0000024c, -0x0000024e,0x0003003e,0x0000024f,0x0000023c, -0x0004003d,0x00000037,0x00000250,0x0000024c, -0x000500ac,0x00000031,0x00000251,0x00000250, -0x0000005b,0x000300f7,0x00000253,0x00000000, -0x000400fa,0x00000251,0x00000252,0x00000253, -0x000200f8,0x00000252,0x0004003d,0x00000037, -0x00000255,0x00000221,0x000500c2,0x00000037, -0x00000256,0x00000255,0x0000005f,0x000500c7, -0x00000037,0x00000257,0x00000256,0x000000f2, -0x0003003e,0x00000254,0x00000257,0x0004003d, -0x00000037,0x00000259,0x00000254,0x0004003d, -0x0000001d,0x0000025a,0x00000200,0x0004003d, -0x0000001d,0x0000025b,0x000001f5,0x0004003d, -0x00000006,0x0000025c,0x00000235,0x0004003d, -0x00000037,0x0000025d,0x00000254,0x00050041, -0x00000059,0x0000025e,0x0000023b,0x0000025d, -0x0004003d,0x00000006,0x0000025f,0x0000025e, -0x0004003d,0x00000037,0x00000260,0x00000254, -0x00050041,0x00000059,0x00000261,0x0000023d, -0x00000260,0x0004003d,0x00000006,0x00000262, -0x00000261,0x0004003d,0x00000037,0x00000263, -0x00000254,0x00050041,0x00000059,0x00000264, -0x0000023e,0x00000263,0x0004003d,0x00000006, -0x00000265,0x00000264,0x0004003d,0x00000037, -0x00000266,0x00000254,0x00050041,0x00000059, -0x00000267,0x00000241,0x00000266,0x0004003d, -0x00000006,0x00000268,0x00000267,0x0004003d, -0x00000037,0x00000269,0x00000254,0x00050041, -0x00000059,0x0000026a,0x00000243,0x00000269, -0x0004003d,0x00000006,0x0000026b,0x0000026a, -0x0004003d,0x00000037,0x0000026c,0x00000254, -0x00050041,0x00000059,0x0000026d,0x00000246, -0x0000026c,0x0004003d,0x00000006,0x0000026e, -0x0000026d,0x0004003d,0x00000037,0x0000026f, -0x00000254,0x00050041,0x00000059,0x00000270, -0x00000249,0x0000026f,0x0004003d,0x00000006, -0x00000271,0x00000270,0x000f0039,0x00000006, -0x00000272,0x00000053,0x00000259,0x0000025a, -0x0000025b,0x0000025c,0x0000025f,0x00000262, -0x00000265,0x00000268,0x0000026b,0x0000026e, -0x00000271,0x0003003e,0x00000258,0x00000272, -0x0004003d,0x00000006,0x00000273,0x00000258, -0x0004003d,0x00000037,0x00000279,0x00000254, -0x0003003e,0x0000027b,0x00000278,0x00050041, -0x0000000c,0x0000027c,0x0000027b,0x00000279, -0x0004003d,0x00000007,0x0000027d,0x0000027c, -0x0005008e,0x00000007,0x0000027e,0x0000027d, -0x00000273,0x0003003e,0x0000024f,0x0000027e, -0x000200f9,0x00000253,0x000200f8,0x00000253, -0x0004003d,0x00000007,0x00000280,0x0000024f, -0x0003003e,0x0000027f,0x00000280,0x00050039, -0x00000007,0x00000281,0x00000015,0x0000027f, -0x000200fe,0x00000281,0x00010038} +0x00000007,0x00000129,0x00000128,0x000000fa, +0x0003003e,0x00000120,0x00000129,0x000200f9, +0x00000127,0x000200f8,0x0000012a,0x0004003d, +0x0000003f,0x0000012b,0x00000119,0x000500aa, +0x00000039,0x0000012c,0x0000012b,0x00000066, +0x000300f7,0x0000012e,0x00000000,0x000400fa, +0x0000012c,0x0000012d,0x00000133,0x000200f8, +0x0000012d,0x0008004f,0x00000007,0x0000012f, +0x00000022,0x00000022,0x00000000,0x00000001, +0x00000002,0x00050090,0x00000007,0x00000130, +0x0000012f,0x000000eb,0x0003003e,0x00000120, +0x00000130,0x0004003d,0x00000007,0x00000131, +0x00000120,0x00050090,0x00000007,0x00000132, +0x00000131,0x0000010f,0x0003003e,0x00000120, +0x00000132,0x000200f9,0x0000012e,0x000200f8, +0x00000133,0x0008004f,0x00000007,0x00000134, +0x00000022,0x00000022,0x00000000,0x00000001, +0x00000002,0x0003003e,0x00000120,0x00000134, +0x000200f9,0x0000012e,0x000200f8,0x0000012e, +0x000200f9,0x00000127,0x000200f8,0x00000127, +0x000200f9,0x0000011f,0x000200f8,0x0000011f, +0x0004003d,0x00000007,0x00000135,0x00000120, +0x0007000c,0x00000007,0x00000136,0x00000001, +0x00000028,0x00000135,0x00000114,0x0003003e, +0x00000120,0x00000136,0x0004003d,0x00000007, +0x00000137,0x00000120,0x00050051,0x00000006, +0x00000138,0x00000022,0x00000003,0x00050051, +0x00000006,0x00000139,0x00000137,0x00000000, +0x00050051,0x00000006,0x0000013a,0x00000137, +0x00000001,0x00050051,0x00000006,0x0000013b, +0x00000137,0x00000002,0x00070050,0x00000017, +0x0000013c,0x00000139,0x0000013a,0x0000013b, +0x00000138,0x000200fe,0x0000013c,0x00010038, +0x00050036,0x00000007,0x00000026,0x00000000, +0x00000008,0x00030037,0x00000007,0x00000025, +0x000200f8,0x00000027,0x00050039,0x00000007, +0x0000013f,0x0000000a,0x00000025,0x000200fe, +0x0000013f,0x00010038,0x00050036,0x00000017, +0x00000029,0x00000000,0x00000021,0x00030037, +0x00000017,0x00000028,0x000200f8,0x0000002a, +0x0004003b,0x0000000c,0x00000142,0x00000007, +0x0008004f,0x00000007,0x00000143,0x00000028, +0x00000028,0x00000000,0x00000001,0x00000002, +0x00050039,0x00000007,0x00000144,0x0000000a, +0x00000143,0x0003003e,0x00000142,0x00000144, +0x0004003d,0x00000007,0x00000145,0x00000142, +0x00050051,0x00000006,0x00000146,0x00000028, +0x00000003,0x00050051,0x00000006,0x00000147, +0x00000145,0x00000000,0x00050051,0x00000006, +0x00000148,0x00000145,0x00000001,0x00050051, +0x00000006,0x00000149,0x00000145,0x00000002, +0x00070050,0x00000017,0x0000014a,0x00000147, +0x00000148,0x00000149,0x00000146,0x000200fe, +0x0000014a,0x00010038,0x00050036,0x00000007, +0x0000002c,0x00000000,0x00000008,0x00030037, +0x00000007,0x0000002b,0x000200f8,0x0000002d, +0x0007000c,0x00000007,0x0000014d,0x00000001, +0x00000028,0x0000002b,0x00000114,0x0007000c, +0x00000007,0x00000150,0x00000001,0x0000001a, +0x0000014d,0x0000014f,0x000200fe,0x00000150, +0x00010038,0x00050036,0x00000007,0x0000002f, +0x00000000,0x00000008,0x00030037,0x00000007, +0x0000002e,0x000200f8,0x00000030,0x0004003b, +0x0000000c,0x00000153,0x00000007,0x0004003b, +0x0000000c,0x0000015a,0x00000007,0x0004003b, +0x0000000c,0x0000015d,0x00000007,0x00050041, +0x00000077,0x00000154,0x00000074,0x0000007a, +0x0004003d,0x00000006,0x00000155,0x00000154, +0x00050088,0x00000006,0x00000157,0x00000155, +0x00000156,0x00060050,0x00000007,0x00000158, +0x00000157,0x00000157,0x00000157,0x00050085, +0x00000007,0x00000159,0x0000002e,0x00000158, +0x0003003e,0x00000153,0x00000159,0x0004003d, +0x00000007,0x0000015b,0x00000153,0x0007000c, +0x00000007,0x0000015c,0x00000001,0x00000028, +0x0000015b,0x00000114,0x0003003e,0x0000015d, +0x0000015c,0x00050039,0x00000007,0x0000015e, +0x0000000f,0x0000015d,0x0003003e,0x0000015a, +0x0000015e,0x0004003d,0x00000007,0x0000015f, +0x0000015a,0x000200fe,0x0000015f,0x00010038, +0x00050036,0x00000017,0x00000032,0x00000000, +0x00000021,0x00030037,0x00000017,0x00000031, +0x000200f8,0x00000033,0x0004003b,0x0000000c, +0x00000162,0x00000007,0x0004003b,0x0000000c, +0x00000169,0x00000007,0x0004003b,0x0000000c, +0x0000016c,0x00000007,0x0008004f,0x00000007, +0x00000163,0x00000031,0x00000031,0x00000000, +0x00000001,0x00000002,0x00050041,0x00000077, +0x00000164,0x00000074,0x0000007a,0x0004003d, +0x00000006,0x00000165,0x00000164,0x00050088, +0x00000006,0x00000166,0x00000165,0x00000156, +0x00060050,0x00000007,0x00000167,0x00000166, +0x00000166,0x00000166,0x00050085,0x00000007, +0x00000168,0x00000163,0x00000167,0x0003003e, +0x00000162,0x00000168,0x0004003d,0x00000007, +0x0000016a,0x00000162,0x0007000c,0x00000007, +0x0000016b,0x00000001,0x00000028,0x0000016a, +0x00000114,0x0003003e,0x0000016c,0x0000016b, +0x00050039,0x00000007,0x0000016d,0x0000000f, +0x0000016c,0x0003003e,0x00000169,0x0000016d, +0x0004003d,0x00000007,0x0000016e,0x00000169, +0x00050051,0x00000006,0x0000016f,0x00000031, +0x00000003,0x00050051,0x00000006,0x00000170, +0x0000016e,0x00000000,0x00050051,0x00000006, +0x00000171,0x0000016e,0x00000001,0x00050051, +0x00000006,0x00000172,0x0000016e,0x00000002, +0x00070050,0x00000017,0x00000173,0x00000170, +0x00000171,0x00000172,0x0000016f,0x000200fe, +0x00000173,0x00010038,0x00050036,0x00000006, +0x00000037,0x00000000,0x00000034,0x00030037, +0x00000006,0x00000035,0x00030037,0x00000017, +0x00000036,0x000200f8,0x00000038,0x0004003b, +0x00000018,0x00000176,0x00000007,0x00050085, +0x00000006,0x00000177,0x00000035,0x00000035, +0x00050085,0x00000006,0x00000178,0x00000035, +0x00000035,0x00050085,0x00000006,0x00000179, +0x00000178,0x00000035,0x00070050,0x00000017, +0x0000017a,0x00000081,0x00000035,0x00000177, +0x00000179,0x0003003e,0x00000176,0x0000017a, +0x0004003d,0x00000017,0x0000017b,0x00000176, +0x00050091,0x00000017,0x00000185,0x00000184, +0x00000036,0x00050094,0x00000006,0x00000186, +0x0000017b,0x00000185,0x000200fe,0x00000186, +0x00010038,0x00050036,0x00000017,0x0000003d, +0x00000000,0x0000003a,0x00030037,0x00000006, +0x0000003b,0x00030037,0x00000039,0x0000003c, +0x000200f8,0x0000003e,0x0004003b,0x00000060, +0x00000189,0x00000007,0x0004003b,0x00000060, +0x0000018b,0x00000007,0x0004003b,0x00000018, +0x0000018e,0x00000007,0x0008000c,0x00000006, +0x0000018a,0x00000001,0x0000002b,0x0000003b, +0x00000113,0x00000081,0x0003003e,0x00000189, +0x0000018a,0x00050083,0x00000006,0x0000018c, +0x0000003b,0x00000081,0x0008000c,0x00000006, +0x0000018d,0x00000001,0x0000002b,0x0000018c, +0x00000113,0x00000081,0x0003003e,0x0000018b, +0x0000018d,0x000300f7,0x00000190,0x00000000, +0x000400fa,0x0000003c,0x0000018f,0x00000195, +0x000200f8,0x0000018f,0x0004003d,0x00000006, +0x00000191,0x0000018b,0x0004003d,0x00000006, +0x00000192,0x00000189,0x00070050,0x00000017, +0x00000193,0x00000113,0x00000191,0x00000192, +0x00000113,0x00050081,0x00000017,0x00000194, +0x00000183,0x00000193,0x0003003e,0x0000018e, +0x00000194,0x000200f9,0x00000190,0x000200f8, +0x00000195,0x0004003d,0x00000006,0x00000197, +0x00000189,0x0004003d,0x00000006,0x00000198, +0x0000018b,0x00070050,0x00000017,0x00000199, +0x00000113,0x00000197,0x00000198,0x00000113, +0x00050083,0x00000017,0x0000019a,0x00000196, +0x00000199,0x0003003e,0x0000018e,0x0000019a, +0x000200f9,0x00000190,0x000200f8,0x00000190, +0x0004003d,0x00000017,0x0000019b,0x0000018e, +0x000200fe,0x0000019b,0x00010038,0x00050036, +0x00000006,0x0000004d,0x00000000,0x00000040, +0x00030037,0x0000003f,0x00000041,0x00030037, +0x00000011,0x00000042,0x00030037,0x00000011, +0x00000043,0x00030037,0x00000006,0x00000044, +0x00030037,0x00000006,0x00000045,0x00030037, +0x00000006,0x00000046,0x00030037,0x00000006, +0x00000047,0x00030037,0x00000006,0x00000048, +0x00030037,0x00000006,0x00000049,0x00030037, +0x00000006,0x0000004a,0x00030037,0x00000006, +0x0000004b,0x00030037,0x00000006,0x0000004c, +0x000200f8,0x0000004e,0x0004003b,0x00000060, +0x0000019e,0x00000007,0x0004003b,0x00000060, +0x000001a3,0x00000007,0x0004003b,0x00000060, +0x000001a9,0x00000007,0x0004003b,0x00000060, +0x000001b4,0x00000007,0x0004003b,0x00000012, +0x000001b8,0x00000007,0x0004003b,0x00000012, +0x000001bb,0x00000007,0x0004003b,0x00000060, +0x000001c1,0x00000007,0x0004003b,0x00000012, +0x000001c2,0x00000007,0x0004003b,0x00000060, +0x000001c9,0x00000007,0x0004003b,0x00000012, +0x000001ca,0x00000007,0x0004003b,0x00000060, +0x000001d1,0x00000007,0x0004003b,0x00000060, +0x000001d7,0x00000007,0x0004003b,0x00000060, +0x000001dc,0x00000007,0x0004003b,0x00000060, +0x000001de,0x00000007,0x0004003b,0x00000060, +0x000001e2,0x00000007,0x0004003b,0x00000060, +0x000001e4,0x00000007,0x0004003b,0x00000060, +0x000001e9,0x00000007,0x0004003b,0x00000060, +0x000001ec,0x00000007,0x0004003b,0x00000060, +0x000001f0,0x00000007,0x0004003b,0x00000060, +0x000001fd,0x00000007,0x0004003b,0x00000018, +0x00000202,0x00000007,0x0004003b,0x00000060, +0x00000207,0x00000007,0x00050051,0x00000006, +0x0000019f,0x00000042,0x00000001,0x00050051, +0x00000006,0x000001a0,0x00000043,0x00000001, +0x00050085,0x00000006,0x000001a1,0x0000019f, +0x000001a0,0x00050083,0x00000006,0x000001a2, +0x000001a1,0x00000047,0x0003003e,0x0000019e, +0x000001a2,0x0004003d,0x00000006,0x000001a4, +0x0000019e,0x0006000c,0x00000006,0x000001a5, +0x00000001,0x00000008,0x000001a4,0x00050081, +0x00000006,0x000001a7,0x000001a5,0x000001a6, +0x00050081,0x00000006,0x000001a8,0x000001a7, +0x0000004c,0x0003003e,0x000001a3,0x000001a8, +0x0004003d,0x00000006,0x000001aa,0x0000019e, +0x0004003d,0x00000006,0x000001ab,0x000001a3, +0x00050083,0x00000006,0x000001ac,0x000001aa, +0x000001ab,0x0003003e,0x000001a9,0x000001ac, +0x0004003d,0x00000006,0x000001ad,0x000001a9, +0x0006000c,0x00000006,0x000001ae,0x00000001, +0x00000004,0x000001ad,0x000500ba,0x00000039, +0x000001b0,0x000001ae,0x000001af,0x000300f7, +0x000001b2,0x00000000,0x000400fa,0x000001b0, +0x000001b1,0x000001b2,0x000200f8,0x000001b1, +0x000200fe,0x00000113,0x000200f8,0x000001b2, +0x0004003d,0x00000006,0x000001b5,0x000001a3, +0x00050051,0x00000006,0x000001b6,0x00000043, +0x00000001,0x00050088,0x00000006,0x000001b7, +0x000001b5,0x000001b6,0x0003003e,0x000001b4, +0x000001b7,0x0004003d,0x00000006,0x000001b9, +0x000001b4,0x00050050,0x00000011,0x000001ba, +0x00000045,0x000001b9,0x0003003e,0x000001b8, +0x000001ba,0x00050051,0x00000006,0x000001bc, +0x00000043,0x00000000,0x00050088,0x00000006, +0x000001bd,0x00000081,0x000001bc,0x00050081, +0x00000006,0x000001be,0x00000045,0x000001bd, +0x0004003d,0x00000006,0x000001bf,0x000001b4, +0x00050050,0x00000011,0x000001c0,0x000001be, +0x000001bf,0x0003003e,0x000001bb,0x000001c0, +0x0004003d,0x00000011,0x000001c3,0x000001b8, +0x0003003e,0x000001c2,0x000001c3,0x00050039, +0x00000007,0x000001c4,0x00000015,0x000001c2, +0x00050039,0x00000007,0x000001c5,0x0000001f, +0x000001c4,0x00050039,0x00000007,0x000001c6, +0x00000026,0x000001c5,0x00050039,0x00000007, +0x000001c7,0x0000002c,0x000001c6,0x0005004d, +0x00000006,0x000001c8,0x000001c7,0x00000041, +0x0003003e,0x000001c1,0x000001c8,0x0004003d, +0x00000011,0x000001cb,0x000001bb,0x0003003e, +0x000001ca,0x000001cb,0x00050039,0x00000007, +0x000001cc,0x00000015,0x000001ca,0x00050039, +0x00000007,0x000001cd,0x0000001f,0x000001cc, +0x00050039,0x00000007,0x000001ce,0x00000026, +0x000001cd,0x00050039,0x00000007,0x000001cf, +0x0000002c,0x000001ce,0x0005004d,0x00000006, +0x000001d0,0x000001cf,0x00000041,0x0003003e, +0x000001c9,0x000001d0,0x0004003d,0x00000006, +0x000001d2,0x000001c1,0x0004003d,0x00000006, +0x000001d3,0x000001c9,0x000500ba,0x00000039, +0x000001d4,0x000001d2,0x000001d3,0x00060039, +0x00000017,0x000001d5,0x0000003d,0x00000048, +0x000001d4,0x00060039,0x00000006,0x000001d6, +0x00000037,0x00000046,0x000001d5,0x0003003e, +0x000001d1,0x000001d6,0x0004003d,0x00000006, +0x000001d8,0x000001c1,0x0004003d,0x00000006, +0x000001d9,0x000001c9,0x0004003d,0x00000006, +0x000001da,0x000001d1,0x0008000c,0x00000006, +0x000001db,0x00000001,0x0000002e,0x000001d8, +0x000001d9,0x000001da,0x0003003e,0x000001d7, +0x000001db,0x0004003d,0x00000006,0x000001dd, +0x000001d7,0x0003003e,0x000001dc,0x000001dd, +0x0004003d,0x00000006,0x000001df,0x000001dc, +0x0008000c,0x00000006,0x000001e1,0x00000001, +0x0000002b,0x000001df,0x00000113,0x000001e0, +0x0003003e,0x000001de,0x000001e1,0x00050088, +0x00000006,0x000001e3,0x000001a6,0x00000044, +0x0003003e,0x000001e2,0x000001e3,0x0004003d, +0x00000006,0x000001e5,0x000001a9,0x0006000c, +0x00000006,0x000001e6,0x00000001,0x00000004, +0x000001e5,0x0004003d,0x00000006,0x000001e7, +0x000001e2,0x00050083,0x00000006,0x000001e8, +0x000001e6,0x000001e7,0x0003003e,0x000001e4, +0x000001e8,0x0004003d,0x00000006,0x000001ea, +0x000001e4,0x0007000c,0x00000006,0x000001eb, +0x00000001,0x00000028,0x00000113,0x000001ea, +0x0003003e,0x000001e9,0x000001eb,0x0004003d, +0x00000006,0x000001ed,0x000001e9,0x00050085, +0x00000006,0x000001ef,0x000001ed,0x000001ee, +0x0003003e,0x000001ec,0x000001ef,0x0004003d, +0x00000006,0x000001f1,0x000001de,0x0007000c, +0x00000006,0x000001f2,0x00000001,0x00000025, +0x000001f1,0x00000081,0x0008000c,0x00000006, +0x000001f3,0x00000001,0x0000002e,0x00000049, +0x0000004a,0x000001f2,0x0003003e,0x000001f0, +0x000001f3,0x0004003d,0x00000006,0x000001f4, +0x000001de,0x000500ba,0x00000039,0x000001f5, +0x000001f4,0x00000081,0x000300f7,0x000001f7, +0x00000000,0x000400fa,0x000001f5,0x000001f6, +0x000001f7,0x000200f8,0x000001f6,0x0004003d, +0x00000006,0x000001f8,0x000001de,0x00050083, +0x00000006,0x000001f9,0x000001f8,0x00000081, +0x00050085,0x00000006,0x000001fa,0x000001f9, +0x00000113,0x0004003d,0x00000006,0x000001fb, +0x000001f0,0x00050081,0x00000006,0x000001fc, +0x000001fb,0x000001fa,0x0003003e,0x000001f0, +0x000001fc,0x000200f9,0x000001f7,0x000200f8, +0x000001f7,0x0004003d,0x00000006,0x000001fe, +0x000001ec,0x0004003d,0x00000006,0x000001ff, +0x000001f0,0x00050088,0x00000006,0x00000200, +0x000001fe,0x000001ff,0x0008000c,0x00000006, +0x00000201,0x00000001,0x0000002b,0x00000200, +0x00000113,0x00000081,0x0003003e,0x000001fd, +0x00000201,0x0004003d,0x00000006,0x00000203, +0x000001de,0x0007000c,0x00000006,0x00000204, +0x00000001,0x00000025,0x00000203,0x00000081, +0x00050085,0x00000006,0x00000205,0x00000204, +0x0000004b,0x00070050,0x00000017,0x00000206, +0x00000081,0x00000081,0x00000205,0x00000113, +0x0003003e,0x00000202,0x00000206,0x0004003d, +0x00000006,0x00000208,0x000001fd,0x0004003d, +0x00000017,0x00000209,0x00000202,0x00060039, +0x00000006,0x0000020a,0x00000037,0x00000208, +0x00000209,0x0003003e,0x00000207,0x0000020a, +0x0004003d,0x00000006,0x0000020b,0x00000207, +0x0004003d,0x00000006,0x0000020c,0x000001d7, +0x00050085,0x00000006,0x0000020d,0x0000020b, +0x0000020c,0x000200fe,0x0000020d,0x00010038, +0x00050036,0x00000006,0x0000005b,0x00000000, +0x0000004f,0x00030037,0x0000003f,0x00000050, +0x00030037,0x00000011,0x00000051,0x00030037, +0x00000011,0x00000052,0x00030037,0x00000006, +0x00000053,0x00030037,0x00000006,0x00000054, +0x00030037,0x00000006,0x00000055,0x00030037, +0x00000006,0x00000056,0x00030037,0x00000006, +0x00000057,0x00030037,0x00000006,0x00000058, +0x00030037,0x00000006,0x00000059,0x00030037, +0x00000006,0x0000005a,0x000200f8,0x0000005c, +0x0004003b,0x00000060,0x00000210,0x00000007, +0x0004003b,0x00000060,0x00000215,0x00000007, +0x0004003b,0x00000060,0x00000219,0x00000007, +0x0004003b,0x00000060,0x0000021d,0x00000007, +0x0004003b,0x00000060,0x00000220,0x00000007, +0x0004003b,0x00000060,0x00000226,0x00000007, +0x00050051,0x00000006,0x00000211,0x00000051, +0x00000000,0x00050051,0x00000006,0x00000212, +0x00000052,0x00000000,0x00050085,0x00000006, +0x00000213,0x00000211,0x00000212,0x00050083, +0x00000006,0x00000214,0x00000213,0x00000054, +0x0003003e,0x00000210,0x00000214,0x0004003d, +0x00000006,0x00000216,0x00000210,0x0006000c, +0x00000006,0x00000217,0x00000001,0x00000008, +0x00000216,0x00050081,0x00000006,0x00000218, +0x00000217,0x000001a6,0x0003003e,0x00000215, +0x00000218,0x0004003d,0x00000006,0x0000021a, +0x00000215,0x00050051,0x00000006,0x0000021b, +0x00000052,0x00000000,0x00050088,0x00000006, +0x0000021c,0x0000021a,0x0000021b,0x0003003e, +0x00000219,0x0000021c,0x0004003d,0x00000006, +0x0000021e,0x00000210,0x0006000c,0x00000006, +0x0000021f,0x00000001,0x0000000a,0x0000021e, +0x0003003e,0x0000021d,0x0000021f,0x0004003d, +0x00000006,0x00000221,0x0000021d,0x00050083, +0x00000006,0x00000222,0x00000221,0x000001a6, +0x00050085,0x00000006,0x00000223,0x00000222, +0x00000056,0x00050081,0x00000006,0x00000224, +0x00000223,0x000001a6,0x0008000c,0x00000006, +0x00000225,0x00000001,0x0000002b,0x00000224, +0x00000113,0x00000081,0x0003003e,0x00000220, +0x00000225,0x0004003d,0x00000006,0x00000227, +0x00000219,0x0004003d,0x00000006,0x00000228, +0x00000220,0x00100039,0x00000006,0x00000229, +0x0000004d,0x00000050,0x00000051,0x00000052, +0x00000053,0x00000227,0x00000228,0x00000055, +0x00000057,0x00000058,0x00000059,0x0000005a, +0x00000113,0x0003003e,0x00000226,0x00000229, +0x000300f7,0x0000022c,0x00000000,0x000400fa, +0x0000022a,0x0000022b,0x0000022c,0x000200f8, +0x0000022b,0x0004003d,0x00000006,0x0000022d, +0x00000219,0x0004003d,0x00000006,0x0000022e, +0x00000220,0x00100039,0x00000006,0x0000022f, +0x0000004d,0x00000050,0x00000051,0x00000052, +0x00000053,0x0000022d,0x0000022e,0x00000055, +0x00000057,0x00000058,0x00000059,0x0000005a, +0x00000081,0x0004003d,0x00000006,0x00000230, +0x00000226,0x00050081,0x00000006,0x00000231, +0x00000230,0x0000022f,0x0003003e,0x00000226, +0x00000231,0x0004003d,0x00000006,0x00000232, +0x00000219,0x0004003d,0x00000006,0x00000233, +0x00000220,0x00100039,0x00000006,0x00000234, +0x0000004d,0x00000050,0x00000051,0x00000052, +0x00000053,0x00000232,0x00000233,0x00000055, +0x00000057,0x00000058,0x00000059,0x0000005a, +0x0000017e,0x0004003d,0x00000006,0x00000235, +0x00000226,0x00050081,0x00000006,0x00000236, +0x00000235,0x00000234,0x0003003e,0x00000226, +0x00000236,0x000200f9,0x0000022c,0x000200f8, +0x0000022c,0x0004003d,0x00000006,0x00000237, +0x00000226,0x000200fe,0x00000237,0x00010038, +0x00050036,0x00000007,0x0000005e,0x00000000, +0x00000013,0x00030037,0x00000012,0x0000005d, +0x000200f8,0x0000005f,0x0004003b,0x00000012, +0x0000023a,0x00000007,0x0004003b,0x00000012, +0x00000240,0x00000007,0x0004003b,0x00000012, +0x00000245,0x00000007,0x0004003b,0x00000012, +0x0000025a,0x00000007,0x0004003b,0x000000d3, +0x0000025e,0x00000007,0x0004003b,0x000000d3, +0x00000265,0x00000007,0x0004003b,0x0000026e, +0x0000026f,0x00000007,0x0004003b,0x00000060, +0x00000278,0x00000007,0x0004003b,0x0000000c, +0x0000027e,0x00000007,0x0004003b,0x0000000c, +0x0000027f,0x00000007,0x0004003b,0x0000000c, +0x00000280,0x00000007,0x0004003b,0x0000000c, +0x00000283,0x00000007,0x0004003b,0x0000000c, +0x00000285,0x00000007,0x0004003b,0x0000000c, +0x00000288,0x00000007,0x0004003b,0x0000000c, +0x0000028b,0x00000007,0x0004003b,0x000000d3, +0x0000028e,0x00000007,0x0004003b,0x0000000c, +0x00000291,0x00000007,0x0004003b,0x000000d3, +0x00000296,0x00000007,0x0004003b,0x00000060, +0x0000029a,0x00000007,0x0004003b,0x000002bc, +0x000002bd,0x00000007,0x0004003b,0x0000000c, +0x000002c1,0x00000007,0x00050041,0x0000023c, +0x0000023d,0x00000074,0x0000023b,0x0004003d, +0x00000017,0x0000023e,0x0000023d,0x0007004f, +0x00000011,0x0000023f,0x0000023e,0x0000023e, +0x00000000,0x00000001,0x0003003e,0x0000023a, +0x0000023f,0x00050041,0x0000023c,0x00000242, +0x00000074,0x00000241,0x0004003d,0x00000017, +0x00000243,0x00000242,0x0007004f,0x00000011, +0x00000244,0x00000243,0x00000243,0x00000000, +0x00000001,0x0003003e,0x00000240,0x00000244, +0x0004003d,0x00000011,0x00000246,0x0000005d, +0x00050083,0x00000011,0x00000248,0x00000246, +0x00000247,0x0003003e,0x00000245,0x00000248, +0x0004003d,0x00000011,0x00000249,0x00000245, +0x00050041,0x00000060,0x0000024a,0x00000245, +0x00000064,0x0004003d,0x00000006,0x0000024b, +0x0000024a,0x00050085,0x00000006,0x0000024c, +0x00000113,0x0000024b,0x00050081,0x00000006, +0x0000024d,0x00000081,0x0000024c,0x00050050, +0x00000011,0x0000024e,0x0000024d,0x00000081, +0x00050085,0x00000011,0x0000024f,0x00000249, +0x0000024e,0x0003003e,0x00000245,0x0000024f, +0x0004003d,0x00000011,0x00000250,0x00000245, +0x00050085,0x00000011,0x00000252,0x00000250, +0x00000251,0x0003003e,0x00000245,0x00000252, +0x0004003d,0x00000011,0x00000253,0x00000245, +0x00050081,0x00000011,0x00000254,0x00000253, +0x00000247,0x0003003e,0x00000245,0x00000254, +0x0004003d,0x00000011,0x00000255,0x00000245, +0x0004003d,0x00000011,0x00000257,0x00000240, +0x00050088,0x00000011,0x00000258,0x00000256, +0x00000257,0x00050081,0x00000011,0x00000259, +0x00000255,0x00000258,0x0003003e,0x00000245, +0x00000259,0x0004003d,0x00000011,0x0000025b, +0x0000005d,0x0004003d,0x00000011,0x0000025c, +0x00000240,0x00050085,0x00000011,0x0000025d, +0x0000025b,0x0000025c,0x0003003e,0x0000025a, +0x0000025d,0x00050041,0x00000060,0x0000025f, +0x0000025a,0x00000062,0x0004003d,0x00000006, +0x00000260,0x0000025f,0x0005008d,0x00000006, +0x00000262,0x00000260,0x00000261,0x0006000c, +0x00000006,0x00000263,0x00000001,0x00000008, +0x00000262,0x0004006d,0x0000003f,0x00000264, +0x00000263,0x0003003e,0x0000025e,0x00000264, +0x00050041,0x000000d6,0x0000026c,0x00000074, +0x0000026b,0x0004003d,0x0000003f,0x0000026d, +0x0000026c,0x0003003e,0x0000026f,0x0000026a, +0x00050041,0x000000d3,0x00000270,0x0000026f, +0x0000026d,0x0004003d,0x0000003f,0x00000271, +0x00000270,0x0004003d,0x0000003f,0x00000272, +0x0000025e,0x00050084,0x0000003f,0x00000274, +0x00000272,0x00000273,0x000500c2,0x0000003f, +0x00000275,0x00000271,0x00000274,0x000500c7, +0x0000003f,0x00000277,0x00000275,0x00000276, +0x0003003e,0x00000265,0x00000277,0x00050041, +0x00000060,0x00000279,0x00000240,0x00000064, +0x0004003d,0x00000006,0x0000027a,0x00000279, +0x00050041,0x00000060,0x0000027b,0x0000023a, +0x00000064,0x0004003d,0x00000006,0x0000027c, +0x0000027b,0x00050088,0x00000006,0x0000027d, +0x0000027a,0x0000027c,0x0003003e,0x00000278, +0x0000027d,0x0003003e,0x0000027e,0x00000114, +0x0003003e,0x0000027f,0x00000114,0x0003003e, +0x00000280,0x00000282,0x0003003e,0x00000283, +0x00000284,0x0003003e,0x00000285,0x00000287, +0x0003003e,0x00000288,0x0000028a,0x0003003e, +0x0000028b,0x0000028d,0x0004003d,0x0000003f, +0x0000028f,0x00000265,0x000500c7,0x0000003f, +0x00000290,0x0000028f,0x000000ca,0x0003003e, +0x0000028e,0x00000290,0x0003003e,0x00000291, +0x00000114,0x0004003d,0x0000003f,0x00000292, +0x0000028e,0x000500ac,0x00000039,0x00000293, +0x00000292,0x00000062,0x000300f7,0x00000295, +0x00000000,0x000400fa,0x00000293,0x00000294, +0x00000295,0x000200f8,0x00000294,0x0004003d, +0x0000003f,0x00000297,0x00000265,0x000500c2, +0x0000003f,0x00000298,0x00000297,0x00000066, +0x000500c7,0x0000003f,0x00000299,0x00000298, +0x000000ca,0x0003003e,0x00000296,0x00000299, +0x0004003d,0x0000003f,0x0000029b,0x00000296, +0x0004003d,0x00000011,0x0000029c,0x00000245, +0x0004003d,0x00000011,0x0000029d,0x0000023a, +0x0004003d,0x00000006,0x0000029e,0x00000278, +0x0004003d,0x0000003f,0x0000029f,0x00000296, +0x00050041,0x00000060,0x000002a0,0x0000027e, +0x0000029f,0x0004003d,0x00000006,0x000002a1, +0x000002a0,0x0004003d,0x0000003f,0x000002a2, +0x00000296,0x00050041,0x00000060,0x000002a3, +0x0000027f,0x000002a2,0x0004003d,0x00000006, +0x000002a4,0x000002a3,0x0004003d,0x0000003f, +0x000002a5,0x00000296,0x00050041,0x00000060, +0x000002a6,0x00000280,0x000002a5,0x0004003d, +0x00000006,0x000002a7,0x000002a6,0x0004003d, +0x0000003f,0x000002a8,0x00000296,0x00050041, +0x00000060,0x000002a9,0x00000283,0x000002a8, +0x0004003d,0x00000006,0x000002aa,0x000002a9, +0x0004003d,0x0000003f,0x000002ab,0x00000296, +0x00050041,0x00000060,0x000002ac,0x00000285, +0x000002ab,0x0004003d,0x00000006,0x000002ad, +0x000002ac,0x0004003d,0x0000003f,0x000002ae, +0x00000296,0x00050041,0x00000060,0x000002af, +0x00000288,0x000002ae,0x0004003d,0x00000006, +0x000002b0,0x000002af,0x0004003d,0x0000003f, +0x000002b1,0x00000296,0x00050041,0x00000060, +0x000002b2,0x0000028b,0x000002b1,0x0004003d, +0x00000006,0x000002b3,0x000002b2,0x000f0039, +0x00000006,0x000002b4,0x0000005b,0x0000029b, +0x0000029c,0x0000029d,0x0000029e,0x000002a1, +0x000002a4,0x000002a7,0x000002aa,0x000002ad, +0x000002b0,0x000002b3,0x0003003e,0x0000029a, +0x000002b4,0x0004003d,0x00000006,0x000002b5, +0x0000029a,0x0004003d,0x0000003f,0x000002bb, +0x00000296,0x0003003e,0x000002bd,0x000002ba, +0x00050041,0x0000000c,0x000002be,0x000002bd, +0x000002bb,0x0004003d,0x00000007,0x000002bf, +0x000002be,0x0005008e,0x00000007,0x000002c0, +0x000002bf,0x000002b5,0x0003003e,0x00000291, +0x000002c0,0x000200f9,0x00000295,0x000200f8, +0x00000295,0x0004003d,0x00000007,0x000002c2, +0x00000291,0x0007000c,0x00000007,0x000002c3, +0x00000001,0x00000028,0x000002c2,0x00000114, +0x0007000c,0x00000007,0x000002c6,0x00000001, +0x0000001a,0x000002c3,0x000002c5,0x0003003e, +0x000002c1,0x000002c6,0x0004003d,0x00000007, +0x000002c7,0x000002c1,0x00050039,0x00000007, +0x000002c8,0x0000002f,0x000002c7,0x000200fe, +0x000002c8,0x00010038} diff --git a/gfx/drivers/vulkan_shaders/hdr_common.glsl b/gfx/drivers/vulkan_shaders/hdr_common.glsl index aee52a33433b..f56f4a8277be 100644 --- a/gfx/drivers/vulkan_shaders/hdr_common.glsl +++ b/gfx/drivers/vulkan_shaders/hdr_common.glsl @@ -7,7 +7,7 @@ layout(std140, set = 0, binding = 0) uniform UBO float MaxNits; uint SubpixelLayout; float Scanlines; - float ExpandGamut; + uint ExpandGamut; float InverseTonemap; float HDR10; } global; @@ -50,19 +50,6 @@ vec3 Tonemap(const vec3 hdr_linear) } /* Colorspace conversions */ -/* START Converted from (Copyright (c) Microsoft Corporation - Licensed under the MIT License.) https://github.com/microsoft/Xbox-ATG-Samples/tree/master/Kits/ATGTK/HDR */ - -vec3 LinearToST2084(vec3 normalizedLinearValue) -{ - vec3 ST2084 = pow((0.8359375f + 18.8515625f * pow(abs(normalizedLinearValue), vec3(0.1593017578f))) / (1.0f + 18.6875f * pow(abs(normalizedLinearValue), vec3(0.1593017578f))), vec3(78.84375f)); - return ST2084; /* Don't clamp between [0..1], so we can still perform operations on scene values higher than 10,000 nits */ -} - -vec3 ST2084ToLinear(vec3 ST2084) -{ - vec3 normalizedLinear = pow(abs(max(pow(abs(ST2084), vec3(1.0f / 78.84375f)) - 0.8359375f, 0.0f) / (18.8515625f - 18.6875f * pow(abs(ST2084), vec3(1.0f / 78.84375f)))), vec3(1.0f / 0.1593017578f)); - return normalizedLinear; -} /* Color rotation matrix to rotate Rec.709 color primaries into Rec.2020 */ const mat3 k709to2020 = mat3 ( @@ -76,6 +63,13 @@ const mat3 k2020to709 = mat3 ( -0.1245505f, 1.1328999f, -0.0083494f, -0.0181508f, -0.1005789f, 1.1187297f); +/* Color rotation matrix to rotate Rec.2020 color primaries into DCI-P3 */ +const mat3 k2020toP3 = mat3 ( + 1.343578f, -0.282180f, -0.061399f, + -0.065297f, 1.075788f, -0.010490f, + 0.002822f, -0.019598f, 1.016777f); + +/* START Converted from (Copyright (c) Microsoft Corporation - Licensed under the MIT License.) https://github.com/microsoft/Xbox-ATG-Samples/tree/master/Kits/ATGTK/HDR */ /* Rotation matrix describing a custom color space which is bigger than Rec.709, but a little smaller than P3-D65. * This enhances colors, especially in the SDR range, by being a little more saturated. This can be used instead * of from709to2020. @@ -91,6 +85,19 @@ const mat3 k2020toExpanded709 = mat3 ( -0.0794803f, 1.0898f, -0.0103244f, 0.00343516f, -0.020207f, 1.01677f); +vec3 LinearToST2084(vec3 normalizedLinearValue) +{ + vec3 ST2084 = pow((0.8359375f + 18.8515625f * pow(abs(normalizedLinearValue), vec3(0.1593017578f))) / (1.0f + 18.6875f * pow(abs(normalizedLinearValue), vec3(0.1593017578f))), vec3(78.84375f)); + return ST2084; /* Don't clamp between [0..1], so we can still perform operations on scene values higher than 10,000 nits */ +} + +vec3 ST2084ToLinear(vec3 ST2084) +{ + vec3 normalizedLinear = pow(abs(max(pow(abs(ST2084), vec3(1.0f / 78.84375f)) - 0.8359375f, 0.0f) / (18.8515625f - 18.6875f * pow(abs(ST2084), vec3(1.0f / 78.84375f)))), vec3(1.0f / 0.1593017578f)); + return normalizedLinear; +} +/* END Converted from (Copyright (c) Microsoft Corporation - Licensed under the MIT License.) https://github.com/microsoft/Xbox-ATG-Samples/tree/master/Kits/ATGTK/HDR */ + /* Per spec, the max nits for ST.2084 is 10,000 nits. We need to establish what the value of 1.0f means * by normalizing the values using the defined nits for paper white. According to SDR specs, paper white * is 80 nits, but that is paper white in a cinema with a dark environment, and is perceived as grey on @@ -98,10 +105,6 @@ const mat3 k2020toExpanded709 = mat3 ( * that the consumer perceives as white in his living room, e.g. 200 nits. As reference, PC monitors is * normally in the range 200-300 nits, SDR TVs 150-250 nits. */ -vec3 NormalizeHDRSceneValue(vec3 hdrSceneValue) -{ - return hdrSceneValue * (global.PaperWhiteNits / kMaxNitsFor2084); -} /* Calc the value that the HDR scene has to use to output a certain brightness */ vec3 CalcHDRSceneValue(vec3 nits) @@ -109,31 +112,6 @@ vec3 CalcHDRSceneValue(vec3 nits) return nits * kMaxNitsFor2084 / global.PaperWhiteNits; } -/* Converts a linear HDR value in the Rec.709 colorspace to a non-linear HDR10 value in the BT. 2020 colorspace */ -vec3 LinearToHDR10(vec3 hdr_linear) -{ - vec3 rec2020 = hdr_linear * k709to2020; - if (global.ExpandGamut > 0.0f) - rec2020 = hdr_linear * kExpanded709to2020; - vec3 linearColour = NormalizeHDRSceneValue(rec2020); - - return LinearToST2084(max(linearColour, 0.0)); -} - -vec4 LinearToHDR10(vec4 hdr_linear) -{ - vec3 rec2020 = hdr_linear.rgb * k709to2020; - if (global.ExpandGamut > 0.0f) - rec2020 = hdr_linear.rgb * kExpanded709to2020; - vec3 linearColour = NormalizeHDRSceneValue(rec2020); - - vec3 hdr10 = LinearToST2084(max(linearColour, 0.0)); - - return vec4(hdr10, hdr_linear.a); -} - -/* END Converted from (Copyright (c) Microsoft Corporation - Licensed under the MIT License.) https://github.com/microsoft/Xbox-ATG-Samples/tree/master/Kits/ATGTK/HDR */ - /* Converts a non-linear HDR10 value in the BT. 2020 colorspace to a linear HDR value in the Rec. 709 colorspace */ vec3 HDR10ToLinear(vec3 hdr10) { @@ -141,8 +119,10 @@ vec3 HDR10ToLinear(vec3 hdr10) vec3 rec2020 = CalcHDRSceneValue(normalizedLinear); vec3 hdr = rec2020 * k2020to709; - if (global.ExpandGamut > 0.0f) + if (global.ExpandGamut == 1u) + { hdr = rec2020 * k2020toExpanded709; + } return hdr; } diff --git a/gfx/drivers/vulkan_shaders/hdr_tonemap.frag.inc b/gfx/drivers/vulkan_shaders/hdr_tonemap.frag.inc index 7c11ca73935d..d7330e88f70f 100644 --- a/gfx/drivers/vulkan_shaders/hdr_tonemap.frag.inc +++ b/gfx/drivers/vulkan_shaders/hdr_tonemap.frag.inc @@ -1,9 +1,9 @@ -{0x07230203,0x00010000,0x000d000b,0x000000e7, +{0x07230203,0x00010000,0x000d000b,0x000000f5, 0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001, 0x0007000f,0x00000004,0x00000004,0x6e69616d, -0x00000000,0x000000a4,0x000000c0,0x00030010, +0x00000000,0x000000a5,0x000000c1,0x00030010, 0x00000004,0x00000007,0x00030003,0x00000001, 0x00000136,0x000a0004,0x475f4c47,0x4c474f4f, 0x70635f45,0x74735f70,0x5f656c79,0x656e696c, @@ -49,14 +49,14 @@ 0x0000006d,0x00040005,0x0000006e,0x32636572, 0x00303230,0x00040005,0x0000006f,0x61726170, 0x0000006d,0x00030005,0x00000072,0x00726468, -0x00040005,0x0000009c,0x72756f73,0x00006563, -0x00040005,0x000000a0,0x72756f53,0x00006563, -0x00050005,0x000000a4,0x78655476,0x726f6f43, -0x00000064,0x00030005,0x000000a7,0x00726468, -0x00040005,0x000000aa,0x656e696c,0x00007261, -0x00040005,0x000000b2,0x61726170,0x0000006d, -0x00030005,0x000000b5,0x00726473,0x00050005, -0x000000c0,0x67617246,0x6f6c6f43,0x00000072, +0x00040005,0x0000009d,0x72756f73,0x00006563, +0x00040005,0x000000a1,0x72756f53,0x00006563, +0x00050005,0x000000a5,0x78655476,0x726f6f43, +0x00000064,0x00030005,0x000000a8,0x00726468, +0x00040005,0x000000ab,0x656e696c,0x00007261, +0x00040005,0x000000b3,0x61726170,0x0000006d, +0x00030005,0x000000b6,0x00726473,0x00050005, +0x000000c1,0x67617246,0x6f6c6f43,0x00000072, 0x00030047,0x0000002c,0x00000002,0x00040048, 0x0000002c,0x00000000,0x00000005,0x00050048, 0x0000002c,0x00000000,0x00000007,0x00000010, @@ -69,284 +69,302 @@ 0x00000064,0x00040048,0x0000002c,0x00000005, 0x00000000,0x00050048,0x0000002c,0x00000005, 0x00000023,0x00000068,0x00050048,0x0000002c, -0x00000006,0x00000023,0x0000006c,0x00050048, +0x00000006,0x00000023,0x0000006c,0x00040048, +0x0000002c,0x00000007,0x00000000,0x00050048, 0x0000002c,0x00000007,0x00000023,0x00000070, 0x00050048,0x0000002c,0x00000008,0x00000023, 0x00000074,0x00050048,0x0000002c,0x00000009, 0x00000023,0x00000078,0x00040047,0x0000002e, 0x00000021,0x00000000,0x00040047,0x0000002e, -0x00000022,0x00000000,0x00040047,0x000000a0, -0x00000021,0x00000002,0x00040047,0x000000a0, -0x00000022,0x00000000,0x00040047,0x000000a4, -0x0000001e,0x00000000,0x00040047,0x000000c0, -0x0000001e,0x00000000,0x00020013,0x00000002, -0x00030021,0x00000003,0x00000002,0x00030016, -0x00000006,0x00000020,0x00040017,0x00000007, -0x00000006,0x00000003,0x00040021,0x00000008, -0x00000007,0x00000007,0x00040020,0x0000000c, -0x00000007,0x00000007,0x00040021,0x0000000d, -0x00000007,0x0000000c,0x00040020,0x00000017, -0x00000007,0x00000006,0x00040015,0x00000019, -0x00000020,0x00000000,0x0004002b,0x00000019, -0x0000001a,0x00000000,0x0004002b,0x00000019, -0x0000001c,0x00000001,0x0004002b,0x00000019, -0x0000001e,0x00000002,0x0004002b,0x00000006, -0x00000023,0x38d1b717,0x00020014,0x00000024, -0x00040017,0x0000002a,0x00000006,0x00000004, -0x00040018,0x0000002b,0x0000002a,0x00000004, -0x000c001e,0x0000002c,0x0000002b,0x0000002a, -0x0000002a,0x00000006,0x00000006,0x00000019, -0x00000006,0x00000006,0x00000006,0x00000006, -0x00040020,0x0000002d,0x00000002,0x0000002c, -0x0004003b,0x0000002d,0x0000002e,0x00000002, -0x00040015,0x0000002f,0x00000020,0x00000001, -0x0004002b,0x0000002f,0x00000030,0x00000004, -0x00040020,0x00000031,0x00000002,0x00000006, -0x0004002b,0x0000002f,0x00000034,0x00000003, -0x0004002b,0x00000006,0x00000039,0x3f800000, -0x0004002b,0x00000006,0x00000048,0x3c4fcdac, -0x0006002c,0x00000007,0x00000049,0x00000048, -0x00000048,0x00000048,0x0004002b,0x00000006, -0x0000004b,0x3f560000,0x0004002b,0x00000006, -0x0000004e,0x00000000,0x0004002b,0x00000006, -0x00000051,0x4196d000,0x0004002b,0x00000006, -0x00000052,0x41958000,0x0004002b,0x00000006, -0x0000005b,0x40c8e06b,0x0006002c,0x00000007, -0x0000005c,0x0000005b,0x0000005b,0x0000005b, -0x0004002b,0x00000006,0x00000062,0x461c4000, -0x00040018,0x00000074,0x00000007,0x00000003, -0x0004002b,0x00000006,0x00000075,0x3fd48af8, -0x0004002b,0x00000006,0x00000076,0xbf166fa6, -0x0004002b,0x00000006,0x00000077,0xbd953254, -0x0006002c,0x00000007,0x00000078,0x00000075, -0x00000076,0x00000077,0x0004002b,0x00000006, -0x00000079,0xbdff1455,0x0004002b,0x00000006, -0x0000007a,0x3f9102dd,0x0004002b,0x00000006, -0x0000007b,0xbc08cbec,0x0006002c,0x00000007, -0x0000007c,0x00000079,0x0000007a,0x0000007b, -0x0004002b,0x00000006,0x0000007d,0xbc94b0fd, -0x0004002b,0x00000006,0x0000007e,0xbdcdfc4f, -0x0004002b,0x00000006,0x0000007f,0x3f8f3289, -0x0006002c,0x00000007,0x00000080,0x0000007d, -0x0000007e,0x0000007f,0x0006002c,0x00000074, -0x00000081,0x00000078,0x0000007c,0x00000080, -0x0004002b,0x0000002f,0x00000083,0x00000007, -0x0004002b,0x00000006,0x0000008a,0x3fd15326, -0x0004002b,0x00000006,0x0000008b,0xbf1210e0, -0x0004002b,0x00000006,0x0000008c,0xbd84a904, -0x0006002c,0x00000007,0x0000008d,0x0000008a, -0x0000008b,0x0000008c,0x0004002b,0x00000006, -0x0000008e,0xbda2c691,0x0004002b,0x00000006, -0x0000008f,0x3f8b7e91,0x0004002b,0x00000006, -0x00000090,0xbc2927ac,0x0006002c,0x00000007, -0x00000091,0x0000008e,0x0000008f,0x00000090, -0x0004002b,0x00000006,0x00000092,0x3b61206c, -0x0004002b,0x00000006,0x00000093,0xbca58927, -0x0004002b,0x00000006,0x00000094,0x3f822585, -0x0006002c,0x00000007,0x00000095,0x00000092, -0x00000093,0x00000094,0x0006002c,0x00000074, -0x00000096,0x0000008d,0x00000091,0x00000095, -0x00040020,0x0000009b,0x00000007,0x0000002a, -0x00090019,0x0000009d,0x00000006,0x00000001, -0x00000000,0x00000000,0x00000000,0x00000001, -0x00000000,0x0003001b,0x0000009e,0x0000009d, -0x00040020,0x0000009f,0x00000000,0x0000009e, -0x0004003b,0x0000009f,0x000000a0,0x00000000, -0x00040017,0x000000a2,0x00000006,0x00000002, -0x00040020,0x000000a3,0x00000001,0x000000a2, -0x0004003b,0x000000a3,0x000000a4,0x00000001, -0x0004002b,0x0000002f,0x000000ac,0x00000009, -0x0004002b,0x0000002f,0x000000b7,0x00000008, -0x00040020,0x000000bf,0x00000003,0x0000002a, -0x0004003b,0x000000bf,0x000000c0,0x00000003, -0x0004002b,0x00000019,0x000000c2,0x00000003, -0x0004002b,0x00000006,0x000000c9,0x3e59b3d0, -0x0004002b,0x00000006,0x000000ca,0x3f371759, -0x0004002b,0x00000006,0x000000cb,0x3d93dd98, -0x0006002c,0x00000007,0x000000cc,0x000000c9, -0x000000ca,0x000000cb,0x0004002b,0x00000006, -0x000000cd,0x3e5cf9a0,0x0004002b,0x00000006, -0x000000ce,0x3f33e3c1,0x0004002b,0x00000006, -0x000000cf,0x3df7be12,0x0006002c,0x00000007, -0x000000d0,0x000000cd,0x000000ce,0x000000cf, -0x0004002b,0x00000006,0x000000d1,0x3f209d8c, -0x0004002b,0x00000006,0x000000d2,0x3ea897a6, -0x0004002b,0x00000006,0x000000d3,0x3d31699a, -0x0006002c,0x00000007,0x000000d4,0x000000d1, -0x000000d2,0x000000d3,0x0004002b,0x00000006, -0x000000d5,0x3d8d82ba,0x0004002b,0x00000006, -0x000000d6,0x3f6b66f9,0x0004002b,0x00000006, -0x000000d7,0x3c3a2454,0x0006002c,0x00000007, -0x000000d8,0x000000d5,0x000000d6,0x000000d7, -0x0004002b,0x00000006,0x000000d9,0x3c8647ad, -0x0004002b,0x00000006,0x000000da,0x3db44044, -0x0004002b,0x00000006,0x000000db,0x3f6545b7, -0x0006002c,0x00000007,0x000000dc,0x000000d9, -0x000000da,0x000000db,0x0006002c,0x00000074, -0x000000dd,0x000000d4,0x000000d8,0x000000dc, -0x0004002b,0x00000006,0x000000de,0x3d3b5fbd, -0x0004002b,0x00000006,0x000000df,0x3f71184c, -0x0004002b,0x00000006,0x000000e0,0x3c4c6d2b, -0x0006002c,0x00000007,0x000000e1,0x000000de, -0x000000df,0x000000e0,0x0004002b,0x00000006, -0x000000e2,0xba9eab51,0x0004002b,0x00000006, -0x000000e3,0x3c903679,0x0004002b,0x00000006, -0x000000e4,0x3f7bcdab,0x0006002c,0x00000007, -0x000000e5,0x000000e2,0x000000e3,0x000000e4, -0x0006002c,0x00000074,0x000000e6,0x000000d4, -0x000000e1,0x000000e5,0x00050036,0x00000002, -0x00000004,0x00000000,0x00000003,0x000200f8, -0x00000005,0x0004003b,0x0000009b,0x0000009c, -0x00000007,0x0004003b,0x0000000c,0x000000a7, -0x00000007,0x0004003b,0x0000000c,0x000000aa, -0x00000007,0x0004003b,0x0000000c,0x000000b2, -0x00000007,0x0004003b,0x0000000c,0x000000b5, -0x00000007,0x0004003d,0x0000009e,0x000000a1, -0x000000a0,0x0004003d,0x000000a2,0x000000a5, -0x000000a4,0x00050057,0x0000002a,0x000000a6, -0x000000a1,0x000000a5,0x0003003e,0x0000009c, -0x000000a6,0x0004003d,0x0000002a,0x000000a8, -0x0000009c,0x0008004f,0x00000007,0x000000a9, -0x000000a8,0x000000a8,0x00000000,0x00000001, -0x00000002,0x0003003e,0x000000a7,0x000000a9, -0x0004003d,0x00000007,0x000000ab,0x000000a7, -0x0003003e,0x000000aa,0x000000ab,0x00050041, -0x00000031,0x000000ad,0x0000002e,0x000000ac, -0x0004003d,0x00000006,0x000000ae,0x000000ad, -0x000500ba,0x00000024,0x000000af,0x000000ae, -0x0000004e,0x000300f7,0x000000b1,0x00000000, -0x000400fa,0x000000af,0x000000b0,0x000000b1, -0x000200f8,0x000000b0,0x0004003d,0x00000007, -0x000000b3,0x000000a7,0x0003003e,0x000000b2, -0x000000b3,0x00050039,0x00000007,0x000000b4, -0x00000015,0x000000b2,0x0003003e,0x000000aa, -0x000000b4,0x000200f9,0x000000b1,0x000200f8, -0x000000b1,0x0004003d,0x00000007,0x000000b6, -0x000000a7,0x0003003e,0x000000b5,0x000000b6, -0x00050041,0x00000031,0x000000b8,0x0000002e, -0x000000b7,0x0004003d,0x00000006,0x000000b9, -0x000000b8,0x000500ba,0x00000024,0x000000ba, -0x000000b9,0x0000004e,0x000300f7,0x000000bc, -0x00000000,0x000400fa,0x000000ba,0x000000bb, -0x000000bc,0x000200f8,0x000000bb,0x0004003d, -0x00000007,0x000000bd,0x000000aa,0x00050039, -0x00000007,0x000000be,0x0000000a,0x000000bd, -0x0003003e,0x000000b5,0x000000be,0x000200f9, -0x000000bc,0x000200f8,0x000000bc,0x0004003d, -0x00000007,0x000000c1,0x000000b5,0x00050041, -0x00000017,0x000000c3,0x0000009c,0x000000c2, -0x0004003d,0x00000006,0x000000c4,0x000000c3, -0x00050051,0x00000006,0x000000c5,0x000000c1, -0x00000000,0x00050051,0x00000006,0x000000c6, -0x000000c1,0x00000001,0x00050051,0x00000006, -0x000000c7,0x000000c1,0x00000002,0x00070050, -0x0000002a,0x000000c8,0x000000c5,0x000000c6, -0x000000c7,0x000000c4,0x0003003e,0x000000c0, -0x000000c8,0x000100fd,0x00010038,0x00050036, -0x00000007,0x0000000a,0x00000000,0x00000008, -0x00030037,0x00000007,0x00000009,0x000200f8, -0x0000000b,0x0004003b,0x00000017,0x00000018, -0x00000007,0x0004003b,0x00000017,0x00000029, -0x00000007,0x0004003b,0x00000017,0x00000038, -0x00000007,0x00050051,0x00000006,0x0000001b, -0x00000009,0x00000000,0x00050051,0x00000006, -0x0000001d,0x00000009,0x00000001,0x00050051, -0x00000006,0x0000001f,0x00000009,0x00000002, -0x0007000c,0x00000006,0x00000020,0x00000001, -0x00000028,0x0000001d,0x0000001f,0x0007000c, -0x00000006,0x00000021,0x00000001,0x00000028, -0x0000001b,0x00000020,0x0003003e,0x00000018, -0x00000021,0x0004003d,0x00000006,0x00000022, -0x00000018,0x000500b8,0x00000024,0x00000025, -0x00000022,0x00000023,0x000300f7,0x00000027, -0x00000000,0x000400fa,0x00000025,0x00000026, -0x00000027,0x000200f8,0x00000026,0x000200fe, -0x00000009,0x000200f8,0x00000027,0x00050041, -0x00000031,0x00000032,0x0000002e,0x00000030, -0x0004003d,0x00000006,0x00000033,0x00000032, -0x00050041,0x00000031,0x00000035,0x0000002e, -0x00000034,0x0004003d,0x00000006,0x00000036, -0x00000035,0x00050088,0x00000006,0x00000037, -0x00000033,0x00000036,0x0003003e,0x00000029, -0x00000037,0x0004003d,0x00000006,0x0000003a, -0x00000029,0x00050088,0x00000006,0x0000003b, -0x00000039,0x0000003a,0x00050083,0x00000006, -0x0000003c,0x00000039,0x0000003b,0x0003003e, -0x00000038,0x0000003c,0x0004003d,0x00000006, -0x0000003d,0x00000018,0x0004003d,0x00000006, -0x0000003e,0x00000038,0x00050085,0x00000006, -0x0000003f,0x0000003d,0x0000003e,0x00050081, -0x00000006,0x00000040,0x00000039,0x0000003f, -0x00060050,0x00000007,0x00000041,0x00000040, -0x00000040,0x00000040,0x00050088,0x00000007, -0x00000042,0x00000009,0x00000041,0x000200fe, -0x00000042,0x00010038,0x00050036,0x00000007, -0x0000000f,0x00000000,0x0000000d,0x00030037, -0x0000000c,0x0000000e,0x000200f8,0x00000010, -0x0004003b,0x0000000c,0x00000045,0x00000007, -0x0004003d,0x00000007,0x00000046,0x0000000e, -0x0006000c,0x00000007,0x00000047,0x00000001, -0x00000004,0x00000046,0x0007000c,0x00000007, -0x0000004a,0x00000001,0x0000001a,0x00000047, -0x00000049,0x00060050,0x00000007,0x0000004c, -0x0000004b,0x0000004b,0x0000004b,0x00050083, -0x00000007,0x0000004d,0x0000004a,0x0000004c, -0x00060050,0x00000007,0x0000004f,0x0000004e, -0x0000004e,0x0000004e,0x0007000c,0x00000007, -0x00000050,0x00000001,0x00000028,0x0000004d, -0x0000004f,0x0004003d,0x00000007,0x00000053, -0x0000000e,0x0006000c,0x00000007,0x00000054, -0x00000001,0x00000004,0x00000053,0x0007000c, -0x00000007,0x00000055,0x00000001,0x0000001a, -0x00000054,0x00000049,0x0005008e,0x00000007, -0x00000056,0x00000055,0x00000052,0x00060050, -0x00000007,0x00000057,0x00000051,0x00000051, -0x00000051,0x00050083,0x00000007,0x00000058, -0x00000057,0x00000056,0x00050088,0x00000007, -0x00000059,0x00000050,0x00000058,0x0006000c, -0x00000007,0x0000005a,0x00000001,0x00000004, -0x00000059,0x0007000c,0x00000007,0x0000005d, -0x00000001,0x0000001a,0x0000005a,0x0000005c, -0x0003003e,0x00000045,0x0000005d,0x0004003d, -0x00000007,0x0000005e,0x00000045,0x000200fe, -0x0000005e,0x00010038,0x00050036,0x00000007, -0x00000012,0x00000000,0x0000000d,0x00030037, -0x0000000c,0x00000011,0x000200f8,0x00000013, -0x0004003d,0x00000007,0x00000061,0x00000011, -0x0005008e,0x00000007,0x00000063,0x00000061, -0x00000062,0x00050041,0x00000031,0x00000064, -0x0000002e,0x00000034,0x0004003d,0x00000006, -0x00000065,0x00000064,0x00060050,0x00000007, -0x00000066,0x00000065,0x00000065,0x00000065, -0x00050088,0x00000007,0x00000067,0x00000063, -0x00000066,0x000200fe,0x00000067,0x00010038, -0x00050036,0x00000007,0x00000015,0x00000000, -0x0000000d,0x00030037,0x0000000c,0x00000014, -0x000200f8,0x00000016,0x0004003b,0x0000000c, -0x0000006a,0x00000007,0x0004003b,0x0000000c, -0x0000006b,0x00000007,0x0004003b,0x0000000c, -0x0000006e,0x00000007,0x0004003b,0x0000000c, -0x0000006f,0x00000007,0x0004003b,0x0000000c, -0x00000072,0x00000007,0x0004003d,0x00000007, -0x0000006c,0x00000014,0x0003003e,0x0000006b, -0x0000006c,0x00050039,0x00000007,0x0000006d, -0x0000000f,0x0000006b,0x0003003e,0x0000006a, -0x0000006d,0x0004003d,0x00000007,0x00000070, -0x0000006a,0x0003003e,0x0000006f,0x00000070, -0x00050039,0x00000007,0x00000071,0x00000012, -0x0000006f,0x0003003e,0x0000006e,0x00000071, -0x0004003d,0x00000007,0x00000073,0x0000006e, -0x00050090,0x00000007,0x00000082,0x00000073, -0x00000081,0x0003003e,0x00000072,0x00000082, -0x00050041,0x00000031,0x00000084,0x0000002e, -0x00000083,0x0004003d,0x00000006,0x00000085, -0x00000084,0x000500ba,0x00000024,0x00000086, -0x00000085,0x0000004e,0x000300f7,0x00000088, -0x00000000,0x000400fa,0x00000086,0x00000087, -0x00000088,0x000200f8,0x00000087,0x0004003d, -0x00000007,0x00000089,0x0000006e,0x00050090, -0x00000007,0x00000097,0x00000089,0x00000096, -0x0003003e,0x00000072,0x00000097,0x000200f9, -0x00000088,0x000200f8,0x00000088,0x0004003d, -0x00000007,0x00000098,0x00000072,0x000200fe, -0x00000098,0x00010038} +0x00000022,0x00000000,0x00030047,0x00000086, +0x00000000,0x00040047,0x000000a1,0x00000021, +0x00000002,0x00040047,0x000000a1,0x00000022, +0x00000000,0x00040047,0x000000a5,0x0000001e, +0x00000000,0x00040047,0x000000c1,0x0000001e, +0x00000000,0x00020013,0x00000002,0x00030021, +0x00000003,0x00000002,0x00030016,0x00000006, +0x00000020,0x00040017,0x00000007,0x00000006, +0x00000003,0x00040021,0x00000008,0x00000007, +0x00000007,0x00040020,0x0000000c,0x00000007, +0x00000007,0x00040021,0x0000000d,0x00000007, +0x0000000c,0x00040020,0x00000017,0x00000007, +0x00000006,0x00040015,0x00000019,0x00000020, +0x00000000,0x0004002b,0x00000019,0x0000001a, +0x00000000,0x0004002b,0x00000019,0x0000001c, +0x00000001,0x0004002b,0x00000019,0x0000001e, +0x00000002,0x0004002b,0x00000006,0x00000023, +0x38d1b717,0x00020014,0x00000024,0x00040017, +0x0000002a,0x00000006,0x00000004,0x00040018, +0x0000002b,0x0000002a,0x00000004,0x000c001e, +0x0000002c,0x0000002b,0x0000002a,0x0000002a, +0x00000006,0x00000006,0x00000019,0x00000006, +0x00000019,0x00000006,0x00000006,0x00040020, +0x0000002d,0x00000002,0x0000002c,0x0004003b, +0x0000002d,0x0000002e,0x00000002,0x00040015, +0x0000002f,0x00000020,0x00000001,0x0004002b, +0x0000002f,0x00000030,0x00000004,0x00040020, +0x00000031,0x00000002,0x00000006,0x0004002b, +0x0000002f,0x00000034,0x00000003,0x0004002b, +0x00000006,0x00000039,0x3f800000,0x0004002b, +0x00000006,0x00000048,0x3c4fcdac,0x0006002c, +0x00000007,0x00000049,0x00000048,0x00000048, +0x00000048,0x0004002b,0x00000006,0x0000004b, +0x3f560000,0x0004002b,0x00000006,0x0000004e, +0x00000000,0x0004002b,0x00000006,0x00000051, +0x4196d000,0x0004002b,0x00000006,0x00000052, +0x41958000,0x0004002b,0x00000006,0x0000005b, +0x40c8e06b,0x0006002c,0x00000007,0x0000005c, +0x0000005b,0x0000005b,0x0000005b,0x0004002b, +0x00000006,0x00000062,0x461c4000,0x00040018, +0x00000074,0x00000007,0x00000003,0x0004002b, +0x00000006,0x00000075,0x3fd48af8,0x0004002b, +0x00000006,0x00000076,0xbf166fa6,0x0004002b, +0x00000006,0x00000077,0xbd953254,0x0006002c, +0x00000007,0x00000078,0x00000075,0x00000076, +0x00000077,0x0004002b,0x00000006,0x00000079, +0xbdff1455,0x0004002b,0x00000006,0x0000007a, +0x3f9102dd,0x0004002b,0x00000006,0x0000007b, +0xbc08cbec,0x0006002c,0x00000007,0x0000007c, +0x00000079,0x0000007a,0x0000007b,0x0004002b, +0x00000006,0x0000007d,0xbc94b0fd,0x0004002b, +0x00000006,0x0000007e,0xbdcdfc4f,0x0004002b, +0x00000006,0x0000007f,0x3f8f3289,0x0006002c, +0x00000007,0x00000080,0x0000007d,0x0000007e, +0x0000007f,0x0006002c,0x00000074,0x00000081, +0x00000078,0x0000007c,0x00000080,0x0004002b, +0x0000002f,0x00000083,0x00000007,0x00040020, +0x00000084,0x00000002,0x00000019,0x0004002b, +0x00000006,0x0000008b,0x3fd15326,0x0004002b, +0x00000006,0x0000008c,0xbf1210e0,0x0004002b, +0x00000006,0x0000008d,0xbd84a904,0x0006002c, +0x00000007,0x0000008e,0x0000008b,0x0000008c, +0x0000008d,0x0004002b,0x00000006,0x0000008f, +0xbda2c691,0x0004002b,0x00000006,0x00000090, +0x3f8b7e91,0x0004002b,0x00000006,0x00000091, +0xbc2927ac,0x0006002c,0x00000007,0x00000092, +0x0000008f,0x00000090,0x00000091,0x0004002b, +0x00000006,0x00000093,0x3b61206c,0x0004002b, +0x00000006,0x00000094,0xbca58927,0x0004002b, +0x00000006,0x00000095,0x3f822585,0x0006002c, +0x00000007,0x00000096,0x00000093,0x00000094, +0x00000095,0x0006002c,0x00000074,0x00000097, +0x0000008e,0x00000092,0x00000096,0x00040020, +0x0000009c,0x00000007,0x0000002a,0x00090019, +0x0000009e,0x00000006,0x00000001,0x00000000, +0x00000000,0x00000000,0x00000001,0x00000000, +0x0003001b,0x0000009f,0x0000009e,0x00040020, +0x000000a0,0x00000000,0x0000009f,0x0004003b, +0x000000a0,0x000000a1,0x00000000,0x00040017, +0x000000a3,0x00000006,0x00000002,0x00040020, +0x000000a4,0x00000001,0x000000a3,0x0004003b, +0x000000a4,0x000000a5,0x00000001,0x0004002b, +0x0000002f,0x000000ad,0x00000009,0x0004002b, +0x0000002f,0x000000b8,0x00000008,0x00040020, +0x000000c0,0x00000003,0x0000002a,0x0004003b, +0x000000c0,0x000000c1,0x00000003,0x0004002b, +0x00000019,0x000000c3,0x00000003,0x0004002b, +0x00000006,0x000000ca,0x3e59b3d0,0x0004002b, +0x00000006,0x000000cb,0x3f371759,0x0004002b, +0x00000006,0x000000cc,0x3d93dd98,0x0006002c, +0x00000007,0x000000cd,0x000000ca,0x000000cb, +0x000000cc,0x0004002b,0x00000006,0x000000ce, +0x3e5cf9a0,0x0004002b,0x00000006,0x000000cf, +0x3f33e3c1,0x0004002b,0x00000006,0x000000d0, +0x3df7be12,0x0006002c,0x00000007,0x000000d1, +0x000000ce,0x000000cf,0x000000d0,0x0004002b, +0x00000006,0x000000d2,0x3f209d8c,0x0004002b, +0x00000006,0x000000d3,0x3ea897a6,0x0004002b, +0x00000006,0x000000d4,0x3d31699a,0x0006002c, +0x00000007,0x000000d5,0x000000d2,0x000000d3, +0x000000d4,0x0004002b,0x00000006,0x000000d6, +0x3d8d82ba,0x0004002b,0x00000006,0x000000d7, +0x3f6b66f9,0x0004002b,0x00000006,0x000000d8, +0x3c3a2454,0x0006002c,0x00000007,0x000000d9, +0x000000d6,0x000000d7,0x000000d8,0x0004002b, +0x00000006,0x000000da,0x3c8647ad,0x0004002b, +0x00000006,0x000000db,0x3db44044,0x0004002b, +0x00000006,0x000000dc,0x3f6545b7,0x0006002c, +0x00000007,0x000000dd,0x000000da,0x000000db, +0x000000dc,0x0006002c,0x00000074,0x000000de, +0x000000d5,0x000000d9,0x000000dd,0x0004002b, +0x00000006,0x000000df,0x3fabfa5d,0x0004002b, +0x00000006,0x000000e0,0xbe9079e6,0x0004002b, +0x00000006,0x000000e1,0xbd7b7d85,0x0006002c, +0x00000007,0x000000e2,0x000000df,0x000000e0, +0x000000e1,0x0004002b,0x00000006,0x000000e3, +0xbd85ba6f,0x0004002b,0x00000006,0x000000e4, +0x3f89b36c,0x0004002b,0x00000006,0x000000e5, +0xbc2bde40,0x0006002c,0x00000007,0x000000e6, +0x000000e3,0x000000e4,0x000000e5,0x0004002b, +0x00000006,0x000000e7,0x3b38f14e,0x0004002b, +0x00000006,0x000000e8,0xbca08bfc,0x0004002b, +0x00000006,0x000000e9,0x3f8225c0,0x0006002c, +0x00000007,0x000000ea,0x000000e7,0x000000e8, +0x000000e9,0x0006002c,0x00000074,0x000000eb, +0x000000e2,0x000000e6,0x000000ea,0x0004002b, +0x00000006,0x000000ec,0x3d3b5fbd,0x0004002b, +0x00000006,0x000000ed,0x3f71184c,0x0004002b, +0x00000006,0x000000ee,0x3c4c6d2b,0x0006002c, +0x00000007,0x000000ef,0x000000ec,0x000000ed, +0x000000ee,0x0004002b,0x00000006,0x000000f0, +0xba9eab51,0x0004002b,0x00000006,0x000000f1, +0x3c903679,0x0004002b,0x00000006,0x000000f2, +0x3f7bcdab,0x0006002c,0x00000007,0x000000f3, +0x000000f0,0x000000f1,0x000000f2,0x0006002c, +0x00000074,0x000000f4,0x000000d5,0x000000ef, +0x000000f3,0x00050036,0x00000002,0x00000004, +0x00000000,0x00000003,0x000200f8,0x00000005, +0x0004003b,0x0000009c,0x0000009d,0x00000007, +0x0004003b,0x0000000c,0x000000a8,0x00000007, +0x0004003b,0x0000000c,0x000000ab,0x00000007, +0x0004003b,0x0000000c,0x000000b3,0x00000007, +0x0004003b,0x0000000c,0x000000b6,0x00000007, +0x0004003d,0x0000009f,0x000000a2,0x000000a1, +0x0004003d,0x000000a3,0x000000a6,0x000000a5, +0x00050057,0x0000002a,0x000000a7,0x000000a2, +0x000000a6,0x0003003e,0x0000009d,0x000000a7, +0x0004003d,0x0000002a,0x000000a9,0x0000009d, +0x0008004f,0x00000007,0x000000aa,0x000000a9, +0x000000a9,0x00000000,0x00000001,0x00000002, +0x0003003e,0x000000a8,0x000000aa,0x0004003d, +0x00000007,0x000000ac,0x000000a8,0x0003003e, +0x000000ab,0x000000ac,0x00050041,0x00000031, +0x000000ae,0x0000002e,0x000000ad,0x0004003d, +0x00000006,0x000000af,0x000000ae,0x000500ba, +0x00000024,0x000000b0,0x000000af,0x0000004e, +0x000300f7,0x000000b2,0x00000000,0x000400fa, +0x000000b0,0x000000b1,0x000000b2,0x000200f8, +0x000000b1,0x0004003d,0x00000007,0x000000b4, +0x000000a8,0x0003003e,0x000000b3,0x000000b4, +0x00050039,0x00000007,0x000000b5,0x00000015, +0x000000b3,0x0003003e,0x000000ab,0x000000b5, +0x000200f9,0x000000b2,0x000200f8,0x000000b2, +0x0004003d,0x00000007,0x000000b7,0x000000a8, +0x0003003e,0x000000b6,0x000000b7,0x00050041, +0x00000031,0x000000b9,0x0000002e,0x000000b8, +0x0004003d,0x00000006,0x000000ba,0x000000b9, +0x000500ba,0x00000024,0x000000bb,0x000000ba, +0x0000004e,0x000300f7,0x000000bd,0x00000000, +0x000400fa,0x000000bb,0x000000bc,0x000000bd, +0x000200f8,0x000000bc,0x0004003d,0x00000007, +0x000000be,0x000000ab,0x00050039,0x00000007, +0x000000bf,0x0000000a,0x000000be,0x0003003e, +0x000000b6,0x000000bf,0x000200f9,0x000000bd, +0x000200f8,0x000000bd,0x0004003d,0x00000007, +0x000000c2,0x000000b6,0x00050041,0x00000017, +0x000000c4,0x0000009d,0x000000c3,0x0004003d, +0x00000006,0x000000c5,0x000000c4,0x00050051, +0x00000006,0x000000c6,0x000000c2,0x00000000, +0x00050051,0x00000006,0x000000c7,0x000000c2, +0x00000001,0x00050051,0x00000006,0x000000c8, +0x000000c2,0x00000002,0x00070050,0x0000002a, +0x000000c9,0x000000c6,0x000000c7,0x000000c8, +0x000000c5,0x0003003e,0x000000c1,0x000000c9, +0x000100fd,0x00010038,0x00050036,0x00000007, +0x0000000a,0x00000000,0x00000008,0x00030037, +0x00000007,0x00000009,0x000200f8,0x0000000b, +0x0004003b,0x00000017,0x00000018,0x00000007, +0x0004003b,0x00000017,0x00000029,0x00000007, +0x0004003b,0x00000017,0x00000038,0x00000007, +0x00050051,0x00000006,0x0000001b,0x00000009, +0x00000000,0x00050051,0x00000006,0x0000001d, +0x00000009,0x00000001,0x00050051,0x00000006, +0x0000001f,0x00000009,0x00000002,0x0007000c, +0x00000006,0x00000020,0x00000001,0x00000028, +0x0000001d,0x0000001f,0x0007000c,0x00000006, +0x00000021,0x00000001,0x00000028,0x0000001b, +0x00000020,0x0003003e,0x00000018,0x00000021, +0x0004003d,0x00000006,0x00000022,0x00000018, +0x000500b8,0x00000024,0x00000025,0x00000022, +0x00000023,0x000300f7,0x00000027,0x00000000, +0x000400fa,0x00000025,0x00000026,0x00000027, +0x000200f8,0x00000026,0x000200fe,0x00000009, +0x000200f8,0x00000027,0x00050041,0x00000031, +0x00000032,0x0000002e,0x00000030,0x0004003d, +0x00000006,0x00000033,0x00000032,0x00050041, +0x00000031,0x00000035,0x0000002e,0x00000034, +0x0004003d,0x00000006,0x00000036,0x00000035, +0x00050088,0x00000006,0x00000037,0x00000033, +0x00000036,0x0003003e,0x00000029,0x00000037, +0x0004003d,0x00000006,0x0000003a,0x00000029, +0x00050088,0x00000006,0x0000003b,0x00000039, +0x0000003a,0x00050083,0x00000006,0x0000003c, +0x00000039,0x0000003b,0x0003003e,0x00000038, +0x0000003c,0x0004003d,0x00000006,0x0000003d, +0x00000018,0x0004003d,0x00000006,0x0000003e, +0x00000038,0x00050085,0x00000006,0x0000003f, +0x0000003d,0x0000003e,0x00050081,0x00000006, +0x00000040,0x00000039,0x0000003f,0x00060050, +0x00000007,0x00000041,0x00000040,0x00000040, +0x00000040,0x00050088,0x00000007,0x00000042, +0x00000009,0x00000041,0x000200fe,0x00000042, +0x00010038,0x00050036,0x00000007,0x0000000f, +0x00000000,0x0000000d,0x00030037,0x0000000c, +0x0000000e,0x000200f8,0x00000010,0x0004003b, +0x0000000c,0x00000045,0x00000007,0x0004003d, +0x00000007,0x00000046,0x0000000e,0x0006000c, +0x00000007,0x00000047,0x00000001,0x00000004, +0x00000046,0x0007000c,0x00000007,0x0000004a, +0x00000001,0x0000001a,0x00000047,0x00000049, +0x00060050,0x00000007,0x0000004c,0x0000004b, +0x0000004b,0x0000004b,0x00050083,0x00000007, +0x0000004d,0x0000004a,0x0000004c,0x00060050, +0x00000007,0x0000004f,0x0000004e,0x0000004e, +0x0000004e,0x0007000c,0x00000007,0x00000050, +0x00000001,0x00000028,0x0000004d,0x0000004f, +0x0004003d,0x00000007,0x00000053,0x0000000e, +0x0006000c,0x00000007,0x00000054,0x00000001, +0x00000004,0x00000053,0x0007000c,0x00000007, +0x00000055,0x00000001,0x0000001a,0x00000054, +0x00000049,0x0005008e,0x00000007,0x00000056, +0x00000055,0x00000052,0x00060050,0x00000007, +0x00000057,0x00000051,0x00000051,0x00000051, +0x00050083,0x00000007,0x00000058,0x00000057, +0x00000056,0x00050088,0x00000007,0x00000059, +0x00000050,0x00000058,0x0006000c,0x00000007, +0x0000005a,0x00000001,0x00000004,0x00000059, +0x0007000c,0x00000007,0x0000005d,0x00000001, +0x0000001a,0x0000005a,0x0000005c,0x0003003e, +0x00000045,0x0000005d,0x0004003d,0x00000007, +0x0000005e,0x00000045,0x000200fe,0x0000005e, +0x00010038,0x00050036,0x00000007,0x00000012, +0x00000000,0x0000000d,0x00030037,0x0000000c, +0x00000011,0x000200f8,0x00000013,0x0004003d, +0x00000007,0x00000061,0x00000011,0x0005008e, +0x00000007,0x00000063,0x00000061,0x00000062, +0x00050041,0x00000031,0x00000064,0x0000002e, +0x00000034,0x0004003d,0x00000006,0x00000065, +0x00000064,0x00060050,0x00000007,0x00000066, +0x00000065,0x00000065,0x00000065,0x00050088, +0x00000007,0x00000067,0x00000063,0x00000066, +0x000200fe,0x00000067,0x00010038,0x00050036, +0x00000007,0x00000015,0x00000000,0x0000000d, +0x00030037,0x0000000c,0x00000014,0x000200f8, +0x00000016,0x0004003b,0x0000000c,0x0000006a, +0x00000007,0x0004003b,0x0000000c,0x0000006b, +0x00000007,0x0004003b,0x0000000c,0x0000006e, +0x00000007,0x0004003b,0x0000000c,0x0000006f, +0x00000007,0x0004003b,0x0000000c,0x00000072, +0x00000007,0x0004003d,0x00000007,0x0000006c, +0x00000014,0x0003003e,0x0000006b,0x0000006c, +0x00050039,0x00000007,0x0000006d,0x0000000f, +0x0000006b,0x0003003e,0x0000006a,0x0000006d, +0x0004003d,0x00000007,0x00000070,0x0000006a, +0x0003003e,0x0000006f,0x00000070,0x00050039, +0x00000007,0x00000071,0x00000012,0x0000006f, +0x0003003e,0x0000006e,0x00000071,0x0004003d, +0x00000007,0x00000073,0x0000006e,0x00050090, +0x00000007,0x00000082,0x00000073,0x00000081, +0x0003003e,0x00000072,0x00000082,0x00050041, +0x00000084,0x00000085,0x0000002e,0x00000083, +0x0004003d,0x00000019,0x00000086,0x00000085, +0x000500aa,0x00000024,0x00000087,0x00000086, +0x0000001c,0x000300f7,0x00000089,0x00000000, +0x000400fa,0x00000087,0x00000088,0x00000089, +0x000200f8,0x00000088,0x0004003d,0x00000007, +0x0000008a,0x0000006e,0x00050090,0x00000007, +0x00000098,0x0000008a,0x00000097,0x0003003e, +0x00000072,0x00000098,0x000200f9,0x00000089, +0x000200f8,0x00000089,0x0004003d,0x00000007, +0x00000099,0x00000072,0x000200fe,0x00000099, +0x00010038} diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index c87c596d95dd..2b5c82e8c4c0 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -270,7 +270,7 @@ class Pass void set_enable_hdr(float enable_hdr_) { enable_hdr = enable_hdr_; } void set_paper_white_nits(float paper_white_nits_) { paper_white_nits = paper_white_nits_; } void set_max_nits(float max_nits_) { max_nits = max_nits_; } - void set_expand_gamut(float expand_gamut_) { expand_gamut = expand_gamut_; } + void set_expand_gamut(unsigned expand_gamut_) { expand_gamut = expand_gamut_; } void set_scanlines(float scanlines_) { scanlines = scanlines_; } void set_subpixel_layout(unsigned subpixel_layout_ ) { subpixel_layout = subpixel_layout_; } void set_inverse_tonemap(float inverse_tonemap_) { inverse_tonemap = inverse_tonemap_; } @@ -380,7 +380,7 @@ class Pass float enable_hdr = 0.0f; float paper_white_nits = 0.0f; float max_nits = 10000.0f; - float expand_gamut = 0.0f; + unsigned expand_gamut = 0; float scanlines = 0.0f; unsigned subpixel_layout = 0; float inverse_tonemap = 0.0f; @@ -458,7 +458,7 @@ struct vulkan_filter_chain void set_enable_hdr(float enable_hdr); void set_paper_white_nits(float paper_white_nits); void set_max_nits(float max_nits); - void set_expand_gamut(float expand_gamut); + void set_expand_gamut(unsigned expand_gamut); void set_scanlines(float scanlines); void set_subpixel_layout(unsigned subpixel_layout); void set_inverse_tonemap(float inverse_tonemap); @@ -1545,7 +1545,7 @@ void vulkan_filter_chain::set_max_nits(float max_nits) passes[i]->set_max_nits(max_nits); } -void vulkan_filter_chain::set_expand_gamut(float expand_gamut) +void vulkan_filter_chain::set_expand_gamut(unsigned expand_gamut) { unsigned i; for (i = 0; i < passes.size(); i++) @@ -2525,7 +2525,7 @@ void Pass::build_semantics(VkDescriptorSet set, uint8_t *buffer, build_semantic_uint(buffer, SLANG_SEMANTIC_SUBPIXEL_LAYOUT, subpixel_layout); - build_semantic_float(buffer, SLANG_SEMANTIC_EXPAND_GAMUT, + build_semantic_uint(buffer, SLANG_SEMANTIC_EXPAND_GAMUT, expand_gamut); build_semantic_float(buffer, SLANG_SEMANTIC_INVERSE_TONEMAP, @@ -3456,7 +3456,7 @@ void vulkan_filter_chain_set_max_nits( void vulkan_filter_chain_set_expand_gamut( vulkan_filter_chain_t *chain, - float expand_gamut) + unsigned expand_gamut) { chain->set_expand_gamut(expand_gamut); } diff --git a/gfx/drivers_shader/shader_vulkan.h b/gfx/drivers_shader/shader_vulkan.h index 52f37b554d5b..6a5415825c08 100644 --- a/gfx/drivers_shader/shader_vulkan.h +++ b/gfx/drivers_shader/shader_vulkan.h @@ -166,7 +166,7 @@ void vulkan_filter_chain_set_max_nits(vulkan_filter_chain_t *chain, float max_nits) ; void vulkan_filter_chain_set_expand_gamut(vulkan_filter_chain_t *chain, - float expand_gamut); + unsigned expand_gamut); void vulkan_filter_chain_set_scanlines(vulkan_filter_chain_t *chain, float scanlines); diff --git a/gfx/drivers_shader/slang_reflection.cpp b/gfx/drivers_shader/slang_reflection.cpp index 7bb0e86270b8..115e17b79c3f 100644 --- a/gfx/drivers_shader/slang_reflection.cpp +++ b/gfx/drivers_shader/slang_reflection.cpp @@ -326,7 +326,7 @@ static bool validate_type_for_semantic(const spirv_cross::SPIRType &type, slang_ && type.vecsize == 1 && type.columns == 1; case SLANG_SEMANTIC_EXPAND_GAMUT: - return type.basetype == spirv_cross::SPIRType::Float + return type.basetype == spirv_cross::SPIRType::UInt && type.vecsize == 1 && type.columns == 1; case SLANG_SEMANTIC_INVERSE_TONEMAP: diff --git a/gfx/drivers_shader/slang_reflection.h b/gfx/drivers_shader/slang_reflection.h index 815cdf83f484..fe70c638da35 100644 --- a/gfx/drivers_shader/slang_reflection.h +++ b/gfx/drivers_shader/slang_reflection.h @@ -94,7 +94,7 @@ enum slang_semantic SLANG_SEMANTIC_SCANLINES = 15, /* uint, HDR Scanline Subpixel Layout */ SLANG_SEMANTIC_SUBPIXEL_LAYOUT = 16, - /* float, Enable HDR colour boost */ + /* uint, Enable HDR colour boost */ SLANG_SEMANTIC_EXPAND_GAMUT = 17, /* float, Enable HDR Inverse Tonemapper */ SLANG_SEMANTIC_INVERSE_TONEMAP = 18, diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 5b81762f385d..0f0404a25a00 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -695,7 +695,7 @@ typedef struct video_poke_interface /* hdr settings */ void (*set_hdr_max_nits)(void *data, float max_nits); void (*set_hdr_paper_white_nits)(void *data, float paper_white_nits); - void (*set_hdr_expand_gamut)(void *data, bool expand_gamut); + void (*set_hdr_expand_gamut)(void *data, unsigned expand_gamut); void (*set_hdr_scanlines)(void *data, bool scanlines); void (*set_hdr_subpixel_layout)(void *data, unsigned subpixel_layout); } video_poke_interface_t; diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 1f3f1271b5f0..ebe6cbe7f3c5 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -1059,7 +1059,7 @@ static void thread_set_hdr_paper_white_nits(void *data, float paper_white_nits) } } -static void thread_set_hdr_expand_gamut(void *data, bool expand_gamut) +static void thread_set_hdr_expand_gamut(void *data, unsigned expand_gamut) { thread_video_t *thr = (thread_video_t*)data; diff --git a/gfx/video_thread_wrapper.h b/gfx/video_thread_wrapper.h index 1ce892adb3f5..edf1b21e21b0 100644 --- a/gfx/video_thread_wrapper.h +++ b/gfx/video_thread_wrapper.h @@ -160,7 +160,7 @@ typedef struct thread_packet { float max_nits; float paper_white_nits; - bool expand_gamut; + unsigned expand_gamut; bool scanlines; unsigned subpixel_layout; } hdr; diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 2a2f1afc7080..28b6c5ee264f 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -2776,7 +2776,23 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_HDR_EXPAND_GAMUT, - "Uses your display's full colour range to create a brighter, more saturated image. For colours more faithful to the original game design, set this to OFF." + "Uses your display's full colour range to create a brighter, more saturated image. For colours more faithful to the original game design, set this to ACCURATE." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_ACCURATE, + "ACCURATE" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_EXPANDED, + "EXPANDED" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_WIDE, + "WIDE" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_SUPER, + "SUPER" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_HDR_SCANLINES, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 850d9bad9a1b..121cd8702d33 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -10358,7 +10358,7 @@ unsigned menu_displaylist_build_list( if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list, MENU_ENUM_LABEL_VIDEO_HDR_EXPAND_GAMUT, - PARSE_ONLY_BOOL, false) == 0) + PARSE_ONLY_UINT, false) == 0) count++; if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 1a177fddfb64..d617217e2a19 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3112,6 +3112,31 @@ static size_t setting_get_string_representation_video_font_path( "", len); } +static size_t setting_get_string_representation_video_hdr_expand_gamut( + rarch_setting_t *setting, char *s, size_t len) +{ + if (setting) + { + switch (*setting->value.target.unsigned_integer) + { + case 0: + return strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_ACCURATE), len); + case 1: + return strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_EXPANDED), len); + case 2: + return strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_WIDE), len); + case 3: + return strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_SUPER), len); + } + } + return 0; +} + + static size_t setting_get_string_representation_video_hdr_subpixel_layout( rarch_setting_t *setting, char *s, size_t len) { @@ -8696,11 +8721,11 @@ static void general_write_handler(rarch_setting_t *setting) { video_driver_state_t *video_st = video_state_get_ptr(); settings->flags |= SETTINGS_FLG_MODIFIED; - settings->bools.video_hdr_expand_gamut = *setting->value.target.boolean; + settings->uints.video_hdr_expand_gamut = *setting->value.target.unsigned_integer; if (video_st && video_st->poke && video_st->poke->set_hdr_expand_gamut) video_st->poke->set_hdr_expand_gamut(video_st->data, - settings->bools.video_hdr_expand_gamut); + settings->uints.video_hdr_expand_gamut); } break; case MENU_ENUM_LABEL_VIDEO_HDR_SCANLINES: @@ -13992,20 +14017,21 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; menu_settings_list_current_add_range(list, list_info, 0.0, 10000.0, 10.0, true, true); - CONFIG_BOOL( + CONFIG_UINT( list, list_info, - &settings->bools.video_hdr_expand_gamut, + &settings->uints.video_hdr_expand_gamut, MENU_ENUM_LABEL_VIDEO_HDR_EXPAND_GAMUT, MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT, DEFAULT_VIDEO_HDR_EXPAND_GAMUT, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, &group_info, &subgroup_info, parent_group, general_write_handler, - general_read_handler, - SD_FLAG_NONE); + general_read_handler); + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_video_hdr_expand_gamut; + menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); START_SUB_GROUP(list, list_info, "HDR", &group_info, &subgroup_info, parent_group); diff --git a/msg_hash.h b/msg_hash.h index d62a3965e775..620449d65f3c 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1548,6 +1548,10 @@ enum msg_hash_enums MENU_LABEL(VIDEO_HDR_MAX_NITS), MENU_LABEL(VIDEO_HDR_PAPER_WHITE_NITS), MENU_LABEL(VIDEO_HDR_EXPAND_GAMUT), + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_ACCURATE, + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_EXPANDED, + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_WIDE, + MENU_ENUM_LABEL_VALUE_VIDEO_HDR_EXPAND_GAMUT_SUPER, MENU_LABEL(VIDEO_HDR_SCANLINES), MENU_LABEL(VIDEO_HDR_SUBPIXEL_LAYOUT), MENU_ENUM_LABEL_VALUE_VIDEO_HDR_SUBPIXEL_LAYOUT_RGB,