Add CChams feature + OnDrawObject hook; fix KeyValues3 init via SetTypeKV3
This commit is contained in:
@@ -358,5 +358,10 @@ MigrationBackup/
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
# Local release / library artifacts
|
||||
ReleasePack/
|
||||
Libs_v145/
|
||||
*.bak
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
@@ -141,6 +141,7 @@
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\Features\CInventoryChanger\CInventoryChanger.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\Features\CInventoryChanger\CInventoryItemsManager.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\Features\CVisual\CVisual.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\Features\CChams\CChams.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\Fonts\CFont.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\Fonts\CFontManager.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\AndromedaClient\GUI\CAndromedaMenu.cpp" />
|
||||
@@ -166,6 +167,7 @@
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_CreateMove.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_CreateSwapChain.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_DrawGlow.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_OnDrawObject.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_EquipItemInLoadout.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_FireEventClientSide.cpp" />
|
||||
<ClCompile Include="Andromeda-CS2-Base\CS2\Hook\Hook_FrameStageNotify.cpp" />
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <AndromedaClient/Fonts/CFontManager.hpp>
|
||||
#include <AndromedaClient/Render/CRenderStackSystem.hpp>
|
||||
#include <AndromedaClient/Features/CVisual/CVisual.hpp>
|
||||
#include <AndromedaClient/Features/CChams/CChams.hpp>
|
||||
#include <AndromedaClient/Features/CInventoryChanger/CInventoryChanger.hpp>
|
||||
|
||||
#include <GameClient/CEntityCache/CEntityCache.hpp>
|
||||
@@ -18,7 +19,7 @@ static CAndromedaClient g_CAndromedaClient{};
|
||||
|
||||
auto CAndromedaClient::OnInit() -> void
|
||||
{
|
||||
|
||||
GetChams()->CreateMaterials();
|
||||
}
|
||||
|
||||
auto CAndromedaClient::OnFrameStageNotify( int FrameStage ) -> void
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#include <DllLauncher.hpp>
|
||||
#include <Common/Helpers/StringHelper.hpp>
|
||||
|
||||
#include <ImGui/Fonts/segue_font.h>
|
||||
#include <ImGui/Fonts/ico_font.h>
|
||||
|
||||
#include <CS2/SDK/SDK.hpp>
|
||||
#include <CS2/SDK/Interface/IEngineToClient.hpp>
|
||||
#include <CS2/SDK/SDL3/SDL3_Functions.hpp>
|
||||
@@ -93,21 +96,27 @@ auto CAndromedaGUI::InitFont() -> void
|
||||
{
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
static const ImWchar TahomaRanges[] =
|
||||
static const ImWchar SegoeRanges[] =
|
||||
{
|
||||
0x0020, 0xFFFC,
|
||||
0x0020, 0x00FF,
|
||||
0x0400, 0x052F,
|
||||
0x2DE0, 0x2DFF,
|
||||
0xA640, 0xA69F,
|
||||
0x1FB0, 0x1FCF,
|
||||
0,
|
||||
};
|
||||
|
||||
wchar_t* szWindowsFontPath = nullptr;
|
||||
m_pDefaultFont = io.Fonts->AddFontFromMemoryTTF( &seguoe , sizeof seguoe , 22.f , nullptr , SegoeRanges );
|
||||
m_pSegoeFont = io.Fonts->AddFontFromMemoryTTF( &seguoe , sizeof seguoe , 36.f , nullptr , SegoeRanges );
|
||||
m_pBoldSegoeFont = io.Fonts->AddFontFromMemoryTTF( &bold_segue , sizeof bold_segue , 36.f , nullptr , SegoeRanges );
|
||||
|
||||
if ( SHGetKnownFolderPath( FOLDERID_Fonts , 0 , 0 , &szWindowsFontPath ) == S_OK )
|
||||
static const ImWchar IconRanges[] =
|
||||
{
|
||||
std::wstring TahomaFont = std::wstring( szWindowsFontPath ) + L"\\tahoma.ttf";
|
||||
io.Fonts->AddFontFromFileTTF( unicode_to_utf8( TahomaFont ).c_str() , 15.f , nullptr , TahomaRanges );
|
||||
}
|
||||
0xE000, 0xF8FF,
|
||||
0,
|
||||
};
|
||||
|
||||
CoTaskMemFree( szWindowsFontPath );
|
||||
m_pIconFont = io.Fonts->AddFontFromMemoryTTF( &icon , sizeof icon , 24.f , nullptr , IconRanges );
|
||||
}
|
||||
|
||||
void CAndromedaGUI::OnPresent( IDXGISwapChain* pSwapChain )
|
||||
|
||||
@@ -29,6 +29,12 @@ public:
|
||||
public:
|
||||
auto InitFont() -> void;
|
||||
|
||||
public:
|
||||
auto GetDefaultFont() -> ImFont* { return m_pDefaultFont; }
|
||||
auto GetSegoeFont() -> ImFont* { return m_pSegoeFont; }
|
||||
auto GetBoldSegoeFont() -> ImFont* { return m_pBoldSegoeFont; }
|
||||
auto GetIconFont() -> ImFont* { return m_pIconFont; }
|
||||
|
||||
private:
|
||||
auto SetIndigoStyle() -> void;
|
||||
auto SetVermillionStyle() -> void;
|
||||
@@ -82,6 +88,12 @@ private:
|
||||
private:
|
||||
ImGuiContext* m_pImGuiContext = nullptr;
|
||||
|
||||
private:
|
||||
ImFont* m_pDefaultFont = nullptr;
|
||||
ImFont* m_pSegoeFont = nullptr;
|
||||
ImFont* m_pBoldSegoeFont = nullptr;
|
||||
ImFont* m_pIconFont = nullptr;
|
||||
|
||||
private:
|
||||
std::string m_GuiFile;
|
||||
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
#include "CChams.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include <CS2/SDK/SDK.hpp>
|
||||
#include <CS2/SDK/FunctionListSDK.hpp>
|
||||
#include <CS2/SDK/Interface/CMaterialSystem2.hpp>
|
||||
#include <CS2/SDK/Types/CEntityData.hpp>
|
||||
#include <CS2/SDK/Types/CHandle.hpp>
|
||||
|
||||
#include <GameClient/CL_Players.hpp>
|
||||
|
||||
#include <CS2/Hook/Hook_OnDrawObject.hpp>
|
||||
|
||||
#include <AndromedaClient/Settings/Settings.hpp>
|
||||
|
||||
static CChams g_CChams{};
|
||||
|
||||
// ---- build-specific, version-dependent constants ---------------------------
|
||||
namespace ChamsMesh
|
||||
{
|
||||
// stride of one CMeshData entry in the mesh draw array
|
||||
constexpr std::size_t MESH_STRIDE = 0x68;
|
||||
|
||||
// CMeshData.pSceneAnimatableObject
|
||||
constexpr std::size_t SCENE_OBJECT_OFFSET = 0x18;
|
||||
// CMeshData.pMaterial (visible)
|
||||
constexpr std::size_t MATERIAL_OFFSET = 0x20;
|
||||
// CMeshData.pMaterial (second / occluded handle)
|
||||
constexpr std::size_t MATERIAL2_OFFSET = 0x28;
|
||||
// CMeshData.colValue (00AABBGGRR)
|
||||
constexpr std::size_t COLOR_OFFSET = 0x50;
|
||||
|
||||
// CSceneAnimatableObject.hOwner (CHandle of the owning entity)
|
||||
constexpr std::size_t OWNER_OFFSET = 0x18;
|
||||
}
|
||||
|
||||
// ---- minimal KeyValues3 / KV3ID_t -----------------------------------------
|
||||
class KeyValues3
|
||||
{
|
||||
public:
|
||||
// Opaque storage large enough for the parsed KV3 tree; LoadKV3 writes here.
|
||||
alignas( 16 ) uint8_t m_pData[ 0x400 ] = {};
|
||||
};
|
||||
|
||||
struct KV3ID_t
|
||||
{
|
||||
const char* szName = "";
|
||||
uint64_t unk0 = 0x469806E97412167C;
|
||||
uint64_t unk1 = 0xE73790B53EE6F2AF;
|
||||
};
|
||||
|
||||
// ---- shader buffers (standard flat cham materials) -------------------------
|
||||
static constexpr char szVMatVisible[] =
|
||||
R"---(<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
|
||||
{
|
||||
shader = "csgo_unlitgeneric.vfx"
|
||||
|
||||
F_PAINT_VERTEX_COLORS = 1
|
||||
F_TRANSLUCENT = 1
|
||||
F_BLEND_MODE = 1
|
||||
|
||||
g_vColorTint = [1, 1, 1, 1]
|
||||
|
||||
TextureAmbientOcclusion = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tAmbientOcclusion = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tColor = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tNormal = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tTintMask = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
})---";
|
||||
|
||||
static constexpr char szVMatInvisible[] =
|
||||
R"---(<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
|
||||
{
|
||||
shader = "csgo_unlitgeneric.vfx"
|
||||
|
||||
F_PAINT_VERTEX_COLORS = 1
|
||||
F_TRANSLUCENT = 1
|
||||
F_BLEND_MODE = 1
|
||||
F_DISABLE_Z_BUFFERING = 1
|
||||
|
||||
g_vColorTint = [1, 1, 1, 1]
|
||||
|
||||
TextureAmbientOcclusion = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tAmbientOcclusion = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tColor = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tNormal = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
g_tTintMask = resource:"materials/default/default_mask_tga_fde710a5.vtex"
|
||||
})---";
|
||||
|
||||
// ---- original draw call (set by the hook, Hook_OnDrawObject.hpp) ----------
|
||||
|
||||
auto CChams::CreateMaterial( const char* szName , const char* szVmatBuffer ) -> CMaterial2*
|
||||
{
|
||||
// KeyValues3 must be constructed via the game's SetTypeKV3 before use,
|
||||
// otherwise KeyValues3::LoadKV3 dereferences an uninitialised allocator and
|
||||
// access-violates inside tier0.dll (C0000005).
|
||||
auto* kv3 = new KeyValues3[ 0x10 ];
|
||||
KV3ID_t kv3ID{};
|
||||
|
||||
ClientKeyValues3_SetTypeKV3( kv3 , 1U , 6U );
|
||||
|
||||
if ( !KeyValues3_LoadKV3( kv3 , szVmatBuffer , &kv3ID ) )
|
||||
{
|
||||
delete[] kv3;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto* pMaterialSystem = SDK::Interfaces::MaterialSystem2();
|
||||
|
||||
if ( !pMaterialSystem )
|
||||
{
|
||||
delete[] kv3;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CMaterial2** pHandle = nullptr;
|
||||
|
||||
pMaterialSystem->CreateMaterial( &pHandle , szName , kv3 );
|
||||
|
||||
delete[] kv3;
|
||||
|
||||
if ( pHandle && *pHandle )
|
||||
return *pHandle;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto CChams::CreateMaterials() -> void
|
||||
{
|
||||
if ( IsReady() )
|
||||
return;
|
||||
|
||||
if ( !m_pMaterialVisible )
|
||||
m_pMaterialVisible = CreateMaterial( "chams_visible" , szVMatVisible );
|
||||
|
||||
if ( !m_pMaterialInvisible )
|
||||
m_pMaterialInvisible = CreateMaterial( "chams_invisible" , szVMatInvisible );
|
||||
}
|
||||
|
||||
auto CChams::OnDrawObject( void* pAnimatableSceneObjectDesc , void* pDx11 , void* pMeshData , int nDataCount , void* pSceneView , void* pSceneLayer , void* pUnk , void* pUnk2 ) -> bool
|
||||
{
|
||||
if ( !Settings::Chams::Enabled )
|
||||
return false;
|
||||
|
||||
if ( !IsReady() || !pMeshData || nDataCount <= 0 )
|
||||
return false;
|
||||
|
||||
auto* pLocalPawn = GetCL_Players()->GetLocalPlayerPawn();
|
||||
|
||||
if ( !pLocalPawn )
|
||||
return false;
|
||||
|
||||
const auto* pBytes = static_cast<const uint8_t*>( pMeshData );
|
||||
|
||||
for ( int i = 0; i < nDataCount; i++ )
|
||||
{
|
||||
const uint8_t* pEntry = pBytes + static_cast<std::size_t>( i ) * ChamsMesh::MESH_STRIDE;
|
||||
|
||||
const void* pSceneObject = *(const void**)( pEntry + ChamsMesh::SCENE_OBJECT_OFFSET );
|
||||
|
||||
if ( !pSceneObject )
|
||||
continue;
|
||||
|
||||
const CHandle hOwner = *(const CHandle*)( (const uint8_t*)pSceneObject + ChamsMesh::OWNER_OFFSET );
|
||||
|
||||
if ( !hOwner.IsValid() )
|
||||
continue;
|
||||
|
||||
auto* pPawn = hOwner.Get<C_CSPlayerPawn>();
|
||||
|
||||
if ( !pPawn || !pPawn->IsPlayerPawn() || !pPawn->IsAlive() || pPawn == pLocalPawn )
|
||||
continue;
|
||||
|
||||
// only apply chams to enemies
|
||||
if ( pPawn->m_iTeamNum() == pLocalPawn->m_iTeamNum() )
|
||||
continue;
|
||||
|
||||
auto* pWN = const_cast<uint8_t*>( pEntry );
|
||||
|
||||
if ( Settings::Chams::IgnoreZ )
|
||||
{
|
||||
*(CMaterial2**)( pWN + ChamsMesh::MATERIAL_OFFSET ) = m_pMaterialInvisible;
|
||||
*(CMaterial2**)( pWN + ChamsMesh::MATERIAL2_OFFSET ) = m_pMaterialInvisible;
|
||||
*(uint32_t*)( pWN + ChamsMesh::COLOR_OFFSET ) = ImGui::ColorConvertFloat4ToU32( Settings::Chams::Occluded );
|
||||
|
||||
OnDrawObject_o( pAnimatableSceneObjectDesc , pDx11 , pMeshData , nDataCount , pSceneView , pSceneLayer , pUnk , pUnk2 );
|
||||
}
|
||||
|
||||
*(CMaterial2**)( pWN + ChamsMesh::MATERIAL_OFFSET ) = m_pMaterialVisible;
|
||||
*(CMaterial2**)( pWN + ChamsMesh::MATERIAL2_OFFSET ) = m_pMaterialVisible;
|
||||
*(uint32_t*)( pWN + ChamsMesh::COLOR_OFFSET ) = ImGui::ColorConvertFloat4ToU32( Settings::Chams::Visible );
|
||||
|
||||
OnDrawObject_o( pAnimatableSceneObjectDesc , pDx11 , pMeshData , nDataCount , pSceneView , pSceneLayer , pUnk , pUnk2 );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
auto GetChams() -> CChams*
|
||||
{
|
||||
return &g_CChams;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
#pragma once
|
||||
|
||||
#include <Common/Common.hpp>
|
||||
|
||||
class CMaterial2;
|
||||
class C_CSPlayerPawn;
|
||||
|
||||
//
|
||||
// Material-based player chams.
|
||||
//
|
||||
// Requires a hook on scenesystem.dll "OnDrawObject" (CAnimatableSceneObjectDesc)
|
||||
// that feeds meshes to OnDrawObject(). The feature builds two flat materials
|
||||
// (visible + through-walls variant) via the game's own material system and
|
||||
// swaps them onto player meshes at draw time.
|
||||
//
|
||||
// NOTE: the mesh-field offsets, the scene-object owner offset and the KV3ID
|
||||
// hashes are build-specific. They are isolated as constants below so they can
|
||||
// be updated against a current dump without touching the surrounding logic.
|
||||
//
|
||||
|
||||
class CChams final
|
||||
{
|
||||
public:
|
||||
enum EMaterialStyle_t : int32_t
|
||||
{
|
||||
MATERIAL_STYLE_PLAIN = 0,
|
||||
MATERIAL_STYLE_MAX,
|
||||
};
|
||||
|
||||
public:
|
||||
auto CreateMaterials() -> void;
|
||||
|
||||
public:
|
||||
// Returns true when the mesh data was consumed (material applied + base drawn).
|
||||
auto OnDrawObject( void* pAnimatableSceneObjectDesc , void* pDx11 , void* pMeshData , int nDataCount , void* pSceneView , void* pSceneLayer , void* pUnk , void* pUnk2 ) -> bool;
|
||||
|
||||
public:
|
||||
auto IsReady() const -> bool { return m_pMaterialVisible && m_pMaterialInvisible; }
|
||||
|
||||
private:
|
||||
auto CreateMaterial( const char* szName , const char* szVmatBuffer ) -> CMaterial2*;
|
||||
|
||||
private:
|
||||
CMaterial2* m_pMaterialVisible = nullptr;
|
||||
CMaterial2* m_pMaterialInvisible = nullptr;
|
||||
};
|
||||
|
||||
auto GetChams() -> CChams*;
|
||||
+182
-18
@@ -261,40 +261,124 @@ auto CInventoryItemsManager::ScanAllItems() -> void
|
||||
}
|
||||
}
|
||||
|
||||
// Legacy function - now scans items and loads selected skins from config
|
||||
// Legacy function - now scans items and applies configured per-weapon selections
|
||||
auto CInventoryItemsManager::OnAddAllItems() -> void
|
||||
{
|
||||
ScanAllItems();
|
||||
ApplyConfigSelections();
|
||||
}
|
||||
|
||||
for ( auto& Item : m_vecDumpedItems )
|
||||
auto CInventoryItemsManager::ApplyConfigSelections() -> void
|
||||
{
|
||||
for ( const auto& [ defIdx , paintKit ] : m_WeaponSkinSelections )
|
||||
ApplyWeaponSelection( defIdx , paintKit , true );
|
||||
|
||||
if ( m_iMusicSelection >= 0 )
|
||||
ApplyWeaponSelection_Impl( EInventoryPrefab_t::INVENTORY_PREFAB_MUSIC_KIT , m_iMusicSelection , true , true );
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::SetWeaponSkin( uint16_t defIdx , int paintKit , bool equip ) -> bool
|
||||
{
|
||||
if ( !IsWeaponSkinValid( defIdx , paintKit ) )
|
||||
return false;
|
||||
|
||||
if ( ApplyWeaponSelection( defIdx , paintKit , equip ) )
|
||||
{
|
||||
if ( Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_WEAPON ||
|
||||
Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_KNIFE ||
|
||||
Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_GLOVE )
|
||||
m_WeaponSkinSelections[defIdx] = paintKit;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::ApplyWeaponSelection( uint16_t defIdx , int paintKit , bool equip ) -> bool
|
||||
{
|
||||
return ApplyWeaponSelection_Impl( defIdx , paintKit , equip , false );
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::SetMusicKit( int musicId , bool equip ) -> bool
|
||||
{
|
||||
if ( !IsMusicValid( musicId ) )
|
||||
return false;
|
||||
|
||||
if ( ApplyWeaponSelection_Impl( EInventoryPrefab_t::INVENTORY_PREFAB_MUSIC_KIT , musicId , equip , true ) )
|
||||
{
|
||||
if ( Item.m_DumpedSkins.size() )
|
||||
m_iMusicSelection = musicId;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::RemoveWeaponSkin( uint16_t defIdx ) -> bool
|
||||
{
|
||||
auto bRemoved = false;
|
||||
|
||||
for ( auto it = m_AddedItems.begin(); it != m_AddedItems.end(); )
|
||||
{
|
||||
for ( auto& Skin : Item.m_DumpedSkins )
|
||||
if ( it->second.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
{
|
||||
AddSelectedSkinToInventory( Item.m_DefIdx , Skin.m_ID , 0.0f , false , 0 , -1 );
|
||||
it++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_AGENT )
|
||||
|
||||
if ( it->second.m_DefIdx == defIdx )
|
||||
{
|
||||
AddSelectedSkinToInventory( Item.m_DefIdx , 0 , 0.0f , false , 0 , -1 );
|
||||
if ( auto* pInventory = CCSPlayerInventory::Get(); pInventory )
|
||||
pInventory->RemoveEconItem( it->second.m_pEconItem );
|
||||
|
||||
it = m_AddedItems.erase( it );
|
||||
bRemoved = true;
|
||||
}
|
||||
else if ( Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
else
|
||||
it++;
|
||||
}
|
||||
|
||||
m_WeaponSkinSelections.erase( defIdx );
|
||||
|
||||
return bRemoved;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::RemoveMusicKit() -> bool
|
||||
{
|
||||
auto bRemoved = false;
|
||||
|
||||
for ( auto it = m_AddedItems.begin(); it != m_AddedItems.end(); )
|
||||
{
|
||||
if ( Item.m_DumpedSkins.size() )
|
||||
if ( it->second.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
{
|
||||
for ( auto& Skin : Item.m_DumpedSkins )
|
||||
if ( auto* pInventory = CCSPlayerInventory::Get(); pInventory )
|
||||
pInventory->RemoveEconItem( it->second.m_pEconItem );
|
||||
|
||||
it = m_AddedItems.erase( it );
|
||||
bRemoved = true;
|
||||
}
|
||||
else
|
||||
it++;
|
||||
}
|
||||
|
||||
m_iMusicSelection = -1;
|
||||
|
||||
return bRemoved;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::ClearAllSelections() -> void
|
||||
{
|
||||
for ( auto it = m_AddedItems.begin(); it != m_AddedItems.end(); )
|
||||
{
|
||||
AddMusicToInventory( Item.m_DefIdx , Skin.m_ID );
|
||||
}
|
||||
}
|
||||
if ( it->second.m_ItemType != EDumpedItemType_t::DUMPED_ITEM_TYPE_AGENT )
|
||||
{
|
||||
if ( auto* pInventory = CCSPlayerInventory::Get(); pInventory )
|
||||
pInventory->RemoveEconItem( it->second.m_pEconItem );
|
||||
|
||||
it = m_AddedItems.erase( it );
|
||||
}
|
||||
else
|
||||
it++;
|
||||
}
|
||||
|
||||
m_WeaponSkinSelections.clear();
|
||||
m_iMusicSelection = -1;
|
||||
}
|
||||
|
||||
// Add a specific skin to inventory
|
||||
@@ -523,6 +607,86 @@ auto CInventoryItemsManager::AddMusicToInventory( uint16_t defIdx , int MusicId
|
||||
return false;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::IsWeaponSkinValid( uint16_t defIdx , int paintKit ) -> bool
|
||||
{
|
||||
for ( const auto& Item : m_vecDumpedItems )
|
||||
{
|
||||
if ( Item.m_DefIdx != defIdx )
|
||||
continue;
|
||||
|
||||
if ( Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
return false;
|
||||
|
||||
if ( Item.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_AGENT )
|
||||
return true;
|
||||
|
||||
for ( const auto& Skin : Item.m_DumpedSkins )
|
||||
{
|
||||
if ( Skin.m_ID == paintKit )
|
||||
return true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::IsMusicValid( int musicId ) -> bool
|
||||
{
|
||||
for ( const auto& Item : m_vecDumpedItems )
|
||||
{
|
||||
if ( Item.m_ItemType != EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
continue;
|
||||
|
||||
for ( const auto& Skin : Item.m_DumpedSkins )
|
||||
{
|
||||
if ( Skin.m_ID == musicId )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::ApplyWeaponSelection_Impl( uint16_t defIdx , int paintKit , bool equip , bool bMusic ) -> bool
|
||||
{
|
||||
if ( bMusic )
|
||||
{
|
||||
for ( auto it = m_AddedItems.begin(); it != m_AddedItems.end(); )
|
||||
{
|
||||
if ( it->second.m_ItemType == EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
{
|
||||
if ( auto* pInventory = CCSPlayerInventory::Get(); pInventory )
|
||||
pInventory->RemoveEconItem( it->second.m_pEconItem );
|
||||
|
||||
it = m_AddedItems.erase( it );
|
||||
}
|
||||
else
|
||||
it++;
|
||||
}
|
||||
|
||||
return AddMusicToInventory( defIdx , paintKit , equip );
|
||||
}
|
||||
|
||||
for ( auto it = m_AddedItems.begin(); it != m_AddedItems.end(); )
|
||||
{
|
||||
if ( it->second.m_ItemType != EDumpedItemType_t::DUMPED_ITEM_TYPE_AGENT &&
|
||||
it->second.m_ItemType != EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC &&
|
||||
it->second.m_DefIdx == defIdx )
|
||||
{
|
||||
if ( auto* pInventory = CCSPlayerInventory::Get(); pInventory )
|
||||
pInventory->RemoveEconItem( it->second.m_pEconItem );
|
||||
|
||||
it = m_AddedItems.erase( it );
|
||||
}
|
||||
else
|
||||
it++;
|
||||
}
|
||||
|
||||
return AddSelectedSkinToInventory( defIdx , paintKit , 0.0f , equip , 0 , -1 );
|
||||
}
|
||||
|
||||
auto CInventoryItemsManager::RemoveItemFromInventoryByID( uint64_t ID ) -> bool
|
||||
{
|
||||
if ( IsItemIDAdded( ID ) )
|
||||
|
||||
+30
@@ -72,6 +72,10 @@ private:
|
||||
std::vector<DumpedItem_t> m_vecDumpedItems;
|
||||
std::unordered_map<uint64_t , AddedItem_t> m_AddedItems;
|
||||
|
||||
private:
|
||||
std::unordered_map<uint16_t , int> m_WeaponSkinSelections;
|
||||
int m_iMusicSelection = -1;
|
||||
|
||||
public:
|
||||
// Scan all available items (does NOT add to inventory)
|
||||
auto ScanAllItems() -> void;
|
||||
@@ -82,6 +86,22 @@ public:
|
||||
// Add a specific selected skin to inventory
|
||||
auto AddSelectedSkinToInventory( uint16_t defIdx , int paintKit , float wear = 0.0f , bool equip = false , int seed = 0 , int statTrak = -1 ) -> bool;
|
||||
|
||||
// Per-weapon skin changer: apply one skin for a weapon (replaces previous selection)
|
||||
auto SetWeaponSkin( uint16_t defIdx , int paintKit , bool equip = true ) -> bool;
|
||||
auto ApplyWeaponSelection( uint16_t defIdx , int paintKit , bool equip = true ) -> bool;
|
||||
auto RemoveWeaponSkin( uint16_t defIdx ) -> bool;
|
||||
|
||||
auto SetMusicKit( int musicId , bool equip = true ) -> bool;
|
||||
auto RemoveMusicKit() -> bool;
|
||||
|
||||
auto ApplyConfigSelections() -> void;
|
||||
auto ClearAllSelections() -> void;
|
||||
|
||||
private:
|
||||
auto IsWeaponSkinValid( uint16_t defIdx , int paintKit ) -> bool;
|
||||
auto IsMusicValid( int musicId ) -> bool;
|
||||
auto ApplyWeaponSelection_Impl( uint16_t defIdx , int paintKit , bool equip , bool bMusic ) -> bool;
|
||||
|
||||
public:
|
||||
auto AddMusicToInventory( uint16_t defIdx , int MusicId , bool equip = false ) -> bool;
|
||||
|
||||
@@ -103,6 +123,16 @@ public:
|
||||
return m_vecDumpedItems;
|
||||
}
|
||||
|
||||
inline auto GetWeaponSkinSelections() -> std::unordered_map<uint16_t , int>&
|
||||
{
|
||||
return m_WeaponSkinSelections;
|
||||
}
|
||||
|
||||
inline auto GetMusicSelection() -> int&
|
||||
{
|
||||
return m_iMusicSelection;
|
||||
}
|
||||
|
||||
inline auto GetAddedItems()->std::unordered_map<uint64_t, AddedItem_t>&
|
||||
{
|
||||
return m_AddedItems;
|
||||
|
||||
@@ -123,6 +123,14 @@ auto CVisual::OnRenderPlayerEsp( CCSPlayerController* pCCSPlayerController , con
|
||||
GetRenderStackSystem()->DrawCoalBox( min , max , PlayerColor );
|
||||
else if ( Settings::Visual::PlayerBoxType == EVisualBoxType_t::OUTLINE_COAL_BOX )
|
||||
GetRenderStackSystem()->DrawOutlineCoalBox( min , max , PlayerColor );
|
||||
else if ( Settings::Visual::PlayerBoxType == EVisualBoxType_t::GLASSY_BOX )
|
||||
{
|
||||
auto FillColor = static_cast<ImColor>( PlayerColor );
|
||||
FillColor.Value.w = Settings::Visual::GlassOpacity / 100.f;
|
||||
|
||||
GetRenderStackSystem()->DrawFillBox( min , max , FillColor );
|
||||
GetRenderStackSystem()->DrawOutlineBox( min , max , PlayerColor );
|
||||
}
|
||||
}
|
||||
|
||||
if ( Settings::Visual::BoneESP )
|
||||
|
||||
@@ -33,6 +33,7 @@ private:
|
||||
COAL_BOX ,
|
||||
OUTLINE_COAL_BOX ,
|
||||
CIRCLE_3D ,
|
||||
GLASSY_BOX ,
|
||||
};
|
||||
|
||||
auto OnRenderPlayerEsp( CCSPlayerController* pCCSPlayerController , const Rect_t& bBox , const bool bVisible ) -> void;
|
||||
|
||||
@@ -1,159 +1,628 @@
|
||||
#include "CAndromedaMenu.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include <ImGui/imgui.h>
|
||||
#include <ImGui/imgui_internal.h>
|
||||
|
||||
#include <AndromedaClient/Settings/Settings.hpp>
|
||||
#include <AndromedaClient/CAndromedaGUI.hpp>
|
||||
#include <AndromedaClient/Features/CInventoryChanger/CInventoryItemsManager.hpp>
|
||||
|
||||
static CAndromedaMenu g_CAndromedaMenu{};
|
||||
|
||||
namespace
|
||||
{
|
||||
auto AccentU32( const ImVec4& Accent ) -> ImU32
|
||||
{
|
||||
return ImGui::ColorConvertFloat4ToU32( Accent );
|
||||
}
|
||||
|
||||
// Public-API toggle switch, drawn as a rounded pill.
|
||||
bool ToggleSwitch( const char* szID , bool* pbValue , const ImVec4& Accent )
|
||||
{
|
||||
const float Height = ImGui::GetFrameHeight();
|
||||
const float Width = Height * 1.9f;
|
||||
|
||||
const ImVec2 Pos = ImGui::GetCursorScreenPos();
|
||||
|
||||
const bool bClicked = ImGui::InvisibleButton( szID , ImVec2( Width , Height ) );
|
||||
|
||||
ImDrawList* pDraw = ImGui::GetWindowDrawList();
|
||||
|
||||
const ImU32 Track = *pbValue ? AccentU32( Accent ) : IM_COL32( 255 , 255 , 255 , 22 );
|
||||
|
||||
pDraw->AddRectFilled( Pos , Pos + ImVec2( Width , Height ) , Track , Height * 0.5f );
|
||||
|
||||
const float KnobSize = Height - 6.f;
|
||||
const float KnobX = *pbValue ? ( Pos.x + Width - KnobSize - 3.f ) : ( Pos.x + 3.f );
|
||||
|
||||
pDraw->AddCircleFilled( ImVec2( KnobX + KnobSize * 0.5f , Pos.y + Height * 0.5f ) , KnobSize * 0.5f , IM_COL32( 255 , 255 , 255 , 235 ) );
|
||||
|
||||
if ( bClicked )
|
||||
*pbValue = !*pbValue;
|
||||
|
||||
return bClicked;
|
||||
}
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::OnRenderMenu() -> void
|
||||
{
|
||||
const float MenuAlpha = static_cast<float>( Settings::Menu::MenuAlpha ) / 255.f;
|
||||
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_Alpha , MenuAlpha );
|
||||
ImGui::SetNextWindowSize( ImVec2( 500 , 500 ) , ImGuiCond_FirstUseEver );
|
||||
|
||||
if ( ImGui::Begin( XorStr( CHEAT_NAME ) , 0 ) )
|
||||
{
|
||||
if ( ImGui::CollapsingHeader( XorStr( "Visuals" ) ) )
|
||||
{
|
||||
RenderCheckBox( XorStr( "Active" ) , XorStr( "##Visual.Active" ) , Settings::Visual::Active );
|
||||
RenderCheckBox( XorStr( "Team" ) , XorStr( "##Visual.Team" ) , Settings::Visual::Team );
|
||||
RenderCheckBox( XorStr( "Enemy" ) , XorStr( "##Visual.Enemy" ) , Settings::Visual::Enemy );
|
||||
RenderCheckBox( XorStr( "OnlyVisible" ) , XorStr( "##Visual.OnlyVisible" ) , Settings::Visual::OnlyVisible );
|
||||
ImGui::PushStyleColor( ImGuiCol_WindowBg , IM_COL32( 19 , 20 , 24 , 255 ) );
|
||||
ImGui::PushStyleColor( ImGuiCol_ChildBg , IM_COL32( 0 , 0 , 0 , 0 ) );
|
||||
|
||||
RenderCheckBox( XorStr( "Player Box" ) , XorStr( "##Visual.PlayerBox" ) , Settings::Visual::PlayerBox );
|
||||
ImGui::PushStyleColor( ImGuiCol_FrameBg , IM_COL32( 40 , 42 , 50 , 255 ) );
|
||||
ImGui::PushStyleColor( ImGuiCol_FrameBgHovered , IM_COL32( 50 , 53 , 63 , 255 ) );
|
||||
ImGui::PushStyleColor( ImGuiCol_FrameBgActive , IM_COL32( 58 , 61 , 73 , 255 ) );
|
||||
|
||||
ImGui::PushStyleColor( ImGuiCol_CheckMark , m_Accent );
|
||||
ImGui::PushStyleColor( ImGuiCol_SliderGrab , m_Accent );
|
||||
ImGui::PushStyleColor( ImGuiCol_SliderGrabActive , m_Accent );
|
||||
|
||||
ImGui::PushStyleColor( ImGuiCol_Button , IM_COL32( 45 , 48 , 58 , 255 ) );
|
||||
ImGui::PushStyleColor( ImGuiCol_ButtonHovered , IM_COL32( 55 , 59 , 72 , 255 ) );
|
||||
ImGui::PushStyleColor( ImGuiCol_ButtonActive , m_Accent );
|
||||
|
||||
ImGui::PushStyleColor( ImGuiCol_Header , m_Accent );
|
||||
ImGui::PushStyleColor( ImGuiCol_HeaderHovered , IM_COL32( 60 , 45 , 58 , 255 ) );
|
||||
ImGui::PushStyleColor( ImGuiCol_HeaderActive , IM_COL32( 70 , 48 , 62 , 255 ) );
|
||||
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_WindowPadding , ImVec2( 8.f , 8.f ) );
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_WindowRounding , 8.f );
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_WindowBorderSize , 0.f );
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_FrameRounding , 4.f );
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_ItemSpacing , ImVec2( 8.f , 6.f ) );
|
||||
|
||||
ImGui::SetNextWindowSize( ImVec2( 960 , 620 ) , ImGuiCond_FirstUseEver );
|
||||
|
||||
if ( ImGui::Begin( XorStr( "Evicted" ) , nullptr , ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar ) )
|
||||
{
|
||||
RenderSidebar();
|
||||
|
||||
ImGui::SameLine( 0.f , 0.f );
|
||||
|
||||
ImGui::PushStyleVar( ImGuiStyleVar_WindowPadding , ImVec2( 18.f , 16.f ) );
|
||||
|
||||
if ( ImGui::BeginChild( "##Content" , ImVec2( 0.f , 0.f ) , false ) )
|
||||
{
|
||||
switch ( m_iSelectedTab )
|
||||
{
|
||||
case TAB_VISUALS: RenderVisualPanel(); break;
|
||||
case TAB_GLOW: RenderGlowPanel(); break;
|
||||
case TAB_SKINS: RenderSkinPanel(); break;
|
||||
case TAB_MUSIC: RenderMusicPanel(); break;
|
||||
case TAB_CONFIG: RenderConfigPanel(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
|
||||
ImGui::PopStyleVar();
|
||||
}
|
||||
|
||||
ImGui::End();
|
||||
|
||||
ImGui::PopStyleVar();
|
||||
ImGui::PopStyleVar();
|
||||
ImGui::PopStyleVar();
|
||||
ImGui::PopStyleVar();
|
||||
ImGui::PopStyleVar();
|
||||
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
|
||||
ImGui::PopStyleVar();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderSidebar() -> void
|
||||
{
|
||||
const ImVec2 Avail = ImGui::GetContentRegionAvail();
|
||||
|
||||
ImDrawList* pDraw = ImGui::GetWindowDrawList();
|
||||
|
||||
const ImVec2 WinMin = ImGui::GetWindowPos();
|
||||
const ImVec2 SidebarMax = WinMin + ImVec2( 210.f , Avail.y + 16.f );
|
||||
|
||||
pDraw->AddRectFilled( WinMin , SidebarMax , IM_COL32( 25 , 26 , 32 , 255 ) , 8.f );
|
||||
|
||||
if ( ImGui::BeginChild( "##Sidebar" , ImVec2( 210.f , Avail.y ) , false ) )
|
||||
{
|
||||
const float HeaderHeight = 92.f;
|
||||
const ImVec2 HeaderMin = ImGui::GetCursorScreenPos();
|
||||
const ImVec2 HeaderMax = HeaderMin + ImVec2( 210.f , HeaderHeight );
|
||||
|
||||
pDraw->AddRectFilled( HeaderMin , HeaderMax , AccentU32( m_Accent ) , 8.f );
|
||||
|
||||
pDraw->AddRectFilled( ImVec2( HeaderMax.x - 60.f , HeaderMin.y ) , HeaderMax , IM_COL32( 0 , 0 , 0 , 18 ) , 8.f );
|
||||
pDraw->AddRectFilled( ImVec2( HeaderMin.x , HeaderMax.y - 22.f ) , HeaderMax , IM_COL32( 0 , 0 , 0 , 40 ) );
|
||||
|
||||
ImFont* pIcon = GetAndromedaGUI()->GetIconFont();
|
||||
ImFont* pBold = GetAndromedaGUI()->GetBoldSegoeFont();
|
||||
|
||||
const char* szLogoIcon = "?";
|
||||
const char* szLogoText = "EVI CTED";
|
||||
const char* szSubText = "ANDROMEDA";
|
||||
|
||||
const float IconW = pIcon->CalcTextSizeA( 34.f , FLT_MAX , 0.f , szLogoIcon ).x;
|
||||
|
||||
ImGui::SetCursorScreenPos( ImVec2( HeaderMin.x + 18.f , HeaderMin.y + 20.f ) );
|
||||
|
||||
ImGui::PushFont( pIcon );
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.95f ) , "%s" , szLogoIcon );
|
||||
ImGui::PopFont();
|
||||
|
||||
ImGui::SameLine( 0.f , 10.f );
|
||||
|
||||
ImGui::PushFont( pBold );
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 1.f ) , "%s" , szLogoText );
|
||||
ImGui::PopFont();
|
||||
|
||||
ImGui::SameLine( 0.f , 8.f );
|
||||
|
||||
ImFont* pSeg = GetAndromedaGUI()->GetSegoeFont();
|
||||
ImGui::PushFont( pSeg );
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.85f ) , "%s" , szSubText );
|
||||
ImGui::PopFont();
|
||||
|
||||
ImGui::SetCursorScreenPos( ImVec2( HeaderMin.x + 18.f , HeaderMin.y + 52.f ) );
|
||||
|
||||
ImGui::Dummy( ImVec2( 0.f , 34.f ) );
|
||||
|
||||
ImGui::SetCursorPosX( 4.f );
|
||||
|
||||
TabButton( "I" , "Visuals" , TAB_VISUALS , ImVec2( 202.f , 40.f ) );
|
||||
TabButton( "P" , "Glow & Chams" , TAB_GLOW , ImVec2( 202.f , 40.f ) );
|
||||
TabButton( "T" , "Skins" , TAB_SKINS , ImVec2( 202.f , 40.f ) );
|
||||
TabButton( "N" , "Music Kit" , TAB_MUSIC , ImVec2( 202.f , 40.f ) );
|
||||
TabButton( "S" , "Config" , TAB_CONFIG , ImVec2( 202.f , 40.f ) );
|
||||
|
||||
ImGui::SetCursorPosY( ImGui::GetCursorPosY() + 6.f );
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.35f ) , "%s" , " Insert to close" );
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::TabButton( const char* szIcon , const char* szLabel , const int iTab , const ImVec2& Size ) -> void
|
||||
{
|
||||
const bool bSelected = ( m_iSelectedTab == iTab );
|
||||
|
||||
const ImVec2 Pos = ImGui::GetCursorScreenPos();
|
||||
const ImVec2 Max = Pos + Size;
|
||||
|
||||
char szID[ 32 ];
|
||||
std::snprintf( szID , sizeof szID , "##tab_%d" , iTab );
|
||||
|
||||
ImGui::InvisibleButton( szID , Size );
|
||||
|
||||
const bool bHovered = ImGui::IsItemHovered();
|
||||
const bool bClicked = ImGui::IsItemClicked();
|
||||
|
||||
if ( bClicked )
|
||||
m_iSelectedTab = iTab;
|
||||
|
||||
ImDrawList* pDraw = ImGui::GetWindowDrawList();
|
||||
|
||||
ImU32 Bg = IM_COL32( 0 , 0 , 0 , 0 );
|
||||
|
||||
if ( bSelected )
|
||||
Bg = AccentU32( m_Accent );
|
||||
else if ( bHovered )
|
||||
Bg = IM_COL32( 255 , 255 , 255 , 16 );
|
||||
|
||||
pDraw->AddRectFilled( Pos , Max , Bg , 6.f );
|
||||
|
||||
const float TextColorOn = bSelected ? 1.f : 0.45f;
|
||||
|
||||
ImFont* pIcon = GetAndromedaGUI()->GetIconFont();
|
||||
ImFont* pText = GetAndromedaGUI()->GetDefaultFont();
|
||||
|
||||
const ImVec2 Icon( Pos.x + 14.f , Pos.y + ( Size.y - 26.f ) * 0.5f );
|
||||
|
||||
pDraw->AddText( pIcon , 26.f , Icon , IM_COL32( 255 , 255 , 255 , (int)( TextColorOn * 255.f ) ) , szIcon );
|
||||
|
||||
const float IconW = pIcon->CalcTextSizeA( 26.f , FLT_MAX , 0.f , szIcon ).x;
|
||||
|
||||
pDraw->AddText( pText , pText->FontSize , ImVec2( Icon.x + IconW + 12.f , Pos.y + ( Size.y - pText->FontSize ) * 0.5f ) , IM_COL32( 255 , 255 , 255 , (int)( TextColorOn * 255.f ) ) , szLabel );
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderVisualPanel() -> void
|
||||
{
|
||||
BeginPanel( "Visuals" );
|
||||
|
||||
Toggle( "Enabled" , "##Visual.Active" , Settings::Visual::Active );
|
||||
Toggle( "Teammates" , "##Visual.Team" , Settings::Visual::Team );
|
||||
Toggle( "Enemies" , "##Visual.Enemy" , Settings::Visual::Enemy );
|
||||
Toggle( "Only Visible" , "##Visual.OnlyVisible" , Settings::Visual::OnlyVisible );
|
||||
|
||||
EndPanel();
|
||||
|
||||
BeginPanel( "Player Box" );
|
||||
|
||||
Toggle( "Player Box" , "##Visual.PlayerBox" , Settings::Visual::PlayerBox );
|
||||
|
||||
const char* PlayerBoxTypeItems[] =
|
||||
{
|
||||
"Box" , "Outline Box" , "Coal Box" , "Outline Coal Box"
|
||||
"Box" , "Outline Box" , "Coal Box" , "Outline Coal Box" , "Glassy Box"
|
||||
};
|
||||
|
||||
RenderComboBox( XorStr( "PlayerBox Type" ) , XorStr( "##Visual.PlayerBoxType" ) , Settings::Visual::PlayerBoxType , PlayerBoxTypeItems , IM_ARRAYSIZE( PlayerBoxTypeItems ) );
|
||||
if ( Combo( "Type" , "##Visual.PlayerBoxType" , Settings::Visual::PlayerBoxType , PlayerBoxTypeItems , IM_ARRAYSIZE( PlayerBoxTypeItems ) ) )
|
||||
{
|
||||
if ( Settings::Visual::PlayerBoxType == 5 )
|
||||
Settings::Visual::GlassyBox = true;
|
||||
else
|
||||
Settings::Visual::GlassyBox = false;
|
||||
}
|
||||
|
||||
if ( Settings::Visual::PlayerBoxType == 5 )
|
||||
SliderInt( "Glass Opacity" , "##Visual.GlassOpacity" , Settings::Visual::GlassOpacity , 10 , 90 , "%d%%" );
|
||||
|
||||
EndPanel();
|
||||
|
||||
BeginPanel( "Skeleton" );
|
||||
|
||||
Toggle( "Bone ESP" , "##Visual.BoneESP" , Settings::Visual::BoneESP );
|
||||
|
||||
RenderCheckBox( XorStr( "Bone ESP" ) , XorStr( "##Visual.BoneESP" ) , Settings::Visual::BoneESP );
|
||||
if ( Settings::Visual::BoneESP )
|
||||
{
|
||||
ImGui::Indent();
|
||||
RenderCheckBox( XorStr( " Bone ESP Team" ) , XorStr( "##Visual.BoneESPTeam" ) , Settings::Visual::BoneESPTeam );
|
||||
RenderCheckBox( XorStr( " Bone ESP Enemy" ) , XorStr( "##Visual.BoneESPEnemy" ) , Settings::Visual::BoneESPEnemy );
|
||||
ImGui::Unindent();
|
||||
Toggle( " Teammates" , "##Visual.BoneESPTeam" , Settings::Visual::BoneESPTeam );
|
||||
Toggle( " Enemies" , "##Visual.BoneESPEnemy" , Settings::Visual::BoneESPEnemy );
|
||||
}
|
||||
|
||||
RenderCheckBox( XorStr( "Glow" ) , XorStr( "##Visual.Glow" ) , Settings::Visual::Glow );
|
||||
EndPanel();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderGlowPanel() -> void
|
||||
{
|
||||
BeginPanel( "Glow" );
|
||||
|
||||
Toggle( "Glow Enabled" , "##Visual.Glow" , Settings::Visual::Glow );
|
||||
|
||||
if ( Settings::Visual::Glow )
|
||||
{
|
||||
ImGui::Indent();
|
||||
RenderCheckBox( XorStr( " Glow Team" ) , XorStr( "##Visual.GlowTeam" ) , Settings::Visual::GlowTeam );
|
||||
RenderCheckBox( XorStr( " Glow Enemy" ) , XorStr( "##Visual.GlowEnemy" ) , Settings::Visual::GlowEnemy );
|
||||
ImGui::Unindent();
|
||||
}
|
||||
Toggle( " Teammates" , "##Visual.GlowTeam" , Settings::Visual::GlowTeam );
|
||||
Toggle( " Enemies" , "##Visual.GlowEnemy" , Settings::Visual::GlowEnemy );
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
ColorEdit( "Glow TT" , "##Colors.Visual.GlowTT" , &Settings::Colors::Visual::GlowTT.x );
|
||||
ColorEdit( "Glow TT Visible" , "##Colors.Visual.GlowTT_Visible" , &Settings::Colors::Visual::GlowTT_Visible.x );
|
||||
ColorEdit( "Glow CT" , "##Colors.Visual.GlowCT" , &Settings::Colors::Visual::GlowCT.x );
|
||||
ColorEdit( "Glow CT Visible" , "##Colors.Visual.GlowCT_Visible" , &Settings::Colors::Visual::GlowCT_Visible.x );
|
||||
}
|
||||
|
||||
if ( ImGui::CollapsingHeader( XorStr( "Colors" ) ) )
|
||||
EndPanel();
|
||||
|
||||
BeginPanel( "Chams" );
|
||||
|
||||
Toggle( "Material Chams" , "##Chams.Enabled" , Settings::Chams::Enabled );
|
||||
|
||||
if ( Settings::Chams::Enabled )
|
||||
{
|
||||
RenderColorEdit( XorStr( "Player Box TT" ) , XorStr( "##Colors.Visual.PlayerBoxTT" ) , &Settings::Colors::Visual::PlayerBoxTT.x );
|
||||
RenderColorEdit( XorStr( "Player Box TT Visible" ) , XorStr( "##Colors.Visual.PlayerBoxTT_Visible" ) , &Settings::Colors::Visual::PlayerBoxTT_Visible.x );
|
||||
RenderColorEdit( XorStr( "Player Box CT" ) , XorStr( "##Colors.Visual.PlayerBoxCT" ) , &Settings::Colors::Visual::PlayerBoxCT.x );
|
||||
RenderColorEdit( XorStr( "Player Box CT Visible" ) , XorStr( "##Colors.Visual.PlayerBoxCT_Visible" ) , &Settings::Colors::Visual::PlayerBoxCT_Visible.x );
|
||||
Toggle( "Through Walls" , "##Chams.IgnoreZ" , Settings::Chams::IgnoreZ );
|
||||
|
||||
RenderColorEdit( XorStr( "Bone ESP TT" ) , XorStr( "##Colors.Visual.BoneESPTT" ) , &Settings::Colors::Visual::BoneESPTT.x );
|
||||
RenderColorEdit( XorStr( "Bone ESP TT Visible" ) , XorStr( "##Colors.Visual.BoneESPTT_Visible" ) , &Settings::Colors::Visual::BoneESPTT_Visible.x );
|
||||
RenderColorEdit( XorStr( "Bone ESP CT" ) , XorStr( "##Colors.Visual.BoneESPCT" ) , &Settings::Colors::Visual::BoneESPCT.x );
|
||||
RenderColorEdit( XorStr( "Bone ESP CT Visible" ) , XorStr( "##Colors.Visual.BoneESPCT_Visible" ) , &Settings::Colors::Visual::BoneESPCT_Visible.x );
|
||||
ImGui::NewLine();
|
||||
|
||||
RenderColorEdit( XorStr( "Glow TT" ) , XorStr( "##Colors.Visual.GlowTT" ) , &Settings::Colors::Visual::GlowTT.x );
|
||||
RenderColorEdit( XorStr( "Glow TT Visible" ) , XorStr( "##Colors.Visual.GlowTT_Visible" ) , &Settings::Colors::Visual::GlowTT_Visible.x );
|
||||
RenderColorEdit( XorStr( "Glow CT" ) , XorStr( "##Colors.Visual.GlowCT" ) , &Settings::Colors::Visual::GlowCT.x );
|
||||
RenderColorEdit( XorStr( "Glow CT Visible" ) , XorStr( "##Colors.Visual.GlowCT_Visible" ) , &Settings::Colors::Visual::GlowCT_Visible.x );
|
||||
ColorEdit( "Visible Color" , "##Chams.Visible" , &Settings::Chams::Visible.x );
|
||||
ColorEdit( "Occluded Color" , "##Chams.Occluded" , &Settings::Chams::Occluded.x );
|
||||
}
|
||||
|
||||
if ( ImGui::CollapsingHeader( XorStr( "Menu" ) ) )
|
||||
EndPanel();
|
||||
|
||||
BeginPanel( "Glassy Box" );
|
||||
|
||||
Toggle( "Glass Fill" , "##Visual.GlassyBox" , Settings::Visual::GlassyBox );
|
||||
|
||||
if ( Settings::Visual::GlassyBox )
|
||||
{
|
||||
RenderSliderInt( XorStr( "Menu Alpha" ) , XorStr( "##Menu.MenuAlpha" ) , Settings::Menu::MenuAlpha , 100 , 255 );
|
||||
SliderInt( "Opacity" , "##Visual.GlassOpacity" , Settings::Visual::GlassOpacity , 10 , 90 , "%d%%" );
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
ColorEdit( "Box TT" , "##Colors.Visual.PlayerBoxTT" , &Settings::Colors::Visual::PlayerBoxTT.x );
|
||||
ColorEdit( "Box CT" , "##Colors.Visual.PlayerBoxCT" , &Settings::Colors::Visual::PlayerBoxCT.x );
|
||||
}
|
||||
|
||||
EndPanel();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderSkinPanel() -> void
|
||||
{
|
||||
auto* pManager = GetInventoryItemsManager();
|
||||
|
||||
if ( pManager->GetDumpedItems().empty() )
|
||||
pManager->ScanAllItems();
|
||||
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.4f ) , "%s" , "Select a weapon on the left, then a skin and press Apply." );
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
const float ItemWidth = ImGui::GetContentRegionAvail().x * 0.42f;
|
||||
|
||||
if ( ImGui::BeginChild( "##WeaponList" , ImVec2( ItemWidth , 0.f ) , true ) )
|
||||
{
|
||||
const auto& Items = pManager->GetDumpedItems();
|
||||
|
||||
for ( size_t i = 0; i < Items.size(); i++ )
|
||||
{
|
||||
const auto& Item = Items[ i ];
|
||||
|
||||
if ( Item.m_ItemType == CInventoryItemsManager::EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
continue;
|
||||
|
||||
if ( Item.m_ItemType == CInventoryItemsManager::EDumpedItemType_t::DUMPED_ITEM_TYPE_AGENT )
|
||||
continue;
|
||||
|
||||
const bool bSel = ( static_cast<int>( i ) == m_iSelectedItemIdx );
|
||||
|
||||
char szLabel[ 128 ];
|
||||
std::snprintf( szLabel , sizeof szLabel , "%s (%u)" , Item.m_DisplayName.c_str() , Item.m_DefIdx );
|
||||
|
||||
if ( ImGui::Selectable( szLabel , bSel ) )
|
||||
{
|
||||
m_iSelectedItemIdx = static_cast<int>( i );
|
||||
m_iSelectedSkinIdx = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if ( ImGui::BeginChild( "##SkinList" , ImVec2( 0.f , 0.f ) , true ) )
|
||||
{
|
||||
const auto& Items = pManager->GetDumpedItems();
|
||||
|
||||
if ( m_iSelectedItemIdx >= 0 && m_iSelectedItemIdx < static_cast<int>( Items.size() ) )
|
||||
{
|
||||
const auto& Item = Items[ m_iSelectedItemIdx ];
|
||||
|
||||
ImGui::TextColored( m_Accent , "%s" , Item.m_DisplayName.c_str() );
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
if ( Item.m_ItemType == CInventoryItemsManager::EDumpedItemType_t::DUMPED_ITEM_TYPE_GLOVE ||
|
||||
Item.m_ItemType == CInventoryItemsManager::EDumpedItemType_t::DUMPED_ITEM_TYPE_KNIFE ||
|
||||
Item.m_ItemType == CInventoryItemsManager::EDumpedItemType_t::DUMPED_ITEM_TYPE_WEAPON )
|
||||
{
|
||||
for ( size_t j = 0; j < Item.m_DumpedSkins.size(); j++ )
|
||||
{
|
||||
const auto& Skin = Item.m_DumpedSkins[ j ];
|
||||
|
||||
const bool bSel = ( static_cast<int>( j ) == m_iSelectedSkinIdx );
|
||||
|
||||
char szLabel[ 256 ];
|
||||
std::snprintf( szLabel , sizeof szLabel , "%s [%s]" , Skin.m_DisplayName.c_str() , pManager->GetRarityName( Skin.m_Rarity ).c_str() );
|
||||
|
||||
const ImU32 Rarity = pManager->GetRarityColor( Skin.m_Rarity );
|
||||
|
||||
ImGui::PushStyleColor( ImGuiCol_Header , Rarity );
|
||||
|
||||
if ( ImGui::Selectable( szLabel , bSel ) )
|
||||
m_iSelectedSkinIdx = static_cast<int>( j );
|
||||
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
const auto& ItemRef = Items[ m_iSelectedItemIdx ];
|
||||
|
||||
if ( ImGui::Button( "Apply Skin" , ImVec2( 120.f , 28.f ) ) )
|
||||
{
|
||||
if ( ItemRef.m_DumpedSkins.size() && m_iSelectedSkinIdx >= 0 )
|
||||
{
|
||||
const auto& Skin = ItemRef.m_DumpedSkins[ m_iSelectedSkinIdx ];
|
||||
|
||||
pManager->SetWeaponSkin( ItemRef.m_DefIdx , Skin.m_ID , true );
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if ( ImGui::Button( "Remove" , ImVec2( 120.f , 28.f ) ) )
|
||||
pManager->RemoveWeaponSkin( ItemRef.m_DefIdx );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.4f ) , "%s" , "No weapon selected." );
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderMusicPanel() -> void
|
||||
{
|
||||
auto* pManager = GetInventoryItemsManager();
|
||||
|
||||
if ( pManager->GetDumpedItems().empty() )
|
||||
pManager->ScanAllItems();
|
||||
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.4f ) , "%s" , "Select a music kit and press Apply. Selecting a new kit replaces the previous one." );
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
if ( ImGui::BeginChild( "##MusicList" , ImVec2( 0.f , 0.f ) , true ) )
|
||||
{
|
||||
const auto& Items = pManager->GetDumpedItems();
|
||||
|
||||
for ( const auto& Item : Items )
|
||||
{
|
||||
if ( Item.m_ItemType != CInventoryItemsManager::EDumpedItemType_t::DUMPED_ITEM_TYPE_MUSIC )
|
||||
continue;
|
||||
|
||||
for ( const auto& Skin : Item.m_DumpedSkins )
|
||||
{
|
||||
const bool bSel = ( Skin.m_ID == pManager->GetMusicSelection() );
|
||||
|
||||
if ( ImGui::Selectable( Skin.m_DisplayName.c_str() , bSel ) )
|
||||
m_iSelectedMusicIdx = Skin.m_ID;
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
if ( ImGui::Button( "Apply Music Kit" , ImVec2( 150.f , 28.f ) ) )
|
||||
{
|
||||
if ( m_iSelectedMusicIdx >= 0 )
|
||||
pManager->SetMusicKit( m_iSelectedMusicIdx , true );
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if ( ImGui::Button( "Reset" , ImVec2( 100.f , 28.f ) ) )
|
||||
pManager->RemoveMusicKit();
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderConfigPanel() -> void
|
||||
{
|
||||
BeginPanel( "Menu" );
|
||||
|
||||
SliderInt( "Menu Alpha" , "##Menu.MenuAlpha" , Settings::Menu::MenuAlpha , 100 , 255 );
|
||||
|
||||
const char* MenuStyleItems[] =
|
||||
{
|
||||
"Indigo" , "Vermillion" , "Classic Steam"
|
||||
};
|
||||
|
||||
if ( RenderComboBox( XorStr( "Menu Style" ) , XorStr( "##Menu.MenuStyle" ) , Settings::Menu::MenuStyle , MenuStyleItems , IM_ARRAYSIZE( MenuStyleItems ) ) )
|
||||
if ( Combo( "Menu Style" , "##Menu.MenuStyle" , Settings::Menu::MenuStyle , MenuStyleItems , IM_ARRAYSIZE( MenuStyleItems ) ) )
|
||||
GetAndromedaGUI()->UpdateStyle();
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::End();
|
||||
EndPanel();
|
||||
|
||||
ImGui::PopStyleVar();
|
||||
BeginPanel( "Skinchanger" );
|
||||
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.4f ) , "%s" , "The skin changer now applies only the skins you configure per weapon." );
|
||||
|
||||
if ( ImGui::Button( "Clear All Skins" , ImVec2( 150.f , 28.f ) ) )
|
||||
GetInventoryItemsManager()->ClearAllSelections();
|
||||
|
||||
EndPanel();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderCheckBox( const char* szTitle , const char* szStrID , bool& SettingsItem ) -> bool
|
||||
auto CAndromedaMenu::BeginPanel( const char* szTitle ) -> void
|
||||
{
|
||||
if ( szTitle )
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::Text( szTitle );
|
||||
ImGui::SameLine( ImGui::CalcTextSize( szTitle ).x + 10.f );
|
||||
}
|
||||
ImGui::PushID( szTitle );
|
||||
|
||||
const auto LeftPadding = ImGui::GetStyle().FramePadding.x;
|
||||
ImGui::PushFont( GetAndromedaGUI()->GetBoldSegoeFont() );
|
||||
ImGui::TextColored( ImVec4( 1.f , 1.f , 1.f , 0.95f ) , "%s" , szTitle );
|
||||
ImGui::PopFont();
|
||||
|
||||
ImGui::Dummy( ImVec2( ImGui::GetContentRegionAvail().x - 27.f - LeftPadding , 0.f ) );
|
||||
ImGui::SameLine();
|
||||
ImDrawList* pDraw = ImGui::GetWindowDrawList();
|
||||
|
||||
const auto Ret = ImGui::Checkbox( szStrID , &SettingsItem );
|
||||
const ImVec2 Pos = ImGui::GetCursorScreenPos();
|
||||
|
||||
return Ret;
|
||||
const float RightEdge = ImGui::GetWindowPos().x + ImGui::GetWindowContentRegionMax().x;
|
||||
|
||||
pDraw->AddRectFilled( Pos , ImVec2( Pos.x + 28.f , Pos.y + 2.f ) , AccentU32( m_Accent ) );
|
||||
pDraw->AddRectFilled( ImVec2( Pos.x + 28.f , Pos.y + 2.f ) , ImVec2( RightEdge , Pos.y + 2.f ) , IM_COL32( 255 , 255 , 255 , 18 ) );
|
||||
|
||||
ImGui::SetCursorPosY( ImGui::GetCursorPosY() + 12.f );
|
||||
|
||||
ImGui::Indent( 4.f );
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderComboBox( const char* szTitle , const char* szStrID , int& v , const char* Items[] , int ItemsCount ) -> bool
|
||||
auto CAndromedaMenu::EndPanel() -> void
|
||||
{
|
||||
ImGui::Unindent( 4.f );
|
||||
|
||||
ImGui::SetCursorPosY( ImGui::GetCursorPosY() + 14.f );
|
||||
|
||||
ImGui::PopID();
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::Toggle( const char* szLabel , const char* szStrID , bool& bValue ) -> bool
|
||||
{
|
||||
if ( szTitle )
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::Text( szTitle );
|
||||
}
|
||||
ImGui::TextUnformatted( szLabel );
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PushItemWidth( -1.f );
|
||||
const auto Ret = ImGui::Combo( szStrID , &v , Items , ItemsCount );
|
||||
ImGui::SetCursorPosX( ImGui::GetCursorPosX() + ImGui::GetContentRegionAvail().x - 40.f );
|
||||
|
||||
return ToggleSwitch( szStrID , &bValue , m_Accent );
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::SliderInt( const char* szLabel , const char* szStrID , int& iValue , int iMin , int iMax , const char* szFormat ) -> bool
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::TextUnformatted( szLabel );
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PushItemWidth( ImGui::GetContentRegionAvail().x - 10.f );
|
||||
const bool bRet = ImGui::SliderInt( szStrID , &iValue , iMin , iMax , szFormat );
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
return Ret;
|
||||
return bRet;
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderColorEdit( const char* szTitle , const char* szStrID , float* Color ) -> bool
|
||||
auto CAndromedaMenu::SliderFloat( const char* szLabel , const char* szStrID , float& fValue , float fMin , float fMax , const char* szFormat ) -> bool
|
||||
{
|
||||
if ( szTitle )
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::Text( szTitle );
|
||||
}
|
||||
ImGui::TextUnformatted( szLabel );
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
const auto Ret = ImGui::ColorEdit4( szStrID , Color );
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::RenderSliderInt( const char* szTitle , const char* szStrID , int& Value , int Min , int Max ) -> bool
|
||||
{
|
||||
if ( szTitle )
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::Text( szTitle );
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PushItemWidth( -1.f );
|
||||
const auto Ret = ImGui::SliderInt( szStrID , &Value , Min , Max );
|
||||
ImGui::PushItemWidth( ImGui::GetContentRegionAvail().x - 10.f );
|
||||
const bool bRet = ImGui::SliderFloat( szStrID , &fValue , fMin , fMax , szFormat );
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
return Ret;
|
||||
return bRet;
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::Combo( const char* szLabel , const char* szStrID , int& iValue , const char* Items[] , int iItemsCount ) -> bool
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::TextUnformatted( szLabel );
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PushItemWidth( ImGui::GetContentRegionAvail().x - 10.f );
|
||||
const bool bRet = ImGui::Combo( szStrID , &iValue , Items , iItemsCount );
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
auto CAndromedaMenu::ColorEdit( const char* szLabel , const char* szStrID , float* flColor ) -> bool
|
||||
{
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::TextUnformatted( szLabel );
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PushItemWidth( ImGui::GetContentRegionAvail().x - 10.f );
|
||||
const bool bRet = ImGui::ColorEdit4( szStrID , flColor , ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_NoInputs );
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
auto GetAndromedaMenu() -> CAndromedaMenu*
|
||||
|
||||
@@ -2,16 +2,50 @@
|
||||
|
||||
#include <Common/Common.hpp>
|
||||
|
||||
#include <ImGui/imgui.h>
|
||||
|
||||
class CAndromedaMenu final
|
||||
{
|
||||
public:
|
||||
auto OnRenderMenu() -> void;
|
||||
|
||||
private:
|
||||
auto RenderCheckBox( const char* szTitle , const char* szStrID , bool& SettingsItem ) -> bool;
|
||||
auto RenderComboBox( const char* szTitle , const char* szStrID , int& v , const char* Items[] , int ItemsCount ) -> bool;
|
||||
auto RenderColorEdit( const char* szTitle , const char* szStrID , float* Color ) -> bool;
|
||||
auto RenderSliderInt( const char* szTitle , const char* szStrID , int& Value , int Min , int Max ) -> bool;
|
||||
enum ETab : int32_t
|
||||
{
|
||||
TAB_VISUALS,
|
||||
TAB_GLOW,
|
||||
TAB_SKINS,
|
||||
TAB_MUSIC,
|
||||
TAB_CONFIG,
|
||||
};
|
||||
|
||||
private:
|
||||
auto RenderVisualPanel() -> void;
|
||||
auto RenderGlowPanel() -> void;
|
||||
auto RenderSkinPanel() -> void;
|
||||
auto RenderMusicPanel() -> void;
|
||||
auto RenderConfigPanel() -> void;
|
||||
|
||||
auto RenderSidebar() -> void;
|
||||
|
||||
auto TabButton( const char* szIcon , const char* szLabel , const int iTab , const ImVec2& Size ) -> void;
|
||||
auto Toggle( const char* szLabel , const char* szStrID , bool& bValue ) -> bool;
|
||||
auto SliderInt( const char* szLabel , const char* szStrID , int& iValue , int iMin , int iMax , const char* szFormat = "%d" ) -> bool;
|
||||
auto SliderFloat( const char* szLabel , const char* szStrID , float& fValue , float fMin , float fMax , const char* szFormat = "%.2f" ) -> bool;
|
||||
auto Combo( const char* szLabel , const char* szStrID , int& iValue , const char* Items[] , int iItemsCount ) -> bool;
|
||||
auto ColorEdit( const char* szLabel , const char* szStrID , float* flColor ) -> bool;
|
||||
auto BeginPanel( const char* szTitle ) -> void;
|
||||
auto EndPanel() -> void;
|
||||
|
||||
private:
|
||||
int m_iSelectedTab = TAB_VISUALS;
|
||||
int m_iCurrentComboId = 0;
|
||||
int m_iSelectedItemIdx = -1;
|
||||
int m_iSelectedSkinIdx = 0;
|
||||
int m_iSelectedMusicIdx = -1;
|
||||
|
||||
private:
|
||||
ImVec4 m_Accent = ImVec4( 0.78f , 0.18f , 0.29f , 1.00f );
|
||||
};
|
||||
|
||||
auto GetAndromedaMenu() -> CAndromedaMenu*;
|
||||
@@ -20,6 +20,15 @@ namespace Settings
|
||||
inline auto GlowEnemy = true;
|
||||
|
||||
inline auto PlayerBoxType = 3;
|
||||
inline auto GlassyBox = false;
|
||||
inline auto GlassOpacity = 55;
|
||||
}
|
||||
namespace Chams
|
||||
{
|
||||
inline auto Enabled = false;
|
||||
inline auto IgnoreZ = true;
|
||||
inline ImVec4 Visible = { 0.f , 0.40f , 1.f , 1.f };
|
||||
inline ImVec4 Occluded = { 1.f , 0.f , 0.75f , 1.f };
|
||||
}
|
||||
namespace Menu
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <CS2/Hook/Hook_IsLoadoutAllowed.hpp>
|
||||
#include <CS2/Hook/Hook_EquipItemInLoadout.hpp>
|
||||
#include <CS2/Hook/Hook_DrawGlow.hpp>
|
||||
#include <CS2/Hook/Hook_OnDrawObject.hpp>
|
||||
|
||||
static CHook_Loader g_CHook_Loader{};
|
||||
|
||||
@@ -76,6 +77,7 @@ auto CHook_Loader::InstallSecondHook() -> bool
|
||||
{ { XorStr("Hook::IsLoadoutAllowed") , XorStr("48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B E9 48 8B 0D ? ? ? ? ? ? ? FF 50") , CLIENT_DLL } ,&Hook_IsLoadoutAllowed , reinterpret_cast<LPVOID*>(&IsLoadoutAllowed_o) , true , true } ,
|
||||
{ { XorStr( "Hook::EquipItemInLoadout" ) , XorStr( "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 89 54 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC ? 0F B7 FA" ) , CLIENT_DLL } ,& Hook_EquipItemInLoadout , reinterpret_cast<LPVOID*>( &EquipItemInLoadout_o ) },
|
||||
{ { XorStr( "Hook::DrawGlow" ) , XorStr( "40 53 48 83 EC 20 48 8B 54" ) , CLIENT_DLL } , &Hook_DrawGlow , reinterpret_cast<LPVOID*>( &DrawGlow_o ) },
|
||||
{ { XorStr( "Hook::OnDrawObject" ) , XorStr( "48 8B C4 48 89 50 ? 53" ) , SCENESYSTEM_DLL } , &Hook_OnDrawObject , reinterpret_cast<LPVOID*>( &OnDrawObject_o ) , true , true },
|
||||
};
|
||||
|
||||
return InstallHooks();
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#include "Hook_OnDrawObject.hpp"
|
||||
|
||||
#include <AndromedaClient/Features/CChams/CChams.hpp>
|
||||
|
||||
auto Hook_OnDrawObject( void* pAnimatableSceneObjectDesc , void* pDx11 , void* pMeshData , int nDataCount , void* pSceneView , void* pSceneLayer , void* pUnk , void* pUnk2 ) -> void
|
||||
{
|
||||
if ( GetChams()->OnDrawObject( pAnimatableSceneObjectDesc , pDx11 , pMeshData , nDataCount , pSceneView , pSceneLayer , pUnk , pUnk2 ) )
|
||||
return;
|
||||
|
||||
OnDrawObject_o( pAnimatableSceneObjectDesc , pDx11 , pMeshData , nDataCount , pSceneView , pSceneLayer , pUnk , pUnk2 );
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <Common/Common.hpp>
|
||||
|
||||
auto Hook_OnDrawObject( void* pAnimatableSceneObjectDesc , void* pDx11 , void* pMeshData , int nDataCount , void* pSceneView , void* pSceneLayer , void* pUnk , void* pUnk2 ) -> void;
|
||||
|
||||
using OnDrawObject_t = decltype( &Hook_OnDrawObject );
|
||||
inline OnDrawObject_t OnDrawObject_o = nullptr;
|
||||
@@ -27,6 +27,7 @@ auto CFunctionList::OnInit() -> bool
|
||||
&C_BaseEntity_GetBoneIdByName,
|
||||
&C_EconItemView_GetBasePlayerWeaponVData,
|
||||
&KeyValues3_LoadKV3,
|
||||
&ClientKeyValues3_SetTypeKV3,
|
||||
&IGamePhysicsQuery_TraceShape,
|
||||
&CCSGOInput_GetViewAngles,
|
||||
&CCSGOInput_SetViewAngles,
|
||||
|
||||
@@ -97,6 +97,7 @@ public:
|
||||
CBasePattern C_BaseEntity_GetBoneIdByName = { VmpStr( "C_BaseEntity::GetBoneIdByName" ) , VmpStr( "E8 ? ? ? ? 48 8B CF 85 C0 78 ? 44 8B C0" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
|
||||
CBasePattern C_EconItemView_GetBasePlayerWeaponVData = { VmpStr( "C_EconItemView::GetBasePlayerWeaponVData" ) , VmpStr( "48 81 EC ? ? ? ? 48 85 C9 75 ? 33 C0 48 81 C4 ? ? ? ? C3 48 89 9C 24" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
|
||||
CBasePattern KeyValues3_LoadKV3 = { VmpStr( "KeyValues3::LoadKV3" ) , VmpStr( "?LoadKV3@@YA_NPEAVKeyValues3@@PEAVCUtlString@@PEBDAEBUKV3ID_t@@2I@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
|
||||
CBasePattern ClientKeyValues3_SetTypeKV3 = { VmpStr( "CKeyValues3::SetTypeKV3" ) , VmpStr( "40 53 48 83 EC 20 48 8B 01 48 8B D9 44" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
|
||||
CBasePattern IGamePhysicsQuery_TraceShape = { VmpStr( "IGamePhysicsQuery::TraceShape" ) , VmpStr( "48 89 54 24 10 48 89 4C 24 08 55 53 56 57 41 56 41 57 48 8D AC 24 ? ? ? ? B8 E8 24 00 00 E8" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
|
||||
CBasePattern CCSGOInput_GetViewAngles = { VmpStr( "CCSGOInput::GetViewAngles" ) , VmpStr( "4C 8B C1 85 D2 74 ? 48 8D 05" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
|
||||
CBasePattern CCSGOInput_SetViewAngles = { VmpStr( "CCSGOInput::SetViewAngles" ) , VmpStr( "85 D2 75 ? 48 63 81" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
|
||||
|
||||
@@ -76,6 +76,7 @@ DECLARATE_CS2_FUNCTION_SDK_FASTCALL( void , CSkeletonInstance_CalcWorldSpaceBone
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( int , C_BaseEntity_GetBoneIdByName , ( C_BaseEntity* pC_BaseEntity , const char* szName ) , ( C_BaseEntity* , const char* ) , ( pC_BaseEntity , szName ) );
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( CCSWeaponBaseVData* , C_EconItemView_GetBasePlayerWeaponVData , ( C_EconItemView* pC_EconItemView ) , ( C_EconItemView* ) , ( pC_EconItemView ) );
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( bool , KeyValues3_LoadKV3 , ( KeyValues3* pKV3 , const char* vmatBuffer , KV3ID_t* pID ) , ( KeyValues3* , CUtlString* , const char* , KV3ID_t* , const char* , unsigned int ) , ( pKV3 , nullptr , vmatBuffer , pID , "" , 0 ) );
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( KeyValues3* , ClientKeyValues3_SetTypeKV3 , ( KeyValues3* pKV3 , unsigned int iType , unsigned int iUnk ) , ( KeyValues3* , unsigned int , unsigned int ) , ( pKV3 , iType , iUnk ) );
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( bool , IGamePhysicsQuery_TraceShape , ( IVPhysics2World** pIVPhysics2World , const Ray_t& ray , const Vector3& vecAbsStart , const Vector3& vecAbsEnd , const CTraceFilter* pFilter , CGameTrace* pTrace ) , ( IVPhysics2World** , const Ray_t& , const Vector3& , const Vector3& , const CTraceFilter* , CGameTrace* ) , ( pIVPhysics2World , ray , vecAbsStart , vecAbsEnd , pFilter , pTrace ) );
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( QAngle* , CCSGOInput_GetViewAngles , ( CCSGOInput* pCCSGOInput , int32_t slot ) , ( CCSGOInput* , int32_t ) , ( pCCSGOInput , slot ) );
|
||||
DECLARATE_CS2_FUNCTION_SDK_FASTCALL( void , CCSGOInput_SetViewAngles , ( CCSGOInput* pCCSGOInput , int32_t slot , QAngle& Angles ) , ( CCSGOInput* , int32_t , QAngle& ) , ( pCCSGOInput , slot , Angles ) );
|
||||
|
||||
@@ -0,0 +1,438 @@
|
||||
#pragma once
|
||||
|
||||
unsigned char icon[] = {
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x00, 0x03, 0x00, 0x60, 0x44, 0x53, 0x49, 0x47,
|
||||
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1B, 0x0C, 0x00, 0x00, 0x00, 0x08, 0x4F, 0x53, 0x2F, 0x32,
|
||||
0x59, 0xF5, 0x52, 0xBA, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, 0x00, 0x60, 0x63, 0x6D, 0x61, 0x70,
|
||||
0x79, 0x69, 0x57, 0x11, 0x00, 0x00, 0x02, 0x34, 0x00, 0x00, 0x01, 0x7A, 0x63, 0x76, 0x74, 0x20,
|
||||
0x00, 0x21, 0x02, 0x79, 0x00, 0x00, 0x03, 0xB8, 0x00, 0x00, 0x00, 0x04, 0x67, 0x61, 0x73, 0x70,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x00, 0x08, 0x67, 0x6C, 0x79, 0x66,
|
||||
0xD3, 0x3B, 0xF0, 0x4C, 0x00, 0x00, 0x03, 0xF4, 0x00, 0x00, 0x14, 0x70, 0x68, 0x65, 0x61, 0x64,
|
||||
0x21, 0x18, 0xAA, 0xE2, 0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61,
|
||||
0x06, 0x1B, 0x03, 0x00, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x24, 0x68, 0x6D, 0x74, 0x78,
|
||||
0x39, 0x96, 0x04, 0x7E, 0x00, 0x00, 0x01, 0xC8, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0x6F, 0x63, 0x61,
|
||||
0x3C, 0xD0, 0x41, 0x5C, 0x00, 0x00, 0x03, 0xBC, 0x00, 0x00, 0x00, 0x38, 0x6D, 0x61, 0x78, 0x70,
|
||||
0x00, 0x6A, 0x00, 0xB7, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x00, 0x20, 0x6E, 0x61, 0x6D, 0x65,
|
||||
0x49, 0xEE, 0x11, 0x29, 0x00, 0x00, 0x18, 0x64, 0x00, 0x00, 0x02, 0x3D, 0x70, 0x6F, 0x73, 0x74,
|
||||
0x73, 0x79, 0xC8, 0x7E, 0x00, 0x00, 0x1A, 0xA4, 0x00, 0x00, 0x00, 0x60, 0x70, 0x72, 0x65, 0x70,
|
||||
0x68, 0x06, 0x8C, 0x85, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x51, 0x9A, 0x8D, 0x18, 0x5F, 0x0F, 0x3C, 0xF5, 0x00, 0x0B, 0x03, 0xE8,
|
||||
0x00, 0x00, 0x00, 0x00, 0xDF, 0x78, 0x33, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x78, 0x33, 0xB0,
|
||||
0x00, 0x21, 0xFF, 0xC6, 0x02, 0xE8, 0x02, 0xD7, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0xD7, 0xFF, 0xC6, 0x00, 0x5A, 0x03, 0x1E,
|
||||
0x00, 0x00, 0x00, 0x00, 0x02, 0xE8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1B, 0x00, 0xB4,
|
||||
0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x31, 0x01, 0x90, 0x00, 0x05,
|
||||
0x00, 0x00, 0x02, 0x8A, 0x02, 0xBC, 0x00, 0x00, 0x00, 0x8C, 0x02, 0x8A, 0x02, 0xBC, 0x00, 0x00,
|
||||
0x01, 0xE0, 0x00, 0x31, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x43, 0x4C, 0x47, 0x52, 0x00, 0x40, 0x00, 0x00, 0x00, 0xA0, 0x03, 0x20, 0xFF, 0x38,
|
||||
0x00, 0x5A, 0x02, 0xD7, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x50, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x01, 0x6C, 0x00, 0x21, 0x00, 0xFA, 0x00, 0x00,
|
||||
0x01, 0x4D, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x02, 0x51, 0x00, 0x36,
|
||||
0x03, 0x1E, 0x00, 0x36, 0x03, 0x10, 0x00, 0x36, 0x01, 0xF5, 0x00, 0x36, 0x01, 0xEF, 0x00, 0x33,
|
||||
0x02, 0xD7, 0x00, 0x36, 0x02, 0x7A, 0x00, 0x36, 0x02, 0x50, 0x00, 0x35, 0x02, 0xAE, 0x00, 0x36,
|
||||
0x02, 0x87, 0x00, 0x36, 0x02, 0x80, 0x00, 0x33, 0x02, 0xCF, 0x00, 0x35, 0x02, 0x09, 0x00, 0x35,
|
||||
0x02, 0x06, 0x00, 0x33, 0x01, 0xF1, 0x00, 0x33, 0x02, 0x5C, 0x00, 0x35, 0x02, 0x05, 0x00, 0x36,
|
||||
0x02, 0x76, 0x00, 0x33, 0x02, 0x73, 0x00, 0x37, 0x02, 0xD7, 0x00, 0x37, 0x02, 0x4C, 0x00, 0x36,
|
||||
0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1C,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1C,
|
||||
0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x12, 0x00, 0x10, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00,
|
||||
0x00, 0x0D, 0x00, 0x20, 0x00, 0x4C, 0x00, 0x56, 0x00, 0x6C, 0x00, 0x76, 0x00, 0xA0, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x20, 0x00, 0x41, 0x00, 0x4E, 0x00, 0x61, 0x00, 0x6E,
|
||||
0x00, 0xA0, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xF6, 0xFF, 0xE4, 0xFF, 0xC4, 0xFF, 0xC3, 0xFF, 0xA4,
|
||||
0xFF, 0xA3, 0xFF, 0x7A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 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, 0x05,
|
||||
0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x00, 0x11, 0x12, 0x13, 0x14,
|
||||
0x15, 0x16, 0x17, 0x18, 0x19, 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,
|
||||
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, 0x1A, 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,
|
||||
0xB8, 0x01, 0xFF, 0x85, 0xB0, 0x04, 0x8D, 0x00, 0x00, 0x21, 0x02, 0x79, 0x00, 0x00, 0x00, 0x14,
|
||||
0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x5C, 0x01, 0x2C, 0x01, 0x58, 0x01, 0x92,
|
||||
0x02, 0x48, 0x02, 0xF8, 0x03, 0xB6, 0x04, 0x30, 0x04, 0xAE, 0x04, 0xE8, 0x05, 0xE4, 0x06, 0x4E,
|
||||
0x07, 0x04, 0x07, 0x48, 0x07, 0x8C, 0x07, 0xEC, 0x08, 0x76, 0x08, 0xB8, 0x09, 0x26, 0x09, 0xE0,
|
||||
0x0A, 0x38, 0x0A, 0x38, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x01, 0x2A, 0x02, 0x9A, 0x00, 0x03,
|
||||
0x00, 0x07, 0x00, 0x00, 0x33, 0x11, 0x21, 0x11, 0x27, 0x33, 0x11, 0x23, 0x21, 0x01, 0x09, 0xE8,
|
||||
0xC7, 0xC7, 0x02, 0x9A, 0xFD, 0x66, 0x21, 0x02, 0x58, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x36,
|
||||
0x00, 0x00, 0x02, 0x1D, 0x02, 0x45, 0x00, 0x10, 0x00, 0x2D, 0x00, 0x00, 0x01, 0x34, 0x22, 0x06,
|
||||
0x07, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x17, 0x1E, 0x01, 0x17, 0x33, 0x03, 0x36, 0x33,
|
||||
0x32, 0x17, 0x1E, 0x01, 0x15, 0x14, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x2E,
|
||||
0x01, 0x27, 0x2E, 0x01, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x01, 0x28, 0x0A, 0x8A, 0x0C, 0x0D,
|
||||
0x0B, 0x08, 0x08, 0x0C, 0x13, 0x15, 0x57, 0x1F, 0x0E, 0x62, 0x5F, 0x07, 0x05, 0x63, 0x5A, 0x2F,
|
||||
0x07, 0x19, 0x1C, 0x2F, 0x3D, 0x18, 0x37, 0x34, 0x0F, 0x05, 0x1E, 0x06, 0x14, 0x40, 0x0F, 0x21,
|
||||
0x22, 0x0C, 0x01, 0x12, 0xDF, 0x8D, 0x11, 0x15, 0x25, 0x1D, 0x09, 0x0A, 0x20, 0x2D, 0x1A, 0x1D,
|
||||
0x30, 0x01, 0x01, 0xB2, 0x5F, 0x63, 0x5B, 0x53, 0x41, 0x37, 0x12, 0x3D, 0x1E, 0x32, 0x15, 0x08,
|
||||
0x07, 0x02, 0x0D, 0x03, 0x08, 0x3B, 0x18, 0x34, 0x46, 0x47, 0x38, 0x15, 0x00, 0x03, 0x00, 0x36,
|
||||
0xFF, 0xC6, 0x02, 0xE8, 0x02, 0x78, 0x00, 0x17, 0x00, 0x85, 0x00, 0x97, 0x00, 0x00, 0x01, 0x26,
|
||||
0x23, 0x22, 0x06, 0x07, 0x06, 0x15, 0x14, 0x16, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x3E,
|
||||
0x01, 0x35, 0x34, 0x27, 0x2E, 0x01, 0x27, 0x36, 0x33, 0x32, 0x16, 0x17, 0x16, 0x17, 0x16, 0x17,
|
||||
0x16, 0x33, 0x32, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x15, 0x14, 0x17,
|
||||
0x16, 0x33, 0x16, 0x15, 0x14, 0x07, 0x0E, 0x01, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x15, 0x14,
|
||||
0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x23, 0x22, 0x07, 0x0E, 0x01, 0x15, 0x14, 0x07, 0x06, 0x23,
|
||||
0x22, 0x35, 0x34, 0x27, 0x26, 0x22, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x35,
|
||||
0x34, 0x27, 0x2E, 0x01, 0x27, 0x26, 0x27, 0x2E, 0x01, 0x34, 0x36, 0x37, 0x36, 0x33, 0x32, 0x36,
|
||||
0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x33, 0x32,
|
||||
0x37, 0x36, 0x37, 0x36, 0x17, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x15, 0x14, 0x07, 0x06, 0x23,
|
||||
0x22, 0x27, 0x26, 0x35, 0x34, 0x36, 0x01, 0xE0, 0x29, 0x2A, 0x38, 0x5F, 0x1A, 0x16, 0x38, 0x33,
|
||||
0x1B, 0x37, 0x0C, 0x11, 0x1C, 0x1F, 0x3A, 0x3F, 0x0A, 0x0B, 0x40, 0xA5, 0x0D, 0x28, 0x1A, 0x13,
|
||||
0x09, 0x0D, 0x06, 0x05, 0x22, 0x18, 0x08, 0x07, 0x09, 0x10, 0x0D, 0x16, 0x21, 0x1D, 0x0C, 0x04,
|
||||
0x0B, 0x0D, 0x0F, 0x31, 0x2D, 0x0C, 0x0E, 0x07, 0x0B, 0x08, 0x08, 0x1D, 0x1F, 0x1A, 0x10, 0x0B,
|
||||
0x0A, 0x07, 0x09, 0x18, 0x15, 0x0E, 0x12, 0x14, 0x21, 0x4D, 0x22, 0x1B, 0x0C, 0x1E, 0x0E, 0x1A,
|
||||
0x1F, 0x1B, 0x0B, 0x07, 0x09, 0x08, 0x0B, 0x0A, 0x11, 0x10, 0x0B, 0x06, 0x06, 0x0A, 0x0E, 0x11,
|
||||
0x09, 0x0C, 0x09, 0x0B, 0x07, 0x0A, 0x15, 0x22, 0x1C, 0x10, 0x10, 0x0B, 0x07, 0x09, 0x16, 0x20,
|
||||
0x05, 0x05, 0x16, 0x1B, 0x12, 0x16, 0x1A, 0x1D, 0x20, 0x2D, 0x15, 0x2C, 0x22, 0x13, 0x38, 0x22,
|
||||
0x01, 0xD6, 0x12, 0x3B, 0x35, 0x2C, 0x2E, 0x34, 0x5D, 0x1E, 0x10, 0x03, 0x01, 0x0E, 0x1A, 0x5F,
|
||||
0x3B, 0x2C, 0x1C, 0x1F, 0x45, 0xA6, 0x09, 0x05, 0x0A, 0x0D, 0x14, 0x11, 0x0D, 0x09, 0x06, 0x0B,
|
||||
0x21, 0x1D, 0x11, 0x08, 0x21, 0x0E, 0x03, 0x08, 0x19, 0x1F, 0x02, 0x4A, 0x3B, 0x0C, 0x03, 0x0F,
|
||||
0x12, 0x19, 0x05, 0x06, 0x0E, 0x0C, 0x11, 0x1C, 0x1C, 0x1D, 0x0A, 0x09, 0x0A, 0x08, 0x0B, 0x09,
|
||||
0x10, 0x12, 0x13, 0x34, 0x0B, 0x10, 0x0C, 0x12, 0x21, 0x1E, 0x18, 0x0F, 0x0D, 0x07, 0x06, 0x07,
|
||||
0x19, 0x16, 0x0E, 0x01, 0x02, 0x10, 0x0A, 0x15, 0x36, 0x14, 0x0A, 0x10, 0x0E, 0x16, 0x1B, 0x06,
|
||||
0x04, 0x0C, 0x0E, 0x11, 0x19, 0x16, 0x25, 0x0A, 0x07, 0x0B, 0x0F, 0x16, 0x14, 0xE0, 0x0B, 0x0D,
|
||||
0x0E, 0x35, 0x1F, 0x38, 0x23, 0x0F, 0x0A, 0x1F, 0x40, 0x20, 0x37, 0x00, 0x00, 0x01, 0x00, 0x36,
|
||||
0x00, 0x9B, 0x02, 0xDB, 0x01, 0x90, 0x00, 0x1A, 0x00, 0x00, 0x12, 0x36, 0x33, 0x32, 0x04, 0x33,
|
||||
0x32, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x14, 0x16, 0x15, 0x14, 0x06, 0x07, 0x06, 0x23,
|
||||
0x22, 0x24, 0x27, 0x26, 0x35, 0x36, 0x1A, 0x07, 0x06, 0x01, 0x28, 0x05, 0x04, 0x96, 0x87, 0x12,
|
||||
0x05, 0x05, 0x11, 0x02, 0x01, 0x33, 0x82, 0x8A, 0x12, 0x0E, 0xFE, 0xC6, 0x07, 0x05, 0x01, 0x76,
|
||||
0x1A, 0xA8, 0x55, 0x4F, 0x03, 0x09, 0x15, 0x02, 0x07, 0x01, 0x0B, 0x21, 0x4A, 0x50, 0xB2, 0x0C,
|
||||
0x08, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x36, 0x00, 0x8E, 0x01, 0xBE, 0x00, 0xD5, 0x00, 0x0E,
|
||||
0x00, 0x1C, 0x00, 0x27, 0x00, 0x00, 0x3E, 0x01, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06,
|
||||
0x23, 0x22, 0x27, 0x26, 0x35, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x27,
|
||||
0x26, 0x35, 0x34, 0x17, 0x35, 0x34, 0x32, 0x1D, 0x01, 0x06, 0x23, 0x22, 0x27, 0x26, 0x36, 0x10,
|
||||
0x0D, 0x16, 0x0B, 0x08, 0x06, 0x0C, 0x17, 0x0D, 0x07, 0x09, 0xA8, 0x0E, 0x0F, 0x0D, 0x1D, 0x1C,
|
||||
0x11, 0x14, 0x09, 0x09, 0xAE, 0x3E, 0x03, 0x17, 0x07, 0x09, 0x13, 0xC5, 0x10, 0x11, 0x0D, 0x05,
|
||||
0x06, 0x0A, 0x14, 0x07, 0x07, 0x16, 0x12, 0x11, 0x19, 0x0B, 0x0F, 0x13, 0x0D, 0x0E, 0x04, 0x06,
|
||||
0x07, 0x08, 0x20, 0x1F, 0x08, 0x1F, 0x03, 0x07, 0x00, 0x09, 0x00, 0x33, 0x00, 0x94, 0x01, 0xBD,
|
||||
0x02, 0x1E, 0x00, 0x0F, 0x00, 0x1D, 0x00, 0x2D, 0x00, 0x36, 0x00, 0x42, 0x00, 0x51, 0x00, 0x65,
|
||||
0x00, 0x72, 0x00, 0x82, 0x00, 0x00, 0x13, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06,
|
||||
0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x22,
|
||||
0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22,
|
||||
0x27, 0x26, 0x35, 0x34, 0x04, 0x36, 0x32, 0x16, 0x14, 0x06, 0x23, 0x22, 0x26, 0x37, 0x36, 0x33,
|
||||
0x32, 0x16, 0x15, 0x14, 0x06, 0x22, 0x26, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x14,
|
||||
0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x05, 0x3E, 0x03, 0x33, 0x37, 0x17, 0x1E, 0x01,
|
||||
0x17, 0x1E, 0x01, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15,
|
||||
0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23,
|
||||
0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x42, 0x0E, 0x14, 0x15, 0x0E, 0x0D, 0x07, 0x0B, 0x1F,
|
||||
0x0D, 0x09, 0x1A, 0xA2, 0x0E, 0x2A, 0x0E, 0x0D, 0x07, 0x0C, 0x3A, 0x0C, 0x07, 0xA9, 0x06, 0x10,
|
||||
0x19, 0x0E, 0x0F, 0x1B, 0x0C, 0x08, 0x1A, 0x0F, 0x06, 0xFE, 0xD4, 0x22, 0x20, 0x1F, 0x1F, 0x10,
|
||||
0x16, 0x1C, 0xA2, 0x0E, 0x15, 0x13, 0x1D, 0x22, 0x1C, 0x22, 0xB0, 0x10, 0x07, 0x0D, 0x10, 0x11,
|
||||
0x11, 0x10, 0x0B, 0x05, 0x12, 0x19, 0xFE, 0xEF, 0x02, 0x04, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03,
|
||||
0x0A, 0x04, 0x0D, 0x15, 0x1F, 0x10, 0x16, 0x1B, 0xB5, 0x07, 0x08, 0x13, 0x1D, 0x1F, 0x10, 0x16,
|
||||
0x1A, 0xAC, 0x0B, 0x0E, 0x13, 0x1C, 0x1D, 0x13, 0x17, 0x0F, 0x09, 0x05, 0x0A, 0x02, 0x0F, 0x0F,
|
||||
0x11, 0x10, 0x0B, 0x06, 0x11, 0x19, 0x05, 0x0E, 0x18, 0x11, 0x0F, 0x11, 0x11, 0x10, 0x0B, 0x07,
|
||||
0x10, 0x1A, 0x1A, 0x11, 0x06, 0x0B, 0x19, 0x07, 0x0D, 0x0F, 0x12, 0x1B, 0x0D, 0x05, 0x1D, 0x0B,
|
||||
0x08, 0x0E, 0x92, 0x1C, 0x21, 0x20, 0x20, 0x1F, 0x31, 0x11, 0x1E, 0x13, 0x0E, 0x22, 0x22, 0x0E,
|
||||
0x10, 0x19, 0x07, 0x0D, 0x0E, 0x2A, 0x0E, 0x0D, 0x07, 0x0C, 0x1E, 0x1D, 0x8A, 0x01, 0x03, 0x01,
|
||||
0x02, 0x01, 0x01, 0x01, 0x03, 0x01, 0x04, 0x1E, 0x1C, 0x1D, 0x1B, 0x12, 0x1D, 0x0F, 0x03, 0x1E,
|
||||
0x15, 0x0E, 0x1B, 0x1B, 0x12, 0x20, 0x07, 0x07, 0x1A, 0x12, 0x14, 0x19, 0x13, 0x0C, 0x07, 0x05,
|
||||
0x0D, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x36, 0x00, 0x9A, 0x02, 0xA1, 0x01, 0xEA, 0x00, 0x0B,
|
||||
0x00, 0x1E, 0x00, 0x42, 0x00, 0x65, 0x00, 0x70, 0x00, 0x7F, 0x00, 0x00, 0x01, 0x26, 0x23, 0x22,
|
||||
0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x14,
|
||||
0x06, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x07, 0x36, 0x33, 0x32, 0x17,
|
||||
0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x16, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x1D, 0x01,
|
||||
0x23, 0x35, 0x34, 0x36, 0x37, 0x36, 0x33, 0x32, 0x36, 0x34, 0x22, 0x27, 0x26, 0x35, 0x34, 0x25,
|
||||
0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x06, 0x22, 0x15, 0x14, 0x17, 0x16, 0x17, 0x1E, 0x01,
|
||||
0x1D, 0x01, 0x22, 0x26, 0x2F, 0x01, 0x26, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x26, 0x23, 0x22,
|
||||
0x26, 0x34, 0x07, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x33, 0x32, 0x35, 0x34, 0x27, 0x3E, 0x01,
|
||||
0x33, 0x32, 0x16, 0x17, 0x16, 0x1D, 0x01, 0x07, 0x21, 0x35, 0x3E, 0x01, 0x01, 0x87, 0x04, 0x14,
|
||||
0x1D, 0x14, 0x0B, 0x0A, 0x0D, 0x44, 0x11, 0x19, 0x18, 0x12, 0x29, 0x01, 0x06, 0x0E, 0x12, 0x18,
|
||||
0x0D, 0x08, 0x0A, 0x15, 0x34, 0xA1, 0x0C, 0x14, 0x1B, 0x0A, 0x0C, 0x0F, 0x10, 0x08, 0x06, 0x01,
|
||||
0x07, 0x08, 0x04, 0x07, 0x6E, 0x07, 0x10, 0x15, 0x0C, 0x0E, 0x1B, 0x12, 0x0E, 0x0C, 0x01, 0xB3,
|
||||
0x0C, 0x14, 0x1C, 0x0D, 0x0D, 0x1A, 0x14, 0x1A, 0x15, 0x18, 0x0E, 0x06, 0x11, 0x43, 0x10, 0x02,
|
||||
0x02, 0x06, 0x03, 0x08, 0x08, 0x01, 0x09, 0x0F, 0x15, 0x5A, 0x15, 0x2F, 0x23, 0x37, 0x79, 0x39,
|
||||
0xBF, 0x1A, 0x22, 0x21, 0x28, 0x25, 0x28, 0x33, 0x02, 0xFE, 0xBE, 0x01, 0x18, 0x01, 0xA2, 0x0E,
|
||||
0x15, 0x0A, 0x14, 0x0F, 0x0C, 0x07, 0x42, 0x09, 0x09, 0x16, 0x3A, 0x18, 0x11, 0x0B, 0x0F, 0x0A,
|
||||
0x05, 0x09, 0x17, 0x34, 0x37, 0x5D, 0x09, 0x0C, 0x0D, 0x16, 0x1B, 0x0B, 0x0C, 0x04, 0x08, 0x08,
|
||||
0x0A, 0x08, 0x0D, 0x14, 0x1C, 0x17, 0x25, 0x1A, 0x0F, 0x0B, 0x0E, 0x09, 0x0A, 0x12, 0x0F, 0x13,
|
||||
0x17, 0x0A, 0x0D, 0x12, 0x10, 0x0F, 0x0D, 0x24, 0x04, 0x07, 0x05, 0x03, 0x0D, 0x09, 0x0E, 0x1C,
|
||||
0x28, 0x03, 0x01, 0x13, 0x1B, 0x15, 0x0D, 0x08, 0x09, 0x0A, 0x09, 0x03, 0x1F, 0x28, 0x6D, 0x0C,
|
||||
0x0D, 0x0B, 0x0D, 0x05, 0x07, 0x40, 0x0C, 0x08, 0x09, 0x14, 0x17, 0x40, 0x09, 0x1B, 0x27, 0x26,
|
||||
0x24, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x00, 0x90, 0x02, 0x40, 0x02, 0x90, 0x00, 0x0D,
|
||||
0x00, 0x18, 0x00, 0x2C, 0x00, 0x54, 0x00, 0x63, 0x00, 0x70, 0x00, 0x87, 0x00, 0x00, 0x01, 0x22,
|
||||
0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x34, 0x23, 0x22,
|
||||
0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x25, 0x37, 0x07, 0x0E, 0x01, 0x07, 0x0E, 0x01, 0x14,
|
||||
0x17, 0x1E, 0x05, 0x33, 0x32, 0x37, 0x36, 0x27, 0x36, 0x3B, 0x01, 0x1F, 0x01, 0x15, 0x14, 0x06,
|
||||
0x0F, 0x01, 0x17, 0x16, 0x15, 0x14, 0x07, 0x0E, 0x01, 0x23, 0x22, 0x27, 0x2E, 0x01, 0x27, 0x26,
|
||||
0x35, 0x34, 0x3F, 0x01, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x3E, 0x01, 0x33, 0x32, 0x07,
|
||||
0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x07, 0x26,
|
||||
0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x36, 0x33, 0x32, 0x16,
|
||||
0x15, 0x14, 0x07, 0x0E, 0x01, 0x07, 0x06, 0x23, 0x22, 0x2F, 0x01, 0x34, 0x35, 0x34, 0x36, 0x37,
|
||||
0x3E, 0x01, 0x01, 0x96, 0x09, 0x1A, 0x17, 0x05, 0x0A, 0x05, 0x02, 0x1B, 0x17, 0xBB, 0x12, 0x0E,
|
||||
0x2E, 0x1F, 0x08, 0x04, 0x23, 0x01, 0x1A, 0x05, 0x16, 0x2A, 0x69, 0x22, 0x16, 0x31, 0x23, 0x03,
|
||||
0x0B, 0x04, 0x07, 0x05, 0x05, 0x03, 0x0C, 0x3B, 0x6B, 0x25, 0x07, 0x28, 0x0F, 0x34, 0x02, 0x2D,
|
||||
0x25, 0x1D, 0x08, 0x04, 0x02, 0x0A, 0x6A, 0x08, 0x0C, 0x08, 0x20, 0x5D, 0x49, 0x4A, 0x3D, 0x39,
|
||||
0x21, 0x25, 0x0D, 0x03, 0x04, 0x0D, 0x1D, 0x18, 0x5A, 0x11, 0x08, 0x47, 0x0F, 0x15, 0x0A, 0x09,
|
||||
0x06, 0x10, 0x23, 0x0A, 0x0C, 0x22, 0xB2, 0x0B, 0x22, 0x09, 0x09, 0x0C, 0x02, 0x0D, 0x25, 0x2D,
|
||||
0x05, 0x09, 0x24, 0x2F, 0x01, 0x04, 0x2D, 0x32, 0x1D, 0x1B, 0x18, 0x03, 0x01, 0x0F, 0x07, 0x07,
|
||||
0x2B, 0x01, 0x37, 0x10, 0x0F, 0x07, 0x04, 0x0D, 0x15, 0x17, 0x14, 0x0E, 0x13, 0xBA, 0x04, 0x26,
|
||||
0x0B, 0x05, 0x11, 0x3D, 0x4D, 0x1F, 0x01, 0x01, 0x33, 0x24, 0x17, 0x49, 0x14, 0x23, 0x03, 0x0A,
|
||||
0x05, 0x06, 0x02, 0x02, 0x28, 0x49, 0xCF, 0x05, 0x02, 0x1D, 0x0E, 0x31, 0x76, 0x31, 0x27, 0x28,
|
||||
0x13, 0x11, 0x0A, 0x06, 0x11, 0x67, 0x19, 0x58, 0x6A, 0x1F, 0x1F, 0x0A, 0x05, 0x3D, 0x3C, 0x03,
|
||||
0x04, 0x04, 0x01, 0x1A, 0x16, 0x2F, 0x7F, 0x12, 0x06, 0x05, 0x1D, 0x07, 0x09, 0x1E, 0x1E, 0x0B,
|
||||
0x0A, 0xF7, 0x11, 0x11, 0x12, 0x0B, 0x0C, 0x02, 0x1E, 0x0A, 0x02, 0x4B, 0x01, 0x2F, 0x23, 0x09,
|
||||
0x05, 0x1E, 0x23, 0x0E, 0x08, 0x08, 0x02, 0x02, 0x02, 0x10, 0x4E, 0x10, 0x12, 0x26, 0x00, 0x00,
|
||||
0x00, 0x03, 0x00, 0x35, 0x00, 0x8A, 0x02, 0x1C, 0x02, 0x70, 0x00, 0x10, 0x00, 0x32, 0x00, 0x52,
|
||||
0x00, 0x00, 0x13, 0x26, 0x23, 0x22, 0x15, 0x14, 0x17, 0x1E, 0x01, 0x33, 0x32, 0x35, 0x34, 0x27,
|
||||
0x26, 0x35, 0x34, 0x37, 0x26, 0x22, 0x07, 0x06, 0x0F, 0x02, 0x0E, 0x01, 0x07, 0x0E, 0x01, 0x0F,
|
||||
0x01, 0x33, 0x32, 0x17, 0x16, 0x17, 0x1E, 0x01, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36,
|
||||
0x35, 0x34, 0x27, 0x26, 0x27, 0x3E, 0x01, 0x33, 0x32, 0x16, 0x33, 0x1E, 0x01, 0x17, 0x1E, 0x01,
|
||||
0x15, 0x14, 0x06, 0x07, 0x0E, 0x01, 0x23, 0x22, 0x26, 0x27, 0x2E, 0x01, 0x27, 0x26, 0x35, 0x34,
|
||||
0x37, 0x36, 0x37, 0x36, 0xA4, 0x32, 0x04, 0x0A, 0x15, 0x16, 0x4D, 0x1F, 0x11, 0x15, 0x20, 0xBE,
|
||||
0x11, 0x0C, 0x05, 0x0E, 0x30, 0x20, 0x02, 0x02, 0x0D, 0x1B, 0x13, 0x09, 0x02, 0x02, 0x52, 0x51,
|
||||
0x04, 0x05, 0x04, 0x03, 0x06, 0x0F, 0x14, 0x08, 0x07, 0x07, 0x0D, 0x11, 0x13, 0x11, 0x1F, 0xFC,
|
||||
0x1C, 0x19, 0x17, 0x04, 0x14, 0x07, 0x2A, 0x23, 0x1D, 0x3E, 0x49, 0x49, 0x42, 0x20, 0x21, 0x28,
|
||||
0x27, 0x20, 0x20, 0x30, 0x33, 0x17, 0x12, 0x01, 0x01, 0x12, 0x26, 0x01, 0x68, 0x32, 0x1B, 0x2D,
|
||||
0x2C, 0x2A, 0x3E, 0x0E, 0x10, 0x0C, 0x14, 0x2C, 0x0F, 0xEC, 0x0C, 0x0E, 0x24, 0x03, 0x01, 0x1E,
|
||||
0x1B, 0x0D, 0x04, 0x03, 0x08, 0x0E, 0x16, 0x07, 0x09, 0x2A, 0x20, 0x0B, 0x01, 0x02, 0x0A, 0x08,
|
||||
0x21, 0x24, 0x32, 0x2F, 0x22, 0x3B, 0x52, 0x0E, 0x07, 0x01, 0x02, 0x07, 0x0E, 0x1F, 0x76, 0x45,
|
||||
0x4A, 0x74, 0x20, 0x0F, 0x07, 0x07, 0x0F, 0x17, 0x35, 0x32, 0x25, 0x20, 0x13, 0x0D, 0x39, 0x26,
|
||||
0x50, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x36, 0x00, 0x9E, 0x02, 0x78, 0x02, 0x30, 0x00, 0x1B,
|
||||
0x00, 0x35, 0x00, 0x44, 0x00, 0x55, 0x00, 0x00, 0x01, 0x26, 0x27, 0x22, 0x26, 0x23, 0x22, 0x06,
|
||||
0x07, 0x0E, 0x01, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x3E, 0x01, 0x37, 0x34,
|
||||
0x36, 0x35, 0x34, 0x26, 0x27, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x1F, 0x01, 0x07, 0x0E, 0x01,
|
||||
0x07, 0x06, 0x23, 0x22, 0x27, 0x2E, 0x01, 0x2F, 0x01, 0x37, 0x36, 0x37, 0x3E, 0x01, 0x17, 0x26,
|
||||
0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x36, 0x33,
|
||||
0x32, 0x17, 0x16, 0x17, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x01, 0xBF,
|
||||
0x1E, 0x3D, 0x06, 0x15, 0x04, 0x21, 0x29, 0x1F, 0x1D, 0x45, 0x04, 0x01, 0x39, 0x4C, 0x5C, 0x3A,
|
||||
0x39, 0x18, 0x52, 0x04, 0x01, 0x49, 0xDC, 0x23, 0x1E, 0x3E, 0x53, 0x1B, 0x56, 0x0F, 0x13, 0x13,
|
||||
0x10, 0x40, 0x1E, 0x4A, 0x57, 0x54, 0x4A, 0x1E, 0x42, 0x10, 0x12, 0x13, 0x10, 0x2E, 0x25, 0x36,
|
||||
0x9D, 0x0B, 0x3C, 0x0D, 0x14, 0x17, 0x0E, 0x1B, 0x1E, 0x0F, 0x11, 0x77, 0x19, 0x14, 0x0B, 0x07,
|
||||
0x45, 0x1D, 0x0B, 0x46, 0x2E, 0x1E, 0x1D, 0x38, 0x01, 0xE2, 0x10, 0x01, 0x01, 0x0C, 0x10, 0x10,
|
||||
0x45, 0x13, 0x02, 0x04, 0x22, 0x31, 0x44, 0x1B, 0x0C, 0x51, 0x10, 0x01, 0x04, 0x01, 0x1A, 0x4F,
|
||||
0x5C, 0x0A, 0x27, 0x0D, 0x55, 0x1D, 0x24, 0x24, 0x1E, 0x44, 0x13, 0x2F, 0x2E, 0x13, 0x46, 0x1E,
|
||||
0x23, 0x24, 0x22, 0x2A, 0x23, 0x1F, 0x80, 0x09, 0x0E, 0x17, 0x1B, 0x1E, 0x0F, 0x0A, 0x0C, 0x0F,
|
||||
0x1F, 0x23, 0x44, 0x0F, 0x01, 0x06, 0x3C, 0x16, 0x1B, 0x2F, 0x45, 0x12, 0x24, 0x3E, 0x41, 0x00,
|
||||
0x00, 0x02, 0x00, 0x36, 0x00, 0xB7, 0x02, 0x51, 0x02, 0x05, 0x00, 0x14, 0x00, 0x25, 0x00, 0x00,
|
||||
0x13, 0x3E, 0x01, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x06, 0x0F, 0x01, 0x17, 0x16, 0x15, 0x14,
|
||||
0x06, 0x22, 0x26, 0x35, 0x34, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26,
|
||||
0x35, 0x34, 0x3F, 0x01, 0x27, 0x26, 0x87, 0x32, 0x1D, 0x08, 0x03, 0x06, 0x16, 0x18, 0x23, 0x41,
|
||||
0x3F, 0x3F, 0x21, 0x0C, 0x9C, 0x01, 0x58, 0x16, 0x14, 0x99, 0x9C, 0x06, 0x08, 0x19, 0x3C, 0x3C,
|
||||
0x3C, 0x3C, 0x01, 0xBA, 0x31, 0x1A, 0x04, 0x0E, 0x0A, 0x09, 0x1C, 0x23, 0x41, 0x3F, 0x3F, 0x07,
|
||||
0x05, 0x1F, 0xA3, 0x07, 0x0A, 0x76, 0x0A, 0x17, 0x97, 0x0A, 0x07, 0xA3, 0x1C, 0x08, 0x0D, 0x3C,
|
||||
0x3D, 0x3B, 0x3C, 0x00, 0x00, 0x0D, 0x00, 0x33, 0x00, 0x94, 0x02, 0x4E, 0x02, 0x18, 0x00, 0x0B,
|
||||
0x00, 0x23, 0x00, 0x2F, 0x00, 0x3B, 0x00, 0x48, 0x00, 0x55, 0x00, 0x60, 0x00, 0x6C, 0x00, 0x7B,
|
||||
0x00, 0x86, 0x00, 0x97, 0x00, 0xA7, 0x00, 0xB3, 0x00, 0x00, 0x01, 0x2F, 0x01, 0x23, 0x22, 0x07,
|
||||
0x06, 0x1D, 0x01, 0x1F, 0x02, 0x01, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x1F, 0x01, 0x11, 0x0E,
|
||||
0x01, 0x07, 0x21, 0x2E, 0x01, 0x27, 0x3D, 0x01, 0x34, 0x37, 0x36, 0x37, 0x36, 0x17, 0x34, 0x36,
|
||||
0x33, 0x32, 0x16, 0x15, 0x14, 0x23, 0x22, 0x27, 0x26, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14,
|
||||
0x2B, 0x01, 0x26, 0x35, 0x34, 0x37, 0x36, 0x17, 0x1E, 0x01, 0x17, 0x15, 0x14, 0x2B, 0x01, 0x26,
|
||||
0x35, 0x34, 0x37, 0x36, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3E,
|
||||
0x01, 0x17, 0x16, 0x15, 0x14, 0x23, 0x22, 0x27, 0x26, 0x35, 0x05, 0x36, 0x33, 0x32, 0x15, 0x14,
|
||||
0x06, 0x23, 0x22, 0x26, 0x27, 0x26, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x06, 0x2B,
|
||||
0x01, 0x2E, 0x01, 0x27, 0x26, 0x3E, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x06, 0x27, 0x26,
|
||||
0x37, 0x36, 0x33, 0x32, 0x16, 0x33, 0x1E, 0x01, 0x15, 0x14, 0x06, 0x07, 0x23, 0x22, 0x26, 0x35,
|
||||
0x34, 0x17, 0x34, 0x26, 0x35, 0x34, 0x33, 0x32, 0x16, 0x33, 0x1E, 0x01, 0x14, 0x06, 0x23, 0x22,
|
||||
0x26, 0x05, 0x36, 0x33, 0x32, 0x17, 0x16, 0x0F, 0x03, 0x27, 0x26, 0x02, 0x19, 0x02, 0xD5, 0x47,
|
||||
0x8E, 0x03, 0x02, 0x02, 0xD8, 0xD8, 0xFE, 0x57, 0x11, 0x73, 0x99, 0x5D, 0x30, 0x19, 0x0A, 0x10,
|
||||
0x05, 0x16, 0x06, 0xFE, 0x27, 0x06, 0x16, 0x05, 0x09, 0x07, 0x1C, 0x05, 0x23, 0x0A, 0x12, 0x0C,
|
||||
0x06, 0x12, 0x02, 0x0A, 0x10, 0x51, 0x04, 0x11, 0x0D, 0x16, 0x1E, 0x07, 0x16, 0x51, 0x04, 0x18,
|
||||
0x0F, 0x09, 0x02, 0x1C, 0x07, 0x16, 0x5C, 0x08, 0x11, 0x13, 0x09, 0x06, 0x08, 0x0B, 0x11, 0x54,
|
||||
0x0A, 0x10, 0x12, 0x14, 0x04, 0x08, 0x0C, 0xFE, 0xC6, 0x0B, 0x07, 0x0E, 0x06, 0x0E, 0x0C, 0x07,
|
||||
0x02, 0x03, 0x56, 0x08, 0x09, 0x0B, 0x14, 0x03, 0x07, 0x10, 0x05, 0x0D, 0x08, 0x01, 0x02, 0x4F,
|
||||
0x0E, 0x0F, 0x0D, 0x10, 0x16, 0x14, 0x08, 0x08, 0x56, 0x04, 0x0E, 0x01, 0x05, 0x02, 0x0E, 0x06,
|
||||
0x06, 0x0B, 0x05, 0x0B, 0x0E, 0x54, 0x01, 0x0A, 0x01, 0x07, 0x03, 0x0E, 0x07, 0x06, 0x0D, 0x0E,
|
||||
0x07, 0xFE, 0xFA, 0x07, 0x6E, 0x6A, 0x0A, 0x08, 0x02, 0x02, 0x76, 0x77, 0x04, 0x05, 0x01, 0x54,
|
||||
0x8B, 0x02, 0x08, 0x08, 0x4B, 0x36, 0x82, 0x02, 0x01, 0x01, 0x4B, 0x02, 0x02, 0x01, 0x04, 0x0B,
|
||||
0x10, 0xFE, 0xBD, 0x05, 0x15, 0x05, 0x05, 0x15, 0x05, 0xA1, 0x11, 0x83, 0x16, 0x12, 0x04, 0x01,
|
||||
0x6E, 0x12, 0x08, 0x07, 0x0F, 0x1D, 0x02, 0x04, 0x24, 0x0A, 0x0D, 0x0A, 0x1C, 0x02, 0x17, 0x08,
|
||||
0x08, 0x09, 0x01, 0x01, 0x07, 0x0B, 0x05, 0x19, 0x02, 0x17, 0x08, 0x0A, 0x08, 0x02, 0x03, 0x15,
|
||||
0x0C, 0x08, 0x05, 0x11, 0x0A, 0x09, 0x05, 0x0A, 0x02, 0x01, 0x19, 0x17, 0x02, 0x05, 0x16, 0x41,
|
||||
0x08, 0x1D, 0x12, 0x08, 0x07, 0x0D, 0x12, 0x08, 0x09, 0x13, 0x0D, 0x07, 0x06, 0x0C, 0x01, 0x07,
|
||||
0x0C, 0x15, 0x02, 0x0E, 0x13, 0x0C, 0x17, 0x03, 0x02, 0x08, 0x07, 0x16, 0x10, 0x01, 0x01, 0x08,
|
||||
0x10, 0x0E, 0x09, 0x02, 0x0F, 0x0B, 0x06, 0x05, 0x03, 0x09, 0x01, 0x0B, 0x01, 0x02, 0x07, 0x20,
|
||||
0x07, 0x08, 0x2F, 0x0A, 0x06, 0x05, 0x13, 0x13, 0x02, 0x01, 0x10, 0x11, 0x00, 0x02, 0x00, 0x35,
|
||||
0xFF, 0xE5, 0x02, 0x95, 0x02, 0x43, 0x00, 0x16, 0x00, 0x47, 0x00, 0x00, 0x01, 0x26, 0x27, 0x22,
|
||||
0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x36, 0x37, 0x36, 0x35, 0x34,
|
||||
0x26, 0x27, 0x26, 0x27, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x17, 0x16, 0x15, 0x14, 0x0F, 0x01,
|
||||
0x17, 0x16, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x2E, 0x01, 0x23,
|
||||
0x22, 0x07, 0x06, 0x07, 0x06, 0x07, 0x22, 0x26, 0x27, 0x2E, 0x01, 0x27, 0x26, 0x35, 0x34, 0x37,
|
||||
0x3E, 0x01, 0x33, 0x32, 0x01, 0x54, 0x19, 0x23, 0x03, 0x08, 0x02, 0x46, 0x27, 0x15, 0x3B, 0x18,
|
||||
0x34, 0x21, 0x1B, 0x10, 0x38, 0x07, 0x0C, 0x11, 0x92, 0x09, 0x1E, 0x27, 0x23, 0x2E, 0x4B, 0x14,
|
||||
0x0D, 0x11, 0x0F, 0x5C, 0x64, 0x06, 0x06, 0x0D, 0x14, 0x0B, 0x11, 0x5A, 0x06, 0x03, 0x3E, 0x27,
|
||||
0x09, 0x05, 0x06, 0x13, 0x08, 0x07, 0x43, 0x2D, 0x21, 0x18, 0x1F, 0x22, 0x14, 0x27, 0x2B, 0x13,
|
||||
0x45, 0x10, 0x0A, 0x01, 0xDA, 0x0E, 0x04, 0x01, 0x40, 0x23, 0x27, 0x49, 0x25, 0x10, 0x06, 0x0A,
|
||||
0x26, 0x4A, 0x1D, 0x1B, 0x12, 0x1B, 0x73, 0x06, 0x0A, 0x0D, 0x45, 0x2F, 0x1E, 0x2F, 0x35, 0x27,
|
||||
0x25, 0x5C, 0x65, 0x09, 0x08, 0x05, 0x03, 0x11, 0x1A, 0x58, 0x05, 0x03, 0x3E, 0x22, 0x03, 0x08,
|
||||
0x06, 0x04, 0x02, 0x06, 0x0C, 0x10, 0x1D, 0x1B, 0x38, 0x46, 0x48, 0x3C, 0x19, 0x33, 0x00, 0x00,
|
||||
0x00, 0x05, 0x00, 0x35, 0x00, 0x65, 0x01, 0xD5, 0x02, 0x77, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x27,
|
||||
0x00, 0x5B, 0x00, 0x89, 0x00, 0x00, 0x01, 0x26, 0x23, 0x22, 0x06, 0x14, 0x16, 0x37, 0x36, 0x16,
|
||||
0x32, 0x35, 0x34, 0x37, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36,
|
||||
0x35, 0x34, 0x27, 0x26, 0x23, 0x22, 0x15, 0x14, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x36,
|
||||
0x33, 0x32, 0x17, 0x1E, 0x01, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x17, 0x16, 0x14, 0x07, 0x0E,
|
||||
0x01, 0x2B, 0x01, 0x15, 0x14, 0x23, 0x22, 0x34, 0x22, 0x14, 0x22, 0x34, 0x22, 0x14, 0x23, 0x22,
|
||||
0x3D, 0x01, 0x23, 0x22, 0x26, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x27, 0x26, 0x35, 0x34, 0x37,
|
||||
0x3E, 0x01, 0x03, 0x35, 0x33, 0x32, 0x16, 0x15, 0x14, 0x16, 0x33, 0x32, 0x14, 0x32, 0x34, 0x32,
|
||||
0x14, 0x32, 0x34, 0x33, 0x32, 0x37, 0x3E, 0x01, 0x35, 0x34, 0x36, 0x3B, 0x01, 0x15, 0x14, 0x07,
|
||||
0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x22, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x26,
|
||||
0x01, 0x15, 0x09, 0x08, 0x05, 0x1A, 0x11, 0x07, 0x0A, 0x06, 0x12, 0x7D, 0x0A, 0x14, 0x19, 0x2E,
|
||||
0x09, 0x08, 0x20, 0x23, 0x0E, 0x0F, 0xF1, 0x1E, 0x13, 0x23, 0x3E, 0x1D, 0x15, 0x0A, 0x21, 0x20,
|
||||
0x41, 0x35, 0x1D, 0x1C, 0x3F, 0x0D, 0x11, 0x06, 0x08, 0x07, 0x08, 0x10, 0x0B, 0x15, 0x21, 0x31,
|
||||
0x1B, 0x0C, 0x1A, 0x1A, 0x1A, 0x0C, 0x1B, 0x31, 0x21, 0x14, 0x0B, 0x11, 0x07, 0x07, 0x08, 0x06,
|
||||
0x13, 0x0E, 0x35, 0x22, 0x14, 0x0E, 0x05, 0x1D, 0x1A, 0x17, 0x1A, 0x1A, 0x1A, 0x13, 0x12, 0x0C,
|
||||
0x0B, 0x12, 0x06, 0x0D, 0x14, 0x07, 0x06, 0x2B, 0x26, 0x0B, 0x04, 0x12, 0x14, 0x12, 0x14, 0x12,
|
||||
0x03, 0x0D, 0x28, 0x2E, 0x03, 0x04, 0x01, 0x4B, 0x0E, 0x27, 0x0E, 0x03, 0x06, 0x08, 0x10, 0x0F,
|
||||
0x10, 0x6B, 0x0A, 0x1C, 0x11, 0x14, 0x09, 0x09, 0x0A, 0x09, 0x18, 0x13, 0x08, 0x0F, 0x2D, 0x28,
|
||||
0x11, 0x18, 0x09, 0x0B, 0xCD, 0x0D, 0x0A, 0x09, 0x36, 0x1B, 0x20, 0x39, 0x1C, 0x07, 0x0A, 0x07,
|
||||
0x08, 0x38, 0x10, 0x0B, 0x05, 0x20, 0x2E, 0x1A, 0x1A, 0x1A, 0x1A, 0x2E, 0x20, 0x05, 0x0B, 0x11,
|
||||
0x1C, 0x11, 0x0D, 0x0E, 0x09, 0x06, 0x17, 0x3A, 0x24, 0x1C, 0x30, 0xFE, 0x83, 0x2A, 0x08, 0x16,
|
||||
0x1C, 0x21, 0x1A, 0x1A, 0x1A, 0x1A, 0x04, 0x04, 0x28, 0x14, 0x10, 0x07, 0x2B, 0x2D, 0x0A, 0x0B,
|
||||
0x1F, 0x1B, 0x04, 0x04, 0x04, 0x04, 0x1E, 0x21, 0x0A, 0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x33,
|
||||
0x00, 0xB1, 0x01, 0xD4, 0x01, 0xDA, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x2D, 0x00, 0x00, 0x13, 0x36,
|
||||
0x3B, 0x01, 0x17, 0x15, 0x14, 0x06, 0x07, 0x06, 0x2B, 0x01, 0x27, 0x35, 0x34, 0x17, 0x36, 0x33,
|
||||
0x32, 0x17, 0x32, 0x15, 0x14, 0x07, 0x06, 0x21, 0x22, 0x27, 0x22, 0x35, 0x34, 0x17, 0x36, 0x33,
|
||||
0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x20, 0x27, 0x26, 0x35, 0x34, 0x39, 0x03, 0x7C, 0x4E,
|
||||
0xCA, 0x06, 0x0A, 0x0E, 0x70, 0x50, 0xBE, 0x03, 0x01, 0xBE, 0xC5, 0x11, 0x08, 0x08, 0x05, 0xFE,
|
||||
0xF4, 0x6E, 0x14, 0x05, 0x0C, 0x09, 0x86, 0xEF, 0x0D, 0x09, 0x0F, 0x14, 0xFE, 0xA6, 0x14, 0x10,
|
||||
0x01, 0xD7, 0x03, 0x02, 0x19, 0x11, 0x0A, 0x02, 0x02, 0x02, 0x18, 0x1A, 0x73, 0x01, 0x01, 0x17,
|
||||
0x16, 0x05, 0x04, 0x01, 0x20, 0x12, 0x74, 0x03, 0x05, 0x04, 0x16, 0x15, 0x04, 0x04, 0x04, 0x04,
|
||||
0x18, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x33, 0x00, 0x63, 0x01, 0xBF, 0x02, 0x77, 0x00, 0x0D,
|
||||
0x00, 0x1D, 0x00, 0x2D, 0x00, 0x00, 0x13, 0x36, 0x3B, 0x01, 0x15, 0x07, 0x06, 0x23, 0x22, 0x2F,
|
||||
0x01, 0x35, 0x3E, 0x01, 0x17, 0x35, 0x33, 0x1E, 0x01, 0x15, 0x14, 0x07, 0x22, 0x0E, 0x01, 0x23,
|
||||
0x06, 0x23, 0x22, 0x27, 0x07, 0x36, 0x33, 0x32, 0x17, 0x32, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22,
|
||||
0x27, 0x26, 0x3D, 0x01, 0x8F, 0x24, 0x1A, 0x1C, 0x39, 0x10, 0x23, 0x1F, 0x09, 0x22, 0x01, 0x31,
|
||||
0xA4, 0x1C, 0x3C, 0x5E, 0x04, 0x01, 0x0A, 0x0F, 0x06, 0x06, 0x19, 0x24, 0x12, 0xFE, 0x07, 0x77,
|
||||
0xE7, 0x0E, 0x04, 0x0E, 0x2F, 0x85, 0x8D, 0x2F, 0x0E, 0x02, 0x66, 0x11, 0xC1, 0x04, 0x02, 0x02,
|
||||
0x04, 0x21, 0x2D, 0x4D, 0x9B, 0xC1, 0x01, 0x61, 0x3E, 0x22, 0x01, 0x02, 0x02, 0x01, 0x02, 0x22,
|
||||
0x01, 0x02, 0x53, 0x50, 0x20, 0x68, 0x68, 0x20, 0x4F, 0x53, 0x00, 0x00, 0x00, 0x02, 0x00, 0x35,
|
||||
0x00, 0x5F, 0x02, 0x27, 0x02, 0x84, 0x00, 0x1E, 0x00, 0x41, 0x00, 0x00, 0x12, 0x34, 0x36, 0x33,
|
||||
0x32, 0x1F, 0x02, 0x1E, 0x01, 0x17, 0x16, 0x15, 0x14, 0x07, 0x0E, 0x01, 0x23, 0x22, 0x3F, 0x01,
|
||||
0x36, 0x34, 0x27, 0x26, 0x2F, 0x01, 0x07, 0x06, 0x23, 0x22, 0x27, 0x36, 0x33, 0x32, 0x15, 0x14,
|
||||
0x07, 0x06, 0x15, 0x14, 0x16, 0x17, 0x16, 0x1F, 0x01, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14,
|
||||
0x0F, 0x01, 0x27, 0x26, 0x27, 0x26, 0x27, 0x2E, 0x01, 0x27, 0x26, 0x35, 0x34, 0xBF, 0x64, 0x05,
|
||||
0x04, 0x02, 0x02, 0x34, 0x36, 0x46, 0x1C, 0x2B, 0x03, 0x04, 0x23, 0x0B, 0x09, 0x0B, 0x03, 0x0E,
|
||||
0x0E, 0x38, 0x6E, 0x21, 0x02, 0x02, 0x04, 0x05, 0xCA, 0x09, 0x04, 0x03, 0x08, 0x0A, 0x0A, 0x1B,
|
||||
0x3B, 0x56, 0x1D, 0x02, 0x02, 0x04, 0x05, 0x64, 0x35, 0x36, 0x02, 0x02, 0x06, 0x06, 0x26, 0x3C,
|
||||
0x6A, 0x14, 0x0B, 0x02, 0x14, 0x0A, 0x66, 0x25, 0x25, 0x08, 0x08, 0x20, 0x1F, 0x2E, 0x2D, 0x0C,
|
||||
0x0C, 0x17, 0x35, 0x10, 0x04, 0x14, 0x38, 0x14, 0x4F, 0x08, 0x02, 0x25, 0x26, 0x05, 0x09, 0x04,
|
||||
0x08, 0x0C, 0x0F, 0x23, 0x18, 0x14, 0x1A, 0x38, 0x04, 0x02, 0x26, 0x25, 0x66, 0x06, 0x05, 0x35,
|
||||
0x34, 0x21, 0x20, 0x08, 0x07, 0x04, 0x05, 0x40, 0x2C, 0x19, 0x19, 0x34, 0x00, 0x04, 0x00, 0x36,
|
||||
0x00, 0x5C, 0x01, 0xCE, 0x02, 0x42, 0x00, 0x14, 0x00, 0x20, 0x00, 0x58, 0x00, 0x63, 0x00, 0x00,
|
||||
0x13, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x22, 0x27, 0x26,
|
||||
0x35, 0x34, 0x37, 0x3E, 0x01, 0x13, 0x2E, 0x01, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x33, 0x32,
|
||||
0x36, 0x27, 0x34, 0x32, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07,
|
||||
0x06, 0x15, 0x14, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x27, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14,
|
||||
0x22, 0x35, 0x34, 0x26, 0x23, 0x22, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x34, 0x37, 0x36, 0x35,
|
||||
0x34, 0x27, 0x26, 0x36, 0x17, 0x16, 0x33, 0x32, 0x36, 0x27, 0x36, 0x33, 0x32, 0x16, 0x1F, 0x01,
|
||||
0x23, 0x35, 0x3E, 0x01, 0xC3, 0x16, 0x10, 0x0D, 0x18, 0x17, 0x2F, 0x0E, 0x0C, 0x17, 0x29, 0x8C,
|
||||
0x28, 0x17, 0x0D, 0x0C, 0x2E, 0xD6, 0x01, 0x0D, 0x08, 0x0A, 0x03, 0x02, 0x16, 0x0B, 0x05, 0x27,
|
||||
0x2E, 0x16, 0x0D, 0x06, 0x02, 0x04, 0x09, 0x0C, 0x06, 0x0A, 0x09, 0x09, 0x09, 0x0A, 0x0B, 0x04,
|
||||
0x04, 0x0B, 0x15, 0x2E, 0x1B, 0x0A, 0x04, 0x01, 0x03, 0x05, 0x08, 0x09, 0x07, 0x06, 0x09, 0x09,
|
||||
0x0A, 0x16, 0x0C, 0x02, 0x04, 0x0C, 0x1A, 0x98, 0x12, 0x04, 0x0C, 0x05, 0x02, 0x01, 0xB6, 0x01,
|
||||
0x54, 0x02, 0x3B, 0x07, 0x06, 0x06, 0x2A, 0x19, 0x18, 0x1F, 0x2E, 0x22, 0x39, 0x39, 0x22, 0x2C,
|
||||
0x1E, 0x1C, 0x18, 0x28, 0xFE, 0x8F, 0x09, 0x0C, 0x0A, 0x08, 0x02, 0x13, 0x06, 0x65, 0x0A, 0x0C,
|
||||
0x09, 0x10, 0x01, 0x11, 0x0A, 0x09, 0x04, 0x07, 0x12, 0x11, 0x03, 0x05, 0x07, 0x09, 0x0D, 0x0F,
|
||||
0x07, 0x02, 0x12, 0x0A, 0x0D, 0x0C, 0x09, 0x14, 0x02, 0x06, 0x13, 0x0D, 0x08, 0x05, 0x08, 0x12,
|
||||
0x14, 0x03, 0x04, 0x28, 0x04, 0x01, 0x12, 0x05, 0x04, 0x1F, 0x3C, 0x59, 0x16, 0x2F, 0x5E, 0x00,
|
||||
0x00, 0x02, 0x00, 0x33, 0x00, 0x70, 0x02, 0x40, 0x01, 0xDB, 0x00, 0x1C, 0x00, 0x2B, 0x00, 0x00,
|
||||
0x13, 0x36, 0x3B, 0x01, 0x16, 0x1F, 0x01, 0x1E, 0x03, 0x15, 0x14, 0x23, 0x22, 0x06, 0x07, 0x06,
|
||||
0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x2E, 0x01, 0x35, 0x34, 0x17, 0x36, 0x3B, 0x01, 0x1E,
|
||||
0x01, 0x15, 0x14, 0x0F, 0x01, 0x23, 0x22, 0x35, 0x34, 0x36, 0x3B, 0x07, 0x4C, 0x4B, 0x0A, 0x16,
|
||||
0x7D, 0x32, 0x31, 0x20, 0x07, 0x96, 0x7A, 0x42, 0x0E, 0x09, 0x1F, 0x21, 0x06, 0x02, 0x02, 0x05,
|
||||
0x07, 0x0A, 0x04, 0x90, 0x0D, 0x68, 0x4F, 0x7D, 0x3C, 0x24, 0x25, 0xC5, 0xC5, 0x4D, 0x01, 0xD4,
|
||||
0x07, 0x15, 0x28, 0x04, 0x01, 0x03, 0x06, 0x08, 0x09, 0x05, 0x0B, 0x17, 0x0F, 0x55, 0x58, 0x05,
|
||||
0x02, 0x06, 0x07, 0x29, 0x6D, 0x94, 0x7E, 0x0A, 0x02, 0x04, 0x08, 0x0F, 0x63, 0x68, 0x07, 0x0E,
|
||||
0xC2, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, 0x00, 0x63, 0x02, 0x3B, 0x02, 0x48, 0x00, 0x12,
|
||||
0x00, 0x4D, 0x00, 0x00, 0x13, 0x26, 0x27, 0x22, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x16,
|
||||
0x33, 0x32, 0x37, 0x3E, 0x01, 0x35, 0x34, 0x27, 0x36, 0x33, 0x32, 0x16, 0x33, 0x16, 0x33, 0x32,
|
||||
0x16, 0x15, 0x14, 0x07, 0x06, 0x15, 0x14, 0x16, 0x17, 0x16, 0x17, 0x16, 0x15, 0x14, 0x33, 0x32,
|
||||
0x37, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x17, 0x16, 0x17, 0x32, 0x37, 0x36, 0x33, 0x17, 0x14,
|
||||
0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x26, 0x27, 0x26, 0x27, 0x26, 0x27, 0x2E, 0x01, 0x27, 0x26,
|
||||
0x35, 0x34, 0x9E, 0x08, 0x16, 0x02, 0x06, 0x01, 0x0F, 0x0A, 0x07, 0x12, 0x0E, 0x05, 0x0A, 0x0B,
|
||||
0x0F, 0x50, 0x13, 0x0A, 0x01, 0x03, 0x01, 0x0E, 0x0A, 0x0D, 0x1F, 0x10, 0x11, 0x0E, 0x02, 0x02,
|
||||
0x08, 0x07, 0x20, 0x0A, 0x06, 0x12, 0x02, 0x0A, 0x04, 0x09, 0x49, 0x31, 0x28, 0x33, 0x38, 0x0D,
|
||||
0x0B, 0x03, 0x02, 0x32, 0x28, 0x04, 0x04, 0x3F, 0x42, 0x4E, 0x3D, 0x26, 0x0D, 0x0A, 0x15, 0x10,
|
||||
0x23, 0x0B, 0x06, 0x02, 0x1B, 0x0B, 0x02, 0x01, 0x0F, 0x0A, 0x0B, 0x0C, 0x0F, 0x02, 0x03, 0x17,
|
||||
0x0B, 0x07, 0x13, 0x1D, 0x01, 0x04, 0x24, 0x10, 0x13, 0x12, 0x14, 0x14, 0x0B, 0x0E, 0x1C, 0x1D,
|
||||
0x02, 0x02, 0x16, 0x23, 0x01, 0x02, 0x0F, 0x23, 0x4A, 0x18, 0x13, 0x01, 0x04, 0x03, 0x01, 0x05,
|
||||
0x12, 0x0F, 0x05, 0x06, 0x1E, 0x31, 0x1D, 0x1D, 0x1B, 0x15, 0x11, 0x60, 0x34, 0x1E, 0x0F, 0x16,
|
||||
0x00, 0x05, 0x00, 0x37, 0x00, 0x42, 0x02, 0xA1, 0x02, 0x57, 0x00, 0x0C, 0x00, 0x2F, 0x00, 0x4D,
|
||||
0x00, 0x6D, 0x00, 0x83, 0x00, 0x00, 0x01, 0x26, 0x22, 0x07, 0x06, 0x15, 0x14, 0x33, 0x32, 0x36,
|
||||
0x35, 0x34, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x0E, 0x01, 0x07, 0x06, 0x07, 0x06, 0x15, 0x14,
|
||||
0x33, 0x32, 0x37, 0x36, 0x33, 0x32, 0x36, 0x37, 0x36, 0x27, 0x2E, 0x01, 0x2B, 0x01, 0x22, 0x26,
|
||||
0x35, 0x34, 0x37, 0x36, 0x35, 0x34, 0x37, 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x06, 0x15, 0x14,
|
||||
0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32,
|
||||
0x35, 0x34, 0x27, 0x26, 0x37, 0x2E, 0x01, 0x23, 0x22, 0x15, 0x14, 0x17, 0x16, 0x15, 0x17, 0x16,
|
||||
0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x2F, 0x01, 0x07, 0x06, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36,
|
||||
0x35, 0x34, 0x27, 0x26, 0x27, 0x36, 0x33, 0x32, 0x17, 0x1E, 0x01, 0x17, 0x1E, 0x02, 0x15, 0x14,
|
||||
0x0F, 0x01, 0x2D, 0x01, 0x26, 0x27, 0x37, 0x36, 0x12, 0x01, 0x78, 0x04, 0x0C, 0x04, 0x02, 0x09,
|
||||
0x05, 0x09, 0x01, 0x2A, 0x07, 0x06, 0x04, 0x06, 0x05, 0x60, 0x13, 0x0A, 0x08, 0x07, 0x0C, 0x02,
|
||||
0x1A, 0x2C, 0xAA, 0x81, 0x31, 0x0A, 0x0D, 0x02, 0x01, 0x41, 0x79, 0x4F, 0x40, 0x28, 0x19, 0x40,
|
||||
0x0E, 0x1C, 0x05, 0x07, 0x33, 0x57, 0x10, 0x32, 0x05, 0x03, 0x05, 0x0D, 0x0F, 0x48, 0x2D, 0x27,
|
||||
0x0E, 0x09, 0x0C, 0x12, 0x10, 0x34, 0x16, 0x13, 0x2A, 0x2C, 0x54, 0x30, 0x18, 0x0D, 0x13, 0x2D,
|
||||
0x2E, 0x27, 0x26, 0x0A, 0x06, 0x16, 0x11, 0x34, 0x56, 0x0D, 0x0D, 0x03, 0x01, 0x3C, 0xDD, 0x0E,
|
||||
0x01, 0x3A, 0x2B, 0xCD, 0x08, 0x37, 0x39, 0x0A, 0x08, 0x66, 0x09, 0x01, 0x3E, 0x39, 0x18, 0x17,
|
||||
0xFE, 0xF8, 0xFE, 0xF8, 0x14, 0x17, 0x16, 0x1E, 0xC0, 0x01, 0x0F, 0x09, 0x09, 0x06, 0x02, 0x08,
|
||||
0x07, 0x05, 0x01, 0x02, 0x4E, 0x10, 0x07, 0x06, 0xA7, 0x23, 0x12, 0x08, 0x07, 0x0D, 0x0A, 0x02,
|
||||
0x04, 0x04, 0x0A, 0x0F, 0x0A, 0x06, 0x03, 0x05, 0x0B, 0x06, 0x2B, 0x6D, 0x0D, 0x04, 0x87, 0x30,
|
||||
0x5D, 0x99, 0x1C, 0x57, 0x0F, 0x06, 0x07, 0x05, 0x1D, 0x82, 0x4B, 0x42, 0x0F, 0x14, 0x20, 0x63,
|
||||
0x05, 0x0B, 0x48, 0x4B, 0x18, 0x54, 0x22, 0x08, 0x0A, 0x4F, 0x51, 0x02, 0x43, 0x40, 0x10, 0x0A,
|
||||
0x03, 0x02, 0x02, 0x05, 0x16, 0x17, 0x05, 0x02, 0x08, 0x01, 0x01, 0x11, 0x5B, 0x47, 0xDF, 0x08,
|
||||
0x0B, 0x09, 0xB5, 0x14, 0x03, 0x6A, 0x69, 0x08, 0x0C, 0x27, 0x27, 0x02, 0x01, 0x24, 0x2E, 0x29,
|
||||
0x38, 0x01, 0x51, 0x00, 0x00, 0x02, 0x00, 0x36, 0xFF, 0xE5, 0x02, 0x16, 0x02, 0xD7, 0x00, 0x11,
|
||||
0x00, 0x3A, 0x00, 0x00, 0x01, 0x26, 0x23, 0x22, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, 0x1E, 0x01,
|
||||
0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x36, 0x3B, 0x01, 0x16, 0x17, 0x1E, 0x01, 0x17, 0x14,
|
||||
0x16, 0x15, 0x14, 0x06, 0x07, 0x0E, 0x01, 0x0F, 0x01, 0x17, 0x16, 0x15, 0x14, 0x06, 0x22, 0x26,
|
||||
0x35, 0x34, 0x37, 0x36, 0x35, 0x34, 0x27, 0x2E, 0x01, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x01,
|
||||
0x51, 0x0D, 0x20, 0x14, 0x12, 0x0C, 0x17, 0x06, 0x0A, 0x27, 0x17, 0x13, 0x11, 0x23, 0x98, 0x15,
|
||||
0x31, 0x0E, 0x6E, 0x3F, 0x1F, 0x1A, 0x03, 0x01, 0x0E, 0x17, 0x1E, 0x40, 0x42, 0x20, 0x47, 0x7A,
|
||||
0x53, 0xEC, 0x53, 0x7A, 0x45, 0x2D, 0x42, 0x67, 0x0D, 0x06, 0x12, 0x29, 0x02, 0x20, 0x09, 0x07,
|
||||
0x0C, 0x17, 0x1C, 0x0F, 0x0F, 0x16, 0x1A, 0x09, 0x12, 0x2F, 0x2B, 0xC6, 0x07, 0x04, 0x43, 0x21,
|
||||
0x40, 0x33, 0x05, 0x13, 0x04, 0x1D, 0x30, 0x36, 0x44, 0x69, 0x5A, 0x2A, 0x05, 0x07, 0x1B, 0x13,
|
||||
0x0D, 0x0D, 0x13, 0x1A, 0x07, 0x04, 0x03, 0x04, 0x3A, 0x59, 0xB2, 0x33, 0x16, 0x22, 0x46, 0x2B,
|
||||
0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xC6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07,
|
||||
0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x36, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x05, 0x00, 0x0F, 0x00, 0x44, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0E,
|
||||
0x00, 0x53, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x1C, 0x00, 0x61, 0x00, 0x03,
|
||||
0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x0C, 0x00, 0x7D, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09,
|
||||
0x00, 0x02, 0x00, 0x0E, 0x00, 0x89, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x03, 0x00, 0x52,
|
||||
0x00, 0x97, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x1C, 0x00, 0xE9, 0x00, 0x03,
|
||||
0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x1E, 0x01, 0x05, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09,
|
||||
0x00, 0x06, 0x00, 0x1C, 0x01, 0x23, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x0A, 0x00, 0x38,
|
||||
0x01, 0x3F, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x7D, 0x00, 0x03,
|
||||
0x00, 0x01, 0x04, 0x09, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x89, 0x4D, 0x79, 0x66, 0x6F, 0x6E, 0x74,
|
||||
0x52, 0x65, 0x67, 0x75, 0x6C, 0x61, 0x72, 0x43, 0x61, 0x6C, 0x6C, 0x69, 0x67, 0x72, 0x61, 0x70,
|
||||
0x68, 0x72, 0x20, 0x3A, 0x20, 0x4D, 0x79, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x52, 0x65, 0x67, 0x75,
|
||||
0x6C, 0x61, 0x72, 0x20, 0x3A, 0x20, 0x32, 0x31, 0x2D, 0x31, 0x30, 0x2D, 0x32, 0x30, 0x32, 0x32,
|
||||
0x4D, 0x79, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x52, 0x65, 0x67, 0x75, 0x6C, 0x61, 0x72, 0x56, 0x65,
|
||||
0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x30, 0x30, 0x31, 0x2E, 0x30, 0x30, 0x32, 0x4D, 0x79, 0x66,
|
||||
0x6F, 0x6E, 0x74, 0x2D, 0x52, 0x65, 0x67, 0x75, 0x6C, 0x61, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x69, 0x67, 0x72, 0x61,
|
||||
0x70, 0x68, 0x72, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x4D, 0x00, 0x79, 0x00, 0x66, 0x00, 0x6F, 0x00,
|
||||
0x6E, 0x00, 0x74, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6C, 0x00, 0x61, 0x00,
|
||||
0x72, 0x00, 0x43, 0x00, 0x61, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x67, 0x00, 0x72, 0x00,
|
||||
0x61, 0x00, 0x70, 0x00, 0x68, 0x00, 0x72, 0x00, 0x20, 0x00, 0x3A, 0x00, 0x20, 0x00, 0x4D, 0x00,
|
||||
0x79, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00,
|
||||
0x67, 0x00, 0x75, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x72, 0x00, 0x20, 0x00, 0x3A, 0x00, 0x20, 0x00,
|
||||
0x32, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00,
|
||||
0x32, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x79, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x74, 0x00,
|
||||
0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x72, 0x00,
|
||||
0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x20, 0x00,
|
||||
0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x32, 0x00, 0x4D, 0x00,
|
||||
0x79, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x2D, 0x00, 0x52, 0x00, 0x65, 0x00,
|
||||
0x67, 0x00, 0x75, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x72, 0x00, 0x43, 0x00, 0x72, 0x00, 0x65, 0x00,
|
||||
0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x74, 0x00,
|
||||
0x68, 0x00, 0x20, 0x00, 0x43, 0x00, 0x61, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x67, 0x00,
|
||||
0x72, 0x00, 0x61, 0x00, 0x70, 0x00, 0x68, 0x00, 0x72, 0x00, 0x2E, 0x00, 0x63, 0x00, 0x6F, 0x00,
|
||||
0x6D, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xB5, 0x00, 0x32,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x02, 0x00, 0x03,
|
||||
0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B,
|
||||
0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34,
|
||||
0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x01, 0x03, 0x02, 0x43, 0x52, 0x04,
|
||||
0x6E, 0x62, 0x73, 0x70, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user