// *************************************************************************** // // Reality - The Matrix Online Server Emulator // Copyright (C) 2006-2010 Rajko Stojadinovic // http://mxoemu.info // // --------------------------------------------------------------------------- // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . // // --------------------------------------------------------------------------- // // *************************************************************************** #include "Common.h" #include "Util.h" #include "Log.h" #include "MarginSocket.h" #include "TCPVariableLengthPacket.h" #include "AuthServer.h" #include "SignedDataStruct.h" #include "Timer.h" #include "Database/Database.h" #include "MersenneTwister.h" #include "MarginSocket.h" #include "MarginServer.h" #include "Database/Database.h" #include "GameClient.h" #include "GameServer.h" #include "EncryptedPacket.h" #include "Config.h" MarginSocket::MarginSocket(ISocketHandler& h) : TCPVarLenSocket(h) { memset(challenge,0,sizeof(challenge)); charId = 0; sessionId = 0; worldCharId = 0; numCharacterReplies = 0; readyForUdp = false; // this->SetWillBeHalfClosed(true); INFO_LOG("Margin socket constructed"); } MarginSocket::~MarginSocket() { INFO_LOG("Margin socket deconstructed"); } void MarginSocket::OnDisconnect( short info, int code ) { /* if (GameClient *udpClient = sGame.GetClientWithSessionId(sessionId)) udpClient->Invalidate(); */ INFO_LOG(format("Margin socket with %1% disconnected") % GetRemoteSocketAddress()->Convert(true)); } void MarginSocket::SendCrypted( TwofishEncryptedPacket &cryptedPacket ) { if (m_tfEngine.IsValid()) { SendPacket(TCPVariableLengthPacket(cryptedPacket.toCipherText(m_tfEngine))); } } enum MarginOpcode { CERT_ConnectRequest = 0x01, CERT_Challenge = 0x02, CERT_ChallengeResponse = 0x03, CERT_ConnectReply = 0x04, CERT_NewSessionKey = 0x05, MS_ConnectRequest = 0x06, MS_ConnectChallenge = 0x07, MS_ConnectChallengeResponse = 0x08, MS_ConnectReply = 0x09, MS_ClaimCharacterNameRequest = 0x0A, MS_ClaimCharacterNameReply = 0x0B, MS_CreateCharacterRequest = 0x0C, MS_DeleteCharacterRequest = 0x0D, MS_DeleteCharacterReply = 0x0E, MS_LoadCharacterRequest = 0x0F, MS_LoadCharacterReply = 0x10, MS_EstablishUDPSessionReply = 0x11, MS_RefreshSessionKeyRequest = 0x12, MS_RefreshSessionKeyReply = 0x13, MS_ServerShuttingDown = 0x14, MS_FailoverRequest = 0x15, MS_FailoverReply = 0x16, MS_AdjustFloodgateRequest = 0x17, MS_AdjustFloodgateReply = 0x18, MS_GetPlayerListRequest = 0x19, MS_GetPlayerListReply = 0x1A, MS_FakePopulationRequest = 0x1B, MS_UnloadCharacterRequest = 0x1C, MS_GetClientIPRequest = 0x1D, MS_GetClientIPReply = 0x1E }; void MarginSocket::ProcessData( const byte *buf,size_t len ) { ByteBuffer packetContents(buf,len); DEBUG_LOG(format("Margin Receieved |%1%|") % Bin2Hex(packetContents) ); bool encrypted = true; byte firstByte; packetContents >> firstByte; if (firstByte >= CERT_ConnectRequest && firstByte <= CERT_NewSessionKey) { uint16 firstShort; packetContents >> firstShort; if (firstShort == 3) { encrypted = false; } } //reset position (since we just read 3 bytes) packetContents.rpos(0); ByteBuffer packetData; if (encrypted == true && m_tfEngine.IsValid()) { TwofishEncryptedPacket packetTodecrypt(packetContents,m_tfEngine); packetData = packetTodecrypt; DEBUG_LOG(format("Margin Decrypted |%1%|") % Bin2Hex(packetData) ); } else { packetData = packetContents; } byte packetOpcode; packetData >> packetOpcode; MarginOpcode opcode = MarginOpcode(packetOpcode); switch (opcode) { default: { break; } case CERT_ConnectRequest: { uint16 firstNumber; if (packetData.remaining() < sizeof(firstNumber)) { SetCloseAndDelete(true); return; } packetData >> firstNumber; if (firstNumber != 3) { WARNING_LOG(format("CERT_ConnectRequest first num not 3 (actually %1%)") % firstNumber); } uint16 authStart; if (packetData.remaining() < sizeof(authStart)) { SetCloseAndDelete(true); return; } packetData >> authStart; if (authStart != swap16(0x3601)) { WARNING_LOG("CERT_ConnectRequest auth start not 36 01"); } byte signature[128]; if (packetData.remaining() < sizeof(signature)) { SetCloseAndDelete(true); return; } packetData.read(signature,sizeof(signature)); signedDataStruct signedData; if (packetData.remaining() < sizeof(signedData)) { SetCloseAndDelete(true); return; } packetData.read((byte*)&signedData,sizeof(signedData)); //verify signature, but first we need to md5 CryptoPP::Weak::MD5 md5Object; md5Object.Update((const byte*)&signedData,sizeof(signedData)); byte verifyMePlease[16]; md5Object.Final(verifyMePlease); bool signatureValid = sAuth.VerifyWith1024Bit(verifyMePlease,sizeof(verifyMePlease),signature,sizeof(signature)); if (signatureValid == false) { ERROR_LOG("CERT_ConnectRequest signature invalid, packet has been tampered, disconnecting"); SetCloseAndDelete(true); return; } uint32 currTime = getTime(); if (signedData.expiryTime < currTime) //the authentication session has expired { ERROR_LOG("CERT_ConnectRequest timestamp too old, disconnecting"); SetCloseAndDelete(true); return; } m_userId = signedData.userId1; m_username = signedData.userName; //scope for db ptr { scoped_ptr result(sDatabase.Query(format("SELECT `userId`, `username` FROM `users` WHERE `username` = '%1%' LIMIT 1") % m_username) ); if (result == NULL) { INFO_LOG(format("CERT_ConnectRequest: Username %1% doesn't exist, disconnecting.") % m_username ); SetCloseAndDelete(true); return; } Field *field = result->Fetch(); uint32 dbUserId = field[0].GetUInt32(); if (m_userId != dbUserId) { ERROR_LOG(format("CERT_ConnectRequest: UserId from packet %1% mismatches one from DB %2%, disconnecting.") % m_userId % dbUserId); SetCloseAndDelete(true); return; } } //we need to generate a twofish key for usage for encrypted margin/world, and a challenge so we can verify that client can encrypt fine CryptoPP::AutoSeededRandomPool randPool; //generate random twofish key and challenge randPool.GenerateBlock(twofishKey,sizeof(twofishKey)); randPool.GenerateBlock(challenge,sizeof(challenge)); //since we now have key, lets initialize our encryptor/decryptor m_tfEngine.Initialize(twofishKey,sizeof(twofishKey)); //the rsa encrypted packet is 00 then twofish key then challenge, so its 31 bytes ByteBuffer tobeRSAd; tobeRSAd << uint8(0); tobeRSAd.append(twofishKey,sizeof(twofishKey)); tobeRSAd.append(challenge,sizeof(challenge)); //make CryptoPP integers out of our exponent and modulus CryptoPP::Integer exponent( uint32( swap16(signedData.publicExponent) ) ); CryptoPP::Integer modulus; modulus.Decode(signedData.modulus,sizeof(signedData.modulus)); CryptoPP::RSA::PublicKey userPubKey; userPubKey.Initialize(modulus,exponent); CryptoPP::RSAES_OAEP_SHA_Encryptor rsaEncryptor(userPubKey); string encryptedOutput; CryptoPP::StringSource(string(tobeRSAd.contents(),tobeRSAd.size()), true, new CryptoPP::PK_EncryptorFilter(randPool, rsaEncryptor, new CryptoPP::StringSink(encryptedOutput))); //now that we have the encrypted keys, we can respond TCPVariableLengthPacket response; response << uint8(CERT_Challenge) << uint16(3) << uint16(encryptedOutput.size()); response.append(encryptedOutput); SendPacket(response); DEBUG_LOG(format("Sending CERT_Challenge: |%1%|") % Bin2Hex(response) ); break; } case CERT_ChallengeResponse: { byte clientsChallenge[16]; if (packetData.remaining() < sizeof(clientsChallenge)) { SetCloseAndDelete(true); return; } packetData.read(clientsChallenge,sizeof(clientsChallenge)); if (!memcmp(clientsChallenge,challenge,sizeof(challenge))) { DEBUG_LOG("CERT_ChallengeResponse from client correct!"); } else { ERROR_LOG("CERT_ChallengeResponse from client INcorrect!"); return; } TwofishEncryptedPacket response; // 04 00 00 00 00 response from real server response << uint8(CERT_ConnectReply) << uint32(0); // error code possibly ? SendCrypted(response); DEBUG_LOG(format("Sending CERT_ConnectReply: |%1%|") % Bin2Hex(response) ); break; } case MS_ConnectRequest: { if (packetData.remaining() < 2*sizeof(uint32)) break; uint32 matrixVersion; packetData >> matrixVersion; uint32 clientDllVersion; packetData >> clientDllVersion; //skip 9 bytes as we dont know what it is if (packetData.remaining() < 9) break; packetData.rpos(packetData.rpos()+9); //16 bytes weird sequence of bytes if (packetData.remaining() < sizeof(weirdSequenceOfBytes)) break; packetData.read(weirdSequenceOfBytes,sizeof(weirdSequenceOfBytes)); //ending 00 if (packetData.remaining() < sizeof(uint8)) break; uint8 lastByte; packetData >> lastByte; if (lastByte != 0) { WARNING_LOG(format("MS_ConnectRequest: last byte is not 0, but %1%") % uint32(lastByte)); } DEBUG_LOG(format("MS_ConnectRequest: matrixVersion: %2% clientDllVersion: %2% rest: %3%") % ClientVersionString(matrixVersion) % ClientVersionString(clientDllVersion) % Bin2Hex(&packetData.contents()[packetData.rpos()],packetData.remaining())); //real server response with MS_ConnectChallenge which has 16 bytes some data, then 00 00 01 00 TwofishEncryptedPacket response; response << uint8(MS_ConnectChallenge); //lets use a buffer full of FFs byte md5Buf[16]; memset(md5Buf,0xFF,sizeof(md5Buf)); response.append(md5Buf,sizeof(md5Buf)); response << uint16(0); //md5 param 1 response << uint16(1); //md5 param 2 SendCrypted(response); DEBUG_LOG(format("Sending MS_ConnectChallenge: |%1%|") % Bin2Hex(response) ); break; } case MS_ConnectChallengeResponse: { vector gameFilesMd5(CryptoPP::Weak::MD5::DIGESTSIZE); if (packetData.remaining() < gameFilesMd5.size()) break; packetData.read(&gameFilesMd5[0],gameFilesMd5.size()); //always accept //we need to send something like 09 00 00 00 00 00 00 00 00 29 A6 34 E9 0F 00 03 00 0C 00 07 00 A9 00 // ?? ?? ?? ?? <- this part changes, its margin/world session id TwofishEncryptedPacket response; response << uint8(MS_ConnectReply); response << uint32(0); response << uint32(0); uint32 randMax = 0xFFFFFFFF; sessionId = MTRand::getSingleton().randInt(randMax); response << sessionId; response << uint16(0x0F); response << uint16(3); response << uint16(0x0C); response << uint16(7); response << uint16(0xA9); SendCrypted(response); readyForUdp = true; DEBUG_LOG(format("Sending MS_ConnectReply: |%1%|") % Bin2Hex(response) ); break; } case MS_LoadCharacterRequest: { //first 8 bytes are uint64 charid if (packetData.remaining() < sizeof(charId)) break; packetData >> charId; //scope for db ptr { scoped_ptr result(sDatabase.Query(format("SELECT `charId`, `userId`, `handle`, `firstName`, `lastName`, `background` FROM `characters` WHERE `userId` = '%1%' AND `charId` = '%2%' LIMIT 1") % m_userId % charId) ); if (result == NULL) { ERROR_LOG(format("MS_LoadCharacterRequest: Character doesn't exist or username %1% doesn't own it") % m_username ); SetCloseAndDelete(true); return; } Field *field = result->Fetch(); m_charName = field[2].GetString(); m_firstName = field[3].GetString(); m_lastName = field[4].GetString(); if (field[5].GetString() != NULL) m_background = field[5].GetString(); else m_background = string(); } //Don't allow multiple users with the same character id if (sConfig.GetBoolDefault("MarginServer.AllowMultipleSessionsPerCharacter", false)==false) { vector allUsers = sGame.GetClientsWithCharacterId(charId); if(allUsers.size() > 0) //someone else already using account { ERROR_LOG(format("MS_LoadCharacterRequest: Closing connection for %1% (one already exists)") % m_charName ); this->SetCloseAndDelete(true); return; } } //then 32 zeroes vector justZeroes(32); if (packetData.remaining() < justZeroes.size()) break; packetData.read(&justZeroes[0],justZeroes.size()); if (std::accumulate(justZeroes.begin(),justZeroes.end(),0) != 0) { WARNING_LOG(format("MS_LoadCharacterRequest: Zeroes were %1%") % Bin2Hex(&justZeroes[0],justZeroes.size()) ); } uint32 strangeCounter=0; byte shouldBeStrangeThing[16]; while (packetData.remaining() >= sizeof(shouldBeStrangeThing)) { packetData.read(shouldBeStrangeThing,sizeof(shouldBeStrangeThing)); if (memcmp(shouldBeStrangeThing,weirdSequenceOfBytes,sizeof(shouldBeStrangeThing)) != 0) { //roll back the 16 bytes we read packetData.rpos(packetData.rpos()-sizeof(shouldBeStrangeThing)); break; } else { strangeCounter++; } } if (strangeCounter != 9) { WARNING_LOG(format("MS_LoadCharacterRequest: Strange counter was not 9 but %1%") % strangeCounter); } //abs position in packet of weird string size uint16 uint16 weirdStringPos; if (packetData.remaining() < sizeof(weirdStringPos)) break; packetData >> weirdStringPos; if (weirdStringPos >= packetData.size()) break; packetData.rpos(weirdStringPos); uint16 weirdStringLen; if (packetData.remaining() < sizeof(weirdStringLen)) break; packetData >> weirdStringLen; if (packetData.remaining() < weirdStringLen) break; vector stringStorage(weirdStringLen); packetData.read(&stringStorage[0],stringStorage.size()); if (stringStorage.size() > 1) { soeChatString = string((const char*)&stringStorage[0],stringStorage.size()-1); WARNING_LOG(format("MS_LoadCharacterRequest: weird string is %1%") % soeChatString ); } else { soeChatString = string(); } worldCharId = charId & 0xFFFFFFFF; NewCharacterReply(); //10 00 00 00 00 11 a0 07 00 00 00 01 00 01 00 00 // ?? ?? ?? ?? <- world character id (unique per world, the uint64 charId is globally unique across worlds) byte firstOne[] = {0x00,0x00}; SendCharacterReply(0,false,1,ByteBuffer(firstOne,sizeof(firstOne))); byte firstNameLastNameBackground[] = { 0x10, 0x00, 0xAE, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x54, 0x68, 0x6F, 0x6D, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x6E, 0x64, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x69, 0x65, 0x20, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x69, 0x73, 0x74, 0x20, 0x65, 0x69, 0x6E, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x2E, 0x2E, 0x64, 0x69, 0x65, 0x73, 0x65, 0x73, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x69, 0x73, 0x74, 0x20, 0x75, 0x6E, 0x73, 0x65, 0x72, 0x20, 0x46, 0x65, 0x69, 0x6E, 0x64, 0x2E, 0x0A, 0x0A, 0x4A, 0x6F, 0x69, 0x6E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x44, 0x75, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x44, 0x69, 0x65, 0x20, 0xE4, 0x6C, 0x74, 0x65, 0x73, 0x74, 0x65, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x65, 0x20, 0x5A, 0x69, 0x6F, 0x6E, 0x20, 0x46, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x2C, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x42, 0x65, 0x74, 0x61, 0x2E, 0x0A, 0x0A, 0x52, 0x2E, 0x49, 0x2E, 0x50, 0x20, 0x4D, 0x78, 0x4F, 0x20, 0x2D, 0x20, 0x76, 0x69, 0x65, 0x6C, 0x65, 0x6E, 0x20, 0x64, 0x61, 0x6E, 0x6B, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x65, 0x20, 0x53, 0x70, 0x69, 0x65, 0x6C, 0x65, 0x72, 0x20, 0x66, 0xFC, 0x72, 0x20, 0x64, 0x65, 0x6E, 0x20, 0x53, 0x70, 0x61, 0xDF, 0x20, 0x64, 0x65, 0x6E, 0x20, 0x77, 0x69, 0x72, 0x20, 0x68, 0x69, 0x65, 0x72, 0x20, 0x68, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x3A, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xCB, 0xBA, 0xE0, 0x00, 0x08, 0xAF, 0x2F, 0x01, 0x7A, 0x02, 0x00, 0x00, 0x6D, 0xE3, 0x72, 0x4A, 0x81, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0x67, 0x00, 0x67, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x01, 0x03, 0x01, 0x31, 0x00, 0x00, 0xB4, 0x02, 0x32, 0x00, 0x00, 0xB4, 0x03, 0x38, 0x00, 0x00, 0xB4, 0x04, 0x4E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, 0x16, 0x00, 0x52, 0x00, 0x00, 0x00, 0x19, 0x00, 0x54, 0x00, 0x00, 0x00, 0x13, 0x00 } ; memset(&firstNameLastNameBackground[0x28],0,32); strncpy((char*)&firstNameLastNameBackground[0x28],m_firstName.c_str(),31); memset(&firstNameLastNameBackground[0x48],0,32); strncpy((char*)&firstNameLastNameBackground[0x48],m_lastName.c_str(),31); memset(&firstNameLastNameBackground[0x68],0,1024); strncpy((char*)&firstNameLastNameBackground[0x68],m_background.c_str(),1023); SendCharacterReply(0,false,2,ByteBuffer(firstNameLastNameBackground,sizeof(firstNameLastNameBackground))); unsigned char packet1[] = { 0x10, 0x00, 0x1b, 0x02, 0xd5, 0x71, 0x00, 0x00, 0x47, 0x65, 0x6c, 0x62, 0x65, 0x67, 0x65, 0x66, 0x61, 0x68, 0x72, 0x00, 0x10, 0x7b, 0x00, 0x00, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x69, 0x6c, 0x64, 0x33, 0x30, 0x35, 0x00, 0x33, 0x02, 0x01, 0x00, 0x47, 0x6f, 0x6f, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x00, 0x8a, 0xcb, 0x01, 0x00, 0x68, 0x41, 0x6e, 0x66, 0x73, 0x41, 0x41, 0x74, 0x00, 0xb1, 0xcb, 0x01, 0x00, 0x53, 0x79, 0x6c, 0x33, 0x64, 0x72, 0x69, 0x6f, 0x6e, 0x00, 0xbe, 0xcc, 0x01, 0x00, 0x4d, 0x65, 0x64, 0x61, 0x6e, 0x6f, 0x6e, 0x00, 0xd2, 0xcf, 0x01, 0x00, 0x72, 0x59, 0x75, 0x67, 0x65, 0x6e, 0x00, 0x5e, 0xd3, 0x01, 0x00, 0x53, 0x74, 0x65, 0x76, 0x65, 0x42, 0x00, 0x9a, 0xd3, 0x01, 0x00, 0x46, 0x6f, 0x6e, 0x64, 0x6f, 0x00, 0xa3, 0xd3, 0x01, 0x00, 0x4f, 0x76, 0x69, 0x64, 0x69, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x75, 0x73, 0x4e, 0x61, 0x73, 0x6f, 0x00, 0x5d, 0xd4, 0x01, 0x00, 0x43, 0x65, 0x6c, 0x61, 0x73, 0x4d, 0x61, 0x74, 0x72, 0x65, 0x79, 0x61, 0x00, 0x08, 0xd5, 0x01, 0x00, 0x41, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x00, 0x5c, 0xd5, 0x01, 0x00, 0x78, 0x53, 0x49, 0x52, 0x4b, 0x41, 0x4e, 0x45, 0x78, 0x00, 0xca, 0xd7, 0x01, 0x00, 0x54, 0x63, 0x68, 0x65, 0x6e, 0x00, 0x2f, 0xd8, 0x01, 0x00, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x73, 0x61, 0x72, 0x00, 0x67, 0xd8, 0x01, 0x00, 0x50, 0x6f, 0x72, 0x70, 0x68, 0x79, 0x72, 0x69, 0x6f, 0x6e, 0x00, 0x6b, 0xda, 0x01, 0x00, 0x4b, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x32, 0x36, 0x30, 0x30, 0x00, 0x44, 0xdb, 0x01, 0x00, 0x62, 0x6d, 0x61, 0x39, 0x39, 0x39, 0x39, 0x00, 0xab, 0xdc, 0x01, 0x00, 0x34, 0x49, 0x52, 0x4f, 0x57, 0x00, 0x55, 0xdd, 0x01, 0x00, 0x56, 0x69, 0x74, 0x65, 0x73, 0x73, 0x65, 0x73, 0x00, 0xf5, 0xe3, 0x01, 0x00, 0x54, 0x68, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x53, 0x6e, 0x61, 0x6b, 0x65, 0x00, 0x12, 0xe5, 0x01, 0x00, 0x48, 0x6f, 0x74, 0x53, 0x68, 0x6f, 0x74, 0x74, 0x74, 0x74, 0x00, 0x56, 0xe5, 0x01, 0x00, 0x4b, 0x68, 0x69, 0x72, 0x61, 0x4c, 0x69, 0x00, 0x7d, 0xe5, 0x01, 0x00, 0x57, 0x69, 0x74, 0x63, 0x68, 0x62, 0x75, 0x72, 0x6e, 0x65, 0x72, 0x00, 0x53, 0xe7, 0x01, 0x00, 0x4e, 0x65, 0x6f, 0x6e, 0x69, 0x00, 0xab, 0xed, 0x01, 0x00, 0x4b, 0x65, 0x61, 0x73, 0x68, 0x61, 0x00, 0xf6, 0xef, 0x01, 0x00, 0x54, 0x72, 0x69, 0x67, 0x61, 0x73, 0x00, 0xe5, 0xf1, 0x01, 0x00, 0x58, 0x63, 0x79, 0x62, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x33, 0x6f, 0x6f, 0x6f, 0x58, 0x00, 0x1d, 0xf4, 0x01, 0x00, 0x46, 0x72, 0x65, 0x69, 0x47, 0x65, 0x69, 0x73, 0x74, 0x00, 0xa3, 0xf4, 0x01, 0x00, 0x31, 0x41, 0x6e, 0x61, 0x6b, 0x69, 0x6e, 0x31, 0x00, 0x8a, 0xf5, 0x01, 0x00, 0x41, 0x6e, 0x67, 0x65, 0x31, 0x63, 0x31, 0x61, 0x77, 0x00, 0x8f, 0xf5, 0x01, 0x00, 0x54, 0x61, 0x75, 0x72, 0x6f, 0x6e, 0x00, 0x93, 0xf5, 0x01, 0x00, 0x54, 0x68, 0x65, 0x41, 0x76, 0x65, 0x6e, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x61, 0x00, 0xc9, 0xf5, 0x01, 0x00, 0x4a, 0x65, 0x6e, 0x6e, 0x65, 0x00, 0x06, 0xf6, 0x01, 0x00, 0x41, 0x6e, 0x64, 0x69, 0x32, 0x36, 0x32, 0x00, 0x9b, 0xf7, 0x01, 0x00, 0x41, 0x68, 0x70, 0x68, 0x72, 0x6f, 0x64, 0x69, 0x74, 0x65, 0x00, 0x86, 0x4c, 0x02, 0x00, 0x53, 0x79, 0x6d, 0x62, 0x69, 0x00, 0x80, 0x4e, 0x02, 0x00, 0x45, 0x6e, 0x73, 0x6f, 0x6e, 0x69, 0x63, 0x00, 0x88, 0x59, 0x02, 0x00, 0x6d, 0x6f, 0x6d, 0x6f, 0x31, 0x30, 0x00, 0xe3, 0x5f, 0x02, 0x00, 0x6e, 0x65, 0x70, 0x68, 0x74, 0x61, 0x00, } ; SendCharacterReply(0,false,3,ByteBuffer(packet1,sizeof(packet1))); unsigned char packet2[] = { 0x10, 0x00, 0x00, 0x00, } ; SendCharacterReply(0,false,4,ByteBuffer(packet2,sizeof(packet2))); unsigned char packet3[] = { 0x10, 0x00, 0xee, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x02, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x23, 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x00, 0x00, 0x02, 0x25, 0x00, 0x00, 0x00, 0x02, 0x26, 0x00, 0x00, 0x00, 0x02, 0x27, 0x00, 0x00, 0x00, 0x02, 0x29, 0x00, 0x00, 0x00, 0x02, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x2f, 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, 0x00, 0x00, 0x02, 0x31, 0x00, 0x00, 0x00, 0x02, 0x32, 0x00, 0x00, 0x00, 0x02, 0x34, 0x00, 0x00, 0x00, 0x02, 0x35, 0x00, 0x00, 0x00, 0x02, 0x36, 0x00, 0x00, 0x00, 0x02, 0x37, 0x00, 0x00, 0x00, 0x02, 0x38, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x02, 0x41, 0x00, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, 0x00, 0x02, 0x45, 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x00, 0x02, 0x49, 0x00, 0x00, 0x00, 0x02, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x4f, 0x00, 0x00, 0x00, 0x02, 0x50, 0x00, 0x00, 0x00, 0x02, 0x51, 0x00, 0x00, 0x00, 0x02, 0x52, 0x00, 0x00, 0x00, 0x02, 0x54, 0x00, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x00, 0x02, 0x56, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x02, 0x59, 0x00, 0x00, 0x00, 0x02, 0x5a, 0x00, 0x00, 0x00, 0x02, 0x5b, 0x00, 0x00, 0x00, 0x02, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x5d, 0x00, 0x00, 0x00, 0x02, 0x5e, 0x00, 0x00, 0x00, 0x02, 0x5f, 0x00, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x02, 0x61, 0x00, 0x00, 0x00, 0x02, 0x62, 0x00, 0x00, 0x00, 0x02, 0x63, 0x00, 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x00, 0x02, 0x65, 0x00, 0x00, 0x00, 0x02, 0x66, 0x00, 0x00, 0x00, 0x02, 0x67, 0x00, 0x00, 0x00, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x6a, 0x00, 0x00, 0x00, 0x02, 0x6b, 0x00, 0x00, 0x00, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x02, 0x6d, 0x00, 0x00, 0x00, 0x02, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x6f, 0x00, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x02, 0x71, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x00, 0x01, 0x37, 0x00, 0x00, 0x00, 0x01, 0x41, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x00, 0x01, 0x49, 0x00, 0x00, 0x00, 0x01, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x4f, 0x00, 0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x00, 0x01, 0x51, 0x00, 0x00, 0x00, 0x01, 0x52, 0x00, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, 0x00, 0x01, 0x64, 0x00, 0x00, 0x00, 0x01, 0x65, 0x00, 0x00, 0x00, 0x01, 0x66, 0x00, 0x00, 0x00, 0x01, 0x67, 0x00, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, 0x00, 0x01, 0x69, 0x00, 0x00, 0x00, 0x01, 0x6a, 0x00, 0x00, 0x00, 0x01, 0x6b, 0x00, 0x00, 0x00, 0x01, 0x6d, 0x00, 0x00, 0x00, 0x01, 0x6f, 0x00, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, 0x00, 0x01, 0x71, 0x00, 0x00, 0x00, 0x01, 0x72, 0x00, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x00, 0x01, 0x74, 0x00, 0x00, 0x00, 0x01, 0x77, 0x00, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x01, 0x79, 0x00, 0x00, 0x00, 0x01, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x7d, 0x00, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x01, 0x85, 0x00, 0x00, 0x00, 0x01, 0x86, 0x00, 0x00, 0x00, 0x01, 0x87, 0x00, 0x00, 0x00, 0x01, 0x88, 0x00, 0x00, 0x00, 0x01, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00, 0x00, 0x01, 0x8c, 0x00, 0x00, 0x00, 0x01, 0x8d, 0x00, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x00, 0x00, 0x01, 0x91, 0x00, 0x00, 0x00, 0x01, 0x92, 0x00, 0x00, 0x00, 0x01, 0x93, 0x00, 0x00, 0x00, 0x01, 0x94, 0x00, 0x00, 0x00, 0x01, 0x95, 0x00, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, 0x00, 0x01, 0x97, 0x00, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x00, 0x03, 0x12, 0x00, 0x00, 0x00, 0x03, 0x13, 0x00, 0x00, 0x00, 0x03, 0x14, 0x00, 0x00, 0x00, 0x03, 0x15, 0x00, 0x00, 0x00, 0x03, 0x16, 0x00, 0x00, 0x00, 0x03, 0x17, 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, } ; SendCharacterReply(0,false,8,ByteBuffer(packet3,sizeof(packet3))); unsigned char packet4[] = { // 4. pak 0x10, 0x00, 0x42, 0x00, 0x02, 0x01, 0x00, 0x02, 0x03, 0x00, 0x02, 0x04, 0x00, 0x02, 0x06, 0x00, 0x02, 0x09, 0x00, 0x02, 0x0c, 0x00, 0x02, 0x0f, 0x00, 0x02, 0x11, 0x00, 0x01, 0x07, 0x00, 0x01, 0x09, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x0d, 0x00, 0x01, 0x0e, 0x00, 0x03, 0x0c, 0x00, 0x03, 0x0e, 0x00, 0x03, 0x0f, 0x00, 0x03, 0x10, 0x00, 0x03, 0x11, 0x00, 0x03, 0x12, 0x00, 0x03, 0x14, 0x00, 0x03, 0x15, 0x00, } ; SendCharacterReply(0,false,9,ByteBuffer(packet4,sizeof(packet4))); unsigned char packet5[] = { // 5. Packet // Again an Inventory Packet 0x10, 0x00, 0xa8, 0x06, 0x04, 0x00, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x19, 0x02, 0x00, 0x00, 0x65, 0x02, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0xb5, 0x02, 0x00, 0x00, 0xb6, 0x02, 0x00, 0x00, 0xbb, 0x02, 0x00, 0x00, 0xbc, 0x02, 0x00, 0x00, 0xc2, 0x02, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0xd5, 0x02, 0x00, 0x00, 0xd6, 0x02, 0x00, 0x00, 0xde, 0x02, 0x00, 0x00, 0xe2, 0x02, 0x00, 0x00, 0xe3, 0x02, 0x00, 0x00, 0xe6, 0x02, 0x00, 0x00, 0xe7, 0x02, 0x00, 0x00, 0xe9, 0x02, 0x00, 0x00, 0x3f, 0x03, 0x00, 0x00, 0x86, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x00, 0xaa, 0x03, 0x00, 0x00, 0xe3, 0x03, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x06, 0x04, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x00, 0x27, 0x04, 0x00, 0x00, 0x4c, 0x04, 0x00, 0x00, 0x4e, 0x04, 0x00, 0x00, 0xbb, 0x04, 0x00, 0x00, 0xc2, 0x04, 0x00, 0x00, 0xce, 0x04, 0x00, 0x00, 0xeb, 0x04, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0xee, 0x04, 0x00, 0x00, 0xf5, 0x04, 0x00, 0x00, 0xf6, 0x04, 0x00, 0x00, 0xf7, 0x04, 0x00, 0x00, 0xf9, 0x04, 0x00, 0x00, 0x54, 0x09, 0x00, 0x00, 0x5f, 0x09, 0x00, 0x00, 0x82, 0x09, 0x00, 0x00, 0xbe, 0x09, 0x00, 0x00, 0xbf, 0x09, 0x00, 0x00, 0xc1, 0x09, 0x00, 0x00, 0xc4, 0x09, 0x00, 0x00, 0xc7, 0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x04, 0x0a, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0xb0, 0x12, 0x00, 0x00, 0xfa, 0x12, 0x00, 0x00, 0x09, 0x13, 0x00, 0x00, 0x69, 0x14, 0x00, 0x00, 0x86, 0x14, 0x00, 0x00, 0x95, 0x14, 0x00, 0x00, 0xe9, 0x14, 0x00, 0x00, 0xef, 0x14, 0x00, 0x00, 0xf1, 0x14, 0x00, 0x00, 0x1c, 0x15, 0x00, 0x00, 0x2d, 0x15, 0x00, 0x00, 0x5b, 0x15, 0x00, 0x00, 0x63, 0x15, 0x00, 0x00, 0x78, 0x15, 0x00, 0x00, 0x80, 0x15, 0x00, 0x00, 0xab, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, 0x1f, 0x16, 0x00, 0x00, 0x24, 0x16, 0x00, 0x00, 0x33, 0x16, 0x00, 0x00, 0x61, 0x16, 0x00, 0x00, 0x6e, 0x16, 0x00, 0x00, 0x73, 0x16, 0x00, 0x00, 0x82, 0x16, 0x00, 0x00, 0x84, 0x16, 0x00, 0x00, 0x87, 0x16, 0x00, 0x00, 0x94, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x24, 0x17, 0x00, 0x00, 0x25, 0x17, 0x00, 0x00, 0x38, 0x17, 0x00, 0x00, 0x45, 0x17, 0x00, 0x00, 0x5e, 0x17, 0x00, 0x00, 0x73, 0x17, 0x00, 0x00, 0x74, 0x17, 0x00, 0x00, 0xf4, 0x17, 0x00, 0x00, 0xf6, 0x17, 0x00, 0x00, 0xfc, 0x17, 0x00, 0x00, 0x4f, 0x18, 0x00, 0x00, 0x5c, 0x18, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x2d, 0x19, 0x00, 0x00, 0x3a, 0x19, 0x00, 0x00, 0x5a, 0x19, 0x00, 0x00, 0x5b, 0x19, 0x00, 0x00, 0x65, 0x19, 0x00, 0x00, 0x66, 0x19, 0x00, 0x00, 0x12, 0x1a, 0x00, 0x00, 0x18, 0x1a, 0x00, 0x00, 0x28, 0x1a, 0x00, 0x00, 0x34, 0x1a, 0x00, 0x00, 0x45, 0x1a, 0x00, 0x00, 0x47, 0x1a, 0x00, 0x00, 0x62, 0x1a, 0x00, 0x00, 0x6e, 0x1a, 0x00, 0x00, 0x7b, 0x1a, 0x00, 0x00, 0x7c, 0x1a, 0x00, 0x00, 0x7d, 0x1a, 0x00, 0x00, 0xe5, 0x1a, 0x00, 0x00, 0xeb, 0x1a, 0x00, 0x00, 0xec, 0x1a, 0x00, 0x00, 0xed, 0x1a, 0x00, 0x00, 0xee, 0x1a, 0x00, 0x00, 0xf0, 0x1a, 0x00, 0x00, 0xf1, 0x1a, 0x00, 0x00, 0x0c, 0x1b, 0x00, 0x00, 0x2d, 0x1c, 0x00, 0x00, 0x52, 0x1c, 0x00, 0x00, 0xc3, 0x1c, 0x00, 0x00, 0x3a, 0x1d, 0x00, 0x00, 0x3f, 0x1d, 0x00, 0x00, 0x50, 0x1d, 0x00, 0x00, 0x52, 0x1d, 0x00, 0x00, 0x55, 0x1d, 0x00, 0x00, 0x67, 0x1d, 0x00, 0x00, 0xd8, 0x1d, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x04, 0x1e, 0x00, 0x00, 0x06, 0x1e, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x09, 0x1e, 0x00, 0x00, 0x0d, 0x1e, 0x00, 0x00, 0x3b, 0x1e, 0x00, 0x00, 0x52, 0x1e, 0x00, 0x00, 0x75, 0x1e, 0x00, 0x00, 0xae, 0x1e, 0x00, 0x00, 0xb4, 0x1e, 0x00, 0x00, 0xc1, 0x1e, 0x00, 0x00, 0xc2, 0x1e, 0x00, 0x00, 0xc3, 0x1e, 0x00, 0x00, 0xc4, 0x1e, 0x00, 0x00, 0xc5, 0x1e, 0x00, 0x00, 0xc6, 0x1e, 0x00, 0x00, 0xc7, 0x1e, 0x00, 0x00, 0xc8, 0x1e, 0x00, 0x00, 0xc9, 0x1e, 0x00, 0x00, 0xca, 0x1e, 0x00, 0x00, 0xcb, 0x1e, 0x00, 0x00, 0xcc, 0x1e, 0x00, 0x00, 0xcd, 0x1e, 0x00, 0x00, 0xce, 0x1e, 0x00, 0x00, 0xcf, 0x1e, 0x00, 0x00, 0xd0, 0x1e, 0x00, 0x00, 0xd1, 0x1e, 0x00, 0x00, 0xd2, 0x1e, 0x00, 0x00, 0xd3, 0x1e, 0x00, 0x00, 0xd4, 0x1e, 0x00, 0x00, 0xd5, 0x1e, 0x00, 0x00, 0xd6, 0x1e, 0x00, 0x00, 0xd7, 0x1e, 0x00, 0x00, 0xd8, 0x1e, 0x00, 0x00, 0xda, 0x1e, 0x00, 0x00, 0xdd, 0x1e, 0x00, 0x00, 0xe6, 0x1e, 0x00, 0x00, 0xe9, 0x1e, 0x00, 0x00, 0xf5, 0x1e, 0x00, 0x00, 0xfc, 0x1e, 0x00, 0x00, 0xfd, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x03, 0x1f, 0x00, 0x00, 0x7a, 0x1f, 0x00, 0x00, 0x7c, 0x1f, 0x00, 0x00, 0x82, 0x1f, 0x00, 0x00, 0xa6, 0x1f, 0x00, 0x00, 0xb9, 0x1f, 0x00, 0x00, 0x30, 0x20, 0x00, 0x00, 0x3d, 0x20, 0x00, 0x00, 0x49, 0x20, 0x00, 0x00, 0x58, 0x20, 0x00, 0x00, 0x82, 0x20, 0x00, 0x00, 0x83, 0x20, 0x00, 0x00, 0x84, 0x20, 0x00, 0x00, 0x85, 0x20, 0x00, 0x00, 0xa5, 0x20, 0x00, 0x00, 0xbe, 0x20, 0x00, 0x00, 0xc4, 0x20, 0x00, 0x00, 0xce, 0x20, 0x00, 0x00, 0xdb, 0x20, 0x00, 0x00, 0xe7, 0x20, 0x00, 0x00, 0xeb, 0x20, 0x00, 0x00, 0x15, 0x21, 0x00, 0x00, 0x7f, 0x21, 0x00, 0x00, 0x8d, 0x21, 0x00, 0x00, 0x97, 0x21, 0x00, 0x00, 0x9f, 0x21, 0x00, 0x00, 0xa7, 0x21, 0x00, 0x00, 0xb8, 0x21, 0x00, 0x00, 0xe3, 0x21, 0x00, 0x00, 0x02, 0x22, 0x00, 0x00, 0x0f, 0x22, 0x00, 0x00, 0x12, 0x22, 0x00, 0x00, 0x16, 0x22, 0x00, 0x00, 0x58, 0x22, 0x00, 0x00, 0x5b, 0x22, 0x00, 0x00, 0x70, 0x22, 0x00, 0x00, 0x75, 0x22, 0x00, 0x00, 0x78, 0x22, 0x00, 0x00, 0x7d, 0x22, 0x00, 0x00, 0x89, 0x22, 0x00, 0x00, 0x99, 0x22, 0x00, 0x00, 0xa4, 0x22, 0x00, 0x00, 0xab, 0x22, 0x00, 0x00, 0xb2, 0x22, 0x00, 0x00, 0xbe, 0x22, 0x00, 0x00, 0xc9, 0x22, 0x00, 0x00, 0xd5, 0x22, 0x00, 0x00, 0xd6, 0x22, 0x00, 0x00, 0xd7, 0x22, 0x00, 0x00, 0x1b, 0x23, 0x00, 0x00, 0x1e, 0x23, 0x00, 0x00, 0x1f, 0x23, 0x00, 0x00, 0x23, 0x23, 0x00, 0x00, 0x39, 0x23, 0x00, 0x00, 0x5a, 0x23, 0x00, 0x00, 0xa7, 0x24, 0x00, 0x00, 0xc1, 0x24, 0x00, 0x00, 0xea, 0x24, 0x00, 0x00, 0xf9, 0x24, 0x00, 0x00, 0x08, 0x25, 0x00, 0x00, 0x09, 0x25, 0x00, 0x00, 0x0a, 0x25, 0x00, 0x00, 0x29, 0x25, 0x00, 0x00, 0xa9, 0x25, 0x00, 0x00, 0xcf, 0x25, 0x00, 0x00, 0xe1, 0x25, 0x00, 0x00, 0x66, 0x26, 0x00, 0x00, 0x6e, 0x26, 0x00, 0x00, 0xd2, 0x26, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00, 0x51, 0x31, 0x00, 0x00, 0x70, 0x31, 0x00, 0x00, 0xf6, 0x33, 0x00, 0x00, 0x82, 0x34, 0x00, 0x00, 0x4c, 0x36, 0x00, 0x00, 0x30, 0x39, 0x00, 0x00, 0x74, 0x39, 0x00, 0x00, 0x9e, 0x39, 0x00, 0x00, 0xa0, 0x39, 0x00, 0x00, 0xf6, 0x3b, 0x00, 0x00, 0x81, 0x3d, 0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, 0x4b, 0x3e, 0x00, 0x00, 0xcd, 0x3e, 0x00, 0x00, 0xf7, 0x3e, 0x00, 0x00, 0x03, 0x3f, 0x00, 0x00, 0x0d, 0x3f, 0x00, 0x00, 0x6f, 0x3f, 0x00, 0x00, 0x16, 0x40, 0x00, 0x00, 0x5b, 0x40, 0x00, 0x00, 0x69, 0x40, 0x00, 0x00, 0xf2, 0x41, 0x00, 0x00, 0xd2, 0x42, 0x00, 0x00, 0xeb, 0x42, 0x00, 0x00, 0x2c, 0x43, 0x00, 0x00, 0x4b, 0x43, 0x00, 0x00, 0x58, 0x43, 0x00, 0x00, 0x5b, 0x43, 0x00, 0x00, 0x5e, 0x43, 0x00, 0x00, 0x9c, 0x43, 0x00, 0x00, 0x9e, 0x43, 0x00, 0x00, 0x9f, 0x43, 0x00, 0x00, 0xb7, 0x43, 0x00, 0x00, 0xd4, 0x43, 0x00, 0x00, 0x09, 0x44, 0x00, 0x00, 0x13, 0x44, 0x00, 0x00, 0x19, 0x44, 0x00, 0x00, 0xc3, 0x44, 0x00, 0x00, 0x99, 0x4d, 0x00, 0x00, 0x80, 0x4f, 0x00, 0x00, 0xb4, 0x4f, 0x00, 0x00, 0xb3, 0x51, 0x00, 0x00, 0xb5, 0x51, 0x00, 0x00, 0xfb, 0x51, 0x00, 0x00, 0x05, 0x52, 0x00, 0x00, 0xb7, 0x53, 0x00, 0x00, 0x9e, 0x55, 0x00, 0x00, 0xb2, 0x55, 0x00, 0x00, 0xde, 0x55, 0x00, 0x00, 0x01, 0x56, 0x00, 0x00, 0x21, 0x56, 0x00, 0x00, 0xfc, 0x56, 0x00, 0x00, 0x6f, 0x57, 0x00, 0x00, 0x70, 0x57, 0x00, 0x00, 0x87, 0x57, 0x00, 0x00, 0xdd, 0x57, 0x00, 0x00, 0xfc, 0x57, 0x00, 0x00, 0x10, 0x58, 0x00, 0x00, 0x26, 0x58, 0x00, 0x00, 0x63, 0x58, 0x00, 0x00, 0xdd, 0x58, 0x00, 0x00, 0x0a, 0x59, 0x00, 0x00, 0x17, 0x59, 0x00, 0x00, 0x63, 0x59, 0x00, 0x00, 0x92, 0x5b, 0x00, 0x00, 0xea, 0x5b, 0x00, 0x00, 0xfe, 0x5c, 0x00, 0x00, 0x86, 0x60, 0x00, 0x00, 0xa2, 0x64, 0x00, 0x00, 0x13, 0x6b, 0x00, 0x00, 0x30, 0x6b, 0x00, 0x00, 0x4f, 0x6f, 0x00, 0x00, 0x23, 0x70, 0x00, 0x00, 0xcc, 0x70, 0x00, 0x00, 0xba, 0x71, 0x00, 0x00, 0x04, 0x73, 0x00, 0x00, 0x57, 0x73, 0x00, 0x00, 0xee, 0x73, 0x00, 0x00, 0x6e, 0x74, 0x00, 0x00, 0xa8, 0x74, 0x00, 0x00, 0x11, 0x75, 0x00, 0x00, 0x9e, 0x75, 0x00, 0x00, 0x40, 0x76, 0x00, 0x00, 0x6a, 0x88, 0x00, 0x00, 0x7a, 0x88, 0x00, 0x00, 0x93, 0x88, 0x00, 0x00, 0x15, 0x89, 0x00, 0x00, 0xfc, 0x89, 0x00, 0x00, 0xa5, 0x8a, 0x00, 0x00, 0xb3, 0x8a, 0x00, 0x00, 0xb6, 0x8a, 0x00, 0x00, 0xb7, 0x8a, 0x00, 0x00, 0x97, 0x8b, 0x00, 0x00, 0xac, 0x8b, 0x00, 0x00, 0x3b, 0x8c, 0x00, 0x00, 0x75, 0x8c, 0x00, 0x00, 0xa7, 0x8c, 0x00, 0x00, 0xdb, 0x8c, 0x00, 0x00, 0x13, 0x8d, 0x00, 0x00, 0x72, 0x8d, 0x00, 0x00, 0x54, 0x8e, 0x00, 0x00, 0xa3, 0x8e, 0x00, 0x00, 0xe6, 0x8e, 0x00, 0x00, 0x12, 0x8f, 0x00, 0x00, 0xf2, 0x8f, 0x00, 0x00, 0xf8, 0x8f, 0x00, 0x00, 0xfa, 0x8f, 0x00, 0x00, 0x10, 0x94, 0x00, 0x00, 0x5c, 0x96, 0x00, 0x00, 0x5d, 0x96, 0x00, 0x00, 0xee, 0x99, 0x00, 0x00, 0xef, 0x99, 0x00, 0x00, 0xf0, 0x99, 0x00, 0x00, 0xf1, 0x99, 0x00, 0x00, 0xf2, 0x99, 0x00, 0x00, 0xf3, 0x99, 0x00, 0x00, 0xf4, 0x99, 0x00, 0x00, 0xf5, 0x99, 0x00, 0x00, 0xf6, 0x99, 0x00, 0x00, 0x68, 0x9a, 0x00, 0x00, 0x6a, 0x9a, 0x00, 0x00, 0x6c, 0x9a, 0x00, 0x00, 0x6e, 0x9a, 0x00, 0x00, 0x6f, 0x9a, 0x00, 0x00, 0x1e, 0x9d, 0x00, 0x00, 0x4e, 0x9d, 0x00, 0x00, 0x7b, 0x9d, 0x00, 0x00, 0x0a, 0x9e, 0x00, 0x00, 0x7d, 0x9e, 0x00, 0x00, 0xc4, 0x9e, 0x00, 0x00, 0xf4, 0x9e, 0x00, 0x00, 0x28, 0x9f, 0x00, 0x00, 0x8d, 0x9f, 0x00, 0x00, 0x91, 0x9f, 0x00, 0x00, 0xb2, 0x9f, 0x00, 0x00, 0x1d, 0xa0, 0x00, 0x00, 0x3f, 0xa0, 0x00, 0x00, 0x73, 0xa0, 0x00, 0x00, 0x97, 0xa0, 0x00, 0x00, 0x09, 0xa1, 0x00, 0x00, 0x2e, 0xa1, 0x00, 0x00, 0x45, 0xa1, 0x00, 0x00, 0x74, 0xa1, 0x00, 0x00, 0xce, 0xa1, 0x00, 0x00, 0xd6, 0xa1, 0x00, 0x00, 0xfb, 0xa1, 0x00, 0x00, 0xfc, 0xa1, 0x00, 0x00, 0x46, 0xa2, 0x00, 0x00, 0x47, 0xa2, 0x00, 0x00, 0x49, 0xa2, 0x00, 0x00, 0x50, 0xa2, 0x00, 0x00, 0xac, 0xa2, 0x00, 0x00, 0xbc, 0xa2, 0x00, 0x00, 0x09, 0xa3, 0x00, 0x00, 0x45, 0xa3, 0x00, 0x00, 0x54, 0xa3, 0x00, 0x00, 0x5a, 0xa3, 0x00, 0x00, 0xab, 0xa3, 0x00, 0x00, 0xb5, 0xa3, 0x00, 0x00, 0x20, 0xa4, 0x00, 0x00, 0x21, 0xa4, 0x00, 0x00, 0x25, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00, 0x2e, 0xa4, 0x00, 0x00, 0xbd, 0xa5, 0x00, 0x00, 0x0e, 0xa6, 0x00, 0x00, 0x11, 0xa6, 0x00, 0x00, 0x2d, 0xa6, 0x00, 0x00, 0x66, 0xa6, 0x00, 0x00, 0xc1, 0xb1, 0x00, 0x00, 0x7f, 0xb2, 0x00, 0x00, 0xbe, 0xb2, 0x00, 0x00, 0xcf, 0xb2, 0x00, 0x00, } ; SendCharacterReply(0,false,0x0A,ByteBuffer(packet5,sizeof(packet5))); unsigned char packet6[] = { // 6. Paket // unknown atm - please add comment if you know what this does 0x10, 0x00, 0xba, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x01, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, } ; SendCharacterReply(0,false,0x0B,ByteBuffer(packet6,sizeof(packet6))); unsigned char packet7[] = { //inventory 0x10, 0x00, 0x3c, 0x03, 0x00, 0xea, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x01, 0xeb, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x02, 0xf7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x8a, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x04, 0xe0, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x05, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x06, 0x3d, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x07, 0x26, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x08, 0xed, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x6e, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x88, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0b, 0x42, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0c, 0x40, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x0d, 0xc8, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x0e, 0xb3, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0xde, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x3d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x11, 0xd7, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x12, 0x70, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x13, 0xb3, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x14, 0x35, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x15, 0xe2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x16, 0x0a, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x17, 0x4f, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xb3, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x19, 0x4b, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x1a, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x73, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1d, 0xb7, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1e, 0xe6, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x65, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0xac, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x21, 0x89, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22, 0x38, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x23, 0x11, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x24, 0x53, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xdf, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, 0x68, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x27, 0xee, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x28, 0x39, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x2a, 0x11, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2b, 0xe6, 0x26, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2c, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x2d, 0xb4, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x2e, 0xf0, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x2f, 0x83, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x30, 0x3d, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x3d, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x5d, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x33, 0xe5, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x34, 0x4c, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x35, 0x73, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x36, 0xf2, 0x99, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x37, 0xb3, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x38, 0xf7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x39, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3a, 0x9b, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3b, 0xca, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x3c, 0xb6, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x3d, 0x2b, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3e, 0x93, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3f, 0x7e, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0xd5, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x41, 0xea, 0x26, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0xde, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x43, 0xe3, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x9f, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x46, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x49, 0x69, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x4a, 0x1d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x4e, 0x26, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x50, 0x3b, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x51, 0x1c, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x52, 0xe2, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x53, 0xef, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x3e, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x55, 0x9b, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xf2, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x58, 0x6e, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x59, 0x50, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x08, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5b, 0xef, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5c, 0x5a, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x62, 0xc5, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x63, 0x95, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x64, 0x24, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x65, 0x95, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x66, 0x2c, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, 0xc3, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x6a, 0x86, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, } ; SendCharacterReply(0,false,0x05,ByteBuffer(packet7,sizeof(packet7))); unsigned char packet8[] = { // 8. Paket // ability loadout 0x10, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x32, 0x08, 0x00, 0x80, 0x07, 0x00, 0x00, 0xe4, 0x00, 0x80, 0x0b, 0x00, 0x00, 0xe0, 0x02, 0x80, 0x0c, 0x00, 0x00, 0x64, 0x03, 0x80, 0x0e, 0x00, 0x00, 0x34, 0x01, 0x80, 0x11, 0x00, 0x32, 0xb4, 0x00, 0x80, 0x16, 0x00, 0x32, 0x2c, 0x00, 0x80, 0x29, 0x00, 0x32, 0xd4, 0x04, 0x80, 0x2b, 0x00, 0x00, 0xdc, 0x04, 0x80, 0x2f, 0x00, 0x32, 0x28, 0x00, 0x80, 0x30, 0x00, 0x32, 0x30, 0x00, 0x80, 0x42, 0x00, 0x32, 0x20, 0x05, 0x80, 0x5d, 0x00, 0x00, 0xe8, 0x00, 0x80, 0x5e, 0x00, 0x32, 0xd0, 0x00, 0x80, 0x5f, 0x00, 0x32, 0x7c, 0x01, 0x80, 0x68, 0x00, 0x00, 0x58, 0x01, 0x80, 0x6b, 0x00, 0x00, 0x88, 0x01, 0x80, 0x6f, 0x00, 0x00, 0x1c, 0x05, 0x80, 0x99, 0x00, 0x01, 0x28, 0x05, 0x80, 0xa4, 0x00, 0x00, 0xa4, 0x00, 0x80, 0xa6, 0x00, 0x00, 0xac, 0x00, 0x80, 0xac, 0x00, 0x00, 0xec, 0x00, 0x80, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x80, 0xb1, 0x00, 0x00, 0x04, 0x01, 0x80, 0xb8, 0x00, 0x32, 0x24, 0x01, 0x80, 0xbb, 0x00, 0x32, 0x30, 0x01, 0x80, 0xbc, 0x00, 0x00, 0x4c, 0x01, 0x80, 0xc5, 0x00, 0x00, 0xa0, 0x00, 0x80, 0xd8, 0x00, 0x01, 0xec, 0x04, 0x80, 0xdd, 0x00, 0x01, 0x2c, 0x05, 0x80, 0xea, 0x00, 0x01, 0xe8, 0x04, 0x80, 0x0d, 0x01, 0x01, 0x34, 0x05, 0x80, 0x28, 0x01, 0x00, 0xe0, 0x04, 0x80, 0x2c, 0x01, 0x01, 0x38, 0x05, 0x80, 0x31, 0x01, 0x32, 0x1c, 0x06, 0x80, 0x34, 0x01, 0x01, 0x30, 0x06, 0x80, 0x35, 0x01, 0x01, 0x18, 0x06, 0x80, 0x37, 0x01, 0x32, 0x74, 0x07, 0x80, 0x3e, 0x01, 0x01, 0x80, 0x07, 0x80, 0x49, 0x01, 0x00, 0x84, 0x01, 0x80, 0x52, 0x01, 0x00, 0xd8, 0x08, 0x80, 0x56, 0x01, 0x01, 0x24, 0x05, 0x80, 0x58, 0x01, 0x01, 0xd8, 0x04, 0x80, 0x73, 0x01, 0x01, 0x88, 0x07, 0x80, 0x81, 0x01, 0x00, 0x20, 0x06, 0x80, 0x82, 0x01, 0x00, 0x28, 0x06, 0x80, 0x89, 0x01, 0x32, 0xd0, 0x09, 0x80, 0xa6, 0x01, 0x00, 0x1c, 0x0f, 0x80, 0xe7, 0x01, 0x32, 0x34, 0x11, 0x80, 0xf4, 0x01, 0x32, 0xb8, 0x0f, 0x80, } ; SendCharacterReply(0,false,0x06,ByteBuffer(packet8,sizeof(packet8))); unsigned char packet9[] = { // Abilitys & codebits? 0x10, 0x00, 0x24, 0x0c, 0x00, 0x00, 0x32, 0x08, 0x00, 0x80, 0x01, 0x00, 0x01, 0x48, 0x00, 0x80, 0x02, 0x00, 0x01, 0x7c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x08, 0x02, 0x80, 0x04, 0x00, 0x00, 0x14, 0x03, 0x80, 0x05, 0x00, 0x01, 0x30, 0x04, 0x80, 0x06, 0x00, 0x01, 0xb4, 0x00, 0x80, 0x07, 0x00, 0x00, 0xe4, 0x00, 0x80, 0x08, 0x00, 0x00, 0x18, 0x03, 0x80, 0x09, 0x00, 0x0f, 0x94, 0x00, 0x80, 0x0a, 0x00, 0x00, 0xe0, 0x02, 0x80, 0x0b, 0x00, 0x00, 0xe0, 0x02, 0x80, 0x0c, 0x00, 0x00, 0x64, 0x03, 0x80, 0x0d, 0x00, 0x00, 0x90, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x34, 0x01, 0x80, 0x0f, 0x00, 0x01, 0x8c, 0x00, 0x80, 0x10, 0x00, 0x00, 0x6c, 0x00, 0x80, 0x11, 0x00, 0x32, 0xb4, 0x00, 0x80, 0x12, 0x00, 0x00, 0xe4, 0x02, 0x80, 0x13, 0x00, 0x00, 0x10, 0x03, 0x80, 0x14, 0x00, 0x01, 0x64, 0x00, 0x80, 0x15, 0x00, 0x32, 0x20, 0x04, 0x80, 0x16, 0x00, 0x32, 0x2c, 0x00, 0x80, 0x17, 0x00, 0x01, 0xac, 0x09, 0x80, 0x18, 0x00, 0x01, 0x2c, 0x00, 0x80, 0x19, 0x00, 0x0f, 0x94, 0x00, 0x80, 0x1a, 0x00, 0x32, 0xc4, 0x01, 0x80, 0x1b, 0x00, 0x01, 0x08, 0x00, 0x80, 0x1c, 0x00, 0x01, 0x84, 0x00, 0x80, 0x1d, 0x00, 0x00, 0xf8, 0x03, 0x80, 0x1e, 0x00, 0x1a, 0x38, 0x02, 0x80, 0x1f, 0x00, 0x01, 0x04, 0x00, 0x80, 0x20, 0x00, 0x00, 0x6c, 0x02, 0x80, 0x21, 0x00, 0x01, 0x24, 0x05, 0x80, 0x22, 0x00, 0x32, 0xb4, 0x09, 0x80, 0x23, 0x00, 0x32, 0x64, 0x06, 0x80, 0x24, 0x00, 0x01, 0x68, 0x00, 0x80, 0x25, 0x00, 0x87, 0xdf, 0x11, 0x84, 0x26, 0x00, 0x00, 0x04, 0x00, 0x80, 0x27, 0x00, 0x00, 0x1c, 0x00, 0x80, 0x28, 0x00, 0x32, 0x54, 0x04, 0x80, 0x29, 0x00, 0x32, 0xd4, 0x04, 0x80, 0x2a, 0x00, 0x32, 0x10, 0x08, 0x80, 0x2b, 0x00, 0x00, 0xdc, 0x04, 0x80, 0x2c, 0x00, 0x32, 0x24, 0x09, 0x80, 0x2d, 0x00, 0x93, 0xe8, 0x11, 0x84, 0x2e, 0x00, 0x00, 0x38, 0x00, 0x80, 0x2f, 0x00, 0x32, 0x28, 0x00, 0x80, 0x30, 0x00, 0x32, 0x30, 0x00, 0x80, 0x31, 0x00, 0x00, 0x2f, 0x4f, 0x84, 0x32, 0x00, 0x01, 0x18, 0x05, 0x80, 0x33, 0x00, 0x80, 0x2d, 0x4f, 0x84, 0x34, 0x00, 0x32, 0x00, 0x08, 0x80, 0x35, 0x00, 0x00, 0x0c, 0x02, 0x80, 0x36, 0x00, 0x32, 0x10, 0x02, 0x80, 0x37, 0x00, 0x01, 0x94, 0x05, 0x80, 0x38, 0x00, 0x01, 0xc4, 0x05, 0x80, 0x39, 0x00, 0x0b, 0x34, 0x00, 0x80, 0x3a, 0x00, 0x00, 0x78, 0x00, 0x80, 0x3b, 0x00, 0x32, 0x5c, 0x00, 0x80, 0x3c, 0x00, 0x32, 0x18, 0x08, 0x80, 0x3d, 0x00, 0x32, 0x14, 0x02, 0x80, 0x3e, 0x00, 0x01, 0xe4, 0x04, 0x80, 0x3f, 0x00, 0x00, 0x70, 0x00, 0x80, 0x40, 0x00, 0x01, 0x84, 0x07, 0x80, 0x41, 0x00, 0x00, 0x20, 0x00, 0x80, 0x42, 0x00, 0x32, 0x20, 0x05, 0x80, 0x43, 0x00, 0x00, 0x14, 0x00, 0x80, 0x44, 0x00, 0x10, 0xe1, 0x11, 0x84, 0x45, 0x00, 0x32, 0xa4, 0x04, 0x80, 0x46, 0x00, 0x00, 0x0c, 0x08, 0x80, 0x47, 0x00, 0x32, 0x40, 0x08, 0x80, 0x48, 0x00, 0x00, 0x0c, 0x08, 0x80, 0x49, 0x00, 0x00, 0x18, 0x00, 0x80, 0x4a, 0x00, 0x01, 0x48, 0x09, 0x80, 0x4b, 0x00, 0x01, 0x38, 0x09, 0x80, 0x4c, 0x00, 0x00, 0x18, 0x02, 0x80, 0x4d, 0x00, 0x80, 0xc6, 0x04, 0x84, 0x4e, 0x00, 0x0e, 0x7c, 0x01, 0x80, 0x4f, 0x00, 0x02, 0x38, 0x4f, 0x84, 0x50, 0x00, 0x00, 0x24, 0x02, 0x80, 0x51, 0x00, 0x00, 0x28, 0x02, 0x80, 0x52, 0x00, 0x00, 0x24, 0x00, 0x80, 0x53, 0x00, 0x00, 0x3c, 0x00, 0x80, 0x54, 0x00, 0x00, 0x4c, 0x00, 0x80, 0x55, 0x00, 0x20, 0xdc, 0x07, 0x80, 0x56, 0x00, 0x00, 0x58, 0x00, 0x80, 0x57, 0x00, 0x00, 0x2c, 0x02, 0x80, 0x58, 0x00, 0x00, 0x50, 0x00, 0x80, 0x59, 0x00, 0x00, 0x60, 0x00, 0x80, 0x5a, 0x00, 0x32, 0x50, 0x04, 0x80, 0x5b, 0x00, 0x00, 0x34, 0x02, 0x80, 0x5c, 0x00, 0x0a, 0xb0, 0x00, 0x80, 0x5d, 0x00, 0x00, 0xe8, 0x00, 0x80, 0x5e, 0x00, 0x32, 0xd0, 0x00, 0x80, 0x5f, 0x00, 0x32, 0x7c, 0x01, 0x80, 0x60, 0x00, 0x00, 0xc4, 0x00, 0x80, 0x61, 0x00, 0x01, 0xa8, 0x11, 0x80, 0x62, 0x00, 0x11, 0x4c, 0x02, 0x80, 0x63, 0x00, 0x32, 0x28, 0x01, 0x80, 0x64, 0x00, 0x01, 0x5c, 0x04, 0x80, 0x65, 0x00, 0x01, 0x30, 0x01, 0x80, 0x66, 0x00, 0x00, 0x64, 0x02, 0x80, 0x67, 0x00, 0x00, 0x40, 0x01, 0x80, 0x68, 0x00, 0x00, 0x58, 0x01, 0x80, 0x69, 0x00, 0x00, 0x84, 0x01, 0x80, 0x6a, 0x00, 0x01, 0x78, 0x02, 0x80, 0x6b, 0x00, 0x00, 0x88, 0x01, 0x80, 0x6c, 0x00, 0x00, 0xa4, 0x02, 0x80, 0x6d, 0x00, 0x00, 0xa8, 0x02, 0x80, 0x6e, 0x00, 0x00, 0xa8, 0x03, 0x80, 0x6f, 0x00, 0x00, 0x1c, 0x05, 0x80, 0x70, 0x00, 0x00, 0x3c, 0x02, 0x80, 0x71, 0x00, 0x00, 0xe4, 0x02, 0x80, 0x72, 0x00, 0x00, 0x1c, 0x0a, 0x80, 0x73, 0x00, 0x01, 0xac, 0x11, 0x80, 0x74, 0x00, 0x05, 0x5c, 0x03, 0x80, 0x75, 0x00, 0x05, 0x94, 0x02, 0x80, 0x76, 0x00, 0x32, 0x90, 0x02, 0x80, 0x77, 0x00, 0x0a, 0x84, 0x02, 0x80, 0x78, 0x00, 0x00, 0x68, 0x02, 0x80, 0x79, 0x00, 0x00, 0x60, 0x02, 0x80, 0x7a, 0x00, 0x01, 0xe0, 0x07, 0x80, 0x7b, 0x00, 0x00, 0x58, 0x02, 0x80, 0x7c, 0x00, 0x00, 0x50, 0x02, 0x80, 0x7d, 0x00, 0x00, 0x48, 0x02, 0x80, 0x7e, 0x00, 0x00, 0x44, 0x02, 0x80, 0x7f, 0x00, 0x01, 0x38, 0x02, 0x80, 0x80, 0x00, 0x00, 0x34, 0x02, 0x80, 0x81, 0x00, 0x00, 0x30, 0x02, 0x80, 0x82, 0x00, 0x00, 0x28, 0x02, 0x80, 0x83, 0x00, 0x01, 0x9c, 0x05, 0x80, 0x84, 0x00, 0x0a, 0x1c, 0x02, 0x80, 0x85, 0x00, 0x00, 0xf8, 0x01, 0x80, 0x86, 0x00, 0x01, 0xf4, 0x01, 0x80, 0x87, 0x00, 0x0b, 0xf0, 0x01, 0x80, 0x88, 0x00, 0x20, 0xec, 0x01, 0x80, 0x89, 0x00, 0x8d, 0xe5, 0x11, 0x84, 0x8a, 0x00, 0x1e, 0xe0, 0x01, 0x80, 0x8b, 0x00, 0x18, 0xd0, 0x01, 0x80, 0x8c, 0x00, 0x00, 0xa4, 0x01, 0x80, 0x8d, 0x00, 0x01, 0x04, 0x02, 0x80, 0x8e, 0x00, 0x2d, 0x80, 0x00, 0x80, 0x8f, 0x00, 0x00, 0x74, 0x00, 0x80, 0x90, 0x00, 0x32, 0xbc, 0x06, 0x80, 0x91, 0x00, 0x8f, 0xe6, 0x11, 0x84, 0x92, 0x00, 0x00, 0x00, 0x02, 0x80, 0x93, 0x00, 0x32, 0x58, 0x04, 0x80, 0x94, 0x00, 0x17, 0xf4, 0x01, 0x80, 0x95, 0x00, 0x00, 0xe8, 0x01, 0x80, 0x96, 0x00, 0x00, 0xd8, 0x01, 0x80, 0x97, 0x00, 0x00, 0xac, 0x01, 0x80, 0x98, 0x00, 0x13, 0x94, 0x01, 0x80, 0x99, 0x00, 0x01, 0x28, 0x05, 0x80, 0x9a, 0x00, 0x01, 0xb4, 0x06, 0x80, 0x9b, 0x00, 0x00, 0x28, 0x09, 0x80, 0x9c, 0x00, 0x00, 0x30, 0x09, 0x80, 0x9d, 0x00, 0x32, 0x80, 0x09, 0x80, 0x9e, 0x00, 0x00, 0x8c, 0x09, 0x80, 0x9f, 0x00, 0x01, 0x6c, 0x04, 0x80, 0xa0, 0x00, 0x00, 0x4c, 0x04, 0x80, 0xa1, 0x00, 0x01, 0xbc, 0x02, 0x80, 0xa2, 0x00, 0x32, 0x24, 0x08, 0x80, 0xa3, 0x00, 0x00, 0x98, 0x00, 0x80, 0xa4, 0x00, 0x00, 0xa4, 0x00, 0x80, 0xa5, 0x00, 0x00, 0xa8, 0x00, 0x80, 0xa6, 0x00, 0x00, 0xac, 0x00, 0x80, 0xa7, 0x00, 0x00, 0xb8, 0x00, 0x80, 0xa8, 0x00, 0x00, 0xbc, 0x00, 0x80, 0xa9, 0x00, 0x00, 0xc0, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xc8, 0x00, 0x80, 0xab, 0x00, 0x00, 0xcc, 0x00, 0x80, 0xac, 0x00, 0x00, 0xec, 0x00, 0x80, 0xad, 0x00, 0x00, 0xf0, 0x00, 0x80, 0xae, 0x00, 0x00, 0xf4, 0x00, 0x80, 0xaf, 0x00, 0x00, 0xfc, 0x00, 0x80, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x80, 0xb1, 0x00, 0x00, 0x04, 0x01, 0x80, 0xb2, 0x00, 0x00, 0x08, 0x01, 0x80, 0xb3, 0x00, 0x00, 0x0c, 0x01, 0x80, 0xb4, 0x00, 0x00, 0x10, 0x01, 0x80, 0xb5, 0x00, 0x00, 0x14, 0x01, 0x80, 0xb6, 0x00, 0x14, 0x18, 0x01, 0x80, 0xb7, 0x00, 0x00, 0x20, 0x01, 0x80, 0xb8, 0x00, 0x32, 0x24, 0x01, 0x80, 0xb9, 0x00, 0x01, 0x28, 0x01, 0x80, 0xba, 0x00, 0x32, 0x2c, 0x01, 0x80, 0xbb, 0x00, 0x32, 0x30, 0x01, 0x80, 0xbc, 0x00, 0x00, 0x4c, 0x01, 0x80, 0xbd, 0x00, 0x00, 0x64, 0x01, 0x80, 0xbe, 0x00, 0x00, 0x70, 0x01, 0x80, 0xbf, 0x00, 0x00, 0xb4, 0x02, 0x80, 0xc0, 0x00, 0x00, 0xa8, 0x03, 0x80, 0xc1, 0x00, 0x00, 0x14, 0x05, 0x80, 0xc2, 0x00, 0x01, 0xda, 0x11, 0x84, 0xc3, 0x00, 0x08, 0xdb, 0x11, 0x84, 0xc4, 0x00, 0x00, 0x04, 0x08, 0x80, 0xc5, 0x00, 0x00, 0xa0, 0x00, 0x80, 0xc6, 0x00, 0x00, 0x9c, 0x00, 0x80, 0xc7, 0x00, 0x00, 0xd4, 0x00, 0x80, 0xc8, 0x00, 0x00, 0xdc, 0x00, 0x80, 0xc9, 0x00, 0x00, 0xe0, 0x00, 0x80, 0xca, 0x00, 0x00, 0xf8, 0x00, 0x80, 0xcb, 0x00, 0x01, 0x18, 0x01, 0x80, 0xcc, 0x00, 0x32, 0x1c, 0x01, 0x80, 0xcd, 0x00, 0x01, 0xf4, 0x05, 0x80, 0xce, 0x00, 0x01, 0x18, 0x01, 0x80, 0xcf, 0x00, 0x01, 0xb0, 0x06, 0x80, 0xd0, 0x00, 0x01, 0x10, 0x04, 0x80, 0xd1, 0x00, 0x32, 0x14, 0x08, 0x80, 0xd2, 0x00, 0x00, 0x0c, 0x04, 0x80, 0xd3, 0x00, 0x00, 0x08, 0x08, 0x80, 0xd4, 0x00, 0x32, 0x08, 0x04, 0x80, 0xd5, 0x00, 0x32, 0x90, 0x07, 0x80, 0xd6, 0x00, 0x32, 0xb8, 0x09, 0x80, 0xd7, 0x00, 0x01, 0x70, 0x08, 0x80, 0xd8, 0x00, 0x01, 0xec, 0x04, 0x80, 0xd9, 0x00, 0x32, 0xc4, 0x06, 0x80, 0xda, 0x00, 0x1e, 0xbc, 0x02, 0x80, 0xdb, 0x00, 0x01, 0xac, 0x06, 0x80, 0xdc, 0x00, 0x32, 0x44, 0x09, 0x80, 0xdd, 0x00, 0x01, 0x2c, 0x05, 0x80, 0xde, 0x00, 0x01, 0xcc, 0x06, 0x80, 0xdf, 0x00, 0x01, 0x34, 0x09, 0x80, 0xe0, 0x00, 0x8f, 0xdd, 0x11, 0x84, 0xe1, 0x00, 0x32, 0x98, 0x06, 0x80, 0xe2, 0x00, 0x01, 0x64, 0x07, 0x80, 0xe3, 0x00, 0x01, 0x48, 0x05, 0x80, 0xe4, 0x00, 0x01, 0xac, 0x07, 0x80, 0xe5, 0x00, 0x81, 0xdc, 0x11, 0x84, 0xe6, 0x00, 0x01, 0x24, 0x04, 0x80, 0xe7, 0x00, 0x32, 0xc8, 0x05, 0x80, 0xe8, 0x00, 0x01, 0xe4, 0x06, 0x80, 0xe9, 0x00, 0x01, 0x58, 0x09, 0x80, 0xea, 0x00, 0x01, 0xe8, 0x04, 0x80, 0xeb, 0x00, 0x00, 0xd8, 0x00, 0x80, 0xec, 0x00, 0x32, 0xa4, 0x03, 0x80, 0xed, 0x00, 0x00, 0xac, 0x03, 0x80, 0xee, 0x00, 0x00, 0xb0, 0x03, 0x80, 0xef, 0x00, 0x32, 0xf4, 0x04, 0x80, 0xf0, 0x00, 0x00, 0xf8, 0x04, 0x80, 0xf1, 0x00, 0x00, 0xfc, 0x04, 0x80, 0xf2, 0x00, 0x8b, 0xe3, 0x11, 0x84, 0xf3, 0x00, 0x01, 0x04, 0x04, 0x80, 0xf4, 0x00, 0x01, 0x30, 0x05, 0x80, 0xf5, 0x00, 0x32, 0x4c, 0x05, 0x80, 0xf6, 0x00, 0x13, 0xe9, 0x11, 0x84, 0xf7, 0x00, 0x01, 0xc8, 0x07, 0x80, 0xf8, 0x00, 0x0a, 0x54, 0x02, 0x80, 0xf9, 0x00, 0x00, 0x64, 0x02, 0x80, 0xfa, 0x00, 0x1e, 0x34, 0x04, 0x80, 0xfb, 0x00, 0x01, 0x54, 0x07, 0x80, 0xfc, 0x00, 0x00, 0x54, 0x00, 0x80, 0xfd, 0x00, 0x00, 0x88, 0x00, 0x80, 0xfe, 0x00, 0x00, 0x6c, 0x09, 0x80, 0xff, 0x00, 0x00, 0x70, 0x09, 0x80, 0x00, 0x01, 0x00, 0x74, 0x09, 0x80, 0x01, 0x01, 0x00, 0x64, 0x09, 0x80, 0x02, 0x01, 0x00, 0x68, 0x09, 0x80, 0x03, 0x01, 0x32, 0x60, 0x09, 0x80, 0x04, 0x01, 0x93, 0xe7, 0x11, 0x84, 0x05, 0x01, 0x02, 0xdd, 0x11, 0x84, 0x06, 0x01, 0x01, 0x28, 0x04, 0x80, 0x07, 0x01, 0x01, 0xd0, 0x05, 0x80, 0x08, 0x01, 0x8a, 0xe2, 0x11, 0x84, 0x09, 0x01, 0x01, 0xa4, 0x09, 0x80, 0x0a, 0x01, 0x01, 0x50, 0x07, 0x80, 0x0b, 0x01, 0x01, 0x08, 0x06, 0x80, 0x0c, 0x01, 0x01, 0x80, 0x05, 0x80, 0x0d, 0x01, 0x01, 0x34, 0x05, 0x80, 0x0e, 0x01, 0x01, 0x84, 0x05, 0x80, 0x0f, 0x01, 0x8d, 0xe4, 0x11, 0x84, 0x10, 0x01, 0x07, 0xde, 0x11, 0x84, 0x11, 0x01, 0x01, 0x3c, 0x09, 0x80, 0x12, 0x01, 0x01, 0xa0, 0x09, 0x80, 0x13, 0x01, 0x13, 0xe5, 0x11, 0x84, 0x14, 0x01, 0x86, 0xd9, 0x11, 0x84, 0x15, 0x01, 0x01, 0x84, 0x09, 0x80, 0x16, 0x01, 0x01, 0xe4, 0x05, 0x80, 0x17, 0x01, 0x0d, 0x5a, 0x0f, 0x00, 0x18, 0x01, 0x01, 0x74, 0x08, 0x80, 0x19, 0x01, 0x01, 0x48, 0x07, 0x80, 0x1a, 0x01, 0x32, 0xd0, 0x01, 0x80, 0x1b, 0x01, 0x01, 0x38, 0x07, 0x80, 0x1c, 0x01, 0x01, 0x48, 0x06, 0x80, 0x1d, 0x01, 0x01, 0x68, 0x07, 0x80, 0x1e, 0x01, 0x01, 0xbc, 0x05, 0x80, 0x1f, 0x01, 0x93, 0x52, 0x0e, 0x84, 0x20, 0x01, 0x32, 0x74, 0x05, 0x80, 0x21, 0x01, 0x81, 0x74, 0x4d, 0x84, 0x22, 0x01, 0x01, 0xb0, 0x05, 0x80, 0x23, 0x01, 0x01, 0x3c, 0x04, 0x80, 0x24, 0x01, 0x81, 0x76, 0x4d, 0x84, 0x25, 0x01, 0x01, 0x94, 0x09, 0x80, 0x26, 0x01, 0x85, 0xe6, 0x11, 0x84, 0x27, 0x01, 0x01, 0xb0, 0x09, 0x80, 0x28, 0x01, 0x00, 0xe0, 0x04, 0x80, 0x29, 0x01, 0x01, 0x10, 0x05, 0x80, 0x2a, 0x01, 0x01, 0x4c, 0x07, 0x80, 0x2b, 0x01, 0x01, 0x2c, 0x04, 0x80, 0x2c, 0x01, 0x01, 0x38, 0x05, 0x80, 0x2d, 0x01, 0x0a, 0xe0, 0x11, 0x84, 0x2e, 0x01, 0x01, 0xb8, 0x06, 0x80, 0x2f, 0x01, 0x01, 0x5c, 0x09, 0x80, 0x30, 0x01, 0x01, 0x44, 0x07, 0x80, 0x31, 0x01, 0x32, 0x1c, 0x06, 0x80, 0x32, 0x01, 0x01, 0x2c, 0x06, 0x80, 0x33, 0x01, 0x13, 0xe6, 0x11, 0x84, 0x34, 0x01, 0x01, 0x30, 0x06, 0x80, 0x35, 0x01, 0x01, 0x18, 0x06, 0x80, 0x36, 0x01, 0x01, 0x8c, 0x05, 0x80, 0x37, 0x01, 0x32, 0x74, 0x07, 0x80, 0x38, 0x01, 0x01, 0x78, 0x05, 0x80, 0x39, 0x01, 0x32, 0x34, 0x07, 0x80, 0x3a, 0x01, 0x32, 0x5c, 0x07, 0x80, 0x3b, 0x01, 0x01, 0x60, 0x07, 0x80, 0x3c, 0x01, 0x01, 0xcc, 0x05, 0x80, 0x3d, 0x01, 0x01, 0x4c, 0x06, 0x80, 0x3e, 0x01, 0x01, 0x80, 0x07, 0x80, 0x3f, 0x01, 0x01, 0xa8, 0x06, 0x80, 0x40, 0x01, 0x01, 0x60, 0x05, 0x80, 0x41, 0x01, 0x80, 0xc5, 0x04, 0x84, 0x42, 0x01, 0x01, 0xd8, 0x06, 0x80, 0x43, 0x01, 0x13, 0xe2, 0x11, 0x84, 0x44, 0x01, 0x01, 0xe4, 0x01, 0x80, 0x45, 0x01, 0x00, 0x24, 0x04, 0x80, 0x46, 0x01, 0x01, 0xbc, 0x03, 0x80, 0x47, 0x01, 0x32, 0x2c, 0x11, 0x80, 0x48, 0x01, 0x1e, 0xe0, 0x01, 0x80, 0x49, 0x01, 0x00, 0x84, 0x01, 0x80, 0x4a, 0x01, 0x01, 0x00, 0x05, 0x80, 0x4b, 0x01, 0x01, 0xa4, 0x06, 0x80, 0x4c, 0x01, 0x00, 0x14, 0x03, 0x80, 0x4d, 0x01, 0x01, 0x38, 0x04, 0x80, 0x4e, 0x01, 0x80, 0xde, 0x11, 0x84, 0x4f, 0x01, 0x0a, 0x5c, 0x02, 0x80, 0x50, 0x01, 0x14, 0x78, 0x02, 0x80, 0x51, 0x01, 0x80, 0x54, 0x53, 0x84, 0x52, 0x01, 0x00, 0xd8, 0x08, 0x80, 0x53, 0x01, 0x01, 0x64, 0x05, 0x80, 0x54, 0x01, 0x80, 0xdb, 0x11, 0x84, 0x55, 0x01, 0x19, 0xd8, 0x03, 0x80, 0x56, 0x01, 0x01, 0x24, 0x05, 0x80, 0x57, 0x01, 0x01, 0xd4, 0x05, 0x80, 0x58, 0x01, 0x01, 0xd8, 0x04, 0x80, 0x59, 0x01, 0x01, 0x54, 0x08, 0x80, 0x5a, 0x01, 0x00, 0xec, 0x07, 0x80, 0x5b, 0x01, 0x01, 0xd0, 0x01, 0x80, 0x5c, 0x01, 0x01, 0x60, 0x04, 0x80, 0x5d, 0x01, 0x01, 0x53, 0x53, 0x84, 0x5e, 0x01, 0x32, 0x20, 0x02, 0x80, 0x5f, 0x01, 0x01, 0x8c, 0x06, 0x80, 0x60, 0x01, 0x8a, 0xe0, 0x11, 0x84, 0x61, 0x01, 0x14, 0x1c, 0x02, 0x80, 0x62, 0x01, 0x00, 0x1c, 0x04, 0x80, 0x63, 0x01, 0x01, 0x58, 0x08, 0x80, 0x64, 0x01, 0x32, 0x4c, 0x08, 0x80, 0x65, 0x01, 0x80, 0x75, 0x4d, 0x84, 0x66, 0x01, 0x01, 0x90, 0x05, 0x80, 0x67, 0x01, 0x13, 0xe7, 0x11, 0x84, 0x68, 0x01, 0x93, 0x52, 0x0e, 0x84, 0x69, 0x01, 0x80, 0x80, 0x4d, 0x84, 0x6a, 0x01, 0x01, 0x78, 0x06, 0x80, 0x6b, 0x01, 0x01, 0xa0, 0x06, 0x80, 0x6c, 0x01, 0x01, 0xd8, 0x05, 0x80, 0x6d, 0x01, 0x01, 0x3c, 0x05, 0x80, 0x6e, 0x01, 0x01, 0xc8, 0x06, 0x80, 0x6f, 0x01, 0x01, 0x60, 0x05, 0x80, 0x70, 0x01, 0x01, 0x64, 0x07, 0x80, 0x71, 0x01, 0x01, 0x5c, 0x05, 0x80, 0x72, 0x01, 0x0f, 0xe9, 0x11, 0x84, 0x73, 0x01, 0x01, 0x88, 0x07, 0x80, 0x74, 0x01, 0x32, 0x68, 0x05, 0x80, 0x75, 0x01, 0x01, 0x40, 0x05, 0x80, 0x76, 0x01, 0x01, 0x44, 0x05, 0x80, 0x77, 0x01, 0x01, 0xdc, 0x06, 0x80, 0x78, 0x01, 0x32, 0x38, 0x06, 0x80, 0x79, 0x01, 0x01, 0xdc, 0x05, 0x80, 0x7a, 0x01, 0x01, 0x8c, 0x07, 0x80, 0x7b, 0x01, 0x01, 0x78, 0x07, 0x80, 0x7c, 0x01, 0x01, 0x70, 0x07, 0x80, 0x7d, 0x01, 0x01, 0x6c, 0x07, 0x80, 0x7e, 0x01, 0x01, 0x58, 0x07, 0x80, 0x7f, 0x01, 0x00, 0xd8, 0x04, 0x80, 0x80, 0x01, 0x00, 0x7c, 0x05, 0x80, 0x81, 0x01, 0x00, 0x20, 0x06, 0x80, 0x82, 0x01, 0x00, 0x28, 0x06, 0x80, 0x83, 0x01, 0x00, 0x3c, 0x06, 0x80, 0x84, 0x01, 0x00, 0x44, 0x06, 0x80, 0x85, 0x01, 0x00, 0x50, 0x06, 0x80, 0x86, 0x01, 0x93, 0xe8, 0x11, 0x84, 0x87, 0x01, 0x01, 0x50, 0x05, 0x80, 0x88, 0x01, 0x32, 0x98, 0x05, 0x80, 0x89, 0x01, 0x32, 0xd0, 0x09, 0x80, 0x8a, 0x01, 0x01, 0xe3, 0x11, 0x84, 0x8b, 0x01, 0x00, 0x77, 0x4d, 0x84, 0x8c, 0x01, 0x80, 0xcf, 0x04, 0x84, 0x8d, 0x01, 0x13, 0xe8, 0x11, 0x84, 0x8e, 0x01, 0x01, 0x88, 0x06, 0x80, 0x90, 0x01, 0x01, 0x94, 0x07, 0x80, 0x91, 0x01, 0x01, 0x94, 0x06, 0x80, 0x92, 0x01, 0x92, 0x55, 0x0e, 0x84, 0x93, 0x01, 0x01, 0x58, 0x06, 0x80, 0x94, 0x01, 0x01, 0xac, 0x05, 0x80, 0x95, 0x01, 0x0b, 0xe7, 0x11, 0x84, 0x96, 0x01, 0x80, 0x7f, 0x4d, 0x84, 0x97, 0x01, 0x01, 0x54, 0x05, 0x80, 0x98, 0x01, 0x01, 0x64, 0x08, 0x80, 0x99, 0x01, 0x01, 0x02, 0x00, 0x00, 0x9a, 0x01, 0x01, 0x6c, 0x08, 0x80, 0x9b, 0x01, 0x01, 0x54, 0x53, 0x84, 0x9c, 0x01, 0x01, 0x68, 0x08, 0x80, 0x9d, 0x01, 0x01, 0x80, 0x06, 0x80, 0x9e, 0x01, 0x01, 0xd4, 0x06, 0x80, 0x9f, 0x01, 0x01, 0x68, 0x06, 0x80, 0xa0, 0x01, 0x01, 0xe0, 0x03, 0x80, 0xa1, 0x01, 0x01, 0xe4, 0x07, 0x80, 0xa2, 0x01, 0x10, 0xe6, 0x11, 0x84, 0xa3, 0x01, 0x93, 0x55, 0x0e, 0x84, 0xa4, 0x01, 0x01, 0x48, 0x04, 0x80, 0xa5, 0x01, 0x32, 0x98, 0x09, 0x80, 0xa6, 0x01, 0x00, 0x1c, 0x0f, 0x80, 0xa7, 0x01, 0x32, 0xe0, 0x05, 0x80, 0xa8, 0x01, 0x93, 0x52, 0x0e, 0x84, 0xa9, 0x01, 0x80, 0x82, 0x4d, 0x84, 0xaa, 0x01, 0x01, 0xec, 0x05, 0x80, 0xab, 0x01, 0x01, 0xe8, 0x05, 0x80, 0xac, 0x01, 0x01, 0xfc, 0x05, 0x80, 0xad, 0x01, 0x01, 0x90, 0x06, 0x80, 0xae, 0x01, 0x01, 0xf0, 0x05, 0x80, 0xaf, 0x01, 0x01, 0xf8, 0x05, 0x80, 0xb0, 0x01, 0x01, 0x18, 0x04, 0x80, 0xb1, 0x01, 0x01, 0x00, 0x06, 0x80, 0xb2, 0x01, 0x01, 0x24, 0x06, 0x80, 0xb3, 0x01, 0x01, 0x74, 0x04, 0x80, 0xb4, 0x01, 0x01, 0xc0, 0x05, 0x80, 0xb5, 0x01, 0x00, 0xdc, 0x11, 0x84, 0xb6, 0x01, 0x01, 0xc0, 0x02, 0x80, 0xb7, 0x01, 0x00, 0xea, 0x53, 0x84, 0xb8, 0x01, 0x00, 0x08, 0x02, 0x80, 0xb9, 0x01, 0x00, 0xc3, 0x04, 0x84, 0xba, 0x01, 0x01, 0x50, 0x09, 0x80, 0xbb, 0x01, 0x01, 0xd4, 0x03, 0x80, 0xbc, 0x01, 0x15, 0xd0, 0x00, 0x80, 0xbd, 0x01, 0x0f, 0x53, 0x0e, 0x84, 0xbe, 0x01, 0x0f, 0xe8, 0x11, 0x84, 0xbf, 0x01, 0x01, 0x9c, 0x07, 0x80, 0xc0, 0x01, 0x01, 0x84, 0x06, 0x80, 0xc1, 0x01, 0x14, 0xf0, 0x01, 0x80, 0xc2, 0x01, 0x01, 0xa0, 0x07, 0x80, 0xc4, 0x01, 0x01, 0x68, 0x03, 0x80, 0xc5, 0x01, 0x01, 0xa4, 0x07, 0x80, 0xc6, 0x01, 0x01, 0x04, 0x05, 0x80, 0xc7, 0x01, 0x01, 0x14, 0x04, 0x80, 0xc8, 0x01, 0x13, 0xe7, 0x11, 0x84, 0xc9, 0x01, 0x32, 0x54, 0x06, 0x80, 0xca, 0x01, 0x28, 0xb4, 0x00, 0x80, 0xcb, 0x01, 0x01, 0x5c, 0x06, 0x80, 0xcc, 0x01, 0x93, 0x52, 0x0e, 0x84, 0xcd, 0x01, 0x93, 0xe8, 0x11, 0x84, 0xce, 0x01, 0x01, 0x98, 0x07, 0x80, 0xcf, 0x01, 0x01, 0xa8, 0x07, 0x80, 0xd0, 0x01, 0x81, 0x38, 0x4f, 0x84, 0xd1, 0x01, 0x03, 0x39, 0x4f, 0x84, 0xd2, 0x01, 0x32, 0x30, 0x11, 0x80, 0xd3, 0x01, 0x01, 0xa8, 0x09, 0x80, 0xd4, 0x01, 0x04, 0xdf, 0x11, 0x84, 0xd5, 0x01, 0x13, 0x54, 0x0e, 0x84, 0xd6, 0x01, 0x01, 0x40, 0x04, 0x80, 0xd7, 0x01, 0x00, 0x90, 0x00, 0x80, 0xd8, 0x01, 0x01, 0xe4, 0x07, 0x80, 0xd9, 0x01, 0x00, 0x94, 0x11, 0x80, 0xda, 0x01, 0x01, 0x50, 0x08, 0x80, 0xdb, 0x01, 0x00, 0x40, 0x00, 0x80, 0xdc, 0x01, 0x00, 0x28, 0x04, 0x80, 0xdd, 0x01, 0x01, 0x6c, 0x05, 0x80, 0xde, 0x01, 0x01, 0x70, 0x05, 0x80, 0xdf, 0x01, 0x32, 0xa8, 0x04, 0x80, 0xe0, 0x01, 0x8e, 0x54, 0x0e, 0x84, 0xe1, 0x01, 0x01, 0xa8, 0x05, 0x80, 0xe2, 0x01, 0x01, 0x94, 0x04, 0x80, 0xe3, 0x01, 0x01, 0xe8, 0x07, 0x80, 0xe4, 0x01, 0x83, 0x53, 0x0e, 0x84, 0xe5, 0x01, 0x81, 0xdd, 0x11, 0x84, 0xe6, 0x01, 0x01, 0xb4, 0x03, 0x80, 0xe7, 0x01, 0x32, 0x34, 0x11, 0x80, 0xe8, 0x01, 0x01, 0x78, 0x04, 0x80, 0xe9, 0x01, 0x01, 0xd0, 0x06, 0x80, 0xea, 0x01, 0x01, 0xa0, 0x05, 0x80, 0xeb, 0x01, 0x01, 0x60, 0x08, 0x80, 0xec, 0x01, 0x01, 0x90, 0x04, 0x80, 0xed, 0x01, 0x01, 0xf0, 0x07, 0x80, 0xee, 0x01, 0x93, 0xe8, 0x11, 0x84, 0xef, 0x01, 0x02, 0x52, 0x0e, 0x84, 0xf0, 0x01, 0x80, 0xdd, 0x11, 0x84, 0xf1, 0x01, 0x80, 0xe2, 0x11, 0x84, 0xf2, 0x01, 0x01, 0x8c, 0x04, 0x80, 0xf3, 0x01, 0x01, 0x88, 0x04, 0x80, 0xf4, 0x01, 0x32, 0xb8, 0x0f, 0x80, 0xf5, 0x01, 0x32, 0x60, 0x11, 0x80, 0xf6, 0x01, 0x32, 0xc0, 0x0f, 0x80, 0xf7, 0x01, 0x00, 0xf4, 0x11, 0x80, 0xf8, 0x01, 0x13, 0x54, 0x0e, 0x84, 0xf9, 0x01, 0x0e, 0x55, 0x0e, 0x84, 0xfa, 0x01, 0x80, 0x77, 0x4d, 0x84, 0xfb, 0x01, 0x01, 0x80, 0x04, 0x80, 0xfc, 0x01, 0x87, 0x52, 0x0e, 0x84, 0xfd, 0x01, 0x93, 0x53, 0x0e, 0x84, 0xfe, 0x01, 0x80, 0x7a, 0x4d, 0x84, 0xff, 0x01, 0x00, 0x7a, 0x4d, 0x84, 0x00, 0x02, 0x80, 0x7c, 0x4d, 0x84, 0x01, 0x02, 0x00, 0xe6, 0x4e, 0x84, 0x02, 0x02, 0x80, 0x7d, 0x4d, 0x84, 0x03, 0x02, 0x00, 0x7e, 0x4d, 0x84, 0x04, 0x02, 0x10, 0x54, 0x0e, 0x84, 0x05, 0x02, 0x13, 0x53, 0x0e, 0x84, 0x06, 0x02, 0x1f, 0x70, 0x04, 0x80, 0x07, 0x02, 0x13, 0x54, 0x0e, 0x84, } ; SendCharacterReply(0,false,0x07,ByteBuffer(packet9,sizeof(packet9))); unsigned char packet10[] = { 0x10, 0x00, 0x00, 0x00, } ; SendCharacterReply(0,false,0x0e,ByteBuffer(packet10,sizeof(packet10))); unsigned char packet11[] = { 0x10, 0x00, 0x00, 0x00, } ; SendCharacterReply(swap16(0x1027),true,0x0f,ByteBuffer(packet11,sizeof(packet11))); break; } } } void MarginSocket::SendCharacterReply( uint16 shortAfterId,bool lastPacket,uint8 opcode,ByteBuffer theData ) { numCharacterReplies++; TwofishEncryptedPacket derp; derp << uint8(MS_LoadCharacterReply) << uint32(0) << uint32(worldCharId) << uint16(shortAfterId) << uint8(numCharacterReplies) << uint8(lastPacket) << uint8(opcode); derp.append(&theData.contents()[theData.rpos()],theData.remaining()); SendCrypted(derp); } bool MarginSocket::UdpReady(GameClient *theClient) { if (!readyForUdp) return false; TwofishEncryptedPacket response; response << uint8(MS_EstablishUDPSessionReply) << uint32(0); SendCrypted(response); return true; }