diff --git a/OptiScaler/Config.cpp b/OptiScaler/Config.cpp index 11d3f47f..a062b40e 100644 --- a/OptiScaler/Config.cpp +++ b/OptiScaler/Config.cpp @@ -365,6 +365,10 @@ bool Config::Reload(std::filesystem::path iniPath) OutputScalingMultiplier = 0.5f; else if (OutputScalingMultiplier.has_value() && OutputScalingMultiplier.value() > 3.0f) OutputScalingMultiplier = 3.0f; + + if (!OutputScalingDownscaler.has_value()) + OutputScalingDownscaler = readInt("OutputScaling", "Downscaler"); + } // Init Flags @@ -742,6 +746,7 @@ bool Config::SaveIni() ini.SetValue("OutputScaling", "Enabled", GetBoolValue(Instance()->OutputScalingEnabled).c_str()); ini.SetValue("OutputScaling", "Multiplier", GetFloatValue(Instance()->OutputScalingMultiplier).c_str()); ini.SetValue("OutputScaling", "UseFsr", GetBoolValue(Instance()->OutputScalingUseFsr).c_str()); + ini.SetValue("OutputScaling", "Downscaler", GetBoolValue(Instance()->OutputScalingDownscaler).c_str()); } // FSR diff --git a/OptiScaler/Config.h b/OptiScaler/Config.h index 3bd06dc7..34c20925 100644 --- a/OptiScaler/Config.h +++ b/OptiScaler/Config.h @@ -127,6 +127,7 @@ public: std::optional OutputScalingEnabled; std::optional OutputScalingMultiplier; std::optional OutputScalingUseFsr; + std::optional OutputScalingDownscaler; // fsr std::optional FsrVerticalFov; diff --git a/OptiScaler/imgui/imgui_common.cpp b/OptiScaler/imgui/imgui_common.cpp index 05dcf4ef..15ba18ec 100644 --- a/OptiScaler/imgui/imgui_common.cpp +++ b/OptiScaler/imgui/imgui_common.cpp @@ -694,7 +694,7 @@ void ImGuiCommon::AddResourceBarrier(std::string name, std::optional* value void ImGuiCommon::AddRenderPreset(std::string name, std::optional* value) { const char* presets[] = { "DEFAULT", "PRESET A", "PRESET B", "PRESET C", "PRESET D", "PRESET E", "PRESET F", "PRESET G" }; - const char* presetsDesc[] = { "Whatever the game uses", + const std::string presetsDesc[] = { "Whatever the game uses", "Intended for Performance/Balanced/Quality modes.\nAn older variant best suited to combat ghosting for elements with missing inputs, such as motion vectors.", "Intended for Ultra Performance mode.\nSimilar to Preset A but for Ultra Performance mode.", "Intended for Performance/Balanced/Quality modes.\nGenerally favors current frame information;\nwell suited for fast-paced game content.", @@ -707,7 +707,7 @@ void ImGuiCommon::AddRenderPreset(std::string name, std::optional* val PopulateCombo(name, value, presets, presetsDesc, 8); } -void ImGuiCommon::PopulateCombo(std::string name, std::optional* value, const char* names[], const char* desc[], int length) { +void ImGuiCommon::PopulateCombo(std::string name, std::optional* value, const char* names[], const std::string desc[], int length) { int selected = value->value_or(0); const char* selectedName = ""; @@ -725,7 +725,9 @@ void ImGuiCommon::PopulateCombo(std::string name, std::optional* value { if (ImGui::Selectable(names[0], !value->has_value())) value->reset(); - ShowTooltip(desc[0]); + + if (desc[0].length() > 0) + ShowTooltip(desc[0].c_str()); for (int n = 1; n < length; n++) { @@ -734,7 +736,9 @@ void ImGuiCommon::PopulateCombo(std::string name, std::optional* value if (n != selected) *value = n; } - ShowTooltip(desc[n]); + + if (desc[n].length() > 0) + ShowTooltip(desc[n].c_str()); } ImGui::EndCombo(); @@ -1555,10 +1559,9 @@ void ImGuiCommon::RenderMenu() _ssRatio = Config::Instance()->OutputScalingMultiplier.value_or(defaultRatio); _ssEnabled = Config::Instance()->OutputScalingEnabled.value_or(false); _ssUseFsr = Config::Instance()->OutputScalingUseFsr.value_or(true); + _ssDownsampler = Config::Instance()->OutputScalingDownscaler.value_or(0); } - - ImGui::BeginDisabled((currentBackend == "xess" || currentBackend == "dlss") && Config::Instance()->CurrentFeature->RenderWidth() > Config::Instance()->CurrentFeature->DisplayWidth()); ImGui::Checkbox("Enable", &_ssEnabled); @@ -1573,15 +1576,29 @@ void ImGuiCommon::RenderMenu() ImGui::SameLine(0.0f, 6.0f); ImGui::BeginDisabled(!_ssEnabled); - ImGui::Checkbox("Use FSR 1", &_ssUseFsr); - ImGui::EndDisabled(); - ShowHelpMarker("Use FSR 1's upscaling pass instead of bicubic"); + { + ImGui::Checkbox("Use FSR 1", &_ssUseFsr); + ShowHelpMarker("Use FSR 1 for scaling"); - ImGui::SameLine(0.0f, 6.0f); + ImGui::SameLine(0.0f, 6.0f); + + ImGui::BeginDisabled(_ssUseFsr || _ssRatio < 1.0f); + { + const char* ds_modes[] = { "Bicubic", "Lanczos", "Catmull-Rom", "MAGC" }; + const std::string ds_modesDesc[] = { "", "", "", "" }; + + ImGui::PushItemWidth(75.0f * Config::Instance()->MenuScale.value()); + PopulateCombo("Downscaler", &Config::Instance()->OutputScalingDownscaler, ds_modes, ds_modesDesc, 4); + ImGui::PopItemWidth(); + } + ImGui::EndDisabled(); + } + ImGui::EndDisabled(); bool applyEnabled = _ssEnabled != Config::Instance()->OutputScalingEnabled.value_or(false) || _ssRatio != Config::Instance()->OutputScalingMultiplier.value_or(defaultRatio) || - _ssUseFsr != Config::Instance()->OutputScalingUseFsr.value_or(true); + _ssUseFsr != Config::Instance()->OutputScalingUseFsr.value_or(true) || + (_ssRatio > 1.0f && _ssDownsampler != Config::Instance()->OutputScalingDownscaler.value_or(0)); ImGui::BeginDisabled(!applyEnabled); if (ImGui::Button("Apply Change")) @@ -1589,6 +1606,7 @@ void ImGuiCommon::RenderMenu() Config::Instance()->OutputScalingEnabled = _ssEnabled; Config::Instance()->OutputScalingMultiplier = _ssRatio; Config::Instance()->OutputScalingUseFsr = _ssUseFsr; + _ssDownsampler = Config::Instance()->OutputScalingDownscaler.value_or(0); if (Config::Instance()->CurrentFeature->Name() == "DLSSD") Config::Instance()->newBackend = "dlssd"; @@ -2081,7 +2099,7 @@ void ImGuiCommon::RenderMenu() ShowHelpMarker("When possible AntiLag 2 is used, this setting let's you force LatencyFlex instead"); const char* lfx_modes[] = { "Conservative", "Aggressive", "Reflex ID" }; - const char* lfx_modesDesc[] = { "The safest but might not reduce latency well", + const std::string lfx_modesDesc[] = { "The safest but might not reduce latency well", "Improves latency but in some cases will lower fps more than expected", "Best when can be used, some games are not compatible (i.e. cyberpunk) and will fallback to aggressive" }; @@ -2089,7 +2107,7 @@ void ImGuiCommon::RenderMenu() PopulateCombo("LatencyFlex mode", &Config::Instance()->FN_LatencyFlexMode, lfx_modes, lfx_modesDesc, 3); const char* rfx_modes[] = { "Follow in-game", "Force Disable", "Force Enable" }; - const char* rfx_modesDesc[] = { "", "", "" }; + const std::string rfx_modesDesc[] = { "", "", "" }; PopulateCombo("Force Reflex", &Config::Instance()->FN_ForceReflex, rfx_modes, rfx_modesDesc, 3); diff --git a/OptiScaler/imgui/imgui_common.h b/OptiScaler/imgui/imgui_common.h index 3942ad89..2b70f754 100644 --- a/OptiScaler/imgui/imgui_common.h +++ b/OptiScaler/imgui/imgui_common.h @@ -45,6 +45,7 @@ private: inline static float _ssRatio = 0.0f; inline static bool _ssEnabled = false; inline static bool _ssUseFsr = false; + inline static uint32_t _ssDownsampler = 0; // ui scale inline static int _selectedScale = 5; @@ -126,7 +127,7 @@ private: static void AddRenderPreset(std::string name, std::optional* value); - static void PopulateCombo(std::string name, std::optional* value, const char* names[], const char* desc[], int length); + static void PopulateCombo(std::string name, std::optional* value, const char* names[], const std::string desc[], int length); public: diff --git a/OptiScaler/output_scaling/OS_Common.h b/OptiScaler/output_scaling/OS_Common.h index 9a9ee1b6..f9799b5f 100644 --- a/OptiScaler/output_scaling/OS_Common.h +++ b/OptiScaler/output_scaling/OS_Common.h @@ -9,8 +9,122 @@ struct alignas(256) Constants int32_t destWidth; int32_t destHeight; }; -inline static std::string downsampleCode = R"( -cbuffer Params : register(b0) { + +// Lanczos with luminance correction +inline static std::string downsampleCodeLanczos = R"( +cbuffer Params : register(b0) +{ + int _SrcWidth; // Source texture width + int _SrcHeight; // Source texture height + int _DstWidth; // Destination texture width + int _DstHeight; // Destination texture height +}; + +// Texture resources. +Texture2D InputTexture : register(t0); // Input texture (source image) +RWTexture2D OutputTexture : register(u0); // Output texture (downsampled image) + +float luminance(float3 color) +{ + return dot(color, float3(0.2126, 0.7152, 0.0722)); +} + +// Lanczos kernel function. +float lanczosKernel(float x, float radius, float pi) +{ + if (x == 0.0) return 1.0; + if (x > radius) return 0.0; + + x *= pi; + return (sin(x) / x) * (sin(x / radius) / (x / radius)); +} + +[numthreads(16, 16, 1)] +void CSMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + // Coordinates of the pixel in the target (downsampled) texture. + uint2 targetCoords = dispatchThreadID.xy; + + // Ensure we are within the target texture bounds. + if (targetCoords.x >= _DstWidth || targetCoords.y >= _DstHeight) + return; + + // Calculate scaling factor and source position. + float2 scale = float2(_SrcWidth, _SrcHeight) / float2(_DstWidth, _DstHeight); + float2 sourcePos = float2(targetCoords) * scale; + + // Lanczos kernel properties. + const float lanczosRadius = 3.0; // Typical radius (adjustable for quality/performance) + const float pi = 3.14159265359; + + // Accumulators for color and weight. + float4 color = 0.0; + float totalWeight = 0.0; + float avgLuminance = 0.0; + + // First pass: Compute average luminance in the 4x4 neighborhood + for (int dy = -1; dy <= 2; dy++) + { + for (int dx = -1; dx <= 2; dx++) + { + int2 sampleCoords = sourcePos + int2(dx, dy); + sampleCoords = clamp(sampleCoords, int2(0, 0), int2(_SrcWidth - 1, _SrcHeight - 1)); + + float4 sampleColor = InputTexture.Load(int3(sampleCoords, 0)); + avgLuminance += luminance(sampleColor.rgb); + } + } + avgLuminance /= 16.0; // Normalize luminance by the 4x4 sample count + + // Loop through the kernel window. + for (int y = -int(lanczosRadius); y <= int(lanczosRadius); y++) + { + for (int x = -int(lanczosRadius); x <= int(lanczosRadius); x++) + { + // Offset in source texture space. + float2 offset = float2(x, y); + float2 samplePos = sourcePos + offset; + + // Ensure we sample within bounds. + samplePos = clamp(samplePos, float2(0, 0), float2(_SrcWidth - 1, _SrcHeight - 1)); + + // Fetch the texel. + float4 sampleColor = InputTexture.Load(int3(samplePos, 0)); + + // Compute the current luminance of the sample + float currentLuminance = luminance(sampleColor.rgb); + + // Scale the color to match the average luminance if it deviates too much + float luminanceDeviation = abs(currentLuminance - avgLuminance); + if (luminanceDeviation > 0.5) // Threshold for clamping + { + float luminanceScale = avgLuminance / max(currentLuminance, 1e-5); // Avoid division by zero + sampleColor.rgb *= luminanceScale; // Scale brightness while preserving hue/saturation + } + + // Calculate Lanczos weight. + float2 dist = abs(samplePos - sourcePos); + float2 lanczosWeight = lanczosKernel(dist.x, lanczosRadius, pi) * + lanczosKernel(dist.y, lanczosRadius, pi); + + // Accumulate weighted color. + color += sampleColor * lanczosWeight.x * lanczosWeight.y; + totalWeight += lanczosWeight.x * lanczosWeight.y; + } + } + + // Normalize the color by the total weight to avoid darkening/brightening. + color /= totalWeight; + + // Write the result to the output texture. + OutputTexture[dispatchThreadID.xy] = color; +} +)"; + +// Catmull-rom with luminance correction +inline static std::string downsampleCodeCatmull = R"( +cbuffer Params : register(b0) +{ int _SrcWidth; // Source texture width int _SrcHeight; // Source texture height int _DstWidth; // Destination texture width diff --git a/OptiScaler/output_scaling/OS_Dx11.cpp b/OptiScaler/output_scaling/OS_Dx11.cpp index a34d7778..9c0b139d 100644 --- a/OptiScaler/output_scaling/OS_Dx11.cpp +++ b/OptiScaler/output_scaling/OS_Dx11.cpp @@ -3,7 +3,11 @@ #define A_CPU // FSR compute shader is from : https://github.com/fholger/vrperfkit/ -#include "precompile/BCDS_Shader_Dx11.h" +#include "precompile/BCDS_lanczos_Shader_Dx11.h" +#include "precompile/BCDS_catmull_Shader_Dx11.h" +#include "precompile/BCDS_bicubic_Shader_Dx11.h" +#include "precompile/BCDS_magc_Shader_Dx11.h" + #include "precompile/BCUS_Shader_Dx11.h" #include "../fsr1/ffx_fsr1.h" @@ -246,10 +250,37 @@ OS_Dx11::OS_Dx11(std::string InName, ID3D11Device* InDevice, bool InUpsample) : } else { + if (_upsample) + { hr = _device->CreateComputeShader(reinterpret_cast(BCUS_cso), sizeof(BCUS_cso), nullptr, &_computeShader); + } else - hr = _device->CreateComputeShader(reinterpret_cast(BCDS_cso), sizeof(BCDS_cso), nullptr, &_computeShader); + { + switch (Config::Instance()->OutputScalingDownscaler.value_or(0)) + { + case 0: + hr = _device->CreateComputeShader(reinterpret_cast(bcds_bicubic_cso), sizeof(bcds_bicubic_cso), nullptr, &_computeShader); + break; + + case 1: + hr = _device->CreateComputeShader(reinterpret_cast(bcds_lanczos_cso), sizeof(bcds_lanczos_cso), nullptr, &_computeShader); + break; + + case 2: + hr = _device->CreateComputeShader(reinterpret_cast(bcds_catmull_cso), sizeof(bcds_catmull_cso), nullptr, &_computeShader); + break; + + case 3: + hr = _device->CreateComputeShader(reinterpret_cast(bcds_magc_cso), sizeof(bcds_magc_cso), nullptr, &_computeShader); + break; + + default: + hr = _device->CreateComputeShader(reinterpret_cast(bcds_bicubic_cso), sizeof(bcds_bicubic_cso), nullptr, &_computeShader); + break; + + } + } } if (FAILED(hr)) @@ -260,8 +291,40 @@ OS_Dx11::OS_Dx11(std::string InName, ID3D11Device* InDevice, bool InUpsample) : } else { + ID3DBlob* shaderBlob = nullptr; + // Compile shader blobs - ID3DBlob* shaderBlob = OS_CompileShader(_upsample ? upsampleCode.c_str() : downsampleCode.c_str(), "CSMain", "cs_5_0"); + if (_upsample) + { + shaderBlob = OS_CompileShader( upsampleCode.c_str(), "CSMain", "cs_5_0"); + } + else + { + switch (Config::Instance()->OutputScalingDownscaler.value_or(0)) + { + case 0: + shaderBlob = OS_CompileShader(downsampleCodeBC.c_str(), "CSMain", "cs_5_0"); + break; + + case 1: + shaderBlob = OS_CompileShader(downsampleCodeLanczos.c_str(), "CSMain", "cs_5_0"); + break; + + case 2: + shaderBlob = OS_CompileShader(downsampleCodeCatmull.c_str(), "CSMain", "cs_5_0"); + break; + + case 3: + shaderBlob = OS_CompileShader(downsampleCodeMAGIC.c_str(), "CSMain", "cs_5_0"); + break; + + default: + shaderBlob = OS_CompileShader(downsampleCodeBC.c_str(), "CSMain", "cs_5_0"); + break; + + } + } + if (shaderBlob == nullptr) { LOG_ERROR("[{0}] CompileShader error!", _name); diff --git a/OptiScaler/output_scaling/OS_Dx12.cpp b/OptiScaler/output_scaling/OS_Dx12.cpp index a81e105a..b6b015b8 100644 --- a/OptiScaler/output_scaling/OS_Dx12.cpp +++ b/OptiScaler/output_scaling/OS_Dx12.cpp @@ -3,7 +3,11 @@ #define A_CPU // FSR compute shader is from : https://github.com/fholger/vrperfkit/ -#include "precompile/BCDS_Shader.h" +#include "precompile/BCDS_lanczos_Shader.h" +#include "precompile/BCDS_catmull_Shader.h" +#include "precompile/BCDS_bicubic_Shader.h" +#include "precompile/BCDS_magc_Shader.h" + #include "precompile/BCUS_Shader.h" #include "../fsr1/ffx_fsr1.h" @@ -397,10 +401,36 @@ OS_Dx12::OS_Dx12(std::string InName, ID3D12Device* InDevice, bool InUpsample) : } else { - if (_upsample) + if (_upsample) + { computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(BCUS_cso), sizeof(BCUS_cso)); + } else - computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(BCDS_cso), sizeof(BCDS_cso)); + { + switch (Config::Instance()->OutputScalingDownscaler.value_or(0)) + { + case 0: + computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(bcds_bicubic_cso), sizeof(bcds_bicubic_cso)); + break; + + case 1: + computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(bcds_lanczos_cso), sizeof(bcds_lanczos_cso)); + break; + + case 2: + computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(bcds_catmull_cso), sizeof(bcds_catmull_cso)); + break; + + case 3: + computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(bcds_magc_cso), sizeof(bcds_magc_cso)); + break; + + default: + computePsoDesc.CS = CD3DX12_SHADER_BYTECODE(reinterpret_cast(bcds_bicubic_cso), sizeof(bcds_bicubic_cso)); + break; + + } + } } auto hr = InDevice->CreateComputePipelineState(&computePsoDesc, __uuidof(ID3D12PipelineState*), (void**)&_pipelineState); @@ -416,7 +446,36 @@ OS_Dx12::OS_Dx12(std::string InName, ID3D12Device* InDevice, bool InUpsample) : // Compile shader blobs ID3DBlob* _recEncodeShader = nullptr; - _recEncodeShader = OS_CompileShader(_upsample ? upsampleCode.c_str() : downsampleCode.c_str(), "CSMain", "cs_5_0"); + if (_upsample) + { + _recEncodeShader = OS_CompileShader(upsampleCode.c_str(), "CSMain", "cs_5_0"); + } + else + { + switch (Config::Instance()->OutputScalingDownscaler.value_or(0)) + { + case 0: + _recEncodeShader = OS_CompileShader(downsampleCodeBC.c_str(), "CSMain", "cs_5_0"); + break; + + case 1: + _recEncodeShader = OS_CompileShader(downsampleCodeLanczos.c_str(), "CSMain", "cs_5_0"); + break; + + case 2: + _recEncodeShader = OS_CompileShader(downsampleCodeCatmull.c_str(), "CSMain", "cs_5_0"); + break; + + case 3: + _recEncodeShader = OS_CompileShader(downsampleCodeMAGIC.c_str(), "CSMain", "cs_5_0"); + break; + + default: + _recEncodeShader = OS_CompileShader(downsampleCodeBC.c_str(), "CSMain", "cs_5_0"); + break; + + } + } if (_recEncodeShader == nullptr) { diff --git a/OptiScaler/output_scaling/precompile/bcds_bicubic.hlsl b/OptiScaler/output_scaling/precompile/bcds_bicubic.hlsl new file mode 100644 index 00000000..97cc7b0d --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_bicubic.hlsl @@ -0,0 +1,75 @@ +cbuffer Params : register(b0) +{ + int _SrcWidth; + int _SrcHeight; + int _DstWidth; + int _DstHeight; +}; + +Texture2D InputTexture : register(t0); +RWTexture2D OutputTexture : register(u0); + +float bicubic_weight(float x) +{ + float a = -0.75f; + float absX = abs(x); + if (absX <= 1.0f) + return (a + 2.0f) * absX * absX * absX - (a + 3.0f) * absX * absX + 1.0f; + else if (absX < 2.0f) + return a * absX * absX * absX - 5.0f * a * absX * absX + 8.0f * a * absX - 4.0f * a; + else + return 0.0f; +} + +// Luminance computation using perceptual weights +float luminance(float3 color) +{ + return dot(color, float3(0.2126, 0.7152, 0.0722)); +} + +[numthreads(16, 16, 1)] +void CSMain(uint3 DTid : SV_DispatchThreadID) +{ + if (DTid.x >= _DstWidth || DTid.y >= _DstHeight) + return; + + float2 uv = float2(DTid.x / (_DstWidth - 1.0f), DTid.y / (_DstHeight - 1.0f)); + float2 pixel = uv * float2(_SrcWidth, _SrcHeight); + float2 texel = floor(pixel); + float2 t = pixel - texel; + t = t * t * (3.0f - 2.0f * t); + float4 result = float4(0.0f, 0.0f, 0.0f, 0.0f); + + float avgLuminance = 0.0; + for (int y = -1; y <= 2; y++) + { + for (int x = -1; x <= 2; x++) + { + avgLuminance += luminance(InputTexture.Load(int3(texel.x + x, texel.y + y, 0)).rgb); + } + } + avgLuminance /= 16.0; // Normalize luminance by the 4x4 sample count + + for (int y = -1; y <= 2; y++) + { + for (int x = -1; x <= 2; x++) + { + float4 color = InputTexture.Load(int3(texel.x + x, texel.y + y, 0)); + + // Compute the current luminance of the sample + float currentLuminance = luminance(color.rgb); + + // Scale the color to match the average luminance if it deviates too much + float luminanceDeviation = abs(currentLuminance - avgLuminance); + if (luminanceDeviation > 0.5) // Threshold for clamping + { + float luminanceScale = avgLuminance / max(currentLuminance, 1e-5); // Avoid division by zero + color.rgb *= luminanceScale; // Scale brightness while preserving hue/saturation + } + + float weight = bicubic_weight(x - t.x) * bicubic_weight(y - t.y); + result += color * weight; + } + } + OutputTexture[DTid.xy] = result; +} \ No newline at end of file diff --git a/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader.cso b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader.cso new file mode 100644 index 00000000..30609d41 Binary files /dev/null and b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader.cso differ diff --git a/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader.h b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader.h new file mode 100644 index 00000000..87b3e0b6 --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader.h @@ -0,0 +1,421 @@ +#pragma once + +inline static const unsigned char bcds_bicubic_cso[] = { + 0x44, 0x58, 0x42, 0x43, 0xff, 0x9c, 0x32, 0x7e, 0x82, 0x02, 0x96, 0x59, + 0xf5, 0xe1, 0x04, 0xda, 0xb7, 0x24, 0x40, 0x9d, 0x01, 0x00, 0x00, 0x00, + 0x88, 0x13, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0x9c, 0x08, 0x00, 0x00, 0xb8, 0x08, 0x00, 0x00, + 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x50, 0x53, 0x56, 0x30, 0x98, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x43, 0x53, 0x4d, 0x61, 0x69, 0x6e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x88, 0x07, 0x00, 0x00, + 0x60, 0x00, 0x05, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, + 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, + 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, + 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, + 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, + 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, + 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, + 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, + 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, + 0x86, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x01, 0xd5, 0x06, 0x62, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x00, 0x49, 0x18, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, + 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, + 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, + 0xe6, 0x08, 0xc0, 0xa0, 0x0c, 0xc3, 0x30, 0x10, 0x31, 0x03, 0x50, 0x06, + 0x63, 0x30, 0xe8, 0xb8, 0x69, 0xb8, 0xfc, 0x09, 0x7b, 0x08, 0xc9, 0x5f, + 0x09, 0x69, 0x25, 0x26, 0xbf, 0xb8, 0x6d, 0x54, 0x18, 0x86, 0x61, 0x0c, + 0x73, 0x04, 0x08, 0x29, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, + 0x21, 0xd0, 0x0c, 0x0b, 0x81, 0x82, 0xa5, 0x28, 0xc9, 0xc0, 0x0c, 0xc3, + 0x30, 0x0c, 0xc3, 0x40, 0x4d, 0x21, 0x8c, 0xc1, 0x30, 0xe8, 0x29, 0x0b, + 0x30, 0x30, 0xc3, 0x30, 0x18, 0x86, 0x61, 0x28, 0x14, 0x15, 0xc4, 0x18, + 0x0c, 0xc3, 0x30, 0x0c, 0x83, 0xa6, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, + 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0x7c, 0xe4, 0xb6, 0x11, 0x31, + 0x0c, 0xc3, 0x50, 0x88, 0x6a, 0x60, 0x06, 0xb2, 0xe6, 0x08, 0x82, 0x62, + 0x30, 0x83, 0x32, 0x0c, 0x18, 0x65, 0x03, 0x01, 0xc3, 0x08, 0x84, 0x31, + 0x53, 0x1b, 0x8c, 0x03, 0x3b, 0x84, 0xc3, 0x3c, 0xcc, 0x83, 0x1b, 0xd0, + 0x42, 0x39, 0xe0, 0x03, 0x3d, 0xd4, 0x83, 0x3c, 0x94, 0x83, 0x1c, 0x90, + 0x02, 0x1f, 0xd8, 0x43, 0x39, 0x8c, 0x03, 0x3d, 0xbc, 0x83, 0x3c, 0xf0, + 0x81, 0x39, 0xb0, 0xc3, 0x3b, 0x84, 0x03, 0x3d, 0xb0, 0x01, 0x18, 0xd0, + 0x81, 0x1f, 0x80, 0x81, 0x1f, 0xe8, 0x81, 0x1e, 0xb4, 0x43, 0x3a, 0xc0, + 0xc3, 0x3c, 0xfc, 0x02, 0x3d, 0xe4, 0x03, 0x3c, 0x94, 0x03, 0x0a, 0x86, + 0x99, 0xc4, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, + 0x16, 0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, + 0x14, 0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, + 0x0f, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, + 0x0e, 0xfc, 0x00, 0x0c, 0xfc, 0x00, 0x09, 0x5c, 0x47, 0xde, 0x4c, 0x64, + 0x30, 0x0e, 0xec, 0x10, 0x0e, 0xf3, 0x30, 0x0f, 0x6e, 0x20, 0x0b, 0xb7, + 0x40, 0x0b, 0xe5, 0x80, 0x0f, 0xf4, 0x50, 0x0f, 0xf2, 0x50, 0x0e, 0x72, + 0x40, 0x0a, 0x7c, 0x60, 0x0f, 0xe5, 0x30, 0x0e, 0xf4, 0xf0, 0x0e, 0xf2, + 0xc0, 0x07, 0xe6, 0xc0, 0x0e, 0xef, 0x10, 0x0e, 0xf4, 0xc0, 0x06, 0x60, + 0x40, 0x07, 0x7e, 0x00, 0x06, 0x7e, 0x80, 0x02, 0x8e, 0xc0, 0x33, 0x52, + 0x20, 0x02, 0x18, 0x09, 0x11, 0xc3, 0x30, 0x0c, 0x24, 0x02, 0x00, 0x00, + 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, + 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, + 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, + 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, + 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, + 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, + 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, + 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x04, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x0e, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, + 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, + 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0xc8, 0x13, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x90, 0x67, 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x21, 0x8f, 0x05, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x43, 0x9e, 0x0c, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb2, 0x40, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, + 0xc6, 0x04, 0x43, 0x1a, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, + 0x0a, 0xa4, 0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x8a, 0xa2, 0x94, + 0x03, 0x8a, 0x5c, 0xa0, 0x14, 0x08, 0x1b, 0x01, 0xa8, 0x01, 0xfa, 0x66, + 0x00, 0x28, 0x9c, 0x01, 0x20, 0x71, 0x06, 0x80, 0xc6, 0x19, 0x00, 0x00, + 0x79, 0x18, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, + 0x46, 0x02, 0x13, 0xc4, 0x8e, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, + 0xc6, 0x05, 0xc7, 0x45, 0x86, 0x06, 0xe6, 0xc6, 0xe5, 0x06, 0x04, 0x85, + 0x26, 0xc6, 0xc6, 0x2c, 0x4c, 0xcc, 0x46, 0xac, 0x26, 0x65, 0x43, 0x10, + 0x4c, 0x10, 0x86, 0x64, 0x82, 0x30, 0x28, 0x1b, 0x84, 0x81, 0xd8, 0x20, + 0x10, 0x04, 0x85, 0xb1, 0xb9, 0x09, 0xc2, 0xb0, 0x6c, 0x18, 0x0e, 0x84, + 0x98, 0x20, 0x7c, 0x1a, 0x99, 0x24, 0x37, 0xb8, 0x3a, 0x3a, 0xaa, 0x32, + 0x3c, 0xba, 0x3a, 0xb9, 0xb2, 0x09, 0xc2, 0xc0, 0x4c, 0x10, 0x86, 0x66, + 0x83, 0x40, 0x34, 0x1b, 0x12, 0x42, 0x59, 0x08, 0x62, 0x60, 0x08, 0x67, + 0x43, 0xf0, 0x4c, 0x10, 0xc2, 0x60, 0x63, 0xf3, 0x54, 0x47, 0x07, 0x57, + 0x47, 0x47, 0x55, 0x86, 0x47, 0x57, 0x27, 0x57, 0x36, 0x41, 0xc0, 0xb0, + 0x0d, 0x0b, 0x11, 0x49, 0x04, 0x31, 0x30, 0xd3, 0x34, 0x39, 0x1b, 0x02, + 0x6a, 0x82, 0x30, 0x06, 0x1d, 0x0d, 0xa8, 0x30, 0xb9, 0xb0, 0xb6, 0xb9, + 0x09, 0xc2, 0xe0, 0x6c, 0x40, 0x08, 0xeb, 0x22, 0x88, 0x01, 0x03, 0x36, + 0x04, 0xd9, 0x06, 0x02, 0xaa, 0x34, 0x60, 0x82, 0x20, 0x06, 0x1c, 0x93, + 0xaf, 0x29, 0xb9, 0xb1, 0xab, 0x34, 0x32, 0x3a, 0xb4, 0x09, 0xc2, 0xf0, + 0x4c, 0x10, 0x06, 0x68, 0x82, 0x30, 0x44, 0x13, 0x04, 0x2c, 0xdb, 0x80, + 0x20, 0x9d, 0x47, 0x7c, 0x60, 0xd0, 0x84, 0x01, 0x95, 0xaf, 0x29, 0xb9, + 0x31, 0xa4, 0xb2, 0xb4, 0x33, 0x34, 0xba, 0x0d, 0x08, 0x32, 0x06, 0x1e, + 0x18, 0x7c, 0x60, 0xd0, 0x84, 0x01, 0x93, 0x2f, 0xa2, 0x39, 0xba, 0xab, + 0x34, 0x32, 0x3a, 0xb4, 0x09, 0xc2, 0x20, 0x6d, 0x40, 0x90, 0x32, 0xf0, + 0xcc, 0xe0, 0x03, 0x83, 0x26, 0x0c, 0xa8, 0x7c, 0x11, 0xcd, 0xd1, 0x21, + 0x95, 0xa5, 0x9d, 0xa1, 0xd1, 0x4d, 0x10, 0x86, 0x69, 0x03, 0x82, 0xa0, + 0x81, 0x97, 0x06, 0x1f, 0x18, 0x34, 0x61, 0xb0, 0xa1, 0xc0, 0xc4, 0x80, + 0x0c, 0xce, 0x40, 0x0d, 0x36, 0x0c, 0x04, 0xb7, 0x06, 0x13, 0x04, 0x01, + 0xd8, 0x00, 0x6c, 0x18, 0x08, 0x37, 0x70, 0x83, 0x0d, 0xc1, 0x1b, 0x6c, + 0x18, 0x86, 0x36, 0x80, 0x03, 0x1a, 0x43, 0x53, 0x4d, 0x61, 0x69, 0x6e, + 0x1b, 0x06, 0x0c, 0x1b, 0x36, 0x08, 0x60, 0x30, 0x07, 0x1b, 0x8a, 0x36, + 0x90, 0x03, 0x60, 0xa3, 0x03, 0x22, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x65, 0x73, 0x13, 0x84, 0x81, 0xa2, 0x61, 0xc6, 0xf6, 0x16, 0x46, 0x37, + 0x37, 0x41, 0x18, 0x2a, 0x16, 0x69, 0x6e, 0x73, 0x74, 0x73, 0x13, 0x84, + 0xc1, 0x22, 0x91, 0xe6, 0x46, 0x37, 0x47, 0x84, 0xae, 0x0c, 0xef, 0x8b, + 0xed, 0x2d, 0x8c, 0x6c, 0x82, 0x30, 0x5c, 0x4c, 0xe8, 0xca, 0xf0, 0xbe, + 0xe6, 0xe8, 0xde, 0xe4, 0xca, 0x36, 0x30, 0x76, 0x70, 0x07, 0x78, 0x90, + 0x07, 0x7a, 0xb0, 0x07, 0x7c, 0x60, 0x06, 0x7d, 0xe0, 0x07, 0x7f, 0x30, + 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, + 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, + 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, + 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, + 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x94, 0x21, + 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, + 0x12, 0x68, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0x82, 0xdc, + 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x08, 0x6b, + 0x00, 0x07, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, + 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x74, 0xd0, 0x85, 0x0c, 0xcf, + 0x65, 0xec, 0xad, 0xce, 0x8d, 0xae, 0x4c, 0x6e, 0x6e, 0x4a, 0xf0, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, + 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, + 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, + 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, + 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, + 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, + 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, + 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, + 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, + 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, + 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, + 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, + 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, + 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, + 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, + 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, + 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, + 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, + 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, + 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, + 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, + 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, + 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, + 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, + 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, + 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, + 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, + 0x71, 0x20, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x06, 0x60, 0x70, 0xac, + 0x09, 0x20, 0x8d, 0x11, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x1f, 0x20, 0x0d, + 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x76, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, + 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, + 0xe6, 0x23, 0xb7, 0x6d, 0x08, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, + 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x98, 0x81, 0x33, 0x5c, 0xbe, + 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb, 0x36, 0x50, 0x0d, 0x97, + 0xef, 0x3c, 0xfe, 0x44, 0x5c, 0x13, 0x15, 0x11, 0xa5, 0x03, 0x0c, 0x7e, + 0x71, 0xdb, 0x56, 0x60, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x44, 0x5c, 0x13, + 0x15, 0x11, 0xec, 0xe4, 0x44, 0x84, 0x5f, 0xdc, 0xb6, 0x05, 0x48, 0xc3, + 0xe5, 0x3b, 0x8f, 0x3f, 0x1d, 0x11, 0x01, 0x0c, 0xe2, 0xe0, 0x23, 0xb7, + 0x6d, 0x02, 0xcf, 0x70, 0xf9, 0xce, 0xe3, 0x53, 0x0d, 0x10, 0x61, 0x7e, + 0x71, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x95, 0x73, 0x7e, + 0xdb, 0xe2, 0x3f, 0x55, 0x35, 0xb0, 0xbd, 0x31, 0x08, 0x15, 0xa7, 0x01, + 0x44, 0x58, 0x49, 0x4c, 0xc8, 0x0a, 0x00, 0x00, 0x60, 0x00, 0x05, 0x00, + 0xb2, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xb0, 0x0a, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, + 0x21, 0x0c, 0x00, 0x00, 0xa9, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, + 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, + 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, + 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, + 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, + 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, + 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, + 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x86, 0xf0, 0xff, 0xff, + 0xff, 0xff, 0x03, 0x20, 0x01, 0xd5, 0x06, 0x62, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0x01, 0x90, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x89, 0x20, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, + 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, + 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, + 0x10, 0x94, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, 0xe6, 0x08, 0xc0, 0xa0, + 0x0c, 0xc3, 0x30, 0x10, 0x31, 0x03, 0x50, 0x06, 0x63, 0x30, 0xe8, 0xb8, + 0x69, 0xb8, 0xfc, 0x09, 0x7b, 0x08, 0xc9, 0x5f, 0x09, 0x69, 0x25, 0x26, + 0xbf, 0xb8, 0x6d, 0x54, 0x18, 0x86, 0x61, 0x0c, 0x73, 0x04, 0x08, 0x29, + 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x21, 0xd0, 0x0c, 0x0b, + 0x81, 0x82, 0xa5, 0x28, 0xc9, 0xc0, 0x0c, 0xc3, 0x30, 0x0c, 0xc3, 0x40, + 0x4d, 0x21, 0x8c, 0xc1, 0x30, 0xe8, 0x29, 0x0b, 0x30, 0x30, 0xc3, 0x30, + 0x18, 0x86, 0x61, 0x28, 0x14, 0x15, 0xc4, 0x18, 0x0c, 0xc3, 0x30, 0x0c, + 0x83, 0xa6, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, + 0x8a, 0x95, 0x98, 0x7c, 0xe4, 0xb6, 0x11, 0x31, 0x0c, 0xc3, 0x50, 0x88, + 0x6a, 0x60, 0x06, 0xb2, 0xe6, 0x08, 0x82, 0x62, 0x30, 0x83, 0x32, 0x0c, + 0x18, 0x65, 0x03, 0x01, 0xc3, 0x08, 0x84, 0x31, 0x53, 0x1b, 0x8c, 0x03, + 0x3b, 0x84, 0xc3, 0x3c, 0xcc, 0x83, 0x1b, 0xd0, 0x42, 0x39, 0xe0, 0x03, + 0x3d, 0xd4, 0x83, 0x3c, 0x94, 0x83, 0x1c, 0x90, 0x02, 0x1f, 0xd8, 0x43, + 0x39, 0x8c, 0x03, 0x3d, 0xbc, 0x83, 0x3c, 0xf0, 0x81, 0x39, 0xb0, 0xc3, + 0x3b, 0x84, 0x03, 0x3d, 0xb0, 0x01, 0x18, 0xd0, 0x81, 0x1f, 0x80, 0x81, + 0x1f, 0xe8, 0x81, 0x1e, 0xb4, 0x43, 0x3a, 0xc0, 0xc3, 0x3c, 0xfc, 0x02, + 0x3d, 0xe4, 0x03, 0x3c, 0x94, 0x03, 0x0a, 0x86, 0x99, 0xc4, 0x60, 0x1c, + 0xd8, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, + 0xe8, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, + 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, + 0xde, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, + 0xfc, 0x00, 0x09, 0x5c, 0x47, 0xde, 0x4c, 0x64, 0x30, 0x0e, 0xec, 0x10, + 0x0e, 0xf3, 0x30, 0x0f, 0x6e, 0x20, 0x0b, 0xb7, 0x40, 0x0b, 0xe5, 0x80, + 0x0f, 0xf4, 0x50, 0x0f, 0xf2, 0x50, 0x0e, 0x72, 0x40, 0x0a, 0x7c, 0x60, + 0x0f, 0xe5, 0x30, 0x0e, 0xf4, 0xf0, 0x0e, 0xf2, 0xc0, 0x07, 0xe6, 0xc0, + 0x0e, 0xef, 0x10, 0x0e, 0xf4, 0xc0, 0x06, 0x60, 0x40, 0x07, 0x7e, 0x00, + 0x06, 0x7e, 0x80, 0x02, 0x8e, 0xc0, 0x33, 0x52, 0x20, 0x02, 0x18, 0x09, + 0x11, 0xc3, 0x30, 0x0c, 0x24, 0x4e, 0x01, 0x00, 0x13, 0x14, 0x72, 0xc0, + 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, + 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, + 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, + 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, + 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, + 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, + 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, + 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, + 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, + 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, + 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, + 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x86, 0x3c, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x0e, 0x20, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02, + 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8f, + 0x05, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, + 0x9e, 0x0c, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb2, 0x40, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, + 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, + 0x4a, 0x60, 0x04, 0xa0, 0x20, 0x8a, 0xa1, 0x08, 0x4a, 0xa2, 0x40, 0x0a, + 0x81, 0xb0, 0x11, 0x00, 0xfa, 0x66, 0x00, 0x28, 0x9c, 0x01, 0xa0, 0x71, + 0x06, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0xc4, 0x8e, 0x0c, 0x6f, 0xec, + 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0x86, 0x06, 0xe6, 0xc6, + 0xe5, 0x06, 0x04, 0x85, 0x26, 0xc6, 0xc6, 0x2c, 0x4c, 0xcc, 0x46, 0xac, + 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x86, 0x64, 0x82, 0x30, 0x28, 0x1b, + 0x84, 0x81, 0x98, 0x20, 0x0c, 0xcb, 0x06, 0x61, 0x30, 0x28, 0x8c, 0xcd, + 0x4d, 0x10, 0x06, 0x66, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0xe1, 0x93, 0x08, + 0x4c, 0x10, 0x86, 0x66, 0x82, 0x30, 0x38, 0x1b, 0x04, 0xc2, 0xd9, 0x90, + 0x10, 0x0b, 0x43, 0x10, 0x43, 0x43, 0x3c, 0x1b, 0x02, 0x68, 0x82, 0x10, + 0x06, 0xd3, 0x04, 0x01, 0x8b, 0x36, 0x2c, 0x84, 0xc4, 0x10, 0xc4, 0xd0, + 0x4c, 0xd3, 0xf4, 0x6c, 0x08, 0xa8, 0x09, 0xc2, 0x18, 0x50, 0x13, 0x84, + 0xe1, 0xd9, 0x80, 0x10, 0x16, 0x43, 0x10, 0xc3, 0x05, 0x6c, 0x08, 0xb0, + 0x0d, 0x44, 0x54, 0x65, 0xc0, 0x04, 0x41, 0x00, 0x68, 0x0c, 0x4d, 0x35, + 0x85, 0xa5, 0xb9, 0x4d, 0x10, 0x06, 0x68, 0xc3, 0x70, 0x5d, 0xc3, 0x06, + 0xa1, 0xf3, 0x36, 0x14, 0x1b, 0x07, 0x68, 0x5f, 0x15, 0x36, 0x36, 0xbb, + 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, + 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, + 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x18, + 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, + 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, + 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0x41, 0x56, 0x87, 0x0c, + 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, + 0x6e, 0x4a, 0xf0, 0x01, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, + 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, + 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, + 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, + 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, + 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, + 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, + 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, + 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, + 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, + 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, + 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, + 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, + 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, + 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, + 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, + 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, + 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, + 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, + 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, + 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, + 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, + 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, + 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, + 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, + 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, + 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, + 0x71, 0x20, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x06, 0x60, 0x70, 0xac, + 0x09, 0x20, 0x8d, 0x11, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x1f, 0x20, 0x0d, + 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x76, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, + 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, + 0xe6, 0x23, 0xb7, 0x6d, 0x08, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, + 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x98, 0x81, 0x33, 0x5c, 0xbe, + 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb, 0x36, 0x50, 0x0d, 0x97, + 0xef, 0x3c, 0xfe, 0x44, 0x5c, 0x13, 0x15, 0x11, 0xa5, 0x03, 0x0c, 0x7e, + 0x71, 0xdb, 0x56, 0x60, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x44, 0x5c, 0x13, + 0x15, 0x11, 0xec, 0xe4, 0x44, 0x84, 0x5f, 0xdc, 0xb6, 0x05, 0x48, 0xc3, + 0xe5, 0x3b, 0x8f, 0x3f, 0x1d, 0x11, 0x01, 0x0c, 0xe2, 0xe0, 0x23, 0xb7, + 0x6d, 0x02, 0xcf, 0x70, 0xf9, 0xce, 0xe3, 0x53, 0x0d, 0x10, 0x61, 0x7e, + 0x71, 0xdb, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, + 0x13, 0x04, 0x54, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x34, 0xcc, 0x00, 0x14, 0x61, 0x40, 0xb9, 0x95, 0x5c, 0x0d, 0x94, 0x41, + 0xe9, 0x06, 0x94, 0x4d, 0xd9, 0x95, 0x51, 0x19, 0x06, 0x90, 0x52, 0x1e, + 0x45, 0x30, 0x02, 0x50, 0x02, 0x64, 0x8c, 0x11, 0xe0, 0xec, 0x7d, 0xe6, + 0xde, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfe, 0x8d, 0x11, 0x80, 0x20, 0x08, + 0x92, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0x88, 0xff, 0xc2, 0x18, 0x01, + 0x08, 0x82, 0xa0, 0xfe, 0x8d, 0x11, 0x80, 0x20, 0x08, 0x86, 0x60, 0x30, + 0x46, 0x00, 0x82, 0x20, 0x48, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82, 0x2c, + 0x18, 0x8c, 0x11, 0x80, 0x20, 0x08, 0x9e, 0x60, 0x30, 0x46, 0x00, 0x82, + 0x20, 0x88, 0x7b, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf0, 0x37, 0x46, 0xc0, + 0xb6, 0xf1, 0x2b, 0x6f, 0x63, 0x04, 0xb9, 0x5e, 0xba, 0xf3, 0x37, 0x46, + 0x00, 0xfb, 0xec, 0x5c, 0x7e, 0x63, 0x04, 0x20, 0x08, 0x82, 0x20, 0x18, + 0x8c, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x90, 0xb1, + 0x01, 0x17, 0xa9, 0x81, 0x1a, 0x8c, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, + 0x18, 0x64, 0x6d, 0xd0, 0x4d, 0x6b, 0xb0, 0x06, 0x64, 0x30, 0x62, 0x90, + 0x00, 0x20, 0x08, 0x06, 0x99, 0x1b, 0x78, 0x15, 0x1b, 0xb0, 0x41, 0x19, + 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x01, 0x61, 0x07, 0x5c, 0x1b, 0x8c, + 0x18, 0x18, 0x00, 0x08, 0x82, 0x01, 0x71, 0x07, 0xdd, 0x1b, 0x8c, 0x18, + 0x1c, 0x00, 0x08, 0x82, 0x81, 0x25, 0x07, 0xdc, 0xf0, 0x06, 0xa3, 0x09, + 0x81, 0x30, 0xdc, 0x40, 0x04, 0x64, 0x30, 0xcb, 0x10, 0x4c, 0xc1, 0x68, + 0xc2, 0x30, 0x0c, 0x37, 0x14, 0x01, 0x19, 0xcc, 0x32, 0x08, 0x53, 0x70, + 0x87, 0x51, 0x57, 0x18, 0x66, 0x41, 0x06, 0x1f, 0x1b, 0x02, 0xfa, 0x9c, + 0x62, 0xd4, 0x1d, 0x86, 0x59, 0xd0, 0xc1, 0xc7, 0x86, 0x80, 0x3e, 0xa3, + 0x09, 0x0d, 0x70, 0x81, 0x61, 0xa3, 0x09, 0x4f, 0x70, 0x81, 0x61, 0x96, + 0x0c, 0xf2, 0x31, 0x43, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, + 0x1c, 0xaa, 0x00, 0x07, 0xc2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1c, + 0xab, 0x10, 0x07, 0x82, 0x11, 0x42, 0x7c, 0x2c, 0x08, 0xe4, 0x63, 0x82, + 0x27, 0x1f, 0x5b, 0x83, 0x20, 0x3e, 0x36, 0x04, 0xf2, 0xb1, 0x83, 0x0d, + 0xe0, 0x73, 0xc1, 0x40, 0xb3, 0x04, 0xc3, 0x40, 0x85, 0x41, 0x0a, 0xc2, + 0x28, 0x0c, 0x03, 0x15, 0x83, 0x3e, 0x08, 0xa3, 0x30, 0x5c, 0x60, 0x98, + 0x05, 0x0b, 0x7c, 0x2e, 0x18, 0x68, 0xc4, 0xa0, 0x01, 0x40, 0x10, 0x0c, + 0x9a, 0x5b, 0x20, 0x85, 0x32, 0x80, 0x05, 0x23, 0x28, 0x85, 0x52, 0x28, + 0x85, 0x52, 0x18, 0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d, 0x18, + 0x84, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0x98, 0x70, 0xe1, 0x14, 0x06, + 0x21, 0x68, 0x03, 0x37, 0xd0, 0x03, 0x0b, 0x14, 0xf8, 0x1c, 0x35, 0xd0, + 0x88, 0x41, 0x03, 0x80, 0x20, 0x18, 0x34, 0xbe, 0xb0, 0x0a, 0x6c, 0x70, + 0x0b, 0x01, 0xc2, 0x0a, 0xac, 0xc0, 0x0a, 0xac, 0x30, 0x9a, 0x10, 0x00, + 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0x23, 0x06, 0x0b, 0x00, 0x82, + 0x60, 0x30, 0xfd, 0x82, 0x2b, 0x0c, 0x42, 0x40, 0x07, 0x75, 0x10, 0x0a, + 0x76, 0x04, 0xf0, 0xb1, 0x4d, 0x14, 0xe0, 0x73, 0xc1, 0x40, 0x23, 0x06, + 0x0d, 0x00, 0x82, 0x60, 0xd0, 0x98, 0xc3, 0x2c, 0xd0, 0xc1, 0x2f, 0x04, + 0x10, 0x2d, 0xd0, 0x02, 0x2d, 0xd0, 0xc2, 0x68, 0x42, 0x00, 0x8c, 0x26, + 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x18, 0x2c, 0x00, 0x08, 0x82, 0xc1, + 0x74, 0x0e, 0xb6, 0x30, 0x08, 0x01, 0x1f, 0xf4, 0x41, 0x2a, 0x18, 0x12, + 0xc0, 0xc7, 0xc6, 0xa0, 0x0f, 0xe0, 0x73, 0xc1, 0x40, 0x23, 0x06, 0x0d, + 0x00, 0x82, 0x60, 0xd0, 0xb8, 0xc3, 0x2e, 0xf0, 0xc1, 0x39, 0x04, 0x18, + 0x2f, 0xf0, 0x02, 0x2f, 0xf0, 0xc2, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, + 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x18, 0x2c, 0x00, 0x08, 0x82, 0xc1, 0xf4, + 0x0e, 0xbe, 0x30, 0x08, 0x01, 0x29, 0x94, 0x42, 0x2c, 0x18, 0x12, 0xc0, + 0xc7, 0xc2, 0xc0, 0x1d, 0x40, 0x30, 0xdc, 0x10, 0xf8, 0x02, 0x18, 0xcc, + 0x32, 0x10, 0x43, 0x60, 0x6e, 0xc0, 0x06, 0xf1, 0xb1, 0x20, 0x90, 0x8f, + 0x09, 0xa9, 0x20, 0x1f, 0xb3, 0x85, 0x20, 0x3e, 0x36, 0x04, 0xf2, 0x31, + 0x24, 0x16, 0xe4, 0x33, 0x4b, 0x50, 0x0c, 0x54, 0x18, 0x38, 0x41, 0xd4, + 0x44, 0x34, 0x50, 0x61, 0xe8, 0x04, 0x51, 0x13, 0xd1, 0x40, 0x85, 0xc1, + 0x13, 0x44, 0x4d, 0x44, 0x03, 0x15, 0x86, 0x4f, 0x10, 0x35, 0x11, 0x0d, + 0x54, 0x0c, 0xb4, 0x41, 0xe4, 0x44, 0x34, 0x4b, 0x60, 0x0c, 0x54, 0x18, + 0x4a, 0xb1, 0x12, 0xd0, 0x40, 0x85, 0xa1, 0x14, 0x2b, 0x01, 0x0d, 0x54, + 0x18, 0x4a, 0xb1, 0x12, 0xd0, 0x40, 0x85, 0xa1, 0x14, 0x2b, 0x01, 0x0d, + 0x54, 0x0c, 0xbe, 0x51, 0xac, 0x04, 0x74, 0x81, 0x61, 0x16, 0xf8, 0x01, + 0x7c, 0x2e, 0x18, 0xe8, 0x12, 0xc3, 0x2c, 0x00, 0x05, 0xf8, 0x5c, 0x30, + 0xd0, 0x88, 0x41, 0x03, 0x80, 0x20, 0x18, 0x34, 0x2c, 0x91, 0x0f, 0xba, + 0x50, 0x12, 0x44, 0xa0, 0x0f, 0xfa, 0xa0, 0x0f, 0xfa, 0x30, 0x9a, 0x10, + 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, + 0x62, 0xb0, 0x00, 0x20, 0x08, 0x06, 0x93, 0x4b, 0xf4, 0x03, 0x31, 0x08, + 0xe3, 0x40, 0x0e, 0xf0, 0x60, 0xc1, 0x15, 0x9f, 0x11, 0x03, 0x03, 0x00, + 0x41, 0x30, 0x38, 0x68, 0x42, 0x25, 0x82, 0xe1, 0x88, 0x20, 0x1d, 0x84, + 0x6f, 0x96, 0xe1, 0x40, 0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x78, + 0x68, 0x42, 0x1f, 0x88, 0x74, 0xb0, 0x2d, 0xa0, 0x8f, 0x05, 0x8a, 0x7c, + 0x4c, 0x50, 0xe4, 0x63, 0x83, 0x22, 0x9f, 0x59, 0x02, 0x64, 0xa0, 0xc2, + 0x30, 0x0e, 0xcd, 0x18, 0xa8, 0x30, 0x8c, 0x43, 0x33, 0x06, 0x2a, 0x0c, + 0xe3, 0xd0, 0x0c, 0xbb, 0x5c, 0x21, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, + 0x60, 0x70, 0xfc, 0x44, 0x4d, 0x04, 0xc3, 0x11, 0x41, 0x3f, 0x28, 0xdf, + 0x2c, 0x83, 0x92, 0x04, 0x26, 0x08, 0xf2, 0xb1, 0x81, 0x1f, 0xe4, 0x63, + 0x81, 0x20, 0x1f, 0x1b, 0xfa, 0x41, 0x3e, 0x26, 0x12, 0x41, 0x7c, 0x2c, + 0x18, 0xe0, 0x33, 0x4b, 0xc0, 0x0c, 0x47, 0x20, 0xf7, 0x40, 0x7c, 0xb3, + 0x0c, 0x0b, 0x13, 0x58, 0x02, 0x12, 0xf2, 0x31, 0x05, 0x24, 0xe4, 0x63, + 0x20, 0x21, 0xc4, 0xc7, 0x18, 0x46, 0x3e, 0x16, 0x08, 0xf2, 0xb1, 0x94, + 0x20, 0xe2, 0x63, 0x81, 0x00, 0x9f, 0x59, 0x02, 0x66, 0xa0, 0xc3, 0x90, + 0x12, 0x61, 0xe1, 0x0f, 0xc5, 0xcc, 0xa0, 0x0e, 0xe2, 0x33, 0x62, 0x60, + 0x00, 0x20, 0x08, 0x06, 0x47, 0x5c, 0x9c, 0x45, 0x30, 0x1c, 0x11, 0xbc, + 0x84, 0xf2, 0xcd, 0x32, 0x38, 0x4d, 0x60, 0x82, 0x20, 0x1f, 0x1b, 0x5c, + 0x42, 0x3e, 0x16, 0x08, 0xf2, 0xb1, 0xe1, 0x25, 0xe4, 0x63, 0x34, 0x11, + 0xc4, 0xc7, 0x82, 0x01, 0x3e, 0xb3, 0x04, 0xd0, 0x70, 0x04, 0x92, 0x12, + 0xc4, 0x37, 0xcb, 0xf0, 0x40, 0x81, 0x25, 0x32, 0x21, 0x1f, 0x53, 0x64, + 0x42, 0x3e, 0x26, 0x13, 0x42, 0x7c, 0x8c, 0x61, 0xe4, 0x63, 0x81, 0x20, + 0x1f, 0xdb, 0x09, 0x22, 0x3e, 0x16, 0x08, 0xf0, 0x99, 0x25, 0x80, 0x06, + 0x3a, 0x0c, 0xa9, 0x11, 0x1e, 0x30, 0x71, 0x2c, 0x98, 0xe4, 0x63, 0x01, + 0x1a, 0xc8, 0xc7, 0x04, 0x34, 0x90, 0x8f, 0x0d, 0x68, 0x20, 0x1f, 0x23, + 0xea, 0x40, 0x3e, 0x46, 0x94, 0x02, 0x7c, 0x8c, 0x28, 0x05, 0xf8, 0x18, + 0x51, 0x0a, 0xf0, 0x31, 0xa2, 0x14, 0xe0, 0x63, 0xa5, 0x40, 0x1a, 0x20, + 0x18, 0x6e, 0x08, 0xe8, 0x02, 0x0c, 0x66, 0x19, 0x22, 0x23, 0x30, 0x56, + 0x30, 0x0d, 0x10, 0x0c, 0x37, 0x04, 0x76, 0x01, 0x06, 0xb3, 0x0c, 0x52, + 0x11, 0x8c, 0x18, 0x38, 0x00, 0x08, 0x82, 0x41, 0xc4, 0x1a, 0x72, 0xd1, + 0x13, 0x3a, 0x91, 0x13, 0x7c, 0x81, 0x1c, 0x46, 0x11, 0x17, 0xb3, 0x04, + 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader_Dx11.cso b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader_Dx11.cso new file mode 100644 index 00000000..d4bbfbd5 Binary files /dev/null and b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader_Dx11.cso differ diff --git a/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader_Dx11.h b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader_Dx11.h new file mode 100644 index 00000000..e8dece2f --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_bicubic_Shader_Dx11.h @@ -0,0 +1,288 @@ +#pragma once + +inline static const unsigned char bcds_bicubic_cso[] = { + 0x44, 0x58, 0x42, 0x43, 0x64, 0xda, 0xe7, 0x9f, 0x36, 0x1e, 0x63, 0x39, + 0x02, 0x61, 0x29, 0x69, 0x2d, 0xfe, 0x5e, 0x7a, 0x01, 0x00, 0x00, 0x00, + 0x44, 0x0d, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x30, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, + 0xa8, 0x0c, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xf4, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x53, 0x43, 0x00, 0x01, 0x00, 0x00, + 0xcc, 0x01, 0x00, 0x00, 0x52, 0x44, 0x31, 0x31, 0x3c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x00, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, + 0x72, 0x65, 0x00, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, + 0xb7, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xc1, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0x53, 0x72, 0x63, 0x57, 0x69, 0x64, 0x74, + 0x68, 0x00, 0x69, 0x6e, 0x74, 0x00, 0xab, 0xab, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x5f, 0x53, 0x72, 0x63, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x5f, 0x44, 0x73, 0x74, 0x57, + 0x69, 0x64, 0x74, 0x68, 0x00, 0x5f, 0x44, 0x73, 0x74, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, + 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4e, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x4f, 0x53, 0x47, 0x4e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0x50, 0x0a, 0x00, 0x00, + 0x50, 0x00, 0x05, 0x00, 0x94, 0x02, 0x00, 0x00, 0x6a, 0x08, 0x00, 0x01, + 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x9c, 0x18, 0x00, 0x04, + 0x00, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x02, 0x32, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x02, + 0x08, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x02, 0x00, + 0xe6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, + 0x56, 0x00, 0x00, 0x04, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x06, 0xf2, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xe6, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc2, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0xbf, 0x0e, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x07, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa6, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x10, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x80, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, + 0xc2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, + 0x2a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x05, + 0x42, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x05, + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x89, 0xc2, 0x00, 0x00, 0x80, + 0x43, 0x55, 0x15, 0x00, 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0xd0, 0xb3, 0x59, 0x3e, 0x59, 0x17, 0x37, 0x3f, + 0x98, 0xdd, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, + 0x42, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, + 0x38, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x3d, 0x36, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x12, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x03, 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, + 0x52, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0d, 0x32, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x56, 0x05, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x3f, 0x00, 0x00, 0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x31, 0x00, 0x00, 0x08, + 0x42, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, + 0x1a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x01, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, + 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x89, + 0xc2, 0x00, 0x00, 0x80, 0x43, 0x55, 0x15, 0x00, 0xf2, 0x00, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xd0, 0xb3, 0x59, 0x3e, + 0x59, 0x17, 0x37, 0x3f, 0x98, 0xdd, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x0a, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xac, 0xc5, 0x27, 0x37, 0x0e, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, + 0xe2, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, + 0x52, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0d, 0x32, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x56, 0x05, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x3f, 0x00, 0x00, 0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x31, 0x00, 0x00, 0x08, + 0x42, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, + 0x1a, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x01, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, + 0xf2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, 0xa4, 0x00, 0x00, 0x06, + 0xf2, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0x02, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, + 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + +}; diff --git a/OptiScaler/output_scaling/precompile/bcds.hlsl b/OptiScaler/output_scaling/precompile/bcds_catmull.hlsl similarity index 100% rename from OptiScaler/output_scaling/precompile/bcds.hlsl rename to OptiScaler/output_scaling/precompile/bcds_catmull.hlsl diff --git a/OptiScaler/output_scaling/precompile/BCDS_Shader.cso b/OptiScaler/output_scaling/precompile/bcds_catmull_Shader.cso similarity index 100% rename from OptiScaler/output_scaling/precompile/BCDS_Shader.cso rename to OptiScaler/output_scaling/precompile/bcds_catmull_Shader.cso diff --git a/OptiScaler/output_scaling/precompile/BCDS_Shader.h b/OptiScaler/output_scaling/precompile/bcds_catmull_Shader.h similarity index 99% rename from OptiScaler/output_scaling/precompile/BCDS_Shader.h rename to OptiScaler/output_scaling/precompile/bcds_catmull_Shader.h index 1b443a37..4e245336 100644 --- a/OptiScaler/output_scaling/precompile/BCDS_Shader.h +++ b/OptiScaler/output_scaling/precompile/bcds_catmull_Shader.h @@ -1,6 +1,6 @@ #pragma once -inline static const unsigned char BCDS_cso[] = { +inline static const unsigned char bcds_catmull_cso[] = { 0x44, 0x58, 0x42, 0x43, 0x66, 0x0c, 0xe1, 0x69, 0x79, 0x1b, 0x27, 0x54, 0x88, 0x30, 0xf4, 0xc5, 0xd6, 0xd3, 0xe3, 0x66, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x13, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, diff --git a/OptiScaler/output_scaling/precompile/BCDS_Shader_Dx11.cso b/OptiScaler/output_scaling/precompile/bcds_catmull_Shader_Dx11.cso similarity index 100% rename from OptiScaler/output_scaling/precompile/BCDS_Shader_Dx11.cso rename to OptiScaler/output_scaling/precompile/bcds_catmull_Shader_Dx11.cso diff --git a/OptiScaler/output_scaling/precompile/BCDS_Shader_Dx11.h b/OptiScaler/output_scaling/precompile/bcds_catmull_Shader_Dx11.h similarity index 99% rename from OptiScaler/output_scaling/precompile/BCDS_Shader_Dx11.h rename to OptiScaler/output_scaling/precompile/bcds_catmull_Shader_Dx11.h index d0b9c104..62f34702 100644 --- a/OptiScaler/output_scaling/precompile/BCDS_Shader_Dx11.h +++ b/OptiScaler/output_scaling/precompile/bcds_catmull_Shader_Dx11.h @@ -1,6 +1,6 @@ #pragma once -inline static const unsigned char BCDS_cso[] = { +inline static const unsigned char bcds_catmull_cso[] = { 0x44, 0x58, 0x42, 0x43, 0x05, 0xd2, 0xd5, 0xd7, 0x91, 0x91, 0x9d, 0x28, 0x44, 0x31, 0x03, 0x2e, 0xcf, 0xaa, 0xd1, 0x26, 0x01, 0x00, 0x00, 0x00, 0xac, 0x0c, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, diff --git a/OptiScaler/output_scaling/precompile/bcds_lanczos.hlsl b/OptiScaler/output_scaling/precompile/bcds_lanczos.hlsl new file mode 100644 index 00000000..e5e44b35 --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_lanczos.hlsl @@ -0,0 +1,109 @@ +cbuffer Params : register(b0) +{ + int _SrcWidth; // Source texture width + int _SrcHeight; // Source texture height + int _DstWidth; // Destination texture width + int _DstHeight; // Destination texture height +}; + +// Texture resources. +Texture2D InputTexture : register(t0); // Input texture (source image) +RWTexture2D OutputTexture : register(u0); // Output texture (downsampled image) + +float luminance(float3 color) +{ + return dot(color, float3(0.2126, 0.7152, 0.0722)); +} + +// Lanczos kernel function. +float lanczosKernel(float x, float radius, float pi) +{ + if (x == 0.0) + return 1.0; + if (x > radius) + return 0.0; + + x *= pi; + return (sin(x) / x) * (sin(x / radius) / (x / radius)); +} + +[numthreads(16, 16, 1)] +void CSMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + // Coordinates of the pixel in the target (downsampled) texture. + uint2 targetCoords = dispatchThreadID.xy; + + // Ensure we are within the target texture bounds. + if (targetCoords.x >= _DstWidth || targetCoords.y >= _DstHeight) + return; + + // Calculate scaling factor and source position. + float2 scale = float2(_SrcWidth, _SrcHeight) / float2(_DstWidth, _DstHeight); + float2 sourcePos = float2(targetCoords) * scale; + + // Lanczos kernel properties. + const float lanczosRadius = 3.0; // Typical radius (adjustable for quality/performance) + const float pi = 3.14159265359; + + // Accumulators for color and weight. + float4 color = 0.0; + float totalWeight = 0.0; + float avgLuminance = 0.0; + + // First pass: Compute average luminance in the 4x4 neighborhood + for (int dy = -1; dy <= 2; dy++) + { + for (int dx = -1; dx <= 2; dx++) + { + int2 sampleCoords = sourcePos + int2(dx, dy); + sampleCoords = clamp(sampleCoords, int2(0, 0), int2(_SrcWidth - 1, _SrcHeight - 1)); + + float4 sampleColor = InputTexture.Load(int3(sampleCoords, 0)); + avgLuminance += luminance(sampleColor.rgb); + } + } + avgLuminance /= 16.0; // Normalize luminance by the 4x4 sample count + + // Loop through the kernel window. + for (int y = -int(lanczosRadius); y <= int(lanczosRadius); y++) + { + for (int x = -int(lanczosRadius); x <= int(lanczosRadius); x++) + { + // Offset in source texture space. + float2 offset = float2(x, y); + float2 samplePos = sourcePos + offset; + + // Ensure we sample within bounds. + samplePos = clamp(samplePos, float2(0, 0), float2(_SrcWidth - 1, _SrcHeight - 1)); + + // Fetch the texel. + float4 sampleColor = InputTexture.Load(int3(samplePos, 0)); + + // Compute the current luminance of the sample + float currentLuminance = luminance(sampleColor.rgb); + + // Scale the color to match the average luminance if it deviates too much + float luminanceDeviation = abs(currentLuminance - avgLuminance); + if (luminanceDeviation > 0.5) // Threshold for clamping + { + float luminanceScale = avgLuminance / max(currentLuminance, 1e-5); // Avoid division by zero + sampleColor.rgb *= luminanceScale; // Scale brightness while preserving hue/saturation + } + + // Calculate Lanczos weight. + float2 dist = abs(samplePos - sourcePos); + float2 lanczosWeight = lanczosKernel(dist.x, lanczosRadius, pi) * + lanczosKernel(dist.y, lanczosRadius, pi); + + // Accumulate weighted color. + color += sampleColor * lanczosWeight.x * lanczosWeight.y; + totalWeight += lanczosWeight.x * lanczosWeight.y; + } + } + + // Normalize the color by the total weight to avoid darkening/brightening. + color /= totalWeight; + + // Write the result to the output texture. + OutputTexture[dispatchThreadID.xy] = color; +} \ No newline at end of file diff --git a/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader.cso b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader.cso new file mode 100644 index 00000000..880f1150 Binary files /dev/null and b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader.cso differ diff --git a/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader.h b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader.h new file mode 100644 index 00000000..9041aa63 --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader.h @@ -0,0 +1,422 @@ +#pragma once + +inline static const unsigned char bcds_lanczos_cso[] = { + 0x44, 0x58, 0x42, 0x43, 0x2c, 0xad, 0x64, 0xa1, 0x2f, 0x42, 0x9e, 0x9f, + 0x73, 0x7a, 0xdf, 0x2a, 0x07, 0x39, 0xff, 0x9e, 0x01, 0x00, 0x00, 0x00, + 0x90, 0x13, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0xbc, 0x08, 0x00, 0x00, 0xd8, 0x08, 0x00, 0x00, + 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x50, 0x53, 0x56, 0x30, 0x98, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x43, 0x53, 0x4d, 0x61, 0x69, 0x6e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xa8, 0x07, 0x00, 0x00, + 0x60, 0x00, 0x05, 0x00, 0xea, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, + 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00, 0x00, + 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, + 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, + 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, + 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, + 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, + 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, + 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, + 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, + 0x86, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x01, 0xd5, 0x06, 0x62, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x00, 0x49, 0x18, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, + 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, + 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x98, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, + 0xe6, 0x08, 0xc0, 0xa0, 0x0c, 0xc3, 0x30, 0x10, 0x51, 0x88, 0x61, 0x18, + 0x06, 0x32, 0x66, 0x00, 0x6e, 0x1a, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, + 0x57, 0x42, 0x5a, 0x89, 0xc9, 0x2f, 0x6e, 0x1b, 0x15, 0x08, 0x82, 0x20, + 0xc3, 0x1c, 0x01, 0x42, 0xca, 0x3d, 0xc3, 0xe5, 0x4f, 0xd8, 0x43, 0x48, + 0x7e, 0x08, 0x34, 0xc3, 0x42, 0xa0, 0x60, 0x29, 0x4a, 0x32, 0x30, 0xc3, + 0x30, 0x0c, 0xc3, 0x30, 0x50, 0x53, 0x08, 0x64, 0x40, 0x10, 0x7a, 0xca, + 0x80, 0x0c, 0x08, 0x45, 0x65, 0x01, 0x06, 0x66, 0x18, 0x06, 0x04, 0x41, + 0x10, 0x85, 0xa6, 0x82, 0x20, 0x03, 0x82, 0x20, 0x08, 0x82, 0x50, 0x75, + 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d, 0x54, 0xb1, 0x12, + 0x93, 0x8f, 0xdc, 0x36, 0x22, 0x86, 0x61, 0x18, 0x0a, 0x71, 0x0d, 0xcc, + 0x40, 0xd8, 0x1c, 0x41, 0x50, 0x0c, 0x66, 0x50, 0x86, 0x41, 0xa3, 0x6d, + 0x20, 0x60, 0x18, 0x81, 0x40, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87, 0x70, + 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87, 0x7a, + 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87, 0x71, + 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87, 0x70, + 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03, 0x3d, + 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87, 0x7c, + 0x80, 0x87, 0x72, 0x40, 0xc1, 0x30, 0x93, 0x18, 0x8c, 0x03, 0x3b, 0x84, + 0xc3, 0x3c, 0xcc, 0x83, 0x1b, 0xd0, 0x42, 0x39, 0xe0, 0x03, 0x3d, 0xd4, + 0x83, 0x3c, 0x94, 0x83, 0x1c, 0x90, 0x02, 0x1f, 0xd8, 0x43, 0x39, 0x8c, + 0x03, 0x3d, 0xbc, 0x83, 0x3c, 0xf0, 0x81, 0x39, 0xb0, 0xc3, 0x3b, 0x84, + 0x03, 0x3d, 0xb0, 0x01, 0x18, 0xd0, 0x81, 0x1f, 0x80, 0x81, 0x1f, 0x20, + 0xc1, 0xfb, 0x08, 0x9c, 0x89, 0x0c, 0xc6, 0x81, 0x1d, 0xc2, 0x61, 0x1e, + 0xe6, 0xc1, 0x0d, 0x64, 0xe1, 0x16, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, + 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, + 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, + 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, + 0x50, 0xe0, 0x91, 0x78, 0x46, 0x0a, 0x44, 0x00, 0x23, 0x21, 0x62, 0x18, + 0x86, 0x81, 0x48, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, + 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, + 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, + 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, + 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, + 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, + 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, + 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, + 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, + 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, + 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, + 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x3c, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x79, 0x0c, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4f, 0x05, 0x04, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b, 0x10, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, + 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, 0x4a, 0x60, 0x04, 0xa0, + 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0xa4, 0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, + 0x30, 0xca, 0xa2, 0x34, 0x03, 0x8a, 0x58, 0xa0, 0x48, 0x48, 0x1b, 0x01, + 0xa8, 0x01, 0x0a, 0x67, 0x00, 0x68, 0x9c, 0x01, 0x20, 0x72, 0x06, 0x80, + 0xca, 0x19, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0xc4, 0x8e, 0x0c, 0x6f, 0xec, + 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0x86, 0x06, 0xe6, 0xc6, + 0xe5, 0x06, 0x04, 0x85, 0x26, 0xc6, 0xc6, 0x2c, 0x4c, 0xcc, 0x46, 0xac, + 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x06, 0x65, 0x82, 0x30, 0x2c, 0x1b, + 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x85, 0xb1, 0xb9, 0x09, 0xc2, 0xc0, + 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x84, 0xc1, 0x46, 0x26, 0xc9, 0x0d, + 0xae, 0x8e, 0x8e, 0xaa, 0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x6c, 0x82, 0x30, + 0x34, 0x13, 0x84, 0xc1, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, + 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13, 0x84, 0x31, 0xe0, 0xd8, + 0x3c, 0xd5, 0xd1, 0xc1, 0xd5, 0xd1, 0x51, 0x95, 0xe1, 0xd1, 0xd5, 0xc9, + 0x95, 0x4d, 0x10, 0xb4, 0x6c, 0xc3, 0x42, 0x44, 0x12, 0x41, 0x0c, 0xcc, + 0x34, 0x4d, 0xce, 0x86, 0x80, 0x9a, 0x20, 0x94, 0x81, 0x47, 0x03, 0x2a, + 0x4c, 0x2e, 0xac, 0x6d, 0x6e, 0x82, 0x30, 0x3c, 0x1b, 0x10, 0xc2, 0xba, + 0x08, 0x62, 0xc0, 0x80, 0x0d, 0x41, 0xb6, 0x81, 0x80, 0x2a, 0x0d, 0x98, + 0x20, 0x90, 0x41, 0xc7, 0xe4, 0x6b, 0x4a, 0x6e, 0xec, 0x2a, 0x8d, 0x8c, + 0x0e, 0x6d, 0x82, 0x30, 0x40, 0x13, 0x84, 0x21, 0x9a, 0x20, 0x0c, 0xd2, + 0x04, 0x41, 0xd3, 0x36, 0x20, 0x48, 0xe7, 0x11, 0x1f, 0x18, 0x34, 0x61, + 0x40, 0xe5, 0x6b, 0x4a, 0x6e, 0x0c, 0xa9, 0x2c, 0xed, 0x0c, 0x8d, 0x6e, + 0x03, 0x82, 0x8c, 0x81, 0x07, 0x06, 0x1f, 0x18, 0x34, 0x61, 0xc0, 0xe4, + 0x8b, 0x68, 0x8e, 0xee, 0x2a, 0x8d, 0x8c, 0x0e, 0x6d, 0x82, 0x30, 0x4c, + 0x1b, 0x10, 0xa4, 0x0c, 0x3c, 0x33, 0xf8, 0xc0, 0xa0, 0x09, 0x03, 0x2a, + 0x5f, 0x44, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x13, 0x84, + 0x81, 0xda, 0x80, 0x20, 0x68, 0xe0, 0xa5, 0xc1, 0x07, 0x06, 0x4d, 0x18, + 0x6c, 0x28, 0x30, 0x31, 0x20, 0x83, 0x33, 0x50, 0x83, 0x0d, 0x03, 0xc1, + 0xad, 0xc1, 0x04, 0x41, 0x00, 0x36, 0x00, 0x1b, 0x06, 0xc2, 0x0d, 0xdc, + 0x60, 0x43, 0xf0, 0x06, 0x1b, 0x86, 0xa1, 0x0d, 0xe0, 0x80, 0xc6, 0xd0, + 0x54, 0x53, 0x58, 0x9a, 0xdb, 0x86, 0x01, 0xc3, 0x86, 0x0d, 0x02, 0x18, + 0xcc, 0xc1, 0x86, 0xa2, 0x0d, 0xe4, 0x00, 0xd8, 0xe8, 0x80, 0x88, 0x98, + 0x5c, 0x98, 0xdb, 0x18, 0x5a, 0xd9, 0xdc, 0x04, 0x61, 0xa8, 0x68, 0x98, + 0xb1, 0xbd, 0x85, 0xd1, 0xcd, 0x4d, 0x10, 0x06, 0x8b, 0x45, 0x9a, 0xdb, + 0x1c, 0xdd, 0xdc, 0x04, 0x61, 0xb8, 0x48, 0xa4, 0xb9, 0xd1, 0xcd, 0x4d, + 0x10, 0x06, 0x8c, 0x08, 0x5d, 0x19, 0xde, 0x17, 0xdb, 0x5b, 0x18, 0x19, + 0x13, 0xba, 0x32, 0xbc, 0xaf, 0x39, 0xba, 0x37, 0xb9, 0xb2, 0x0d, 0x8c, + 0x1d, 0xdc, 0x01, 0x1e, 0xe4, 0x81, 0x1e, 0xec, 0x01, 0x1f, 0xf4, 0x81, + 0x1f, 0x30, 0x7f, 0x30, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, + 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, + 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, + 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, + 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, + 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, + 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x68, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, + 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, + 0xe6, 0xa6, 0x08, 0x6b, 0x00, 0x07, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, + 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x74, + 0xd0, 0x85, 0x0c, 0xcf, 0x65, 0xec, 0xad, 0xce, 0x8d, 0xae, 0x4c, 0x6e, + 0x6e, 0x4a, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, + 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, + 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, + 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, + 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, + 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, + 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, + 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, + 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, + 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, + 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, + 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, + 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, + 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, + 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, + 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, + 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, + 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, + 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, + 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, + 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, + 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, + 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, + 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, + 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, + 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, + 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, + 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x06, 0x60, 0x70, 0xac, 0x09, 0x20, 0x8d, 0x11, 0x40, 0xc3, 0xe5, 0x3b, + 0x8f, 0x1f, 0x20, 0x0d, 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x26, 0x00, 0x0d, + 0x97, 0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, 0xf9, 0xc8, 0x6d, 0x1b, + 0xc2, 0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, + 0x0e, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x8f, 0xdc, 0xb6, 0x25, 0x48, + 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, + 0x0b, 0x61, 0x07, 0xce, 0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, + 0xc5, 0x6d, 0xdb, 0x40, 0x35, 0x5c, 0xbe, 0xf3, 0xf8, 0x13, 0x71, 0x4d, + 0x54, 0x44, 0x94, 0x0e, 0x30, 0xf8, 0xc5, 0x6d, 0x9b, 0x81, 0x35, 0x5c, + 0xbe, 0xf3, 0xf8, 0x13, 0x71, 0x4d, 0x54, 0x44, 0xb0, 0x93, 0x13, 0x11, + 0x7e, 0x71, 0xdb, 0x16, 0x20, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x74, 0x44, + 0x04, 0x30, 0x88, 0x83, 0x8f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, + 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7a, 0x4b, 0xc7, 0x6b, 0x03, 0xa6, 0xa7, 0x44, + 0xa7, 0x52, 0x67, 0xa2, 0x5e, 0x44, 0xf6, 0xda, 0x44, 0x58, 0x49, 0x4c, + 0xb0, 0x0a, 0x00, 0x00, 0x60, 0x00, 0x05, 0x00, 0xac, 0x02, 0x00, 0x00, + 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x98, 0x0a, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, + 0xa3, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, + 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, + 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, + 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, + 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, + 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, + 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, + 0x40, 0x02, 0xa8, 0x0d, 0x86, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, + 0x01, 0xd5, 0x06, 0x62, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x00, + 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, + 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, + 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, + 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x9c, 0xc1, 0x08, + 0x40, 0x09, 0x00, 0x0a, 0xe6, 0x08, 0xc0, 0xa0, 0x0c, 0xc3, 0x30, 0x10, + 0x51, 0x88, 0x61, 0x18, 0x06, 0x32, 0x66, 0x00, 0x6e, 0x1a, 0x2e, 0x7f, + 0xc2, 0x1e, 0x42, 0xf2, 0x57, 0x42, 0x5a, 0x89, 0xc9, 0x2f, 0x6e, 0x1b, + 0x15, 0x08, 0x82, 0x20, 0xc3, 0x1c, 0x01, 0x42, 0xca, 0x3d, 0xc3, 0xe5, + 0x4f, 0xd8, 0x43, 0x48, 0x7e, 0x08, 0x34, 0xc3, 0x42, 0xa0, 0x60, 0x29, + 0x4a, 0x32, 0x30, 0xc3, 0x30, 0x0c, 0xc3, 0x30, 0x50, 0x53, 0x08, 0x64, + 0x40, 0x10, 0x7a, 0xca, 0x80, 0x0c, 0x08, 0x45, 0x65, 0x01, 0x06, 0x66, + 0x18, 0x06, 0x04, 0x41, 0x10, 0x85, 0xa6, 0x82, 0x20, 0x03, 0x82, 0x20, + 0x08, 0x82, 0x50, 0x75, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, + 0x6d, 0x54, 0xb1, 0x12, 0x93, 0x8f, 0xdc, 0x36, 0x22, 0x86, 0x61, 0x18, + 0x0a, 0x71, 0x0d, 0xcc, 0x40, 0xd8, 0x1c, 0x41, 0x50, 0x0c, 0x66, 0x50, + 0x86, 0x41, 0xa3, 0x6d, 0x20, 0x60, 0x18, 0x81, 0x40, 0x66, 0x6a, 0x83, + 0x71, 0x60, 0x87, 0x70, 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, + 0x7c, 0xa0, 0x87, 0x7a, 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, + 0x7b, 0x28, 0x87, 0x71, 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, + 0x76, 0x78, 0x87, 0x70, 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, + 0x30, 0xf0, 0x03, 0x3d, 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, + 0x5f, 0xa0, 0x87, 0x7c, 0x80, 0x87, 0x72, 0x40, 0xc1, 0x30, 0x93, 0x18, + 0x8c, 0x03, 0x3b, 0x84, 0xc3, 0x3c, 0xcc, 0x83, 0x1b, 0xd0, 0x42, 0x39, + 0xe0, 0x03, 0x3d, 0xd4, 0x83, 0x3c, 0x94, 0x83, 0x1c, 0x90, 0x02, 0x1f, + 0xd8, 0x43, 0x39, 0x8c, 0x03, 0x3d, 0xbc, 0x83, 0x3c, 0xf0, 0x81, 0x39, + 0xb0, 0xc3, 0x3b, 0x84, 0x03, 0x3d, 0xb0, 0x01, 0x18, 0xd0, 0x81, 0x1f, + 0x80, 0x81, 0x1f, 0x20, 0xc1, 0xfb, 0x08, 0x9c, 0x89, 0x0c, 0xc6, 0x81, + 0x1d, 0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x64, 0xe1, 0x16, 0x68, 0xa1, + 0x1c, 0xf0, 0x81, 0x1e, 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, + 0x0f, 0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, + 0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, + 0x0f, 0xc0, 0xc0, 0x0f, 0x50, 0xe0, 0x91, 0x78, 0x46, 0x0a, 0x44, 0x00, + 0x23, 0x21, 0x62, 0x18, 0x86, 0x81, 0xc8, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, + 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, + 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, + 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, + 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, + 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, + 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, + 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x04, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x0c, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, + 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, + 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x21, 0x4f, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b, 0x10, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, + 0xc6, 0x04, 0x43, 0x1a, 0x4a, 0x60, 0x04, 0xa0, 0x20, 0x8a, 0xa1, 0x08, + 0x4a, 0xa2, 0x40, 0x0a, 0x81, 0xb4, 0x11, 0x00, 0x0a, 0x67, 0x00, 0x68, + 0x9c, 0x01, 0xa0, 0x72, 0x06, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0xc4, + 0x8e, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, + 0x86, 0x06, 0xe6, 0xc6, 0xe5, 0x06, 0x04, 0x85, 0x26, 0xc6, 0xc6, 0x2c, + 0x4c, 0xcc, 0x46, 0xac, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x06, 0x65, + 0x82, 0x30, 0x2c, 0x1b, 0x84, 0x81, 0x98, 0x20, 0x0c, 0xcc, 0x06, 0x61, + 0x30, 0x28, 0x8c, 0xcd, 0x4d, 0x10, 0x86, 0x66, 0xc3, 0x80, 0x24, 0xc4, + 0x04, 0x21, 0x0c, 0x26, 0x02, 0x13, 0x84, 0xc1, 0x99, 0x20, 0x0c, 0xcf, + 0x06, 0x81, 0x70, 0x36, 0x24, 0xc4, 0xc2, 0x10, 0xc4, 0xd0, 0x10, 0xcf, + 0x86, 0x00, 0x9a, 0x20, 0x8c, 0x01, 0x35, 0x41, 0xd0, 0xa4, 0x0d, 0x0b, + 0x21, 0x31, 0x04, 0x31, 0x34, 0xd3, 0x34, 0x3d, 0x1b, 0x02, 0x6a, 0x82, + 0x50, 0x06, 0xd5, 0x04, 0x61, 0x80, 0x36, 0x20, 0x84, 0xc5, 0x10, 0xc4, + 0x70, 0x01, 0x1b, 0x02, 0x6c, 0x03, 0x11, 0x55, 0x19, 0x30, 0x41, 0x10, + 0x00, 0x1a, 0x43, 0x53, 0x4d, 0x61, 0x69, 0x6e, 0x13, 0x84, 0x21, 0xda, + 0x30, 0x5c, 0xd7, 0xb0, 0x41, 0xe8, 0xbc, 0x0d, 0xc5, 0xc6, 0x01, 0xda, + 0x57, 0x85, 0x8d, 0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, + 0x4a, 0x10, 0x54, 0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, + 0x73, 0x9b, 0x12, 0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, + 0xca, 0xe4, 0xa6, 0x04, 0x46, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, + 0xb2, 0x32, 0xb9, 0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x41, 0x52, 0x86, + 0x0c, 0xcf, 0x45, 0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, + 0x4a, 0x90, 0xd5, 0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, + 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, + 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, + 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, + 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, + 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, + 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, + 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, + 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, + 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, + 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, + 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, + 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, + 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, + 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, + 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, + 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, + 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, + 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, + 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, + 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, + 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, + 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, + 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, + 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, + 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, + 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, + 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, + 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x06, 0x60, 0x70, 0xac, 0x09, 0x20, 0x8d, 0x11, + 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x1f, 0x20, 0x0d, 0x10, 0x61, 0x7e, 0x71, + 0xdb, 0x26, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, + 0xf9, 0xc8, 0x6d, 0x1b, 0xc2, 0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, + 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x8f, + 0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, + 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x07, 0xce, 0x70, 0xf9, 0xce, 0xe3, + 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0xdb, 0x40, 0x35, 0x5c, 0xbe, 0xf3, + 0xf8, 0x13, 0x71, 0x4d, 0x54, 0x44, 0x94, 0x0e, 0x30, 0xf8, 0xc5, 0x6d, + 0x9b, 0x81, 0x35, 0x5c, 0xbe, 0xf3, 0xf8, 0x13, 0x71, 0x4d, 0x54, 0x44, + 0xb0, 0x93, 0x13, 0x11, 0x7e, 0x71, 0xdb, 0x16, 0x20, 0x0d, 0x97, 0xef, + 0x3c, 0xfe, 0x74, 0x44, 0x04, 0x30, 0x88, 0x83, 0x8f, 0xdc, 0xb6, 0x15, + 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, + 0x03, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x13, 0x04, 0x54, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x34, 0xcc, 0x00, 0xd4, 0x40, 0x69, 0x94, 0x5c, 0xd9, 0x95, 0x51, 0xe9, + 0x06, 0x94, 0x52, 0x31, 0x15, 0x61, 0x40, 0xb9, 0x95, 0x41, 0x1d, 0x14, + 0x52, 0x19, 0x06, 0x90, 0x52, 0x1e, 0x45, 0x30, 0x02, 0x50, 0x02, 0x84, + 0x8c, 0x11, 0x80, 0x20, 0x08, 0x92, 0x60, 0x30, 0x46, 0xb0, 0xfb, 0xa3, + 0x4c, 0x82, 0xc1, 0x18, 0x81, 0x4c, 0x8b, 0x2c, 0xfe, 0x8d, 0x11, 0x80, + 0x20, 0x08, 0xe2, 0xdf, 0x18, 0x01, 0x08, 0x82, 0x20, 0xee, 0x8d, 0x11, + 0x80, 0x20, 0x08, 0xc2, 0xdf, 0x18, 0x01, 0xdb, 0xc6, 0xaf, 0xbc, 0x8d, + 0x11, 0xe0, 0xec, 0x7d, 0xe6, 0xde, 0x18, 0x41, 0xae, 0x97, 0xee, 0xfc, + 0x8d, 0x11, 0xc0, 0x3e, 0x3b, 0x97, 0xdf, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xb0, 0xad, 0xc1, 0xc6, 0xa4, 0x41, + 0x1a, 0x88, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x6c, 0x6c, 0xc0, + 0x39, 0x6a, 0xa0, 0x06, 0x63, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, + 0x5b, 0x1b, 0x74, 0xd0, 0x1a, 0xac, 0x01, 0x19, 0x8c, 0x18, 0x18, 0x00, + 0x08, 0x82, 0x01, 0x61, 0x07, 0x1b, 0x1b, 0x8c, 0x18, 0x18, 0x00, 0x08, + 0x82, 0x01, 0x71, 0x07, 0x9c, 0x1b, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, + 0x01, 0x16, 0x07, 0xdf, 0xe0, 0x06, 0xa3, 0x09, 0x81, 0x30, 0xdc, 0x40, + 0x04, 0x64, 0x30, 0xcb, 0x10, 0x4c, 0xc1, 0x68, 0xc2, 0x30, 0x0c, 0x37, + 0x14, 0x01, 0x19, 0xcc, 0x32, 0x08, 0x53, 0x30, 0x9a, 0x50, 0x00, 0x17, + 0x20, 0x36, 0x9a, 0x70, 0x04, 0x17, 0x20, 0x76, 0x08, 0x62, 0x77, 0x20, + 0x66, 0x85, 0x40, 0x1f, 0x23, 0x04, 0xfa, 0xdc, 0x83, 0xd4, 0x3d, 0x48, + 0x19, 0x21, 0xc8, 0xc7, 0x08, 0x41, 0x3e, 0xb3, 0x04, 0xc3, 0x40, 0x05, + 0xe2, 0x06, 0x42, 0x1c, 0x14, 0x03, 0x15, 0x03, 0x3a, 0x08, 0x75, 0x50, + 0xcc, 0x12, 0x10, 0x03, 0x15, 0x08, 0x31, 0xb4, 0x01, 0x31, 0x50, 0x31, + 0xb0, 0xc3, 0xd0, 0x06, 0xc4, 0x05, 0x88, 0x1d, 0x81, 0x98, 0x09, 0x08, + 0x7c, 0x4c, 0x40, 0xe0, 0x73, 0xc2, 0x40, 0x27, 0x0c, 0x34, 0x62, 0x70, + 0x00, 0x20, 0x08, 0x06, 0x18, 0x2b, 0xe8, 0x81, 0x97, 0x0a, 0xa3, 0x09, + 0x01, 0x60, 0xc1, 0x1f, 0x80, 0x60, 0x34, 0x61, 0x08, 0x2c, 0x08, 0x05, + 0x10, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x81, 0x71, 0x0b, 0x7c, 0x70, + 0xb8, 0xc2, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x18, 0xb8, 0xd0, 0x07, + 0xc7, 0x2b, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x81, 0x91, 0x0b, 0x7d, + 0x20, 0x14, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x60, 0xe8, 0x82, 0x1f, + 0x08, 0xc4, 0x88, 0x41, 0x03, 0x80, 0x20, 0x18, 0x34, 0xba, 0xe0, 0x07, + 0x68, 0x20, 0x0b, 0x42, 0x70, 0x0a, 0xa7, 0x70, 0x0a, 0xa7, 0x30, 0x9a, + 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0x23, 0x06, 0x0b, + 0x00, 0x82, 0x60, 0x50, 0xe9, 0x42, 0x28, 0x0c, 0x42, 0xf0, 0x06, 0x70, + 0x10, 0x07, 0x16, 0x58, 0xf0, 0x31, 0x2b, 0x17, 0x40, 0x30, 0xdc, 0x10, + 0x8c, 0x02, 0x18, 0xcc, 0x32, 0x14, 0x44, 0x60, 0xda, 0x2e, 0x80, 0x60, + 0xb8, 0x21, 0x28, 0x05, 0x30, 0x98, 0x65, 0x30, 0x86, 0xc0, 0x0a, 0x3d, + 0x90, 0xcf, 0x2c, 0xc1, 0x31, 0x50, 0x81, 0xa8, 0x83, 0x91, 0x13, 0xd1, + 0x40, 0x05, 0xc2, 0x0e, 0x46, 0x4e, 0x44, 0x03, 0x15, 0x88, 0x3b, 0x18, + 0x39, 0x11, 0x0d, 0x54, 0x20, 0xf0, 0x60, 0xe4, 0x44, 0x34, 0x50, 0x81, + 0xc8, 0x83, 0x91, 0x13, 0xd1, 0x40, 0xc5, 0x60, 0x13, 0x46, 0x4f, 0x44, + 0xb3, 0x04, 0xc8, 0x40, 0x05, 0xc2, 0x1c, 0x2d, 0x01, 0x0d, 0x54, 0x20, + 0xcc, 0xd1, 0x12, 0xd0, 0x40, 0x05, 0xc2, 0x1c, 0x2d, 0x01, 0x0d, 0x54, + 0x20, 0xcc, 0xd1, 0x12, 0xd0, 0x40, 0x05, 0xc2, 0x1c, 0x2d, 0x01, 0x0d, + 0x54, 0x0c, 0x62, 0x71, 0xb4, 0x04, 0x74, 0x01, 0x62, 0x87, 0x20, 0x66, + 0x82, 0x1b, 0xc0, 0xc7, 0x04, 0x37, 0x80, 0xcf, 0x88, 0xc1, 0x01, 0x80, + 0x20, 0x18, 0x60, 0xf0, 0xe0, 0x0b, 0xa2, 0xd0, 0x0e, 0xa3, 0x09, 0x01, + 0x60, 0xc1, 0x38, 0x80, 0xe0, 0x02, 0xc4, 0x46, 0x13, 0x88, 0xc0, 0x02, + 0x73, 0x00, 0xc1, 0x05, 0x88, 0x8d, 0x18, 0x1c, 0x00, 0x08, 0x82, 0xc1, + 0xb3, 0x0f, 0xe4, 0x90, 0xb0, 0xc2, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, + 0x3c, 0xfc, 0x50, 0x0e, 0x49, 0x2b, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, + 0xc1, 0xd3, 0x0f, 0xbe, 0x20, 0x18, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, + 0xf0, 0xf8, 0xc3, 0x2f, 0x08, 0xc4, 0x09, 0x03, 0x9d, 0x30, 0xd0, 0x88, + 0x41, 0x03, 0x80, 0x20, 0x18, 0x34, 0x22, 0x61, 0x0e, 0xb0, 0xa0, 0x0f, + 0x42, 0xf0, 0x0e, 0xef, 0xf0, 0x0e, 0xef, 0x30, 0x9a, 0x10, 0x00, 0xa3, + 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0xb0, + 0x00, 0x20, 0x08, 0x06, 0xd5, 0x48, 0xa8, 0x03, 0x31, 0x08, 0xb8, 0x90, + 0x0b, 0xba, 0x60, 0x01, 0x19, 0xc4, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, + 0x0c, 0xa2, 0x93, 0xf8, 0x87, 0x60, 0x38, 0x22, 0xf8, 0x05, 0xe1, 0x9b, + 0x65, 0x48, 0x94, 0x60, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0x1e, 0x95, + 0x98, 0x07, 0xe2, 0x17, 0x0c, 0x0d, 0x02, 0xfa, 0x58, 0xa0, 0xc8, 0xc7, + 0x04, 0x45, 0x3e, 0x36, 0x28, 0xf2, 0x99, 0x25, 0x50, 0x06, 0x2a, 0x10, + 0x23, 0xd1, 0x90, 0x81, 0x0a, 0xc4, 0x48, 0x34, 0x64, 0xa0, 0x02, 0x31, + 0x12, 0x0d, 0xb1, 0xca, 0x15, 0xe2, 0x63, 0x95, 0x2b, 0xc4, 0x67, 0xc4, + 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x99, 0x58, 0x09, 0x61, 0xc4, 0xc0, + 0x00, 0x40, 0x10, 0x0c, 0x22, 0x9a, 0x60, 0x09, 0x61, 0x38, 0x42, 0x38, + 0x87, 0xe0, 0x9b, 0x65, 0x68, 0x96, 0x60, 0x38, 0x62, 0x90, 0x07, 0xe1, + 0x9b, 0x65, 0x68, 0x98, 0xc0, 0x08, 0x79, 0x90, 0xcf, 0x88, 0x81, 0x01, + 0x80, 0x20, 0x18, 0x44, 0x38, 0x51, 0x12, 0x81, 0x05, 0x02, 0x7d, 0xec, + 0xa0, 0x07, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0xb4, 0x13, + 0x28, 0x11, 0x58, 0x20, 0xd0, 0xc7, 0x02, 0x42, 0x3e, 0xb3, 0x04, 0xcd, + 0x40, 0x07, 0x22, 0x30, 0xee, 0xa1, 0x80, 0xc7, 0x32, 0x1c, 0xb1, 0xc4, + 0x43, 0xf0, 0xcd, 0x32, 0x40, 0x4e, 0x30, 0x1c, 0xc1, 0xf0, 0x83, 0xf0, + 0xcd, 0x32, 0x40, 0x4f, 0x60, 0x0d, 0x3f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, + 0x40, 0x10, 0x0c, 0x22, 0xb1, 0x78, 0x89, 0xc0, 0x02, 0x81, 0x3e, 0x06, + 0xf9, 0x83, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x2a, 0x0b, + 0x99, 0x08, 0x2c, 0x10, 0xe8, 0x63, 0x01, 0x21, 0x9f, 0x59, 0x02, 0x68, + 0xa0, 0x03, 0x11, 0x1e, 0x11, 0x69, 0xe8, 0xc3, 0xb1, 0x60, 0x91, 0x8f, + 0x05, 0x81, 0x7c, 0x2c, 0xe8, 0xe4, 0x63, 0x42, 0x27, 0x1f, 0x1b, 0x3a, + 0xf9, 0x18, 0xa1, 0x06, 0xf2, 0x31, 0xc2, 0x14, 0xe0, 0x63, 0x84, 0x29, + 0xc0, 0xc7, 0x08, 0x53, 0x80, 0x8f, 0x11, 0xa6, 0x00, 0x1f, 0x4b, 0x4c, + 0x01, 0x3e, 0x66, 0x0a, 0x6f, 0x01, 0x82, 0xe1, 0x86, 0x20, 0x2d, 0xc0, + 0x60, 0x96, 0x21, 0x42, 0x02, 0x73, 0x85, 0xb8, 0x00, 0xc1, 0x70, 0x43, + 0xb0, 0x16, 0x60, 0x30, 0xcb, 0x20, 0x1d, 0x81, 0x25, 0x05, 0x7d, 0x2c, + 0x31, 0xe8, 0x63, 0xc9, 0x41, 0x1f, 0x4b, 0x10, 0xfa, 0x8c, 0x18, 0x38, + 0x00, 0x08, 0x82, 0xc1, 0xb4, 0x17, 0x3d, 0xd1, 0x12, 0x2a, 0x91, 0x12, + 0x6b, 0x41, 0x0c, 0x42, 0xc0, 0x13, 0xb3, 0x04, 0x13, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader_Dx11.cso b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader_Dx11.cso new file mode 100644 index 00000000..79db65e1 Binary files /dev/null and b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader_Dx11.cso differ diff --git a/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader_Dx11.h b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader_Dx11.h new file mode 100644 index 00000000..6c1d540b --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_lanczos_Shader_Dx11.h @@ -0,0 +1,250 @@ +#pragma once + +inline static const unsigned char bcds_lanczos_cso[] = { + 0x44, 0x58, 0x42, 0x43, 0xbf, 0x36, 0xa7, 0x72, 0x54, 0x6d, 0x01, 0x4e, + 0x9a, 0x7c, 0xbf, 0x40, 0xf6, 0x84, 0x67, 0xe1, 0x01, 0x00, 0x00, 0x00, + 0x7c, 0x0b, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x30, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, + 0xe0, 0x0a, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xf4, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x53, 0x43, 0x00, 0x01, 0x00, 0x00, + 0xcc, 0x01, 0x00, 0x00, 0x52, 0x44, 0x31, 0x31, 0x3c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x00, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, + 0x72, 0x65, 0x00, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, + 0xb7, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xc1, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0x53, 0x72, 0x63, 0x57, 0x69, 0x64, 0x74, + 0x68, 0x00, 0x69, 0x6e, 0x74, 0x00, 0xab, 0xab, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x5f, 0x53, 0x72, 0x63, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x5f, 0x44, 0x73, 0x74, 0x57, + 0x69, 0x64, 0x74, 0x68, 0x00, 0x5f, 0x44, 0x73, 0x74, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, + 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4e, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x4f, 0x53, 0x47, 0x4e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0x88, 0x08, 0x00, 0x00, + 0x50, 0x00, 0x05, 0x00, 0x22, 0x02, 0x00, 0x00, 0x6a, 0x08, 0x00, 0x01, + 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x9c, 0x18, 0x00, 0x04, + 0x00, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x02, 0x32, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x02, + 0x0c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x02, 0x00, + 0xe6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, + 0x2b, 0x00, 0x00, 0x06, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0f, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x04, 0xf2, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x05, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x0b, + 0xf2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x85, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x36, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x01, + 0x22, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x03, 0x2a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, + 0x52, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x56, 0x07, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x56, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x01, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x05, + 0x52, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x0a, 0x52, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x89, 0xc2, 0x00, 0x00, 0x80, 0x43, 0x55, 0x15, 0x00, + 0xd2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xc6, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x86, 0x03, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xd0, 0xb3, 0x59, 0x3e, 0x59, 0x17, 0x37, 0x3f, 0x98, 0xdd, 0x93, 0x3d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, + 0x2b, 0x00, 0x00, 0x05, 0xf2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, + 0xc2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0x62, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x01, + 0x22, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x82, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x05, + 0x32, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x07, + 0xf2, 0x00, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xd6, 0x05, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x89, + 0xc2, 0x00, 0x00, 0x80, 0x43, 0x55, 0x15, 0x00, 0xf2, 0x00, 0x10, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, + 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xd0, 0xb3, 0x59, 0x3e, + 0x59, 0x17, 0x37, 0x3f, 0x98, 0xdd, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x3a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xac, 0xc5, 0x27, 0x37, 0x0e, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, + 0x72, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xf6, 0x0f, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x56, 0x0f, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x56, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x0b, 0xc2, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x56, 0x0d, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x0b, 0x32, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x05, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0b, + 0xf2, 0x00, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xdb, 0x0f, 0x49, 0x40, 0x92, 0x0a, 0x86, 0x3f, 0xdb, 0x0f, 0x49, 0x40, + 0x92, 0x0a, 0x86, 0x3f, 0x4d, 0x00, 0x00, 0x06, 0xf2, 0x00, 0x10, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x05, 0x10, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x86, 0x00, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x0c, 0x32, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x0c, 0xc2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xa6, 0x0e, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, + 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, + 0xf2, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, + 0x82, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x00, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x56, 0x05, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x06, + 0xf2, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0x02, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, + 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + +}; diff --git a/OptiScaler/output_scaling/precompile/bcds_magc.hlsl b/OptiScaler/output_scaling/precompile/bcds_magc.hlsl new file mode 100644 index 00000000..5deb0b4d --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_magc.hlsl @@ -0,0 +1,109 @@ +cbuffer Params : register(b0) +{ + int _SrcWidth; // Source texture width + int _SrcHeight; // Source texture height + int _DstWidth; // Destination texture width + int _DstHeight; // Destination texture height +} + +Texture2D InputTexture : register(t0); // Source texture +RWTexture2D OutputTexture : register(u0); // Downsampled target texture + +// Luminance computation using perceptual weights +float luminance(float3 color) +{ + return dot(color, float3(0.2126, 0.7152, 0.0722)); +} + +// MAGC Kernel definition +float magcKernel(float x) +{ + x = abs(x); + + if (x <= 1.0) + { + return 1.0 - 2.0 * x * x + x * x * x; + } + else if (x <= 2.0) + { + return 4.0 - 8.0 * x + 5.0 * x * x - x * x * x; + } + + return 0.0; +} + +[numthreads(16, 16, 1)] +void CSMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + // Target coordinates in the downsampled texture + uint2 targetCoords = dispatchThreadID.xy; + + // Ensure thread is within bounds of the destination texture + if (targetCoords.x >= _DstWidth || targetCoords.y >= _DstHeight) + return; + + // Compute scaling factor and source position + float2 scale = float2(_SrcWidth, _SrcHeight) / float2(_DstWidth, _DstHeight); + float2 sourcePos = float2(targetCoords) * scale; + + // Base source position and fractional offset + int2 sourceBase = int2(sourcePos); + float2 fraction = frac(sourcePos); + + // Accumulators for color, weight, and luminance + float4 color = 0.0; + float totalWeight = 0.0; + float avgLuminance = 0.0; + + // First pass: Compute average luminance in the 4x4 neighborhood + for (int dy = -1; dy <= 2; dy++) + { + for (int dx = -1; dx <= 2; dx++) + { + int2 sampleCoords = sourceBase + int2(dx, dy); + sampleCoords = clamp(sampleCoords, int2(0, 0), int2(_SrcWidth - 1, _SrcHeight - 1)); + + float4 sampleColor = InputTexture.Load(int3(sampleCoords, 0)); + avgLuminance += luminance(sampleColor.rgb); + } + } + avgLuminance /= 16.0; // Normalize luminance by the 4x4 sample count + + // Second pass: Weighted color accumulation with luminance-aware clamping + for (int dy = -1; dy <= 2; dy++) + { + for (int dx = -1; dx <= 2; dx++) + { + int2 sampleCoords = sourceBase + int2(dx, dy); + sampleCoords = clamp(sampleCoords, int2(0, 0), int2(_SrcWidth - 1, _SrcHeight - 1)); + + float4 sampleColor = InputTexture.Load(int3(sampleCoords, 0)); + + // Compute the current luminance of the sample + float currentLuminance = luminance(sampleColor.rgb); + + // Scale the color to match the average luminance if it deviates too much + float luminanceDeviation = abs(currentLuminance - avgLuminance); + if (luminanceDeviation > 0.5) // Threshold for clamping + { + float luminanceScale = avgLuminance / max(currentLuminance, 1e-5); // Avoid division by zero + sampleColor.rgb *= luminanceScale; // Scale brightness while preserving hue/saturation + } + + // MAGC kernel weights + float weightX = magcKernel(float(dx) - fraction.x); + float weightY = magcKernel(float(dy) - fraction.y); + float weight = weightX * weightY; + + // Accumulate weighted color and weight + color += sampleColor * weight; + totalWeight += weight; + } + } + + // Normalize accumulated color by total weight + color /= totalWeight; + + // Output the final downsampled color + OutputTexture[dispatchThreadID.xy] = color; +} \ No newline at end of file diff --git a/OptiScaler/output_scaling/precompile/bcds_magc_Shader.cso b/OptiScaler/output_scaling/precompile/bcds_magc_Shader.cso new file mode 100644 index 00000000..a868717c Binary files /dev/null and b/OptiScaler/output_scaling/precompile/bcds_magc_Shader.cso differ diff --git a/OptiScaler/output_scaling/precompile/bcds_magc_Shader.h b/OptiScaler/output_scaling/precompile/bcds_magc_Shader.h new file mode 100644 index 00000000..9ce4acb7 --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_magc_Shader.h @@ -0,0 +1,423 @@ +#pragma once + +inline static const unsigned char bcds_magc_cso[] = { + 0x44, 0x58, 0x42, 0x43, 0x3b, 0xba, 0xd3, 0x8f, 0x37, 0xc1, 0x2f, 0x81, + 0x35, 0xd4, 0x4d, 0x88, 0xbd, 0x6d, 0xfc, 0x6d, 0x01, 0x00, 0x00, 0x00, + 0xa0, 0x13, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0xbc, 0x08, 0x00, 0x00, 0xd8, 0x08, 0x00, 0x00, + 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x50, 0x53, 0x56, 0x30, 0x98, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x43, 0x53, 0x4d, 0x61, 0x69, 0x6e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xa8, 0x07, 0x00, 0x00, + 0x60, 0x00, 0x05, 0x00, 0xea, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, + 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00, 0x00, + 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, + 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, + 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, + 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, + 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, + 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, + 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, + 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, + 0x86, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x01, 0xd5, 0x06, 0x62, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x00, 0x49, 0x18, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, + 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, + 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x98, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, + 0xe6, 0x08, 0xc0, 0xa0, 0x0c, 0xc3, 0x30, 0x10, 0x31, 0x03, 0x50, 0x06, + 0x63, 0x30, 0xe8, 0x28, 0xc4, 0x30, 0x0c, 0x03, 0x25, 0x37, 0x0d, 0x97, + 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x2b, 0x21, 0xad, 0xc4, 0xe4, 0x17, 0xb7, + 0x8d, 0x0a, 0xc3, 0x30, 0x8c, 0x61, 0x8e, 0x00, 0x21, 0xe6, 0x9e, 0xe1, + 0xf2, 0x27, 0xec, 0x21, 0x24, 0x3f, 0x04, 0x9a, 0x61, 0x21, 0x50, 0xd0, + 0x14, 0x65, 0x19, 0x9c, 0x61, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0x84, + 0x31, 0x18, 0x06, 0x45, 0x65, 0x01, 0x06, 0x67, 0x18, 0x06, 0xc3, 0x30, + 0x0c, 0x86, 0xa6, 0x82, 0x18, 0x83, 0x61, 0x18, 0x86, 0x61, 0x50, 0x75, + 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d, 0x54, 0xb1, 0x12, + 0x93, 0x8f, 0xdc, 0x36, 0x22, 0x86, 0x61, 0x18, 0x0a, 0x71, 0x0d, 0xce, + 0x40, 0xd8, 0x1c, 0x41, 0x50, 0x0c, 0x67, 0x60, 0x86, 0x41, 0xa3, 0x6d, + 0x20, 0x60, 0x18, 0x81, 0x30, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87, 0x70, + 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87, 0x7a, + 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87, 0x71, + 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87, 0x70, + 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03, 0x3d, + 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87, 0x7c, + 0x80, 0x87, 0x72, 0x40, 0xc1, 0x30, 0x93, 0x18, 0x8c, 0x03, 0x3b, 0x84, + 0xc3, 0x3c, 0xcc, 0x83, 0x1b, 0xd0, 0x42, 0x39, 0xe0, 0x03, 0x3d, 0xd4, + 0x83, 0x3c, 0x94, 0x83, 0x1c, 0x90, 0x02, 0x1f, 0xd8, 0x43, 0x39, 0x8c, + 0x03, 0x3d, 0xbc, 0x83, 0x3c, 0xf0, 0x81, 0x39, 0xb0, 0xc3, 0x3b, 0x84, + 0x03, 0x3d, 0xb0, 0x01, 0x18, 0xd0, 0x81, 0x1f, 0x80, 0x81, 0x1f, 0x20, + 0xc1, 0xfb, 0x08, 0x9c, 0x89, 0x0c, 0xc6, 0x81, 0x1d, 0xc2, 0x61, 0x1e, + 0xe6, 0xc1, 0x0d, 0x64, 0xe1, 0x16, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, + 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, + 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, + 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, + 0x50, 0xe0, 0x91, 0x78, 0x46, 0x0a, 0x44, 0x00, 0x23, 0x21, 0x62, 0x18, + 0x86, 0x81, 0x48, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, + 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, + 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, + 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, + 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, + 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, + 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, + 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, + 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, + 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, + 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, + 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x3c, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x79, 0x0e, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0xf2, 0x24, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4f, 0x05, 0x04, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b, 0x10, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, + 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x1a, 0x4a, 0x60, 0x04, 0xa0, + 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0xa4, 0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, + 0x30, 0xca, 0xa2, 0x28, 0x03, 0x4a, 0x5a, 0xa0, 0x68, 0x48, 0x1b, 0x01, + 0xa8, 0x01, 0x0a, 0x67, 0x00, 0x68, 0x9c, 0x01, 0x20, 0x72, 0x06, 0x80, + 0xca, 0x19, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0xc4, 0x8e, 0x0c, 0x6f, 0xec, + 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0x86, 0x06, 0xe6, 0xc6, + 0xe5, 0x06, 0x04, 0x85, 0x26, 0xc6, 0xc6, 0x2c, 0x4c, 0xcc, 0x46, 0xac, + 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x06, 0x65, 0x82, 0x30, 0x2c, 0x1b, + 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x85, 0xb1, 0xb9, 0x09, 0xc2, 0xc0, + 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x84, 0xc1, 0x46, 0x26, 0xc9, 0x0d, + 0xae, 0x8e, 0x8e, 0xaa, 0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x6c, 0x82, 0x30, + 0x34, 0x13, 0x84, 0xc1, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, + 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13, 0x84, 0x31, 0xe0, 0xd8, + 0x3c, 0xd5, 0xd1, 0xc1, 0xd5, 0xd1, 0x51, 0x95, 0xe1, 0xd1, 0xd5, 0xc9, + 0x95, 0x4d, 0x10, 0xb4, 0x6c, 0xc3, 0x42, 0x44, 0x12, 0x41, 0x0c, 0xcc, + 0x34, 0x4d, 0xce, 0x86, 0x80, 0x9a, 0x20, 0x94, 0x81, 0x47, 0x03, 0x2a, + 0x4c, 0x2e, 0xac, 0x6d, 0x6e, 0x82, 0x30, 0x3c, 0x1b, 0x10, 0xc2, 0xba, + 0x08, 0x62, 0xc0, 0x80, 0x0d, 0x41, 0xb6, 0x81, 0x80, 0x2a, 0x0d, 0x98, + 0x20, 0x90, 0x41, 0xc7, 0xe4, 0x6b, 0x4a, 0x6e, 0xec, 0x2a, 0x8d, 0x8c, + 0x0e, 0x6d, 0x82, 0x30, 0x40, 0x13, 0x84, 0x21, 0x9a, 0x20, 0x0c, 0xd2, + 0x04, 0x41, 0xd3, 0x36, 0x20, 0x48, 0xe7, 0x11, 0x1f, 0x18, 0x34, 0x61, + 0x40, 0xe5, 0x6b, 0x4a, 0x6e, 0x0c, 0xa9, 0x2c, 0xed, 0x0c, 0x8d, 0x6e, + 0x03, 0x82, 0x8c, 0x81, 0x07, 0x06, 0x1f, 0x18, 0x34, 0x61, 0xc0, 0xe4, + 0x8b, 0x68, 0x8e, 0xee, 0x2a, 0x8d, 0x8c, 0x0e, 0x6d, 0x82, 0x30, 0x4c, + 0x1b, 0x10, 0xa4, 0x0c, 0x3c, 0x33, 0xf8, 0xc0, 0xa0, 0x09, 0x03, 0x2a, + 0x5f, 0x44, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x13, 0x84, + 0x81, 0xda, 0x80, 0x20, 0x68, 0xe0, 0xa5, 0xc1, 0x07, 0x06, 0x4d, 0x18, + 0x6c, 0x28, 0x30, 0x31, 0x20, 0x83, 0x33, 0x50, 0x83, 0x0d, 0x03, 0xc1, + 0xad, 0xc1, 0x04, 0x41, 0x00, 0x36, 0x00, 0x1b, 0x06, 0xc2, 0x0d, 0xdc, + 0x60, 0x43, 0xf0, 0x06, 0x1b, 0x86, 0xa1, 0x0d, 0xe0, 0x80, 0xc6, 0xd0, + 0x54, 0x53, 0x58, 0x9a, 0xdb, 0x86, 0x01, 0xc3, 0x86, 0x0d, 0x02, 0x18, + 0xcc, 0xc1, 0x86, 0xa2, 0x0d, 0xe4, 0x00, 0xd8, 0xe8, 0x80, 0x88, 0x98, + 0x5c, 0x98, 0xdb, 0x18, 0x5a, 0xd9, 0xdc, 0x04, 0x61, 0xa8, 0x68, 0x98, + 0xb1, 0xbd, 0x85, 0xd1, 0xcd, 0x4d, 0x10, 0x06, 0x8b, 0x45, 0x9a, 0xdb, + 0x1c, 0xdd, 0xdc, 0x04, 0x61, 0xb8, 0x48, 0xa4, 0xb9, 0xd1, 0xcd, 0x4d, + 0x10, 0x06, 0x8c, 0x08, 0x5d, 0x19, 0xde, 0x17, 0xdb, 0x5b, 0x18, 0x19, + 0x13, 0xba, 0x32, 0xbc, 0xaf, 0x39, 0xba, 0x37, 0xb9, 0xb2, 0x0d, 0x8c, + 0x1d, 0xdc, 0x01, 0x1e, 0xe4, 0x81, 0x1e, 0xec, 0x01, 0x1f, 0xf4, 0x81, + 0x1f, 0x30, 0x7f, 0x30, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, + 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, + 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, + 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, + 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, + 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, + 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x68, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, + 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, + 0xe6, 0xa6, 0x08, 0x6b, 0x00, 0x07, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, + 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x74, + 0xd0, 0x85, 0x0c, 0xcf, 0x65, 0xec, 0xad, 0xce, 0x8d, 0xae, 0x4c, 0x6e, + 0x6e, 0x4a, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, + 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, + 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, + 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, + 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, + 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, + 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, + 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, + 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, + 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, + 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, + 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, + 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, + 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, + 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, + 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, + 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, + 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, + 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, + 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, + 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, + 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, + 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, + 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, + 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, + 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, + 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, + 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x06, 0x60, 0x70, 0xac, 0x09, 0x20, 0x8d, 0x15, 0x40, 0xc3, 0xe5, 0x3b, + 0x8f, 0x1f, 0x20, 0x0d, 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x36, 0x00, 0x0d, + 0x97, 0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, 0xf9, 0xc8, 0x6d, 0x1b, + 0xc2, 0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, + 0x0e, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x8f, 0xdc, 0xb6, 0x25, 0x48, + 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, + 0x0b, 0x61, 0x07, 0xce, 0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, + 0xc5, 0x6d, 0x1b, 0x41, 0x35, 0x5c, 0xbe, 0xf3, 0xf8, 0x13, 0x71, 0x4d, + 0x54, 0x44, 0x94, 0x0e, 0x30, 0xf8, 0xc5, 0x6d, 0x9b, 0x81, 0x35, 0x5c, + 0xbe, 0xf3, 0xf8, 0x13, 0x71, 0x4d, 0x54, 0x44, 0xb0, 0x93, 0x13, 0x11, + 0x7e, 0x71, 0xdb, 0x16, 0x20, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x74, 0x44, + 0x04, 0x30, 0x88, 0x83, 0x8f, 0xdc, 0xb6, 0x09, 0x3c, 0xc3, 0xe5, 0x3b, + 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0x82, 0xc0, 0x8d, 0x84, 0x0b, 0x20, 0x34, + 0x6a, 0xe8, 0xb4, 0xf2, 0x95, 0xeb, 0x93, 0x45, 0x44, 0x58, 0x49, 0x4c, + 0xc0, 0x0a, 0x00, 0x00, 0x60, 0x00, 0x05, 0x00, 0xb0, 0x02, 0x00, 0x00, + 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xa8, 0x0a, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, + 0xa7, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, + 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, + 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, + 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, + 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, + 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, + 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, + 0x40, 0x02, 0xa8, 0x0d, 0x86, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, + 0x01, 0xd5, 0x06, 0x62, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0x00, + 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, + 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, + 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, + 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x9c, 0xc1, 0x08, + 0x40, 0x09, 0x00, 0x0a, 0xe6, 0x08, 0xc0, 0xa0, 0x0c, 0xc3, 0x30, 0x10, + 0x31, 0x03, 0x50, 0x06, 0x63, 0x30, 0xe8, 0x28, 0xc4, 0x30, 0x0c, 0x03, + 0x25, 0x37, 0x0d, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x2b, 0x21, 0xad, + 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x0a, 0xc3, 0x30, 0x8c, 0x61, 0x8e, 0x00, + 0x21, 0xe6, 0x9e, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x3f, 0x04, 0x9a, + 0x61, 0x21, 0x50, 0xd0, 0x14, 0x65, 0x19, 0x9c, 0x61, 0x18, 0x86, 0x61, + 0x18, 0xe8, 0x29, 0x84, 0x31, 0x18, 0x06, 0x45, 0x65, 0x01, 0x06, 0x67, + 0x18, 0x06, 0xc3, 0x30, 0x0c, 0x86, 0xa6, 0x82, 0x18, 0x83, 0x61, 0x18, + 0x86, 0x61, 0x50, 0x75, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, + 0x6d, 0x54, 0xb1, 0x12, 0x93, 0x8f, 0xdc, 0x36, 0x22, 0x86, 0x61, 0x18, + 0x0a, 0x71, 0x0d, 0xce, 0x40, 0xd8, 0x1c, 0x41, 0x50, 0x0c, 0x67, 0x60, + 0x86, 0x41, 0xa3, 0x6d, 0x20, 0x60, 0x18, 0x81, 0x30, 0x66, 0x6a, 0x83, + 0x71, 0x60, 0x87, 0x70, 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, + 0x7c, 0xa0, 0x87, 0x7a, 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, + 0x7b, 0x28, 0x87, 0x71, 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, + 0x76, 0x78, 0x87, 0x70, 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, + 0x30, 0xf0, 0x03, 0x3d, 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, + 0x5f, 0xa0, 0x87, 0x7c, 0x80, 0x87, 0x72, 0x40, 0xc1, 0x30, 0x93, 0x18, + 0x8c, 0x03, 0x3b, 0x84, 0xc3, 0x3c, 0xcc, 0x83, 0x1b, 0xd0, 0x42, 0x39, + 0xe0, 0x03, 0x3d, 0xd4, 0x83, 0x3c, 0x94, 0x83, 0x1c, 0x90, 0x02, 0x1f, + 0xd8, 0x43, 0x39, 0x8c, 0x03, 0x3d, 0xbc, 0x83, 0x3c, 0xf0, 0x81, 0x39, + 0xb0, 0xc3, 0x3b, 0x84, 0x03, 0x3d, 0xb0, 0x01, 0x18, 0xd0, 0x81, 0x1f, + 0x80, 0x81, 0x1f, 0x20, 0xc1, 0xfb, 0x08, 0x9c, 0x89, 0x0c, 0xc6, 0x81, + 0x1d, 0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x64, 0xe1, 0x16, 0x68, 0xa1, + 0x1c, 0xf0, 0x81, 0x1e, 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, + 0x0f, 0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, + 0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, + 0x0f, 0xc0, 0xc0, 0x0f, 0x50, 0xe0, 0x91, 0x78, 0x46, 0x0a, 0x44, 0x00, + 0x23, 0x21, 0x62, 0x18, 0x86, 0x81, 0xc8, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, + 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, + 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, + 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, + 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, + 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, + 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, + 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x04, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x0e, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x24, + 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, + 0x79, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x21, 0x4f, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b, 0x10, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, + 0xc6, 0x04, 0x43, 0x1a, 0x4a, 0x60, 0x04, 0xa0, 0x20, 0x8a, 0xa1, 0x08, + 0x4a, 0xa2, 0x40, 0x0a, 0x81, 0xb4, 0x11, 0x00, 0x0a, 0x67, 0x00, 0x68, + 0x9c, 0x01, 0xa0, 0x72, 0x06, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0xc4, + 0x8e, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, + 0x86, 0x06, 0xe6, 0xc6, 0xe5, 0x06, 0x04, 0x85, 0x26, 0xc6, 0xc6, 0x2c, + 0x4c, 0xcc, 0x46, 0xac, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x06, 0x65, + 0x82, 0x30, 0x2c, 0x1b, 0x84, 0x81, 0x98, 0x20, 0x0c, 0xcc, 0x06, 0x61, + 0x30, 0x28, 0x8c, 0xcd, 0x4d, 0x10, 0x86, 0x66, 0xc3, 0x80, 0x24, 0xc4, + 0x04, 0x21, 0x0c, 0x26, 0x02, 0x13, 0x84, 0xc1, 0x99, 0x20, 0x0c, 0xcf, + 0x06, 0x81, 0x70, 0x36, 0x24, 0xc4, 0xc2, 0x10, 0xc4, 0xd0, 0x10, 0xcf, + 0x86, 0x00, 0x9a, 0x20, 0x8c, 0x01, 0x35, 0x41, 0xd0, 0xa4, 0x0d, 0x0b, + 0x21, 0x31, 0x04, 0x31, 0x34, 0xd3, 0x34, 0x3d, 0x1b, 0x02, 0x6a, 0x82, + 0x50, 0x06, 0xd5, 0x04, 0x61, 0x80, 0x36, 0x20, 0x84, 0xc5, 0x10, 0xc4, + 0x70, 0x01, 0x1b, 0x02, 0x6c, 0x03, 0x11, 0x55, 0x19, 0x30, 0x41, 0x10, + 0x00, 0x1a, 0x43, 0x53, 0x4d, 0x61, 0x69, 0x6e, 0x13, 0x84, 0x21, 0xda, + 0x30, 0x5c, 0xd7, 0xb0, 0x41, 0xe8, 0xbc, 0x0d, 0xc5, 0xc6, 0x01, 0xda, + 0x57, 0x85, 0x8d, 0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, + 0x4a, 0x10, 0x54, 0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, + 0x73, 0x9b, 0x12, 0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, + 0xca, 0xe4, 0xa6, 0x04, 0x46, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, + 0xb2, 0x32, 0xb9, 0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x41, 0x52, 0x86, + 0x0c, 0xcf, 0x45, 0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, + 0x4a, 0x90, 0xd5, 0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, + 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, + 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, + 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, + 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, + 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, + 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, + 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, + 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, + 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, + 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, + 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, + 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, + 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, + 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, + 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, + 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, + 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, + 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, + 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, + 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, + 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, + 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, + 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, + 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, + 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, + 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, + 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, + 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x06, 0x60, 0x70, 0xac, 0x09, 0x20, 0x8d, 0x15, + 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x1f, 0x20, 0x0d, 0x10, 0x61, 0x7e, 0x71, + 0xdb, 0x36, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, + 0xf9, 0xc8, 0x6d, 0x1b, 0xc2, 0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, + 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x8f, + 0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, + 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x07, 0xce, 0x70, 0xf9, 0xce, 0xe3, + 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x1b, 0x41, 0x35, 0x5c, 0xbe, 0xf3, + 0xf8, 0x13, 0x71, 0x4d, 0x54, 0x44, 0x94, 0x0e, 0x30, 0xf8, 0xc5, 0x6d, + 0x9b, 0x81, 0x35, 0x5c, 0xbe, 0xf3, 0xf8, 0x13, 0x71, 0x4d, 0x54, 0x44, + 0xb0, 0x93, 0x13, 0x11, 0x7e, 0x71, 0xdb, 0x16, 0x20, 0x0d, 0x97, 0xef, + 0x3c, 0xfe, 0x74, 0x44, 0x04, 0x30, 0x88, 0x83, 0x8f, 0xdc, 0xb6, 0x09, + 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, + 0x03, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x13, 0x04, 0x56, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x34, 0xcc, 0x00, 0xd4, 0x40, 0x29, 0x15, 0x53, 0x19, 0x94, 0x5c, 0xd9, + 0x95, 0x6e, 0x40, 0xb1, 0x14, 0x61, 0x40, 0xb9, 0x95, 0x51, 0x19, 0x06, + 0x10, 0x53, 0x1e, 0x45, 0x30, 0x02, 0x50, 0x02, 0x64, 0x8c, 0x11, 0xe4, + 0x7a, 0xe9, 0xce, 0xdf, 0x18, 0x01, 0xce, 0xde, 0x67, 0xee, 0x8d, 0x11, + 0x80, 0x20, 0x08, 0xc2, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0x88, 0x82, + 0xc1, 0x18, 0x01, 0x08, 0x82, 0xa0, 0x0a, 0x06, 0x63, 0x04, 0x20, 0x08, + 0x82, 0xb8, 0x37, 0x46, 0x00, 0x82, 0x20, 0x08, 0x7f, 0x63, 0x04, 0x6c, + 0x1b, 0xbf, 0xf2, 0x36, 0x46, 0x00, 0xfb, 0xec, 0x5c, 0x7e, 0x63, 0x04, + 0x20, 0x08, 0x82, 0x20, 0x18, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xdf, + 0x08, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xb0, 0xa9, + 0x01, 0xd6, 0xa0, 0x01, 0x1a, 0x84, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, + 0x18, 0x6c, 0x6b, 0x90, 0x3d, 0x69, 0x90, 0x06, 0x62, 0x30, 0x62, 0x90, + 0x00, 0x20, 0x08, 0x06, 0x1b, 0x1b, 0x68, 0x91, 0x1a, 0xa8, 0xc1, 0x18, + 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x01, 0x51, 0x07, 0xd9, 0x1a, 0x8c, + 0x18, 0x18, 0x00, 0x08, 0x82, 0x01, 0x61, 0x07, 0x5a, 0x1b, 0x8c, 0x18, + 0x1c, 0x00, 0x08, 0x82, 0x01, 0x06, 0x07, 0xdc, 0xd0, 0x06, 0xa3, 0x09, + 0x81, 0x30, 0xdc, 0x40, 0x04, 0x64, 0x30, 0xcb, 0x10, 0x54, 0xc1, 0x68, + 0xc2, 0x30, 0x0c, 0x37, 0x14, 0x01, 0x19, 0xcc, 0x32, 0x08, 0x55, 0x30, + 0x9a, 0x50, 0x00, 0x17, 0x18, 0x36, 0x9a, 0x70, 0x04, 0x17, 0x18, 0x76, + 0x88, 0x61, 0x77, 0x18, 0x66, 0x85, 0x40, 0x1f, 0x23, 0x04, 0xfa, 0xdc, + 0x63, 0xd4, 0x3d, 0x46, 0x19, 0x21, 0xc8, 0xc7, 0x08, 0x41, 0x3e, 0x27, + 0x0c, 0x74, 0xc2, 0x40, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xa4, + 0x42, 0x1b, 0x10, 0xb3, 0x04, 0xc3, 0x40, 0x85, 0x41, 0x07, 0x42, 0x1a, + 0x14, 0x03, 0x15, 0x03, 0x3b, 0x08, 0x6d, 0x50, 0xcc, 0x12, 0x10, 0x03, + 0x15, 0x06, 0x31, 0x94, 0x01, 0x31, 0x50, 0x31, 0xc0, 0xc3, 0x50, 0x06, + 0x44, 0x05, 0x07, 0x14, 0x71, 0xc0, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, + 0x60, 0xaa, 0x60, 0x07, 0xdd, 0x29, 0x8c, 0x26, 0x04, 0x80, 0x05, 0x7d, + 0x00, 0x82, 0xd1, 0x84, 0x21, 0xb0, 0xe0, 0x0f, 0x40, 0x30, 0x62, 0x70, + 0x00, 0x20, 0x08, 0x06, 0x09, 0x2d, 0xfc, 0xc1, 0xc1, 0x0a, 0x23, 0x06, + 0x07, 0x00, 0x82, 0x60, 0x90, 0xd4, 0x02, 0x28, 0x1c, 0xad, 0x30, 0x62, + 0x70, 0x00, 0x20, 0x08, 0x06, 0x89, 0x2d, 0x80, 0x82, 0x50, 0x8c, 0x18, + 0x1c, 0x00, 0x08, 0x82, 0x41, 0x72, 0x0b, 0xa1, 0x20, 0x10, 0x23, 0x06, + 0x0d, 0x00, 0x82, 0x60, 0xf0, 0xdc, 0x02, 0x1f, 0x9c, 0x01, 0x2c, 0x08, + 0x41, 0x29, 0x94, 0x42, 0x29, 0x94, 0xc2, 0x68, 0x42, 0x00, 0x8c, 0x26, + 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x18, 0x2c, 0x00, 0x08, 0x82, 0x41, + 0x85, 0x0b, 0x7f, 0x30, 0x08, 0x01, 0x1c, 0xe0, 0xc1, 0x1d, 0x58, 0x20, + 0xc1, 0xc7, 0xa4, 0x5b, 0x00, 0xc1, 0x70, 0x43, 0x80, 0x0a, 0x60, 0x30, + 0xcb, 0x50, 0x10, 0x81, 0x59, 0xb9, 0x00, 0x82, 0xe1, 0x86, 0x40, 0x15, + 0xc0, 0x60, 0x96, 0xc1, 0x18, 0x82, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, + 0x38, 0xc6, 0xe1, 0x14, 0x3a, 0x33, 0xf4, 0x40, 0x3e, 0xb3, 0x04, 0xc7, + 0x40, 0x85, 0xa1, 0x0e, 0xc6, 0x58, 0x4c, 0x03, 0x15, 0x06, 0x3b, 0x18, + 0x63, 0x31, 0x0d, 0x54, 0x18, 0xee, 0x60, 0x8c, 0xc5, 0x34, 0x50, 0x61, + 0xc0, 0x83, 0x31, 0x16, 0xd3, 0x40, 0x85, 0x21, 0x0f, 0xc6, 0x58, 0x4c, + 0x03, 0x15, 0x83, 0x5a, 0x18, 0x67, 0x31, 0xcd, 0x12, 0x20, 0x03, 0x15, + 0x06, 0x73, 0xdc, 0x84, 0x34, 0x50, 0x61, 0x30, 0xc7, 0x4d, 0x48, 0x03, + 0x15, 0x06, 0x73, 0xdc, 0x84, 0x34, 0x50, 0x61, 0x30, 0xc7, 0x4d, 0x48, + 0x03, 0x15, 0x06, 0x73, 0xdc, 0x84, 0x34, 0x50, 0x31, 0xd8, 0xc5, 0x71, + 0x13, 0x52, 0x05, 0x6a, 0x00, 0x85, 0xa8, 0x01, 0x8c, 0x18, 0x1c, 0x00, + 0x08, 0x82, 0x01, 0xd6, 0x0e, 0xb9, 0x00, 0x0a, 0xea, 0x30, 0x9a, 0x10, + 0x00, 0x16, 0x80, 0x03, 0x08, 0x46, 0x13, 0x86, 0xc0, 0x02, 0x71, 0x00, + 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x24, 0xf7, 0x20, 0x0e, 0xc7, + 0x3b, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x82, 0x0f, 0xe3, 0x70, + 0xc0, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x24, 0xf9, 0x30, 0x0e, + 0x42, 0x31, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x89, 0x3e, 0x90, 0x83, + 0x40, 0x8c, 0x18, 0x34, 0x00, 0x08, 0x82, 0xc1, 0xa3, 0x0f, 0xbf, 0xa0, + 0x0a, 0xf3, 0x20, 0x04, 0xe8, 0x80, 0x0e, 0xe8, 0x80, 0x0e, 0xa3, 0x09, + 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, + 0x23, 0x06, 0x0b, 0x00, 0x82, 0x60, 0x50, 0xf1, 0xc3, 0x38, 0x10, 0x83, + 0x40, 0x0b, 0xbc, 0xb0, 0x0b, 0x16, 0x78, 0xf1, 0x19, 0x31, 0x30, 0x00, + 0x10, 0x04, 0x83, 0x63, 0x24, 0xf0, 0x21, 0x18, 0x8e, 0x08, 0x72, 0x41, + 0xf8, 0x66, 0x19, 0x12, 0x25, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, + 0x48, 0x24, 0xcc, 0x81, 0xc8, 0x05, 0x13, 0x83, 0x80, 0x3e, 0x16, 0x28, + 0xf2, 0x31, 0x41, 0x91, 0x8f, 0x0d, 0x8a, 0x7c, 0x66, 0x09, 0x94, 0x81, + 0x0a, 0xc3, 0x48, 0x34, 0x64, 0xa0, 0xc2, 0x30, 0x12, 0x0d, 0x19, 0xa8, + 0x30, 0x8c, 0x44, 0x43, 0xae, 0x33, 0xcc, 0x82, 0x52, 0x88, 0xcf, 0x88, + 0x81, 0x01, 0x80, 0x20, 0x18, 0x1c, 0x2f, 0x41, 0x12, 0xc1, 0x70, 0x44, + 0x10, 0x0e, 0xca, 0x37, 0xcb, 0xc0, 0x2c, 0x81, 0x09, 0x82, 0x7c, 0x2c, + 0x20, 0x07, 0xf9, 0x18, 0x39, 0x04, 0xf1, 0xb1, 0xa1, 0x90, 0x8f, 0x09, + 0x01, 0x7c, 0x66, 0x09, 0x9c, 0xe1, 0x88, 0x03, 0x1d, 0x94, 0x6f, 0x96, + 0xc1, 0x69, 0x02, 0x43, 0xe0, 0x41, 0x3e, 0x06, 0x0f, 0x41, 0x7c, 0x4c, + 0x51, 0xe4, 0x63, 0x41, 0x3c, 0xc8, 0xc7, 0x86, 0x00, 0x3e, 0x36, 0x34, + 0xf2, 0x31, 0x21, 0x88, 0xcf, 0x2c, 0x81, 0x33, 0xd0, 0x61, 0x48, 0x8b, + 0xd0, 0xf0, 0x06, 0x73, 0x75, 0x60, 0x98, 0x05, 0x7d, 0x10, 0x9f, 0x11, + 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xc2, 0xc2, 0x26, 0x82, 0xe1, 0x88, + 0x60, 0x1e, 0x94, 0x6f, 0x96, 0x01, 0x7a, 0x02, 0x13, 0x04, 0xf9, 0x58, + 0x60, 0x0f, 0xf2, 0x31, 0x7b, 0x08, 0xe2, 0x63, 0x43, 0x21, 0x1f, 0x13, + 0x02, 0xf8, 0xcc, 0x12, 0x48, 0xc3, 0x11, 0x87, 0x3e, 0x28, 0xdf, 0x2c, + 0x83, 0x14, 0x05, 0x86, 0x88, 0x84, 0x7c, 0x4c, 0x24, 0x82, 0xf8, 0x98, + 0xa2, 0xc8, 0xc7, 0x82, 0x91, 0x90, 0x8f, 0x0d, 0x01, 0x7c, 0x6c, 0x68, + 0xe4, 0x63, 0x42, 0x10, 0x9f, 0x59, 0x02, 0x69, 0xa0, 0xc3, 0x90, 0x1e, + 0x21, 0x02, 0x11, 0xc8, 0x82, 0x49, 0x3e, 0x16, 0xa0, 0x81, 0x7c, 0x4c, + 0x40, 0x03, 0xf9, 0xd8, 0x80, 0x06, 0xf2, 0x31, 0xa2, 0x0e, 0xe4, 0x63, + 0xc4, 0x2a, 0xc0, 0xc7, 0x88, 0x55, 0x80, 0x8f, 0x11, 0xab, 0x00, 0x1f, + 0x23, 0x56, 0x01, 0x3e, 0x96, 0xac, 0x02, 0x7c, 0x6c, 0x15, 0xe6, 0x02, + 0x04, 0xc3, 0x0d, 0x01, 0x59, 0x80, 0xc1, 0x2c, 0xc3, 0x84, 0x04, 0x36, + 0x0b, 0x75, 0x01, 0x82, 0xe1, 0x86, 0xc0, 0x2c, 0xc0, 0x60, 0x96, 0x81, + 0x3a, 0x02, 0x4b, 0x0a, 0xfa, 0x58, 0x62, 0xd0, 0xc7, 0x92, 0x83, 0x3e, + 0x96, 0x20, 0xf4, 0x19, 0x31, 0x70, 0x00, 0x10, 0x04, 0x83, 0xe9, 0x2f, + 0xc6, 0x42, 0x26, 0x5e, 0xc2, 0x25, 0xde, 0x82, 0x18, 0x84, 0x40, 0x2c, + 0x66, 0x09, 0x2a, 0x04, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/OptiScaler/output_scaling/precompile/bcds_magc_Shader_Dx11.cso b/OptiScaler/output_scaling/precompile/bcds_magc_Shader_Dx11.cso new file mode 100644 index 00000000..c8e76bf8 Binary files /dev/null and b/OptiScaler/output_scaling/precompile/bcds_magc_Shader_Dx11.cso differ diff --git a/OptiScaler/output_scaling/precompile/bcds_magc_Shader_Dx11.h b/OptiScaler/output_scaling/precompile/bcds_magc_Shader_Dx11.h new file mode 100644 index 00000000..730a621d --- /dev/null +++ b/OptiScaler/output_scaling/precompile/bcds_magc_Shader_Dx11.h @@ -0,0 +1,283 @@ +#pragma once + +inline static const unsigned char bcds_magc_cso[] = { + 0x44, 0x58, 0x42, 0x43, 0x9f, 0xa7, 0x91, 0x28, 0xbd, 0x48, 0x72, 0x6c, + 0xef, 0xf0, 0x46, 0x14, 0x84, 0x8b, 0xa6, 0x6e, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x0d, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x30, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, + 0x70, 0x0c, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xf4, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x53, 0x43, 0x00, 0x01, 0x00, 0x00, + 0xcc, 0x01, 0x00, 0x00, 0x52, 0x44, 0x31, 0x31, 0x3c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x00, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, + 0x72, 0x65, 0x00, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, + 0xb7, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xc1, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0x53, 0x72, 0x63, 0x57, 0x69, 0x64, 0x74, + 0x68, 0x00, 0x69, 0x6e, 0x74, 0x00, 0xab, 0xab, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x5f, 0x53, 0x72, 0x63, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x5f, 0x44, 0x73, 0x74, 0x57, + 0x69, 0x64, 0x74, 0x68, 0x00, 0x5f, 0x44, 0x73, 0x74, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, + 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4e, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x4f, 0x53, 0x47, 0x4e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0x18, 0x0a, 0x00, 0x00, + 0x50, 0x00, 0x05, 0x00, 0x86, 0x02, 0x00, 0x00, 0x6a, 0x08, 0x00, 0x01, + 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x9c, 0x18, 0x00, 0x04, + 0x00, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x02, 0x32, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x02, + 0x09, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x02, 0x00, + 0xe6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, + 0x2b, 0x00, 0x00, 0x06, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x04, 0xc2, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x02, 0x00, 0x38, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x05, + 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x0b, 0x32, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x42, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, + 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, + 0x2a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0xc2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x0a, 0xc2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xa6, 0x0e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xe6, 0x0a, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x89, + 0xc2, 0x00, 0x00, 0x80, 0x43, 0x55, 0x15, 0x00, 0x72, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0a, + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xd0, 0xb3, 0x59, 0x3e, + 0x59, 0x17, 0x37, 0x3f, 0x98, 0xdd, 0x93, 0x3d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, + 0x36, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x36, 0x00, 0x00, 0x08, + 0xc2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x22, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x03, 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x32, 0x00, 0x00, 0x0a, + 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x0b, 0xc2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x56, 0x05, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, + 0x12, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, + 0xc1, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x40, 0x0a, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0b, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, + 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x00, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x12, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, 0x07, + 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x07, 0xc2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x0a, 0xc2, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x07, + 0x32, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x89, 0xc2, 0x00, 0x00, 0x80, 0x43, 0x55, 0x15, 0x00, + 0xf2, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xd0, 0xb3, 0x59, 0x3e, 0x59, 0x17, 0x37, 0x3f, 0x98, 0xdd, 0x93, 0x3d, + 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, + 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0xac, 0xc5, 0x27, 0x37, 0x0e, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x09, + 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, + 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, + 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x32, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, + 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x0b, 0xc2, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40, + 0x06, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x40, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x0a, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0b, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, + 0xf2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x07, + 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x06, 0xf2, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x05, 0x02, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00 +}; diff --git a/nvngx.ini b/nvngx.ini index b4607e1c..503899bc 100644 --- a/nvngx.ini +++ b/nvngx.ini @@ -369,6 +369,11 @@ Multiplier=auto ; true or false - Default (auto) is true UseFsr=auto +; Downscaler to use when FSR is disabled +; 0 = Bicubic | 1 = Lanczos | 2 = Catmull-Rom | 3 = MAGC +; 0 to 3 - Default (auto) is 0 (Bicubic) +Downscaler=auto +