diff --git a/lib/libcimgui.so b/lib/libcimgui.so
new file mode 100755
index 0000000..4b5745e
Binary files /dev/null and b/lib/libcimgui.so differ
diff --git a/vendor/cimgui/cimgui.h b/vendor/cimgui/cimgui.h
new file mode 100644
index 0000000..208f838
--- /dev/null
+++ b/vendor/cimgui/cimgui.h
@@ -0,0 +1,5014 @@
+//This file is automatically generated by generator.lua from https://github.com/cimgui/cimgui
+//based on imgui.h file version "1.91.1" 19110 from Dear ImGui https://github.com/ocornut/imgui
+//with imgui_internal.h api
+//docking branch
+#ifndef CIMGUI_INCLUDED
+#define CIMGUI_INCLUDED
+#include <stdio.h>
+#include <stdint.h>
+#if defined _WIN32 || defined __CYGWIN__
+    #ifdef CIMGUI_NO_EXPORT
+        #define API
+    #else
+        #define API __declspec(dllexport)
+    #endif
+#else
+    #ifdef __GNUC__
+        #define API  __attribute__((__visibility__("default")))
+    #else
+        #define API
+    #endif
+#endif
+
+#if defined __cplusplus
+    #define EXTERN extern "C"
+#else
+    #include <stdarg.h>
+    #include <stdbool.h>
+    #define EXTERN extern
+#endif
+
+#define CIMGUI_API EXTERN API
+#define CONST const
+
+
+#ifdef _MSC_VER
+typedef unsigned __int64 ImU64;
+#else
+//typedef unsigned long long ImU64;
+#endif
+
+
+#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
+
+typedef struct ImDrawChannel ImDrawChannel;
+typedef struct ImDrawCmd ImDrawCmd;
+typedef struct ImDrawData ImDrawData;
+typedef struct ImDrawList ImDrawList;
+typedef struct ImDrawListSharedData ImDrawListSharedData;
+typedef struct ImDrawListSplitter ImDrawListSplitter;
+typedef struct ImDrawVert ImDrawVert;
+typedef struct ImFont ImFont;
+typedef struct ImFontAtlas ImFontAtlas;
+typedef struct ImFontBuilderIO ImFontBuilderIO;
+typedef struct ImFontConfig ImFontConfig;
+typedef struct ImFontGlyph ImFontGlyph;
+typedef struct ImFontGlyphRangesBuilder ImFontGlyphRangesBuilder;
+typedef struct ImColor ImColor;
+typedef struct ImGuiContext ImGuiContext;
+typedef struct ImGuiIO ImGuiIO;
+typedef struct ImGuiInputTextCallbackData ImGuiInputTextCallbackData;
+typedef struct ImGuiKeyData ImGuiKeyData;
+typedef struct ImGuiListClipper ImGuiListClipper;
+typedef struct ImGuiMultiSelectIO ImGuiMultiSelectIO;
+typedef struct ImGuiOnceUponAFrame ImGuiOnceUponAFrame;
+typedef struct ImGuiPayload ImGuiPayload;
+typedef struct ImGuiPlatformIO ImGuiPlatformIO;
+typedef struct ImGuiPlatformImeData ImGuiPlatformImeData;
+typedef struct ImGuiPlatformMonitor ImGuiPlatformMonitor;
+typedef struct ImGuiSelectionBasicStorage ImGuiSelectionBasicStorage;
+typedef struct ImGuiSelectionExternalStorage ImGuiSelectionExternalStorage;
+typedef struct ImGuiSelectionRequest ImGuiSelectionRequest;
+typedef struct ImGuiSizeCallbackData ImGuiSizeCallbackData;
+typedef struct ImGuiStorage ImGuiStorage;
+typedef struct ImGuiStoragePair ImGuiStoragePair;
+typedef struct ImGuiStyle ImGuiStyle;
+typedef struct ImGuiTableSortSpecs ImGuiTableSortSpecs;
+typedef struct ImGuiTableColumnSortSpecs ImGuiTableColumnSortSpecs;
+typedef struct ImGuiTextBuffer ImGuiTextBuffer;
+typedef struct ImGuiTextFilter ImGuiTextFilter;
+typedef struct ImGuiViewport ImGuiViewport;
+typedef struct ImGuiWindowClass ImGuiWindowClass;
+typedef struct ImBitVector ImBitVector;
+typedef struct ImRect ImRect;
+typedef struct ImDrawDataBuilder ImDrawDataBuilder;
+typedef struct ImGuiBoxSelectState ImGuiBoxSelectState;
+typedef struct ImGuiColorMod ImGuiColorMod;
+typedef struct ImGuiContextHook ImGuiContextHook;
+typedef struct ImGuiDataVarInfo ImGuiDataVarInfo;
+typedef struct ImGuiDataTypeInfo ImGuiDataTypeInfo;
+typedef struct ImGuiDockContext ImGuiDockContext;
+typedef struct ImGuiDockRequest ImGuiDockRequest;
+typedef struct ImGuiDockNode ImGuiDockNode;
+typedef struct ImGuiDockNodeSettings ImGuiDockNodeSettings;
+typedef struct ImGuiGroupData ImGuiGroupData;
+typedef struct ImGuiInputTextState ImGuiInputTextState;
+typedef struct ImGuiInputTextDeactivateData ImGuiInputTextDeactivateData;
+typedef struct ImGuiLastItemData ImGuiLastItemData;
+typedef struct ImGuiLocEntry ImGuiLocEntry;
+typedef struct ImGuiMenuColumns ImGuiMenuColumns;
+typedef struct ImGuiMultiSelectState ImGuiMultiSelectState;
+typedef struct ImGuiMultiSelectTempData ImGuiMultiSelectTempData;
+typedef struct ImGuiNavItemData ImGuiNavItemData;
+typedef struct ImGuiMetricsConfig ImGuiMetricsConfig;
+typedef struct ImGuiNextWindowData ImGuiNextWindowData;
+typedef struct ImGuiNextItemData ImGuiNextItemData;
+typedef struct ImGuiOldColumnData ImGuiOldColumnData;
+typedef struct ImGuiOldColumns ImGuiOldColumns;
+typedef struct ImGuiPopupData ImGuiPopupData;
+typedef struct ImGuiSettingsHandler ImGuiSettingsHandler;
+typedef struct ImGuiStackSizes ImGuiStackSizes;
+typedef struct ImGuiStyleMod ImGuiStyleMod;
+typedef struct ImGuiTabBar ImGuiTabBar;
+typedef struct ImGuiTabItem ImGuiTabItem;
+typedef struct ImGuiTable ImGuiTable;
+typedef struct ImGuiTableHeaderData ImGuiTableHeaderData;
+typedef struct ImGuiTableColumn ImGuiTableColumn;
+typedef struct ImGuiTableInstanceData ImGuiTableInstanceData;
+typedef struct ImGuiTableTempData ImGuiTableTempData;
+typedef struct ImGuiTableSettings ImGuiTableSettings;
+typedef struct ImGuiTableColumnsSettings ImGuiTableColumnsSettings;
+typedef struct ImGuiTreeNodeStackData ImGuiTreeNodeStackData;
+typedef struct ImGuiTypingSelectState ImGuiTypingSelectState;
+typedef struct ImGuiTypingSelectRequest ImGuiTypingSelectRequest;
+typedef struct ImGuiWindow ImGuiWindow;
+typedef struct ImGuiWindowDockStyle ImGuiWindowDockStyle;
+typedef struct ImGuiWindowTempData ImGuiWindowTempData;
+typedef struct ImGuiWindowSettings ImGuiWindowSettings;
+typedef struct ImVector_const_charPtr {int Size;int Capacity;const char** Data;} ImVector_const_charPtr;
+
+typedef unsigned int ImGuiID;
+typedef signed char ImS8;
+typedef unsigned char ImU8;
+typedef signed short ImS16;
+typedef unsigned short ImU16;
+typedef signed int ImS32;
+typedef unsigned int ImU32;
+typedef signed long long ImS64;
+typedef unsigned long long ImU64;
+struct ImDrawChannel;
+struct ImDrawCmd;
+struct ImDrawData;
+struct ImDrawList;
+struct ImDrawListSharedData;
+struct ImDrawListSplitter;
+struct ImDrawVert;
+struct ImFont;
+struct ImFontAtlas;
+struct ImFontBuilderIO;
+struct ImFontConfig;
+struct ImFontGlyph;
+struct ImFontGlyphRangesBuilder;
+struct ImColor;
+struct ImGuiContext;
+struct ImGuiIO;
+struct ImGuiInputTextCallbackData;
+struct ImGuiKeyData;
+struct ImGuiListClipper;
+struct ImGuiMultiSelectIO;
+struct ImGuiOnceUponAFrame;
+struct ImGuiPayload;
+struct ImGuiPlatformIO;
+struct ImGuiPlatformImeData;
+struct ImGuiPlatformMonitor;
+struct ImGuiSelectionBasicStorage;
+struct ImGuiSelectionExternalStorage;
+struct ImGuiSelectionRequest;
+struct ImGuiSizeCallbackData;
+struct ImGuiStorage;
+struct ImGuiStoragePair;
+struct ImGuiStyle;
+struct ImGuiTableSortSpecs;
+struct ImGuiTableColumnSortSpecs;
+struct ImGuiTextBuffer;
+struct ImGuiTextFilter;
+struct ImGuiViewport;
+struct ImGuiWindowClass;
+typedef int ImGuiCol;
+typedef int ImGuiCond;
+typedef int ImGuiDataType;
+typedef int ImGuiMouseButton;
+typedef int ImGuiMouseCursor;
+typedef int ImGuiStyleVar;
+typedef int ImGuiTableBgTarget;
+typedef int ImDrawFlags;
+typedef int ImDrawListFlags;
+typedef int ImFontAtlasFlags;
+typedef int ImGuiBackendFlags;
+typedef int ImGuiButtonFlags;
+typedef int ImGuiChildFlags;
+typedef int ImGuiColorEditFlags;
+typedef int ImGuiConfigFlags;
+typedef int ImGuiComboFlags;
+typedef int ImGuiDockNodeFlags;
+typedef int ImGuiDragDropFlags;
+typedef int ImGuiFocusedFlags;
+typedef int ImGuiHoveredFlags;
+typedef int ImGuiInputFlags;
+typedef int ImGuiInputTextFlags;
+typedef int ImGuiItemFlags;
+typedef int ImGuiKeyChord;
+typedef int ImGuiPopupFlags;
+typedef int ImGuiMultiSelectFlags;
+typedef int ImGuiSelectableFlags;
+typedef int ImGuiSliderFlags;
+typedef int ImGuiTabBarFlags;
+typedef int ImGuiTabItemFlags;
+typedef int ImGuiTableFlags;
+typedef int ImGuiTableColumnFlags;
+typedef int ImGuiTableRowFlags;
+typedef int ImGuiTreeNodeFlags;
+typedef int ImGuiViewportFlags;
+typedef int ImGuiWindowFlags;
+typedef void* ImTextureID;
+typedef unsigned short ImDrawIdx;
+typedef unsigned int ImWchar32;
+typedef unsigned short ImWchar16;
+typedef ImWchar16 ImWchar;
+typedef ImS64 ImGuiSelectionUserData;
+typedef int (*ImGuiInputTextCallback)(ImGuiInputTextCallbackData* data);
+typedef void (*ImGuiSizeCallback)(ImGuiSizeCallbackData* data);
+typedef void* (*ImGuiMemAllocFunc)(size_t sz, void* user_data);
+typedef void (*ImGuiMemFreeFunc)(void* ptr, void* user_data);
+typedef struct ImVec2 ImVec2;
+struct ImVec2
+{
+    float x, y;
+};
+typedef struct ImVec4 ImVec4;
+struct ImVec4
+{
+    float x, y, z, w;
+};
+typedef enum {
+    ImGuiWindowFlags_None = 0,
+    ImGuiWindowFlags_NoTitleBar = 1 << 0,
+    ImGuiWindowFlags_NoResize = 1 << 1,
+    ImGuiWindowFlags_NoMove = 1 << 2,
+    ImGuiWindowFlags_NoScrollbar = 1 << 3,
+    ImGuiWindowFlags_NoScrollWithMouse = 1 << 4,
+    ImGuiWindowFlags_NoCollapse = 1 << 5,
+    ImGuiWindowFlags_AlwaysAutoResize = 1 << 6,
+    ImGuiWindowFlags_NoBackground = 1 << 7,
+    ImGuiWindowFlags_NoSavedSettings = 1 << 8,
+    ImGuiWindowFlags_NoMouseInputs = 1 << 9,
+    ImGuiWindowFlags_MenuBar = 1 << 10,
+    ImGuiWindowFlags_HorizontalScrollbar = 1 << 11,
+    ImGuiWindowFlags_NoFocusOnAppearing = 1 << 12,
+    ImGuiWindowFlags_NoBringToFrontOnFocus = 1 << 13,
+    ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 << 14,
+    ImGuiWindowFlags_AlwaysHorizontalScrollbar=1<< 15,
+    ImGuiWindowFlags_NoNavInputs = 1 << 16,
+    ImGuiWindowFlags_NoNavFocus = 1 << 17,
+    ImGuiWindowFlags_UnsavedDocument = 1 << 18,
+    ImGuiWindowFlags_NoDocking = 1 << 19,
+    ImGuiWindowFlags_NoNav = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
+    ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse,
+    ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
+    ImGuiWindowFlags_ChildWindow = 1 << 24,
+    ImGuiWindowFlags_Tooltip = 1 << 25,
+    ImGuiWindowFlags_Popup = 1 << 26,
+    ImGuiWindowFlags_Modal = 1 << 27,
+    ImGuiWindowFlags_ChildMenu = 1 << 28,
+    ImGuiWindowFlags_DockNodeHost = 1 << 29,
+}ImGuiWindowFlags_;
+typedef enum {
+    ImGuiChildFlags_None = 0,
+    ImGuiChildFlags_Borders = 1 << 0,
+    ImGuiChildFlags_AlwaysUseWindowPadding = 1 << 1,
+    ImGuiChildFlags_ResizeX = 1 << 2,
+    ImGuiChildFlags_ResizeY = 1 << 3,
+    ImGuiChildFlags_AutoResizeX = 1 << 4,
+    ImGuiChildFlags_AutoResizeY = 1 << 5,
+    ImGuiChildFlags_AlwaysAutoResize = 1 << 6,
+    ImGuiChildFlags_FrameStyle = 1 << 7,
+    ImGuiChildFlags_NavFlattened = 1 << 8,
+}ImGuiChildFlags_;
+typedef enum {
+    ImGuiItemFlags_None = 0,
+    ImGuiItemFlags_NoTabStop = 1 << 0,
+    ImGuiItemFlags_NoNav = 1 << 1,
+    ImGuiItemFlags_NoNavDefaultFocus = 1 << 2,
+    ImGuiItemFlags_ButtonRepeat = 1 << 3,
+    ImGuiItemFlags_AutoClosePopups = 1 << 4,
+}ImGuiItemFlags_;
+typedef enum {
+    ImGuiInputTextFlags_None = 0,
+    ImGuiInputTextFlags_CharsDecimal = 1 << 0,
+    ImGuiInputTextFlags_CharsHexadecimal = 1 << 1,
+    ImGuiInputTextFlags_CharsScientific = 1 << 2,
+    ImGuiInputTextFlags_CharsUppercase = 1 << 3,
+    ImGuiInputTextFlags_CharsNoBlank = 1 << 4,
+    ImGuiInputTextFlags_AllowTabInput = 1 << 5,
+    ImGuiInputTextFlags_EnterReturnsTrue = 1 << 6,
+    ImGuiInputTextFlags_EscapeClearsAll = 1 << 7,
+    ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 8,
+    ImGuiInputTextFlags_ReadOnly = 1 << 9,
+    ImGuiInputTextFlags_Password = 1 << 10,
+    ImGuiInputTextFlags_AlwaysOverwrite = 1 << 11,
+    ImGuiInputTextFlags_AutoSelectAll = 1 << 12,
+    ImGuiInputTextFlags_ParseEmptyRefVal = 1 << 13,
+    ImGuiInputTextFlags_DisplayEmptyRefVal = 1 << 14,
+    ImGuiInputTextFlags_NoHorizontalScroll = 1 << 15,
+    ImGuiInputTextFlags_NoUndoRedo = 1 << 16,
+    ImGuiInputTextFlags_CallbackCompletion = 1 << 17,
+    ImGuiInputTextFlags_CallbackHistory = 1 << 18,
+    ImGuiInputTextFlags_CallbackAlways = 1 << 19,
+    ImGuiInputTextFlags_CallbackCharFilter = 1 << 20,
+    ImGuiInputTextFlags_CallbackResize = 1 << 21,
+    ImGuiInputTextFlags_CallbackEdit = 1 << 22,
+}ImGuiInputTextFlags_;
+typedef enum {
+    ImGuiTreeNodeFlags_None = 0,
+    ImGuiTreeNodeFlags_Selected = 1 << 0,
+    ImGuiTreeNodeFlags_Framed = 1 << 1,
+    ImGuiTreeNodeFlags_AllowOverlap = 1 << 2,
+    ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3,
+    ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4,
+    ImGuiTreeNodeFlags_DefaultOpen = 1 << 5,
+    ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6,
+    ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7,
+    ImGuiTreeNodeFlags_Leaf = 1 << 8,
+    ImGuiTreeNodeFlags_Bullet = 1 << 9,
+    ImGuiTreeNodeFlags_FramePadding = 1 << 10,
+    ImGuiTreeNodeFlags_SpanAvailWidth = 1 << 11,
+    ImGuiTreeNodeFlags_SpanFullWidth = 1 << 12,
+    ImGuiTreeNodeFlags_SpanTextWidth = 1 << 13,
+    ImGuiTreeNodeFlags_SpanAllColumns = 1 << 14,
+    ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 15,
+    ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog,
+}ImGuiTreeNodeFlags_;
+typedef enum {
+    ImGuiPopupFlags_None = 0,
+    ImGuiPopupFlags_MouseButtonLeft = 0,
+    ImGuiPopupFlags_MouseButtonRight = 1,
+    ImGuiPopupFlags_MouseButtonMiddle = 2,
+    ImGuiPopupFlags_MouseButtonMask_ = 0x1F,
+    ImGuiPopupFlags_MouseButtonDefault_ = 1,
+    ImGuiPopupFlags_NoReopen = 1 << 5,
+    ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 7,
+    ImGuiPopupFlags_NoOpenOverItems = 1 << 8,
+    ImGuiPopupFlags_AnyPopupId = 1 << 10,
+    ImGuiPopupFlags_AnyPopupLevel = 1 << 11,
+    ImGuiPopupFlags_AnyPopup = ImGuiPopupFlags_AnyPopupId | ImGuiPopupFlags_AnyPopupLevel,
+}ImGuiPopupFlags_;
+typedef enum {
+    ImGuiSelectableFlags_None = 0,
+    ImGuiSelectableFlags_NoAutoClosePopups = 1 << 0,
+    ImGuiSelectableFlags_SpanAllColumns = 1 << 1,
+    ImGuiSelectableFlags_AllowDoubleClick = 1 << 2,
+    ImGuiSelectableFlags_Disabled = 1 << 3,
+    ImGuiSelectableFlags_AllowOverlap = 1 << 4,
+    ImGuiSelectableFlags_Highlight = 1 << 5,
+}ImGuiSelectableFlags_;
+typedef enum {
+    ImGuiComboFlags_None = 0,
+    ImGuiComboFlags_PopupAlignLeft = 1 << 0,
+    ImGuiComboFlags_HeightSmall = 1 << 1,
+    ImGuiComboFlags_HeightRegular = 1 << 2,
+    ImGuiComboFlags_HeightLarge = 1 << 3,
+    ImGuiComboFlags_HeightLargest = 1 << 4,
+    ImGuiComboFlags_NoArrowButton = 1 << 5,
+    ImGuiComboFlags_NoPreview = 1 << 6,
+    ImGuiComboFlags_WidthFitPreview = 1 << 7,
+    ImGuiComboFlags_HeightMask_ = ImGuiComboFlags_HeightSmall | ImGuiComboFlags_HeightRegular | ImGuiComboFlags_HeightLarge | ImGuiComboFlags_HeightLargest,
+}ImGuiComboFlags_;
+typedef enum {
+    ImGuiTabBarFlags_None = 0,
+    ImGuiTabBarFlags_Reorderable = 1 << 0,
+    ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1,
+    ImGuiTabBarFlags_TabListPopupButton = 1 << 2,
+    ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3,
+    ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4,
+    ImGuiTabBarFlags_NoTooltip = 1 << 5,
+    ImGuiTabBarFlags_DrawSelectedOverline = 1 << 6,
+    ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 7,
+    ImGuiTabBarFlags_FittingPolicyScroll = 1 << 8,
+    ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
+    ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_FittingPolicyResizeDown,
+}ImGuiTabBarFlags_;
+typedef enum {
+    ImGuiTabItemFlags_None = 0,
+    ImGuiTabItemFlags_UnsavedDocument = 1 << 0,
+    ImGuiTabItemFlags_SetSelected = 1 << 1,
+    ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2,
+    ImGuiTabItemFlags_NoPushId = 1 << 3,
+    ImGuiTabItemFlags_NoTooltip = 1 << 4,
+    ImGuiTabItemFlags_NoReorder = 1 << 5,
+    ImGuiTabItemFlags_Leading = 1 << 6,
+    ImGuiTabItemFlags_Trailing = 1 << 7,
+    ImGuiTabItemFlags_NoAssumedClosure = 1 << 8,
+}ImGuiTabItemFlags_;
+typedef enum {
+    ImGuiFocusedFlags_None = 0,
+    ImGuiFocusedFlags_ChildWindows = 1 << 0,
+    ImGuiFocusedFlags_RootWindow = 1 << 1,
+    ImGuiFocusedFlags_AnyWindow = 1 << 2,
+    ImGuiFocusedFlags_NoPopupHierarchy = 1 << 3,
+    ImGuiFocusedFlags_DockHierarchy = 1 << 4,
+    ImGuiFocusedFlags_RootAndChildWindows = ImGuiFocusedFlags_RootWindow | ImGuiFocusedFlags_ChildWindows,
+}ImGuiFocusedFlags_;
+typedef enum {
+    ImGuiHoveredFlags_None = 0,
+    ImGuiHoveredFlags_ChildWindows = 1 << 0,
+    ImGuiHoveredFlags_RootWindow = 1 << 1,
+    ImGuiHoveredFlags_AnyWindow = 1 << 2,
+    ImGuiHoveredFlags_NoPopupHierarchy = 1 << 3,
+    ImGuiHoveredFlags_DockHierarchy = 1 << 4,
+    ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 5,
+    ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 7,
+    ImGuiHoveredFlags_AllowWhenOverlappedByItem = 1 << 8,
+    ImGuiHoveredFlags_AllowWhenOverlappedByWindow = 1 << 9,
+    ImGuiHoveredFlags_AllowWhenDisabled = 1 << 10,
+    ImGuiHoveredFlags_NoNavOverride = 1 << 11,
+    ImGuiHoveredFlags_AllowWhenOverlapped = ImGuiHoveredFlags_AllowWhenOverlappedByItem | ImGuiHoveredFlags_AllowWhenOverlappedByWindow,
+    ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped,
+    ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows,
+    ImGuiHoveredFlags_ForTooltip = 1 << 12,
+    ImGuiHoveredFlags_Stationary = 1 << 13,
+    ImGuiHoveredFlags_DelayNone = 1 << 14,
+    ImGuiHoveredFlags_DelayShort = 1 << 15,
+    ImGuiHoveredFlags_DelayNormal = 1 << 16,
+    ImGuiHoveredFlags_NoSharedDelay = 1 << 17,
+}ImGuiHoveredFlags_;
+typedef enum {
+    ImGuiDockNodeFlags_None = 0,
+    ImGuiDockNodeFlags_KeepAliveOnly = 1 << 0,
+    ImGuiDockNodeFlags_NoDockingOverCentralNode = 1 << 2,
+    ImGuiDockNodeFlags_PassthruCentralNode = 1 << 3,
+    ImGuiDockNodeFlags_NoDockingSplit = 1 << 4,
+    ImGuiDockNodeFlags_NoResize = 1 << 5,
+    ImGuiDockNodeFlags_AutoHideTabBar = 1 << 6,
+    ImGuiDockNodeFlags_NoUndocking = 1 << 7,
+}ImGuiDockNodeFlags_;
+typedef enum {
+    ImGuiDragDropFlags_None = 0,
+    ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0,
+    ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1,
+    ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2,
+    ImGuiDragDropFlags_SourceAllowNullID = 1 << 3,
+    ImGuiDragDropFlags_SourceExtern = 1 << 4,
+    ImGuiDragDropFlags_PayloadAutoExpire = 1 << 5,
+    ImGuiDragDropFlags_PayloadNoCrossContext = 1 << 6,
+    ImGuiDragDropFlags_PayloadNoCrossProcess = 1 << 7,
+    ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10,
+    ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11,
+    ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12,
+    ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect,
+}ImGuiDragDropFlags_;
+typedef enum {
+    ImGuiDataType_S8,
+    ImGuiDataType_U8,
+    ImGuiDataType_S16,
+    ImGuiDataType_U16,
+    ImGuiDataType_S32,
+    ImGuiDataType_U32,
+    ImGuiDataType_S64,
+    ImGuiDataType_U64,
+    ImGuiDataType_Float,
+    ImGuiDataType_Double,
+    ImGuiDataType_Bool,
+    ImGuiDataType_COUNT
+}ImGuiDataType_;
+typedef enum {
+ImGuiDir_None=-1,
+ImGuiDir_Left=0,
+ImGuiDir_Right=1,
+ImGuiDir_Up=2,
+ImGuiDir_Down=3,
+ImGuiDir_COUNT=4,
+}ImGuiDir;
+typedef enum {
+ImGuiSortDirection_None=0,
+ImGuiSortDirection_Ascending=1,
+ImGuiSortDirection_Descending=2,
+}ImGuiSortDirection;
+typedef enum {
+ImGuiKey_None=0,
+ImGuiKey_Tab=512,
+ImGuiKey_LeftArrow=513,
+ImGuiKey_RightArrow=514,
+ImGuiKey_UpArrow=515,
+ImGuiKey_DownArrow=516,
+ImGuiKey_PageUp=517,
+ImGuiKey_PageDown=518,
+ImGuiKey_Home=519,
+ImGuiKey_End=520,
+ImGuiKey_Insert=521,
+ImGuiKey_Delete=522,
+ImGuiKey_Backspace=523,
+ImGuiKey_Space=524,
+ImGuiKey_Enter=525,
+ImGuiKey_Escape=526,
+ImGuiKey_LeftCtrl=527,
+ImGuiKey_LeftShift=528,
+ImGuiKey_LeftAlt=529,
+ImGuiKey_LeftSuper=530,
+ImGuiKey_RightCtrl=531,
+ImGuiKey_RightShift=532,
+ImGuiKey_RightAlt=533,
+ImGuiKey_RightSuper=534,
+ImGuiKey_Menu=535,
+ImGuiKey_0=536,
+ImGuiKey_1=537,
+ImGuiKey_2=538,
+ImGuiKey_3=539,
+ImGuiKey_4=540,
+ImGuiKey_5=541,
+ImGuiKey_6=542,
+ImGuiKey_7=543,
+ImGuiKey_8=544,
+ImGuiKey_9=545,
+ImGuiKey_A=546,
+ImGuiKey_B=547,
+ImGuiKey_C=548,
+ImGuiKey_D=549,
+ImGuiKey_E=550,
+ImGuiKey_F=551,
+ImGuiKey_G=552,
+ImGuiKey_H=553,
+ImGuiKey_I=554,
+ImGuiKey_J=555,
+ImGuiKey_K=556,
+ImGuiKey_L=557,
+ImGuiKey_M=558,
+ImGuiKey_N=559,
+ImGuiKey_O=560,
+ImGuiKey_P=561,
+ImGuiKey_Q=562,
+ImGuiKey_R=563,
+ImGuiKey_S=564,
+ImGuiKey_T=565,
+ImGuiKey_U=566,
+ImGuiKey_V=567,
+ImGuiKey_W=568,
+ImGuiKey_X=569,
+ImGuiKey_Y=570,
+ImGuiKey_Z=571,
+ImGuiKey_F1=572,
+ImGuiKey_F2=573,
+ImGuiKey_F3=574,
+ImGuiKey_F4=575,
+ImGuiKey_F5=576,
+ImGuiKey_F6=577,
+ImGuiKey_F7=578,
+ImGuiKey_F8=579,
+ImGuiKey_F9=580,
+ImGuiKey_F10=581,
+ImGuiKey_F11=582,
+ImGuiKey_F12=583,
+ImGuiKey_F13=584,
+ImGuiKey_F14=585,
+ImGuiKey_F15=586,
+ImGuiKey_F16=587,
+ImGuiKey_F17=588,
+ImGuiKey_F18=589,
+ImGuiKey_F19=590,
+ImGuiKey_F20=591,
+ImGuiKey_F21=592,
+ImGuiKey_F22=593,
+ImGuiKey_F23=594,
+ImGuiKey_F24=595,
+ImGuiKey_Apostrophe=596,
+ImGuiKey_Comma=597,
+ImGuiKey_Minus=598,
+ImGuiKey_Period=599,
+ImGuiKey_Slash=600,
+ImGuiKey_Semicolon=601,
+ImGuiKey_Equal=602,
+ImGuiKey_LeftBracket=603,
+ImGuiKey_Backslash=604,
+ImGuiKey_RightBracket=605,
+ImGuiKey_GraveAccent=606,
+ImGuiKey_CapsLock=607,
+ImGuiKey_ScrollLock=608,
+ImGuiKey_NumLock=609,
+ImGuiKey_PrintScreen=610,
+ImGuiKey_Pause=611,
+ImGuiKey_Keypad0=612,
+ImGuiKey_Keypad1=613,
+ImGuiKey_Keypad2=614,
+ImGuiKey_Keypad3=615,
+ImGuiKey_Keypad4=616,
+ImGuiKey_Keypad5=617,
+ImGuiKey_Keypad6=618,
+ImGuiKey_Keypad7=619,
+ImGuiKey_Keypad8=620,
+ImGuiKey_Keypad9=621,
+ImGuiKey_KeypadDecimal=622,
+ImGuiKey_KeypadDivide=623,
+ImGuiKey_KeypadMultiply=624,
+ImGuiKey_KeypadSubtract=625,
+ImGuiKey_KeypadAdd=626,
+ImGuiKey_KeypadEnter=627,
+ImGuiKey_KeypadEqual=628,
+ImGuiKey_AppBack=629,
+ImGuiKey_AppForward=630,
+ImGuiKey_GamepadStart=631,
+ImGuiKey_GamepadBack=632,
+ImGuiKey_GamepadFaceLeft=633,
+ImGuiKey_GamepadFaceRight=634,
+ImGuiKey_GamepadFaceUp=635,
+ImGuiKey_GamepadFaceDown=636,
+ImGuiKey_GamepadDpadLeft=637,
+ImGuiKey_GamepadDpadRight=638,
+ImGuiKey_GamepadDpadUp=639,
+ImGuiKey_GamepadDpadDown=640,
+ImGuiKey_GamepadL1=641,
+ImGuiKey_GamepadR1=642,
+ImGuiKey_GamepadL2=643,
+ImGuiKey_GamepadR2=644,
+ImGuiKey_GamepadL3=645,
+ImGuiKey_GamepadR3=646,
+ImGuiKey_GamepadLStickLeft=647,
+ImGuiKey_GamepadLStickRight=648,
+ImGuiKey_GamepadLStickUp=649,
+ImGuiKey_GamepadLStickDown=650,
+ImGuiKey_GamepadRStickLeft=651,
+ImGuiKey_GamepadRStickRight=652,
+ImGuiKey_GamepadRStickUp=653,
+ImGuiKey_GamepadRStickDown=654,
+ImGuiKey_MouseLeft=655,
+ImGuiKey_MouseRight=656,
+ImGuiKey_MouseMiddle=657,
+ImGuiKey_MouseX1=658,
+ImGuiKey_MouseX2=659,
+ImGuiKey_MouseWheelX=660,
+ImGuiKey_MouseWheelY=661,
+ImGuiKey_ReservedForModCtrl=662,
+ImGuiKey_ReservedForModShift=663,
+ImGuiKey_ReservedForModAlt=664,
+ImGuiKey_ReservedForModSuper=665,
+ImGuiKey_COUNT=666,
+ImGuiMod_None=0,
+ImGuiMod_Ctrl=1 << 12,
+ImGuiMod_Shift=1 << 13,
+ImGuiMod_Alt=1 << 14,
+ImGuiMod_Super=1 << 15,
+ImGuiMod_Mask_=0xF000,
+ImGuiKey_NamedKey_BEGIN=512,
+ImGuiKey_NamedKey_END=ImGuiKey_COUNT,
+ImGuiKey_NamedKey_COUNT=ImGuiKey_NamedKey_END - ImGuiKey_NamedKey_BEGIN,
+ImGuiKey_KeysData_SIZE=ImGuiKey_NamedKey_COUNT,
+ImGuiKey_KeysData_OFFSET=ImGuiKey_NamedKey_BEGIN,
+}ImGuiKey;
+typedef enum {
+    ImGuiInputFlags_None = 0,
+    ImGuiInputFlags_Repeat = 1 << 0,
+    ImGuiInputFlags_RouteActive = 1 << 10,
+    ImGuiInputFlags_RouteFocused = 1 << 11,
+    ImGuiInputFlags_RouteGlobal = 1 << 12,
+    ImGuiInputFlags_RouteAlways = 1 << 13,
+    ImGuiInputFlags_RouteOverFocused = 1 << 14,
+    ImGuiInputFlags_RouteOverActive = 1 << 15,
+    ImGuiInputFlags_RouteUnlessBgFocused = 1 << 16,
+    ImGuiInputFlags_RouteFromRootWindow = 1 << 17,
+    ImGuiInputFlags_Tooltip = 1 << 18,
+}ImGuiInputFlags_;
+typedef enum {
+    ImGuiConfigFlags_None = 0,
+    ImGuiConfigFlags_NavEnableKeyboard = 1 << 0,
+    ImGuiConfigFlags_NavEnableGamepad = 1 << 1,
+    ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2,
+    ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3,
+    ImGuiConfigFlags_NoMouse = 1 << 4,
+    ImGuiConfigFlags_NoMouseCursorChange = 1 << 5,
+    ImGuiConfigFlags_NoKeyboard = 1 << 6,
+    ImGuiConfigFlags_DockingEnable = 1 << 7,
+    ImGuiConfigFlags_ViewportsEnable = 1 << 10,
+    ImGuiConfigFlags_DpiEnableScaleViewports= 1 << 14,
+    ImGuiConfigFlags_DpiEnableScaleFonts = 1 << 15,
+    ImGuiConfigFlags_IsSRGB = 1 << 20,
+    ImGuiConfigFlags_IsTouchScreen = 1 << 21,
+}ImGuiConfigFlags_;
+typedef enum {
+    ImGuiBackendFlags_None = 0,
+    ImGuiBackendFlags_HasGamepad = 1 << 0,
+    ImGuiBackendFlags_HasMouseCursors = 1 << 1,
+    ImGuiBackendFlags_HasSetMousePos = 1 << 2,
+    ImGuiBackendFlags_RendererHasVtxOffset = 1 << 3,
+    ImGuiBackendFlags_PlatformHasViewports = 1 << 10,
+    ImGuiBackendFlags_HasMouseHoveredViewport=1 << 11,
+    ImGuiBackendFlags_RendererHasViewports = 1 << 12,
+}ImGuiBackendFlags_;
+typedef enum {
+    ImGuiCol_Text,
+    ImGuiCol_TextDisabled,
+    ImGuiCol_WindowBg,
+    ImGuiCol_ChildBg,
+    ImGuiCol_PopupBg,
+    ImGuiCol_Border,
+    ImGuiCol_BorderShadow,
+    ImGuiCol_FrameBg,
+    ImGuiCol_FrameBgHovered,
+    ImGuiCol_FrameBgActive,
+    ImGuiCol_TitleBg,
+    ImGuiCol_TitleBgActive,
+    ImGuiCol_TitleBgCollapsed,
+    ImGuiCol_MenuBarBg,
+    ImGuiCol_ScrollbarBg,
+    ImGuiCol_ScrollbarGrab,
+    ImGuiCol_ScrollbarGrabHovered,
+    ImGuiCol_ScrollbarGrabActive,
+    ImGuiCol_CheckMark,
+    ImGuiCol_SliderGrab,
+    ImGuiCol_SliderGrabActive,
+    ImGuiCol_Button,
+    ImGuiCol_ButtonHovered,
+    ImGuiCol_ButtonActive,
+    ImGuiCol_Header,
+    ImGuiCol_HeaderHovered,
+    ImGuiCol_HeaderActive,
+    ImGuiCol_Separator,
+    ImGuiCol_SeparatorHovered,
+    ImGuiCol_SeparatorActive,
+    ImGuiCol_ResizeGrip,
+    ImGuiCol_ResizeGripHovered,
+    ImGuiCol_ResizeGripActive,
+    ImGuiCol_TabHovered,
+    ImGuiCol_Tab,
+    ImGuiCol_TabSelected,
+    ImGuiCol_TabSelectedOverline,
+    ImGuiCol_TabDimmed,
+    ImGuiCol_TabDimmedSelected,
+    ImGuiCol_TabDimmedSelectedOverline,
+    ImGuiCol_DockingPreview,
+    ImGuiCol_DockingEmptyBg,
+    ImGuiCol_PlotLines,
+    ImGuiCol_PlotLinesHovered,
+    ImGuiCol_PlotHistogram,
+    ImGuiCol_PlotHistogramHovered,
+    ImGuiCol_TableHeaderBg,
+    ImGuiCol_TableBorderStrong,
+    ImGuiCol_TableBorderLight,
+    ImGuiCol_TableRowBg,
+    ImGuiCol_TableRowBgAlt,
+    ImGuiCol_TextLink,
+    ImGuiCol_TextSelectedBg,
+    ImGuiCol_DragDropTarget,
+    ImGuiCol_NavHighlight,
+    ImGuiCol_NavWindowingHighlight,
+    ImGuiCol_NavWindowingDimBg,
+    ImGuiCol_ModalWindowDimBg,
+    ImGuiCol_COUNT,
+}ImGuiCol_;
+typedef enum {
+    ImGuiStyleVar_Alpha,
+    ImGuiStyleVar_DisabledAlpha,
+    ImGuiStyleVar_WindowPadding,
+    ImGuiStyleVar_WindowRounding,
+    ImGuiStyleVar_WindowBorderSize,
+    ImGuiStyleVar_WindowMinSize,
+    ImGuiStyleVar_WindowTitleAlign,
+    ImGuiStyleVar_ChildRounding,
+    ImGuiStyleVar_ChildBorderSize,
+    ImGuiStyleVar_PopupRounding,
+    ImGuiStyleVar_PopupBorderSize,
+    ImGuiStyleVar_FramePadding,
+    ImGuiStyleVar_FrameRounding,
+    ImGuiStyleVar_FrameBorderSize,
+    ImGuiStyleVar_ItemSpacing,
+    ImGuiStyleVar_ItemInnerSpacing,
+    ImGuiStyleVar_IndentSpacing,
+    ImGuiStyleVar_CellPadding,
+    ImGuiStyleVar_ScrollbarSize,
+    ImGuiStyleVar_ScrollbarRounding,
+    ImGuiStyleVar_GrabMinSize,
+    ImGuiStyleVar_GrabRounding,
+    ImGuiStyleVar_TabRounding,
+    ImGuiStyleVar_TabBorderSize,
+    ImGuiStyleVar_TabBarBorderSize,
+    ImGuiStyleVar_TabBarOverlineSize,
+    ImGuiStyleVar_TableAngledHeadersAngle,
+    ImGuiStyleVar_TableAngledHeadersTextAlign,
+    ImGuiStyleVar_ButtonTextAlign,
+    ImGuiStyleVar_SelectableTextAlign,
+    ImGuiStyleVar_SeparatorTextBorderSize,
+    ImGuiStyleVar_SeparatorTextAlign,
+    ImGuiStyleVar_SeparatorTextPadding,
+    ImGuiStyleVar_DockingSeparatorSize,
+    ImGuiStyleVar_COUNT
+}ImGuiStyleVar_;
+typedef enum {
+    ImGuiButtonFlags_None = 0,
+    ImGuiButtonFlags_MouseButtonLeft = 1 << 0,
+    ImGuiButtonFlags_MouseButtonRight = 1 << 1,
+    ImGuiButtonFlags_MouseButtonMiddle = 1 << 2,
+    ImGuiButtonFlags_MouseButtonMask_ = ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight | ImGuiButtonFlags_MouseButtonMiddle,
+}ImGuiButtonFlags_;
+typedef enum {
+    ImGuiColorEditFlags_None = 0,
+    ImGuiColorEditFlags_NoAlpha = 1 << 1,
+    ImGuiColorEditFlags_NoPicker = 1 << 2,
+    ImGuiColorEditFlags_NoOptions = 1 << 3,
+    ImGuiColorEditFlags_NoSmallPreview = 1 << 4,
+    ImGuiColorEditFlags_NoInputs = 1 << 5,
+    ImGuiColorEditFlags_NoTooltip = 1 << 6,
+    ImGuiColorEditFlags_NoLabel = 1 << 7,
+    ImGuiColorEditFlags_NoSidePreview = 1 << 8,
+    ImGuiColorEditFlags_NoDragDrop = 1 << 9,
+    ImGuiColorEditFlags_NoBorder = 1 << 10,
+    ImGuiColorEditFlags_AlphaBar = 1 << 16,
+    ImGuiColorEditFlags_AlphaPreview = 1 << 17,
+    ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18,
+    ImGuiColorEditFlags_HDR = 1 << 19,
+    ImGuiColorEditFlags_DisplayRGB = 1 << 20,
+    ImGuiColorEditFlags_DisplayHSV = 1 << 21,
+    ImGuiColorEditFlags_DisplayHex = 1 << 22,
+    ImGuiColorEditFlags_Uint8 = 1 << 23,
+    ImGuiColorEditFlags_Float = 1 << 24,
+    ImGuiColorEditFlags_PickerHueBar = 1 << 25,
+    ImGuiColorEditFlags_PickerHueWheel = 1 << 26,
+    ImGuiColorEditFlags_InputRGB = 1 << 27,
+    ImGuiColorEditFlags_InputHSV = 1 << 28,
+    ImGuiColorEditFlags_DefaultOptions_ = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_PickerHueBar,
+    ImGuiColorEditFlags_DisplayMask_ = ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_DisplayHSV | ImGuiColorEditFlags_DisplayHex,
+    ImGuiColorEditFlags_DataTypeMask_ = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_Float,
+    ImGuiColorEditFlags_PickerMask_ = ImGuiColorEditFlags_PickerHueWheel | ImGuiColorEditFlags_PickerHueBar,
+    ImGuiColorEditFlags_InputMask_ = ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_InputHSV,
+}ImGuiColorEditFlags_;
+typedef enum {
+    ImGuiSliderFlags_None = 0,
+    ImGuiSliderFlags_AlwaysClamp = 1 << 4,
+    ImGuiSliderFlags_Logarithmic = 1 << 5,
+    ImGuiSliderFlags_NoRoundToFormat = 1 << 6,
+    ImGuiSliderFlags_NoInput = 1 << 7,
+    ImGuiSliderFlags_WrapAround = 1 << 8,
+    ImGuiSliderFlags_InvalidMask_ = 0x7000000F,
+}ImGuiSliderFlags_;
+typedef enum {
+    ImGuiMouseButton_Left = 0,
+    ImGuiMouseButton_Right = 1,
+    ImGuiMouseButton_Middle = 2,
+    ImGuiMouseButton_COUNT = 5
+}ImGuiMouseButton_;
+typedef enum {
+    ImGuiMouseCursor_None = -1,
+    ImGuiMouseCursor_Arrow = 0,
+    ImGuiMouseCursor_TextInput,
+    ImGuiMouseCursor_ResizeAll,
+    ImGuiMouseCursor_ResizeNS,
+    ImGuiMouseCursor_ResizeEW,
+    ImGuiMouseCursor_ResizeNESW,
+    ImGuiMouseCursor_ResizeNWSE,
+    ImGuiMouseCursor_Hand,
+    ImGuiMouseCursor_NotAllowed,
+    ImGuiMouseCursor_COUNT
+}ImGuiMouseCursor_;
+typedef enum {
+ImGuiMouseSource_Mouse=0,
+ImGuiMouseSource_TouchScreen=1,
+ImGuiMouseSource_Pen=2,
+ImGuiMouseSource_COUNT=3,
+}ImGuiMouseSource;
+typedef enum {
+    ImGuiCond_None = 0,
+    ImGuiCond_Always = 1 << 0,
+    ImGuiCond_Once = 1 << 1,
+    ImGuiCond_FirstUseEver = 1 << 2,
+    ImGuiCond_Appearing = 1 << 3,
+}ImGuiCond_;
+typedef enum {
+    ImGuiTableFlags_None = 0,
+    ImGuiTableFlags_Resizable = 1 << 0,
+    ImGuiTableFlags_Reorderable = 1 << 1,
+    ImGuiTableFlags_Hideable = 1 << 2,
+    ImGuiTableFlags_Sortable = 1 << 3,
+    ImGuiTableFlags_NoSavedSettings = 1 << 4,
+    ImGuiTableFlags_ContextMenuInBody = 1 << 5,
+    ImGuiTableFlags_RowBg = 1 << 6,
+    ImGuiTableFlags_BordersInnerH = 1 << 7,
+    ImGuiTableFlags_BordersOuterH = 1 << 8,
+    ImGuiTableFlags_BordersInnerV = 1 << 9,
+    ImGuiTableFlags_BordersOuterV = 1 << 10,
+    ImGuiTableFlags_BordersH = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH,
+    ImGuiTableFlags_BordersV = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV,
+    ImGuiTableFlags_BordersInner = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH,
+    ImGuiTableFlags_BordersOuter = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH,
+    ImGuiTableFlags_Borders = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter,
+    ImGuiTableFlags_NoBordersInBody = 1 << 11,
+    ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12,
+    ImGuiTableFlags_SizingFixedFit = 1 << 13,
+    ImGuiTableFlags_SizingFixedSame = 2 << 13,
+    ImGuiTableFlags_SizingStretchProp = 3 << 13,
+    ImGuiTableFlags_SizingStretchSame = 4 << 13,
+    ImGuiTableFlags_NoHostExtendX = 1 << 16,
+    ImGuiTableFlags_NoHostExtendY = 1 << 17,
+    ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18,
+    ImGuiTableFlags_PreciseWidths = 1 << 19,
+    ImGuiTableFlags_NoClip = 1 << 20,
+    ImGuiTableFlags_PadOuterX = 1 << 21,
+    ImGuiTableFlags_NoPadOuterX = 1 << 22,
+    ImGuiTableFlags_NoPadInnerX = 1 << 23,
+    ImGuiTableFlags_ScrollX = 1 << 24,
+    ImGuiTableFlags_ScrollY = 1 << 25,
+    ImGuiTableFlags_SortMulti = 1 << 26,
+    ImGuiTableFlags_SortTristate = 1 << 27,
+    ImGuiTableFlags_HighlightHoveredColumn = 1 << 28,
+    ImGuiTableFlags_SizingMask_ = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchSame,
+}ImGuiTableFlags_;
+typedef enum {
+    ImGuiTableColumnFlags_None = 0,
+    ImGuiTableColumnFlags_Disabled = 1 << 0,
+    ImGuiTableColumnFlags_DefaultHide = 1 << 1,
+    ImGuiTableColumnFlags_DefaultSort = 1 << 2,
+    ImGuiTableColumnFlags_WidthStretch = 1 << 3,
+    ImGuiTableColumnFlags_WidthFixed = 1 << 4,
+    ImGuiTableColumnFlags_NoResize = 1 << 5,
+    ImGuiTableColumnFlags_NoReorder = 1 << 6,
+    ImGuiTableColumnFlags_NoHide = 1 << 7,
+    ImGuiTableColumnFlags_NoClip = 1 << 8,
+    ImGuiTableColumnFlags_NoSort = 1 << 9,
+    ImGuiTableColumnFlags_NoSortAscending = 1 << 10,
+    ImGuiTableColumnFlags_NoSortDescending = 1 << 11,
+    ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12,
+    ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13,
+    ImGuiTableColumnFlags_PreferSortAscending = 1 << 14,
+    ImGuiTableColumnFlags_PreferSortDescending = 1 << 15,
+    ImGuiTableColumnFlags_IndentEnable = 1 << 16,
+    ImGuiTableColumnFlags_IndentDisable = 1 << 17,
+    ImGuiTableColumnFlags_AngledHeader = 1 << 18,
+    ImGuiTableColumnFlags_IsEnabled = 1 << 24,
+    ImGuiTableColumnFlags_IsVisible = 1 << 25,
+    ImGuiTableColumnFlags_IsSorted = 1 << 26,
+    ImGuiTableColumnFlags_IsHovered = 1 << 27,
+    ImGuiTableColumnFlags_WidthMask_ = ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_WidthFixed,
+    ImGuiTableColumnFlags_IndentMask_ = ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_IndentDisable,
+    ImGuiTableColumnFlags_StatusMask_ = ImGuiTableColumnFlags_IsEnabled | ImGuiTableColumnFlags_IsVisible | ImGuiTableColumnFlags_IsSorted | ImGuiTableColumnFlags_IsHovered,
+    ImGuiTableColumnFlags_NoDirectResize_ = 1 << 30,
+}ImGuiTableColumnFlags_;
+typedef enum {
+    ImGuiTableRowFlags_None = 0,
+    ImGuiTableRowFlags_Headers = 1 << 0,
+}ImGuiTableRowFlags_;
+typedef enum {
+    ImGuiTableBgTarget_None = 0,
+    ImGuiTableBgTarget_RowBg0 = 1,
+    ImGuiTableBgTarget_RowBg1 = 2,
+    ImGuiTableBgTarget_CellBg = 3,
+}ImGuiTableBgTarget_;
+struct ImGuiTableSortSpecs
+{
+    const ImGuiTableColumnSortSpecs* Specs;
+    int SpecsCount;
+    bool SpecsDirty;
+};
+struct ImGuiTableColumnSortSpecs
+{
+    ImGuiID ColumnUserID;
+    ImS16 ColumnIndex;
+    ImS16 SortOrder;
+    ImGuiSortDirection SortDirection;
+};
+struct ImGuiStyle
+{
+    float Alpha;
+    float DisabledAlpha;
+    ImVec2 WindowPadding;
+    float WindowRounding;
+    float WindowBorderSize;
+    ImVec2 WindowMinSize;
+    ImVec2 WindowTitleAlign;
+    ImGuiDir WindowMenuButtonPosition;
+    float ChildRounding;
+    float ChildBorderSize;
+    float PopupRounding;
+    float PopupBorderSize;
+    ImVec2 FramePadding;
+    float FrameRounding;
+    float FrameBorderSize;
+    ImVec2 ItemSpacing;
+    ImVec2 ItemInnerSpacing;
+    ImVec2 CellPadding;
+    ImVec2 TouchExtraPadding;
+    float IndentSpacing;
+    float ColumnsMinSpacing;
+    float ScrollbarSize;
+    float ScrollbarRounding;
+    float GrabMinSize;
+    float GrabRounding;
+    float LogSliderDeadzone;
+    float TabRounding;
+    float TabBorderSize;
+    float TabMinWidthForCloseButton;
+    float TabBarBorderSize;
+    float TabBarOverlineSize;
+    float TableAngledHeadersAngle;
+    ImVec2 TableAngledHeadersTextAlign;
+    ImGuiDir ColorButtonPosition;
+    ImVec2 ButtonTextAlign;
+    ImVec2 SelectableTextAlign;
+    float SeparatorTextBorderSize;
+    ImVec2 SeparatorTextAlign;
+    ImVec2 SeparatorTextPadding;
+    ImVec2 DisplayWindowPadding;
+    ImVec2 DisplaySafeAreaPadding;
+    float DockingSeparatorSize;
+    float MouseCursorScale;
+    bool AntiAliasedLines;
+    bool AntiAliasedLinesUseTex;
+    bool AntiAliasedFill;
+    float CurveTessellationTol;
+    float CircleTessellationMaxError;
+    ImVec4 Colors[ImGuiCol_COUNT];
+    float HoverStationaryDelay;
+    float HoverDelayShort;
+    float HoverDelayNormal;
+    ImGuiHoveredFlags HoverFlagsForTooltipMouse;
+    ImGuiHoveredFlags HoverFlagsForTooltipNav;
+};
+struct ImGuiKeyData
+{
+    bool Down;
+    float DownDuration;
+    float DownDurationPrev;
+    float AnalogValue;
+};
+typedef struct ImVector_ImWchar {int Size;int Capacity;ImWchar* Data;} ImVector_ImWchar;
+
+struct ImGuiIO
+{
+    ImGuiConfigFlags ConfigFlags;
+    ImGuiBackendFlags BackendFlags;
+    ImVec2 DisplaySize;
+    float DeltaTime;
+    float IniSavingRate;
+    const char* IniFilename;
+    const char* LogFilename;
+    void* UserData;
+    ImFontAtlas*Fonts;
+    float FontGlobalScale;
+    bool FontAllowUserScaling;
+    ImFont* FontDefault;
+    ImVec2 DisplayFramebufferScale;
+    bool ConfigDockingNoSplit;
+    bool ConfigDockingWithShift;
+    bool ConfigDockingAlwaysTabBar;
+    bool ConfigDockingTransparentPayload;
+    bool ConfigViewportsNoAutoMerge;
+    bool ConfigViewportsNoTaskBarIcon;
+    bool ConfigViewportsNoDecoration;
+    bool ConfigViewportsNoDefaultParent;
+    bool MouseDrawCursor;
+    bool ConfigMacOSXBehaviors;
+    bool ConfigNavSwapGamepadButtons;
+    bool ConfigInputTrickleEventQueue;
+    bool ConfigInputTextCursorBlink;
+    bool ConfigInputTextEnterKeepActive;
+    bool ConfigDragClickToInputText;
+    bool ConfigWindowsResizeFromEdges;
+    bool ConfigWindowsMoveFromTitleBarOnly;
+    float ConfigMemoryCompactTimer;
+    float MouseDoubleClickTime;
+    float MouseDoubleClickMaxDist;
+    float MouseDragThreshold;
+    float KeyRepeatDelay;
+    float KeyRepeatRate;
+    bool ConfigDebugIsDebuggerPresent;
+    bool ConfigDebugBeginReturnValueOnce;
+    bool ConfigDebugBeginReturnValueLoop;
+    bool ConfigDebugIgnoreFocusLoss;
+    bool ConfigDebugIniSettings;
+    const char* BackendPlatformName;
+    const char* BackendRendererName;
+    void* BackendPlatformUserData;
+    void* BackendRendererUserData;
+    void* BackendLanguageUserData;
+    bool WantCaptureMouse;
+    bool WantCaptureKeyboard;
+    bool WantTextInput;
+    bool WantSetMousePos;
+    bool WantSaveIniSettings;
+    bool NavActive;
+    bool NavVisible;
+    float Framerate;
+    int MetricsRenderVertices;
+    int MetricsRenderIndices;
+    int MetricsRenderWindows;
+    int MetricsActiveWindows;
+    ImVec2 MouseDelta;
+    ImGuiContext* Ctx;
+    ImVec2 MousePos;
+    bool MouseDown[5];
+    float MouseWheel;
+    float MouseWheelH;
+    ImGuiMouseSource MouseSource;
+    ImGuiID MouseHoveredViewport;
+    bool KeyCtrl;
+    bool KeyShift;
+    bool KeyAlt;
+    bool KeySuper;
+    ImGuiKeyChord KeyMods;
+    ImGuiKeyData KeysData[ImGuiKey_KeysData_SIZE];
+    bool WantCaptureMouseUnlessPopupClose;
+    ImVec2 MousePosPrev;
+    ImVec2 MouseClickedPos[5];
+    double MouseClickedTime[5];
+    bool MouseClicked[5];
+    bool MouseDoubleClicked[5];
+    ImU16 MouseClickedCount[5];
+    ImU16 MouseClickedLastCount[5];
+    bool MouseReleased[5];
+    bool MouseDownOwned[5];
+    bool MouseDownOwnedUnlessPopupClose[5];
+    bool MouseWheelRequestAxisSwap;
+    bool MouseCtrlLeftAsRightClick;
+    float MouseDownDuration[5];
+    float MouseDownDurationPrev[5];
+    ImVec2 MouseDragMaxDistanceAbs[5];
+    float MouseDragMaxDistanceSqr[5];
+    float PenPressure;
+    bool AppFocusLost;
+    bool AppAcceptingEvents;
+    ImS8 BackendUsingLegacyKeyArrays;
+    bool BackendUsingLegacyNavInputArray;
+    ImWchar16 InputQueueSurrogate;
+    ImVector_ImWchar InputQueueCharacters;
+};
+struct ImGuiInputTextCallbackData
+{
+    ImGuiContext* Ctx;
+    ImGuiInputTextFlags EventFlag;
+    ImGuiInputTextFlags Flags;
+    void* UserData;
+    ImWchar EventChar;
+    ImGuiKey EventKey;
+    char* Buf;
+    int BufTextLen;
+    int BufSize;
+    bool BufDirty;
+    int CursorPos;
+    int SelectionStart;
+    int SelectionEnd;
+};
+struct ImGuiSizeCallbackData
+{
+    void* UserData;
+    ImVec2 Pos;
+    ImVec2 CurrentSize;
+    ImVec2 DesiredSize;
+};
+struct ImGuiWindowClass
+{
+    ImGuiID ClassId;
+    ImGuiID ParentViewportId;
+    ImGuiID FocusRouteParentWindowId;
+    ImGuiViewportFlags ViewportFlagsOverrideSet;
+    ImGuiViewportFlags ViewportFlagsOverrideClear;
+    ImGuiTabItemFlags TabItemFlagsOverrideSet;
+    ImGuiDockNodeFlags DockNodeFlagsOverrideSet;
+    bool DockingAlwaysTabBar;
+    bool DockingAllowUnclassed;
+};
+struct ImGuiPayload
+{
+    void* Data;
+    int DataSize;
+    ImGuiID SourceId;
+    ImGuiID SourceParentId;
+    int DataFrameCount;
+    char DataType[32 + 1];
+    bool Preview;
+    bool Delivery;
+};
+struct ImGuiOnceUponAFrame
+{
+     int RefFrame;
+};
+struct ImGuiTextRange
+{
+        const char* b;
+        const char* e;
+};
+typedef struct ImGuiTextRange ImGuiTextRange;
+
+typedef struct ImVector_ImGuiTextRange {int Size;int Capacity;ImGuiTextRange* Data;} ImVector_ImGuiTextRange;
+
+struct ImGuiTextFilter
+{
+    char InputBuf[256];
+    ImVector_ImGuiTextRange Filters;
+    int CountGrep;
+};
+typedef struct ImGuiTextRange ImGuiTextRange;
+typedef struct ImVector_char {int Size;int Capacity;char* Data;} ImVector_char;
+
+struct ImGuiTextBuffer
+{
+    ImVector_char Buf;
+};
+struct ImGuiStoragePair
+{
+    ImGuiID key;
+    union { int val_i; float val_f; void* val_p; };
+};
+typedef struct ImVector_ImGuiStoragePair {int Size;int Capacity;ImGuiStoragePair* Data;} ImVector_ImGuiStoragePair;
+
+struct ImGuiStorage
+{
+    ImVector_ImGuiStoragePair Data;
+};
+struct ImGuiListClipper
+{
+    ImGuiContext* Ctx;
+    int DisplayStart;
+    int DisplayEnd;
+    int ItemsCount;
+    float ItemsHeight;
+    float StartPosY;
+    double StartSeekOffsetY;
+    void* TempData;
+};
+struct ImColor
+{
+    ImVec4 Value;
+};
+typedef enum {
+    ImGuiMultiSelectFlags_None = 0,
+    ImGuiMultiSelectFlags_SingleSelect = 1 << 0,
+    ImGuiMultiSelectFlags_NoSelectAll = 1 << 1,
+    ImGuiMultiSelectFlags_NoRangeSelect = 1 << 2,
+    ImGuiMultiSelectFlags_NoAutoSelect = 1 << 3,
+    ImGuiMultiSelectFlags_NoAutoClear = 1 << 4,
+    ImGuiMultiSelectFlags_NoAutoClearOnReselect = 1 << 5,
+    ImGuiMultiSelectFlags_BoxSelect1d = 1 << 6,
+    ImGuiMultiSelectFlags_BoxSelect2d = 1 << 7,
+    ImGuiMultiSelectFlags_BoxSelectNoScroll = 1 << 8,
+    ImGuiMultiSelectFlags_ClearOnEscape = 1 << 9,
+    ImGuiMultiSelectFlags_ClearOnClickVoid = 1 << 10,
+    ImGuiMultiSelectFlags_ScopeWindow = 1 << 11,
+    ImGuiMultiSelectFlags_ScopeRect = 1 << 12,
+    ImGuiMultiSelectFlags_SelectOnClick = 1 << 13,
+    ImGuiMultiSelectFlags_SelectOnClickRelease = 1 << 14,
+    ImGuiMultiSelectFlags_NavWrapX = 1 << 16,
+}ImGuiMultiSelectFlags_;
+typedef struct ImVector_ImGuiSelectionRequest {int Size;int Capacity;ImGuiSelectionRequest* Data;} ImVector_ImGuiSelectionRequest;
+
+struct ImGuiMultiSelectIO
+{
+    ImVector_ImGuiSelectionRequest Requests;
+    ImGuiSelectionUserData RangeSrcItem;
+    ImGuiSelectionUserData NavIdItem;
+    bool NavIdSelected;
+    bool RangeSrcReset;
+    int ItemsCount;
+};
+typedef enum {
+    ImGuiSelectionRequestType_None = 0,
+    ImGuiSelectionRequestType_SetAll,
+    ImGuiSelectionRequestType_SetRange,
+}ImGuiSelectionRequestType;
+struct ImGuiSelectionRequest
+{
+    ImGuiSelectionRequestType Type;
+    bool Selected;
+    ImS8 RangeDirection;
+    ImGuiSelectionUserData RangeFirstItem;
+    ImGuiSelectionUserData RangeLastItem;
+};
+struct ImGuiSelectionBasicStorage
+{
+    int Size;
+    bool PreserveOrder;
+    void* UserData;
+    ImGuiID (*AdapterIndexToStorageId)(ImGuiSelectionBasicStorage* self, int idx);
+    int _SelectionOrder;
+    ImGuiStorage _Storage;
+};
+struct ImGuiSelectionExternalStorage
+{
+    void* UserData;
+    void (*AdapterSetItemSelected)(ImGuiSelectionExternalStorage* self, int idx, bool selected);
+};
+typedef void (*ImDrawCallback)(const ImDrawList* parent_list, const ImDrawCmd* cmd);
+struct ImDrawCmd
+{
+    ImVec4 ClipRect;
+    ImTextureID TextureId;
+    unsigned int VtxOffset;
+    unsigned int IdxOffset;
+    unsigned int ElemCount;
+    ImDrawCallback UserCallback;
+    void* UserCallbackData;
+};
+struct ImDrawVert
+{
+    ImVec2 pos;
+    ImVec2 uv;
+    ImU32 col;
+};
+typedef struct ImDrawCmdHeader ImDrawCmdHeader;
+struct ImDrawCmdHeader
+{
+    ImVec4 ClipRect;
+    ImTextureID TextureId;
+    unsigned int VtxOffset;
+};
+typedef struct ImVector_ImDrawCmd {int Size;int Capacity;ImDrawCmd* Data;} ImVector_ImDrawCmd;
+
+typedef struct ImVector_ImDrawIdx {int Size;int Capacity;ImDrawIdx* Data;} ImVector_ImDrawIdx;
+
+struct ImDrawChannel
+{
+    ImVector_ImDrawCmd _CmdBuffer;
+    ImVector_ImDrawIdx _IdxBuffer;
+};
+typedef struct ImVector_ImDrawChannel {int Size;int Capacity;ImDrawChannel* Data;} ImVector_ImDrawChannel;
+
+struct ImDrawListSplitter
+{
+    int _Current;
+    int _Count;
+    ImVector_ImDrawChannel _Channels;
+};
+typedef enum {
+    ImDrawFlags_None = 0,
+    ImDrawFlags_Closed = 1 << 0,
+    ImDrawFlags_RoundCornersTopLeft = 1 << 4,
+    ImDrawFlags_RoundCornersTopRight = 1 << 5,
+    ImDrawFlags_RoundCornersBottomLeft = 1 << 6,
+    ImDrawFlags_RoundCornersBottomRight = 1 << 7,
+    ImDrawFlags_RoundCornersNone = 1 << 8,
+    ImDrawFlags_RoundCornersTop = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight,
+    ImDrawFlags_RoundCornersBottom = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
+    ImDrawFlags_RoundCornersLeft = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersTopLeft,
+    ImDrawFlags_RoundCornersRight = ImDrawFlags_RoundCornersBottomRight | ImDrawFlags_RoundCornersTopRight,
+    ImDrawFlags_RoundCornersAll = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight | ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
+    ImDrawFlags_RoundCornersDefault_ = ImDrawFlags_RoundCornersAll,
+    ImDrawFlags_RoundCornersMask_ = ImDrawFlags_RoundCornersAll | ImDrawFlags_RoundCornersNone,
+}ImDrawFlags_;
+typedef enum {
+    ImDrawListFlags_None = 0,
+    ImDrawListFlags_AntiAliasedLines = 1 << 0,
+    ImDrawListFlags_AntiAliasedLinesUseTex = 1 << 1,
+    ImDrawListFlags_AntiAliasedFill = 1 << 2,
+    ImDrawListFlags_AllowVtxOffset = 1 << 3,
+}ImDrawListFlags_;
+typedef struct ImVector_ImDrawVert {int Size;int Capacity;ImDrawVert* Data;} ImVector_ImDrawVert;
+
+typedef struct ImVector_ImVec2 {int Size;int Capacity;ImVec2* Data;} ImVector_ImVec2;
+
+typedef struct ImVector_ImVec4 {int Size;int Capacity;ImVec4* Data;} ImVector_ImVec4;
+
+typedef struct ImVector_ImTextureID {int Size;int Capacity;ImTextureID* Data;} ImVector_ImTextureID;
+
+struct ImDrawList
+{
+    ImVector_ImDrawCmd CmdBuffer;
+    ImVector_ImDrawIdx IdxBuffer;
+    ImVector_ImDrawVert VtxBuffer;
+    ImDrawListFlags Flags;
+    unsigned int _VtxCurrentIdx;
+    ImDrawListSharedData* _Data;
+    ImDrawVert* _VtxWritePtr;
+    ImDrawIdx* _IdxWritePtr;
+    ImVector_ImVec2 _Path;
+    ImDrawCmdHeader _CmdHeader;
+    ImDrawListSplitter _Splitter;
+    ImVector_ImVec4 _ClipRectStack;
+    ImVector_ImTextureID _TextureIdStack;
+    float _FringeScale;
+    const char* _OwnerName;
+};
+typedef struct ImVector_ImDrawListPtr {int Size;int Capacity;ImDrawList** Data;} ImVector_ImDrawListPtr;
+
+struct ImDrawData
+{
+    bool Valid;
+    int CmdListsCount;
+    int TotalIdxCount;
+    int TotalVtxCount;
+    ImVector_ImDrawListPtr CmdLists;
+    ImVec2 DisplayPos;
+    ImVec2 DisplaySize;
+    ImVec2 FramebufferScale;
+    ImGuiViewport* OwnerViewport;
+};
+struct ImFontConfig
+{
+    void* FontData;
+    int FontDataSize;
+    bool FontDataOwnedByAtlas;
+    int FontNo;
+    float SizePixels;
+    int OversampleH;
+    int OversampleV;
+    bool PixelSnapH;
+    ImVec2 GlyphExtraSpacing;
+    ImVec2 GlyphOffset;
+    const ImWchar* GlyphRanges;
+    float GlyphMinAdvanceX;
+    float GlyphMaxAdvanceX;
+    bool MergeMode;
+    unsigned int FontBuilderFlags;
+    float RasterizerMultiply;
+    float RasterizerDensity;
+    ImWchar EllipsisChar;
+    char Name[40];
+    ImFont* DstFont;
+};
+struct ImFontGlyph
+{
+    unsigned int Colored : 1;
+    unsigned int Visible : 1;
+    unsigned int Codepoint : 30;
+    float AdvanceX;
+    float X0, Y0, X1, Y1;
+    float U0, V0, U1, V1;
+};
+typedef struct ImVector_ImU32 {int Size;int Capacity;ImU32* Data;} ImVector_ImU32;
+
+struct ImFontGlyphRangesBuilder
+{
+    ImVector_ImU32 UsedChars;
+};
+typedef struct ImFontAtlasCustomRect ImFontAtlasCustomRect;
+struct ImFontAtlasCustomRect
+{
+    unsigned short Width, Height;
+    unsigned short X, Y;
+    unsigned int GlyphID;
+    float GlyphAdvanceX;
+    ImVec2 GlyphOffset;
+    ImFont* Font;
+};
+typedef enum {
+    ImFontAtlasFlags_None = 0,
+    ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0,
+    ImFontAtlasFlags_NoMouseCursors = 1 << 1,
+    ImFontAtlasFlags_NoBakedLines = 1 << 2,
+}ImFontAtlasFlags_;
+typedef struct ImVector_ImFontPtr {int Size;int Capacity;ImFont** Data;} ImVector_ImFontPtr;
+
+typedef struct ImVector_ImFontAtlasCustomRect {int Size;int Capacity;ImFontAtlasCustomRect* Data;} ImVector_ImFontAtlasCustomRect;
+
+typedef struct ImVector_ImFontConfig {int Size;int Capacity;ImFontConfig* Data;} ImVector_ImFontConfig;
+
+struct ImFontAtlas
+{
+    ImFontAtlasFlags Flags;
+    ImTextureID TexID;
+    int TexDesiredWidth;
+    int TexGlyphPadding;
+    bool Locked;
+    void* UserData;
+    bool TexReady;
+    bool TexPixelsUseColors;
+    unsigned char* TexPixelsAlpha8;
+    unsigned int* TexPixelsRGBA32;
+    int TexWidth;
+    int TexHeight;
+    ImVec2 TexUvScale;
+    ImVec2 TexUvWhitePixel;
+    ImVector_ImFontPtr Fonts;
+    ImVector_ImFontAtlasCustomRect CustomRects;
+    ImVector_ImFontConfig ConfigData;
+    ImVec4 TexUvLines[(63) + 1];
+    const ImFontBuilderIO* FontBuilderIO;
+    unsigned int FontBuilderFlags;
+    int PackIdMouseCursors;
+    int PackIdLines;
+};
+typedef struct ImVector_float {int Size;int Capacity;float* Data;} ImVector_float;
+
+typedef struct ImVector_ImFontGlyph {int Size;int Capacity;ImFontGlyph* Data;} ImVector_ImFontGlyph;
+
+struct ImFont
+{
+    ImVector_float IndexAdvanceX;
+    float FallbackAdvanceX;
+    float FontSize;
+    ImVector_ImWchar IndexLookup;
+    ImVector_ImFontGlyph Glyphs;
+    const ImFontGlyph* FallbackGlyph;
+    ImFontAtlas* ContainerAtlas;
+    const ImFontConfig* ConfigData;
+    short ConfigDataCount;
+    ImWchar FallbackChar;
+    ImWchar EllipsisChar;
+    short EllipsisCharCount;
+    float EllipsisWidth;
+    float EllipsisCharStep;
+    bool DirtyLookupTables;
+    float Scale;
+    float Ascent, Descent;
+    int MetricsTotalSurface;
+    ImU8 Used4kPagesMap[(0xFFFF +1)/4096/8];
+};
+typedef enum {
+    ImGuiViewportFlags_None = 0,
+    ImGuiViewportFlags_IsPlatformWindow = 1 << 0,
+    ImGuiViewportFlags_IsPlatformMonitor = 1 << 1,
+    ImGuiViewportFlags_OwnedByApp = 1 << 2,
+    ImGuiViewportFlags_NoDecoration = 1 << 3,
+    ImGuiViewportFlags_NoTaskBarIcon = 1 << 4,
+    ImGuiViewportFlags_NoFocusOnAppearing = 1 << 5,
+    ImGuiViewportFlags_NoFocusOnClick = 1 << 6,
+    ImGuiViewportFlags_NoInputs = 1 << 7,
+    ImGuiViewportFlags_NoRendererClear = 1 << 8,
+    ImGuiViewportFlags_NoAutoMerge = 1 << 9,
+    ImGuiViewportFlags_TopMost = 1 << 10,
+    ImGuiViewportFlags_CanHostOtherWindows = 1 << 11,
+    ImGuiViewportFlags_IsMinimized = 1 << 12,
+    ImGuiViewportFlags_IsFocused = 1 << 13,
+}ImGuiViewportFlags_;
+struct ImGuiViewport
+{
+    ImGuiID ID;
+    ImGuiViewportFlags Flags;
+    ImVec2 Pos;
+    ImVec2 Size;
+    ImVec2 WorkPos;
+    ImVec2 WorkSize;
+    float DpiScale;
+    ImGuiID ParentViewportId;
+    ImDrawData* DrawData;
+    void* RendererUserData;
+    void* PlatformUserData;
+    void* PlatformHandle;
+    void* PlatformHandleRaw;
+    bool PlatformWindowCreated;
+    bool PlatformRequestMove;
+    bool PlatformRequestResize;
+    bool PlatformRequestClose;
+};
+typedef struct ImVector_ImGuiPlatformMonitor {int Size;int Capacity;ImGuiPlatformMonitor* Data;} ImVector_ImGuiPlatformMonitor;
+
+typedef struct ImVector_ImGuiViewportPtr {int Size;int Capacity;ImGuiViewport** Data;} ImVector_ImGuiViewportPtr;
+
+struct ImGuiPlatformIO
+{
+    const char* (*Platform_GetClipboardTextFn)(ImGuiContext* ctx);
+    void (*Platform_SetClipboardTextFn)(ImGuiContext* ctx, const char* text);
+    void* Platform_ClipboardUserData;
+    bool (*Platform_OpenInShellFn)(ImGuiContext* ctx, const char* path);
+    void* Platform_OpenInShellUserData;
+    void (*Platform_SetImeDataFn)(ImGuiContext* ctx, ImGuiViewport* viewport, ImGuiPlatformImeData* data);
+    void* Platform_ImeUserData;
+    ImWchar Platform_LocaleDecimalPoint;
+    void (*Platform_CreateWindow)(ImGuiViewport* vp);
+    void (*Platform_DestroyWindow)(ImGuiViewport* vp);
+    void (*Platform_ShowWindow)(ImGuiViewport* vp);
+    void (*Platform_SetWindowPos)(ImGuiViewport* vp, ImVec2 pos);
+    ImVec2 (*Platform_GetWindowPos)(ImGuiViewport* vp);
+    void (*Platform_SetWindowSize)(ImGuiViewport* vp, ImVec2 size);
+    ImVec2 (*Platform_GetWindowSize)(ImGuiViewport* vp);
+    void (*Platform_SetWindowFocus)(ImGuiViewport* vp);
+    bool (*Platform_GetWindowFocus)(ImGuiViewport* vp);
+    bool (*Platform_GetWindowMinimized)(ImGuiViewport* vp);
+    void (*Platform_SetWindowTitle)(ImGuiViewport* vp, const char* str);
+    void (*Platform_SetWindowAlpha)(ImGuiViewport* vp, float alpha);
+    void (*Platform_UpdateWindow)(ImGuiViewport* vp);
+    void (*Platform_RenderWindow)(ImGuiViewport* vp, void* render_arg);
+    void (*Platform_SwapBuffers)(ImGuiViewport* vp, void* render_arg);
+    float (*Platform_GetWindowDpiScale)(ImGuiViewport* vp);
+    void (*Platform_OnChangedViewport)(ImGuiViewport* vp);
+    ImVec4 (*Platform_GetWindowWorkAreaInsets)(ImGuiViewport* vp);
+    int (*Platform_CreateVkSurface)(ImGuiViewport* vp, ImU64 vk_inst, const void* vk_allocators, ImU64* out_vk_surface);
+    void (*Renderer_CreateWindow)(ImGuiViewport* vp);
+    void (*Renderer_DestroyWindow)(ImGuiViewport* vp);
+    void (*Renderer_SetWindowSize)(ImGuiViewport* vp, ImVec2 size);
+    void (*Renderer_RenderWindow)(ImGuiViewport* vp, void* render_arg);
+    void (*Renderer_SwapBuffers)(ImGuiViewport* vp, void* render_arg);
+    ImVector_ImGuiPlatformMonitor Monitors;
+    ImVector_ImGuiViewportPtr Viewports;
+};
+struct ImGuiPlatformMonitor
+{
+    ImVec2 MainPos, MainSize;
+    ImVec2 WorkPos, WorkSize;
+    float DpiScale;
+    void* PlatformHandle;
+};
+struct ImGuiPlatformImeData
+{
+    bool WantVisible;
+    ImVec2 InputPos;
+    float InputLineHeight;
+};
+struct ImBitVector;
+struct ImRect;
+struct ImDrawDataBuilder;
+struct ImDrawListSharedData;
+struct ImGuiBoxSelectState;
+struct ImGuiColorMod;
+struct ImGuiContext;
+struct ImGuiContextHook;
+struct ImGuiDataVarInfo;
+struct ImGuiDataTypeInfo;
+struct ImGuiDockContext;
+struct ImGuiDockRequest;
+struct ImGuiDockNode;
+struct ImGuiDockNodeSettings;
+struct ImGuiGroupData;
+struct ImGuiInputTextState;
+struct ImGuiInputTextDeactivateData;
+struct ImGuiLastItemData;
+struct ImGuiLocEntry;
+struct ImGuiMenuColumns;
+struct ImGuiMultiSelectState;
+struct ImGuiMultiSelectTempData;
+struct ImGuiNavItemData;
+struct ImGuiMetricsConfig;
+struct ImGuiNextWindowData;
+struct ImGuiNextItemData;
+struct ImGuiOldColumnData;
+struct ImGuiOldColumns;
+struct ImGuiPopupData;
+struct ImGuiSettingsHandler;
+struct ImGuiStackSizes;
+struct ImGuiStyleMod;
+struct ImGuiTabBar;
+struct ImGuiTabItem;
+struct ImGuiTable;
+struct ImGuiTableHeaderData;
+struct ImGuiTableColumn;
+struct ImGuiTableInstanceData;
+struct ImGuiTableTempData;
+struct ImGuiTableSettings;
+struct ImGuiTableColumnsSettings;
+struct ImGuiTreeNodeStackData;
+struct ImGuiTypingSelectState;
+struct ImGuiTypingSelectRequest;
+struct ImGuiWindow;
+struct ImGuiWindowDockStyle;
+struct ImGuiWindowTempData;
+struct ImGuiWindowSettings;
+typedef int ImGuiDataAuthority;
+typedef int ImGuiLayoutType;
+typedef int ImGuiActivateFlags;
+typedef int ImGuiDebugLogFlags;
+typedef int ImGuiFocusRequestFlags;
+typedef int ImGuiItemStatusFlags;
+typedef int ImGuiOldColumnFlags;
+typedef int ImGuiNavHighlightFlags;
+typedef int ImGuiNavMoveFlags;
+typedef int ImGuiNextItemDataFlags;
+typedef int ImGuiNextWindowDataFlags;
+typedef int ImGuiScrollFlags;
+typedef int ImGuiSeparatorFlags;
+typedef int ImGuiTextFlags;
+typedef int ImGuiTooltipFlags;
+typedef int ImGuiTypingSelectFlags;
+typedef int ImGuiWindowRefreshFlags;
+typedef void (*ImGuiErrorLogCallback)(void* user_data, const char* fmt, ...);
+extern ImGuiContext* GImGui;
+typedef struct StbUndoRecord StbUndoRecord;
+struct StbUndoRecord
+{
+   int where;
+   int insert_length;
+   int delete_length;
+   int char_storage;
+};
+typedef struct StbUndoState StbUndoState;
+struct StbUndoState
+{
+   StbUndoRecord undo_rec [99];
+   ImWchar undo_char[999];
+   short undo_point, redo_point;
+   int undo_char_point, redo_char_point;
+};
+typedef struct STB_TexteditState STB_TexteditState;
+struct STB_TexteditState
+{
+   int cursor;
+   int select_start;
+   int select_end;
+   unsigned char insert_mode;
+   int row_count_per_page;
+   unsigned char cursor_at_end_of_line;
+   unsigned char initialized;
+   unsigned char has_preferred_x;
+   unsigned char single_line;
+   unsigned char padding1, padding2, padding3;
+   float preferred_x;
+   StbUndoState undostate;
+};
+typedef struct StbTexteditRow StbTexteditRow;
+struct StbTexteditRow
+{
+   float x0,x1;
+   float baseline_y_delta;
+   float ymin,ymax;
+   int num_chars;
+};
+typedef FILE* ImFileHandle;
+typedef struct ImVec1 ImVec1;
+struct ImVec1
+{
+    float x;
+};
+typedef struct ImVec2ih ImVec2ih;
+struct ImVec2ih
+{
+    short x, y;
+};
+struct ImRect
+{
+    ImVec2 Min;
+    ImVec2 Max;
+};
+typedef ImU32* ImBitArrayPtr;
+struct ImBitVector
+{
+    ImVector_ImU32 Storage;
+};
+typedef int ImPoolIdx;
+typedef struct ImGuiTextIndex ImGuiTextIndex;
+typedef struct ImVector_int {int Size;int Capacity;int* Data;} ImVector_int;
+
+struct ImGuiTextIndex
+{
+    ImVector_int LineOffsets;
+    int EndOffset;
+};
+struct ImDrawListSharedData
+{
+    ImVec2 TexUvWhitePixel;
+    ImFont* Font;
+    float FontSize;
+    float FontScale;
+    float CurveTessellationTol;
+    float CircleSegmentMaxError;
+    ImVec4 ClipRectFullscreen;
+    ImDrawListFlags InitialFlags;
+    ImVector_ImVec2 TempBuffer;
+    ImVec2 ArcFastVtx[48];
+    float ArcFastRadiusCutoff;
+    ImU8 CircleSegmentCounts[64];
+    const ImVec4* TexUvLines;
+};
+struct ImDrawDataBuilder
+{
+    ImVector_ImDrawListPtr* Layers[2];
+    ImVector_ImDrawListPtr LayerData1;
+};
+struct ImGuiDataVarInfo
+{
+    ImGuiDataType Type;
+    ImU32 Count;
+    ImU32 Offset;
+};
+typedef struct ImGuiDataTypeStorage ImGuiDataTypeStorage;
+struct ImGuiDataTypeStorage
+{
+    ImU8 Data[8];
+};
+struct ImGuiDataTypeInfo
+{
+    size_t Size;
+    const char* Name;
+    const char* PrintFmt;
+    const char* ScanFmt;
+};
+typedef enum {
+    ImGuiDataType_String = ImGuiDataType_COUNT + 1,
+    ImGuiDataType_Pointer,
+    ImGuiDataType_ID,
+}ImGuiDataTypePrivate_;
+typedef enum {
+    ImGuiItemFlags_Disabled = 1 << 10,
+    ImGuiItemFlags_ReadOnly = 1 << 11,
+    ImGuiItemFlags_MixedValue = 1 << 12,
+    ImGuiItemFlags_NoWindowHoverableCheck = 1 << 13,
+    ImGuiItemFlags_AllowOverlap = 1 << 14,
+    ImGuiItemFlags_Inputable = 1 << 20,
+    ImGuiItemFlags_HasSelectionUserData = 1 << 21,
+    ImGuiItemFlags_IsMultiSelect = 1 << 22,
+    ImGuiItemFlags_Default_ = ImGuiItemFlags_AutoClosePopups,
+}ImGuiItemFlagsPrivate_;
+typedef enum {
+    ImGuiItemStatusFlags_None = 0,
+    ImGuiItemStatusFlags_HoveredRect = 1 << 0,
+    ImGuiItemStatusFlags_HasDisplayRect = 1 << 1,
+    ImGuiItemStatusFlags_Edited = 1 << 2,
+    ImGuiItemStatusFlags_ToggledSelection = 1 << 3,
+    ImGuiItemStatusFlags_ToggledOpen = 1 << 4,
+    ImGuiItemStatusFlags_HasDeactivated = 1 << 5,
+    ImGuiItemStatusFlags_Deactivated = 1 << 6,
+    ImGuiItemStatusFlags_HoveredWindow = 1 << 7,
+    ImGuiItemStatusFlags_Visible = 1 << 8,
+    ImGuiItemStatusFlags_HasClipRect = 1 << 9,
+    ImGuiItemStatusFlags_HasShortcut = 1 << 10,
+}ImGuiItemStatusFlags_;
+typedef enum {
+    ImGuiHoveredFlags_DelayMask_ = ImGuiHoveredFlags_DelayNone | ImGuiHoveredFlags_DelayShort | ImGuiHoveredFlags_DelayNormal | ImGuiHoveredFlags_NoSharedDelay,
+    ImGuiHoveredFlags_AllowedMaskForIsWindowHovered = ImGuiHoveredFlags_ChildWindows | ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_AnyWindow | ImGuiHoveredFlags_NoPopupHierarchy | ImGuiHoveredFlags_DockHierarchy | ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_ForTooltip | ImGuiHoveredFlags_Stationary,
+    ImGuiHoveredFlags_AllowedMaskForIsItemHovered = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped | ImGuiHoveredFlags_AllowWhenDisabled | ImGuiHoveredFlags_NoNavOverride | ImGuiHoveredFlags_ForTooltip | ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayMask_,
+}ImGuiHoveredFlagsPrivate_;
+typedef enum {
+    ImGuiInputTextFlags_Multiline = 1 << 26,
+    ImGuiInputTextFlags_NoMarkEdited = 1 << 27,
+    ImGuiInputTextFlags_MergedItem = 1 << 28,
+    ImGuiInputTextFlags_LocalizeDecimalPoint= 1 << 29,
+}ImGuiInputTextFlagsPrivate_;
+typedef enum {
+    ImGuiButtonFlags_PressedOnClick = 1 << 4,
+    ImGuiButtonFlags_PressedOnClickRelease = 1 << 5,
+    ImGuiButtonFlags_PressedOnClickReleaseAnywhere = 1 << 6,
+    ImGuiButtonFlags_PressedOnRelease = 1 << 7,
+    ImGuiButtonFlags_PressedOnDoubleClick = 1 << 8,
+    ImGuiButtonFlags_PressedOnDragDropHold = 1 << 9,
+    ImGuiButtonFlags_Repeat = 1 << 10,
+    ImGuiButtonFlags_FlattenChildren = 1 << 11,
+    ImGuiButtonFlags_AllowOverlap = 1 << 12,
+    ImGuiButtonFlags_DontClosePopups = 1 << 13,
+    ImGuiButtonFlags_AlignTextBaseLine = 1 << 15,
+    ImGuiButtonFlags_NoKeyModifiers = 1 << 16,
+    ImGuiButtonFlags_NoHoldingActiveId = 1 << 17,
+    ImGuiButtonFlags_NoNavFocus = 1 << 18,
+    ImGuiButtonFlags_NoHoveredOnFocus = 1 << 19,
+    ImGuiButtonFlags_NoSetKeyOwner = 1 << 20,
+    ImGuiButtonFlags_NoTestKeyOwner = 1 << 21,
+    ImGuiButtonFlags_PressedOnMask_ = ImGuiButtonFlags_PressedOnClick | ImGuiButtonFlags_PressedOnClickRelease | ImGuiButtonFlags_PressedOnClickReleaseAnywhere | ImGuiButtonFlags_PressedOnRelease | ImGuiButtonFlags_PressedOnDoubleClick | ImGuiButtonFlags_PressedOnDragDropHold,
+    ImGuiButtonFlags_PressedOnDefault_ = ImGuiButtonFlags_PressedOnClickRelease,
+}ImGuiButtonFlagsPrivate_;
+typedef enum {
+    ImGuiComboFlags_CustomPreview = 1 << 20,
+}ImGuiComboFlagsPrivate_;
+typedef enum {
+    ImGuiSliderFlags_Vertical = 1 << 20,
+    ImGuiSliderFlags_ReadOnly = 1 << 21,
+}ImGuiSliderFlagsPrivate_;
+typedef enum {
+    ImGuiSelectableFlags_NoHoldingActiveID = 1 << 20,
+    ImGuiSelectableFlags_SelectOnNav = 1 << 21,
+    ImGuiSelectableFlags_SelectOnClick = 1 << 22,
+    ImGuiSelectableFlags_SelectOnRelease = 1 << 23,
+    ImGuiSelectableFlags_SpanAvailWidth = 1 << 24,
+    ImGuiSelectableFlags_SetNavIdOnHover = 1 << 25,
+    ImGuiSelectableFlags_NoPadWithHalfSpacing = 1 << 26,
+    ImGuiSelectableFlags_NoSetKeyOwner = 1 << 27,
+}ImGuiSelectableFlagsPrivate_;
+typedef enum {
+    ImGuiTreeNodeFlags_ClipLabelForTrailingButton = 1 << 28,
+    ImGuiTreeNodeFlags_UpsideDownArrow = 1 << 29,
+    ImGuiTreeNodeFlags_OpenOnMask_ = ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_OpenOnArrow,
+}ImGuiTreeNodeFlagsPrivate_;
+typedef enum {
+    ImGuiSeparatorFlags_None = 0,
+    ImGuiSeparatorFlags_Horizontal = 1 << 0,
+    ImGuiSeparatorFlags_Vertical = 1 << 1,
+    ImGuiSeparatorFlags_SpanAllColumns = 1 << 2,
+}ImGuiSeparatorFlags_;
+typedef enum {
+    ImGuiFocusRequestFlags_None = 0,
+    ImGuiFocusRequestFlags_RestoreFocusedChild = 1 << 0,
+    ImGuiFocusRequestFlags_UnlessBelowModal = 1 << 1,
+}ImGuiFocusRequestFlags_;
+typedef enum {
+    ImGuiTextFlags_None = 0,
+    ImGuiTextFlags_NoWidthForLargeClippedText = 1 << 0,
+}ImGuiTextFlags_;
+typedef enum {
+    ImGuiTooltipFlags_None = 0,
+    ImGuiTooltipFlags_OverridePrevious = 1 << 1,
+}ImGuiTooltipFlags_;
+typedef enum {
+    ImGuiLayoutType_Horizontal = 0,
+    ImGuiLayoutType_Vertical = 1
+}ImGuiLayoutType_;
+typedef enum {
+    ImGuiLogType_None = 0,
+    ImGuiLogType_TTY,
+    ImGuiLogType_File,
+    ImGuiLogType_Buffer,
+    ImGuiLogType_Clipboard,
+}ImGuiLogType;
+typedef enum {
+    ImGuiAxis_None = -1,
+    ImGuiAxis_X = 0,
+    ImGuiAxis_Y = 1
+}ImGuiAxis;
+typedef enum {
+    ImGuiPlotType_Lines,
+    ImGuiPlotType_Histogram,
+}ImGuiPlotType;
+struct ImGuiColorMod
+{
+    ImGuiCol Col;
+    ImVec4 BackupValue;
+};
+struct ImGuiStyleMod
+{
+    ImGuiStyleVar VarIdx;
+    union { int BackupInt[2]; float BackupFloat[2]; };
+};
+typedef struct ImGuiComboPreviewData ImGuiComboPreviewData;
+struct ImGuiComboPreviewData
+{
+    ImRect PreviewRect;
+    ImVec2 BackupCursorPos;
+    ImVec2 BackupCursorMaxPos;
+    ImVec2 BackupCursorPosPrevLine;
+    float BackupPrevLineTextBaseOffset;
+    ImGuiLayoutType BackupLayout;
+};
+struct ImGuiGroupData
+{
+    ImGuiID WindowID;
+    ImVec2 BackupCursorPos;
+    ImVec2 BackupCursorMaxPos;
+    ImVec2 BackupCursorPosPrevLine;
+    ImVec1 BackupIndent;
+    ImVec1 BackupGroupOffset;
+    ImVec2 BackupCurrLineSize;
+    float BackupCurrLineTextBaseOffset;
+    ImGuiID BackupActiveIdIsAlive;
+    bool BackupActiveIdPreviousFrameIsAlive;
+    bool BackupHoveredIdIsAlive;
+    bool BackupIsSameLine;
+    bool EmitItem;
+};
+struct ImGuiMenuColumns
+{
+    ImU32 TotalWidth;
+    ImU32 NextTotalWidth;
+    ImU16 Spacing;
+    ImU16 OffsetIcon;
+    ImU16 OffsetLabel;
+    ImU16 OffsetShortcut;
+    ImU16 OffsetMark;
+    ImU16 Widths[4];
+};
+typedef struct ImGuiInputTextDeactivatedState ImGuiInputTextDeactivatedState;
+struct ImGuiInputTextDeactivatedState
+{
+    ImGuiID ID;
+    ImVector_char TextA;
+};
+struct ImGuiInputTextState
+{
+    ImGuiContext* Ctx;
+    ImGuiID ID;
+    int CurLenW, CurLenA;
+    ImVector_ImWchar TextW;
+    ImVector_char TextA;
+    ImVector_char InitialTextA;
+    bool TextAIsValid;
+    int BufCapacityA;
+    ImVec2 Scroll;
+    STB_TexteditState Stb;
+    float CursorAnim;
+    bool CursorFollow;
+    bool SelectedAllMouseLock;
+    bool Edited;
+    ImGuiInputTextFlags Flags;
+    bool ReloadUserBuf;
+    int ReloadSelectionStart;
+    int ReloadSelectionEnd;
+};
+typedef enum {
+    ImGuiWindowRefreshFlags_None = 0,
+    ImGuiWindowRefreshFlags_TryToAvoidRefresh = 1 << 0,
+    ImGuiWindowRefreshFlags_RefreshOnHover = 1 << 1,
+    ImGuiWindowRefreshFlags_RefreshOnFocus = 1 << 2,
+}ImGuiWindowRefreshFlags_;
+typedef enum {
+    ImGuiNextWindowDataFlags_None = 0,
+    ImGuiNextWindowDataFlags_HasPos = 1 << 0,
+    ImGuiNextWindowDataFlags_HasSize = 1 << 1,
+    ImGuiNextWindowDataFlags_HasContentSize = 1 << 2,
+    ImGuiNextWindowDataFlags_HasCollapsed = 1 << 3,
+    ImGuiNextWindowDataFlags_HasSizeConstraint = 1 << 4,
+    ImGuiNextWindowDataFlags_HasFocus = 1 << 5,
+    ImGuiNextWindowDataFlags_HasBgAlpha = 1 << 6,
+    ImGuiNextWindowDataFlags_HasScroll = 1 << 7,
+    ImGuiNextWindowDataFlags_HasChildFlags = 1 << 8,
+    ImGuiNextWindowDataFlags_HasRefreshPolicy = 1 << 9,
+    ImGuiNextWindowDataFlags_HasViewport = 1 << 10,
+    ImGuiNextWindowDataFlags_HasDock = 1 << 11,
+    ImGuiNextWindowDataFlags_HasWindowClass = 1 << 12,
+}ImGuiNextWindowDataFlags_;
+struct ImGuiNextWindowData
+{
+    ImGuiNextWindowDataFlags Flags;
+    ImGuiCond PosCond;
+    ImGuiCond SizeCond;
+    ImGuiCond CollapsedCond;
+    ImGuiCond DockCond;
+    ImVec2 PosVal;
+    ImVec2 PosPivotVal;
+    ImVec2 SizeVal;
+    ImVec2 ContentSizeVal;
+    ImVec2 ScrollVal;
+    ImGuiChildFlags ChildFlags;
+    bool PosUndock;
+    bool CollapsedVal;
+    ImRect SizeConstraintRect;
+    ImGuiSizeCallback SizeCallback;
+    void* SizeCallbackUserData;
+    float BgAlphaVal;
+    ImGuiID ViewportId;
+    ImGuiID DockId;
+    ImGuiWindowClass WindowClass;
+    ImVec2 MenuBarOffsetMinVal;
+    ImGuiWindowRefreshFlags RefreshFlagsVal;
+};
+typedef enum {
+    ImGuiNextItemDataFlags_None = 0,
+    ImGuiNextItemDataFlags_HasWidth = 1 << 0,
+    ImGuiNextItemDataFlags_HasOpen = 1 << 1,
+    ImGuiNextItemDataFlags_HasShortcut = 1 << 2,
+    ImGuiNextItemDataFlags_HasRefVal = 1 << 3,
+    ImGuiNextItemDataFlags_HasStorageID = 1 << 4,
+}ImGuiNextItemDataFlags_;
+struct ImGuiNextItemData
+{
+    ImGuiNextItemDataFlags Flags;
+    ImGuiItemFlags ItemFlags;
+    ImGuiID FocusScopeId;
+    ImGuiSelectionUserData SelectionUserData;
+    float Width;
+    ImGuiKeyChord Shortcut;
+    ImGuiInputFlags ShortcutFlags;
+    bool OpenVal;
+    ImU8 OpenCond;
+    ImGuiDataTypeStorage RefVal;
+    ImGuiID StorageId;
+};
+struct ImGuiLastItemData
+{
+    ImGuiID ID;
+    ImGuiItemFlags InFlags;
+    ImGuiItemStatusFlags StatusFlags;
+    ImRect Rect;
+    ImRect NavRect;
+    ImRect DisplayRect;
+    ImRect ClipRect;
+    ImGuiKeyChord Shortcut;
+};
+struct ImGuiTreeNodeStackData
+{
+    ImGuiID ID;
+    ImGuiTreeNodeFlags TreeFlags;
+    ImGuiItemFlags InFlags;
+    ImRect NavRect;
+};
+struct ImGuiStackSizes
+{
+    short SizeOfIDStack;
+    short SizeOfColorStack;
+    short SizeOfStyleVarStack;
+    short SizeOfFontStack;
+    short SizeOfFocusScopeStack;
+    short SizeOfGroupStack;
+    short SizeOfItemFlagsStack;
+    short SizeOfBeginPopupStack;
+    short SizeOfDisabledStack;
+};
+typedef struct ImGuiWindowStackData ImGuiWindowStackData;
+struct ImGuiWindowStackData
+{
+    ImGuiWindow* Window;
+    ImGuiLastItemData ParentLastItemDataBackup;
+    ImGuiStackSizes StackSizesOnBegin;
+    bool DisabledOverrideReenable;
+};
+typedef struct ImGuiShrinkWidthItem ImGuiShrinkWidthItem;
+struct ImGuiShrinkWidthItem
+{
+    int Index;
+    float Width;
+    float InitialWidth;
+};
+typedef struct ImGuiPtrOrIndex ImGuiPtrOrIndex;
+struct ImGuiPtrOrIndex
+{
+    void* Ptr;
+    int Index;
+};
+typedef enum {
+    ImGuiPopupPositionPolicy_Default,
+    ImGuiPopupPositionPolicy_ComboBox,
+    ImGuiPopupPositionPolicy_Tooltip,
+}ImGuiPopupPositionPolicy;
+struct ImGuiPopupData
+{
+    ImGuiID PopupId;
+    ImGuiWindow* Window;
+    ImGuiWindow* RestoreNavWindow;
+    int ParentNavLayer;
+    int OpenFrameCount;
+    ImGuiID OpenParentId;
+    ImVec2 OpenPopupPos;
+    ImVec2 OpenMousePos;
+};
+typedef struct ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN {ImU32 Storage[(ImGuiKey_NamedKey_COUNT+31)>>5];} ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN;
+
+typedef ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN ImBitArrayForNamedKeys;
+typedef enum {
+    ImGuiInputEventType_None = 0,
+    ImGuiInputEventType_MousePos,
+    ImGuiInputEventType_MouseWheel,
+    ImGuiInputEventType_MouseButton,
+    ImGuiInputEventType_MouseViewport,
+    ImGuiInputEventType_Key,
+    ImGuiInputEventType_Text,
+    ImGuiInputEventType_Focus,
+    ImGuiInputEventType_COUNT
+}ImGuiInputEventType;
+typedef enum {
+    ImGuiInputSource_None = 0,
+    ImGuiInputSource_Mouse,
+    ImGuiInputSource_Keyboard,
+    ImGuiInputSource_Gamepad,
+    ImGuiInputSource_COUNT
+}ImGuiInputSource;
+typedef struct ImGuiInputEventMousePos ImGuiInputEventMousePos;
+struct ImGuiInputEventMousePos
+{ float PosX, PosY; ImGuiMouseSource MouseSource;
+};
+typedef struct ImGuiInputEventMouseWheel ImGuiInputEventMouseWheel;
+struct ImGuiInputEventMouseWheel
+{ float WheelX, WheelY; ImGuiMouseSource MouseSource;
+};
+typedef struct ImGuiInputEventMouseButton ImGuiInputEventMouseButton;
+struct ImGuiInputEventMouseButton
+{ int Button; bool Down; ImGuiMouseSource MouseSource;
+};
+typedef struct ImGuiInputEventMouseViewport ImGuiInputEventMouseViewport;
+struct ImGuiInputEventMouseViewport
+{ ImGuiID HoveredViewportID;
+};
+typedef struct ImGuiInputEventKey ImGuiInputEventKey;
+struct ImGuiInputEventKey
+{ ImGuiKey Key; bool Down; float AnalogValue;
+};
+typedef struct ImGuiInputEventText ImGuiInputEventText;
+struct ImGuiInputEventText
+{ unsigned int Char;
+};
+typedef struct ImGuiInputEventAppFocused ImGuiInputEventAppFocused;
+struct ImGuiInputEventAppFocused
+{ bool Focused;
+};
+typedef struct ImGuiInputEvent ImGuiInputEvent;
+struct ImGuiInputEvent
+{
+    ImGuiInputEventType Type;
+    ImGuiInputSource Source;
+    ImU32 EventId;
+    union
+    {
+        ImGuiInputEventMousePos MousePos;
+        ImGuiInputEventMouseWheel MouseWheel;
+        ImGuiInputEventMouseButton MouseButton;
+        ImGuiInputEventMouseViewport MouseViewport;
+        ImGuiInputEventKey Key;
+        ImGuiInputEventText Text;
+        ImGuiInputEventAppFocused AppFocused;
+    };
+    bool AddedByTestEngine;
+};
+typedef ImS16 ImGuiKeyRoutingIndex;
+typedef struct ImGuiKeyRoutingData ImGuiKeyRoutingData;
+struct ImGuiKeyRoutingData
+{
+    ImGuiKeyRoutingIndex NextEntryIndex;
+    ImU16 Mods;
+    ImU8 RoutingCurrScore;
+    ImU8 RoutingNextScore;
+    ImGuiID RoutingCurr;
+    ImGuiID RoutingNext;
+};
+typedef struct ImGuiKeyRoutingTable ImGuiKeyRoutingTable;
+typedef struct ImVector_ImGuiKeyRoutingData {int Size;int Capacity;ImGuiKeyRoutingData* Data;} ImVector_ImGuiKeyRoutingData;
+
+struct ImGuiKeyRoutingTable
+{
+    ImGuiKeyRoutingIndex Index[ImGuiKey_NamedKey_COUNT];
+    ImVector_ImGuiKeyRoutingData Entries;
+    ImVector_ImGuiKeyRoutingData EntriesNext;
+};
+typedef struct ImGuiKeyOwnerData ImGuiKeyOwnerData;
+struct ImGuiKeyOwnerData
+{
+    ImGuiID OwnerCurr;
+    ImGuiID OwnerNext;
+    bool LockThisFrame;
+    bool LockUntilRelease;
+};
+typedef enum {
+    ImGuiInputFlags_RepeatRateDefault = 1 << 1,
+    ImGuiInputFlags_RepeatRateNavMove = 1 << 2,
+    ImGuiInputFlags_RepeatRateNavTweak = 1 << 3,
+    ImGuiInputFlags_RepeatUntilRelease = 1 << 4,
+    ImGuiInputFlags_RepeatUntilKeyModsChange = 1 << 5,
+    ImGuiInputFlags_RepeatUntilKeyModsChangeFromNone = 1 << 6,
+    ImGuiInputFlags_RepeatUntilOtherKeyPress = 1 << 7,
+    ImGuiInputFlags_LockThisFrame = 1 << 20,
+    ImGuiInputFlags_LockUntilRelease = 1 << 21,
+    ImGuiInputFlags_CondHovered = 1 << 22,
+    ImGuiInputFlags_CondActive = 1 << 23,
+    ImGuiInputFlags_CondDefault_ = ImGuiInputFlags_CondHovered | ImGuiInputFlags_CondActive,
+    ImGuiInputFlags_RepeatRateMask_ = ImGuiInputFlags_RepeatRateDefault | ImGuiInputFlags_RepeatRateNavMove | ImGuiInputFlags_RepeatRateNavTweak,
+    ImGuiInputFlags_RepeatUntilMask_ = ImGuiInputFlags_RepeatUntilRelease | ImGuiInputFlags_RepeatUntilKeyModsChange | ImGuiInputFlags_RepeatUntilKeyModsChangeFromNone | ImGuiInputFlags_RepeatUntilOtherKeyPress,
+    ImGuiInputFlags_RepeatMask_ = ImGuiInputFlags_Repeat | ImGuiInputFlags_RepeatRateMask_ | ImGuiInputFlags_RepeatUntilMask_,
+    ImGuiInputFlags_CondMask_ = ImGuiInputFlags_CondHovered | ImGuiInputFlags_CondActive,
+    ImGuiInputFlags_RouteTypeMask_ = ImGuiInputFlags_RouteActive | ImGuiInputFlags_RouteFocused | ImGuiInputFlags_RouteGlobal | ImGuiInputFlags_RouteAlways,
+    ImGuiInputFlags_RouteOptionsMask_ = ImGuiInputFlags_RouteOverFocused | ImGuiInputFlags_RouteOverActive | ImGuiInputFlags_RouteUnlessBgFocused | ImGuiInputFlags_RouteFromRootWindow,
+    ImGuiInputFlags_SupportedByIsKeyPressed = ImGuiInputFlags_RepeatMask_,
+    ImGuiInputFlags_SupportedByIsMouseClicked = ImGuiInputFlags_Repeat,
+    ImGuiInputFlags_SupportedByShortcut = ImGuiInputFlags_RepeatMask_ | ImGuiInputFlags_RouteTypeMask_ | ImGuiInputFlags_RouteOptionsMask_,
+    ImGuiInputFlags_SupportedBySetNextItemShortcut = ImGuiInputFlags_RepeatMask_ | ImGuiInputFlags_RouteTypeMask_ | ImGuiInputFlags_RouteOptionsMask_ | ImGuiInputFlags_Tooltip,
+    ImGuiInputFlags_SupportedBySetKeyOwner = ImGuiInputFlags_LockThisFrame | ImGuiInputFlags_LockUntilRelease,
+    ImGuiInputFlags_SupportedBySetItemKeyOwner = ImGuiInputFlags_SupportedBySetKeyOwner | ImGuiInputFlags_CondMask_,
+}ImGuiInputFlagsPrivate_;
+typedef struct ImGuiListClipperRange ImGuiListClipperRange;
+struct ImGuiListClipperRange
+{
+    int Min;
+    int Max;
+    bool PosToIndexConvert;
+    ImS8 PosToIndexOffsetMin;
+    ImS8 PosToIndexOffsetMax;
+};
+typedef struct ImGuiListClipperData ImGuiListClipperData;
+typedef struct ImVector_ImGuiListClipperRange {int Size;int Capacity;ImGuiListClipperRange* Data;} ImVector_ImGuiListClipperRange;
+
+struct ImGuiListClipperData
+{
+    ImGuiListClipper* ListClipper;
+    float LossynessOffset;
+    int StepNo;
+    int ItemsFrozen;
+    ImVector_ImGuiListClipperRange Ranges;
+};
+typedef enum {
+    ImGuiActivateFlags_None = 0,
+    ImGuiActivateFlags_PreferInput = 1 << 0,
+    ImGuiActivateFlags_PreferTweak = 1 << 1,
+    ImGuiActivateFlags_TryToPreserveState = 1 << 2,
+    ImGuiActivateFlags_FromTabbing = 1 << 3,
+    ImGuiActivateFlags_FromShortcut = 1 << 4,
+}ImGuiActivateFlags_;
+typedef enum {
+    ImGuiScrollFlags_None = 0,
+    ImGuiScrollFlags_KeepVisibleEdgeX = 1 << 0,
+    ImGuiScrollFlags_KeepVisibleEdgeY = 1 << 1,
+    ImGuiScrollFlags_KeepVisibleCenterX = 1 << 2,
+    ImGuiScrollFlags_KeepVisibleCenterY = 1 << 3,
+    ImGuiScrollFlags_AlwaysCenterX = 1 << 4,
+    ImGuiScrollFlags_AlwaysCenterY = 1 << 5,
+    ImGuiScrollFlags_NoScrollParent = 1 << 6,
+    ImGuiScrollFlags_MaskX_ = ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_KeepVisibleCenterX | ImGuiScrollFlags_AlwaysCenterX,
+    ImGuiScrollFlags_MaskY_ = ImGuiScrollFlags_KeepVisibleEdgeY | ImGuiScrollFlags_KeepVisibleCenterY | ImGuiScrollFlags_AlwaysCenterY,
+}ImGuiScrollFlags_;
+typedef enum {
+    ImGuiNavHighlightFlags_None = 0,
+    ImGuiNavHighlightFlags_Compact = 1 << 1,
+    ImGuiNavHighlightFlags_AlwaysDraw = 1 << 2,
+    ImGuiNavHighlightFlags_NoRounding = 1 << 3,
+}ImGuiNavHighlightFlags_;
+typedef enum {
+    ImGuiNavMoveFlags_None = 0,
+    ImGuiNavMoveFlags_LoopX = 1 << 0,
+    ImGuiNavMoveFlags_LoopY = 1 << 1,
+    ImGuiNavMoveFlags_WrapX = 1 << 2,
+    ImGuiNavMoveFlags_WrapY = 1 << 3,
+    ImGuiNavMoveFlags_WrapMask_ = ImGuiNavMoveFlags_LoopX | ImGuiNavMoveFlags_LoopY | ImGuiNavMoveFlags_WrapX | ImGuiNavMoveFlags_WrapY,
+    ImGuiNavMoveFlags_AllowCurrentNavId = 1 << 4,
+    ImGuiNavMoveFlags_AlsoScoreVisibleSet = 1 << 5,
+    ImGuiNavMoveFlags_ScrollToEdgeY = 1 << 6,
+    ImGuiNavMoveFlags_Forwarded = 1 << 7,
+    ImGuiNavMoveFlags_DebugNoResult = 1 << 8,
+    ImGuiNavMoveFlags_FocusApi = 1 << 9,
+    ImGuiNavMoveFlags_IsTabbing = 1 << 10,
+    ImGuiNavMoveFlags_IsPageMove = 1 << 11,
+    ImGuiNavMoveFlags_Activate = 1 << 12,
+    ImGuiNavMoveFlags_NoSelect = 1 << 13,
+    ImGuiNavMoveFlags_NoSetNavHighlight = 1 << 14,
+    ImGuiNavMoveFlags_NoClearActiveId = 1 << 15,
+}ImGuiNavMoveFlags_;
+typedef enum {
+    ImGuiNavLayer_Main = 0,
+    ImGuiNavLayer_Menu = 1,
+    ImGuiNavLayer_COUNT
+}ImGuiNavLayer;
+struct ImGuiNavItemData
+{
+    ImGuiWindow* Window;
+    ImGuiID ID;
+    ImGuiID FocusScopeId;
+    ImRect RectRel;
+    ImGuiItemFlags InFlags;
+    float DistBox;
+    float DistCenter;
+    float DistAxial;
+    ImGuiSelectionUserData SelectionUserData;
+};
+typedef struct ImGuiFocusScopeData ImGuiFocusScopeData;
+struct ImGuiFocusScopeData
+{
+    ImGuiID ID;
+    ImGuiID WindowID;
+};
+typedef enum {
+    ImGuiTypingSelectFlags_None = 0,
+    ImGuiTypingSelectFlags_AllowBackspace = 1 << 0,
+    ImGuiTypingSelectFlags_AllowSingleCharMode = 1 << 1,
+}ImGuiTypingSelectFlags_;
+struct ImGuiTypingSelectRequest
+{
+    ImGuiTypingSelectFlags Flags;
+    int SearchBufferLen;
+    const char* SearchBuffer;
+    bool SelectRequest;
+    bool SingleCharMode;
+    ImS8 SingleCharSize;
+};
+struct ImGuiTypingSelectState
+{
+    ImGuiTypingSelectRequest Request;
+    char SearchBuffer[64];
+    ImGuiID FocusScope;
+    int LastRequestFrame;
+    float LastRequestTime;
+    bool SingleCharModeLock;
+};
+typedef enum {
+    ImGuiOldColumnFlags_None = 0,
+    ImGuiOldColumnFlags_NoBorder = 1 << 0,
+    ImGuiOldColumnFlags_NoResize = 1 << 1,
+    ImGuiOldColumnFlags_NoPreserveWidths = 1 << 2,
+    ImGuiOldColumnFlags_NoForceWithinWindow = 1 << 3,
+    ImGuiOldColumnFlags_GrowParentContentsSize = 1 << 4,
+}ImGuiOldColumnFlags_;
+struct ImGuiOldColumnData
+{
+    float OffsetNorm;
+    float OffsetNormBeforeResize;
+    ImGuiOldColumnFlags Flags;
+    ImRect ClipRect;
+};
+typedef struct ImVector_ImGuiOldColumnData {int Size;int Capacity;ImGuiOldColumnData* Data;} ImVector_ImGuiOldColumnData;
+
+struct ImGuiOldColumns
+{
+    ImGuiID ID;
+    ImGuiOldColumnFlags Flags;
+    bool IsFirstFrame;
+    bool IsBeingResized;
+    int Current;
+    int Count;
+    float OffMinX, OffMaxX;
+    float LineMinY, LineMaxY;
+    float HostCursorPosY;
+    float HostCursorMaxPosX;
+    ImRect HostInitialClipRect;
+    ImRect HostBackupClipRect;
+    ImRect HostBackupParentWorkRect;
+    ImVector_ImGuiOldColumnData Columns;
+    ImDrawListSplitter Splitter;
+};
+struct ImGuiBoxSelectState
+{
+    ImGuiID ID;
+    bool IsActive;
+    bool IsStarting;
+    bool IsStartedFromVoid;
+    bool IsStartedSetNavIdOnce;
+    bool RequestClear;
+    ImGuiKeyChord KeyMods : 16;
+    ImVec2 StartPosRel;
+    ImVec2 EndPosRel;
+    ImVec2 ScrollAccum;
+    ImGuiWindow* Window;
+    bool UnclipMode;
+    ImRect UnclipRect;
+    ImRect BoxSelectRectPrev;
+    ImRect BoxSelectRectCurr;
+};
+struct ImGuiMultiSelectTempData
+{
+    ImGuiMultiSelectIO IO;
+    ImGuiMultiSelectState* Storage;
+    ImGuiID FocusScopeId;
+    ImGuiMultiSelectFlags Flags;
+    ImVec2 ScopeRectMin;
+    ImVec2 BackupCursorMaxPos;
+    ImGuiSelectionUserData LastSubmittedItem;
+    ImGuiID BoxSelectId;
+    ImGuiKeyChord KeyMods;
+    ImS8 LoopRequestSetAll;
+    bool IsEndIO;
+    bool IsFocused;
+    bool IsKeyboardSetRange;
+    bool NavIdPassedBy;
+    bool RangeSrcPassedBy;
+    bool RangeDstPassedBy;
+};
+struct ImGuiMultiSelectState
+{
+    ImGuiWindow* Window;
+    ImGuiID ID;
+    int LastFrameActive;
+    int LastSelectionSize;
+    ImS8 RangeSelected;
+    ImS8 NavIdSelected;
+    ImGuiSelectionUserData RangeSrcItem;
+    ImGuiSelectionUserData NavIdItem;
+};
+typedef enum {
+    ImGuiDockNodeFlags_DockSpace = 1 << 10,
+    ImGuiDockNodeFlags_CentralNode = 1 << 11,
+    ImGuiDockNodeFlags_NoTabBar = 1 << 12,
+    ImGuiDockNodeFlags_HiddenTabBar = 1 << 13,
+    ImGuiDockNodeFlags_NoWindowMenuButton = 1 << 14,
+    ImGuiDockNodeFlags_NoCloseButton = 1 << 15,
+    ImGuiDockNodeFlags_NoResizeX = 1 << 16,
+    ImGuiDockNodeFlags_NoResizeY = 1 << 17,
+    ImGuiDockNodeFlags_DockedWindowsInFocusRoute= 1 << 18,
+    ImGuiDockNodeFlags_NoDockingSplitOther = 1 << 19,
+    ImGuiDockNodeFlags_NoDockingOverMe = 1 << 20,
+    ImGuiDockNodeFlags_NoDockingOverOther = 1 << 21,
+    ImGuiDockNodeFlags_NoDockingOverEmpty = 1 << 22,
+    ImGuiDockNodeFlags_NoDocking = ImGuiDockNodeFlags_NoDockingOverMe | ImGuiDockNodeFlags_NoDockingOverOther | ImGuiDockNodeFlags_NoDockingOverEmpty | ImGuiDockNodeFlags_NoDockingSplit | ImGuiDockNodeFlags_NoDockingSplitOther,
+    ImGuiDockNodeFlags_SharedFlagsInheritMask_ = ~0,
+    ImGuiDockNodeFlags_NoResizeFlagsMask_ = (int)ImGuiDockNodeFlags_NoResize | ImGuiDockNodeFlags_NoResizeX | ImGuiDockNodeFlags_NoResizeY,
+    ImGuiDockNodeFlags_LocalFlagsTransferMask_ = (int)ImGuiDockNodeFlags_NoDockingSplit | ImGuiDockNodeFlags_NoResizeFlagsMask_ | (int)ImGuiDockNodeFlags_AutoHideTabBar | ImGuiDockNodeFlags_CentralNode | ImGuiDockNodeFlags_NoTabBar | ImGuiDockNodeFlags_HiddenTabBar | ImGuiDockNodeFlags_NoWindowMenuButton | ImGuiDockNodeFlags_NoCloseButton,
+    ImGuiDockNodeFlags_SavedFlagsMask_ = ImGuiDockNodeFlags_NoResizeFlagsMask_ | ImGuiDockNodeFlags_DockSpace | ImGuiDockNodeFlags_CentralNode | ImGuiDockNodeFlags_NoTabBar | ImGuiDockNodeFlags_HiddenTabBar | ImGuiDockNodeFlags_NoWindowMenuButton | ImGuiDockNodeFlags_NoCloseButton,
+}ImGuiDockNodeFlagsPrivate_;
+typedef enum {
+    ImGuiDataAuthority_Auto,
+    ImGuiDataAuthority_DockNode,
+    ImGuiDataAuthority_Window,
+}ImGuiDataAuthority_;
+typedef enum {
+    ImGuiDockNodeState_Unknown,
+    ImGuiDockNodeState_HostWindowHiddenBecauseSingleWindow,
+    ImGuiDockNodeState_HostWindowHiddenBecauseWindowsAreResizing,
+    ImGuiDockNodeState_HostWindowVisible,
+}ImGuiDockNodeState;
+typedef struct ImVector_ImGuiWindowPtr {int Size;int Capacity;ImGuiWindow** Data;} ImVector_ImGuiWindowPtr;
+
+struct ImGuiDockNode
+{
+    ImGuiID ID;
+    ImGuiDockNodeFlags SharedFlags;
+    ImGuiDockNodeFlags LocalFlags;
+    ImGuiDockNodeFlags LocalFlagsInWindows;
+    ImGuiDockNodeFlags MergedFlags;
+    ImGuiDockNodeState State;
+    ImGuiDockNode* ParentNode;
+    ImGuiDockNode* ChildNodes[2];
+    ImVector_ImGuiWindowPtr Windows;
+    ImGuiTabBar* TabBar;
+    ImVec2 Pos;
+    ImVec2 Size;
+    ImVec2 SizeRef;
+    ImGuiAxis SplitAxis;
+    ImGuiWindowClass WindowClass;
+    ImU32 LastBgColor;
+    ImGuiWindow* HostWindow;
+    ImGuiWindow* VisibleWindow;
+    ImGuiDockNode* CentralNode;
+    ImGuiDockNode* OnlyNodeWithWindows;
+    int CountNodeWithWindows;
+    int LastFrameAlive;
+    int LastFrameActive;
+    int LastFrameFocused;
+    ImGuiID LastFocusedNodeId;
+    ImGuiID SelectedTabId;
+    ImGuiID WantCloseTabId;
+    ImGuiID RefViewportId;
+    ImGuiDataAuthority AuthorityForPos :3;
+    ImGuiDataAuthority AuthorityForSize :3;
+    ImGuiDataAuthority AuthorityForViewport :3;
+    bool IsVisible :1;
+    bool IsFocused :1;
+    bool IsBgDrawnThisFrame :1;
+    bool HasCloseButton :1;
+    bool HasWindowMenuButton :1;
+    bool HasCentralNodeChild :1;
+    bool WantCloseAll :1;
+    bool WantLockSizeOnce :1;
+    bool WantMouseMove :1;
+    bool WantHiddenTabBarUpdate :1;
+    bool WantHiddenTabBarToggle :1;
+};
+typedef enum {
+    ImGuiWindowDockStyleCol_Text,
+    ImGuiWindowDockStyleCol_TabHovered,
+    ImGuiWindowDockStyleCol_TabFocused,
+    ImGuiWindowDockStyleCol_TabSelected,
+    ImGuiWindowDockStyleCol_TabSelectedOverline,
+    ImGuiWindowDockStyleCol_TabDimmed,
+    ImGuiWindowDockStyleCol_TabDimmedSelected,
+    ImGuiWindowDockStyleCol_TabDimmedSelectedOverline,
+    ImGuiWindowDockStyleCol_COUNT
+}ImGuiWindowDockStyleCol;
+struct ImGuiWindowDockStyle
+{
+    ImU32 Colors[ImGuiWindowDockStyleCol_COUNT];
+};
+typedef struct ImVector_ImGuiDockRequest {int Size;int Capacity;ImGuiDockRequest* Data;} ImVector_ImGuiDockRequest;
+
+typedef struct ImVector_ImGuiDockNodeSettings {int Size;int Capacity;ImGuiDockNodeSettings* Data;} ImVector_ImGuiDockNodeSettings;
+
+struct ImGuiDockContext
+{
+    ImGuiStorage Nodes;
+    ImVector_ImGuiDockRequest Requests;
+    ImVector_ImGuiDockNodeSettings NodesSettings;
+    bool WantFullRebuild;
+};
+typedef struct ImGuiViewportP ImGuiViewportP;
+struct ImGuiViewportP
+{
+    ImGuiViewport _ImGuiViewport;
+    ImGuiWindow* Window;
+    int Idx;
+    int LastFrameActive;
+    int LastFocusedStampCount;
+    ImGuiID LastNameHash;
+    ImVec2 LastPos;
+    float Alpha;
+    float LastAlpha;
+    bool LastFocusedHadNavWindow;
+    short PlatformMonitor;
+    int BgFgDrawListsLastFrame[2];
+    ImDrawList* BgFgDrawLists[2];
+    ImDrawData DrawDataP;
+    ImDrawDataBuilder DrawDataBuilder;
+    ImVec2 LastPlatformPos;
+    ImVec2 LastPlatformSize;
+    ImVec2 LastRendererSize;
+    ImVec2 WorkInsetMin;
+    ImVec2 WorkInsetMax;
+    ImVec2 BuildWorkInsetMin;
+    ImVec2 BuildWorkInsetMax;
+};
+struct ImGuiWindowSettings
+{
+    ImGuiID ID;
+    ImVec2ih Pos;
+    ImVec2ih Size;
+    ImVec2ih ViewportPos;
+    ImGuiID ViewportId;
+    ImGuiID DockId;
+    ImGuiID ClassId;
+    short DockOrder;
+    bool Collapsed;
+    bool IsChild;
+    bool WantApply;
+    bool WantDelete;
+};
+struct ImGuiSettingsHandler
+{
+    const char* TypeName;
+    ImGuiID TypeHash;
+    void (*ClearAllFn)(ImGuiContext* ctx, ImGuiSettingsHandler* handler);
+    void (*ReadInitFn)(ImGuiContext* ctx, ImGuiSettingsHandler* handler);
+    void* (*ReadOpenFn)(ImGuiContext* ctx, ImGuiSettingsHandler* handler, const char* name);
+    void (*ReadLineFn)(ImGuiContext* ctx, ImGuiSettingsHandler* handler, void* entry, const char* line);
+    void (*ApplyAllFn)(ImGuiContext* ctx, ImGuiSettingsHandler* handler);
+    void (*WriteAllFn)(ImGuiContext* ctx, ImGuiSettingsHandler* handler, ImGuiTextBuffer* out_buf);
+    void* UserData;
+};
+typedef enum {
+ImGuiLocKey_VersionStr=0,
+ImGuiLocKey_TableSizeOne=1,
+ImGuiLocKey_TableSizeAllFit=2,
+ImGuiLocKey_TableSizeAllDefault=3,
+ImGuiLocKey_TableResetOrder=4,
+ImGuiLocKey_WindowingMainMenuBar=5,
+ImGuiLocKey_WindowingPopup=6,
+ImGuiLocKey_WindowingUntitled=7,
+ImGuiLocKey_CopyLink=8,
+ImGuiLocKey_DockingHideTabBar=9,
+ImGuiLocKey_DockingHoldShiftToDock=10,
+ImGuiLocKey_DockingDragToUndockOrMoveNode=11,
+ImGuiLocKey_COUNT=12,
+}ImGuiLocKey;
+struct ImGuiLocEntry
+{
+    ImGuiLocKey Key;
+    const char* Text;
+};
+typedef enum {
+    ImGuiDebugLogFlags_None = 0,
+    ImGuiDebugLogFlags_EventActiveId = 1 << 0,
+    ImGuiDebugLogFlags_EventFocus = 1 << 1,
+    ImGuiDebugLogFlags_EventPopup = 1 << 2,
+    ImGuiDebugLogFlags_EventNav = 1 << 3,
+    ImGuiDebugLogFlags_EventClipper = 1 << 4,
+    ImGuiDebugLogFlags_EventSelection = 1 << 5,
+    ImGuiDebugLogFlags_EventIO = 1 << 6,
+    ImGuiDebugLogFlags_EventInputRouting = 1 << 7,
+    ImGuiDebugLogFlags_EventDocking = 1 << 8,
+    ImGuiDebugLogFlags_EventViewport = 1 << 9,
+    ImGuiDebugLogFlags_EventMask_ = ImGuiDebugLogFlags_EventActiveId | ImGuiDebugLogFlags_EventFocus | ImGuiDebugLogFlags_EventPopup | ImGuiDebugLogFlags_EventNav | ImGuiDebugLogFlags_EventClipper | ImGuiDebugLogFlags_EventSelection | ImGuiDebugLogFlags_EventIO | ImGuiDebugLogFlags_EventInputRouting | ImGuiDebugLogFlags_EventDocking | ImGuiDebugLogFlags_EventViewport,
+    ImGuiDebugLogFlags_OutputToTTY = 1 << 20,
+    ImGuiDebugLogFlags_OutputToTestEngine = 1 << 21,
+}ImGuiDebugLogFlags_;
+typedef struct ImGuiDebugAllocEntry ImGuiDebugAllocEntry;
+struct ImGuiDebugAllocEntry
+{
+    int FrameCount;
+    ImS16 AllocCount;
+    ImS16 FreeCount;
+};
+typedef struct ImGuiDebugAllocInfo ImGuiDebugAllocInfo;
+struct ImGuiDebugAllocInfo
+{
+    int TotalAllocCount;
+    int TotalFreeCount;
+    ImS16 LastEntriesIdx;
+    ImGuiDebugAllocEntry LastEntriesBuf[6];
+};
+struct ImGuiMetricsConfig
+{
+    bool ShowDebugLog;
+    bool ShowIDStackTool;
+    bool ShowWindowsRects;
+    bool ShowWindowsBeginOrder;
+    bool ShowTablesRects;
+    bool ShowDrawCmdMesh;
+    bool ShowDrawCmdBoundingBoxes;
+    bool ShowTextEncodingViewer;
+    bool ShowAtlasTintedWithTextColor;
+    bool ShowDockingNodes;
+    int ShowWindowsRectsType;
+    int ShowTablesRectsType;
+    int HighlightMonitorIdx;
+    ImGuiID HighlightViewportID;
+};
+typedef struct ImGuiStackLevelInfo ImGuiStackLevelInfo;
+struct ImGuiStackLevelInfo
+{
+    ImGuiID ID;
+    ImS8 QueryFrameCount;
+    bool QuerySuccess;
+    ImGuiDataType DataType : 8;
+    char Desc[57];
+};
+typedef struct ImGuiIDStackTool ImGuiIDStackTool;
+typedef struct ImVector_ImGuiStackLevelInfo {int Size;int Capacity;ImGuiStackLevelInfo* Data;} ImVector_ImGuiStackLevelInfo;
+
+struct ImGuiIDStackTool
+{
+    int LastActiveFrame;
+    int StackLevel;
+    ImGuiID QueryId;
+    ImVector_ImGuiStackLevelInfo Results;
+    bool CopyToClipboardOnCtrlC;
+    float CopyToClipboardLastTime;
+};
+typedef void (*ImGuiContextHookCallback)(ImGuiContext* ctx, ImGuiContextHook* hook);
+typedef enum { ImGuiContextHookType_NewFramePre, ImGuiContextHookType_NewFramePost, ImGuiContextHookType_EndFramePre, ImGuiContextHookType_EndFramePost, ImGuiContextHookType_RenderPre, ImGuiContextHookType_RenderPost, ImGuiContextHookType_Shutdown, ImGuiContextHookType_PendingRemoval_ }ImGuiContextHookType;
+struct ImGuiContextHook
+{
+    ImGuiID HookId;
+    ImGuiContextHookType Type;
+    ImGuiID Owner;
+    ImGuiContextHookCallback Callback;
+    void* UserData;
+};
+typedef struct ImVector_ImGuiInputEvent {int Size;int Capacity;ImGuiInputEvent* Data;} ImVector_ImGuiInputEvent;
+
+typedef struct ImVector_ImGuiWindowStackData {int Size;int Capacity;ImGuiWindowStackData* Data;} ImVector_ImGuiWindowStackData;
+
+typedef struct ImVector_ImGuiColorMod {int Size;int Capacity;ImGuiColorMod* Data;} ImVector_ImGuiColorMod;
+
+typedef struct ImVector_ImGuiStyleMod {int Size;int Capacity;ImGuiStyleMod* Data;} ImVector_ImGuiStyleMod;
+
+typedef struct ImVector_ImGuiFocusScopeData {int Size;int Capacity;ImGuiFocusScopeData* Data;} ImVector_ImGuiFocusScopeData;
+
+typedef struct ImVector_ImGuiItemFlags {int Size;int Capacity;ImGuiItemFlags* Data;} ImVector_ImGuiItemFlags;
+
+typedef struct ImVector_ImGuiGroupData {int Size;int Capacity;ImGuiGroupData* Data;} ImVector_ImGuiGroupData;
+
+typedef struct ImVector_ImGuiPopupData {int Size;int Capacity;ImGuiPopupData* Data;} ImVector_ImGuiPopupData;
+
+typedef struct ImVector_ImGuiTreeNodeStackData {int Size;int Capacity;ImGuiTreeNodeStackData* Data;} ImVector_ImGuiTreeNodeStackData;
+
+typedef struct ImVector_ImGuiViewportPPtr {int Size;int Capacity;ImGuiViewportP** Data;} ImVector_ImGuiViewportPPtr;
+
+typedef struct ImVector_unsigned_char {int Size;int Capacity;unsigned char* Data;} ImVector_unsigned_char;
+
+typedef struct ImVector_ImGuiListClipperData {int Size;int Capacity;ImGuiListClipperData* Data;} ImVector_ImGuiListClipperData;
+
+typedef struct ImVector_ImGuiTableTempData {int Size;int Capacity;ImGuiTableTempData* Data;} ImVector_ImGuiTableTempData;
+
+typedef struct ImVector_ImGuiTable {int Size;int Capacity;ImGuiTable* Data;} ImVector_ImGuiTable;
+
+typedef struct ImPool_ImGuiTable {ImVector_ImGuiTable Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiTable;
+
+typedef struct ImVector_ImGuiTabBar {int Size;int Capacity;ImGuiTabBar* Data;} ImVector_ImGuiTabBar;
+
+typedef struct ImPool_ImGuiTabBar {ImVector_ImGuiTabBar Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiTabBar;
+
+typedef struct ImVector_ImGuiPtrOrIndex {int Size;int Capacity;ImGuiPtrOrIndex* Data;} ImVector_ImGuiPtrOrIndex;
+
+typedef struct ImVector_ImGuiShrinkWidthItem {int Size;int Capacity;ImGuiShrinkWidthItem* Data;} ImVector_ImGuiShrinkWidthItem;
+
+typedef struct ImVector_ImGuiMultiSelectTempData {int Size;int Capacity;ImGuiMultiSelectTempData* Data;} ImVector_ImGuiMultiSelectTempData;
+
+typedef struct ImVector_ImGuiMultiSelectState {int Size;int Capacity;ImGuiMultiSelectState* Data;} ImVector_ImGuiMultiSelectState;
+
+typedef struct ImPool_ImGuiMultiSelectState {ImVector_ImGuiMultiSelectState Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiMultiSelectState;
+
+typedef struct ImVector_ImGuiID {int Size;int Capacity;ImGuiID* Data;} ImVector_ImGuiID;
+
+typedef struct ImVector_ImGuiSettingsHandler {int Size;int Capacity;ImGuiSettingsHandler* Data;} ImVector_ImGuiSettingsHandler;
+
+typedef struct ImChunkStream_ImGuiWindowSettings {ImVector_char Buf;} ImChunkStream_ImGuiWindowSettings;
+
+typedef struct ImChunkStream_ImGuiTableSettings {ImVector_char Buf;} ImChunkStream_ImGuiTableSettings;
+
+typedef struct ImVector_ImGuiContextHook {int Size;int Capacity;ImGuiContextHook* Data;} ImVector_ImGuiContextHook;
+
+struct ImGuiContext
+{
+    bool Initialized;
+    bool FontAtlasOwnedByContext;
+    ImGuiIO IO;
+    ImGuiPlatformIO PlatformIO;
+    ImGuiStyle Style;
+    ImGuiConfigFlags ConfigFlagsCurrFrame;
+    ImGuiConfigFlags ConfigFlagsLastFrame;
+    ImFont* Font;
+    float FontSize;
+    float FontBaseSize;
+    float FontScale;
+    float CurrentDpiScale;
+    ImDrawListSharedData DrawListSharedData;
+    double Time;
+    int FrameCount;
+    int FrameCountEnded;
+    int FrameCountPlatformEnded;
+    int FrameCountRendered;
+    bool WithinFrameScope;
+    bool WithinFrameScopeWithImplicitWindow;
+    bool WithinEndChild;
+    bool GcCompactAll;
+    bool TestEngineHookItems;
+    void* TestEngine;
+    char ContextName[16];
+    ImVector_ImGuiInputEvent InputEventsQueue;
+    ImVector_ImGuiInputEvent InputEventsTrail;
+    ImGuiMouseSource InputEventsNextMouseSource;
+    ImU32 InputEventsNextEventId;
+    ImVector_ImGuiWindowPtr Windows;
+    ImVector_ImGuiWindowPtr WindowsFocusOrder;
+    ImVector_ImGuiWindowPtr WindowsTempSortBuffer;
+    ImVector_ImGuiWindowStackData CurrentWindowStack;
+    ImGuiStorage WindowsById;
+    int WindowsActiveCount;
+    ImVec2 WindowsHoverPadding;
+    ImGuiID DebugBreakInWindow;
+    ImGuiWindow* CurrentWindow;
+    ImGuiWindow* HoveredWindow;
+    ImGuiWindow* HoveredWindowUnderMovingWindow;
+    ImGuiWindow* HoveredWindowBeforeClear;
+    ImGuiWindow* MovingWindow;
+    ImGuiWindow* WheelingWindow;
+    ImVec2 WheelingWindowRefMousePos;
+    int WheelingWindowStartFrame;
+    int WheelingWindowScrolledFrame;
+    float WheelingWindowReleaseTimer;
+    ImVec2 WheelingWindowWheelRemainder;
+    ImVec2 WheelingAxisAvg;
+    ImGuiID DebugHookIdInfo;
+    ImGuiID HoveredId;
+    ImGuiID HoveredIdPreviousFrame;
+    float HoveredIdTimer;
+    float HoveredIdNotActiveTimer;
+    bool HoveredIdAllowOverlap;
+    bool HoveredIdIsDisabled;
+    bool ItemUnclipByLog;
+    ImGuiID ActiveId;
+    ImGuiID ActiveIdIsAlive;
+    float ActiveIdTimer;
+    bool ActiveIdIsJustActivated;
+    bool ActiveIdAllowOverlap;
+    bool ActiveIdNoClearOnFocusLoss;
+    bool ActiveIdHasBeenPressedBefore;
+    bool ActiveIdHasBeenEditedBefore;
+    bool ActiveIdHasBeenEditedThisFrame;
+    bool ActiveIdFromShortcut;
+    int ActiveIdMouseButton : 8;
+    ImVec2 ActiveIdClickOffset;
+    ImGuiWindow* ActiveIdWindow;
+    ImGuiInputSource ActiveIdSource;
+    ImGuiID ActiveIdPreviousFrame;
+    bool ActiveIdPreviousFrameIsAlive;
+    bool ActiveIdPreviousFrameHasBeenEditedBefore;
+    ImGuiWindow* ActiveIdPreviousFrameWindow;
+    ImGuiID LastActiveId;
+    float LastActiveIdTimer;
+    double LastKeyModsChangeTime;
+    double LastKeyModsChangeFromNoneTime;
+    double LastKeyboardKeyPressTime;
+    ImBitArrayForNamedKeys KeysMayBeCharInput;
+    ImGuiKeyOwnerData KeysOwnerData[ImGuiKey_NamedKey_COUNT];
+    ImGuiKeyRoutingTable KeysRoutingTable;
+    ImU32 ActiveIdUsingNavDirMask;
+    bool ActiveIdUsingAllKeyboardKeys;
+    ImGuiKeyChord DebugBreakInShortcutRouting;
+    ImGuiID CurrentFocusScopeId;
+    ImGuiItemFlags CurrentItemFlags;
+    ImGuiID DebugLocateId;
+    ImGuiNextItemData NextItemData;
+    ImGuiLastItemData LastItemData;
+    ImGuiNextWindowData NextWindowData;
+    bool DebugShowGroupRects;
+    ImGuiCol DebugFlashStyleColorIdx;
+    ImVector_ImGuiColorMod ColorStack;
+    ImVector_ImGuiStyleMod StyleVarStack;
+    ImVector_ImFontPtr FontStack;
+    ImVector_ImGuiFocusScopeData FocusScopeStack;
+    ImVector_ImGuiItemFlags ItemFlagsStack;
+    ImVector_ImGuiGroupData GroupStack;
+    ImVector_ImGuiPopupData OpenPopupStack;
+    ImVector_ImGuiPopupData BeginPopupStack;
+    ImVector_ImGuiTreeNodeStackData TreeNodeStack;
+    ImVector_ImGuiViewportPPtr Viewports;
+    ImGuiViewportP* CurrentViewport;
+    ImGuiViewportP* MouseViewport;
+    ImGuiViewportP* MouseLastHoveredViewport;
+    ImGuiID PlatformLastFocusedViewportId;
+    ImGuiPlatformMonitor FallbackMonitor;
+    ImRect PlatformMonitorsFullWorkRect;
+    int ViewportCreatedCount;
+    int PlatformWindowsCreatedCount;
+    int ViewportFocusedStampCount;
+    ImGuiWindow* NavWindow;
+    ImGuiID NavId;
+    ImGuiID NavFocusScopeId;
+    ImGuiNavLayer NavLayer;
+    ImGuiID NavActivateId;
+    ImGuiID NavActivateDownId;
+    ImGuiID NavActivatePressedId;
+    ImGuiActivateFlags NavActivateFlags;
+    ImVector_ImGuiFocusScopeData NavFocusRoute;
+    ImGuiID NavHighlightActivatedId;
+    float NavHighlightActivatedTimer;
+    ImGuiID NavNextActivateId;
+    ImGuiActivateFlags NavNextActivateFlags;
+    ImGuiInputSource NavInputSource;
+    ImGuiSelectionUserData NavLastValidSelectionUserData;
+    bool NavIdIsAlive;
+    bool NavMousePosDirty;
+    bool NavDisableHighlight;
+    bool NavDisableMouseHover;
+    bool NavAnyRequest;
+    bool NavInitRequest;
+    bool NavInitRequestFromMove;
+    ImGuiNavItemData NavInitResult;
+    bool NavMoveSubmitted;
+    bool NavMoveScoringItems;
+    bool NavMoveForwardToNextFrame;
+    ImGuiNavMoveFlags NavMoveFlags;
+    ImGuiScrollFlags NavMoveScrollFlags;
+    ImGuiKeyChord NavMoveKeyMods;
+    ImGuiDir NavMoveDir;
+    ImGuiDir NavMoveDirForDebug;
+    ImGuiDir NavMoveClipDir;
+    ImRect NavScoringRect;
+    ImRect NavScoringNoClipRect;
+    int NavScoringDebugCount;
+    int NavTabbingDir;
+    int NavTabbingCounter;
+    ImGuiNavItemData NavMoveResultLocal;
+    ImGuiNavItemData NavMoveResultLocalVisible;
+    ImGuiNavItemData NavMoveResultOther;
+    ImGuiNavItemData NavTabbingResultFirst;
+    ImGuiID NavJustMovedFromFocusScopeId;
+    ImGuiID NavJustMovedToId;
+    ImGuiID NavJustMovedToFocusScopeId;
+    ImGuiKeyChord NavJustMovedToKeyMods;
+    bool NavJustMovedToIsTabbing;
+    bool NavJustMovedToHasSelectionData;
+    ImGuiKeyChord ConfigNavWindowingKeyNext;
+    ImGuiKeyChord ConfigNavWindowingKeyPrev;
+    ImGuiWindow* NavWindowingTarget;
+    ImGuiWindow* NavWindowingTargetAnim;
+    ImGuiWindow* NavWindowingListWindow;
+    float NavWindowingTimer;
+    float NavWindowingHighlightAlpha;
+    bool NavWindowingToggleLayer;
+    ImGuiKey NavWindowingToggleKey;
+    ImVec2 NavWindowingAccumDeltaPos;
+    ImVec2 NavWindowingAccumDeltaSize;
+    float DimBgRatio;
+    bool DragDropActive;
+    bool DragDropWithinSource;
+    bool DragDropWithinTarget;
+    ImGuiDragDropFlags DragDropSourceFlags;
+    int DragDropSourceFrameCount;
+    int DragDropMouseButton;
+    ImGuiPayload DragDropPayload;
+    ImRect DragDropTargetRect;
+    ImRect DragDropTargetClipRect;
+    ImGuiID DragDropTargetId;
+    ImGuiDragDropFlags DragDropAcceptFlags;
+    float DragDropAcceptIdCurrRectSurface;
+    ImGuiID DragDropAcceptIdCurr;
+    ImGuiID DragDropAcceptIdPrev;
+    int DragDropAcceptFrameCount;
+    ImGuiID DragDropHoldJustPressedId;
+    ImVector_unsigned_char DragDropPayloadBufHeap;
+    unsigned char DragDropPayloadBufLocal[16];
+    int ClipperTempDataStacked;
+    ImVector_ImGuiListClipperData ClipperTempData;
+    ImGuiTable* CurrentTable;
+    ImGuiID DebugBreakInTable;
+    int TablesTempDataStacked;
+    ImVector_ImGuiTableTempData TablesTempData;
+    ImPool_ImGuiTable Tables;
+    ImVector_float TablesLastTimeActive;
+    ImVector_ImDrawChannel DrawChannelsTempMergeBuffer;
+    ImGuiTabBar* CurrentTabBar;
+    ImPool_ImGuiTabBar TabBars;
+    ImVector_ImGuiPtrOrIndex CurrentTabBarStack;
+    ImVector_ImGuiShrinkWidthItem ShrinkWidthBuffer;
+    ImGuiBoxSelectState BoxSelectState;
+    ImGuiMultiSelectTempData* CurrentMultiSelect;
+    int MultiSelectTempDataStacked;
+    ImVector_ImGuiMultiSelectTempData MultiSelectTempData;
+    ImPool_ImGuiMultiSelectState MultiSelectStorage;
+    ImGuiID HoverItemDelayId;
+    ImGuiID HoverItemDelayIdPreviousFrame;
+    float HoverItemDelayTimer;
+    float HoverItemDelayClearTimer;
+    ImGuiID HoverItemUnlockedStationaryId;
+    ImGuiID HoverWindowUnlockedStationaryId;
+    ImGuiMouseCursor MouseCursor;
+    float MouseStationaryTimer;
+    ImVec2 MouseLastValidPos;
+    ImGuiInputTextState InputTextState;
+    ImGuiInputTextDeactivatedState InputTextDeactivatedState;
+    ImFont InputTextPasswordFont;
+    ImGuiID TempInputId;
+    ImGuiDataTypeStorage DataTypeZeroValue;
+    int BeginMenuDepth;
+    int BeginComboDepth;
+    ImGuiColorEditFlags ColorEditOptions;
+    ImGuiID ColorEditCurrentID;
+    ImGuiID ColorEditSavedID;
+    float ColorEditSavedHue;
+    float ColorEditSavedSat;
+    ImU32 ColorEditSavedColor;
+    ImVec4 ColorPickerRef;
+    ImGuiComboPreviewData ComboPreviewData;
+    ImRect WindowResizeBorderExpectedRect;
+    bool WindowResizeRelativeMode;
+    short ScrollbarSeekMode;
+    float ScrollbarClickDeltaToGrabCenter;
+    float SliderGrabClickOffset;
+    float SliderCurrentAccum;
+    bool SliderCurrentAccumDirty;
+    bool DragCurrentAccumDirty;
+    float DragCurrentAccum;
+    float DragSpeedDefaultRatio;
+    float DisabledAlphaBackup;
+    short DisabledStackSize;
+    short LockMarkEdited;
+    short TooltipOverrideCount;
+    ImVector_char ClipboardHandlerData;
+    ImVector_ImGuiID MenusIdSubmittedThisFrame;
+    ImGuiTypingSelectState TypingSelectState;
+    ImGuiPlatformImeData PlatformImeData;
+    ImGuiPlatformImeData PlatformImeDataPrev;
+    ImGuiID PlatformImeViewport;
+    ImGuiDockContext DockContext;
+    void (*DockNodeWindowMenuHandler)(ImGuiContext* ctx, ImGuiDockNode* node, ImGuiTabBar* tab_bar);
+    bool SettingsLoaded;
+    float SettingsDirtyTimer;
+    ImGuiTextBuffer SettingsIniData;
+    ImVector_ImGuiSettingsHandler SettingsHandlers;
+    ImChunkStream_ImGuiWindowSettings SettingsWindows;
+    ImChunkStream_ImGuiTableSettings SettingsTables;
+    ImVector_ImGuiContextHook Hooks;
+    ImGuiID HookIdNext;
+    const char* LocalizationTable[ImGuiLocKey_COUNT];
+    bool LogEnabled;
+    ImGuiLogType LogType;
+    ImFileHandle LogFile;
+    ImGuiTextBuffer LogBuffer;
+    const char* LogNextPrefix;
+    const char* LogNextSuffix;
+    float LogLinePosY;
+    bool LogLineFirstItem;
+    int LogDepthRef;
+    int LogDepthToExpand;
+    int LogDepthToExpandDefault;
+    ImGuiDebugLogFlags DebugLogFlags;
+    ImGuiTextBuffer DebugLogBuf;
+    ImGuiTextIndex DebugLogIndex;
+    ImGuiDebugLogFlags DebugLogAutoDisableFlags;
+    ImU8 DebugLogAutoDisableFrames;
+    ImU8 DebugLocateFrames;
+    bool DebugBreakInLocateId;
+    ImGuiKeyChord DebugBreakKeyChord;
+    ImS8 DebugBeginReturnValueCullDepth;
+    bool DebugItemPickerActive;
+    ImU8 DebugItemPickerMouseButton;
+    ImGuiID DebugItemPickerBreakId;
+    float DebugFlashStyleColorTime;
+    ImVec4 DebugFlashStyleColorBackup;
+    ImGuiMetricsConfig DebugMetricsConfig;
+    ImGuiIDStackTool DebugIDStackTool;
+    ImGuiDebugAllocInfo DebugAllocInfo;
+    ImGuiDockNode* DebugHoveredDockNode;
+    float FramerateSecPerFrame[60];
+    int FramerateSecPerFrameIdx;
+    int FramerateSecPerFrameCount;
+    float FramerateSecPerFrameAccum;
+    int WantCaptureMouseNextFrame;
+    int WantCaptureKeyboardNextFrame;
+    int WantTextInputNextFrame;
+    ImVector_char TempBuffer;
+    char TempKeychordName[64];
+};
+struct ImGuiWindowTempData
+{
+    ImVec2 CursorPos;
+    ImVec2 CursorPosPrevLine;
+    ImVec2 CursorStartPos;
+    ImVec2 CursorMaxPos;
+    ImVec2 IdealMaxPos;
+    ImVec2 CurrLineSize;
+    ImVec2 PrevLineSize;
+    float CurrLineTextBaseOffset;
+    float PrevLineTextBaseOffset;
+    bool IsSameLine;
+    bool IsSetPos;
+    ImVec1 Indent;
+    ImVec1 ColumnsOffset;
+    ImVec1 GroupOffset;
+    ImVec2 CursorStartPosLossyness;
+    ImGuiNavLayer NavLayerCurrent;
+    short NavLayersActiveMask;
+    short NavLayersActiveMaskNext;
+    bool NavIsScrollPushableX;
+    bool NavHideHighlightOneFrame;
+    bool NavWindowHasScrollY;
+    bool MenuBarAppending;
+    ImVec2 MenuBarOffset;
+    ImGuiMenuColumns MenuColumns;
+    int TreeDepth;
+    ImU32 TreeHasStackDataDepthMask;
+    ImVector_ImGuiWindowPtr ChildWindows;
+    ImGuiStorage* StateStorage;
+    ImGuiOldColumns* CurrentColumns;
+    int CurrentTableIdx;
+    ImGuiLayoutType LayoutType;
+    ImGuiLayoutType ParentLayoutType;
+    ImU32 ModalDimBgColor;
+    float ItemWidth;
+    float TextWrapPos;
+    ImVector_float ItemWidthStack;
+    ImVector_float TextWrapPosStack;
+};
+typedef struct ImVector_ImGuiOldColumns {int Size;int Capacity;ImGuiOldColumns* Data;} ImVector_ImGuiOldColumns;
+
+struct ImGuiWindow
+{
+    ImGuiContext* Ctx;
+    char* Name;
+    ImGuiID ID;
+    ImGuiWindowFlags Flags, FlagsPreviousFrame;
+    ImGuiChildFlags ChildFlags;
+    ImGuiWindowClass WindowClass;
+    ImGuiViewportP* Viewport;
+    ImGuiID ViewportId;
+    ImVec2 ViewportPos;
+    int ViewportAllowPlatformMonitorExtend;
+    ImVec2 Pos;
+    ImVec2 Size;
+    ImVec2 SizeFull;
+    ImVec2 ContentSize;
+    ImVec2 ContentSizeIdeal;
+    ImVec2 ContentSizeExplicit;
+    ImVec2 WindowPadding;
+    float WindowRounding;
+    float WindowBorderSize;
+    float TitleBarHeight, MenuBarHeight;
+    float DecoOuterSizeX1, DecoOuterSizeY1;
+    float DecoOuterSizeX2, DecoOuterSizeY2;
+    float DecoInnerSizeX1, DecoInnerSizeY1;
+    int NameBufLen;
+    ImGuiID MoveId;
+    ImGuiID TabId;
+    ImGuiID ChildId;
+    ImGuiID PopupId;
+    ImVec2 Scroll;
+    ImVec2 ScrollMax;
+    ImVec2 ScrollTarget;
+    ImVec2 ScrollTargetCenterRatio;
+    ImVec2 ScrollTargetEdgeSnapDist;
+    ImVec2 ScrollbarSizes;
+    bool ScrollbarX, ScrollbarY;
+    bool ViewportOwned;
+    bool Active;
+    bool WasActive;
+    bool WriteAccessed;
+    bool Collapsed;
+    bool WantCollapseToggle;
+    bool SkipItems;
+    bool SkipRefresh;
+    bool Appearing;
+    bool Hidden;
+    bool IsFallbackWindow;
+    bool IsExplicitChild;
+    bool HasCloseButton;
+    signed char ResizeBorderHovered;
+    signed char ResizeBorderHeld;
+    short BeginCount;
+    short BeginCountPreviousFrame;
+    short BeginOrderWithinParent;
+    short BeginOrderWithinContext;
+    short FocusOrder;
+    ImS8 AutoFitFramesX, AutoFitFramesY;
+    bool AutoFitOnlyGrows;
+    ImGuiDir AutoPosLastDirection;
+    ImS8 HiddenFramesCanSkipItems;
+    ImS8 HiddenFramesCannotSkipItems;
+    ImS8 HiddenFramesForRenderOnly;
+    ImS8 DisableInputsFrames;
+    ImGuiCond SetWindowPosAllowFlags : 8;
+    ImGuiCond SetWindowSizeAllowFlags : 8;
+    ImGuiCond SetWindowCollapsedAllowFlags : 8;
+    ImGuiCond SetWindowDockAllowFlags : 8;
+    ImVec2 SetWindowPosVal;
+    ImVec2 SetWindowPosPivot;
+    ImVector_ImGuiID IDStack;
+    ImGuiWindowTempData DC;
+    ImRect OuterRectClipped;
+    ImRect InnerRect;
+    ImRect InnerClipRect;
+    ImRect WorkRect;
+    ImRect ParentWorkRect;
+    ImRect ClipRect;
+    ImRect ContentRegionRect;
+    ImVec2ih HitTestHoleSize;
+    ImVec2ih HitTestHoleOffset;
+    int LastFrameActive;
+    int LastFrameJustFocused;
+    float LastTimeActive;
+    float ItemWidthDefault;
+    ImGuiStorage StateStorage;
+    ImVector_ImGuiOldColumns ColumnsStorage;
+    float FontWindowScale;
+    float FontDpiScale;
+    int SettingsOffset;
+    ImDrawList* DrawList;
+    ImDrawList DrawListInst;
+    ImGuiWindow* ParentWindow;
+    ImGuiWindow* ParentWindowInBeginStack;
+    ImGuiWindow* RootWindow;
+    ImGuiWindow* RootWindowPopupTree;
+    ImGuiWindow* RootWindowDockTree;
+    ImGuiWindow* RootWindowForTitleBarHighlight;
+    ImGuiWindow* RootWindowForNav;
+    ImGuiWindow* ParentWindowForFocusRoute;
+    ImGuiWindow* NavLastChildNavWindow;
+    ImGuiID NavLastIds[ImGuiNavLayer_COUNT];
+    ImRect NavRectRel[ImGuiNavLayer_COUNT];
+    ImVec2 NavPreferredScoringPosRel[ImGuiNavLayer_COUNT];
+    ImGuiID NavRootFocusScopeId;
+    int MemoryDrawListIdxCapacity;
+    int MemoryDrawListVtxCapacity;
+    bool MemoryCompacted;
+    bool DockIsActive :1;
+    bool DockNodeIsVisible :1;
+    bool DockTabIsVisible :1;
+    bool DockTabWantClose :1;
+    short DockOrder;
+    ImGuiWindowDockStyle DockStyle;
+    ImGuiDockNode* DockNode;
+    ImGuiDockNode* DockNodeAsHost;
+    ImGuiID DockId;
+    ImGuiItemStatusFlags DockTabItemStatusFlags;
+    ImRect DockTabItemRect;
+};
+typedef enum {
+    ImGuiTabBarFlags_DockNode = 1 << 20,
+    ImGuiTabBarFlags_IsFocused = 1 << 21,
+    ImGuiTabBarFlags_SaveSettings = 1 << 22,
+}ImGuiTabBarFlagsPrivate_;
+typedef enum {
+    ImGuiTabItemFlags_SectionMask_ = ImGuiTabItemFlags_Leading | ImGuiTabItemFlags_Trailing,
+    ImGuiTabItemFlags_NoCloseButton = 1 << 20,
+    ImGuiTabItemFlags_Button = 1 << 21,
+    ImGuiTabItemFlags_Unsorted = 1 << 22,
+}ImGuiTabItemFlagsPrivate_;
+struct ImGuiTabItem
+{
+    ImGuiID ID;
+    ImGuiTabItemFlags Flags;
+    ImGuiWindow* Window;
+    int LastFrameVisible;
+    int LastFrameSelected;
+    float Offset;
+    float Width;
+    float ContentWidth;
+    float RequestedWidth;
+    ImS32 NameOffset;
+    ImS16 BeginOrder;
+    ImS16 IndexDuringLayout;
+    bool WantClose;
+};
+typedef struct ImVector_ImGuiTabItem {int Size;int Capacity;ImGuiTabItem* Data;} ImVector_ImGuiTabItem;
+
+struct ImGuiTabBar
+{
+    ImVector_ImGuiTabItem Tabs;
+    ImGuiTabBarFlags Flags;
+    ImGuiID ID;
+    ImGuiID SelectedTabId;
+    ImGuiID NextSelectedTabId;
+    ImGuiID VisibleTabId;
+    int CurrFrameVisible;
+    int PrevFrameVisible;
+    ImRect BarRect;
+    float CurrTabsContentsHeight;
+    float PrevTabsContentsHeight;
+    float WidthAllTabs;
+    float WidthAllTabsIdeal;
+    float ScrollingAnim;
+    float ScrollingTarget;
+    float ScrollingTargetDistToVisibility;
+    float ScrollingSpeed;
+    float ScrollingRectMinX;
+    float ScrollingRectMaxX;
+    float SeparatorMinX;
+    float SeparatorMaxX;
+    ImGuiID ReorderRequestTabId;
+    ImS16 ReorderRequestOffset;
+    ImS8 BeginCount;
+    bool WantLayout;
+    bool VisibleTabWasSubmitted;
+    bool TabsAddedNew;
+    ImS16 TabsActiveCount;
+    ImS16 LastTabItemIdx;
+    float ItemSpacingY;
+    ImVec2 FramePadding;
+    ImVec2 BackupCursorPos;
+    ImGuiTextBuffer TabsNames;
+};
+typedef ImS16 ImGuiTableColumnIdx;
+typedef ImU16 ImGuiTableDrawChannelIdx;
+struct ImGuiTableColumn
+{
+    ImGuiTableColumnFlags Flags;
+    float WidthGiven;
+    float MinX;
+    float MaxX;
+    float WidthRequest;
+    float WidthAuto;
+    float WidthMax;
+    float StretchWeight;
+    float InitStretchWeightOrWidth;
+    ImRect ClipRect;
+    ImGuiID UserID;
+    float WorkMinX;
+    float WorkMaxX;
+    float ItemWidth;
+    float ContentMaxXFrozen;
+    float ContentMaxXUnfrozen;
+    float ContentMaxXHeadersUsed;
+    float ContentMaxXHeadersIdeal;
+    ImS16 NameOffset;
+    ImGuiTableColumnIdx DisplayOrder;
+    ImGuiTableColumnIdx IndexWithinEnabledSet;
+    ImGuiTableColumnIdx PrevEnabledColumn;
+    ImGuiTableColumnIdx NextEnabledColumn;
+    ImGuiTableColumnIdx SortOrder;
+    ImGuiTableDrawChannelIdx DrawChannelCurrent;
+    ImGuiTableDrawChannelIdx DrawChannelFrozen;
+    ImGuiTableDrawChannelIdx DrawChannelUnfrozen;
+    bool IsEnabled;
+    bool IsUserEnabled;
+    bool IsUserEnabledNextFrame;
+    bool IsVisibleX;
+    bool IsVisibleY;
+    bool IsRequestOutput;
+    bool IsSkipItems;
+    bool IsPreserveWidthAuto;
+    ImS8 NavLayerCurrent;
+    ImU8 AutoFitQueue;
+    ImU8 CannotSkipItemsQueue;
+    ImU8 SortDirection : 2;
+    ImU8 SortDirectionsAvailCount : 2;
+    ImU8 SortDirectionsAvailMask : 4;
+    ImU8 SortDirectionsAvailList;
+};
+typedef struct ImGuiTableCellData ImGuiTableCellData;
+struct ImGuiTableCellData
+{
+    ImU32 BgColor;
+    ImGuiTableColumnIdx Column;
+};
+struct ImGuiTableHeaderData
+{
+    ImGuiTableColumnIdx Index;
+    ImU32 TextColor;
+    ImU32 BgColor0;
+    ImU32 BgColor1;
+};
+struct ImGuiTableInstanceData
+{
+    ImGuiID TableInstanceID;
+    float LastOuterHeight;
+    float LastTopHeadersRowHeight;
+    float LastFrozenHeight;
+    int HoveredRowLast;
+    int HoveredRowNext;
+};
+typedef struct ImSpan_ImGuiTableColumn {ImGuiTableColumn* Data;ImGuiTableColumn* DataEnd;} ImSpan_ImGuiTableColumn;
+
+typedef struct ImSpan_ImGuiTableColumnIdx {ImGuiTableColumnIdx* Data;ImGuiTableColumnIdx* DataEnd;} ImSpan_ImGuiTableColumnIdx;
+
+typedef struct ImSpan_ImGuiTableCellData {ImGuiTableCellData* Data;ImGuiTableCellData* DataEnd;} ImSpan_ImGuiTableCellData;
+
+typedef struct ImVector_ImGuiTableInstanceData {int Size;int Capacity;ImGuiTableInstanceData* Data;} ImVector_ImGuiTableInstanceData;
+
+typedef struct ImVector_ImGuiTableColumnSortSpecs {int Size;int Capacity;ImGuiTableColumnSortSpecs* Data;} ImVector_ImGuiTableColumnSortSpecs;
+
+struct ImGuiTable
+{
+    ImGuiID ID;
+    ImGuiTableFlags Flags;
+    void* RawData;
+    ImGuiTableTempData* TempData;
+    ImSpan_ImGuiTableColumn Columns;
+    ImSpan_ImGuiTableColumnIdx DisplayOrderToIndex;
+    ImSpan_ImGuiTableCellData RowCellData;
+    ImBitArrayPtr EnabledMaskByDisplayOrder;
+    ImBitArrayPtr EnabledMaskByIndex;
+    ImBitArrayPtr VisibleMaskByIndex;
+    ImGuiTableFlags SettingsLoadedFlags;
+    int SettingsOffset;
+    int LastFrameActive;
+    int ColumnsCount;
+    int CurrentRow;
+    int CurrentColumn;
+    ImS16 InstanceCurrent;
+    ImS16 InstanceInteracted;
+    float RowPosY1;
+    float RowPosY2;
+    float RowMinHeight;
+    float RowCellPaddingY;
+    float RowTextBaseline;
+    float RowIndentOffsetX;
+    ImGuiTableRowFlags RowFlags : 16;
+    ImGuiTableRowFlags LastRowFlags : 16;
+    int RowBgColorCounter;
+    ImU32 RowBgColor[2];
+    ImU32 BorderColorStrong;
+    ImU32 BorderColorLight;
+    float BorderX1;
+    float BorderX2;
+    float HostIndentX;
+    float MinColumnWidth;
+    float OuterPaddingX;
+    float CellPaddingX;
+    float CellSpacingX1;
+    float CellSpacingX2;
+    float InnerWidth;
+    float ColumnsGivenWidth;
+    float ColumnsAutoFitWidth;
+    float ColumnsStretchSumWeights;
+    float ResizedColumnNextWidth;
+    float ResizeLockMinContentsX2;
+    float RefScale;
+    float AngledHeadersHeight;
+    float AngledHeadersSlope;
+    ImRect OuterRect;
+    ImRect InnerRect;
+    ImRect WorkRect;
+    ImRect InnerClipRect;
+    ImRect BgClipRect;
+    ImRect Bg0ClipRectForDrawCmd;
+    ImRect Bg2ClipRectForDrawCmd;
+    ImRect HostClipRect;
+    ImRect HostBackupInnerClipRect;
+    ImGuiWindow* OuterWindow;
+    ImGuiWindow* InnerWindow;
+    ImGuiTextBuffer ColumnsNames;
+    ImDrawListSplitter* DrawSplitter;
+    ImGuiTableInstanceData InstanceDataFirst;
+    ImVector_ImGuiTableInstanceData InstanceDataExtra;
+    ImGuiTableColumnSortSpecs SortSpecsSingle;
+    ImVector_ImGuiTableColumnSortSpecs SortSpecsMulti;
+    ImGuiTableSortSpecs SortSpecs;
+    ImGuiTableColumnIdx SortSpecsCount;
+    ImGuiTableColumnIdx ColumnsEnabledCount;
+    ImGuiTableColumnIdx ColumnsEnabledFixedCount;
+    ImGuiTableColumnIdx DeclColumnsCount;
+    ImGuiTableColumnIdx AngledHeadersCount;
+    ImGuiTableColumnIdx HoveredColumnBody;
+    ImGuiTableColumnIdx HoveredColumnBorder;
+    ImGuiTableColumnIdx HighlightColumnHeader;
+    ImGuiTableColumnIdx AutoFitSingleColumn;
+    ImGuiTableColumnIdx ResizedColumn;
+    ImGuiTableColumnIdx LastResizedColumn;
+    ImGuiTableColumnIdx HeldHeaderColumn;
+    ImGuiTableColumnIdx ReorderColumn;
+    ImGuiTableColumnIdx ReorderColumnDir;
+    ImGuiTableColumnIdx LeftMostEnabledColumn;
+    ImGuiTableColumnIdx RightMostEnabledColumn;
+    ImGuiTableColumnIdx LeftMostStretchedColumn;
+    ImGuiTableColumnIdx RightMostStretchedColumn;
+    ImGuiTableColumnIdx ContextPopupColumn;
+    ImGuiTableColumnIdx FreezeRowsRequest;
+    ImGuiTableColumnIdx FreezeRowsCount;
+    ImGuiTableColumnIdx FreezeColumnsRequest;
+    ImGuiTableColumnIdx FreezeColumnsCount;
+    ImGuiTableColumnIdx RowCellDataCurrent;
+    ImGuiTableDrawChannelIdx DummyDrawChannel;
+    ImGuiTableDrawChannelIdx Bg2DrawChannelCurrent;
+    ImGuiTableDrawChannelIdx Bg2DrawChannelUnfrozen;
+    bool IsLayoutLocked;
+    bool IsInsideRow;
+    bool IsInitializing;
+    bool IsSortSpecsDirty;
+    bool IsUsingHeaders;
+    bool IsContextPopupOpen;
+    bool DisableDefaultContextMenu;
+    bool IsSettingsRequestLoad;
+    bool IsSettingsDirty;
+    bool IsDefaultDisplayOrder;
+    bool IsResetAllRequest;
+    bool IsResetDisplayOrderRequest;
+    bool IsUnfrozenRows;
+    bool IsDefaultSizingPolicy;
+    bool IsActiveIdAliveBeforeTable;
+    bool IsActiveIdInTable;
+    bool HasScrollbarYCurr;
+    bool HasScrollbarYPrev;
+    bool MemoryCompacted;
+    bool HostSkipItems;
+};
+typedef struct ImVector_ImGuiTableHeaderData {int Size;int Capacity;ImGuiTableHeaderData* Data;} ImVector_ImGuiTableHeaderData;
+
+struct ImGuiTableTempData
+{
+    int TableIndex;
+    float LastTimeActive;
+    float AngledHeadersExtraWidth;
+    ImVector_ImGuiTableHeaderData AngledHeadersRequests;
+    ImVec2 UserOuterSize;
+    ImDrawListSplitter DrawSplitter;
+    ImRect HostBackupWorkRect;
+    ImRect HostBackupParentWorkRect;
+    ImVec2 HostBackupPrevLineSize;
+    ImVec2 HostBackupCurrLineSize;
+    ImVec2 HostBackupCursorMaxPos;
+    ImVec1 HostBackupColumnsOffset;
+    float HostBackupItemWidth;
+    int HostBackupItemWidthStackSize;
+};
+typedef struct ImGuiTableColumnSettings ImGuiTableColumnSettings;
+struct ImGuiTableColumnSettings
+{
+    float WidthOrWeight;
+    ImGuiID UserID;
+    ImGuiTableColumnIdx Index;
+    ImGuiTableColumnIdx DisplayOrder;
+    ImGuiTableColumnIdx SortOrder;
+    ImU8 SortDirection : 2;
+    ImU8 IsEnabled : 1;
+    ImU8 IsStretch : 1;
+};
+struct ImGuiTableSettings
+{
+    ImGuiID ID;
+    ImGuiTableFlags SaveFlags;
+    float RefScale;
+    ImGuiTableColumnIdx ColumnsCount;
+    ImGuiTableColumnIdx ColumnsCountMax;
+    bool WantApply;
+};
+struct ImFontBuilderIO
+{
+    bool (*FontBuilder_Build)(ImFontAtlas* atlas);
+};
+#define IMGUI_HAS_DOCK       1
+
+#define ImDrawCallback_ResetRenderState       (ImDrawCallback)(-8)
+
+#else
+struct GLFWwindow;
+struct SDL_Window;
+typedef union SDL_Event SDL_Event;
+#endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS
+
+#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
+typedef struct ImGuiTextFilter::ImGuiTextRange ImGuiTextRange;
+typedef ImStb::STB_TexteditState STB_TexteditState;
+typedef ImStb::StbTexteditRow StbTexteditRow;
+typedef ImStb::StbUndoRecord StbUndoRecord;
+typedef ImStb::StbUndoState StbUndoState;
+typedef ImChunkStream<ImGuiTableSettings> ImChunkStream_ImGuiTableSettings;
+typedef ImChunkStream<ImGuiWindowSettings> ImChunkStream_ImGuiWindowSettings;
+typedef ImPool<ImGuiMultiSelectState> ImPool_ImGuiMultiSelectState;
+typedef ImPool<ImGuiTabBar> ImPool_ImGuiTabBar;
+typedef ImPool<ImGuiTable> ImPool_ImGuiTable;
+typedef ImSpan<ImGuiTableCellData> ImSpan_ImGuiTableCellData;
+typedef ImSpan<ImGuiTableColumn> ImSpan_ImGuiTableColumn;
+typedef ImSpan<ImGuiTableColumnIdx> ImSpan_ImGuiTableColumnIdx;
+typedef ImVector<ImDrawChannel> ImVector_ImDrawChannel;
+typedef ImVector<ImDrawCmd> ImVector_ImDrawCmd;
+typedef ImVector<ImDrawIdx> ImVector_ImDrawIdx;
+typedef ImVector<ImDrawList*> ImVector_ImDrawListPtr;
+typedef ImVector<ImDrawVert> ImVector_ImDrawVert;
+typedef ImVector<ImFont*> ImVector_ImFontPtr;
+typedef ImVector<ImFontAtlasCustomRect> ImVector_ImFontAtlasCustomRect;
+typedef ImVector<ImFontConfig> ImVector_ImFontConfig;
+typedef ImVector<ImFontGlyph> ImVector_ImFontGlyph;
+typedef ImVector<ImGuiColorMod> ImVector_ImGuiColorMod;
+typedef ImVector<ImGuiContextHook> ImVector_ImGuiContextHook;
+typedef ImVector<ImGuiDockNodeSettings> ImVector_ImGuiDockNodeSettings;
+typedef ImVector<ImGuiDockRequest> ImVector_ImGuiDockRequest;
+typedef ImVector<ImGuiFocusScopeData> ImVector_ImGuiFocusScopeData;
+typedef ImVector<ImGuiGroupData> ImVector_ImGuiGroupData;
+typedef ImVector<ImGuiID> ImVector_ImGuiID;
+typedef ImVector<ImGuiInputEvent> ImVector_ImGuiInputEvent;
+typedef ImVector<ImGuiItemFlags> ImVector_ImGuiItemFlags;
+typedef ImVector<ImGuiKeyRoutingData> ImVector_ImGuiKeyRoutingData;
+typedef ImVector<ImGuiListClipperData> ImVector_ImGuiListClipperData;
+typedef ImVector<ImGuiListClipperRange> ImVector_ImGuiListClipperRange;
+typedef ImVector<ImGuiMultiSelectTempData> ImVector_ImGuiMultiSelectTempData;
+typedef ImVector<ImGuiOldColumnData> ImVector_ImGuiOldColumnData;
+typedef ImVector<ImGuiOldColumns> ImVector_ImGuiOldColumns;
+typedef ImVector<ImGuiPlatformMonitor> ImVector_ImGuiPlatformMonitor;
+typedef ImVector<ImGuiPopupData> ImVector_ImGuiPopupData;
+typedef ImVector<ImGuiPtrOrIndex> ImVector_ImGuiPtrOrIndex;
+typedef ImVector<ImGuiSelectionRequest> ImVector_ImGuiSelectionRequest;
+typedef ImVector<ImGuiSettingsHandler> ImVector_ImGuiSettingsHandler;
+typedef ImVector<ImGuiShrinkWidthItem> ImVector_ImGuiShrinkWidthItem;
+typedef ImVector<ImGuiStackLevelInfo> ImVector_ImGuiStackLevelInfo;
+typedef ImVector<ImGuiStoragePair> ImVector_ImGuiStoragePair;
+typedef ImVector<ImGuiStyleMod> ImVector_ImGuiStyleMod;
+typedef ImVector<ImGuiTabItem> ImVector_ImGuiTabItem;
+typedef ImVector<ImGuiTableColumnSortSpecs> ImVector_ImGuiTableColumnSortSpecs;
+typedef ImVector<ImGuiTableHeaderData> ImVector_ImGuiTableHeaderData;
+typedef ImVector<ImGuiTableInstanceData> ImVector_ImGuiTableInstanceData;
+typedef ImVector<ImGuiTableTempData> ImVector_ImGuiTableTempData;
+typedef ImVector<ImGuiTextRange> ImVector_ImGuiTextRange;
+typedef ImVector<ImGuiTreeNodeStackData> ImVector_ImGuiTreeNodeStackData;
+typedef ImVector<ImGuiViewport*> ImVector_ImGuiViewportPtr;
+typedef ImVector<ImGuiViewportP*> ImVector_ImGuiViewportPPtr;
+typedef ImVector<ImGuiWindow*> ImVector_ImGuiWindowPtr;
+typedef ImVector<ImGuiWindowStackData> ImVector_ImGuiWindowStackData;
+typedef ImVector<ImTextureID> ImVector_ImTextureID;
+typedef ImVector<ImU32> ImVector_ImU32;
+typedef ImVector<ImVec2> ImVector_ImVec2;
+typedef ImVector<ImVec4> ImVector_ImVec4;
+typedef ImVector<ImWchar> ImVector_ImWchar;
+typedef ImVector<char> ImVector_char;
+typedef ImVector<const char*> ImVector_const_charPtr;
+typedef ImVector<float> ImVector_float;
+typedef ImVector<int> ImVector_int;
+typedef ImVector<unsigned char> ImVector_unsigned_char;
+#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS
+CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void);
+CIMGUI_API void ImVec2_destroy(ImVec2* self);
+CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y);
+CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void);
+CIMGUI_API void ImVec4_destroy(ImVec4* self);
+CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w);
+CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas);
+CIMGUI_API void igDestroyContext(ImGuiContext* ctx);
+CIMGUI_API ImGuiContext* igGetCurrentContext(void);
+CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx);
+CIMGUI_API ImGuiIO* igGetIO(void);
+CIMGUI_API ImGuiPlatformIO* igGetPlatformIO(void);
+CIMGUI_API ImGuiStyle* igGetStyle(void);
+CIMGUI_API void igNewFrame(void);
+CIMGUI_API void igEndFrame(void);
+CIMGUI_API void igRender(void);
+CIMGUI_API ImDrawData* igGetDrawData(void);
+CIMGUI_API void igShowDemoWindow(bool* p_open);
+CIMGUI_API void igShowMetricsWindow(bool* p_open);
+CIMGUI_API void igShowDebugLogWindow(bool* p_open);
+CIMGUI_API void igShowIDStackToolWindow(bool* p_open);
+CIMGUI_API void igShowAboutWindow(bool* p_open);
+CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref);
+CIMGUI_API bool igShowStyleSelector(const char* label);
+CIMGUI_API void igShowFontSelector(const char* label);
+CIMGUI_API void igShowUserGuide(void);
+CIMGUI_API const char* igGetVersion(void);
+CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst);
+CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst);
+CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst);
+CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags);
+CIMGUI_API void igEnd(void);
+CIMGUI_API bool igBeginChild_Str(const char* str_id,const ImVec2 size,ImGuiChildFlags child_flags,ImGuiWindowFlags window_flags);
+CIMGUI_API bool igBeginChild_ID(ImGuiID id,const ImVec2 size,ImGuiChildFlags child_flags,ImGuiWindowFlags window_flags);
+CIMGUI_API void igEndChild(void);
+CIMGUI_API bool igIsWindowAppearing(void);
+CIMGUI_API bool igIsWindowCollapsed(void);
+CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags);
+CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags);
+CIMGUI_API ImDrawList* igGetWindowDrawList(void);
+CIMGUI_API float igGetWindowDpiScale(void);
+CIMGUI_API void igGetWindowPos(ImVec2 *pOut);
+CIMGUI_API void igGetWindowSize(ImVec2 *pOut);
+CIMGUI_API float igGetWindowWidth(void);
+CIMGUI_API float igGetWindowHeight(void);
+CIMGUI_API ImGuiViewport* igGetWindowViewport(void);
+CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot);
+CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond);
+CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data);
+CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size);
+CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond);
+CIMGUI_API void igSetNextWindowFocus(void);
+CIMGUI_API void igSetNextWindowScroll(const ImVec2 scroll);
+CIMGUI_API void igSetNextWindowBgAlpha(float alpha);
+CIMGUI_API void igSetNextWindowViewport(ImGuiID viewport_id);
+CIMGUI_API void igSetWindowPos_Vec2(const ImVec2 pos,ImGuiCond cond);
+CIMGUI_API void igSetWindowSize_Vec2(const ImVec2 size,ImGuiCond cond);
+CIMGUI_API void igSetWindowCollapsed_Bool(bool collapsed,ImGuiCond cond);
+CIMGUI_API void igSetWindowFocus_Nil(void);
+CIMGUI_API void igSetWindowFontScale(float scale);
+CIMGUI_API void igSetWindowPos_Str(const char* name,const ImVec2 pos,ImGuiCond cond);
+CIMGUI_API void igSetWindowSize_Str(const char* name,const ImVec2 size,ImGuiCond cond);
+CIMGUI_API void igSetWindowCollapsed_Str(const char* name,bool collapsed,ImGuiCond cond);
+CIMGUI_API void igSetWindowFocus_Str(const char* name);
+CIMGUI_API float igGetScrollX(void);
+CIMGUI_API float igGetScrollY(void);
+CIMGUI_API void igSetScrollX_Float(float scroll_x);
+CIMGUI_API void igSetScrollY_Float(float scroll_y);
+CIMGUI_API float igGetScrollMaxX(void);
+CIMGUI_API float igGetScrollMaxY(void);
+CIMGUI_API void igSetScrollHereX(float center_x_ratio);
+CIMGUI_API void igSetScrollHereY(float center_y_ratio);
+CIMGUI_API void igSetScrollFromPosX_Float(float local_x,float center_x_ratio);
+CIMGUI_API void igSetScrollFromPosY_Float(float local_y,float center_y_ratio);
+CIMGUI_API void igPushFont(ImFont* font);
+CIMGUI_API void igPopFont(void);
+CIMGUI_API void igPushStyleColor_U32(ImGuiCol idx,ImU32 col);
+CIMGUI_API void igPushStyleColor_Vec4(ImGuiCol idx,const ImVec4 col);
+CIMGUI_API void igPopStyleColor(int count);
+CIMGUI_API void igPushStyleVar_Float(ImGuiStyleVar idx,float val);
+CIMGUI_API void igPushStyleVar_Vec2(ImGuiStyleVar idx,const ImVec2 val);
+CIMGUI_API void igPushStyleVarX(ImGuiStyleVar idx,float val_x);
+CIMGUI_API void igPushStyleVarY(ImGuiStyleVar idx,float val_y);
+CIMGUI_API void igPopStyleVar(int count);
+CIMGUI_API void igPushItemFlag(ImGuiItemFlags option,bool enabled);
+CIMGUI_API void igPopItemFlag(void);
+CIMGUI_API void igPushItemWidth(float item_width);
+CIMGUI_API void igPopItemWidth(void);
+CIMGUI_API void igSetNextItemWidth(float item_width);
+CIMGUI_API float igCalcItemWidth(void);
+CIMGUI_API void igPushTextWrapPos(float wrap_local_pos_x);
+CIMGUI_API void igPopTextWrapPos(void);
+CIMGUI_API ImFont* igGetFont(void);
+CIMGUI_API float igGetFontSize(void);
+CIMGUI_API void igGetFontTexUvWhitePixel(ImVec2 *pOut);
+CIMGUI_API ImU32 igGetColorU32_Col(ImGuiCol idx,float alpha_mul);
+CIMGUI_API ImU32 igGetColorU32_Vec4(const ImVec4 col);
+CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col,float alpha_mul);
+CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx);
+CIMGUI_API void igGetCursorScreenPos(ImVec2 *pOut);
+CIMGUI_API void igSetCursorScreenPos(const ImVec2 pos);
+CIMGUI_API void igGetContentRegionAvail(ImVec2 *pOut);
+CIMGUI_API void igGetCursorPos(ImVec2 *pOut);
+CIMGUI_API float igGetCursorPosX(void);
+CIMGUI_API float igGetCursorPosY(void);
+CIMGUI_API void igSetCursorPos(const ImVec2 local_pos);
+CIMGUI_API void igSetCursorPosX(float local_x);
+CIMGUI_API void igSetCursorPosY(float local_y);
+CIMGUI_API void igGetCursorStartPos(ImVec2 *pOut);
+CIMGUI_API void igSeparator(void);
+CIMGUI_API void igSameLine(float offset_from_start_x,float spacing);
+CIMGUI_API void igNewLine(void);
+CIMGUI_API void igSpacing(void);
+CIMGUI_API void igDummy(const ImVec2 size);
+CIMGUI_API void igIndent(float indent_w);
+CIMGUI_API void igUnindent(float indent_w);
+CIMGUI_API void igBeginGroup(void);
+CIMGUI_API void igEndGroup(void);
+CIMGUI_API void igAlignTextToFramePadding(void);
+CIMGUI_API float igGetTextLineHeight(void);
+CIMGUI_API float igGetTextLineHeightWithSpacing(void);
+CIMGUI_API float igGetFrameHeight(void);
+CIMGUI_API float igGetFrameHeightWithSpacing(void);
+CIMGUI_API void igPushID_Str(const char* str_id);
+CIMGUI_API void igPushID_StrStr(const char* str_id_begin,const char* str_id_end);
+CIMGUI_API void igPushID_Ptr(const void* ptr_id);
+CIMGUI_API void igPushID_Int(int int_id);
+CIMGUI_API void igPopID(void);
+CIMGUI_API ImGuiID igGetID_Str(const char* str_id);
+CIMGUI_API ImGuiID igGetID_StrStr(const char* str_id_begin,const char* str_id_end);
+CIMGUI_API ImGuiID igGetID_Ptr(const void* ptr_id);
+CIMGUI_API ImGuiID igGetID_Int(int int_id);
+CIMGUI_API void igTextUnformatted(const char* text,const char* text_end);
+CIMGUI_API void igText(const char* fmt,...);
+CIMGUI_API void igTextV(const char* fmt,va_list args);
+CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...);
+CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args);
+CIMGUI_API void igTextDisabled(const char* fmt,...);
+CIMGUI_API void igTextDisabledV(const char* fmt,va_list args);
+CIMGUI_API void igTextWrapped(const char* fmt,...);
+CIMGUI_API void igTextWrappedV(const char* fmt,va_list args);
+CIMGUI_API void igLabelText(const char* label,const char* fmt,...);
+CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args);
+CIMGUI_API void igBulletText(const char* fmt,...);
+CIMGUI_API void igBulletTextV(const char* fmt,va_list args);
+CIMGUI_API void igSeparatorText(const char* label);
+CIMGUI_API bool igButton(const char* label,const ImVec2 size);
+CIMGUI_API bool igSmallButton(const char* label);
+CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size,ImGuiButtonFlags flags);
+CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir);
+CIMGUI_API bool igCheckbox(const char* label,bool* v);
+CIMGUI_API bool igCheckboxFlags_IntPtr(const char* label,int* flags,int flags_value);
+CIMGUI_API bool igCheckboxFlags_UintPtr(const char* label,unsigned int* flags,unsigned int flags_value);
+CIMGUI_API bool igRadioButton_Bool(const char* label,bool active);
+CIMGUI_API bool igRadioButton_IntPtr(const char* label,int* v,int v_button);
+CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay);
+CIMGUI_API void igBullet(void);
+CIMGUI_API bool igTextLink(const char* label);
+CIMGUI_API void igTextLinkOpenURL(const char* label,const char* url);
+CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 image_size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col);
+CIMGUI_API bool igImageButton(const char* str_id,ImTextureID user_texture_id,const ImVec2 image_size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 bg_col,const ImVec4 tint_col);
+CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags);
+CIMGUI_API void igEndCombo(void);
+CIMGUI_API bool igCombo_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items);
+CIMGUI_API bool igCombo_Str(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items);
+CIMGUI_API bool igCombo_FnStrPtr(const char* label,int* current_item,const char*(*getter)(void* user_data,int idx),void* user_data,int items_count,int popup_max_height_in_items);
+CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* p_data,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data);
+CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data);
+CIMGUI_API bool igInputTextWithHint(const char* label,const char* hint,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data);
+CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* p_data,const void* p_step,const void* p_step_fast,const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,const void* p_step,const void* p_step_fast,const char* format,ImGuiInputTextFlags flags);
+CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags);
+CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags);
+CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags);
+CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col);
+CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,const ImVec2 size);
+CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags);
+CIMGUI_API bool igTreeNode_Str(const char* label);
+CIMGUI_API bool igTreeNode_StrStr(const char* str_id,const char* fmt,...);
+CIMGUI_API bool igTreeNode_Ptr(const void* ptr_id,const char* fmt,...);
+CIMGUI_API bool igTreeNodeV_Str(const char* str_id,const char* fmt,va_list args);
+CIMGUI_API bool igTreeNodeV_Ptr(const void* ptr_id,const char* fmt,va_list args);
+CIMGUI_API bool igTreeNodeEx_Str(const char* label,ImGuiTreeNodeFlags flags);
+CIMGUI_API bool igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...);
+CIMGUI_API bool igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...);
+CIMGUI_API bool igTreeNodeExV_Str(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args);
+CIMGUI_API bool igTreeNodeExV_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args);
+CIMGUI_API void igTreePush_Str(const char* str_id);
+CIMGUI_API void igTreePush_Ptr(const void* ptr_id);
+CIMGUI_API void igTreePop(void);
+CIMGUI_API float igGetTreeNodeToLabelSpacing(void);
+CIMGUI_API bool igCollapsingHeader_TreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags);
+CIMGUI_API bool igCollapsingHeader_BoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags);
+CIMGUI_API void igSetNextItemOpen(bool is_open,ImGuiCond cond);
+CIMGUI_API void igSetNextItemStorageID(ImGuiID storage_id);
+CIMGUI_API bool igSelectable_Bool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size);
+CIMGUI_API bool igSelectable_BoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size);
+CIMGUI_API ImGuiMultiSelectIO* igBeginMultiSelect(ImGuiMultiSelectFlags flags,int selection_size,int items_count);
+CIMGUI_API ImGuiMultiSelectIO* igEndMultiSelect(void);
+CIMGUI_API void igSetNextItemSelectionUserData(ImGuiSelectionUserData selection_user_data);
+CIMGUI_API bool igIsItemToggledSelection(void);
+CIMGUI_API bool igBeginListBox(const char* label,const ImVec2 size);
+CIMGUI_API void igEndListBox(void);
+CIMGUI_API bool igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items);
+CIMGUI_API bool igListBox_FnStrPtr(const char* label,int* current_item,const char*(*getter)(void* user_data,int idx),void* user_data,int items_count,int height_in_items);
+CIMGUI_API void igPlotLines_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride);
+CIMGUI_API void igPlotLines_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size);
+CIMGUI_API void igPlotHistogram_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride);
+CIMGUI_API void igPlotHistogram_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size);
+CIMGUI_API void igValue_Bool(const char* prefix,bool b);
+CIMGUI_API void igValue_Int(const char* prefix,int v);
+CIMGUI_API void igValue_Uint(const char* prefix,unsigned int v);
+CIMGUI_API void igValue_Float(const char* prefix,float v,const char* float_format);
+CIMGUI_API bool igBeginMenuBar(void);
+CIMGUI_API void igEndMenuBar(void);
+CIMGUI_API bool igBeginMainMenuBar(void);
+CIMGUI_API void igEndMainMenuBar(void);
+CIMGUI_API bool igBeginMenu(const char* label,bool enabled);
+CIMGUI_API void igEndMenu(void);
+CIMGUI_API bool igMenuItem_Bool(const char* label,const char* shortcut,bool selected,bool enabled);
+CIMGUI_API bool igMenuItem_BoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled);
+CIMGUI_API bool igBeginTooltip(void);
+CIMGUI_API void igEndTooltip(void);
+CIMGUI_API void igSetTooltip(const char* fmt,...);
+CIMGUI_API void igSetTooltipV(const char* fmt,va_list args);
+CIMGUI_API bool igBeginItemTooltip(void);
+CIMGUI_API void igSetItemTooltip(const char* fmt,...);
+CIMGUI_API void igSetItemTooltipV(const char* fmt,va_list args);
+CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags);
+CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags);
+CIMGUI_API void igEndPopup(void);
+CIMGUI_API void igOpenPopup_Str(const char* str_id,ImGuiPopupFlags popup_flags);
+CIMGUI_API void igOpenPopup_ID(ImGuiID id,ImGuiPopupFlags popup_flags);
+CIMGUI_API void igOpenPopupOnItemClick(const char* str_id,ImGuiPopupFlags popup_flags);
+CIMGUI_API void igCloseCurrentPopup(void);
+CIMGUI_API bool igBeginPopupContextItem(const char* str_id,ImGuiPopupFlags popup_flags);
+CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,ImGuiPopupFlags popup_flags);
+CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,ImGuiPopupFlags popup_flags);
+CIMGUI_API bool igIsPopupOpen_Str(const char* str_id,ImGuiPopupFlags flags);
+CIMGUI_API bool igBeginTable(const char* str_id,int columns,ImGuiTableFlags flags,const ImVec2 outer_size,float inner_width);
+CIMGUI_API void igEndTable(void);
+CIMGUI_API void igTableNextRow(ImGuiTableRowFlags row_flags,float min_row_height);
+CIMGUI_API bool igTableNextColumn(void);
+CIMGUI_API bool igTableSetColumnIndex(int column_n);
+CIMGUI_API void igTableSetupColumn(const char* label,ImGuiTableColumnFlags flags,float init_width_or_weight,ImGuiID user_id);
+CIMGUI_API void igTableSetupScrollFreeze(int cols,int rows);
+CIMGUI_API void igTableHeader(const char* label);
+CIMGUI_API void igTableHeadersRow(void);
+CIMGUI_API void igTableAngledHeadersRow(void);
+CIMGUI_API ImGuiTableSortSpecs* igTableGetSortSpecs(void);
+CIMGUI_API int igTableGetColumnCount(void);
+CIMGUI_API int igTableGetColumnIndex(void);
+CIMGUI_API int igTableGetRowIndex(void);
+CIMGUI_API const char* igTableGetColumnName_Int(int column_n);
+CIMGUI_API ImGuiTableColumnFlags igTableGetColumnFlags(int column_n);
+CIMGUI_API void igTableSetColumnEnabled(int column_n,bool v);
+CIMGUI_API int igTableGetHoveredColumn(void);
+CIMGUI_API void igTableSetBgColor(ImGuiTableBgTarget target,ImU32 color,int column_n);
+CIMGUI_API void igColumns(int count,const char* id,bool borders);
+CIMGUI_API void igNextColumn(void);
+CIMGUI_API int igGetColumnIndex(void);
+CIMGUI_API float igGetColumnWidth(int column_index);
+CIMGUI_API void igSetColumnWidth(int column_index,float width);
+CIMGUI_API float igGetColumnOffset(int column_index);
+CIMGUI_API void igSetColumnOffset(int column_index,float offset_x);
+CIMGUI_API int igGetColumnsCount(void);
+CIMGUI_API bool igBeginTabBar(const char* str_id,ImGuiTabBarFlags flags);
+CIMGUI_API void igEndTabBar(void);
+CIMGUI_API bool igBeginTabItem(const char* label,bool* p_open,ImGuiTabItemFlags flags);
+CIMGUI_API void igEndTabItem(void);
+CIMGUI_API bool igTabItemButton(const char* label,ImGuiTabItemFlags flags);
+CIMGUI_API void igSetTabItemClosed(const char* tab_or_docked_window_label);
+CIMGUI_API ImGuiID igDockSpace(ImGuiID dockspace_id,const ImVec2 size,ImGuiDockNodeFlags flags,const ImGuiWindowClass* window_class);
+CIMGUI_API ImGuiID igDockSpaceOverViewport(ImGuiID dockspace_id,const ImGuiViewport* viewport,ImGuiDockNodeFlags flags,const ImGuiWindowClass* window_class);
+CIMGUI_API void igSetNextWindowDockID(ImGuiID dock_id,ImGuiCond cond);
+CIMGUI_API void igSetNextWindowClass(const ImGuiWindowClass* window_class);
+CIMGUI_API ImGuiID igGetWindowDockID(void);
+CIMGUI_API bool igIsWindowDocked(void);
+CIMGUI_API void igLogToTTY(int auto_open_depth);
+CIMGUI_API void igLogToFile(int auto_open_depth,const char* filename);
+CIMGUI_API void igLogToClipboard(int auto_open_depth);
+CIMGUI_API void igLogFinish(void);
+CIMGUI_API void igLogButtons(void);
+CIMGUI_API void igLogTextV(const char* fmt,va_list args);
+CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags);
+CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t sz,ImGuiCond cond);
+CIMGUI_API void igEndDragDropSource(void);
+CIMGUI_API bool igBeginDragDropTarget(void);
+CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags);
+CIMGUI_API void igEndDragDropTarget(void);
+CIMGUI_API const ImGuiPayload* igGetDragDropPayload(void);
+CIMGUI_API void igBeginDisabled(bool disabled);
+CIMGUI_API void igEndDisabled(void);
+CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect);
+CIMGUI_API void igPopClipRect(void);
+CIMGUI_API void igSetItemDefaultFocus(void);
+CIMGUI_API void igSetKeyboardFocusHere(int offset);
+CIMGUI_API void igSetNextItemAllowOverlap(void);
+CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags);
+CIMGUI_API bool igIsItemActive(void);
+CIMGUI_API bool igIsItemFocused(void);
+CIMGUI_API bool igIsItemClicked(ImGuiMouseButton mouse_button);
+CIMGUI_API bool igIsItemVisible(void);
+CIMGUI_API bool igIsItemEdited(void);
+CIMGUI_API bool igIsItemActivated(void);
+CIMGUI_API bool igIsItemDeactivated(void);
+CIMGUI_API bool igIsItemDeactivatedAfterEdit(void);
+CIMGUI_API bool igIsItemToggledOpen(void);
+CIMGUI_API bool igIsAnyItemHovered(void);
+CIMGUI_API bool igIsAnyItemActive(void);
+CIMGUI_API bool igIsAnyItemFocused(void);
+CIMGUI_API ImGuiID igGetItemID(void);
+CIMGUI_API void igGetItemRectMin(ImVec2 *pOut);
+CIMGUI_API void igGetItemRectMax(ImVec2 *pOut);
+CIMGUI_API void igGetItemRectSize(ImVec2 *pOut);
+CIMGUI_API ImGuiViewport* igGetMainViewport(void);
+CIMGUI_API ImDrawList* igGetBackgroundDrawList(ImGuiViewport* viewport);
+CIMGUI_API ImDrawList* igGetForegroundDrawList_ViewportPtr(ImGuiViewport* viewport);
+CIMGUI_API bool igIsRectVisible_Nil(const ImVec2 size);
+CIMGUI_API bool igIsRectVisible_Vec2(const ImVec2 rect_min,const ImVec2 rect_max);
+CIMGUI_API double igGetTime(void);
+CIMGUI_API int igGetFrameCount(void);
+CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData(void);
+CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx);
+CIMGUI_API void igSetStateStorage(ImGuiStorage* storage);
+CIMGUI_API ImGuiStorage* igGetStateStorage(void);
+CIMGUI_API void igCalcTextSize(ImVec2 *pOut,const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width);
+CIMGUI_API void igColorConvertU32ToFloat4(ImVec4 *pOut,ImU32 in);
+CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in);
+CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float* out_h,float* out_s,float* out_v);
+CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float* out_r,float* out_g,float* out_b);
+CIMGUI_API bool igIsKeyDown_Nil(ImGuiKey key);
+CIMGUI_API bool igIsKeyPressed_Bool(ImGuiKey key,bool repeat);
+CIMGUI_API bool igIsKeyReleased_Nil(ImGuiKey key);
+CIMGUI_API bool igIsKeyChordPressed_Nil(ImGuiKeyChord key_chord);
+CIMGUI_API int igGetKeyPressedAmount(ImGuiKey key,float repeat_delay,float rate);
+CIMGUI_API const char* igGetKeyName(ImGuiKey key);
+CIMGUI_API void igSetNextFrameWantCaptureKeyboard(bool want_capture_keyboard);
+CIMGUI_API bool igShortcut_Nil(ImGuiKeyChord key_chord,ImGuiInputFlags flags);
+CIMGUI_API void igSetNextItemShortcut(ImGuiKeyChord key_chord,ImGuiInputFlags flags);
+CIMGUI_API void igSetItemKeyOwner_Nil(ImGuiKey key);
+CIMGUI_API bool igIsMouseDown_Nil(ImGuiMouseButton button);
+CIMGUI_API bool igIsMouseClicked_Bool(ImGuiMouseButton button,bool repeat);
+CIMGUI_API bool igIsMouseReleased_Nil(ImGuiMouseButton button);
+CIMGUI_API bool igIsMouseDoubleClicked_Nil(ImGuiMouseButton button);
+CIMGUI_API int igGetMouseClickedCount(ImGuiMouseButton button);
+CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip);
+CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos);
+CIMGUI_API bool igIsAnyMouseDown(void);
+CIMGUI_API void igGetMousePos(ImVec2 *pOut);
+CIMGUI_API void igGetMousePosOnOpeningCurrentPopup(ImVec2 *pOut);
+CIMGUI_API bool igIsMouseDragging(ImGuiMouseButton button,float lock_threshold);
+CIMGUI_API void igGetMouseDragDelta(ImVec2 *pOut,ImGuiMouseButton button,float lock_threshold);
+CIMGUI_API void igResetMouseDragDelta(ImGuiMouseButton button);
+CIMGUI_API ImGuiMouseCursor igGetMouseCursor(void);
+CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor cursor_type);
+CIMGUI_API void igSetNextFrameWantCaptureMouse(bool want_capture_mouse);
+CIMGUI_API const char* igGetClipboardText(void);
+CIMGUI_API void igSetClipboardText(const char* text);
+CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename);
+CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size);
+CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename);
+CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size);
+CIMGUI_API void igDebugTextEncoding(const char* text);
+CIMGUI_API void igDebugFlashStyleColor(ImGuiCol idx);
+CIMGUI_API void igDebugStartItemPicker(void);
+CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert,size_t sz_drawidx);
+CIMGUI_API void igDebugLog(const char* fmt,...);
+CIMGUI_API void igDebugLogV(const char* fmt,va_list args);
+CIMGUI_API void igSetAllocatorFunctions(ImGuiMemAllocFunc alloc_func,ImGuiMemFreeFunc free_func,void* user_data);
+CIMGUI_API void igGetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func,ImGuiMemFreeFunc* p_free_func,void** p_user_data);
+CIMGUI_API void* igMemAlloc(size_t size);
+CIMGUI_API void igMemFree(void* ptr);
+CIMGUI_API void igUpdatePlatformWindows(void);
+CIMGUI_API void igRenderPlatformWindowsDefault(void* platform_render_arg,void* renderer_render_arg);
+CIMGUI_API void igDestroyPlatformWindows(void);
+CIMGUI_API ImGuiViewport* igFindViewportByID(ImGuiID id);
+CIMGUI_API ImGuiViewport* igFindViewportByPlatformHandle(void* platform_handle);
+CIMGUI_API ImGuiTableSortSpecs* ImGuiTableSortSpecs_ImGuiTableSortSpecs(void);
+CIMGUI_API void ImGuiTableSortSpecs_destroy(ImGuiTableSortSpecs* self);
+CIMGUI_API ImGuiTableColumnSortSpecs* ImGuiTableColumnSortSpecs_ImGuiTableColumnSortSpecs(void);
+CIMGUI_API void ImGuiTableColumnSortSpecs_destroy(ImGuiTableColumnSortSpecs* self);
+CIMGUI_API ImGuiStyle* ImGuiStyle_ImGuiStyle(void);
+CIMGUI_API void ImGuiStyle_destroy(ImGuiStyle* self);
+CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor);
+CIMGUI_API void ImGuiIO_AddKeyEvent(ImGuiIO* self,ImGuiKey key,bool down);
+CIMGUI_API void ImGuiIO_AddKeyAnalogEvent(ImGuiIO* self,ImGuiKey key,bool down,float v);
+CIMGUI_API void ImGuiIO_AddMousePosEvent(ImGuiIO* self,float x,float y);
+CIMGUI_API void ImGuiIO_AddMouseButtonEvent(ImGuiIO* self,int button,bool down);
+CIMGUI_API void ImGuiIO_AddMouseWheelEvent(ImGuiIO* self,float wheel_x,float wheel_y);
+CIMGUI_API void ImGuiIO_AddMouseSourceEvent(ImGuiIO* self,ImGuiMouseSource source);
+CIMGUI_API void ImGuiIO_AddMouseViewportEvent(ImGuiIO* self,ImGuiID id);
+CIMGUI_API void ImGuiIO_AddFocusEvent(ImGuiIO* self,bool focused);
+CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,unsigned int c);
+CIMGUI_API void ImGuiIO_AddInputCharacterUTF16(ImGuiIO* self,ImWchar16 c);
+CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* str);
+CIMGUI_API void ImGuiIO_SetKeyEventNativeData(ImGuiIO* self,ImGuiKey key,int native_keycode,int native_scancode,int native_legacy_index);
+CIMGUI_API void ImGuiIO_SetAppAcceptingEvents(ImGuiIO* self,bool accepting_events);
+CIMGUI_API void ImGuiIO_ClearEventsQueue(ImGuiIO* self);
+CIMGUI_API void ImGuiIO_ClearInputKeys(ImGuiIO* self);
+CIMGUI_API void ImGuiIO_ClearInputMouse(ImGuiIO* self);
+CIMGUI_API ImGuiIO* ImGuiIO_ImGuiIO(void);
+CIMGUI_API void ImGuiIO_destroy(ImGuiIO* self);
+CIMGUI_API ImGuiInputTextCallbackData* ImGuiInputTextCallbackData_ImGuiInputTextCallbackData(void);
+CIMGUI_API void ImGuiInputTextCallbackData_destroy(ImGuiInputTextCallbackData* self);
+CIMGUI_API void ImGuiInputTextCallbackData_DeleteChars(ImGuiInputTextCallbackData* self,int pos,int bytes_count);
+CIMGUI_API void ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text,const char* text_end);
+CIMGUI_API void ImGuiInputTextCallbackData_SelectAll(ImGuiInputTextCallbackData* self);
+CIMGUI_API void ImGuiInputTextCallbackData_ClearSelection(ImGuiInputTextCallbackData* self);
+CIMGUI_API bool ImGuiInputTextCallbackData_HasSelection(ImGuiInputTextCallbackData* self);
+CIMGUI_API ImGuiWindowClass* ImGuiWindowClass_ImGuiWindowClass(void);
+CIMGUI_API void ImGuiWindowClass_destroy(ImGuiWindowClass* self);
+CIMGUI_API ImGuiPayload* ImGuiPayload_ImGuiPayload(void);
+CIMGUI_API void ImGuiPayload_destroy(ImGuiPayload* self);
+CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self);
+CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type);
+CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self);
+CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self);
+CIMGUI_API ImGuiOnceUponAFrame* ImGuiOnceUponAFrame_ImGuiOnceUponAFrame(void);
+CIMGUI_API void ImGuiOnceUponAFrame_destroy(ImGuiOnceUponAFrame* self);
+CIMGUI_API ImGuiTextFilter* ImGuiTextFilter_ImGuiTextFilter(const char* default_filter);
+CIMGUI_API void ImGuiTextFilter_destroy(ImGuiTextFilter* self);
+CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width);
+CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end);
+CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self);
+CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self);
+CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self);
+CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Nil(void);
+CIMGUI_API void ImGuiTextRange_destroy(ImGuiTextRange* self);
+CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Str(const char* _b,const char* _e);
+CIMGUI_API bool ImGuiTextRange_empty(ImGuiTextRange* self);
+CIMGUI_API void ImGuiTextRange_split(ImGuiTextRange* self,char separator,ImVector_ImGuiTextRange* out);
+CIMGUI_API ImGuiTextBuffer* ImGuiTextBuffer_ImGuiTextBuffer(void);
+CIMGUI_API void ImGuiTextBuffer_destroy(ImGuiTextBuffer* self);
+CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self);
+CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self);
+CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self);
+CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self);
+CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self);
+CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity);
+CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self);
+CIMGUI_API void ImGuiTextBuffer_append(ImGuiTextBuffer* self,const char* str,const char* str_end);
+CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args);
+CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Int(ImGuiID _key,int _val);
+CIMGUI_API void ImGuiStoragePair_destroy(ImGuiStoragePair* self);
+CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Float(ImGuiID _key,float _val);
+CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Ptr(ImGuiID _key,void* _val);
+CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self);
+CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val);
+CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val);
+CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val);
+CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val);
+CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val);
+CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val);
+CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key);
+CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val);
+CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val);
+CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val);
+CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val);
+CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val);
+CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self);
+CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val);
+CIMGUI_API ImGuiListClipper* ImGuiListClipper_ImGuiListClipper(void);
+CIMGUI_API void ImGuiListClipper_destroy(ImGuiListClipper* self);
+CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height);
+CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self);
+CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self);
+CIMGUI_API void ImGuiListClipper_IncludeItemByIndex(ImGuiListClipper* self,int item_index);
+CIMGUI_API void ImGuiListClipper_IncludeItemsByIndex(ImGuiListClipper* self,int item_begin,int item_end);
+CIMGUI_API void ImGuiListClipper_SeekCursorForItem(ImGuiListClipper* self,int item_index);
+CIMGUI_API ImColor* ImColor_ImColor_Nil(void);
+CIMGUI_API void ImColor_destroy(ImColor* self);
+CIMGUI_API ImColor* ImColor_ImColor_Float(float r,float g,float b,float a);
+CIMGUI_API ImColor* ImColor_ImColor_Vec4(const ImVec4 col);
+CIMGUI_API ImColor* ImColor_ImColor_Int(int r,int g,int b,int a);
+CIMGUI_API ImColor* ImColor_ImColor_U32(ImU32 rgba);
+CIMGUI_API void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a);
+CIMGUI_API void ImColor_HSV(ImColor *pOut,float h,float s,float v,float a);
+CIMGUI_API ImGuiSelectionBasicStorage* ImGuiSelectionBasicStorage_ImGuiSelectionBasicStorage(void);
+CIMGUI_API void ImGuiSelectionBasicStorage_destroy(ImGuiSelectionBasicStorage* self);
+CIMGUI_API void ImGuiSelectionBasicStorage_ApplyRequests(ImGuiSelectionBasicStorage* self,ImGuiMultiSelectIO* ms_io);
+CIMGUI_API bool ImGuiSelectionBasicStorage_Contains(ImGuiSelectionBasicStorage* self,ImGuiID id);
+CIMGUI_API void ImGuiSelectionBasicStorage_Clear(ImGuiSelectionBasicStorage* self);
+CIMGUI_API void ImGuiSelectionBasicStorage_Swap(ImGuiSelectionBasicStorage* self,ImGuiSelectionBasicStorage* r);
+CIMGUI_API void ImGuiSelectionBasicStorage_SetItemSelected(ImGuiSelectionBasicStorage* self,ImGuiID id,bool selected);
+CIMGUI_API bool ImGuiSelectionBasicStorage_GetNextSelectedItem(ImGuiSelectionBasicStorage* self,void** opaque_it,ImGuiID* out_id);
+CIMGUI_API ImGuiID ImGuiSelectionBasicStorage_GetStorageIdFromIndex(ImGuiSelectionBasicStorage* self,int idx);
+CIMGUI_API ImGuiSelectionExternalStorage* ImGuiSelectionExternalStorage_ImGuiSelectionExternalStorage(void);
+CIMGUI_API void ImGuiSelectionExternalStorage_destroy(ImGuiSelectionExternalStorage* self);
+CIMGUI_API void ImGuiSelectionExternalStorage_ApplyRequests(ImGuiSelectionExternalStorage* self,ImGuiMultiSelectIO* ms_io);
+CIMGUI_API ImDrawCmd* ImDrawCmd_ImDrawCmd(void);
+CIMGUI_API void ImDrawCmd_destroy(ImDrawCmd* self);
+CIMGUI_API ImTextureID ImDrawCmd_GetTexID(ImDrawCmd* self);
+CIMGUI_API ImDrawListSplitter* ImDrawListSplitter_ImDrawListSplitter(void);
+CIMGUI_API void ImDrawListSplitter_destroy(ImDrawListSplitter* self);
+CIMGUI_API void ImDrawListSplitter_Clear(ImDrawListSplitter* self);
+CIMGUI_API void ImDrawListSplitter_ClearFreeMemory(ImDrawListSplitter* self);
+CIMGUI_API void ImDrawListSplitter_Split(ImDrawListSplitter* self,ImDrawList* draw_list,int count);
+CIMGUI_API void ImDrawListSplitter_Merge(ImDrawListSplitter* self,ImDrawList* draw_list);
+CIMGUI_API void ImDrawListSplitter_SetCurrentChannel(ImDrawListSplitter* self,ImDrawList* draw_list,int channel_idx);
+CIMGUI_API ImDrawList* ImDrawList_ImDrawList(ImDrawListSharedData* shared_data);
+CIMGUI_API void ImDrawList_destroy(ImDrawList* self);
+CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect);
+CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self);
+CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self);
+CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id);
+CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self);
+CIMGUI_API void ImDrawList_GetClipRectMin(ImVec2 *pOut,ImDrawList* self);
+CIMGUI_API void ImDrawList_GetClipRectMax(ImVec2 *pOut,ImDrawList* self);
+CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,ImU32 col,float thickness);
+CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col,float rounding,ImDrawFlags flags,float thickness);
+CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col,float rounding,ImDrawFlags flags);
+CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left);
+CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness);
+CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col);
+CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col,float thickness);
+CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col);
+CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness);
+CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments);
+CIMGUI_API void ImDrawList_AddNgon(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness);
+CIMGUI_API void ImDrawList_AddNgonFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments);
+CIMGUI_API void ImDrawList_AddEllipse(ImDrawList* self,const ImVec2 center,const ImVec2 radius,ImU32 col,float rot,int num_segments,float thickness);
+CIMGUI_API void ImDrawList_AddEllipseFilled(ImDrawList* self,const ImVec2 center,const ImVec2 radius,ImU32 col,float rot,int num_segments);
+CIMGUI_API void ImDrawList_AddText_Vec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end);
+CIMGUI_API void ImDrawList_AddText_FontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect);
+CIMGUI_API void ImDrawList_AddBezierCubic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness,int num_segments);
+CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col,float thickness,int num_segments);
+CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness);
+CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col);
+CIMGUI_API void ImDrawList_AddConcavePolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col);
+CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p_min,const ImVec2 p_max,const ImVec2 uv_min,const ImVec2 uv_max,ImU32 col);
+CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 uv1,const ImVec2 uv2,const ImVec2 uv3,const ImVec2 uv4,ImU32 col);
+CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p_min,const ImVec2 p_max,const ImVec2 uv_min,const ImVec2 uv_max,ImU32 col,float rounding,ImDrawFlags flags);
+CIMGUI_API void ImDrawList_PathClear(ImDrawList* self);
+CIMGUI_API void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos);
+CIMGUI_API void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos);
+CIMGUI_API void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col);
+CIMGUI_API void ImDrawList_PathFillConcave(ImDrawList* self,ImU32 col);
+CIMGUI_API void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,ImDrawFlags flags,float thickness);
+CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 center,float radius,float a_min,float a_max,int num_segments);
+CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 center,float radius,int a_min_of_12,int a_max_of_12);
+CIMGUI_API void ImDrawList_PathEllipticalArcTo(ImDrawList* self,const ImVec2 center,const ImVec2 radius,float rot,float a_min,float a_max,int num_segments);
+CIMGUI_API void ImDrawList_PathBezierCubicCurveTo(ImDrawList* self,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,int num_segments);
+CIMGUI_API void ImDrawList_PathBezierQuadraticCurveTo(ImDrawList* self,const ImVec2 p2,const ImVec2 p3,int num_segments);
+CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,ImDrawFlags flags);
+CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data);
+CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self);
+CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self);
+CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int count);
+CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self);
+CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int n);
+CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count);
+CIMGUI_API void ImDrawList_PrimUnreserve(ImDrawList* self,int idx_count,int vtx_count);
+CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col);
+CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col);
+CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,const ImVec2 uv_a,const ImVec2 uv_b,const ImVec2 uv_c,const ImVec2 uv_d,ImU32 col);
+CIMGUI_API void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col);
+CIMGUI_API void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx);
+CIMGUI_API void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col);
+CIMGUI_API void ImDrawList__ResetForNewFrame(ImDrawList* self);
+CIMGUI_API void ImDrawList__ClearFreeMemory(ImDrawList* self);
+CIMGUI_API void ImDrawList__PopUnusedDrawCmd(ImDrawList* self);
+CIMGUI_API void ImDrawList__TryMergeDrawCmds(ImDrawList* self);
+CIMGUI_API void ImDrawList__OnChangedClipRect(ImDrawList* self);
+CIMGUI_API void ImDrawList__OnChangedTextureID(ImDrawList* self);
+CIMGUI_API void ImDrawList__OnChangedVtxOffset(ImDrawList* self);
+CIMGUI_API void ImDrawList__SetTextureID(ImDrawList* self,ImTextureID texture_id);
+CIMGUI_API int ImDrawList__CalcCircleAutoSegmentCount(ImDrawList* self,float radius);
+CIMGUI_API void ImDrawList__PathArcToFastEx(ImDrawList* self,const ImVec2 center,float radius,int a_min_sample,int a_max_sample,int a_step);
+CIMGUI_API void ImDrawList__PathArcToN(ImDrawList* self,const ImVec2 center,float radius,float a_min,float a_max,int num_segments);
+CIMGUI_API ImDrawData* ImDrawData_ImDrawData(void);
+CIMGUI_API void ImDrawData_destroy(ImDrawData* self);
+CIMGUI_API void ImDrawData_Clear(ImDrawData* self);
+CIMGUI_API void ImDrawData_AddDrawList(ImDrawData* self,ImDrawList* draw_list);
+CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self);
+CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 fb_scale);
+CIMGUI_API ImFontConfig* ImFontConfig_ImFontConfig(void);
+CIMGUI_API void ImFontConfig_destroy(ImFontConfig* self);
+CIMGUI_API ImFontGlyphRangesBuilder* ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder(void);
+CIMGUI_API void ImFontGlyphRangesBuilder_destroy(ImFontGlyphRangesBuilder* self);
+CIMGUI_API void ImFontGlyphRangesBuilder_Clear(ImFontGlyphRangesBuilder* self);
+CIMGUI_API bool ImFontGlyphRangesBuilder_GetBit(ImFontGlyphRangesBuilder* self,size_t n);
+CIMGUI_API void ImFontGlyphRangesBuilder_SetBit(ImFontGlyphRangesBuilder* self,size_t n);
+CIMGUI_API void ImFontGlyphRangesBuilder_AddChar(ImFontGlyphRangesBuilder* self,ImWchar c);
+CIMGUI_API void ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text,const char* text_end);
+CIMGUI_API void ImFontGlyphRangesBuilder_AddRanges(ImFontGlyphRangesBuilder* self,const ImWchar* ranges);
+CIMGUI_API void ImFontGlyphRangesBuilder_BuildRanges(ImFontGlyphRangesBuilder* self,ImVector_ImWchar* out_ranges);
+CIMGUI_API ImFontAtlasCustomRect* ImFontAtlasCustomRect_ImFontAtlasCustomRect(void);
+CIMGUI_API void ImFontAtlasCustomRect_destroy(ImFontAtlasCustomRect* self);
+CIMGUI_API bool ImFontAtlasCustomRect_IsPacked(ImFontAtlasCustomRect* self);
+CIMGUI_API ImFontAtlas* ImFontAtlas_ImFontAtlas(void);
+CIMGUI_API void ImFontAtlas_destroy(ImFontAtlas* self);
+CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg);
+CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg);
+CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges);
+CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_data_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges);
+CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_data_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges);
+CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges);
+CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self);
+CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self);
+CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self);
+CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self);
+CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self);
+CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel);
+CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel);
+CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self);
+CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesGreek(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self);
+CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesVietnamese(ImFontAtlas* self);
+CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,int width,int height);
+CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset);
+CIMGUI_API ImFontAtlasCustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index);
+CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const ImFontAtlasCustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max);
+CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]);
+CIMGUI_API ImFont* ImFont_ImFont(void);
+CIMGUI_API void ImFont_destroy(ImFont* self);
+CIMGUI_API const ImFontGlyph* ImFont_FindGlyph(ImFont* self,ImWchar c);
+CIMGUI_API const ImFontGlyph* ImFont_FindGlyphNoFallback(ImFont* self,ImWchar c);
+CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c);
+CIMGUI_API bool ImFont_IsLoaded(ImFont* self);
+CIMGUI_API const char* ImFont_GetDebugName(ImFont* self);
+CIMGUI_API void ImFont_CalcTextSizeA(ImVec2 *pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining);
+CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width);
+CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,ImWchar c);
+CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip);
+CIMGUI_API void ImFont_BuildLookupTable(ImFont* self);
+CIMGUI_API void ImFont_ClearOutputData(ImFont* self);
+CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size);
+CIMGUI_API void ImFont_AddGlyph(ImFont* self,const ImFontConfig* src_cfg,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x);
+CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst);
+CIMGUI_API void ImFont_SetGlyphVisible(ImFont* self,ImWchar c,bool visible);
+CIMGUI_API bool ImFont_IsGlyphRangeUnused(ImFont* self,unsigned int c_begin,unsigned int c_last);
+CIMGUI_API ImGuiViewport* ImGuiViewport_ImGuiViewport(void);
+CIMGUI_API void ImGuiViewport_destroy(ImGuiViewport* self);
+CIMGUI_API void ImGuiViewport_GetCenter(ImVec2 *pOut,ImGuiViewport* self);
+CIMGUI_API void ImGuiViewport_GetWorkCenter(ImVec2 *pOut,ImGuiViewport* self);
+CIMGUI_API ImGuiPlatformIO* ImGuiPlatformIO_ImGuiPlatformIO(void);
+CIMGUI_API void ImGuiPlatformIO_destroy(ImGuiPlatformIO* self);
+CIMGUI_API ImGuiPlatformMonitor* ImGuiPlatformMonitor_ImGuiPlatformMonitor(void);
+CIMGUI_API void ImGuiPlatformMonitor_destroy(ImGuiPlatformMonitor* self);
+CIMGUI_API ImGuiPlatformImeData* ImGuiPlatformImeData_ImGuiPlatformImeData(void);
+CIMGUI_API void ImGuiPlatformImeData_destroy(ImGuiPlatformImeData* self);
+CIMGUI_API ImGuiID igImHashData(const void* data,size_t data_size,ImGuiID seed);
+CIMGUI_API ImGuiID igImHashStr(const char* data,size_t data_size,ImGuiID seed);
+CIMGUI_API void igImQsort(void* base,size_t count,size_t size_of_element,int(*compare_func)(void const*,void const*));
+CIMGUI_API ImU32 igImAlphaBlendColors(ImU32 col_a,ImU32 col_b);
+CIMGUI_API bool igImIsPowerOfTwo_Int(int v);
+CIMGUI_API bool igImIsPowerOfTwo_U64(ImU64 v);
+CIMGUI_API int igImUpperPowerOfTwo(int v);
+CIMGUI_API int igImStricmp(const char* str1,const char* str2);
+CIMGUI_API int igImStrnicmp(const char* str1,const char* str2,size_t count);
+CIMGUI_API void igImStrncpy(char* dst,const char* src,size_t count);
+CIMGUI_API char* igImStrdup(const char* str);
+CIMGUI_API char* igImStrdupcpy(char* dst,size_t* p_dst_size,const char* str);
+CIMGUI_API const char* igImStrchrRange(const char* str_begin,const char* str_end,char c);
+CIMGUI_API const char* igImStreolRange(const char* str,const char* str_end);
+CIMGUI_API const char* igImStristr(const char* haystack,const char* haystack_end,const char* needle,const char* needle_end);
+CIMGUI_API void igImStrTrimBlanks(char* str);
+CIMGUI_API const char* igImStrSkipBlank(const char* str);
+CIMGUI_API int igImStrlenW(const ImWchar* str);
+CIMGUI_API const ImWchar* igImStrbolW(const ImWchar* buf_mid_line,const ImWchar* buf_begin);
+CIMGUI_API char igImToUpper(char c);
+CIMGUI_API bool igImCharIsBlankA(char c);
+CIMGUI_API bool igImCharIsBlankW(unsigned int c);
+CIMGUI_API bool igImCharIsXdigitA(char c);
+CIMGUI_API int igImFormatString(char* buf,size_t buf_size,const char* fmt,...);
+CIMGUI_API int igImFormatStringV(char* buf,size_t buf_size,const char* fmt,va_list args);
+CIMGUI_API void igImFormatStringToTempBuffer(const char** out_buf,const char** out_buf_end,const char* fmt,...);
+CIMGUI_API void igImFormatStringToTempBufferV(const char** out_buf,const char** out_buf_end,const char* fmt,va_list args);
+CIMGUI_API const char* igImParseFormatFindStart(const char* format);
+CIMGUI_API const char* igImParseFormatFindEnd(const char* format);
+CIMGUI_API const char* igImParseFormatTrimDecorations(const char* format,char* buf,size_t buf_size);
+CIMGUI_API void igImParseFormatSanitizeForPrinting(const char* fmt_in,char* fmt_out,size_t fmt_out_size);
+CIMGUI_API const char* igImParseFormatSanitizeForScanning(const char* fmt_in,char* fmt_out,size_t fmt_out_size);
+CIMGUI_API int igImParseFormatPrecision(const char* format,int default_value);
+CIMGUI_API const char* igImTextCharToUtf8(char out_buf[5],unsigned int c);
+CIMGUI_API int igImTextStrToUtf8(char* out_buf,int out_buf_size,const ImWchar* in_text,const ImWchar* in_text_end);
+CIMGUI_API int igImTextCharFromUtf8(unsigned int* out_char,const char* in_text,const char* in_text_end);
+CIMGUI_API int igImTextStrFromUtf8(ImWchar* out_buf,int out_buf_size,const char* in_text,const char* in_text_end,const char** in_remaining);
+CIMGUI_API int igImTextCountCharsFromUtf8(const char* in_text,const char* in_text_end);
+CIMGUI_API int igImTextCountUtf8BytesFromChar(const char* in_text,const char* in_text_end);
+CIMGUI_API int igImTextCountUtf8BytesFromStr(const ImWchar* in_text,const ImWchar* in_text_end);
+CIMGUI_API const char* igImTextFindPreviousUtf8Codepoint(const char* in_text_start,const char* in_text_curr);
+CIMGUI_API int igImTextCountLines(const char* in_text,const char* in_text_end);
+CIMGUI_API ImFileHandle igImFileOpen(const char* filename,const char* mode);
+CIMGUI_API bool igImFileClose(ImFileHandle file);
+CIMGUI_API ImU64 igImFileGetSize(ImFileHandle file);
+CIMGUI_API ImU64 igImFileRead(void* data,ImU64 size,ImU64 count,ImFileHandle file);
+CIMGUI_API ImU64 igImFileWrite(const void* data,ImU64 size,ImU64 count,ImFileHandle file);
+CIMGUI_API void* igImFileLoadToMemory(const char* filename,const char* mode,size_t* out_file_size,int padding_bytes);
+CIMGUI_API float igImPow_Float(float x,float y);
+CIMGUI_API double igImPow_double(double x,double y);
+CIMGUI_API float igImLog_Float(float x);
+CIMGUI_API double igImLog_double(double x);
+CIMGUI_API int igImAbs_Int(int x);
+CIMGUI_API float igImAbs_Float(float x);
+CIMGUI_API double igImAbs_double(double x);
+CIMGUI_API float igImSign_Float(float x);
+CIMGUI_API double igImSign_double(double x);
+CIMGUI_API float igImRsqrt_Float(float x);
+CIMGUI_API double igImRsqrt_double(double x);
+CIMGUI_API void igImMin(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs);
+CIMGUI_API void igImMax(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs);
+CIMGUI_API void igImClamp(ImVec2 *pOut,const ImVec2 v,const ImVec2 mn,const ImVec2 mx);
+CIMGUI_API void igImLerp_Vec2Float(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,float t);
+CIMGUI_API void igImLerp_Vec2Vec2(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 t);
+CIMGUI_API void igImLerp_Vec4(ImVec4 *pOut,const ImVec4 a,const ImVec4 b,float t);
+CIMGUI_API float igImSaturate(float f);
+CIMGUI_API float igImLengthSqr_Vec2(const ImVec2 lhs);
+CIMGUI_API float igImLengthSqr_Vec4(const ImVec4 lhs);
+CIMGUI_API float igImInvLength(const ImVec2 lhs,float fail_value);
+CIMGUI_API float igImTrunc_Float(float f);
+CIMGUI_API void igImTrunc_Vec2(ImVec2 *pOut,const ImVec2 v);
+CIMGUI_API float igImFloor_Float(float f);
+CIMGUI_API void igImFloor_Vec2(ImVec2 *pOut,const ImVec2 v);
+CIMGUI_API int igImModPositive(int a,int b);
+CIMGUI_API float igImDot(const ImVec2 a,const ImVec2 b);
+CIMGUI_API void igImRotate(ImVec2 *pOut,const ImVec2 v,float cos_a,float sin_a);
+CIMGUI_API float igImLinearSweep(float current,float target,float speed);
+CIMGUI_API float igImLinearRemapClamp(float s0,float s1,float d0,float d1,float x);
+CIMGUI_API void igImMul(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs);
+CIMGUI_API bool igImIsFloatAboveGuaranteedIntegerPrecision(float f);
+CIMGUI_API float igImExponentialMovingAverage(float avg,float sample,int n);
+CIMGUI_API void igImBezierCubicCalc(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,float t);
+CIMGUI_API void igImBezierCubicClosestPoint(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 p,int num_segments);
+CIMGUI_API void igImBezierCubicClosestPointCasteljau(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 p,float tess_tol);
+CIMGUI_API void igImBezierQuadraticCalc(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,float t);
+CIMGUI_API void igImLineClosestPoint(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 p);
+CIMGUI_API bool igImTriangleContainsPoint(const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p);
+CIMGUI_API void igImTriangleClosestPoint(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p);
+CIMGUI_API void igImTriangleBarycentricCoords(const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p,float* out_u,float* out_v,float* out_w);
+CIMGUI_API float igImTriangleArea(const ImVec2 a,const ImVec2 b,const ImVec2 c);
+CIMGUI_API bool igImTriangleIsClockwise(const ImVec2 a,const ImVec2 b,const ImVec2 c);
+CIMGUI_API ImVec1* ImVec1_ImVec1_Nil(void);
+CIMGUI_API void ImVec1_destroy(ImVec1* self);
+CIMGUI_API ImVec1* ImVec1_ImVec1_Float(float _x);
+CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_Nil(void);
+CIMGUI_API void ImVec2ih_destroy(ImVec2ih* self);
+CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_short(short _x,short _y);
+CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_Vec2(const ImVec2 rhs);
+CIMGUI_API ImRect* ImRect_ImRect_Nil(void);
+CIMGUI_API void ImRect_destroy(ImRect* self);
+CIMGUI_API ImRect* ImRect_ImRect_Vec2(const ImVec2 min,const ImVec2 max);
+CIMGUI_API ImRect* ImRect_ImRect_Vec4(const ImVec4 v);
+CIMGUI_API ImRect* ImRect_ImRect_Float(float x1,float y1,float x2,float y2);
+CIMGUI_API void ImRect_GetCenter(ImVec2 *pOut,ImRect* self);
+CIMGUI_API void ImRect_GetSize(ImVec2 *pOut,ImRect* self);
+CIMGUI_API float ImRect_GetWidth(ImRect* self);
+CIMGUI_API float ImRect_GetHeight(ImRect* self);
+CIMGUI_API float ImRect_GetArea(ImRect* self);
+CIMGUI_API void ImRect_GetTL(ImVec2 *pOut,ImRect* self);
+CIMGUI_API void ImRect_GetTR(ImVec2 *pOut,ImRect* self);
+CIMGUI_API void ImRect_GetBL(ImVec2 *pOut,ImRect* self);
+CIMGUI_API void ImRect_GetBR(ImVec2 *pOut,ImRect* self);
+CIMGUI_API bool ImRect_Contains_Vec2(ImRect* self,const ImVec2 p);
+CIMGUI_API bool ImRect_Contains_Rect(ImRect* self,const ImRect r);
+CIMGUI_API bool ImRect_ContainsWithPad(ImRect* self,const ImVec2 p,const ImVec2 pad);
+CIMGUI_API bool ImRect_Overlaps(ImRect* self,const ImRect r);
+CIMGUI_API void ImRect_Add_Vec2(ImRect* self,const ImVec2 p);
+CIMGUI_API void ImRect_Add_Rect(ImRect* self,const ImRect r);
+CIMGUI_API void ImRect_Expand_Float(ImRect* self,const float amount);
+CIMGUI_API void ImRect_Expand_Vec2(ImRect* self,const ImVec2 amount);
+CIMGUI_API void ImRect_Translate(ImRect* self,const ImVec2 d);
+CIMGUI_API void ImRect_TranslateX(ImRect* self,float dx);
+CIMGUI_API void ImRect_TranslateY(ImRect* self,float dy);
+CIMGUI_API void ImRect_ClipWith(ImRect* self,const ImRect r);
+CIMGUI_API void ImRect_ClipWithFull(ImRect* self,const ImRect r);
+CIMGUI_API void ImRect_Floor(ImRect* self);
+CIMGUI_API bool ImRect_IsInverted(ImRect* self);
+CIMGUI_API void ImRect_ToVec4(ImVec4 *pOut,ImRect* self);
+CIMGUI_API size_t igImBitArrayGetStorageSizeInBytes(int bitcount);
+CIMGUI_API void igImBitArrayClearAllBits(ImU32* arr,int bitcount);
+CIMGUI_API bool igImBitArrayTestBit(const ImU32* arr,int n);
+CIMGUI_API void igImBitArrayClearBit(ImU32* arr,int n);
+CIMGUI_API void igImBitArraySetBit(ImU32* arr,int n);
+CIMGUI_API void igImBitArraySetBitRange(ImU32* arr,int n,int n2);
+CIMGUI_API void ImBitVector_Create(ImBitVector* self,int sz);
+CIMGUI_API void ImBitVector_Clear(ImBitVector* self);
+CIMGUI_API bool ImBitVector_TestBit(ImBitVector* self,int n);
+CIMGUI_API void ImBitVector_SetBit(ImBitVector* self,int n);
+CIMGUI_API void ImBitVector_ClearBit(ImBitVector* self,int n);
+CIMGUI_API void ImGuiTextIndex_clear(ImGuiTextIndex* self);
+CIMGUI_API int ImGuiTextIndex_size(ImGuiTextIndex* self);
+CIMGUI_API const char* ImGuiTextIndex_get_line_begin(ImGuiTextIndex* self,const char* base,int n);
+CIMGUI_API const char* ImGuiTextIndex_get_line_end(ImGuiTextIndex* self,const char* base,int n);
+CIMGUI_API void ImGuiTextIndex_append(ImGuiTextIndex* self,const char* base,int old_size,int new_size);
+CIMGUI_API ImGuiStoragePair* igImLowerBound(ImGuiStoragePair* in_begin,ImGuiStoragePair* in_end,ImGuiID key);
+CIMGUI_API ImDrawListSharedData* ImDrawListSharedData_ImDrawListSharedData(void);
+CIMGUI_API void ImDrawListSharedData_destroy(ImDrawListSharedData* self);
+CIMGUI_API void ImDrawListSharedData_SetCircleTessellationMaxError(ImDrawListSharedData* self,float max_error);
+CIMGUI_API ImDrawDataBuilder* ImDrawDataBuilder_ImDrawDataBuilder(void);
+CIMGUI_API void ImDrawDataBuilder_destroy(ImDrawDataBuilder* self);
+CIMGUI_API void* ImGuiDataVarInfo_GetVarPtr(ImGuiDataVarInfo* self,void* parent);
+CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Int(ImGuiStyleVar idx,int v);
+CIMGUI_API void ImGuiStyleMod_destroy(ImGuiStyleMod* self);
+CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Float(ImGuiStyleVar idx,float v);
+CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Vec2(ImGuiStyleVar idx,ImVec2 v);
+CIMGUI_API ImGuiComboPreviewData* ImGuiComboPreviewData_ImGuiComboPreviewData(void);
+CIMGUI_API void ImGuiComboPreviewData_destroy(ImGuiComboPreviewData* self);
+CIMGUI_API ImGuiMenuColumns* ImGuiMenuColumns_ImGuiMenuColumns(void);
+CIMGUI_API void ImGuiMenuColumns_destroy(ImGuiMenuColumns* self);
+CIMGUI_API void ImGuiMenuColumns_Update(ImGuiMenuColumns* self,float spacing,bool window_reappearing);
+CIMGUI_API float ImGuiMenuColumns_DeclColumns(ImGuiMenuColumns* self,float w_icon,float w_label,float w_shortcut,float w_mark);
+CIMGUI_API void ImGuiMenuColumns_CalcNextTotalWidth(ImGuiMenuColumns* self,bool update_offsets);
+CIMGUI_API ImGuiInputTextDeactivatedState* ImGuiInputTextDeactivatedState_ImGuiInputTextDeactivatedState(void);
+CIMGUI_API void ImGuiInputTextDeactivatedState_destroy(ImGuiInputTextDeactivatedState* self);
+CIMGUI_API void ImGuiInputTextDeactivatedState_ClearFreeMemory(ImGuiInputTextDeactivatedState* self);
+CIMGUI_API ImGuiInputTextState* ImGuiInputTextState_ImGuiInputTextState(void);
+CIMGUI_API void ImGuiInputTextState_destroy(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_ClearText(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_ClearFreeMemory(ImGuiInputTextState* self);
+CIMGUI_API int ImGuiInputTextState_GetUndoAvailCount(ImGuiInputTextState* self);
+CIMGUI_API int ImGuiInputTextState_GetRedoAvailCount(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_OnKeyPressed(ImGuiInputTextState* self,int key);
+CIMGUI_API void ImGuiInputTextState_CursorAnimReset(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_CursorClamp(ImGuiInputTextState* self);
+CIMGUI_API bool ImGuiInputTextState_HasSelection(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_ClearSelection(ImGuiInputTextState* self);
+CIMGUI_API int ImGuiInputTextState_GetCursorPos(ImGuiInputTextState* self);
+CIMGUI_API int ImGuiInputTextState_GetSelectionStart(ImGuiInputTextState* self);
+CIMGUI_API int ImGuiInputTextState_GetSelectionEnd(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_SelectAll(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_ReloadUserBufAndSelectAll(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_ReloadUserBufAndKeepSelection(ImGuiInputTextState* self);
+CIMGUI_API void ImGuiInputTextState_ReloadUserBufAndMoveToEnd(ImGuiInputTextState* self);
+CIMGUI_API ImGuiNextWindowData* ImGuiNextWindowData_ImGuiNextWindowData(void);
+CIMGUI_API void ImGuiNextWindowData_destroy(ImGuiNextWindowData* self);
+CIMGUI_API void ImGuiNextWindowData_ClearFlags(ImGuiNextWindowData* self);
+CIMGUI_API ImGuiNextItemData* ImGuiNextItemData_ImGuiNextItemData(void);
+CIMGUI_API void ImGuiNextItemData_destroy(ImGuiNextItemData* self);
+CIMGUI_API void ImGuiNextItemData_ClearFlags(ImGuiNextItemData* self);
+CIMGUI_API ImGuiLastItemData* ImGuiLastItemData_ImGuiLastItemData(void);
+CIMGUI_API void ImGuiLastItemData_destroy(ImGuiLastItemData* self);
+CIMGUI_API ImGuiStackSizes* ImGuiStackSizes_ImGuiStackSizes(void);
+CIMGUI_API void ImGuiStackSizes_destroy(ImGuiStackSizes* self);
+CIMGUI_API void ImGuiStackSizes_SetToContextState(ImGuiStackSizes* self,ImGuiContext* ctx);
+CIMGUI_API void ImGuiStackSizes_CompareWithContextState(ImGuiStackSizes* self,ImGuiContext* ctx);
+CIMGUI_API ImGuiPtrOrIndex* ImGuiPtrOrIndex_ImGuiPtrOrIndex_Ptr(void* ptr);
+CIMGUI_API void ImGuiPtrOrIndex_destroy(ImGuiPtrOrIndex* self);
+CIMGUI_API ImGuiPtrOrIndex* ImGuiPtrOrIndex_ImGuiPtrOrIndex_Int(int index);
+CIMGUI_API ImGuiPopupData* ImGuiPopupData_ImGuiPopupData(void);
+CIMGUI_API void ImGuiPopupData_destroy(ImGuiPopupData* self);
+CIMGUI_API ImGuiInputEvent* ImGuiInputEvent_ImGuiInputEvent(void);
+CIMGUI_API void ImGuiInputEvent_destroy(ImGuiInputEvent* self);
+CIMGUI_API ImGuiKeyRoutingData* ImGuiKeyRoutingData_ImGuiKeyRoutingData(void);
+CIMGUI_API void ImGuiKeyRoutingData_destroy(ImGuiKeyRoutingData* self);
+CIMGUI_API ImGuiKeyRoutingTable* ImGuiKeyRoutingTable_ImGuiKeyRoutingTable(void);
+CIMGUI_API void ImGuiKeyRoutingTable_destroy(ImGuiKeyRoutingTable* self);
+CIMGUI_API void ImGuiKeyRoutingTable_Clear(ImGuiKeyRoutingTable* self);
+CIMGUI_API ImGuiKeyOwnerData* ImGuiKeyOwnerData_ImGuiKeyOwnerData(void);
+CIMGUI_API void ImGuiKeyOwnerData_destroy(ImGuiKeyOwnerData* self);
+CIMGUI_API ImGuiListClipperRange ImGuiListClipperRange_FromIndices(int min,int max);
+CIMGUI_API ImGuiListClipperRange ImGuiListClipperRange_FromPositions(float y1,float y2,int off_min,int off_max);
+CIMGUI_API ImGuiListClipperData* ImGuiListClipperData_ImGuiListClipperData(void);
+CIMGUI_API void ImGuiListClipperData_destroy(ImGuiListClipperData* self);
+CIMGUI_API void ImGuiListClipperData_Reset(ImGuiListClipperData* self,ImGuiListClipper* clipper);
+CIMGUI_API ImGuiNavItemData* ImGuiNavItemData_ImGuiNavItemData(void);
+CIMGUI_API void ImGuiNavItemData_destroy(ImGuiNavItemData* self);
+CIMGUI_API void ImGuiNavItemData_Clear(ImGuiNavItemData* self);
+CIMGUI_API ImGuiTypingSelectState* ImGuiTypingSelectState_ImGuiTypingSelectState(void);
+CIMGUI_API void ImGuiTypingSelectState_destroy(ImGuiTypingSelectState* self);
+CIMGUI_API void ImGuiTypingSelectState_Clear(ImGuiTypingSelectState* self);
+CIMGUI_API ImGuiOldColumnData* ImGuiOldColumnData_ImGuiOldColumnData(void);
+CIMGUI_API void ImGuiOldColumnData_destroy(ImGuiOldColumnData* self);
+CIMGUI_API ImGuiOldColumns* ImGuiOldColumns_ImGuiOldColumns(void);
+CIMGUI_API void ImGuiOldColumns_destroy(ImGuiOldColumns* self);
+CIMGUI_API ImGuiBoxSelectState* ImGuiBoxSelectState_ImGuiBoxSelectState(void);
+CIMGUI_API void ImGuiBoxSelectState_destroy(ImGuiBoxSelectState* self);
+CIMGUI_API ImGuiMultiSelectTempData* ImGuiMultiSelectTempData_ImGuiMultiSelectTempData(void);
+CIMGUI_API void ImGuiMultiSelectTempData_destroy(ImGuiMultiSelectTempData* self);
+CIMGUI_API void ImGuiMultiSelectTempData_Clear(ImGuiMultiSelectTempData* self);
+CIMGUI_API void ImGuiMultiSelectTempData_ClearIO(ImGuiMultiSelectTempData* self);
+CIMGUI_API ImGuiMultiSelectState* ImGuiMultiSelectState_ImGuiMultiSelectState(void);
+CIMGUI_API void ImGuiMultiSelectState_destroy(ImGuiMultiSelectState* self);
+CIMGUI_API ImGuiDockNode* ImGuiDockNode_ImGuiDockNode(ImGuiID id);
+CIMGUI_API void ImGuiDockNode_destroy(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsRootNode(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsDockSpace(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsFloatingNode(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsCentralNode(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsHiddenTabBar(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsNoTabBar(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsSplitNode(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsLeafNode(ImGuiDockNode* self);
+CIMGUI_API bool ImGuiDockNode_IsEmpty(ImGuiDockNode* self);
+CIMGUI_API void ImGuiDockNode_Rect(ImRect *pOut,ImGuiDockNode* self);
+CIMGUI_API void ImGuiDockNode_SetLocalFlags(ImGuiDockNode* self,ImGuiDockNodeFlags flags);
+CIMGUI_API void ImGuiDockNode_UpdateMergedFlags(ImGuiDockNode* self);
+CIMGUI_API ImGuiDockContext* ImGuiDockContext_ImGuiDockContext(void);
+CIMGUI_API void ImGuiDockContext_destroy(ImGuiDockContext* self);
+CIMGUI_API ImGuiViewportP* ImGuiViewportP_ImGuiViewportP(void);
+CIMGUI_API void ImGuiViewportP_destroy(ImGuiViewportP* self);
+CIMGUI_API void ImGuiViewportP_ClearRequestFlags(ImGuiViewportP* self);
+CIMGUI_API void ImGuiViewportP_CalcWorkRectPos(ImVec2 *pOut,ImGuiViewportP* self,const ImVec2 inset_min);
+CIMGUI_API void ImGuiViewportP_CalcWorkRectSize(ImVec2 *pOut,ImGuiViewportP* self,const ImVec2 inset_min,const ImVec2 inset_max);
+CIMGUI_API void ImGuiViewportP_UpdateWorkRect(ImGuiViewportP* self);
+CIMGUI_API void ImGuiViewportP_GetMainRect(ImRect *pOut,ImGuiViewportP* self);
+CIMGUI_API void ImGuiViewportP_GetWorkRect(ImRect *pOut,ImGuiViewportP* self);
+CIMGUI_API void ImGuiViewportP_GetBuildWorkRect(ImRect *pOut,ImGuiViewportP* self);
+CIMGUI_API ImGuiWindowSettings* ImGuiWindowSettings_ImGuiWindowSettings(void);
+CIMGUI_API void ImGuiWindowSettings_destroy(ImGuiWindowSettings* self);
+CIMGUI_API char* ImGuiWindowSettings_GetName(ImGuiWindowSettings* self);
+CIMGUI_API ImGuiSettingsHandler* ImGuiSettingsHandler_ImGuiSettingsHandler(void);
+CIMGUI_API void ImGuiSettingsHandler_destroy(ImGuiSettingsHandler* self);
+CIMGUI_API ImGuiDebugAllocInfo* ImGuiDebugAllocInfo_ImGuiDebugAllocInfo(void);
+CIMGUI_API void ImGuiDebugAllocInfo_destroy(ImGuiDebugAllocInfo* self);
+CIMGUI_API ImGuiStackLevelInfo* ImGuiStackLevelInfo_ImGuiStackLevelInfo(void);
+CIMGUI_API void ImGuiStackLevelInfo_destroy(ImGuiStackLevelInfo* self);
+CIMGUI_API ImGuiIDStackTool* ImGuiIDStackTool_ImGuiIDStackTool(void);
+CIMGUI_API void ImGuiIDStackTool_destroy(ImGuiIDStackTool* self);
+CIMGUI_API ImGuiContextHook* ImGuiContextHook_ImGuiContextHook(void);
+CIMGUI_API void ImGuiContextHook_destroy(ImGuiContextHook* self);
+CIMGUI_API ImGuiContext* ImGuiContext_ImGuiContext(ImFontAtlas* shared_font_atlas);
+CIMGUI_API void ImGuiContext_destroy(ImGuiContext* self);
+CIMGUI_API ImGuiWindow* ImGuiWindow_ImGuiWindow(ImGuiContext* context,const char* name);
+CIMGUI_API void ImGuiWindow_destroy(ImGuiWindow* self);
+CIMGUI_API ImGuiID ImGuiWindow_GetID_Str(ImGuiWindow* self,const char* str,const char* str_end);
+CIMGUI_API ImGuiID ImGuiWindow_GetID_Ptr(ImGuiWindow* self,const void* ptr);
+CIMGUI_API ImGuiID ImGuiWindow_GetID_Int(ImGuiWindow* self,int n);
+CIMGUI_API ImGuiID ImGuiWindow_GetIDFromPos(ImGuiWindow* self,const ImVec2 p_abs);
+CIMGUI_API ImGuiID ImGuiWindow_GetIDFromRectangle(ImGuiWindow* self,const ImRect r_abs);
+CIMGUI_API void ImGuiWindow_Rect(ImRect *pOut,ImGuiWindow* self);
+CIMGUI_API float ImGuiWindow_CalcFontSize(ImGuiWindow* self);
+CIMGUI_API void ImGuiWindow_TitleBarRect(ImRect *pOut,ImGuiWindow* self);
+CIMGUI_API void ImGuiWindow_MenuBarRect(ImRect *pOut,ImGuiWindow* self);
+CIMGUI_API ImGuiTabItem* ImGuiTabItem_ImGuiTabItem(void);
+CIMGUI_API void ImGuiTabItem_destroy(ImGuiTabItem* self);
+CIMGUI_API ImGuiTabBar* ImGuiTabBar_ImGuiTabBar(void);
+CIMGUI_API void ImGuiTabBar_destroy(ImGuiTabBar* self);
+CIMGUI_API ImGuiTableColumn* ImGuiTableColumn_ImGuiTableColumn(void);
+CIMGUI_API void ImGuiTableColumn_destroy(ImGuiTableColumn* self);
+CIMGUI_API ImGuiTableInstanceData* ImGuiTableInstanceData_ImGuiTableInstanceData(void);
+CIMGUI_API void ImGuiTableInstanceData_destroy(ImGuiTableInstanceData* self);
+CIMGUI_API ImGuiTable* ImGuiTable_ImGuiTable(void);
+CIMGUI_API void ImGuiTable_destroy(ImGuiTable* self);
+CIMGUI_API ImGuiTableTempData* ImGuiTableTempData_ImGuiTableTempData(void);
+CIMGUI_API void ImGuiTableTempData_destroy(ImGuiTableTempData* self);
+CIMGUI_API ImGuiTableColumnSettings* ImGuiTableColumnSettings_ImGuiTableColumnSettings(void);
+CIMGUI_API void ImGuiTableColumnSettings_destroy(ImGuiTableColumnSettings* self);
+CIMGUI_API ImGuiTableSettings* ImGuiTableSettings_ImGuiTableSettings(void);
+CIMGUI_API void ImGuiTableSettings_destroy(ImGuiTableSettings* self);
+CIMGUI_API ImGuiTableColumnSettings* ImGuiTableSettings_GetColumnSettings(ImGuiTableSettings* self);
+CIMGUI_API ImGuiWindow* igGetCurrentWindowRead(void);
+CIMGUI_API ImGuiWindow* igGetCurrentWindow(void);
+CIMGUI_API ImGuiWindow* igFindWindowByID(ImGuiID id);
+CIMGUI_API ImGuiWindow* igFindWindowByName(const char* name);
+CIMGUI_API void igUpdateWindowParentAndRootLinks(ImGuiWindow* window,ImGuiWindowFlags flags,ImGuiWindow* parent_window);
+CIMGUI_API void igUpdateWindowSkipRefresh(ImGuiWindow* window);
+CIMGUI_API void igCalcWindowNextAutoFitSize(ImVec2 *pOut,ImGuiWindow* window);
+CIMGUI_API bool igIsWindowChildOf(ImGuiWindow* window,ImGuiWindow* potential_parent,bool popup_hierarchy,bool dock_hierarchy);
+CIMGUI_API bool igIsWindowWithinBeginStackOf(ImGuiWindow* window,ImGuiWindow* potential_parent);
+CIMGUI_API bool igIsWindowAbove(ImGuiWindow* potential_above,ImGuiWindow* potential_below);
+CIMGUI_API bool igIsWindowNavFocusable(ImGuiWindow* window);
+CIMGUI_API void igSetWindowPos_WindowPtr(ImGuiWindow* window,const ImVec2 pos,ImGuiCond cond);
+CIMGUI_API void igSetWindowSize_WindowPtr(ImGuiWindow* window,const ImVec2 size,ImGuiCond cond);
+CIMGUI_API void igSetWindowCollapsed_WindowPtr(ImGuiWindow* window,bool collapsed,ImGuiCond cond);
+CIMGUI_API void igSetWindowHitTestHole(ImGuiWindow* window,const ImVec2 pos,const ImVec2 size);
+CIMGUI_API void igSetWindowHiddenAndSkipItemsForCurrentFrame(ImGuiWindow* window);
+CIMGUI_API void igSetWindowParentWindowForFocusRoute(ImGuiWindow* window,ImGuiWindow* parent_window);
+CIMGUI_API void igWindowRectAbsToRel(ImRect *pOut,ImGuiWindow* window,const ImRect r);
+CIMGUI_API void igWindowRectRelToAbs(ImRect *pOut,ImGuiWindow* window,const ImRect r);
+CIMGUI_API void igWindowPosAbsToRel(ImVec2 *pOut,ImGuiWindow* window,const ImVec2 p);
+CIMGUI_API void igWindowPosRelToAbs(ImVec2 *pOut,ImGuiWindow* window,const ImVec2 p);
+CIMGUI_API void igFocusWindow(ImGuiWindow* window,ImGuiFocusRequestFlags flags);
+CIMGUI_API void igFocusTopMostWindowUnderOne(ImGuiWindow* under_this_window,ImGuiWindow* ignore_window,ImGuiViewport* filter_viewport,ImGuiFocusRequestFlags flags);
+CIMGUI_API void igBringWindowToFocusFront(ImGuiWindow* window);
+CIMGUI_API void igBringWindowToDisplayFront(ImGuiWindow* window);
+CIMGUI_API void igBringWindowToDisplayBack(ImGuiWindow* window);
+CIMGUI_API void igBringWindowToDisplayBehind(ImGuiWindow* window,ImGuiWindow* above_window);
+CIMGUI_API int igFindWindowDisplayIndex(ImGuiWindow* window);
+CIMGUI_API ImGuiWindow* igFindBottomMostVisibleWindowWithinBeginStack(ImGuiWindow* window);
+CIMGUI_API void igSetNextWindowRefreshPolicy(ImGuiWindowRefreshFlags flags);
+CIMGUI_API void igSetCurrentFont(ImFont* font);
+CIMGUI_API ImFont* igGetDefaultFont(void);
+CIMGUI_API ImDrawList* igGetForegroundDrawList_WindowPtr(ImGuiWindow* window);
+CIMGUI_API void igAddDrawListToDrawDataEx(ImDrawData* draw_data,ImVector_ImDrawListPtr* out_list,ImDrawList* draw_list);
+CIMGUI_API void igInitialize(void);
+CIMGUI_API void igShutdown(void);
+CIMGUI_API void igUpdateInputEvents(bool trickle_fast_inputs);
+CIMGUI_API void igUpdateHoveredWindowAndCaptureFlags(void);
+CIMGUI_API void igFindHoveredWindowEx(const ImVec2 pos,bool find_first_and_in_any_viewport,ImGuiWindow** out_hovered_window,ImGuiWindow** out_hovered_window_under_moving_window);
+CIMGUI_API void igStartMouseMovingWindow(ImGuiWindow* window);
+CIMGUI_API void igStartMouseMovingWindowOrNode(ImGuiWindow* window,ImGuiDockNode* node,bool undock);
+CIMGUI_API void igUpdateMouseMovingWindowNewFrame(void);
+CIMGUI_API void igUpdateMouseMovingWindowEndFrame(void);
+CIMGUI_API ImGuiID igAddContextHook(ImGuiContext* context,const ImGuiContextHook* hook);
+CIMGUI_API void igRemoveContextHook(ImGuiContext* context,ImGuiID hook_to_remove);
+CIMGUI_API void igCallContextHooks(ImGuiContext* context,ImGuiContextHookType type);
+CIMGUI_API void igTranslateWindowsInViewport(ImGuiViewportP* viewport,const ImVec2 old_pos,const ImVec2 new_pos);
+CIMGUI_API void igScaleWindowsInViewport(ImGuiViewportP* viewport,float scale);
+CIMGUI_API void igDestroyPlatformWindow(ImGuiViewportP* viewport);
+CIMGUI_API void igSetWindowViewport(ImGuiWindow* window,ImGuiViewportP* viewport);
+CIMGUI_API void igSetCurrentViewport(ImGuiWindow* window,ImGuiViewportP* viewport);
+CIMGUI_API const ImGuiPlatformMonitor* igGetViewportPlatformMonitor(ImGuiViewport* viewport);
+CIMGUI_API ImGuiViewportP* igFindHoveredViewportFromPlatformWindowStack(const ImVec2 mouse_platform_pos);
+CIMGUI_API void igMarkIniSettingsDirty_Nil(void);
+CIMGUI_API void igMarkIniSettingsDirty_WindowPtr(ImGuiWindow* window);
+CIMGUI_API void igClearIniSettings(void);
+CIMGUI_API void igAddSettingsHandler(const ImGuiSettingsHandler* handler);
+CIMGUI_API void igRemoveSettingsHandler(const char* type_name);
+CIMGUI_API ImGuiSettingsHandler* igFindSettingsHandler(const char* type_name);
+CIMGUI_API ImGuiWindowSettings* igCreateNewWindowSettings(const char* name);
+CIMGUI_API ImGuiWindowSettings* igFindWindowSettingsByID(ImGuiID id);
+CIMGUI_API ImGuiWindowSettings* igFindWindowSettingsByWindow(ImGuiWindow* window);
+CIMGUI_API void igClearWindowSettings(const char* name);
+CIMGUI_API void igLocalizeRegisterEntries(const ImGuiLocEntry* entries,int count);
+CIMGUI_API const char* igLocalizeGetMsg(ImGuiLocKey key);
+CIMGUI_API void igSetScrollX_WindowPtr(ImGuiWindow* window,float scroll_x);
+CIMGUI_API void igSetScrollY_WindowPtr(ImGuiWindow* window,float scroll_y);
+CIMGUI_API void igSetScrollFromPosX_WindowPtr(ImGuiWindow* window,float local_x,float center_x_ratio);
+CIMGUI_API void igSetScrollFromPosY_WindowPtr(ImGuiWindow* window,float local_y,float center_y_ratio);
+CIMGUI_API void igScrollToItem(ImGuiScrollFlags flags);
+CIMGUI_API void igScrollToRect(ImGuiWindow* window,const ImRect rect,ImGuiScrollFlags flags);
+CIMGUI_API void igScrollToRectEx(ImVec2 *pOut,ImGuiWindow* window,const ImRect rect,ImGuiScrollFlags flags);
+CIMGUI_API void igScrollToBringRectIntoView(ImGuiWindow* window,const ImRect rect);
+CIMGUI_API ImGuiItemStatusFlags igGetItemStatusFlags(void);
+CIMGUI_API ImGuiItemFlags igGetItemFlags(void);
+CIMGUI_API ImGuiID igGetActiveID(void);
+CIMGUI_API ImGuiID igGetFocusID(void);
+CIMGUI_API void igSetActiveID(ImGuiID id,ImGuiWindow* window);
+CIMGUI_API void igSetFocusID(ImGuiID id,ImGuiWindow* window);
+CIMGUI_API void igClearActiveID(void);
+CIMGUI_API ImGuiID igGetHoveredID(void);
+CIMGUI_API void igSetHoveredID(ImGuiID id);
+CIMGUI_API void igKeepAliveID(ImGuiID id);
+CIMGUI_API void igMarkItemEdited(ImGuiID id);
+CIMGUI_API void igPushOverrideID(ImGuiID id);
+CIMGUI_API ImGuiID igGetIDWithSeed_Str(const char* str_id_begin,const char* str_id_end,ImGuiID seed);
+CIMGUI_API ImGuiID igGetIDWithSeed_Int(int n,ImGuiID seed);
+CIMGUI_API void igItemSize_Vec2(const ImVec2 size,float text_baseline_y);
+CIMGUI_API void igItemSize_Rect(const ImRect bb,float text_baseline_y);
+CIMGUI_API bool igItemAdd(const ImRect bb,ImGuiID id,const ImRect* nav_bb,ImGuiItemFlags extra_flags);
+CIMGUI_API bool igItemHoverable(const ImRect bb,ImGuiID id,ImGuiItemFlags item_flags);
+CIMGUI_API bool igIsWindowContentHoverable(ImGuiWindow* window,ImGuiHoveredFlags flags);
+CIMGUI_API bool igIsClippedEx(const ImRect bb,ImGuiID id);
+CIMGUI_API void igSetLastItemData(ImGuiID item_id,ImGuiItemFlags in_flags,ImGuiItemStatusFlags status_flags,const ImRect item_rect);
+CIMGUI_API void igCalcItemSize(ImVec2 *pOut,ImVec2 size,float default_w,float default_h);
+CIMGUI_API float igCalcWrapWidthForPos(const ImVec2 pos,float wrap_pos_x);
+CIMGUI_API void igPushMultiItemsWidths(int components,float width_full);
+CIMGUI_API void igShrinkWidths(ImGuiShrinkWidthItem* items,int count,float width_excess);
+CIMGUI_API const ImGuiDataVarInfo* igGetStyleVarInfo(ImGuiStyleVar idx);
+CIMGUI_API void igBeginDisabledOverrideReenable(void);
+CIMGUI_API void igEndDisabledOverrideReenable(void);
+CIMGUI_API void igLogBegin(ImGuiLogType type,int auto_open_depth);
+CIMGUI_API void igLogToBuffer(int auto_open_depth);
+CIMGUI_API void igLogRenderedText(const ImVec2* ref_pos,const char* text,const char* text_end);
+CIMGUI_API void igLogSetNextTextDecoration(const char* prefix,const char* suffix);
+CIMGUI_API bool igBeginChildEx(const char* name,ImGuiID id,const ImVec2 size_arg,ImGuiChildFlags child_flags,ImGuiWindowFlags window_flags);
+CIMGUI_API bool igBeginPopupEx(ImGuiID id,ImGuiWindowFlags extra_window_flags);
+CIMGUI_API void igOpenPopupEx(ImGuiID id,ImGuiPopupFlags popup_flags);
+CIMGUI_API void igClosePopupToLevel(int remaining,bool restore_focus_to_window_under_popup);
+CIMGUI_API void igClosePopupsOverWindow(ImGuiWindow* ref_window,bool restore_focus_to_window_under_popup);
+CIMGUI_API void igClosePopupsExceptModals(void);
+CIMGUI_API bool igIsPopupOpen_ID(ImGuiID id,ImGuiPopupFlags popup_flags);
+CIMGUI_API void igGetPopupAllowedExtentRect(ImRect *pOut,ImGuiWindow* window);
+CIMGUI_API ImGuiWindow* igGetTopMostPopupModal(void);
+CIMGUI_API ImGuiWindow* igGetTopMostAndVisiblePopupModal(void);
+CIMGUI_API ImGuiWindow* igFindBlockingModal(ImGuiWindow* window);
+CIMGUI_API void igFindBestWindowPosForPopup(ImVec2 *pOut,ImGuiWindow* window);
+CIMGUI_API void igFindBestWindowPosForPopupEx(ImVec2 *pOut,const ImVec2 ref_pos,const ImVec2 size,ImGuiDir* last_dir,const ImRect r_outer,const ImRect r_avoid,ImGuiPopupPositionPolicy policy);
+CIMGUI_API bool igBeginTooltipEx(ImGuiTooltipFlags tooltip_flags,ImGuiWindowFlags extra_window_flags);
+CIMGUI_API bool igBeginTooltipHidden(void);
+CIMGUI_API bool igBeginViewportSideBar(const char* name,ImGuiViewport* viewport,ImGuiDir dir,float size,ImGuiWindowFlags window_flags);
+CIMGUI_API bool igBeginMenuEx(const char* label,const char* icon,bool enabled);
+CIMGUI_API bool igMenuItemEx(const char* label,const char* icon,const char* shortcut,bool selected,bool enabled);
+CIMGUI_API bool igBeginComboPopup(ImGuiID popup_id,const ImRect bb,ImGuiComboFlags flags);
+CIMGUI_API bool igBeginComboPreview(void);
+CIMGUI_API void igEndComboPreview(void);
+CIMGUI_API void igNavInitWindow(ImGuiWindow* window,bool force_reinit);
+CIMGUI_API void igNavInitRequestApplyResult(void);
+CIMGUI_API bool igNavMoveRequestButNoResultYet(void);
+CIMGUI_API void igNavMoveRequestSubmit(ImGuiDir move_dir,ImGuiDir clip_dir,ImGuiNavMoveFlags move_flags,ImGuiScrollFlags scroll_flags);
+CIMGUI_API void igNavMoveRequestForward(ImGuiDir move_dir,ImGuiDir clip_dir,ImGuiNavMoveFlags move_flags,ImGuiScrollFlags scroll_flags);
+CIMGUI_API void igNavMoveRequestResolveWithLastItem(ImGuiNavItemData* result);
+CIMGUI_API void igNavMoveRequestResolveWithPastTreeNode(ImGuiNavItemData* result,ImGuiTreeNodeStackData* tree_node_data);
+CIMGUI_API void igNavMoveRequestCancel(void);
+CIMGUI_API void igNavMoveRequestApplyResult(void);
+CIMGUI_API void igNavMoveRequestTryWrapping(ImGuiWindow* window,ImGuiNavMoveFlags move_flags);
+CIMGUI_API void igNavHighlightActivated(ImGuiID id);
+CIMGUI_API void igNavClearPreferredPosForAxis(ImGuiAxis axis);
+CIMGUI_API void igNavRestoreHighlightAfterMove(void);
+CIMGUI_API void igNavUpdateCurrentWindowIsScrollPushableX(void);
+CIMGUI_API void igSetNavWindow(ImGuiWindow* window);
+CIMGUI_API void igSetNavID(ImGuiID id,ImGuiNavLayer nav_layer,ImGuiID focus_scope_id,const ImRect rect_rel);
+CIMGUI_API void igSetNavFocusScope(ImGuiID focus_scope_id);
+CIMGUI_API void igFocusItem(void);
+CIMGUI_API void igActivateItemByID(ImGuiID id);
+CIMGUI_API bool igIsNamedKey(ImGuiKey key);
+CIMGUI_API bool igIsNamedKeyOrMod(ImGuiKey key);
+CIMGUI_API bool igIsLegacyKey(ImGuiKey key);
+CIMGUI_API bool igIsKeyboardKey(ImGuiKey key);
+CIMGUI_API bool igIsGamepadKey(ImGuiKey key);
+CIMGUI_API bool igIsMouseKey(ImGuiKey key);
+CIMGUI_API bool igIsAliasKey(ImGuiKey key);
+CIMGUI_API bool igIsLRModKey(ImGuiKey key);
+CIMGUI_API ImGuiKeyChord igFixupKeyChord(ImGuiKeyChord key_chord);
+CIMGUI_API ImGuiKey igConvertSingleModFlagToKey(ImGuiKey key);
+CIMGUI_API ImGuiKeyData* igGetKeyData_ContextPtr(ImGuiContext* ctx,ImGuiKey key);
+CIMGUI_API ImGuiKeyData* igGetKeyData_Key(ImGuiKey key);
+CIMGUI_API const char* igGetKeyChordName(ImGuiKeyChord key_chord);
+CIMGUI_API ImGuiKey igMouseButtonToKey(ImGuiMouseButton button);
+CIMGUI_API bool igIsMouseDragPastThreshold(ImGuiMouseButton button,float lock_threshold);
+CIMGUI_API void igGetKeyMagnitude2d(ImVec2 *pOut,ImGuiKey key_left,ImGuiKey key_right,ImGuiKey key_up,ImGuiKey key_down);
+CIMGUI_API float igGetNavTweakPressedAmount(ImGuiAxis axis);
+CIMGUI_API int igCalcTypematicRepeatAmount(float t0,float t1,float repeat_delay,float repeat_rate);
+CIMGUI_API void igGetTypematicRepeatRate(ImGuiInputFlags flags,float* repeat_delay,float* repeat_rate);
+CIMGUI_API void igTeleportMousePos(const ImVec2 pos);
+CIMGUI_API void igSetActiveIdUsingAllKeyboardKeys(void);
+CIMGUI_API bool igIsActiveIdUsingNavDir(ImGuiDir dir);
+CIMGUI_API ImGuiID igGetKeyOwner(ImGuiKey key);
+CIMGUI_API void igSetKeyOwner(ImGuiKey key,ImGuiID owner_id,ImGuiInputFlags flags);
+CIMGUI_API void igSetKeyOwnersForKeyChord(ImGuiKeyChord key,ImGuiID owner_id,ImGuiInputFlags flags);
+CIMGUI_API void igSetItemKeyOwner_InputFlags(ImGuiKey key,ImGuiInputFlags flags);
+CIMGUI_API bool igTestKeyOwner(ImGuiKey key,ImGuiID owner_id);
+CIMGUI_API ImGuiKeyOwnerData* igGetKeyOwnerData(ImGuiContext* ctx,ImGuiKey key);
+CIMGUI_API bool igIsKeyDown_ID(ImGuiKey key,ImGuiID owner_id);
+CIMGUI_API bool igIsKeyPressed_InputFlags(ImGuiKey key,ImGuiInputFlags flags,ImGuiID owner_id);
+CIMGUI_API bool igIsKeyReleased_ID(ImGuiKey key,ImGuiID owner_id);
+CIMGUI_API bool igIsKeyChordPressed_InputFlags(ImGuiKeyChord key_chord,ImGuiInputFlags flags,ImGuiID owner_id);
+CIMGUI_API bool igIsMouseDown_ID(ImGuiMouseButton button,ImGuiID owner_id);
+CIMGUI_API bool igIsMouseClicked_InputFlags(ImGuiMouseButton button,ImGuiInputFlags flags,ImGuiID owner_id);
+CIMGUI_API bool igIsMouseReleased_ID(ImGuiMouseButton button,ImGuiID owner_id);
+CIMGUI_API bool igIsMouseDoubleClicked_ID(ImGuiMouseButton button,ImGuiID owner_id);
+CIMGUI_API bool igShortcut_ID(ImGuiKeyChord key_chord,ImGuiInputFlags flags,ImGuiID owner_id);
+CIMGUI_API bool igSetShortcutRouting(ImGuiKeyChord key_chord,ImGuiInputFlags flags,ImGuiID owner_id);
+CIMGUI_API bool igTestShortcutRouting(ImGuiKeyChord key_chord,ImGuiID owner_id);
+CIMGUI_API ImGuiKeyRoutingData* igGetShortcutRoutingData(ImGuiKeyChord key_chord);
+CIMGUI_API void igDockContextInitialize(ImGuiContext* ctx);
+CIMGUI_API void igDockContextShutdown(ImGuiContext* ctx);
+CIMGUI_API void igDockContextClearNodes(ImGuiContext* ctx,ImGuiID root_id,bool clear_settings_refs);
+CIMGUI_API void igDockContextRebuildNodes(ImGuiContext* ctx);
+CIMGUI_API void igDockContextNewFrameUpdateUndocking(ImGuiContext* ctx);
+CIMGUI_API void igDockContextNewFrameUpdateDocking(ImGuiContext* ctx);
+CIMGUI_API void igDockContextEndFrame(ImGuiContext* ctx);
+CIMGUI_API ImGuiID igDockContextGenNodeID(ImGuiContext* ctx);
+CIMGUI_API void igDockContextQueueDock(ImGuiContext* ctx,ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload,ImGuiDir split_dir,float split_ratio,bool split_outer);
+CIMGUI_API void igDockContextQueueUndockWindow(ImGuiContext* ctx,ImGuiWindow* window);
+CIMGUI_API void igDockContextQueueUndockNode(ImGuiContext* ctx,ImGuiDockNode* node);
+CIMGUI_API void igDockContextProcessUndockWindow(ImGuiContext* ctx,ImGuiWindow* window,bool clear_persistent_docking_ref);
+CIMGUI_API void igDockContextProcessUndockNode(ImGuiContext* ctx,ImGuiDockNode* node);
+CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos);
+CIMGUI_API ImGuiDockNode* igDockContextFindNodeByID(ImGuiContext* ctx,ImGuiID id);
+CIMGUI_API void igDockNodeWindowMenuHandler_Default(ImGuiContext* ctx,ImGuiDockNode* node,ImGuiTabBar* tab_bar);
+CIMGUI_API bool igDockNodeBeginAmendTabBar(ImGuiDockNode* node);
+CIMGUI_API void igDockNodeEndAmendTabBar(void);
+CIMGUI_API ImGuiDockNode* igDockNodeGetRootNode(ImGuiDockNode* node);
+CIMGUI_API bool igDockNodeIsInHierarchyOf(ImGuiDockNode* node,ImGuiDockNode* parent);
+CIMGUI_API int igDockNodeGetDepth(const ImGuiDockNode* node);
+CIMGUI_API ImGuiID igDockNodeGetWindowMenuButtonId(const ImGuiDockNode* node);
+CIMGUI_API ImGuiDockNode* igGetWindowDockNode(void);
+CIMGUI_API bool igGetWindowAlwaysWantOwnTabBar(ImGuiWindow* window);
+CIMGUI_API void igBeginDocked(ImGuiWindow* window,bool* p_open);
+CIMGUI_API void igBeginDockableDragDropSource(ImGuiWindow* window);
+CIMGUI_API void igBeginDockableDragDropTarget(ImGuiWindow* window);
+CIMGUI_API void igSetWindowDock(ImGuiWindow* window,ImGuiID dock_id,ImGuiCond cond);
+CIMGUI_API void igDockBuilderDockWindow(const char* window_name,ImGuiID node_id);
+CIMGUI_API ImGuiDockNode* igDockBuilderGetNode(ImGuiID node_id);
+CIMGUI_API ImGuiDockNode* igDockBuilderGetCentralNode(ImGuiID node_id);
+CIMGUI_API ImGuiID igDockBuilderAddNode(ImGuiID node_id,ImGuiDockNodeFlags flags);
+CIMGUI_API void igDockBuilderRemoveNode(ImGuiID node_id);
+CIMGUI_API void igDockBuilderRemoveNodeDockedWindows(ImGuiID node_id,bool clear_settings_refs);
+CIMGUI_API void igDockBuilderRemoveNodeChildNodes(ImGuiID node_id);
+CIMGUI_API void igDockBuilderSetNodePos(ImGuiID node_id,ImVec2 pos);
+CIMGUI_API void igDockBuilderSetNodeSize(ImGuiID node_id,ImVec2 size);
+CIMGUI_API ImGuiID igDockBuilderSplitNode(ImGuiID node_id,ImGuiDir split_dir,float size_ratio_for_node_at_dir,ImGuiID* out_id_at_dir,ImGuiID* out_id_at_opposite_dir);
+CIMGUI_API void igDockBuilderCopyDockSpace(ImGuiID src_dockspace_id,ImGuiID dst_dockspace_id,ImVector_const_charPtr* in_window_remap_pairs);
+CIMGUI_API void igDockBuilderCopyNode(ImGuiID src_node_id,ImGuiID dst_node_id,ImVector_ImGuiID* out_node_remap_pairs);
+CIMGUI_API void igDockBuilderCopyWindowSettings(const char* src_name,const char* dst_name);
+CIMGUI_API void igDockBuilderFinish(ImGuiID node_id);
+CIMGUI_API void igPushFocusScope(ImGuiID id);
+CIMGUI_API void igPopFocusScope(void);
+CIMGUI_API ImGuiID igGetCurrentFocusScope(void);
+CIMGUI_API bool igIsDragDropActive(void);
+CIMGUI_API bool igBeginDragDropTargetCustom(const ImRect bb,ImGuiID id);
+CIMGUI_API void igClearDragDrop(void);
+CIMGUI_API bool igIsDragDropPayloadBeingAccepted(void);
+CIMGUI_API void igRenderDragDropTargetRect(const ImRect bb,const ImRect item_clip_rect);
+CIMGUI_API ImGuiTypingSelectRequest* igGetTypingSelectRequest(ImGuiTypingSelectFlags flags);
+CIMGUI_API int igTypingSelectFindMatch(ImGuiTypingSelectRequest* req,int items_count,const char*(*get_item_name_func)(void*,int),void* user_data,int nav_item_idx);
+CIMGUI_API int igTypingSelectFindNextSingleCharMatch(ImGuiTypingSelectRequest* req,int items_count,const char*(*get_item_name_func)(void*,int),void* user_data,int nav_item_idx);
+CIMGUI_API int igTypingSelectFindBestLeadingMatch(ImGuiTypingSelectRequest* req,int items_count,const char*(*get_item_name_func)(void*,int),void* user_data);
+CIMGUI_API bool igBeginBoxSelect(const ImRect scope_rect,ImGuiWindow* window,ImGuiID box_select_id,ImGuiMultiSelectFlags ms_flags);
+CIMGUI_API void igEndBoxSelect(const ImRect scope_rect,ImGuiMultiSelectFlags ms_flags);
+CIMGUI_API void igMultiSelectItemHeader(ImGuiID id,bool* p_selected,ImGuiButtonFlags* p_button_flags);
+CIMGUI_API void igMultiSelectItemFooter(ImGuiID id,bool* p_selected,bool* p_pressed);
+CIMGUI_API void igMultiSelectAddSetAll(ImGuiMultiSelectTempData* ms,bool selected);
+CIMGUI_API void igMultiSelectAddSetRange(ImGuiMultiSelectTempData* ms,bool selected,int range_dir,ImGuiSelectionUserData first_item,ImGuiSelectionUserData last_item);
+CIMGUI_API ImGuiBoxSelectState* igGetBoxSelectState(ImGuiID id);
+CIMGUI_API ImGuiMultiSelectState* igGetMultiSelectState(ImGuiID id);
+CIMGUI_API void igSetWindowClipRectBeforeSetChannel(ImGuiWindow* window,const ImRect clip_rect);
+CIMGUI_API void igBeginColumns(const char* str_id,int count,ImGuiOldColumnFlags flags);
+CIMGUI_API void igEndColumns(void);
+CIMGUI_API void igPushColumnClipRect(int column_index);
+CIMGUI_API void igPushColumnsBackground(void);
+CIMGUI_API void igPopColumnsBackground(void);
+CIMGUI_API ImGuiID igGetColumnsID(const char* str_id,int count);
+CIMGUI_API ImGuiOldColumns* igFindOrCreateColumns(ImGuiWindow* window,ImGuiID id);
+CIMGUI_API float igGetColumnOffsetFromNorm(const ImGuiOldColumns* columns,float offset_norm);
+CIMGUI_API float igGetColumnNormFromOffset(const ImGuiOldColumns* columns,float offset);
+CIMGUI_API void igTableOpenContextMenu(int column_n);
+CIMGUI_API void igTableSetColumnWidth(int column_n,float width);
+CIMGUI_API void igTableSetColumnSortDirection(int column_n,ImGuiSortDirection sort_direction,bool append_to_sort_specs);
+CIMGUI_API int igTableGetHoveredRow(void);
+CIMGUI_API float igTableGetHeaderRowHeight(void);
+CIMGUI_API float igTableGetHeaderAngledMaxLabelWidth(void);
+CIMGUI_API void igTablePushBackgroundChannel(void);
+CIMGUI_API void igTablePopBackgroundChannel(void);
+CIMGUI_API void igTableAngledHeadersRowEx(ImGuiID row_id,float angle,float max_label_width,const ImGuiTableHeaderData* data,int data_count);
+CIMGUI_API ImGuiTable* igGetCurrentTable(void);
+CIMGUI_API ImGuiTable* igTableFindByID(ImGuiID id);
+CIMGUI_API bool igBeginTableEx(const char* name,ImGuiID id,int columns_count,ImGuiTableFlags flags,const ImVec2 outer_size,float inner_width);
+CIMGUI_API void igTableBeginInitMemory(ImGuiTable* table,int columns_count);
+CIMGUI_API void igTableBeginApplyRequests(ImGuiTable* table);
+CIMGUI_API void igTableSetupDrawChannels(ImGuiTable* table);
+CIMGUI_API void igTableUpdateLayout(ImGuiTable* table);
+CIMGUI_API void igTableUpdateBorders(ImGuiTable* table);
+CIMGUI_API void igTableUpdateColumnsWeightFromWidth(ImGuiTable* table);
+CIMGUI_API void igTableDrawBorders(ImGuiTable* table);
+CIMGUI_API void igTableDrawDefaultContextMenu(ImGuiTable* table,ImGuiTableFlags flags_for_section_to_display);
+CIMGUI_API bool igTableBeginContextMenuPopup(ImGuiTable* table);
+CIMGUI_API void igTableMergeDrawChannels(ImGuiTable* table);
+CIMGUI_API ImGuiTableInstanceData* igTableGetInstanceData(ImGuiTable* table,int instance_no);
+CIMGUI_API ImGuiID igTableGetInstanceID(ImGuiTable* table,int instance_no);
+CIMGUI_API void igTableSortSpecsSanitize(ImGuiTable* table);
+CIMGUI_API void igTableSortSpecsBuild(ImGuiTable* table);
+CIMGUI_API ImGuiSortDirection igTableGetColumnNextSortDirection(ImGuiTableColumn* column);
+CIMGUI_API void igTableFixColumnSortDirection(ImGuiTable* table,ImGuiTableColumn* column);
+CIMGUI_API float igTableGetColumnWidthAuto(ImGuiTable* table,ImGuiTableColumn* column);
+CIMGUI_API void igTableBeginRow(ImGuiTable* table);
+CIMGUI_API void igTableEndRow(ImGuiTable* table);
+CIMGUI_API void igTableBeginCell(ImGuiTable* table,int column_n);
+CIMGUI_API void igTableEndCell(ImGuiTable* table);
+CIMGUI_API void igTableGetCellBgRect(ImRect *pOut,const ImGuiTable* table,int column_n);
+CIMGUI_API const char* igTableGetColumnName_TablePtr(const ImGuiTable* table,int column_n);
+CIMGUI_API ImGuiID igTableGetColumnResizeID(ImGuiTable* table,int column_n,int instance_no);
+CIMGUI_API float igTableCalcMaxColumnWidth(const ImGuiTable* table,int column_n);
+CIMGUI_API void igTableSetColumnWidthAutoSingle(ImGuiTable* table,int column_n);
+CIMGUI_API void igTableSetColumnWidthAutoAll(ImGuiTable* table);
+CIMGUI_API void igTableRemove(ImGuiTable* table);
+CIMGUI_API void igTableGcCompactTransientBuffers_TablePtr(ImGuiTable* table);
+CIMGUI_API void igTableGcCompactTransientBuffers_TableTempDataPtr(ImGuiTableTempData* table);
+CIMGUI_API void igTableGcCompactSettings(void);
+CIMGUI_API void igTableLoadSettings(ImGuiTable* table);
+CIMGUI_API void igTableSaveSettings(ImGuiTable* table);
+CIMGUI_API void igTableResetSettings(ImGuiTable* table);
+CIMGUI_API ImGuiTableSettings* igTableGetBoundSettings(ImGuiTable* table);
+CIMGUI_API void igTableSettingsAddSettingsHandler(void);
+CIMGUI_API ImGuiTableSettings* igTableSettingsCreate(ImGuiID id,int columns_count);
+CIMGUI_API ImGuiTableSettings* igTableSettingsFindByID(ImGuiID id);
+CIMGUI_API ImGuiTabBar* igGetCurrentTabBar(void);
+CIMGUI_API bool igBeginTabBarEx(ImGuiTabBar* tab_bar,const ImRect bb,ImGuiTabBarFlags flags);
+CIMGUI_API ImGuiTabItem* igTabBarFindTabByID(ImGuiTabBar* tab_bar,ImGuiID tab_id);
+CIMGUI_API ImGuiTabItem* igTabBarFindTabByOrder(ImGuiTabBar* tab_bar,int order);
+CIMGUI_API ImGuiTabItem* igTabBarFindMostRecentlySelectedTabForActiveWindow(ImGuiTabBar* tab_bar);
+CIMGUI_API ImGuiTabItem* igTabBarGetCurrentTab(ImGuiTabBar* tab_bar);
+CIMGUI_API int igTabBarGetTabOrder(ImGuiTabBar* tab_bar,ImGuiTabItem* tab);
+CIMGUI_API const char* igTabBarGetTabName(ImGuiTabBar* tab_bar,ImGuiTabItem* tab);
+CIMGUI_API void igTabBarAddTab(ImGuiTabBar* tab_bar,ImGuiTabItemFlags tab_flags,ImGuiWindow* window);
+CIMGUI_API void igTabBarRemoveTab(ImGuiTabBar* tab_bar,ImGuiID tab_id);
+CIMGUI_API void igTabBarCloseTab(ImGuiTabBar* tab_bar,ImGuiTabItem* tab);
+CIMGUI_API void igTabBarQueueFocus(ImGuiTabBar* tab_bar,ImGuiTabItem* tab);
+CIMGUI_API void igTabBarQueueReorder(ImGuiTabBar* tab_bar,ImGuiTabItem* tab,int offset);
+CIMGUI_API void igTabBarQueueReorderFromMousePos(ImGuiTabBar* tab_bar,ImGuiTabItem* tab,ImVec2 mouse_pos);
+CIMGUI_API bool igTabBarProcessReorder(ImGuiTabBar* tab_bar);
+CIMGUI_API bool igTabItemEx(ImGuiTabBar* tab_bar,const char* label,bool* p_open,ImGuiTabItemFlags flags,ImGuiWindow* docked_window);
+CIMGUI_API void igTabItemCalcSize_Str(ImVec2 *pOut,const char* label,bool has_close_button_or_unsaved_marker);
+CIMGUI_API void igTabItemCalcSize_WindowPtr(ImVec2 *pOut,ImGuiWindow* window);
+CIMGUI_API void igTabItemBackground(ImDrawList* draw_list,const ImRect bb,ImGuiTabItemFlags flags,ImU32 col);
+CIMGUI_API void igTabItemLabelAndCloseButton(ImDrawList* draw_list,const ImRect bb,ImGuiTabItemFlags flags,ImVec2 frame_padding,const char* label,ImGuiID tab_id,ImGuiID close_button_id,bool is_contents_visible,bool* out_just_closed,bool* out_text_clipped);
+CIMGUI_API void igRenderText(ImVec2 pos,const char* text,const char* text_end,bool hide_text_after_hash);
+CIMGUI_API void igRenderTextWrapped(ImVec2 pos,const char* text,const char* text_end,float wrap_width);
+CIMGUI_API void igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect);
+CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect);
+CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known);
+CIMGUI_API void igRenderFrame(ImVec2 p_min,ImVec2 p_max,ImU32 fill_col,bool borders,float rounding);
+CIMGUI_API void igRenderFrameBorder(ImVec2 p_min,ImVec2 p_max,float rounding);
+CIMGUI_API void igRenderColorRectWithAlphaCheckerboard(ImDrawList* draw_list,ImVec2 p_min,ImVec2 p_max,ImU32 fill_col,float grid_step,ImVec2 grid_off,float rounding,ImDrawFlags flags);
+CIMGUI_API void igRenderNavHighlight(const ImRect bb,ImGuiID id,ImGuiNavHighlightFlags flags);
+CIMGUI_API const char* igFindRenderedTextEnd(const char* text,const char* text_end);
+CIMGUI_API void igRenderMouseCursor(ImVec2 pos,float scale,ImGuiMouseCursor mouse_cursor,ImU32 col_fill,ImU32 col_border,ImU32 col_shadow);
+CIMGUI_API void igRenderArrow(ImDrawList* draw_list,ImVec2 pos,ImU32 col,ImGuiDir dir,float scale);
+CIMGUI_API void igRenderBullet(ImDrawList* draw_list,ImVec2 pos,ImU32 col);
+CIMGUI_API void igRenderCheckMark(ImDrawList* draw_list,ImVec2 pos,ImU32 col,float sz);
+CIMGUI_API void igRenderArrowPointingAt(ImDrawList* draw_list,ImVec2 pos,ImVec2 half_sz,ImGuiDir direction,ImU32 col);
+CIMGUI_API void igRenderArrowDockMenu(ImDrawList* draw_list,ImVec2 p_min,float sz,ImU32 col);
+CIMGUI_API void igRenderRectFilledRangeH(ImDrawList* draw_list,const ImRect rect,ImU32 col,float x_start_norm,float x_end_norm,float rounding);
+CIMGUI_API void igRenderRectFilledWithHole(ImDrawList* draw_list,const ImRect outer,const ImRect inner,ImU32 col,float rounding);
+CIMGUI_API ImDrawFlags igCalcRoundingFlagsForRectInRect(const ImRect r_in,const ImRect r_outer,float threshold);
+CIMGUI_API void igTextEx(const char* text,const char* text_end,ImGuiTextFlags flags);
+CIMGUI_API bool igButtonEx(const char* label,const ImVec2 size_arg,ImGuiButtonFlags flags);
+CIMGUI_API bool igArrowButtonEx(const char* str_id,ImGuiDir dir,ImVec2 size_arg,ImGuiButtonFlags flags);
+CIMGUI_API bool igImageButtonEx(ImGuiID id,ImTextureID texture_id,const ImVec2 image_size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 bg_col,const ImVec4 tint_col,ImGuiButtonFlags flags);
+CIMGUI_API void igSeparatorEx(ImGuiSeparatorFlags flags,float thickness);
+CIMGUI_API void igSeparatorTextEx(ImGuiID id,const char* label,const char* label_end,float extra_width);
+CIMGUI_API bool igCheckboxFlags_S64Ptr(const char* label,ImS64* flags,ImS64 flags_value);
+CIMGUI_API bool igCheckboxFlags_U64Ptr(const char* label,ImU64* flags,ImU64 flags_value);
+CIMGUI_API bool igCloseButton(ImGuiID id,const ImVec2 pos);
+CIMGUI_API bool igCollapseButton(ImGuiID id,const ImVec2 pos,ImGuiDockNode* dock_node);
+CIMGUI_API void igScrollbar(ImGuiAxis axis);
+CIMGUI_API bool igScrollbarEx(const ImRect bb,ImGuiID id,ImGuiAxis axis,ImS64* p_scroll_v,ImS64 avail_v,ImS64 contents_v,ImDrawFlags flags);
+CIMGUI_API void igGetWindowScrollbarRect(ImRect *pOut,ImGuiWindow* window,ImGuiAxis axis);
+CIMGUI_API ImGuiID igGetWindowScrollbarID(ImGuiWindow* window,ImGuiAxis axis);
+CIMGUI_API ImGuiID igGetWindowResizeCornerID(ImGuiWindow* window,int n);
+CIMGUI_API ImGuiID igGetWindowResizeBorderID(ImGuiWindow* window,ImGuiDir dir);
+CIMGUI_API bool igButtonBehavior(const ImRect bb,ImGuiID id,bool* out_hovered,bool* out_held,ImGuiButtonFlags flags);
+CIMGUI_API bool igDragBehavior(ImGuiID id,ImGuiDataType data_type,void* p_v,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags);
+CIMGUI_API bool igSliderBehavior(const ImRect bb,ImGuiID id,ImGuiDataType data_type,void* p_v,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags,ImRect* out_grab_bb);
+CIMGUI_API bool igSplitterBehavior(const ImRect bb,ImGuiID id,ImGuiAxis axis,float* size1,float* size2,float min_size1,float min_size2,float hover_extend,float hover_visibility_delay,ImU32 bg_col);
+CIMGUI_API bool igTreeNodeBehavior(ImGuiID id,ImGuiTreeNodeFlags flags,const char* label,const char* label_end);
+CIMGUI_API void igTreePushOverrideID(ImGuiID id);
+CIMGUI_API bool igTreeNodeGetOpen(ImGuiID storage_id);
+CIMGUI_API void igTreeNodeSetOpen(ImGuiID storage_id,bool open);
+CIMGUI_API bool igTreeNodeUpdateNextOpen(ImGuiID storage_id,ImGuiTreeNodeFlags flags);
+CIMGUI_API const ImGuiDataTypeInfo* igDataTypeGetInfo(ImGuiDataType data_type);
+CIMGUI_API int igDataTypeFormatString(char* buf,int buf_size,ImGuiDataType data_type,const void* p_data,const char* format);
+CIMGUI_API void igDataTypeApplyOp(ImGuiDataType data_type,int op,void* output,const void* arg_1,const void* arg_2);
+CIMGUI_API bool igDataTypeApplyFromText(const char* buf,ImGuiDataType data_type,void* p_data,const char* format,void* p_data_when_empty);
+CIMGUI_API int igDataTypeCompare(ImGuiDataType data_type,const void* arg_1,const void* arg_2);
+CIMGUI_API bool igDataTypeClamp(ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max);
+CIMGUI_API bool igInputTextEx(const char* label,const char* hint,char* buf,int buf_size,const ImVec2 size_arg,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data);
+CIMGUI_API void igInputTextDeactivateHook(ImGuiID id);
+CIMGUI_API bool igTempInputText(const ImRect bb,ImGuiID id,const char* label,char* buf,int buf_size,ImGuiInputTextFlags flags);
+CIMGUI_API bool igTempInputScalar(const ImRect bb,ImGuiID id,const char* label,ImGuiDataType data_type,void* p_data,const char* format,const void* p_clamp_min,const void* p_clamp_max);
+CIMGUI_API bool igTempInputIsActive(ImGuiID id);
+CIMGUI_API ImGuiInputTextState* igGetInputTextState(ImGuiID id);
+CIMGUI_API void igSetNextItemRefVal(ImGuiDataType data_type,void* p_data);
+CIMGUI_API void igColorTooltip(const char* text,const float* col,ImGuiColorEditFlags flags);
+CIMGUI_API void igColorEditOptionsPopup(const float* col,ImGuiColorEditFlags flags);
+CIMGUI_API void igColorPickerOptionsPopup(const float* ref_col,ImGuiColorEditFlags flags);
+CIMGUI_API int igPlotEx(ImGuiPlotType plot_type,const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,const ImVec2 size_arg);
+CIMGUI_API void igShadeVertsLinearColorGradientKeepAlpha(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,ImVec2 gradient_p0,ImVec2 gradient_p1,ImU32 col0,ImU32 col1);
+CIMGUI_API void igShadeVertsLinearUV(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,bool clamp);
+CIMGUI_API void igShadeVertsTransformPos(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,const ImVec2 pivot_in,float cos_a,float sin_a,const ImVec2 pivot_out);
+CIMGUI_API void igGcCompactTransientMiscBuffers(void);
+CIMGUI_API void igGcCompactTransientWindowBuffers(ImGuiWindow* window);
+CIMGUI_API void igGcAwakeTransientWindowBuffers(ImGuiWindow* window);
+CIMGUI_API void igDebugAllocHook(ImGuiDebugAllocInfo* info,int frame_count,void* ptr,size_t size);
+CIMGUI_API void igErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback,void* user_data);
+CIMGUI_API void igErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback,void* user_data);
+CIMGUI_API void igErrorCheckUsingSetCursorPosToExtendParentBoundaries(void);
+CIMGUI_API void igDebugDrawCursorPos(ImU32 col);
+CIMGUI_API void igDebugDrawLineExtents(ImU32 col);
+CIMGUI_API void igDebugDrawItemRect(ImU32 col);
+CIMGUI_API void igDebugTextUnformattedWithLocateItem(const char* line_begin,const char* line_end);
+CIMGUI_API void igDebugLocateItem(ImGuiID target_id);
+CIMGUI_API void igDebugLocateItemOnHover(ImGuiID target_id);
+CIMGUI_API void igDebugLocateItemResolveWithLastItem(void);
+CIMGUI_API void igDebugBreakClearData(void);
+CIMGUI_API bool igDebugBreakButton(const char* label,const char* description_of_location);
+CIMGUI_API void igDebugBreakButtonTooltip(bool keyboard_only,const char* description_of_location);
+CIMGUI_API void igShowFontAtlas(ImFontAtlas* atlas);
+CIMGUI_API void igDebugHookIdInfo(ImGuiID id,ImGuiDataType data_type,const void* data_id,const void* data_id_end);
+CIMGUI_API void igDebugNodeColumns(ImGuiOldColumns* columns);
+CIMGUI_API void igDebugNodeDockNode(ImGuiDockNode* node,const char* label);
+CIMGUI_API void igDebugNodeDrawList(ImGuiWindow* window,ImGuiViewportP* viewport,const ImDrawList* draw_list,const char* label);
+CIMGUI_API void igDebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list,const ImDrawList* draw_list,const ImDrawCmd* draw_cmd,bool show_mesh,bool show_aabb);
+CIMGUI_API void igDebugNodeFont(ImFont* font);
+CIMGUI_API void igDebugNodeFontGlyph(ImFont* font,const ImFontGlyph* glyph);
+CIMGUI_API void igDebugNodeStorage(ImGuiStorage* storage,const char* label);
+CIMGUI_API void igDebugNodeTabBar(ImGuiTabBar* tab_bar,const char* label);
+CIMGUI_API void igDebugNodeTable(ImGuiTable* table);
+CIMGUI_API void igDebugNodeTableSettings(ImGuiTableSettings* settings);
+CIMGUI_API void igDebugNodeInputTextState(ImGuiInputTextState* state);
+CIMGUI_API void igDebugNodeTypingSelectState(ImGuiTypingSelectState* state);
+CIMGUI_API void igDebugNodeMultiSelectState(ImGuiMultiSelectState* state);
+CIMGUI_API void igDebugNodeWindow(ImGuiWindow* window,const char* label);
+CIMGUI_API void igDebugNodeWindowSettings(ImGuiWindowSettings* settings);
+CIMGUI_API void igDebugNodeWindowsList(ImVector_ImGuiWindowPtr* windows,const char* label);
+CIMGUI_API void igDebugNodeWindowsListByBeginStackParent(ImGuiWindow** windows,int windows_size,ImGuiWindow* parent_in_begin_stack);
+CIMGUI_API void igDebugNodeViewport(ImGuiViewportP* viewport);
+CIMGUI_API void igDebugNodePlatformMonitor(ImGuiPlatformMonitor* monitor,const char* label,int idx);
+CIMGUI_API void igDebugRenderKeyboardPreview(ImDrawList* draw_list);
+CIMGUI_API void igDebugRenderViewportThumbnail(ImDrawList* draw_list,ImGuiViewportP* viewport,const ImRect bb);
+CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype(void);
+CIMGUI_API void igImFontAtlasUpdateConfigDataPointers(ImFontAtlas* atlas);
+CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas);
+CIMGUI_API void igImFontAtlasBuildSetupFont(ImFontAtlas* atlas,ImFont* font,ImFontConfig* font_config,float ascent,float descent);
+CIMGUI_API void igImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas,void* stbrp_context_opaque);
+CIMGUI_API void igImFontAtlasBuildFinish(ImFontAtlas* atlas);
+CIMGUI_API void igImFontAtlasBuildRender8bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned char in_marker_pixel_value);
+CIMGUI_API void igImFontAtlasBuildRender32bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned int in_marker_pixel_value);
+CIMGUI_API void igImFontAtlasBuildMultiplyCalcLookupTable(unsigned char out_table[256],float in_multiply_factor);
+CIMGUI_API void igImFontAtlasBuildMultiplyRectAlpha8(const unsigned char table[256],unsigned char* pixels,int x,int y,int w,int h,int stride);
+
+
+/////////////////////////hand written functions
+//no LogTextV
+CIMGUI_API void igLogText(CONST char *fmt, ...);
+//no appendfV
+CIMGUI_API void ImGuiTextBuffer_appendf(struct ImGuiTextBuffer *buffer, const char *fmt, ...);
+//for getting FLT_MAX in bindings
+CIMGUI_API float igGET_FLT_MAX(void);
+//for getting FLT_MIN in bindings
+CIMGUI_API float igGET_FLT_MIN(void);
+
+
+CIMGUI_API ImVector_ImWchar* ImVector_ImWchar_create(void);
+CIMGUI_API void ImVector_ImWchar_destroy(ImVector_ImWchar* self);
+CIMGUI_API void ImVector_ImWchar_Init(ImVector_ImWchar* p);
+CIMGUI_API void ImVector_ImWchar_UnInit(ImVector_ImWchar* p);
+
+#ifdef IMGUI_HAS_DOCK
+CIMGUI_API void ImGuiPlatformIO_Set_Platform_GetWindowPos(ImGuiPlatformIO* platform_io, void(*user_callback)(ImGuiViewport* vp, ImVec2* out_pos));
+CIMGUI_API void ImGuiPlatformIO_Set_Platform_GetWindowSize(ImGuiPlatformIO* platform_io, void(*user_callback)(ImGuiViewport* vp, ImVec2* out_size));
+#endif
+
+#endif //CIMGUI_INCLUDED
+
+
+
+
diff --git a/vendor/cimgui/cimgui_impl.h b/vendor/cimgui/cimgui_impl.h
new file mode 100644
index 0000000..e9a834a
--- /dev/null
+++ b/vendor/cimgui/cimgui_impl.h
@@ -0,0 +1,73 @@
+// clang-format off
+
+#ifdef CIMGUI_USE_GLFW
+
+typedef struct GLFWwindow GLFWwindow;
+typedef struct GLFWmonitor GLFWmonitor;
+struct GLFWwindow;
+struct GLFWmonitor;CIMGUI_API bool ImGui_ImplGlfw_InitForOpenGL(GLFWwindow* window,bool install_callbacks);
+CIMGUI_API bool ImGui_ImplGlfw_InitForVulkan(GLFWwindow* window,bool install_callbacks);
+CIMGUI_API bool ImGui_ImplGlfw_InitForOther(GLFWwindow* window,bool install_callbacks);
+CIMGUI_API void ImGui_ImplGlfw_Shutdown(void);
+CIMGUI_API void ImGui_ImplGlfw_NewFrame(void);
+CIMGUI_API void ImGui_ImplGlfw_InstallCallbacks(GLFWwindow* window);
+CIMGUI_API void ImGui_ImplGlfw_RestoreCallbacks(GLFWwindow* window);
+CIMGUI_API void ImGui_ImplGlfw_SetCallbacksChainForAllWindows(bool chain_for_all_windows);
+CIMGUI_API void ImGui_ImplGlfw_WindowFocusCallback(GLFWwindow* window,int focused);
+CIMGUI_API void ImGui_ImplGlfw_CursorEnterCallback(GLFWwindow* window,int entered);
+CIMGUI_API void ImGui_ImplGlfw_CursorPosCallback(GLFWwindow* window,double x,double y);
+CIMGUI_API void ImGui_ImplGlfw_MouseButtonCallback(GLFWwindow* window,int button,int action,int mods);
+CIMGUI_API void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window,double xoffset,double yoffset);
+CIMGUI_API void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window,int key,int scancode,int action,int mods);
+CIMGUI_API void ImGui_ImplGlfw_CharCallback(GLFWwindow* window,unsigned int c);
+CIMGUI_API void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor* monitor,int event);
+CIMGUI_API void ImGui_ImplGlfw_Sleep(int milliseconds);
+
+#endif
+#ifdef CIMGUI_USE_OPENGL3
+CIMGUI_API bool ImGui_ImplOpenGL3_Init(const char* glsl_version);
+CIMGUI_API void ImGui_ImplOpenGL3_Shutdown(void);
+CIMGUI_API void ImGui_ImplOpenGL3_NewFrame(void);
+CIMGUI_API void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data);
+CIMGUI_API bool ImGui_ImplOpenGL3_CreateFontsTexture(void);
+CIMGUI_API void ImGui_ImplOpenGL3_DestroyFontsTexture(void);
+CIMGUI_API bool ImGui_ImplOpenGL3_CreateDeviceObjects(void);
+CIMGUI_API void ImGui_ImplOpenGL3_DestroyDeviceObjects(void);
+
+#endif
+#ifdef CIMGUI_USE_OPENGL2
+CIMGUI_API bool ImGui_ImplOpenGL2_Init(void);
+CIMGUI_API void ImGui_ImplOpenGL2_Shutdown(void);
+CIMGUI_API void ImGui_ImplOpenGL2_NewFrame(void);
+CIMGUI_API void ImGui_ImplOpenGL2_RenderDrawData(ImDrawData* draw_data);
+CIMGUI_API bool ImGui_ImplOpenGL2_CreateFontsTexture(void);
+CIMGUI_API void ImGui_ImplOpenGL2_DestroyFontsTexture(void);
+CIMGUI_API bool ImGui_ImplOpenGL2_CreateDeviceObjects(void);
+CIMGUI_API void ImGui_ImplOpenGL2_DestroyDeviceObjects(void);
+
+#endif
+#ifdef CIMGUI_USE_SDL2
+
+typedef struct SDL_Window SDL_Window;
+typedef struct SDL_Renderer SDL_Renderer;
+typedef struct _SDL_GameController _SDL_GameController;
+struct SDL_Window;
+struct SDL_Renderer;
+struct _SDL_GameController;
+typedef union SDL_Event SDL_Event;
+typedef enum { ImGui_ImplSDL2_GamepadMode_AutoFirst, ImGui_ImplSDL2_GamepadMode_AutoAll, ImGui_ImplSDL2_GamepadMode_Manual }ImGui_ImplSDL2_GamepadMode;CIMGUI_API bool ImGui_ImplSDL2_InitForOpenGL(SDL_Window* window,void* sdl_gl_context);
+CIMGUI_API bool ImGui_ImplSDL2_InitForVulkan(SDL_Window* window);
+CIMGUI_API bool ImGui_ImplSDL2_InitForD3D(SDL_Window* window);
+CIMGUI_API bool ImGui_ImplSDL2_InitForMetal(SDL_Window* window);
+CIMGUI_API bool ImGui_ImplSDL2_InitForSDLRenderer(SDL_Window* window,SDL_Renderer* renderer);
+CIMGUI_API bool ImGui_ImplSDLRenderer2_Init(SDL_Renderer* renderer);
+CIMGUI_API bool ImGui_ImplSDL2_InitForOther(SDL_Window* window);
+CIMGUI_API void ImGui_ImplSDL2_Shutdown(void);
+CIMGUI_API void ImGui_ImplSDLRenderer2_Shutdown(void);
+CIMGUI_API void ImGui_ImplSDLRenderer2_NewFrame(void);
+CIMGUI_API void ImGui_ImplSDL2_NewFrame(void);
+CIMGUI_API bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event);
+CIMGUI_API void ImGui_ImplSDLRenderer2_RenderDrawData(ImDrawData* draw_data, SDL_Renderer* renderer);
+CIMGUI_API void ImGui_ImplSDL2_SetGamepadMode(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array,int manual_gamepads_count);
+
+#endif