/*
* This file is part of the Pandaria 5.4.8 Project. See THANKS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/

/// \addtogroup u2w
/// @{
/// \file

#ifndef SF_OPCODES_H
#define SF_OPCODES_H

#include "Common.h"

#define MAX_OPCODE             0x1FFF
#define NUM_OPCODE_HANDLERS    0x7FFF
#define COMPRESSED_OPCODE_MASK 0x8000

/// List of Opcodes
enum Opcodes
{
    NULL_OPCODE,
    CMSG_ACCEPT_LEVEL_GRANT,
    CMSG_ACCEPT_TRADE,
    CMSG_ACTIVATE_TAXI,
    CMSG_ACTIVATE_TAXI_EXPRESS,
    CMSG_ADDON_REGISTERED_PREFIXES,
    CMSG_ADD_FRIEND,
    CMSG_ADD_IGNORE,
    CMSG_ADD_VOICE_IGNORE,
    CMSG_ALTER_APPEARANCE,
    CMSG_AREATRIGGER,
    CMSG_AREA_SPIRIT_HEALER_QUERY,
    CMSG_AREA_SPIRIT_HEALER_QUEUE,
    CMSG_ATTACKSTOP,
    CMSG_ATTACKSWING,
    CMSG_AUCTION_HELLO,
    CMSG_AUCTION_LIST_BIDDER_ITEMS,
    CMSG_AUCTION_LIST_ITEMS,
    CMSG_AUCTION_LIST_OWNER_ITEMS,
    CMSG_AUCTION_LIST_PENDING_SALES,
    CMSG_AUCTION_PLACE_BID,
    CMSG_AUCTION_REMOVE_ITEM,
    CMSG_AUCTION_SELL_ITEM,
    CMSG_AUTH_CONTINUED_SESSION,
    CMSG_AUTH_SESSION,
    CMSG_AUTOBANK_ITEM,
    CMSG_AUTOEQUIP_GROUND_ITEM,
    CMSG_AUTOEQUIP_ITEM,
    CMSG_AUTOEQUIP_ITEM_SLOT,
    CMSG_AUTOSTORE_BAG_ITEM,
    CMSG_AUTOSTORE_BANK_ITEM,
    CMSG_AUTOSTORE_GROUND_ITEM,
    CMSG_AUTOSTORE_LOOT_ITEM,
    CMSG_AUTO_DECLINE_GUILD_INVITES,
    CMSG_BANKER_ACTIVATE,
    CMSG_BATTLEFIELD_JOIN,
    CMSG_BATTLEFIELD_LEAVE,
    CMSG_BATTLEFIELD_LIST,
    CMSG_BATTLEFIELD_MGR_ENTRY_INVITE_RESPONSE,
    CMSG_BATTLEFIELD_MGR_EXIT_REQUEST,
    CMSG_BATTLEFIELD_MGR_QUEUE_INVITE_RESPONSE,
    CMSG_BATTLEFIELD_MGR_QUEUE_REQUEST,
    CMSG_BATTLEFIELD_PORT,
    CMSG_BATTLEFIELD_REQUEST_SCORE_DATA,
    CMSG_BATTLEFIELD_STATUS,
    CMSG_BATTLEMASTER_JOIN,
    CMSG_BATTLEMASTER_JOIN_ARENA,
    CMSG_BATTLEMASTER_JOIN_RATED,
    CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE,
    CMSG_BATTLE_PAY_CHAR_BOOST,
    CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE,
    CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET,
    CMSG_BATTLE_PAY_GET_PRODUCT_LIST,
    CMSG_BATTLE_PAY_GET_PURCHASE_LIST,
    CMSG_BATTLE_PAY_START_PURCHASE,
    CMSG_BATTLE_PAY_START_VAS_PURCHASE,
    CMSG_PET_BATTLE_START_PVP_MATCHMAKING,
    CMSG_PET_BATTLE_STOP_PVP_MATCHMAKING,
    CMSG_BATTLE_PET_DELETE_PET,
    CMSG_BATTLE_PET_LEARN,
    CMSG_BATTLE_PET_MODIFY_NAME,
    CMSG_BATTLE_PET_QUERY_NAME,
    CMSG_BATTLE_PET_REQUEST_JOURNAL,
    CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK,
    CMSG_BATTLE_PET_SET_BATTLE_SLOT,
    CMSG_BATTLE_PET_SET_FLAGS,
    CMSG_BATTLE_PET_SUMMON_COMPANION,
    CMSG_BATTLE_PET_UPDATE_NOTIFY,
    CMSG_BEGIN_TRADE,
    CMSG_BINDER_ACTIVATE,
    CMSG_BLACK_MARKET_OPEN,
    CMSG_BLACK_MARKET_BID_ON_ITEM,
    CMSG_BLACK_MARKET_REQUEST_ITEMS,
    CMSG_BOT_DETECTED2,
    CMSG_BUG,
    CMSG_BUSY_TRADE,
    CMSG_BUYBACK_ITEM,
    CMSG_BUY_BANK_SLOT,
    CMSG_BUY_ITEM,
    CMSG_CAGE_BATTLE_PET,
    CMSG_CALENDAR_ADD_EVENT,
    CMSG_CALENDAR_COMPLAIN,
    CMSG_CALENDAR_CONTEXT_EVENT_SIGNUP,
    CMSG_CALENDAR_COPY_EVENT,
    CMSG_CALENDAR_EVENT_INVITE,
    CMSG_CALENDAR_EVENT_MODERATOR_STATUS,
    CMSG_CALENDAR_EVENT_REMOVE_INVITE,
    CMSG_CALENDAR_EVENT_RSVP,
    CMSG_CALENDAR_EVENT_SIGNUP,
    CMSG_CALENDAR_EVENT_STATUS,
    CMSG_CALENDAR_GET_CALENDAR,
    CMSG_CALENDAR_GET_EVENT,
    CMSG_CALENDAR_GET_NUM_PENDING,
    CMSG_CALENDAR_GUILD_FILTER,
    CMSG_CALENDAR_REMOVE_EVENT,
    CMSG_CALENDAR_UPDATE_EVENT,
    CMSG_CANCEL_AURA,
    CMSG_CANCEL_AUTO_REPEAT_SPELL,
    CMSG_CANCEL_CAST,
    CMSG_CANCEL_CHANNELLING,
    CMSG_CANCEL_GROWTH_AURA,
    CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS,
    CMSG_CANCEL_MOUNT_AURA,
    CMSG_CANCEL_QUEUED_SPELL,
    CMSG_CANCEL_TEMP_ENCHANTMENT,
    CMSG_CANCEL_TRADE,
    CMSG_CAST_SPELL,
    CMSG_CHALLENGE_MODE_REQUEST_LEADERS,
    CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS,
    CMSG_CHALLANGES_INFO,
    CMSG_CHANGE_PLAYER_DIFFICULTY,
    CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE,
    CMSG_CHANNEL_ANNOUNCEMENTS,
    CMSG_CHANNEL_BAN,
    CMSG_CHANNEL_DISPLAY_LIST,
    CMSG_CHANNEL_INVITE,
    CMSG_CHANNEL_KICK,
    CMSG_CHANNEL_LIST,
    CMSG_CHANNEL_MODERATE,
    CMSG_CHANNEL_MODERATOR,
    CMSG_CHANNEL_MUTE,
    CMSG_CHANNEL_OWNER,
    CMSG_CHANNEL_PASSWORD,
    CMSG_CHANNEL_ROSTER_INFO,
    CMSG_CHANNEL_SET_OWNER,
    CMSG_CHANNEL_SILENCE_ALL,
    CMSG_CHANNEL_SILENCE_VOICE,
    CMSG_CHANNEL_UNBAN,
    CMSG_CHANNEL_UNMODERATOR,
    CMSG_CHANNEL_UNMUTE,
    CMSG_CHANNEL_UNSILENCE_ALL,
    CMSG_CHANNEL_UNSILENCE_VOICE,
    CMSG_CHANNEL_VOICE_OFF,
    CMSG_CHANNEL_VOICE_ON,
    CMSG_CHAR_CREATE,
    CMSG_CHAR_CUSTOMIZE,
    CMSG_CHAR_DELETE,
    CMSG_CHAR_ENUM, 
    CMSG_CHAR_FACTION_OR_RACE_CHANGE,
    CMSG_CHAR_RENAME,
    CMSG_CHAT_FILTERED,
    CMSG_CHAT_IGNORED,
    CMSG_CHOICE_RESPONSE,
    CMSG_CLICK_TO_MOVE,
    CMSG_CLEAR_CHANNEL_WATCH,
    CMSG_CLEAR_RAID_MARKER,
    CMSG_CLEAR_TRADE_ITEM,
    CMSG_CLOSE_BROWSER,
    CMSG_COMMENTATOR_ENABLE,
    CMSG_COMMENTATOR_ENTER_INSTANCE,
    CMSG_COMMENTATOR_EXIT_INSTANCE,
    CMSG_COMMENTATOR_GET_MAP_INFO,
    CMSG_COMMENTATOR_GET_PARTY_INFO,
    CMSG_COMMENTATOR_GET_PLAYER_INFO,
    CMSG_COMMENTATOR_INSTANCE_COMMAND,
    CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND,
    CMSG_COMMENTATOR_START_WARGAME,
    CMSG_COMPLAIN,
    CMSG_COMPLETE_CINEMATIC,
    CMSG_COMPLETE_MOVIE,
    CMSG_CONFIRM_RESPEC_WIPE,
    CMSG_CONNECT_TO_FAILED,
    CMSG_CONTACT_LIST,
    CMSG_CORPSE_MAP_POSITION_QUERY,
    CMSG_CORPSE_QUERY,
    CMSG_CREATURE_QUERY,
    CMSG_DECLINE_CHANNEL_INVITE,
    CMSG_DEL_FRIEND,
    CMSG_DEL_IGNORE,
    CMSG_DEL_VOICE_IGNORE,
    CMSG_DESTROY_ITEM,
    CMSG_DISCARDED_TIME_SYNC_ACKS,
    CMSG_DISMISS_CONTROLLED_VEHICLE,
    CMSG_DISMISS_CRITTER,
    CMSG_DUEL_RESPONSE,
    CMSG_DUEL_PROPOSED,
    CMSG_EJECT_PASSENGER,
    CMSG_EMOTE,
    CMSG_ENABLE_TAXI,
    CMSG_ENABLE_NAGLE,
    CMSG_EQUIPMENT_SET_DELETE,
    CMSG_EQUIPMENT_SET_SAVE,
    CMSG_EQUIPMENT_SET_USE,
    CMSG_FAR_SIGHT,
    CMSG_FORCE_MOVE_ROOT_ACK,
    CMSG_FORCE_MOVE_UNROOT_ACK,
    CMSG_GAMEOBJECT_QUERY,
    CMSG_GAMEOBJ_REPORT_USE,
    CMSG_GAMEOBJ_USE,
    CMSG_GAMESPEED_SET,
    CMSG_GAMETIME_SET,
    CMSG_GETDEATHBINDZONE,
    CMSG_GET_CHALLENGE_MODE_REWARDS,
    CMSG_GET_MAIL_LIST,
    CMSG_GET_MIRROR_IMAGE_DATA,
    CMSG_GHOST,
    CMSG_GMRESPONSE_RESOLVE,
    CMSG_GMSURVEY_SUBMIT,
    CMSG_GM_TICKET_CREATE,
    CMSG_GM_TICKET_DELETE_TICKET,
    CMSG_GM_TICKET_GET_TICKET,
    CMSG_GM_TICKET_SYSTEM_STATUS,
    CMSG_GM_TICKET_CASE_STATUS,
    CMSG_GM_TICKET_UPDATE_TEXT,
    CMSG_GM_INVIS,
    CMSG_GM_NUKE,
    CMSG_GM_REPORT_LAG,
    CMSG_GM_SET_SECURITY_GROUP,
    CMSG_GOSSIP_HELLO,
    CMSG_GOSSIP_SELECT_OPTION,
    CMSG_GRANT_LEVEL,
    CMSG_GROUP_ASSISTANT_LEADER,
    CMSG_GROUP_CANCEL,
    CMSG_GROUP_CHANGE_SUB_GROUP,
    CMSG_GROUP_DISBAND,
    CMSG_GROUP_INVITE,
    CMSG_GROUP_INVITE_RESPONSE,
    CMSG_GROUP_RAID_CONVERT,
    CMSG_GROUP_REQUEST_JOIN_UPDATES,
    CMSG_GROUP_SET_LEADER,
    CMSG_GROUP_SET_ROLES,
    CMSG_GROUP_SWAP_SUB_GROUP,
    CMSG_GROUP_UNINVITE,
    CMSG_GROUP_UNINVITE_GUID,
    CMSG_GUILD_ACCEPT,
    CMSG_GUILD_ACHIEVEMENT_MEMBERS,
    CMSG_GUILD_ACHIEVEMENT_PROGRESS_QUERY,
    CMSG_GUILD_ADD_RANK,
    CMSG_GUILD_ASSIGN_MEMBER_RANK,
    CMSG_GUILD_BANKER_ACTIVATE,
    CMSG_GUILD_BANK_BUY_TAB,
    CMSG_GUILD_BANK_DEPOSIT_MONEY,
    CMSG_GUILD_BANK_LOG_QUERY,
    CMSG_GUILD_BANK_MONEY_WITHDRAWN_QUERY,
    CMSG_GUILD_BANK_NOTE,
    CMSG_GUILD_BANK_QUERY_TAB,
    CMSG_GUILD_BANK_QUERY_TEXT,
    CMSG_GUILD_BANK_SWAP_ITEMS,
    CMSG_GUILD_BANK_UPDATE_TAB,
    CMSG_GUILD_BANK_WITHDRAW_MONEY,
    CMSG_GUILD_CHANGE_NAME_REQUEST,
    CMSG_GUILD_DECLINE,
    CMSG_GUILD_DEL_RANK,
    CMSG_GUILD_DEMOTE,
    CMSG_GUILD_DISBAND,
    CMSG_GUILD_EVENT_LOG_QUERY,
    CMSG_GUILD_INFO,
    CMSG_GUILD_INFO_TEXT,
    CMSG_GUILD_INVITE,
    CMSG_GUILD_LEAVE,
    CMSG_GUILD_MEMBER_SEND_SOR_REQUEST,
    CMSG_GUILD_MOTD,
    CMSG_GUILD_NEWS_UPDATE_STICKY,
    CMSG_GUILD_PERMISSIONS,
    CMSG_GUILD_PROMOTE,
    CMSG_GUILD_QUERY,
    CMSG_GUILD_QUERY_NEWS,
    CMSG_GUILD_QUERY_RANKS,
    CMSG_GUILD_REMOVE,
    CMSG_GUILD_REPLACE_GUILD_MASTER,
    CMSG_GUILD_REQUEST_CHALLENGE_UPDATE,
    CMSG_GUILD_REQUEST_MAX_DAILY_XP,
    CMSG_GUILD_REQUEST_PARTY_STATE,
    CMSG_GUILD_ROSTER,
    CMSG_GUILD_SET_ACHIEVEMENT_TRACKING,
    CMSG_GUILD_SET_GUILD_MASTER,
    CMSG_GUILD_SET_NOTE,
    CMSG_GUILD_SET_RANK_PERMISSIONS,
    CMSG_GUILD_SWITCH_RANK,
    CMSG_HEARTH_AND_RESURRECT,
    CMSG_IGNORE_TRADE,
    CMSG_INITIATE_TRADE,
    CMSG_INSPECT,
    CMSG_INSPECT_HONOR_STATS,
    CMSG_INSTANCE_LOCK_WARNING_RESPONSE,
    CMSG_ITEM_REFUND,
    CMSG_ITEM_REFUND_INFO,
    CMSG_ITEM_TEXT_QUERY,
    CMSG_JOIN_CHANNEL,
    CMSG_JOIN_PET_BATTLE_QUEUE,
    CMSG_KEEP_ALIVE,
    CMSG_KEYBOUND_OVERRIDE,
    CMSG_LEARN_PREVIEW_TALENTS,
    CMSG_LEARN_PREVIEW_TALENTS_PET,
    CMSG_LEARN_TALENT,
    CMSG_LEARN_PET_SPECIALIZATION_GROUP,
    CMSG_LEAVE_CHANNEL,
    CMSG_LEAVE_PET_BATTLE_QUEUE,
    CMSG_LFG_GET_STATUS,
    CMSG_LFG_JOIN,
    CMSG_LFG_LEAVE,
    CMSG_LFG_LFR_JOIN,
    CMSG_LFG_LFR_LEAVE,
    CMSG_LFG_LOCK_INFO_REQUEST,
    CMSG_LFG_PROPOSAL_RESULT,
    CMSG_LFG_SET_BOOT_VOTE,
    CMSG_LFG_SET_COMMENT,
    CMSG_LFG_SET_ROLES,
    CMSG_LFG_TELEPORT,
    CMSG_LF_GUILD_ADD_APPLICATION,
    CMSG_LF_GUILD_BROWSE,
    CMSG_LF_GUILD_DECLINE_RECRUIT,
    CMSG_LF_GUILD_GET_APPLICATIONS,
    CMSG_LF_GUILD_GET_RECRUITS,
    CMSG_LF_GUILD_POST_REQUEST,
    CMSG_LF_GUILD_REMOVE_APPLICATION,
    CMSG_LF_GUILD_SET_GUILD_POST,
    CMSG_LIST_INVENTORY,
    CMSG_LOAD_SCREEN,
    CMSG_LOGOUT_CANCEL,
    CMSG_LOGOUT_REQUEST,
    CMSG_LOG_DISCONNECT,
    CMSG_LOG_STREAMING_ERROR,
    CMSG_LOOT,
    CMSG_LOOT_MASTER_GIVE,
    CMSG_LOOT_METHOD,
    CMSG_LOOT_MONEY,
    CMSG_LOOT_RELEASE,
    CMSG_LOOT_ROLL,
    CMSG_MAIL_CREATE_TEXT_ITEM,
    CMSG_MAIL_DELETE,
    CMSG_MAIL_MARK_AS_READ,
    CMSG_MAIL_QUERY_NEXT_TIME,
    CMSG_MAIL_RETURN_TO_SENDER,
    CMSG_MAIL_TAKE_ITEM,
    CMSG_MAIL_TAKE_MONEY,
    CMSG_MEETINGSTONE_INFO,
    CMSG_MESSAGECHAT_ADDON_GUILD,
    CMSG_MESSAGECHAT_ADDON_INSTANCE_CHAT,
    CMSG_MESSAGECHAT_ADDON_OFFICER,
    CMSG_MESSAGECHAT_ADDON_PARTY,
    CMSG_MESSAGECHAT_ADDON_RAID,
    CMSG_MESSAGECHAT_ADDON_WHISPER,
    CMSG_MESSAGECHAT_AFK,
    CMSG_MESSAGECHAT_BATTLEGROUND,
    CMSG_MESSAGECHAT_CHANNEL,
    CMSG_MESSAGECHAT_DND,
    CMSG_MESSAGECHAT_EMOTE,
    CMSG_MESSAGECHAT_GUILD,
    CMSG_MESSAGECHAT_INSTANCE,
    CMSG_MESSAGECHAT_OFFICER,
    CMSG_MESSAGECHAT_PARTY,
    CMSG_MESSAGECHAT_RAID,
    CMSG_MESSAGECHAT_RAID_WARNING,
    CMSG_MESSAGECHAT_SAY,
    CMSG_MESSAGECHAT_WHISPER,
    CMSG_MESSAGECHAT_YELL,
    CMSG_MINIGAME_MOVE,
    CMSG_MINIMAP_PING,
    CMSG_MISSILE_TRAJECTORY_COLLISION,
    CMSG_MOUNTSPECIAL_ANIM,
    CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK,
    CMSG_MOVE_CHARM_TELEPORT_CHEAT,
    CMSG_MOVE_CHNG_TRANSPORT,
    CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK,
    CMSG_MOVE_FALL_RESET,
    CMSG_MOVE_FEATHER_FALL_ACK,
    CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK,
    CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK,
    CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK,
    CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK,
    CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK,
    CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK,
    CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK,
    CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK,
    CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK,
    CMSG_MOVE_GRAVITY_DISABLE_ACK,
    CMSG_MOVE_GRAVITY_ENABLE_ACK,
    CMSG_MOVE_HOVER_ACK,
    CMSG_MOVE_KNOCK_BACK_ACK,
    CMSG_MOVE_NOT_ACTIVE_MOVER,
    CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK,
    CMSG_MOVE_SET_CAN_FLY,
    CMSG_MOVE_SET_CAN_FLY_ACK,
    CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK,
    CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK,
    CMSG_MOVE_SET_COLLISION_HEIGHT_ACK,
    CMSG_MOVE_SET_FLY,
    CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK,
    CMSG_MOVE_SET_RELATIVE_POSITION,
    CMSG_MOVE_SET_VEHICLE_REC_ID_ACK,
    CMSG_MOVE_SPLINE_DONE,
    CMSG_MOVE_TELEPORT_ACK,
    CMSG_MOVE_TIME_SKIPPED,
    CMSG_MOVE_TOGGLE_COLLISION_ACK,
    CMSG_MOVE_WATER_WALK_ACK,
    CMSG_NAME_QUERY,
    CMSG_NEW_SPELL_SLOT,
    CMSG_NEXT_CINEMATIC_CAMERA,
    CMSG_NPC_TEXT_QUERY,
    CMSG_OBJECT_UPDATE_FAILED,
    CMSG_OBJECT_UPDATE_RESCUED,
    CMSG_OFFER_PETITION,
    CMSG_OPENING_CINEMATIC,
    CMSG_OPEN_BROWSER,
    CMSG_OPEN_ITEM,
    CMSG_OPT_OUT_OF_LOOT,
    CMSG_PAGE_TEXT_QUERY,
    CMSG_PARTY_SILENCE,
    CMSG_PARTY_UNSILENCE,
    CMSG_PETITION_BUY,
    CMSG_PETITION_DECLINE,
    CMSG_PETITION_RENAME,
    CMSG_PETITION_QUERY,
    CMSG_PETITION_SHOWLIST,
    CMSG_PETITION_SHOW_SIGNATURES,
    CMSG_PETITION_SIGN,
    CMSG_PET_ABANDON,
    CMSG_PET_ACTION,
    CMSG_PET_BATTLE_FINAL_NOTIFY,
    CMSG_PET_BATTLE_INPUT,
    CMSG_PET_BATTLE_SET_FRONT_PET,
    CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT,
    CMSG_PET_BATTLE_QUIT_NOTIFY,
    CMSG_PET_BATTLE_REQUEST_PVP,
    CMSG_PET_BATTLE_REQUEST_UPDATE,
    CMSG_PET_BATTLE_REQUEST_WILD,
    CMSG_PET_BATTLE_QUEUE_JOIN,
    CMSG_PET_BATTLE_QUEUE_LEAVE,
    CMSG_PET_CANCEL_AURA,
    CMSG_PET_CAST_SPELL,
    CMSG_PET_LEARN_TALENT,
    CMSG_LIST_PETS,
    CMSG_PET_NAME_CACHE,
    CMSG_PET_NAME_QUERY,
    CMSG_PET_RENAME,
    CMSG_PET_SET_ACTION,
    CMSG_PET_SPELL_AUTOCAST,
    CMSG_PET_STOP_ATTACK,
    CMSG_PING,
    CMSG_PLAYED_TIME,
    CMSG_PLAYER_LOGIN,
    CMSG_PLAYER_LOGOUT,
    CMSG_PLAYER_VEHICLE_ENTER,
    CMSG_PUSHQUESTTOPARTY,
    CMSG_PVP_LOG_DATA,
    CMSG_QUERY_BATTLEFIELD_STATE,
    CMSG_QUERY_COUNTDOWN_TIMER,
    CMSG_QUERY_GUILD_MEMBERS_FOR_RECIPE,
    CMSG_QUERY_GUILD_MEMBER_RECIPES,
    CMSG_QUERY_GUILD_RECIPES,
    CMSG_QUERY_GUILD_REWARDS,
    CMSG_QUERY_GUILD_XP,
    CMSG_QUERY_INSPECT_ACHIEVEMENTS,
    CMSG_QUERY_SCENARIO_POI,
    CMSG_QUERY_TIME,
    CMSG_QUESTGIVER_ACCEPT_QUEST,
    CMSG_QUESTGIVER_CANCEL,
    CMSG_QUESTGIVER_CHOOSE_REWARD,
    CMSG_QUESTGIVER_COMPLETE_QUEST,
    CMSG_QUESTGIVER_HELLO,
    CMSG_QUESTGIVER_QUERY_QUEST,
    CMSG_QUESTGIVER_QUEST_AUTOLAUNCH,
    CMSG_QUESTGIVER_REQUEST_REWARD,
    CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY,
    CMSG_QUESTGIVER_STATUS_QUERY,
    CMSG_QUESTLOG_REMOVE_QUEST,
    CMSG_QUESTLOG_SWAP_QUEST,
    CMSG_QUEST_CONFIRM_ACCEPT,
    CMSG_QUEST_NPC_QUERY,
    CMSG_QUEST_POI_QUERY,
    CMSG_QUEST_PUSH_RESULT,
    CMSG_QUEST_QUERY,
    CMSG_QUEUED_MESSAGES_END,
    CMSG_RAID_READY_CHECK,
    CMSG_RAID_READY_CHECK_CONFIRM,
    CMSG_RAID_TARGET_UPDATE,
    CMSG_RANDOM_ROLL,
    CMSG_RANDOMIZE_CHAR_NAME,
    CMSG_READY_FOR_ACCOUNT_DATA_TIMES,
    CMSG_READ_ITEM,
    CMSG_REALM_SPLIT,
    CMSG_REALM_NAME_QUERY,
    CMSG_RECLAIM_CORPSE,
    CMSG_REDIRECTION_AUTH_PROOF,
    CMSG_REFORGE_ITEM,
    CMSG_REORDER_CHARACTERS,
    CMSG_REPAIR_ITEM,
    CMSG_REPLACE_ACCOUNT_DATA,
    CMSG_REPOP_REQUEST,
    CMSG_REPORT_PVP_AFK,
    CMSG_REQUEST_ACCOUNT_DATA,
    CMSG_REQUEST_CATEGORY_COOLDOWNS,
    CMSG_REQUEST_CEMETERY_LIST,
    CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS,
    CMSG_REQUEST_FORCED_REACTIONS,
    CMSG_REQUEST_HOTFIX,
    CMSG_REQUEST_INSPECT_RATED_BG_STATS,
    CMSG_REQUEST_PARTY_MEMBER_STATS,
    CMSG_REQUEST_PET_INFO,
    CMSG_REQUEST_PVP_OPTIONS_ENABLED,
    CMSG_REQUEST_PVP_REWARDS,
    CMSG_REQUEST_RAID_INFO,
    CMSG_REQUEST_RATED_BG_INFO,
    CMSG_REQUEST_RATED_BG_STATS,
    CMSG_REQUEST_RESEARCH_HISTORY,
    CMSG_REQUEST_VEHICLE_EXIT,
    CMSG_REQUEST_VEHICLE_NEXT_SEAT,
    CMSG_REQUEST_VEHICLE_PREV_SEAT,
    CMSG_REQUEST_VEHICLE_SWITCH_SEAT,
    CMSG_RESET_CHALLENGE_MODE,
    CMSG_RESET_FACTION_CHEAT,
    CMSG_RESET_INSTANCES,
    CMSG_RESURRECT_RESPONSE,
    CMSG_RETURN_TO_GRAVEYARD,
    CMSG_ROLE_POLL_BEGIN,
    CMSG_SAVE_CUF_PROFILES,
    CMSG_SAVE_GUILD_EMBLEM,
    CMSG_SAVE_PLAYER,
    CMSG_SCENE_PLAYBACK_CANCELED,
    CMSG_SCENE_PLAYBACK_COMPLETE,
    CMSG_SCENE_TRIGGER_EVENT,
    CMSG_SEARCH_LFG_JOIN,
    CMSG_SEARCH_LFG_LEAVE,
    CMSG_SELECT_LOOT_SPEC,
    CMSG_SELF_RES,
    CMSG_SELECT_FACTION,
    CMSG_SELL_ITEM,
    CMSG_SEND_MAIL,
    CMSG_SEND_SOR_REQUEST_VIA_ADDRESS,
    CMSG_SEND_SOR_REQUEST_VIA_BNET_ACCOUNT_ID,
    CMSG_SERVERTIME,
    CMSG_SETDEATHBINDPOINT,
    CMSG_SETSHEATHED,
    CMSG_SET_ACHIEVEMENTS_HIDDEN,
    CMSG_SET_ACTIONBAR_TOGGLES,
    CMSG_SET_ACTION_BUTTON,
    CMSG_SET_ACTIVE_MOVER,
    CMSG_SET_ACTIVE_VOICE_CHANNEL,
    CMSG_SET_ADVANCED_COMBAT_LOGGING,
    CMSG_SET_ALLOW_LOW_LEVEL_RAID1,
    CMSG_SET_ALLOW_LOW_LEVEL_RAID2,
    CMSG_SET_CHANNEL_WATCH,
    CMSG_SET_CONTACT_NOTES,
    CMSG_SET_CURRENCY_FLAGS,
    CMSG_SET_DUNGEON_DIFFICULTY,
    CMSG_SET_EVERYONE_IS_ASSISTANT,
    CMSG_SET_FACTION_ATWAR,
    CMSG_SET_FACTION_CHEAT,
    CMSG_SET_FACTION_INACTIVE,
    CMSG_SET_FACTION_NOTATWAR,
    CMSG_SET_GUILD_BANK_TEXT,
    CMSG_SET_LFG_BONUS_FACTION_ID,
    CMSG_SET_LFG_COMMENT,
    CMSG_SET_LOOT_SPECIALIZATION,
    CMSG_SET_PET_SLOT,
    CMSG_SET_PLAYER_DECLINED_NAMES,
    CMSG_SET_PREFERED_CEMETERY,
    CMSG_SET_PRIMARY_TALENT_TREE,
    CMSG_SET_PVP,
    CMSG_SET_RELATIVE_POSITION,
    CMSG_SET_RAID_DIFFICULTY,
    CMSG_SET_SAVED_INSTANCE_EXTEND,
    CMSG_SET_SELECTION,
    CMSG_SET_SKILL_CHEAT,
    CMSG_SET_TAXI_BENCHMARK_MODE,
    CMSG_SET_TITLE,
    CMSG_SET_TRADE_CURRENCY,
    CMSG_SET_TRADE_GOLD,
    CMSG_SET_TRADE_ITEM,
    CMSG_SET_VEHICLE_REC_ID_ACK,
    CMSG_SET_WATCHED_FACTION,
    CMSG_SHOP_CATEGORY,
    CMSG_SHOWING_CLOAK,
    CMSG_SHOWING_HELM,
    CMSG_SHOW_TRADE_SKILL,
    CMSG_SOCKET_GEMS,
    CMSG_SPELLCLICK,
    CMSG_SPIRIT_HEALER_ACTIVATE,
    CMSG_SPLIT_ITEM,
    CMSG_STANDSTATECHANGE,
    CMSG_START_QUEST,
    CMSG_STORE_LOOT_IN_SLOT,
    CMSG_SUBMIT_BUG,
    CMSG_SUBMIT_COMPLAIN,
    CMSG_SUGGESTION_SUBMIT,
    CMSG_SUMMON_RESPONSE,
    CMSG_SUSPEND_TOKEN_RESPONSE,
    CMSG_SWAP_INV_ITEM,
    CMSG_SWAP_ITEM,
    CMSG_TABARD_VENDOR_ACTIVATE,
    CMSG_TAXI_NODE_STATUS_QUERY,
    CMSG_TAXI_QUERY_AVAILABLE_NODES,
    CMSG_TELEPORT_TO_UNIT,
    CMSG_TEXT_EMOTE,
    CMSG_TIME_ADJUSTMENT_RESPONSE,
    CMSG_TIME_SYNC_RESP,
    CMSG_TIME_SYNC_RESPONSE_DROPPED,
    CMSG_TIME_SYNC_RESP_FAILED,
    CMSG_TOGGLE_PVP,
    CMSG_TOTEM_DESTROYED,
    CMSG_TRAINER_BUY_SPELL,
    CMSG_TRAINER_LIST,
    CMSG_TRANSMOGRIFY_ITEMS,
    CMSG_TRIGGER_CINEMATIC_CHEAT,
    CMSG_TURN_IN_PETITION,
    CMSG_TUTORIAL_CLEAR,
    CMSG_TUTORIAL_FLAG,
    CMSG_TUTORIAL_RESET,
    CMSG_UNACCEPT_TRADE,
    CMSG_UNLEARN_SKILL,
    CMSG_UNLEARN_SPECIALIZATION,
    CMSG_UNREGISTER_ALL_ADDON_PREFIXES,
    CMSG_UPDATE_ACCOUNT_DATA,
    CMSG_UPDATE_CLIENT_SETTINGS,
    CMSG_UPDATE_MISSILE_TRAJECTORY,
    CMSG_UPGRADE_ITEM,
    CMSG_USED_FOLLOW,
    CMSG_USE_ITEM,
    CMSG_VIOLENCE_LEVEL,
    CMSG_VOICE_SESSION_ENABLE,
    CMSG_VOID_STORAGE_QUERY,
    CMSG_VOID_STORAGE_TRANSFER,
    CMSG_VOID_STORAGE_UNLOCK,
    CMSG_VOID_SWAP_ITEM,
    CMSG_WARDEN_DATA,
    CMSG_WARGAME_ACCEPT,
    CMSG_WARGAME_START,
    CMSG_WHO,
    CMSG_WHOIS,
    CMSG_WORLD_STATE_UI_TIMER_UPDATE,
    CMSG_WORLD_TELEPORT,
    CMSG_WRAP_ITEM,
    CMSG_ZONEUPDATE,
    MSG_GM_BIND_OTHER,
    MSG_GM_SHOWLABEL,
    MSG_GM_SUMMON,
    MSG_MOVE_CHARM_TELEPORT_CHEAT,
    MSG_MOVE_FALL_LAND,
    MSG_MOVE_HEARTBEAT,
    MSG_MOVE_JUMP,
    MSG_MOVE_SET_ALL_SPEED_CHEAT,
    MSG_MOVE_SET_COLLISION_HEIGHT,
    MSG_MOVE_SET_FACING,
    MSG_MOVE_SET_FLIGHT_SPEED_CHEAT,
    MSG_MOVE_SET_PITCH,
    MSG_MOVE_SET_RAW_POSITION_ACK,
    MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT,
    MSG_MOVE_SET_RUN_MODE,
    MSG_MOVE_SET_RUN_SPEED_CHEAT,
    MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT,
    MSG_MOVE_SET_SWIM_SPEED_CHEAT,
    MSG_MOVE_SET_TURN_RATE_CHEAT,
    MSG_MOVE_SET_WALK_MODE,
    MSG_MOVE_SET_WALK_SPEED_CHEAT,
    MSG_MOVE_START_ASCEND,
    MSG_MOVE_START_BACKWARD,
    MSG_MOVE_START_DESCEND,
    MSG_MOVE_START_FORWARD,
    MSG_MOVE_START_PITCH_DOWN,
    MSG_MOVE_START_PITCH_UP,
    MSG_MOVE_START_STRAFE_LEFT,
    MSG_MOVE_START_STRAFE_RIGHT,
    MSG_MOVE_START_SWIM,
    MSG_MOVE_START_TURN_LEFT,
    MSG_MOVE_START_TURN_RIGHT,
    MSG_MOVE_STOP,
    MSG_MOVE_STOP_ASCEND,
    MSG_MOVE_STOP_PITCH,
    MSG_MOVE_STOP_STRAFE,
    MSG_MOVE_STOP_SWIM,
    MSG_MOVE_STOP_TURN,
    MSG_MOVE_TELEPORT_CHEAT,
    MSG_MOVE_TIME_SKIPPED,
    MSG_MOVE_TOGGLE_COLLISION_CHEAT,
    MSG_MOVE_TOGGLE_FALL_LOGGING,
    MSG_MOVE_TOGGLE_LOGGING,
    MSG_MOVE_UPDATE_MOUSE,
    MSG_MOVE_WORLDPORT_ACK,
    MSG_NOTIFY_PARTY_SQUELCH,
    MSG_PARTY_ASSIGNMENT,
    MSG_PVP_LOG_DATA,
    MSG_RAID_READY_CHECK_FINISHED,
    MSG_START_MOVE_FORWARD,
    MSG_VERIFY_CONNECTIVITY,
    SMSG_ACCOUNT_CRITERIA_UPDATE,
    SMSG_ACCOUNT_CRITERIA_UPDATE_ALL,
    SMSG_ACCOUNT_DATA_TIMES,
    SMSG_ACCOUNT_INFO_RESPONSE,
    SMSG_ACCOUNT_RESTRICTED_WARNING,
    SMSG_ACHIEVEMENT_DELETED,
    SMSG_ACHIEVEMENT_EARNED,
    SMSG_ACTION_BUTTONS,
    SMSG_ACTIVATE_TAXI_REPLY,
    SMSG_ADDON_INFO,
    SMSG_ADD_LOSS_OF_CONTROL,
    SMSG_ADD_RUNE_POWER,
    SMSG_AE_LOOT_TARGETS,
    SMSG_AE_LOOT_TARGET_ACK,
    SMSG_AI_REACTION,
    SMSG_ALL_ACHIEVEMENT_DATA,
    SMSG_ARCHAEOLOGY_SURVERY_CAST,
    SMSG_AREA_SPIRIT_HEALER_TIME,
    SMSG_AREA_TRIGGER_DENIED,
    SMSG_AREA_TRIGGER_MOVEMENT_UPDATE,
    SMSG_ARENA_ERROR,
    SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS,
    SMSG_ARENA_UNIT_DESTROYED,
    SMSG_ATTACKERSTATEUPDATE,
    SMSG_ATTACKSTART,
    SMSG_ATTACKSTOP,
    SMSG_ATTACK_SWING_ERROR,
    SMSG_ATTACK_SWING_LANDED_LOG,
    SMSG_AUCTION_HELLO,
    SMSG_AUCTION_BIDDER_LIST_RESULT,
    SMSG_AUCTION_BIDDER_NOTIFICATION,
    SMSG_AUCTION_COMMAND_RESULT,
    SMSG_AUCTION_LIST_PENDING_SALES,
    SMSG_AUCTION_LIST_RESULT,
    SMSG_AUCTION_OWNER_LIST_RESULT,
    SMSG_AUCTION_OWNER_NOTIFICATION,
    SMSG_AUCTION_REMOVED_NOTIFICATION,
    SMSG_AURACASTLOG,
    SMSG_AURA_POINTS_DEPLETED,
    SMSG_AURA_UPDATE,
    SMSG_AUTH_CHALLENGE,
    SMSG_AUTH_RESPONSE,
    SMSG_AVAILABLE_VOICE_CHANNEL,
    SMSG_AVERAGE_ITEM_LEVEL_INFORM,
    SMSG_BARBER_SHOP_RESULT,
    SMSG_BATTLEFIELD_LIST,
    SMSG_BATTLEFIELD_MGR_EJECTED,
    SMSG_BATTLEFIELD_MGR_EJECT_PENDING,
    SMSG_BATTLEFIELD_MGR_ENTERED,
    SMSG_BATTLEFIELD_MGR_ENTRY_INVITE,
    SMSG_BATTLEFIELD_MGR_EXIT_REQUEST,
    SMSG_BATTLEFIELD_MGR_QUEUE_INVITE,
    SMSG_BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE,
    SMSG_BATTLEFIELD_MGR_STATE_CHANGE,
    SMSG_BATTLEFIELD_PORT_DENIED,
    SMSG_BATTLEFIELD_RATED_INFO,
    SMSG_BATTLEFIELD_STATUS,
    SMSG_BATTLEFIELD_STATUS_QUEUED,
    SMSG_BATTLEFIELD_STATUS_ACTIVE,
    SMSG_BATTLEFIELD_STATUS_NEEDCONFIRMATION,
    SMSG_BATTLEFIELD_STATUS_WAITFORGROUPS,
    SMSG_BATTLEFIELD_STATUS_FAILED,
    SMSG_BATTLEGROUND_INFO_THROTTLED,
    SMSG_BATTLEGROUND_PLAYER_JOINED,
    SMSG_BATTLEGROUND_PLAYER_LEFT,
    SMSG_BATTLEGROUND_PLAYER_POSITIONS,
    SMSG_BATTLE_PAY_ACK_FAILED,
    SMSG_BATTLE_PAY_CONFIRM_PURCHASE,
    SMSG_BATTLE_PAY_DELIVERY_ENDED,
    SMSG_BATTLE_PAY_DELIVERY_STARTED,
    SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE,
    SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE,
    SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE,
    SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE,
    SMSG_BATTLE_PAY_PURCHASE_UPDATE,
    SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE,
    SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE,
    SMSG_BATTLE_PET_DELETED,
    SMSG_BATTLE_PET_JOURNAL,
    SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED,
    SMSG_BATTLE_PET_JOURNAL_LOCK_DENINED,
    SMSG_BATTLE_PET_QUERY_NAME_RESPONSE,
    SMSG_BATTLE_PET_SLOT_UPDATE,
    SMSG_BATTLE_PET_UPDATE,
    SMSG_BINDER_CONFIRM,
    SMSG_BINDPOINTUPDATE,
    SMSG_BINDZONEREPLY,
    SMSG_BLACK_MARKET_OPEN_RESULT,
    SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT,
    SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT,
    SMSG_BLACK_MARKET_OUTBID,
    SMSG_BLACK_MARKET_WON,
    SMSG_BREAK_TARGET,
    SMSG_BUY_FAILED,
    SMSG_BUY_ITEM,
    SMSG_CALENDAR_ACTION_PENDING,
    SMSG_CALENDAR_CLEAR_PENDING_ACTION,
    SMSG_CALENDAR_COMMAND_RESULT,
    SMSG_CALENDAR_EVENT_INITIAL_INVITE,
    SMSG_CALENDAR_EVENT_INVITE,
    SMSG_CALENDAR_EVENT_INVITE_ALERT,
    SMSG_CALENDAR_EVENT_INVITE_NOTES,
    SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT,
    SMSG_CALENDAR_EVENT_INVITE_REMOVED,
    SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT,
    SMSG_CALENDAR_EVENT_INVITE_STATUS,
    SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT,
    SMSG_CALENDAR_EVENT_MODERATOR_STATUS,
    SMSG_CALENDAR_EVENT_REMOVED_ALERT,
    SMSG_CALENDAR_EVENT_UPDATED_ALERT,
    SMSG_CALENDAR_RAID_LOCKOUT_ADDED,
    SMSG_CALENDAR_RAID_LOCKOUT_REMOVED,
    SMSG_CALENDAR_RAID_LOCKOUT_UPDATED,
    SMSG_CALENDAR_SEND_CALENDAR,
    SMSG_CALENDAR_SEND_EVENT,
    SMSG_CALENDAR_SEND_NUM_PENDING,
    SMSG_CALENDAR_UPDATE_INVITE_LIST,
    SMSG_CAMERA_SHAKE,
    SMSG_CANCEL_AUTO_REPEAT,
    SMSG_CANCEL_COMBAT,
    SMSG_CANCEL_SCENE,
    SMSG_CAST_FAILED,
    SMSG_CHALLANGES_INFO,
    SMSG_CHALLENGE_MODE_ALL_MAP_STATS,
    SMSG_CHALLENGE_MODE_COMPLETE,
    SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE,
    SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD,
    SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT,
    SMSG_CHALLENGE_MODE_REWARDS,
    SMSG_CHANNEL_LIST,
    SMSG_CHANNEL_MEMBER_COUNT,
    SMSG_CHANNEL_NOTIFY,
    SMSG_CHARACTER_LOGIN_FAILED,
    SMSG_CHARACTER_UPGRADE_COMPLETE,
    SMSG_CHARACTER_UPGRADE_STARTED,
    SMSG_CHAR_CREATE,
    SMSG_CHAR_CUSTOMIZE,
    SMSG_CHAR_DELETE,
    SMSG_CHAR_ENUM,
    SMSG_CHAR_FACTION_CHANGE_RESULT,
    SMSG_CHAR_RENAME,
    SMSG_CHAT_IGNORED_ACCOUNT_MUTED,
    SMSG_CHAT_NOT_IN_PARTY,
    SMSG_CHAT_PLAYER_AMBIGUOUS,
    SMSG_CHAT_PLAYER_NOT_FOUND,
    SMSG_CHAT_RESTRICTED,
    SMSG_CHAT_SERVER_DISCONNECTED,
    SMSG_CHAT_SERVER_RECONNECTED,
    SMSG_CHECK_FOR_BOTS,
    SMSG_CLEAR_ALL_SPELL_CHARGES,
    SMSG_CLEAR_BOSS_EMOTES,
    SMSG_CLEAR_COOLDOWN,
    SMSG_CLEAR_COOLDOWNS,
    SMSG_CLEAR_FAR_SIGHT_IMMEDIATE,
    SMSG_CLEAR_LOSS_OF_CONTROL,
    SMSG_CLEAR_QUEST_COMPLETED_BIT,
    SMSG_CLEAR_QUEST_COMPLETED_BITS,
    SMSG_CLEAR_SPELL_CHARGES,
    SMSG_CLEAR_TARGET,
    SMSG_CLIENTCACHE_VERSION,
    SMSG_CLIENT_CONTROL_UPDATE,
    SMSG_CLOSE_BROWSER,
    SMSG_COMBAT_EVENT_FAILED,
    SMSG_COMBAT_LOG_MULTIPLE,
    SMSG_COMMENTATOR_MAP_INFO,
    SMSG_COMMENTATOR_PARTY_INFO,
    SMSG_COMMENTATOR_PLAYER_INFO,
    SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1,
    SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2,
    SMSG_COMMENTATOR_STATE_CHANGED,
    SMSG_COMPLAIN_RESULT,
    SMSG_COMPRESSED_MOVES,
    SMSG_COMSAT_CONNECT_FAIL,
    SMSG_COMSAT_DISCONNECT,
    SMSG_COMSAT_RECONNECT_TRY,
    SMSG_CONNECT_TO,
    SMSG_CONQUEST_FORMULA_CONSTANTS,
    SMSG_CONTACT_LIST,
    SMSG_CONVERT_RUNE,
    SMSG_COOLDOWN_CHEAT,
    SMSG_COOLDOWN_EVENT,
    SMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE,
    SMSG_CORPSE_NOT_IN_INSTANCE,
    SMSG_CORPSE_QUERY,
    SMSG_CORPSE_RECLAIM_DELAY,
    SMSG_CREATURE_QUERY_RESPONSE,
    SMSG_CRITERIA_DELETED,
    SMSG_CRITERIA_UPDATE,
    SMSG_CROSSED_INEBRIATION_THRESHOLD,
    SMSG_CURRENCY_LOOT_RESTORED,
    SMSG_CUSTOM_LOAD_SCREEN,
    SMSG_DAMAGE_CALC_LOG,
    SMSG_DAMAGE_DONE_OBSOLETE,
    SMSG_DANCE_STUDIO_CREATE_RESULT,
    SMSG_DB_REPLY,
    SMSG_DEATH_RELEASE_LOC,
    SMSG_DEBUG_RUNE_REGEN,
    SMSG_DEFENSE_MESSAGE,
    SMSG_DESTROY_OBJECT,
    SMSG_DESTRUCTIBLE_BUILDING_DAMAGE,
    SMSG_DIFFERENT_INSTANCE_FROM_PARTY,
    SMSG_DISENCHANT_CREDIT,
    SMSG_DISMOUNT,
    SMSG_DISMOUNTRESULT,
    SMSG_DISPEL_FAILED,
    SMSG_DISPLAY_GAME_ERROR,
    SMSG_DISPLAY_PLAYER_CHOICE,
    SMSG_DISPLAY_PROMOTION,
    SMSG_DISPLAY_TOAST,
    SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR,
    SMSG_DROP_NEW_CONNECTION,
    SMSG_DUEL_COMPLETE,
    SMSG_DUEL_COUNTDOWN,
    SMSG_DUEL_INBOUNDS,
    SMSG_DUEL_OUTOFBOUNDS,
    SMSG_DUEL_REQUESTED,
    SMSG_DUEL_WINNER,
    SMSG_DUMP_RIDE_TICKETS_RESPONSE,
    SMSG_DURABILITY_DAMAGE_DEATH,
    SMSG_ECHO_PARTY_SQUELCH,
    SMSG_EMOTE,
    SMSG_ENABLE_BARBER_SHOP,
    SMSG_ENCHANTMENT_LOG,
    SMSG_ENVIRONMENTALDAMAGELOG,
    SMSG_EQUIPMENT_SET_ID,
    SMSG_EXPECTED_SPAM_RECORDS,
    SMSG_EXPLORATION_EXPERIENCE,
    SMSG_FAILED_PLAYER_CONDITION,
    SMSG_FEATURE_SYSTEM_STATUS,
    SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN,
    SMSG_FEIGN_DEATH_RESISTED,
    SMSG_FISH_ESCAPED,
    SMSG_FISH_NOT_HOOKED,
    SMSG_FLIGHT_SPLINE_SYNC,
    SMSG_FLOOD_DETECTED,
    SMSG_FORCEACTIONSHOW,
    SMSG_FORCED_DEATH_UPDATE,
    SMSG_FORCE_DISPLAY_UPDATE,
    SMSG_FORCE_SEND_QUEUED_PACKETS,
    SMSG_FORGE_MASTER_SET,
    SMSG_FRIEND_STATUS,
    SMSG_GAMEOBJECT_CUSTOM_ANIM,
    SMSG_GAMEOBJECT_DESPAWN_ANIM,
    SMSG_GAMEOBJECT_PAGETEXT,
    SMSG_GAMEOBJECT_QUERY_RESPONSE,
    SMSG_GAMEOBJECT_RESET_STATE,
    SMSG_GAMESPEED_SET,
    SMSG_GAMETIME_SET,
    SMSG_GAMETIME_UPDATE,
    SMSG_GAME_EVENT_DEBUG_LOG,
    SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT,
    SMSG_GMRESPONSE_DB_ERROR,
    SMSG_GM_RESPONSE_STATUS_UPDATE,
    SMSG_GM_TICKET_RESPONSE,
    SMSG_GM_TICKET_UPDATE,
    SMSG_GM_TICKET_GET_TICKET,
    SMSG_GM_TICKET_SYSTEM_STATUS,
    SMSG_GM_TICKET_CASE_STATUS,
    SMSG_GM_TICKET_UPDATE_TEXT,
    SMSG_GM_MESSAGE_CHAT,
    SMSG_GM_PLAYER_INFO,
    SMSG_GM_TICKET_STATUS_UPDATE,
    SMSG_GODMODE,
    SMSG_GOSSIP_COMPLETE,
    SMSG_GOSSIP_MESSAGE,
    SMSG_GOSSIP_POI,
    SMSG_GROUPACTION_THROTTLED,
    SMSG_GROUP_CANCEL,
    SMSG_GROUP_DECLINE,
    SMSG_GROUP_DESTROYED,
    SMSG_GROUP_INVITE,
    SMSG_GROUP_LIST,
    SMSG_GROUP_ROLE_POLL_INFORM,
    SMSG_GROUP_SET_LEADER,
    SMSG_GROUP_SET_ROLE,
    SMSG_GROUP_UNINVITE,
    SMSG_GUILD_ACHIEVEMENT_DATA,
    SMSG_GUILD_ACHIEVEMENT_DELETED,
    SMSG_GUILD_ACHIEVEMENT_EARNED,
    SMSG_GUILD_ACHIEVEMENT_MEMBERS,
    SMSG_GUILD_BANK_LIST,
    SMSG_GUILD_BANK_LOG_QUERY_RESULT,
    SMSG_GUILD_BANK_MONEY_WITHDRAWN,
    SMSG_GUILD_BANK_QUERY_TEXT_RESULT,
    SMSG_GUILD_CANCEL,
    SMSG_GUILD_CHALLENGE_COMPLETED,
    SMSG_GUILD_CHALLENGE_UPDATED,
    SMSG_GUILD_CHANGE_NAME_RESULT,
    SMSG_GUILD_COMMAND_RESULT,
    SMSG_GUILD_COMMAND_RESULT_2,
    SMSG_GUILD_CRITERIA_DATA,
    SMSG_GUILD_CRITERIA_DELETED,
    SMSG_GUILD_INVITE_DECLINED,
    SMSG_GUILD_EVENT_BANK_MONEY_CHANGED,
    SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED,
    SMSG_GUILD_EVENT_BANK_TAB_ADDED,
    SMSG_GUILD_EVENT_BANK_TAB_DELETED,
    SMSG_GUILD_EVENT_BANK_TAB_TEXT_CHANGED,
    SMSG_GUILD_EVENT_BANK_TAB_MODIFIED,
    SMSG_GUILD_EVENT_DISBANDED,
    SMSG_GUILD_EVENT_LOG_QUERY_RESULT,
    SMSG_GUILD_EVENT_MOTD,
    SMSG_GUILD_EVENT_NEW_LEADER,
    SMSG_GUILD_EVENT_PLAYER_JOINED,
    SMSG_GUILD_EVENT_PLAYER_LEFT,
    SMSG_GUILD_EVENT_PRESENCE_CHANGE,
    SMSG_GUILD_EVENT_RANK_CHANGED,
    SMSG_GUILD_EVENT_RANKS_UPDATED,
    SMSG_GUILD_FLAGGED_FOR_RENAME,
    SMSG_GUILD_INVITE,
    SMSG_GUILD_INVITE_CANCEL,
    SMSG_GUILD_KNOWN_RECIPES,
    SMSG_GUILD_MAX_DAILY_XP,
    SMSG_GUILD_MEMBERS_FOR_RECIPE,
    SMSG_GUILD_MEMBER_DAILY_RESET,
    SMSG_GUILD_MEMBER_RECIPES,
    SMSG_GUILD_MEMBER_UPDATE_NOTE,
    SMSG_GUILD_MOVE_COMPLETE,
    SMSG_GUILD_MOVE_STARTING,
    SMSG_GUILD_NEWS_DELETED,
    SMSG_GUILD_NEWS_UPDATE,
    SMSG_GUILD_PARTY_STATE_RESPONSE,
    SMSG_GUILD_PERMISSIONS_QUERY_RESULTS,
    SMSG_GUILD_QUERY_RESPONSE,
    SMSG_GUILD_RANK,
    SMSG_GUILD_RANKS_UPDATE,
    SMSG_GUILD_RECIPES,
    SMSG_GUILD_RENAMED,
    SMSG_GUILD_REPUTATION_REACTION_CHANGED,
    SMSG_GUILD_REPUTATION_WEEKLY_CAP,
    SMSG_GUILD_RESET,
    SMSG_GUILD_REWARDS_LIST,
    SMSG_GUILD_ROSTER,
    SMSG_GUILD_SET_NOTE,
    SMSG_GUILD_TRADESKILL_UPDATE,
    SMSG_GUILD_UPDATE_ROSTER,
    SMSG_GUILD_XP,
    SMSG_GUILD_XP_GAIN,
    SMSG_GUILD_XP_UPDATE,
    SMSG_HEALTH_UPDATE,
    SMSG_HIGHEST_THREAT_UPDATE,
    SMSG_HOTFIX_INFO,
    SMSG_HOTFIX_NOTIFY,
    SMSG_INITIALIZE_FACTIONS,
    SMSG_INITIAL_SETUP,
    SMSG_INITIAL_SPELLS,
    SMSG_INIT_CURRENCY,
    SMSG_INIT_WORLD_STATES,
    SMSG_INSPECT,
    SMSG_INSPECT_HONOR_STATS,
    SMSG_INSPECT_PVP,
    SMSG_INSPECT_RATED_BG_STATS,
    SMSG_INSPECT_RESULTS,
    SMSG_INSTANCE_LOCK_WARNING_QUERY,
    SMSG_INSTANCE_RESET,
    SMSG_INSTANCE_RESET_FAILED,
    SMSG_INSTANCE_SAVE_CREATED,
    SMSG_INVALIDATE_PLAYER,
    SMSG_INVALID_PROMOTION_CODE,
    SMSG_INVENTORY_CHANGE_FAILURE,
    SMSG_ITEM_ADD_PASSIVE,
    SMSG_ITEM_COOLDOWN,
    SMSG_ITEM_ENCHANT_TIME_UPDATE,
    SMSG_ITEM_EXPIRE_PURCHASE_REFUND,
    SMSG_ITEM_PURCHASE_REFUND_RESULT,
    SMSG_ITEM_PUSH_RESULT,
    SMSG_ITEM_REMOVE_PASSIVE,
    SMSG_ITEM_SEND_PASSIVE,
    SMSG_ITEM_TEXT_QUERY_RESPONSE,
    SMSG_ITEM_TIME_UPDATE,
    SMSG_ITEM_UPGRADE_RESULT,
    SMSG_JOINED_BATTLEGROUND_QUEUE,
    SMSG_KICK_REASON,
    SMSG_LEARNED_SPELL,
    SMSG_LEVELUP_INFO,
    SMSG_LFG_BOOT_PROPOSAL_UPDATE,
    SMSG_LFG_DISABLED,
    SMSG_LFG_JOIN_RESULT,
    SMSG_LFG_OFFER_CONTINUE,
    SMSG_LFG_OPEN_FROM_GOSSIP,
    SMSG_LFG_PARTY_INFO,
    SMSG_LFG_PLAYER_INFO,
    SMSG_LFG_PLAYER_REWARD,
    SMSG_LFG_PROPOSAL_UPDATE,
    SMSG_LFG_QUEUE_STATUS,
    SMSG_LFG_ROLE_CHECK_UPDATE,
    SMSG_LFG_ROLE_CHOSEN,
    SMSG_LFG_SLOT_INVALID,
    SMSG_LFG_TELEPORT_DENIED,
    SMSG_LFG_UPDATE_LIST,
    SMSG_LFG_UPDATE_STATUS,
    SMSG_LFG_UPDATE_STATUS_NONE,
    SMSG_LF_GUILD_APPLICANT_LIST_UPDATED,
    SMSG_LF_GUILD_APPLICATIONS_LIST_CHANGED,
    SMSG_LF_GUILD_BROWSE_UPDATED,
    SMSG_LF_GUILD_COMMAND_RESULT,
    SMSG_LF_GUILD_MEMBERSHIP_LIST_UPDATED,
    SMSG_LF_GUILD_POST_UPDATED,
    SMSG_LF_GUILD_RECRUIT_LIST_UPDATED,
    SMSG_LIST_INVENTORY,
    SMSG_LOAD_CUF_PROFILES,
    SMSG_LOAD_EQUIPMENT_SET,
    SMSG_LOGIN_SETTIMESPEED,
    SMSG_LOGIN_VERIFY_WORLD,
    SMSG_LOGOUT_CANCEL_ACK,
    SMSG_LOGOUT_COMPLETE,
    SMSG_LOGOUT_RESPONSE,
    SMSG_LOG_XPGAIN,
    SMSG_LOOT_ALL_PASSED,
    SMSG_LOOT_CLEAR_MONEY,
    SMSG_LOOT_CONTENTS,
    SMSG_LOOT_ITEM_NOTIFY,
    SMSG_LOOT_LIST,
    SMSG_LOOT_MASTER_LIST,
    SMSG_LOOT_MONEY_NOTIFY,
    SMSG_LOOT_RELEASE_ALL,
    SMSG_LOOT_RELEASE_RESPONSE,
    SMSG_LOOT_REMOVED,
    SMSG_LOOT_RESPONSE,
    SMSG_LOOT_ROLL,
    SMSG_LOOT_ROLL_WON,
    SMSG_LOOT_ROLLS_COMPLETE,
    SMSG_LOOT_SLOT_CHANGED,
    SMSG_LOOT_START_ROLL,
    SMSG_LOSS_OF_CONTROL_AURA_UPDATE,
    SMSG_MAIL_LIST_RESULT,
    SMSG_MAIL_QUERY_NEXT_TIME_RESULT,
    SMSG_MAP_OBJ_EVENTS,
    SMSG_MEETINGSTONE_COMPLETE,
    SMSG_MEETINGSTONE_IN_PROGRESS,
    SMSG_MEETINGSTONE_MEMBER_ADDED,
    SMSG_MEETINGSTONE_SETQUEUE,
    SMSG_MESSAGECHAT,
    SMSG_MESSAGE_BOX,
    SMSG_MINIGAME_SETUP,
    SMSG_MINIGAME_STATE,
    SMSG_MINIMAP_PING,
    SMSG_MIRROR_IMAGE_COMPONENTED_DATA,
    SMSG_MIRROR_IMAGE_CREATURE_DATA,
    SMSG_MISSILE_CANCEL,
    SMSG_MODIFY_COOLDOWN,
    SMSG_MONEY_NOTIFY,
    SMSG_MONSTER_MOVE,
    SMSG_MONSTER_MOVE_TRANSPORT,
    SMSG_MOTD,
    SMSG_MOUNTRESULT,
    SMSG_MOUNTSPECIAL_ANIM,
    SMSG_MOVE_APPLY_MOVEMENT_FORCE,
    SMSG_MOVE_COLLISION_DISABLE,
    SMSG_MOVE_COLLISION_ENABLE,
    SMSG_MOVE_FEATHER_FALL,
    SMSG_MOVE_GRAVITY_DISABLE,
    SMSG_MOVE_GRAVITY_ENABLE,
    SMSG_MOVE_KNOCK_BACK,
    SMSG_MOVE_LAND_WALK,
    SMSG_MOVE_NORMAL_FALL,
    SMSG_MOVE_REMOVE_MOVEMENT_FORCE,
    SMSG_MOVE_ROOT,
    SMSG_MOVE_SET_ACTIVE_MOVER,
    SMSG_MOVE_SET_CAN_FLY,
    SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING,
    SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY,
    SMSG_MOVE_SET_COLLISION_HEIGHT,
    SMSG_MOVE_SET_COMPOUND_STATE,
    SMSG_MOVE_SET_FLIGHT_BACK_SPEED,
    SMSG_MOVE_SET_FLIGHT_SPEED,
    SMSG_MOVE_SET_HOVER,
    SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES,
    SMSG_MOVE_SET_PITCH_RATE,
    SMSG_MOVE_SET_RUN_BACK_SPEED,
    SMSG_MOVE_SET_RUN_SPEED,
    SMSG_MOVE_SET_SWIM_BACK_SPEED,
    SMSG_MOVE_SET_SWIM_SPEED,
    SMSG_MOVE_SET_TURN_RATE,
    SMSG_MOVE_SET_VEHICLE_REC_ID,
    SMSG_MOVE_SET_WALK_IN_AIR,
    SMSG_MOVE_SET_WALK_SPEED,
    SMSG_MOVE_TELEPORT,
    SMSG_MOVE_UNROOT,
    SMSG_MOVE_UNSET_CAN_FLY,
    SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING,
    SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY,
    SMSG_MOVE_UNSET_HOVER,
    SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES,
    SMSG_MOVE_UNSET_WALK_IN_AIR,
    SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE,
    SMSG_MOVE_UPDATE_COLLISION_HEIGHT,
    SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED,
    SMSG_MOVE_UPDATE_FLIGHT_SPEED,
    SMSG_MOVE_UPDATE_KNOCK_BACK,
    SMSG_MOVE_UPDATE_PITCH_RATE,
    SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE,
    SMSG_MOVE_UPDATE_RUN_BACK_SPEED,
    SMSG_MOVE_UPDATE_RUN_SPEED,
    SMSG_MOVE_UPDATE_SWIM_BACK_SPEED,
    SMSG_MOVE_UPDATE_SWIM_SPEED,
    SMSG_MOVE_UPDATE_TELEPORT,
    SMSG_MOVE_UPDATE_TURN_RATE,
    SMSG_MOVE_UPDATE_WALK_SPEED,
    SMSG_MOVE_WATER_WALK,
    SMSG_MULTIPLE_PACKETS,
    SMSG_NAME_QUERY_RESPONSE,
    SMSG_NEW_TAXI_PATH,
    SMSG_NEW_WORLD,
    SMSG_NEW_WORLD_ABORT,
    SMSG_NOTIFICATION,
    SMSG_NOTIFY_DEST_LOC_SPELL_CAST,
    SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION,
    SMSG_NPC_TEXT_UPDATE,
    SMSG_NPC_WONT_TALK,
    SMSG_OFFER_PETITION_ERROR,
    SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA,
    SMSG_OPEN_BROWSER,
    SMSG_OPEN_CONTAINER,
    SMSG_OPEN_LFG_DUNGEON_FINDER,
    SMSG_OPEN_REFORGE,
    SMSG_OPEN_TRANSMOGRIFIER,
    SMSG_OVERRIDE_LIGHT,
    SMSG_PAGE_TEXT_QUERY_RESPONSE,
    SMSG_PARTYKILLLOG,
    SMSG_PARTY_COMMAND_RESULT,
    SMSG_PARTY_MEMBER_STATS,
    SMSG_PAUSE_MIRROR_TIMER,
    SMSG_PETGODMODE,
    SMSG_PETITION_ALREADY_SIGNED,
    SMSG_PETITION_QUERY_RESPONSE,
    SMSG_PETITION_RENAME_RESULT,
    SMSG_PETITION_SHOWLIST,
    SMSG_PETITION_SHOW_SIGNATURES,
    SMSG_PETITION_SIGN_RESULTS,
    SMSG_PET_ACTION_FEEDBACK,
    SMSG_PET_ACTION_SOUND,
    SMSG_PET_ADDED,
    SMSG_PET_BATTLE_INITIAL_UPDATE,
    SMSG_PET_BATTLE_FINALIZE_LOCATION,
    SMSG_PET_BATTLE_FINAL_ROUND,
    SMSG_PET_BATTLE_FINISHED,
    SMSG_PET_BATTLE_FIRST_ROUND,
    SMSG_PET_BATTLE_QUEUE_STATUS,
    SMSG_PET_BATTLE_REQUEST_FAILED,
    SMSG_PET_BATTLE_ROUND_RESULT,
    SMSG_PET_BROKEN,
    SMSG_PET_CAST_FAILED,
    SMSG_PET_DISMISS_SOUND,
    SMSG_PET_GUIDS,
    SMSG_PET_LEARNED_SPELL,
    SMSG_PET_MODE,
    SMSG_PET_NAME_INVALID,
    SMSG_PET_NAME_QUERY_RESPONSE,
    SMSG_PET_REMOVED_SPELL,
    SMSG_PET_RENAMEABLE,
    SMSG_PET_SLOT_UPDATED,
    SMSG_PET_SPELLS_MESSAGE,
    SMSG_PET_STABLE_LIST,
    SMSG_PET_STABLE_RESULT,
    SMSG_PET_TAME_FAILURE,
    SMSG_PET_UPDATE_COMBO_POINTS,
    SMSG_PLAYED_TIME,
    SMSG_PLAYERBINDERROR,
    SMSG_PLAYERBOUND,
    SMSG_PLAYER_DIFFICULTY_CHANGE,
    SMSG_PLAYER_MOVE,
    SMSG_PLAYER_SKINNED,
    SMSG_PLAYER_UNK_DEAD_ALIVE,
    SMSG_PLAY_MUSIC,
    SMSG_PLAY_OBJECT_SOUND,
    SMSG_PLAY_ONE_SHOT_ANIM_KIT,
    SMSG_PLAY_SCENE,
    SMSG_PLAY_SOUND,
    SMSG_PLAY_SPELL_VISUAL,
    SMSG_PLAY_SPELL_VISUAL_KIT,
    SMSG_PLAY_TIME_WARNING,
    SMSG_PONG,
    SMSG_POWER_UPDATE,
    SMSG_PRE_RESURRECT,
    SMSG_PROC_RESIST,
    SMSG_PROPOSE_LEVEL_GRANT,
    SMSG_PUREMOUNT_CANCELLED_OBSOLETE,
    SMSG_PVP_CREDIT,
    SMSG_PVP_LOG_DATA,
    SMSG_PVP_OPTIONS_ENABLED,
    SMSG_PVP_SEASON,
    SMSG_QUERY_TIME_RESPONSE,
    SMSG_QUESTGIVER_OFFER_REWARD,
    SMSG_QUESTGIVER_QUEST_COMPLETE,
    SMSG_QUESTGIVER_QUEST_DETAILS,
    SMSG_QUESTGIVER_QUEST_FAILED,
    SMSG_QUESTGIVER_QUEST_INVALID,
    SMSG_QUESTGIVER_QUEST_LIST,
    SMSG_QUESTGIVER_REQUEST_ITEMS,
    SMSG_QUESTGIVER_STATUS,
    SMSG_QUESTGIVER_STATUS_MULTIPLE,
    SMSG_QUESTLOG_FULL,
    SMSG_QUESTUPDATE_ADD_CREDIT,
    SMSG_QUESTUPDATE_ADD_CREDIT_SIMPLE,
    SMSG_QUESTUPDATE_ADD_ITEM,
    SMSG_QUESTUPDATE_ADD_PVP_KILL,
    SMSG_QUESTUPDATE_COMPLETE,
    SMSG_QUESTUPDATE_FAILED,
    SMSG_QUESTUPDATE_FAILEDTIMER,
    SMSG_QUEST_CONFIRM_ACCEPT,
    SMSG_QUEST_FORCE_REMOVE,
    SMSG_QUEST_NPC_QUERY_RESPONSE,
    SMSG_QUEST_POI_QUERY_RESPONSE,
    SMSG_QUEST_PUSH_RESULT,
    SMSG_QUEST_QUERY_RESPONSE,
    SMSG_RAID_GROUP_ONLY,
    SMSG_RAID_INSTANCE_INFO,
    SMSG_RAID_INSTANCE_MESSAGE,
    SMSG_RAID_MARKERS_CHANGED,
    SMSG_RAID_READY_CHECK,
    SMSG_RAID_READY_CHECK_COMPLETED,
    SMSG_RAID_READY_CHECK_CONFIRM,
    SMSG_RAID_READY_CHECK_THROTTLED_ERROR,
    SMSG_RAID_SUMMON_FAILED,
    SMSG_RAID_TARGET_UPDATE_ALL,
    SMSG_RAID_TARGET_UPDATE_SINGLE,
    SMSG_RANDOM_ROLL,
    SMSG_RANDOMIZE_CHAR_NAME,
    SMSG_RATED_BG_RATING,
    SMSG_RATED_BG_STATS,
    SMSG_READ_ITEM_RESULT_FAILED,
    SMSG_READ_ITEM_RESULT_OK,
    SMSG_REALM_SPLIT,
    SMSG_REALM_NAME_QUERY_RESPONSE,
    SMSG_REAL_GROUP_UPDATE,
    SMSG_RECEIVED_MAIL,
    SMSG_REDIRECT_CLIENT,
    SMSG_REFER_A_FRIEND_EXPIRED,
    SMSG_REFER_A_FRIEND_FAILURE,
    SMSG_REFORGE_RESULT,
    SMSG_REMOVE_LOSS_OF_CONTROL,
    SMSG_REMOVED_SPELL,
    SMSG_REPORT_PVP_AFK_RESULT,
    SMSG_REQUEST_CEMETERY_LIST_RESPONSE,
    SMSG_REQUEST_PVP_REWARDS_RESPONSE,
    SMSG_RESEARCH_COMPLETE,
    SMSG_RESEARCH_SETUP_HISTORY,
    SMSG_RESET_COMPRESSION_CONTEXT,
    SMSG_RESET_FAILED_NOTIFY,
    SMSG_RESISTLOG,
    SMSG_RESPEC_WIPE_CONFIRM,
    SMSG_RESPOND_INSPECT_ACHIEVEMENTS,
    SMSG_RESUME_CAST_BAR,
    SMSG_RESUME_COMMS,
    SMSG_RESUME_TOKEN,
    SMSG_RESURRECT_REQUEST,
    SMSG_RESYNC_RUNES,
    SMSG_ROLE_POLL_BEGIN,
    SMSG_RWHOIS,
    SMSG_SAVE_GUILD_EMBLEM,
    SMSG_SCENARIO_POIS,
    SMSG_SCENARIO_PROGRESS_UPDATE,
    SMSG_SCENARIO_STATE,
    SMSG_SCRIPT_CAST,
    SMSG_SELL_ITEM,
    SMSG_SEND_MAIL_RESULT,
    SMSG_SEND_SPELL_CHARGES,
    SMSG_SEND_SPELL_HISTORY,
    SMSG_SEND_UNLEARN_SPELLS,
    SMSG_SERVERTIME,
    SMSG_SERVER_FIRST_ACHIEVEMENT,
    SMSG_SERVER_INFO_RESPONSE,
    SMSG_SERVER_MESSAGE,
    SMSG_SERVER_PERF,
    SMSG_SET_AI_ANIM_KIT,
    SMSG_SET_DF_FAST_LAUNCH_RESULT,
    SMSG_SET_DUNGEON_DIFFICULTY,
    SMSG_SET_FACTION_ATWAR,
    SMSG_SET_FACTION_STANDING,
    SMSG_SET_FACTION_VISIBLE,
    SMSG_SET_FLAT_SPELL_MODIFIER,
    SMSG_SET_FORCED_REACTIONS,
    SMSG_SET_ITEM_PURCHASE_DATA,
    SMSG_SET_MELEE_ANIM_KIT,
    SMSG_SET_MOVEMENT_ANIM_KIT,
    SMSG_SET_PCT_SPELL_MODIFIER,
    SMSG_SET_PET_SPECIALIZATION,
    SMSG_SET_PHASE_SHIFT,
    SMSG_SET_PLAYER_DECLINED_NAMES_RESULT,
    SMSG_SET_PLAY_HOVER_ANIM,
    SMSG_SET_PROFICIENCY,
    SMSG_SET_QUEST_COMPLETED_BIT,
    SMSG_SET_RAID_DIFFICULTY,
    SMSG_SET_TIMEZONE_INFORMATION,
    SMSG_SET_VEHICLE_REC_ID,
    SMSG_SHOP_BUY,
    SMSG_SHOP_BUY_ERROR,
    SMSG_SHOP_ITEM,
    SMSG_SHOW_TAXI_NODES,
    SMSG_SHOW_BANK,
    SMSG_SHOW_MAILBOX,
    SMSG_SHOW_NEURTRAL_PLAYER_FACTION_SELECT_UI,
    SMSG_SHOW_RATINGS,
    SMSG_SHOW_TRADE_SKILL_RESPONSE,
    SMSG_SOCKET_GEMS_RESULT,
    SMSG_SOR_START_EXPERIENCE_INCOMPLETE,
    SMSG_SPELLBREAKLOG,
    SMSG_SPELLDISPELLOG,
    SMSG_SPELLENERGIZELOG,
    SMSG_SPELLHEALLOG,
    SMSG_SPELLINSTAKILLLOG,
    SMSG_SPELLINTERRUPTLOG,
    SMSG_SPELLLOGMISS,
    SMSG_SPELLNONMELEEDAMAGELOG,
    SMSG_SPELLSTEALLOG,
    SMSG_SPELL_CATEGORY_COOLDOWN,
    SMSG_SPELL_CHANNEL_START,
    SMSG_SPELL_CHANNEL_UPDATE,
    SMSG_SPELL_COOLDOWN,
    SMSG_SPELL_DAMAGE_SHIELD,
    SMSG_SPELL_DELAYED,
    SMSG_SPELL_EXECUTE_LOG,
    SMSG_SPELL_FAILED_OTHER,
    SMSG_SPELL_FAILURE,
    SMSG_SPELL_GO,
    SMSG_SPELL_OR_DAMAGE_IMMUNE,
    SMSG_SPELL_PERIODIC_AURA_LOG,
    SMSG_SPELL_START,
    SMSG_SPELL_UPDATE_CHAIN_TARGETS,
    SMSG_SPIRIT_HEALER_CONFIRM,
    SMSG_SPLINE_MOVE_COLLISION_DISABLE,
    SMSG_SPLINE_MOVE_COLLISION_ENABLE,
    SMSG_SPLINE_MOVE_GRAVITY_DISABLE,
    SMSG_SPLINE_MOVE_GRAVITY_ENABLE,
    SMSG_SPLINE_MOVE_ROOT,
    SMSG_SPLINE_MOVE_SET_FEATHER_FALL,
    SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED,
    SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED,
    SMSG_SPLINE_MOVE_SET_FLYING,
    SMSG_SPLINE_MOVE_SET_HOVER,
    SMSG_SPLINE_MOVE_SET_LAND_WALK,
    SMSG_SPLINE_MOVE_SET_NORMAL_FALL,
    SMSG_SPLINE_MOVE_SET_PITCH_RATE,
    SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED,
    SMSG_SPLINE_MOVE_SET_RUN_MODE,
    SMSG_SPLINE_MOVE_SET_RUN_SPEED,
    SMSG_SPLINE_MOVE_SET_SWIM_BACK_SPEED,
    SMSG_SPLINE_MOVE_SET_SWIM_SPEED,
    SMSG_SPLINE_MOVE_SET_TURN_RATE,
    SMSG_SPLINE_MOVE_SET_WALK_MODE,
    SMSG_SPLINE_MOVE_SET_WALK_SPEED,
    SMSG_SPLINE_MOVE_SET_WATER_WALK,
    SMSG_SPLINE_MOVE_START_SWIM,
    SMSG_SPLINE_MOVE_STOP_SWIM,
    SMSG_SPLINE_MOVE_UNROOT,
    SMSG_SPLINE_MOVE_UNSET_FLYING,
    SMSG_SPLINE_MOVE_UNSET_HOVER,
    SMSG_SPLINE_MOVE_WATER_WALK,
    SMSG_STANDSTATE_UPDATE,
    SMSG_START_ELAPSED_TIMER,
    SMSG_START_ELAPSED_TIMERS,
    SMSG_START_MIRROR_TIMER,
    SMSG_START_TIMER,
    SMSG_STOP_ELAPSED_TIMER,
    SMSG_STOP_MIRROR_TIMER,
    SMSG_STREAMING_MOVIE,
    SMSG_SUMMON_CANCEL,
    SMSG_SUMMON_REQUEST,
    SMSG_SUPERCEDED_SPELL,
    SMSG_SUPPRESS_NPC_GREETINGS,
    SMSG_SUSPEND_COMMS,
    SMSG_SUSPEND_TOKEN,
    SMSG_TABARD_VENDOR_ACTIVATE,
    SMSG_TALENTS_ERROR,
    SMSG_TALENTS_INFO,
    SMSG_TALENTS_INVOLUNTARILY_RESET,
    SMSG_TAXI_NODE_STATUS,
    SMSG_TEST_DROP_RATE_RESULT,
    SMSG_TEXT_EMOTE,
    SMSG_THREAT_CLEAR,
    SMSG_THREAT_REMOVE,
    SMSG_THREAT_UPDATE,
    SMSG_TIME_ADJUSTMENT,
    SMSG_TIME_SYNC_REQ,
    SMSG_TITLE_EARNED,
    SMSG_TITLE_LOST,
    SMSG_TOGGLE_XP_GAIN,
    SMSG_TOTEM_CREATED,
    SMSG_TRADE_STATUS,
    SMSG_TRADE_STATUS_EXTENDED,
    SMSG_TRAINER_BUY_FAILED,
    SMSG_TRAINER_LIST,
    SMSG_TRANSFER_ABORTED,
    SMSG_TRANSFER_PENDING,
    SMSG_TRIGGER_CINEMATIC,
    SMSG_TRIGGER_MOVIE,
    SMSG_TURN_IN_PETITION_RESULTS,
    SMSG_TUTORIAL_FLAGS,
    SMSG_UNIT_HEALTH_FREQUENT,
    SMSG_UNIT_SPELLCAST_START,
    SMSG_UPDATE_ACCOUNT_DATA,
    SMSG_UPDATE_ACCOUNT_DATA_COMPLETE,
    SMSG_UPDATE_COMBO_POINTS,
    SMSG_UPDATE_CURRENCY,
    SMSG_UPDATE_CURRENCY_WEEK_LIMIT,
    SMSG_UPDATE_DUNGEON_ENCOUNTER_FOR_LOOT,
    SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT,
    SMSG_UPDATE_INSTANCE_OWNERSHIP,
    SMSG_UPDATE_LAST_INSTANCE,
    SMSG_UPDATE_OBJECT,
    SMSG_UPDATE_SERVER_PLAYER_POSITION,
    SMSG_UPDATE_WORLD_STATE,
    SMSG_USE_EQUIPMENT_SET_RESULT,
    SMSG_USERLIST_ADD,
    SMSG_USERLIST_REMOVE,
    SMSG_USERLIST_UPDATE,
    SMSG_VOICESESSION_FULL,
    SMSG_VOICE_CHAT_STATUS,
    SMSG_VOICE_PARENTAL_CONTROLS,
    SMSG_VOICE_SESSION_LEAVE,
    SMSG_VOICE_SESSION_ROSTER_UPDATE,
    SMSG_VOICE_SET_TALKER_MUTED,
    SMSG_VOID_ITEM_SWAP_RESPONSE,
    SMSG_VOID_STORAGE_CONTENTS,
    SMSG_VOID_STORAGE_FAILED,
    SMSG_VOID_STORAGE_TRANSFER_CHANGES,
    SMSG_VOID_TRANSFER_RESULT,
    SMSG_VIGNETTE_UPDATE,
    SMSG_WAIT_QUEUE_FINISH,
    SMSG_WAIT_QUEUE_UPDATE,
    SMSG_WARDEN_DATA,
    SMSG_WARGAME_CHECK_ENTRY,
    SMSG_WARGAME_REQUEST_SENT,
    SMSG_WEATHER,
    SMSG_WEEKLY_LAST_RESET,
    SMSG_WEEKLY_RESET_CURRENCY,
    SMSG_WEEKLY_SPELL_USAGE,
    SMSG_WEEKLY_SPELL_USAGE_UPDATE,
    SMSG_WHO,
    SMSG_WHOIS,
    SMSG_WORLD_SERVER_INFO,
    SMSG_WORLD_STATE_UI_TIMER_UPDATE,
    SMSG_XP_GAIN_ABORTED,
    SMSG_ZONE_UNDER_ATTACK,
    NUM_OPCODES,
    UNKNOWN_OPCODE
};

/// Player state
enum SessionStatus
{
    STATUS_AUTHED = 0,                                      // Player authenticated (_player == NULL, m_playerRecentlyLogout = false or will be reset before handler call, m_GUID have garbage)
    STATUS_LOGGEDIN,                                        // Player in game (_player != NULL, m_GUID == _player->GetGUID(), inWorld())
    STATUS_TRANSFER,                                        // Player transferring to another map (_player != NULL, m_GUID == _player->GetGUID(), !inWorld())
    STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT,                    // _player != NULL or _player == NULL && m_playerRecentlyLogout && m_playerLogout, m_GUID store last _player guid)
    STATUS_NEVER,                                           // Opcode not accepted from client (deprecated or server side only)
    STATUS_UNHANDLED                                        // Opcode not handled yet
};

enum PacketProcessing
{
    PROCESS_INPLACE = 0,                                    // Process packet whenever we receive it - mostly for non-handled or non-implemented packets
    PROCESS_THREADUNSAFE,                                   // Packet is not thread-safe - process it in World::UpdateSessions()
    PROCESS_THREADSAFE                                      // Packet is thread-safe - process it in Map::Update()
};

class WorldPacket;
class WorldSession;

typedef void(WorldSession::*pOpcodeHandler)(WorldPacket& recvPacket);

struct OpcodeHandler
{
    OpcodeHandler() {}

    OpcodeHandler(uint16 opcodeNumber, char const* _name, SessionStatus _status, PacketProcessing _processing, pOpcodeHandler _handler)
        : OpcodeNumber(opcodeNumber), Handler(_handler), Name(_name), Status(_status), ProcessingPlace(_processing) {}

    pOpcodeHandler Handler;
    char const* Name;
    SessionStatus Status;
    PacketProcessing ProcessingPlace;
    uint16 OpcodeNumber;
};

class OpcodeTable
{
    public:
        OpcodeTable()
        {
            memset(_internalTable, 0, sizeof(_internalTable));
            memset(_opcodeTable, 0, sizeof(_opcodeTable));
        }

        ~OpcodeTable()
        {
            for (uint16 i = 0; i < NUM_OPCODES; ++i)
                delete _internalTable[i];
        }

        void InitializeClientTable();
        void InitializeServerTable();

        inline Opcodes GetOpcodeByNumber(uint16 number) { return _opcodeTable[number]; }

        OpcodeHandler const* operator[](uint32 index) const
        {
            return _internalTable[index];
        }

     private:
        template<bool isInValidRange, bool isNonZero>
        void ValidateAndSetOpcode(uint16 opcode, uint16 opcodeNumber, char const* name, SessionStatus status, PacketProcessing processing, pOpcodeHandler handler = 0);

        // Prevent copying this structure
        OpcodeTable(OpcodeTable const&);
        OpcodeTable& operator=(OpcodeTable const&);

        OpcodeHandler* _internalTable[NUM_OPCODES];

        // Store opcode / number list - for speed
        Opcodes _opcodeTable[NUM_OPCODE_HANDLERS];
};

extern OpcodeTable serverOpcodeTable;
extern OpcodeTable clientOpcodeTable;

void InitializeClientTable();
void InitializeServerTable();

/// Lookup opcode name for human understandable logging
inline std::string GetOpcodeNameForLogging(Opcodes id, bool isServerOpcode, uint16 opcodeNumber = 0)
{
    OpcodeTable& table = isServerOpcode ? serverOpcodeTable : clientOpcodeTable;
    uint16 opcode = opcodeNumber ? opcodeNumber : uint16(id);

    std::ostringstream ss;
    ss << '[';

    if (id < UNKNOWN_OPCODE)
    {
        if (OpcodeHandler const* handler = table[id])
        {
            ss << handler->Name;
            opcode = handler->OpcodeNumber;
            if (opcode & COMPRESSED_OPCODE_MASK)
                ss << "_COMPRESSED";
        }
        else
            ss << "UNKNOWN OPCODE";
    }
    else
        ss << "INVALID OPCODE";

    ss << " 0x" << std::hex << std::uppercase << opcode << std::nouppercase << " (" << std::dec << opcode << ")]";
    return ss.str();
}

#endif
/// @}
