remove old commented out switch statement in LLClientView since this has successfully been split into separate methods for quite some time now

--- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -11025,4855 +11025,12 @@
         /// <param name="Pack">OpenMetaverse.packet</param>
         public void ProcessInPacket(Packet Pack)
         {
-
-            if (ProcessPacketMethod(Pack))
-            {
-                PacketPool.Instance.ReturnPacket(Pack);
-                return;
-            }
-
-            // Main packet processing conditional
-            switch (Pack.Type)
-            {
-                #region CommentedOut
-                /*
-                #region Scene/Avatar
-
-
-                case PacketType.AvatarPropertiesRequest:
-                    AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avatarProperties.AgentData.SessionID != SessionId ||
-                            avatarProperties.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RequestAvatarProperties handlerRequestAvatarProperties = OnRequestAvatarProperties;
-                    if (handlerRequestAvatarProperties != null)
-                    {
-                        handlerRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID);
-                    }
-
-                    break;
-
-                case PacketType.ChatFromViewer:
-                    ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (inchatpack.AgentData.SessionID != SessionId ||
-                            inchatpack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    string fromName = String.Empty; //ClientAvatar.firstname + " " + ClientAvatar.lastname;
-                    byte[] message = inchatpack.ChatData.Message;
-                    byte type = inchatpack.ChatData.Type;
-                    Vector3 fromPos = new Vector3(); // ClientAvatar.Pos;
-                    // UUID fromAgentID = AgentId;
-
-                    int channel = inchatpack.ChatData.Channel;
-
-                    if (OnChatFromClient != null)
-                    {
-                        OSChatMessage args = new OSChatMessage();
-                        args.Channel = channel;
-                        args.From = fromName;
-                        args.Message = Utils.BytesToString(message);
-                        args.Type = (ChatTypeEnum)type;
-                        args.Position = fromPos;
-
-                        args.Scene = Scene;
-                        args.Sender = this;
-                        args.SenderUUID = this.AgentId;
-
-                        ChatMessage handlerChatFromClient = OnChatFromClient;
-                        if (handlerChatFromClient != null)
-                            handlerChatFromClient(this, args);
-                    }
-                    break;
-
-                case PacketType.AvatarPropertiesUpdate:
-                    AvatarPropertiesUpdatePacket avatarProps = (AvatarPropertiesUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avatarProps.AgentData.SessionID != SessionId ||
-                            avatarProps.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UpdateAvatarProperties handlerUpdateAvatarProperties = OnUpdateAvatarProperties;
-                    if (handlerUpdateAvatarProperties != null)
-                    {
-                        AvatarPropertiesUpdatePacket.PropertiesDataBlock Properties = avatarProps.PropertiesData;
-                        UserProfileData UserProfile = new UserProfileData();
-                        UserProfile.ID = AgentId;
-                        UserProfile.AboutText = Utils.BytesToString(Properties.AboutText);
-                        UserProfile.FirstLifeAboutText = Utils.BytesToString(Properties.FLAboutText);
-                        UserProfile.FirstLifeImage = Properties.FLImageID;
-                        UserProfile.Image = Properties.ImageID;
-                        UserProfile.ProfileUrl = Utils.BytesToString(Properties.ProfileURL);
-
-                        handlerUpdateAvatarProperties(this, UserProfile);
-                    }
-                    break;
-
-                case PacketType.ScriptDialogReply:
-                    ScriptDialogReplyPacket rdialog = (ScriptDialogReplyPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (rdialog.AgentData.SessionID != SessionId ||
-                            rdialog.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    int ch = rdialog.Data.ChatChannel;
-                    byte[] msg = rdialog.Data.ButtonLabel;
-                    if (OnChatFromClient != null)
-                    {
-                        OSChatMessage args = new OSChatMessage();
-                        args.Channel = ch;
-                        args.From = String.Empty;
-                        args.Message = Utils.BytesToString(msg);
-                        args.Type = ChatTypeEnum.Shout;
-                        args.Position = new Vector3();
-                        args.Scene = Scene;
-                        args.Sender = this;
-                        ChatMessage handlerChatFromClient2 = OnChatFromClient;
-                        if (handlerChatFromClient2 != null)
-                            handlerChatFromClient2(this, args);
-                    }
-
-                    break;
-
-                case PacketType.ImprovedInstantMessage:
-                    ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (msgpack.AgentData.SessionID != SessionId ||
-                            msgpack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName);
-                    string IMmessage = Utils.BytesToString(msgpack.MessageBlock.Message);
-                    ImprovedInstantMessage handlerInstantMessage = OnInstantMessage;
-
-                    if (handlerInstantMessage != null)
-                    {
-                        GridInstantMessage im = new GridInstantMessage(Scene,
-                                msgpack.AgentData.AgentID,
-                                IMfromName,
-                                msgpack.MessageBlock.ToAgentID,
-                                msgpack.MessageBlock.Dialog,
-                                msgpack.MessageBlock.FromGroup,
-                                IMmessage,
-                                msgpack.MessageBlock.ID,
-                                msgpack.MessageBlock.Offline != 0 ? true : false,
-                                msgpack.MessageBlock.Position,
-                                msgpack.MessageBlock.BinaryBucket);
-
-                        handlerInstantMessage(this, im);
-                    }
-                    break;
-
-                case PacketType.AcceptFriendship:
-                    AcceptFriendshipPacket afriendpack = (AcceptFriendshipPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (afriendpack.AgentData.SessionID != SessionId ||
-                            afriendpack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    // My guess is this is the folder to stick the calling card into
-                    List<UUID> callingCardFolders = new List<UUID>();
-
-                    UUID agentID = afriendpack.AgentData.AgentID;
-                    UUID transactionID = afriendpack.TransactionBlock.TransactionID;
-
-                    for (int fi = 0; fi < afriendpack.FolderData.Length; fi++)
-                    {
-                        callingCardFolders.Add(afriendpack.FolderData[fi].FolderID);
-                    }
-
-                    FriendActionDelegate handlerApproveFriendRequest = OnApproveFriendRequest;
-                    if (handlerApproveFriendRequest != null)
-                    {
-                        handlerApproveFriendRequest(this, agentID, transactionID, callingCardFolders);
-                    }
-                    break;
-
-                case PacketType.DeclineFriendship:
-                    DeclineFriendshipPacket dfriendpack = (DeclineFriendshipPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dfriendpack.AgentData.SessionID != SessionId ||
-                            dfriendpack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnDenyFriendRequest != null)
-                    {
-                        OnDenyFriendRequest(this,
-                                            dfriendpack.AgentData.AgentID,
-                                            dfriendpack.TransactionBlock.TransactionID,
-                                            null);
-                    }
-                    break;
-
-                case PacketType.TerminateFriendship:
-                    TerminateFriendshipPacket tfriendpack = (TerminateFriendshipPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (tfriendpack.AgentData.SessionID != SessionId ||
-                            tfriendpack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UUID listOwnerAgentID = tfriendpack.AgentData.AgentID;
-                    UUID exFriendID = tfriendpack.ExBlock.OtherID;
-
-                    FriendshipTermination handlerTerminateFriendship = OnTerminateFriendship;
-                    if (handlerTerminateFriendship != null)
-                    {
-                        handlerTerminateFriendship(this, listOwnerAgentID, exFriendID);
-                    }
-                    break;
-
-                case PacketType.RezObject:
-                    RezObjectPacket rezPacket = (RezObjectPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (rezPacket.AgentData.SessionID != SessionId ||
-                            rezPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RezObject handlerRezObject = OnRezObject;
-                    if (handlerRezObject != null)
-                    {
-                        handlerRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd,
-                                         rezPacket.RezData.RayStart, rezPacket.RezData.RayTargetID,
-                                         rezPacket.RezData.BypassRaycast, rezPacket.RezData.RayEndIsIntersection,
-                                         rezPacket.RezData.RezSelected, rezPacket.RezData.RemoveItem,
-                                         rezPacket.RezData.FromTaskID);
-                    }
-                    break;
-
-                case PacketType.DeRezObject:
-                    DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (DeRezPacket.AgentData.SessionID != SessionId ||
-                            DeRezPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DeRezObject handlerDeRezObject = OnDeRezObject;
-                    if (handlerDeRezObject != null)
-                    {
-                        List<uint> deRezIDs = new List<uint>();
-
-                        foreach (DeRezObjectPacket.ObjectDataBlock data in
-                            DeRezPacket.ObjectData)
-                        {
-                            deRezIDs.Add(data.ObjectLocalID);
-                        }
-                        // It just so happens that the values on the DeRezAction enumerator match the Destination
-                        // values given by a Second Life client
-                        handlerDeRezObject(this, deRezIDs,
-                                           DeRezPacket.AgentBlock.GroupID,
-                                           (DeRezAction)DeRezPacket.AgentBlock.Destination,
-                                           DeRezPacket.AgentBlock.DestinationID);
-
-                    }
-                    break;
-
-                case PacketType.ModifyLand:
-                    ModifyLandPacket modify = (ModifyLandPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (modify.AgentData.SessionID != SessionId ||
-                            modify.AgentData.AgentID != AgentId)
-                            break;
-                    }
-
-                    #endregion
-                    //m_log.Info("[LAND]: LAND:" + modify.ToString());
-                    if (modify.ParcelData.Length > 0)
-                    {
-                        if (OnModifyTerrain != null)
-                        {
-                            for (int i = 0; i < modify.ParcelData.Length; i++)
-                            {
-                                ModifyTerrain handlerModifyTerrain = OnModifyTerrain;
-                                if (handlerModifyTerrain != null)
-                                {
-                                    handlerModifyTerrain(AgentId, modify.ModifyBlock.Height, modify.ModifyBlock.Seconds,
-                                                         modify.ModifyBlock.BrushSize,
-                                                         modify.ModifyBlock.Action, modify.ParcelData[i].North,
-                                                         modify.ParcelData[i].West, modify.ParcelData[i].South,
-                                                         modify.ParcelData[i].East, AgentId);
-                                }
-                            }
-                        }
-                    }
-
-                    break;
-
-                case PacketType.RegionHandshakeReply:
-
-                    Action<IClientAPI> handlerRegionHandShakeReply = OnRegionHandShakeReply;
-                    if (handlerRegionHandShakeReply != null)
-                    {
-                        handlerRegionHandShakeReply(this);
-                    }
-
-                    break;
-
-                case PacketType.AgentWearablesRequest:
-                    GenericCall2 handlerRequestWearables = OnRequestWearables;
-
-                    if (handlerRequestWearables != null)
-                    {
-                        handlerRequestWearables();
-                    }
-
-                    Action<IClientAPI> handlerRequestAvatarsData = OnRequestAvatarsData;
-
-                    if (handlerRequestAvatarsData != null)
-                    {
-                        handlerRequestAvatarsData(this);
-                    }
-
-                    break;
-
-                case PacketType.AgentSetAppearance:
-                    AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (appear.AgentData.SessionID != SessionId ||
-                            appear.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    SetAppearance handlerSetAppearance = OnSetAppearance;
-                    if (handlerSetAppearance != null)
-                    {
-                        // Temporarily protect ourselves from the mantis #951 failure.
-                        // However, we could do this for several other handlers where a failure isn't terminal
-                        // for the client session anyway, in order to protect ourselves against bad code in plugins
-                        try
-                        {
-                            byte[] visualparams = new byte[appear.VisualParam.Length];
-                            for (int i = 0; i < appear.VisualParam.Length; i++)
-                                visualparams[i] = appear.VisualParam[i].ParamValue;
-
-                            Primitive.TextureEntry te = null;
-                            if (appear.ObjectData.TextureEntry.Length > 1)
-                                te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length);
-
-                            handlerSetAppearance(te, visualparams);
-                        }
-                        catch (Exception e)
-                        {
-                            m_log.ErrorFormat(
-                                "[CLIENT VIEW]: AgentSetApperance packet handler threw an exception, {0}",
-                                e);
-                        }
-                    }
-
-                    break;
-
-                case PacketType.AgentIsNowWearing:
-                    if (OnAvatarNowWearing != null)
-                    {
-                        AgentIsNowWearingPacket nowWearing = (AgentIsNowWearingPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (nowWearing.AgentData.SessionID != SessionId ||
-                                nowWearing.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        AvatarWearingArgs wearingArgs = new AvatarWearingArgs();
-                        for (int i = 0; i < nowWearing.WearableData.Length; i++)
-                        {
-                            AvatarWearingArgs.Wearable wearable =
-                                new AvatarWearingArgs.Wearable(nowWearing.WearableData[i].ItemID,
-                                                               nowWearing.WearableData[i].WearableType);
-                            wearingArgs.NowWearing.Add(wearable);
-                        }
-
-                        AvatarNowWearing handlerAvatarNowWearing = OnAvatarNowWearing;
-                        if (handlerAvatarNowWearing != null)
-                        {
-                            handlerAvatarNowWearing(this, wearingArgs);
-                        }
-                    }
-                    break;
-
-                case PacketType.RezSingleAttachmentFromInv:
-                    RezSingleAttachmentFromInv handlerRezSingleAttachment = OnRezSingleAttachmentFromInv;
-                    if (handlerRezSingleAttachment != null)
-                    {
-                        RezSingleAttachmentFromInvPacket rez = (RezSingleAttachmentFromInvPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (rez.AgentData.SessionID != SessionId ||
-                                rez.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        handlerRezSingleAttachment(this, rez.ObjectData.ItemID,
-                                                   rez.ObjectData.AttachmentPt);
-                    }
-
-                    break;
-
-                case PacketType.RezMultipleAttachmentsFromInv:
-                    RezMultipleAttachmentsFromInv handlerRezMultipleAttachments = OnRezMultipleAttachmentsFromInv;
-                    if (handlerRezMultipleAttachments != null)
-                    {
-                        RezMultipleAttachmentsFromInvPacket rez = (RezMultipleAttachmentsFromInvPacket)Pack;
-                        handlerRezMultipleAttachments(this, rez.HeaderData,
-                                                      rez.ObjectData);
-                    }
-
-                    break;
-
-                case PacketType.DetachAttachmentIntoInv:
-                    UUIDNameRequest handlerDetachAttachmentIntoInv = OnDetachAttachmentIntoInv;
-                    if (handlerDetachAttachmentIntoInv != null)
-                    {
-                        DetachAttachmentIntoInvPacket detachtoInv = (DetachAttachmentIntoInvPacket)Pack;
-
-                        #region Packet Session and User Check
-                        // UNSUPPORTED ON THIS PACKET
-                        #endregion
-
-                        UUID itemID = detachtoInv.ObjectData.ItemID;
-                        // UUID ATTACH_agentID = detachtoInv.ObjectData.AgentID;
-
-                        handlerDetachAttachmentIntoInv(itemID, this);
-                    }
-                    break;
-
-                case PacketType.ObjectAttach:
-                    if (OnObjectAttach != null)
-                    {
-                        ObjectAttachPacket att = (ObjectAttachPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (att.AgentData.SessionID != SessionId ||
-                                att.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        ObjectAttach handlerObjectAttach = OnObjectAttach;
-
-                        if (handlerObjectAttach != null)
-                        {
-                            if (att.ObjectData.Length > 0)
-                            {
-                                handlerObjectAttach(this, att.ObjectData[0].ObjectLocalID, att.AgentData.AttachmentPoint, att.ObjectData[0].Rotation, false);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectDetach:
-                    ObjectDetachPacket dett = (ObjectDetachPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dett.AgentData.SessionID != SessionId ||
-                            dett.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    for (int j = 0; j < dett.ObjectData.Length; j++)
-                    {
-                        uint obj = dett.ObjectData[j].ObjectLocalID;
-                        ObjectDeselect handlerObjectDetach = OnObjectDetach;
-                        if (handlerObjectDetach != null)
-                        {
-                            handlerObjectDetach(obj, this);
-                        }
-
-                    }
-                    break;
-
-                case PacketType.ObjectDrop:
-                    ObjectDropPacket dropp = (ObjectDropPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dropp.AgentData.SessionID != SessionId ||
-                            dropp.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    for (int j = 0; j < dropp.ObjectData.Length; j++)
-                    {
-                        uint obj = dropp.ObjectData[j].ObjectLocalID;
-                        ObjectDrop handlerObjectDrop = OnObjectDrop;
-                        if (handlerObjectDrop != null)
-                        {
-                            handlerObjectDrop(obj, this);
-                        }
-                    }
-                    break;
-
-                case PacketType.SetAlwaysRun:
-                    SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (run.AgentData.SessionID != SessionId ||
-                            run.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    SetAlwaysRun handlerSetAlwaysRun = OnSetAlwaysRun;
-                    if (handlerSetAlwaysRun != null)
-                        handlerSetAlwaysRun(this, run.AgentData.AlwaysRun);
-
-                    break;
-
-                case PacketType.CompleteAgentMovement:
-                    GenericCall2 handlerCompleteMovementToRegion = OnCompleteMovementToRegion;
-                    if (handlerCompleteMovementToRegion != null)
-                    {
-                        handlerCompleteMovementToRegion();
-                    }
-                    handlerCompleteMovementToRegion = null;
-
-                    break;
-
-                case PacketType.AgentAnimation:
-                    AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (AgentAni.AgentData.SessionID != SessionId ||
-                            AgentAni.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    StartAnim handlerStartAnim = null;
-                    StopAnim handlerStopAnim = null;
-
-                    for (int i = 0; i < AgentAni.AnimationList.Length; i++)
-                    {
-                        if (AgentAni.AnimationList[i].StartAnim)
-                        {
-                            handlerStartAnim = OnStartAnim;
-                            if (handlerStartAnim != null)
-                            {
-                                handlerStartAnim(this, AgentAni.AnimationList[i].AnimID);
-                            }
-                        }
-                        else
-                        {
-                            handlerStopAnim = OnStopAnim;
-                            if (handlerStopAnim != null)
-                            {
-                                handlerStopAnim(this, AgentAni.AnimationList[i].AnimID);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.AgentRequestSit:
-                    if (OnAgentRequestSit != null)
-                    {
-                        AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (agentRequestSit.AgentData.SessionID != SessionId ||
-                                agentRequestSit.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        AgentRequestSit handlerAgentRequestSit = OnAgentRequestSit;
-                        if (handlerAgentRequestSit != null)
-                            handlerAgentRequestSit(this, agentRequestSit.AgentData.AgentID,
-                                                   agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset);
-                    }
-                    break;
-
-                case PacketType.AgentSit:
-                    if (OnAgentSit != null)
-                    {
-                        AgentSitPacket agentSit = (AgentSitPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (agentSit.AgentData.SessionID != SessionId ||
-                                agentSit.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        AgentSit handlerAgentSit = OnAgentSit;
-                        if (handlerAgentSit != null)
-                        {
-                            OnAgentSit(this, agentSit.AgentData.AgentID);
-                        }
-                    }
-                    break;
-
-                case PacketType.SoundTrigger:
-                    SoundTriggerPacket soundTriggerPacket = (SoundTriggerPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        // UNSUPPORTED ON THIS PACKET
-                    }
-                    #endregion
-
-                    SoundTrigger handlerSoundTrigger = OnSoundTrigger;
-                    if (handlerSoundTrigger != null)
-                    {
-                        handlerSoundTrigger(soundTriggerPacket.SoundData.SoundID, soundTriggerPacket.SoundData.OwnerID,
-                            soundTriggerPacket.SoundData.ObjectID, soundTriggerPacket.SoundData.ParentID,
-                            soundTriggerPacket.SoundData.Gain, soundTriggerPacket.SoundData.Position,
-                            soundTriggerPacket.SoundData.Handle);
-
-                    }
-                    break;
-
-                case PacketType.AvatarPickerRequest:
-                    AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avRequestQuery.AgentData.SessionID != SessionId ||
-                            avRequestQuery.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    AvatarPickerRequestPacket.AgentDataBlock Requestdata = avRequestQuery.AgentData;
-                    AvatarPickerRequestPacket.DataBlock querydata = avRequestQuery.Data;
-                    //m_log.Debug("Agent Sends:" + Utils.BytesToString(querydata.Name));
-
-                    AvatarPickerRequest handlerAvatarPickerRequest = OnAvatarPickerRequest;
-                    if (handlerAvatarPickerRequest != null)
-                    {
-                        handlerAvatarPickerRequest(this, Requestdata.AgentID, Requestdata.QueryID,
-                                                   Utils.BytesToString(querydata.Name));
-                    }
-                    break;
-
-                case PacketType.AgentDataUpdateRequest:
-                    AgentDataUpdateRequestPacket avRequestDataUpdatePacket = (AgentDataUpdateRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avRequestDataUpdatePacket.AgentData.SessionID != SessionId ||
-                            avRequestDataUpdatePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    FetchInventory handlerAgentDataUpdateRequest = OnAgentDataUpdateRequest;
-
-                    if (handlerAgentDataUpdateRequest != null)
-                    {
-                        handlerAgentDataUpdateRequest(this, avRequestDataUpdatePacket.AgentData.AgentID, avRequestDataUpdatePacket.AgentData.SessionID);
-                    }
-
-                    break;
-
-                case PacketType.UserInfoRequest:
-                    UserInfoRequest handlerUserInfoRequest = OnUserInfoRequest;
-                    if (handlerUserInfoRequest != null)
-                    {
-                        handlerUserInfoRequest(this);
-                    }
-                    else
-                    {
-                        SendUserInfoReply(false, true, "");
-                    }
-                    break;
-
-                case PacketType.UpdateUserInfo:
-                    UpdateUserInfoPacket updateUserInfo = (UpdateUserInfoPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (updateUserInfo.AgentData.SessionID != SessionId ||
-                            updateUserInfo.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UpdateUserInfo handlerUpdateUserInfo = OnUpdateUserInfo;
-                    if (handlerUpdateUserInfo != null)
-                    {
-                        bool visible = true;
-                        string DirectoryVisibility =
-                                Utils.BytesToString(updateUserInfo.UserData.DirectoryVisibility);
-                        if (DirectoryVisibility == "hidden")
-                            visible = false;
-
-                        handlerUpdateUserInfo(
-                                updateUserInfo.UserData.IMViaEMail,
-                                visible, this);
-                    }
-                    break;
-
-                case PacketType.SetStartLocationRequest:
-                    SetStartLocationRequestPacket avSetStartLocationRequestPacket = (SetStartLocationRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avSetStartLocationRequestPacket.AgentData.SessionID != SessionId ||
-                            avSetStartLocationRequestPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (avSetStartLocationRequestPacket.AgentData.AgentID == AgentId && avSetStartLocationRequestPacket.AgentData.SessionID == SessionId)
-                    {
-                        TeleportLocationRequest handlerSetStartLocationRequest = OnSetStartLocationRequest;
-                        if (handlerSetStartLocationRequest != null)
-                        {
-                            handlerSetStartLocationRequest(this, 0, avSetStartLocationRequestPacket.StartLocationData.LocationPos,
-                                                           avSetStartLocationRequestPacket.StartLocationData.LocationLookAt,
-                                                           avSetStartLocationRequestPacket.StartLocationData.LocationID);
-                        }
-                    }
-                    break;
-
-                case PacketType.AgentThrottle:
-                    AgentThrottlePacket atpack = (AgentThrottlePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (atpack.AgentData.SessionID != SessionId ||
-                            atpack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    m_udpClient.SetThrottles(atpack.Throttle.Throttles);
-                    break;
-
-                case PacketType.AgentPause:
-                    m_udpClient.IsPaused = true;
-                    break;
-
-                case PacketType.AgentResume:
-                    m_udpClient.IsPaused = false;
-                    SendStartPingCheck(m_udpClient.CurrentPingSequence++);
-
-                    break;
-
-                case PacketType.ForceScriptControlRelease:
-                    ForceReleaseControls handlerForceReleaseControls = OnForceReleaseControls;
-                    if (handlerForceReleaseControls != null)
-                    {
-                        handlerForceReleaseControls(this, AgentId);
-                    }
-                    break;
-
-                #endregion
-
-
-                //#region Objects/m_sceneObjects
-
-                case PacketType.ObjectLink:
-                    ObjectLinkPacket link = (ObjectLinkPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (link.AgentData.SessionID != SessionId ||
-                            link.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    uint parentprimid = 0;
-                    List<uint> childrenprims = new List<uint>();
-                    if (link.ObjectData.Length > 1)
-                    {
-                        parentprimid = link.ObjectData[0].ObjectLocalID;
-
-                        for (int i = 1; i < link.ObjectData.Length; i++)
-                        {
-                            childrenprims.Add(link.ObjectData[i].ObjectLocalID);
-                        }
-                    }
-                    LinkObjects handlerLinkObjects = OnLinkObjects;
-                    if (handlerLinkObjects != null)
-                    {
-                        handlerLinkObjects(this, parentprimid, childrenprims);
-                    }
-                    break;
-
-                case PacketType.ObjectDelink:
-                    ObjectDelinkPacket delink = (ObjectDelinkPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (delink.AgentData.SessionID != SessionId ||
-                            delink.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    // It appears the prim at index 0 is not always the root prim (for
-                    // instance, when one prim of a link set has been edited independently
-                    // of the others).  Therefore, we'll pass all the ids onto the delink
-                    // method for it to decide which is the root.
-                    List<uint> prims = new List<uint>();
-                    for (int i = 0; i < delink.ObjectData.Length; i++)
-                    {
-                        prims.Add(delink.ObjectData[i].ObjectLocalID);
-                    }
-                    DelinkObjects handlerDelinkObjects = OnDelinkObjects;
-                    if (handlerDelinkObjects != null)
-                    {
-                        handlerDelinkObjects(prims);
-                    }
-
-                    break;
-
-                case PacketType.ObjectAdd:
-                    if (OnAddPrim != null)
-                    {
-                        ObjectAddPacket addPacket = (ObjectAddPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (addPacket.AgentData.SessionID != SessionId ||
-                                addPacket.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
-                        // m_log.Info("[REZData]: " + addPacket.ToString());
-                        //BypassRaycast: 1
-                        //RayStart: <69.79469, 158.2652, 98.40343>
-                        //RayEnd: <61.97724, 141.995, 92.58341>
-                        //RayTargetID: 00000000-0000-0000-0000-000000000000
-
-                        //Check to see if adding the prim is allowed; useful for any module wanting to restrict the
-                        //object from rezing initially
-
-                        AddNewPrim handlerAddPrim = OnAddPrim;
-                        if (handlerAddPrim != null)
-                            handlerAddPrim(AgentId, ActiveGroupId, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape, addPacket.ObjectData.BypassRaycast, addPacket.ObjectData.RayStart, addPacket.ObjectData.RayTargetID, addPacket.ObjectData.RayEndIsIntersection);
-                    }
-                    break;
-
-                case PacketType.ObjectShape:
-                    ObjectShapePacket shapePacket = (ObjectShapePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (shapePacket.AgentData.SessionID != SessionId ||
-                            shapePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UpdateShape handlerUpdatePrimShape = null;
-                    for (int i = 0; i < shapePacket.ObjectData.Length; i++)
-                    {
-                        handlerUpdatePrimShape = OnUpdatePrimShape;
-                        if (handlerUpdatePrimShape != null)
-                        {
-                            UpdateShapeArgs shapeData = new UpdateShapeArgs();
-                            shapeData.ObjectLocalID = shapePacket.ObjectData[i].ObjectLocalID;
-                            shapeData.PathBegin = shapePacket.ObjectData[i].PathBegin;
-                            shapeData.PathCurve = shapePacket.ObjectData[i].PathCurve;
-                            shapeData.PathEnd = shapePacket.ObjectData[i].PathEnd;
-                            shapeData.PathRadiusOffset = shapePacket.ObjectData[i].PathRadiusOffset;
-                            shapeData.PathRevolutions = shapePacket.ObjectData[i].PathRevolutions;
-                            shapeData.PathScaleX = shapePacket.ObjectData[i].PathScaleX;
-                            shapeData.PathScaleY = shapePacket.ObjectData[i].PathScaleY;
-                            shapeData.PathShearX = shapePacket.ObjectData[i].PathShearX;
-                            shapeData.PathShearY = shapePacket.ObjectData[i].PathShearY;
-                            shapeData.PathSkew = shapePacket.ObjectData[i].PathSkew;
-                            shapeData.PathTaperX = shapePacket.ObjectData[i].PathTaperX;
-                            shapeData.PathTaperY = shapePacket.ObjectData[i].PathTaperY;
-                            shapeData.PathTwist = shapePacket.ObjectData[i].PathTwist;
-                            shapeData.PathTwistBegin = shapePacket.ObjectData[i].PathTwistBegin;
-                            shapeData.ProfileBegin = shapePacket.ObjectData[i].ProfileBegin;
-                            shapeData.ProfileCurve = shapePacket.ObjectData[i].ProfileCurve;
-                            shapeData.ProfileEnd = shapePacket.ObjectData[i].ProfileEnd;
-                            shapeData.ProfileHollow = shapePacket.ObjectData[i].ProfileHollow;
-
-                            handlerUpdatePrimShape(m_agentId, shapePacket.ObjectData[i].ObjectLocalID,
-                                                   shapeData);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectExtraParams:
-                    ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (extraPar.AgentData.SessionID != SessionId ||
-                            extraPar.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectExtraParams handlerUpdateExtraParams = OnUpdateExtraParams;
-                    if (handlerUpdateExtraParams != null)
-                    {
-                        for (int i = 0; i < extraPar.ObjectData.Length; i++)
-                        {
-                            handlerUpdateExtraParams(m_agentId, extraPar.ObjectData[i].ObjectLocalID,
-                                                     extraPar.ObjectData[i].ParamType,
-                                                     extraPar.ObjectData[i].ParamInUse, extraPar.ObjectData[i].ParamData);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectDuplicate:
-                    ObjectDuplicatePacket dupe = (ObjectDuplicatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dupe.AgentData.SessionID != SessionId ||
-                            dupe.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectDuplicatePacket.AgentDataBlock AgentandGroupData = dupe.AgentData;
-
-                    ObjectDuplicate handlerObjectDuplicate = null;
-
-                    for (int i = 0; i < dupe.ObjectData.Length; i++)
-                    {
-                        handlerObjectDuplicate = OnObjectDuplicate;
-                        if (handlerObjectDuplicate != null)
-                        {
-                            handlerObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset,
-                                                   dupe.SharedData.DuplicateFlags, AgentandGroupData.AgentID,
-                                                   AgentandGroupData.GroupID);
-                        }
-                    }
-
-                    break;
-
-                case PacketType.RequestMultipleObjects:
-                    RequestMultipleObjectsPacket incomingRequest = (RequestMultipleObjectsPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (incomingRequest.AgentData.SessionID != SessionId ||
-                            incomingRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectRequest handlerObjectRequest = null;
-
-                    for (int i = 0; i < incomingRequest.ObjectData.Length; i++)
-                    {
-                        handlerObjectRequest = OnObjectRequest;
-                        if (handlerObjectRequest != null)
-                        {
-                            handlerObjectRequest(incomingRequest.ObjectData[i].ID, this);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectSelect:
-                    ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (incomingselect.AgentData.SessionID != SessionId ||
-                            incomingselect.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectSelect handlerObjectSelect = null;
-
-                    for (int i = 0; i < incomingselect.ObjectData.Length; i++)
-                    {
-                        handlerObjectSelect = OnObjectSelect;
-                        if (handlerObjectSelect != null)
-                        {
-                            handlerObjectSelect(incomingselect.ObjectData[i].ObjectLocalID, this);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectDeselect:
-                    ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (incomingdeselect.AgentData.SessionID != SessionId ||
-                            incomingdeselect.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectDeselect handlerObjectDeselect = null;
-
-                    for (int i = 0; i < incomingdeselect.ObjectData.Length; i++)
-                    {
-                        handlerObjectDeselect = OnObjectDeselect;
-                        if (handlerObjectDeselect != null)
-                        {
-                            OnObjectDeselect(incomingdeselect.ObjectData[i].ObjectLocalID, this);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectPosition:
-                    // DEPRECATED: but till libsecondlife removes it, people will use it
-                    ObjectPositionPacket position = (ObjectPositionPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (position.AgentData.SessionID != SessionId ||
-                            position.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-
-                    for (int i = 0; i < position.ObjectData.Length; i++)
-                    {
-                        UpdateVector handlerUpdateVector = OnUpdatePrimGroupPosition;
-                        if (handlerUpdateVector != null)
-                            handlerUpdateVector(position.ObjectData[i].ObjectLocalID, position.ObjectData[i].Position, this);
-                    }
-
-                    break;
-
-                case PacketType.ObjectScale:
-                    // DEPRECATED: but till libsecondlife removes it, people will use it
-                    ObjectScalePacket scale = (ObjectScalePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (scale.AgentData.SessionID != SessionId ||
-                            scale.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    for (int i = 0; i < scale.ObjectData.Length; i++)
-                    {
-                        UpdateVector handlerUpdatePrimGroupScale = OnUpdatePrimGroupScale;
-                        if (handlerUpdatePrimGroupScale != null)
-                            handlerUpdatePrimGroupScale(scale.ObjectData[i].ObjectLocalID, scale.ObjectData[i].Scale, this);
-                    }
-
-                    break;
-
-                case PacketType.ObjectRotation:
-                    // DEPRECATED: but till libsecondlife removes it, people will use it
-                    ObjectRotationPacket rotation = (ObjectRotationPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (rotation.AgentData.SessionID != SessionId ||
-                            rotation.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    for (int i = 0; i < rotation.ObjectData.Length; i++)
-                    {
-                        UpdatePrimRotation handlerUpdatePrimRotation = OnUpdatePrimGroupRotation;
-                        if (handlerUpdatePrimRotation != null)
-                            handlerUpdatePrimRotation(rotation.ObjectData[i].ObjectLocalID, rotation.ObjectData[i].Rotation, this);
-                    }
-
-                    break;
-
-                case PacketType.ObjectFlagUpdate:
-                    ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (flags.AgentData.SessionID != SessionId ||
-                            flags.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UpdatePrimFlags handlerUpdatePrimFlags = OnUpdatePrimFlags;
-
-                    if (handlerUpdatePrimFlags != null)
-                    {
-                        byte[] data = Pack.ToBytes();
-                        // 46,47,48 are special positions within the packet
-                        // This may change so perhaps we need a better way
-                        // of storing this (OMV.FlagUpdatePacket.UsePhysics,etc?)
-                        bool UsePhysics = (data[46] != 0) ? true : false;
-                        bool IsTemporary = (data[47] != 0) ? true : false;
-                        bool IsPhantom = (data[48] != 0) ? true : false;
-                        handlerUpdatePrimFlags(flags.AgentData.ObjectLocalID, UsePhysics, IsTemporary, IsPhantom, this);
-                    }
-                    break;
-                case PacketType.ObjectImage:
-                    ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
-
-                    UpdatePrimTexture handlerUpdatePrimTexture = null;
-                    for (int i = 0; i < imagePack.ObjectData.Length; i++)
-                    {
-                        handlerUpdatePrimTexture = OnUpdatePrimTexture;
-                        if (handlerUpdatePrimTexture != null)
-                        {
-                            handlerUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID,
-                                                     imagePack.ObjectData[i].TextureEntry, this);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectGrab:
-                    ObjectGrabPacket grab = (ObjectGrabPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (grab.AgentData.SessionID != SessionId ||
-                            grab.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    GrabObject handlerGrabObject = OnGrabObject;
-
-                    if (handlerGrabObject != null)
-                    {
-                        List<SurfaceTouchEventArgs> touchArgs = new List<SurfaceTouchEventArgs>();
-                        if ((grab.SurfaceInfo != null) && (grab.SurfaceInfo.Length > 0))
-                        {
-                            foreach (ObjectGrabPacket.SurfaceInfoBlock surfaceInfo in grab.SurfaceInfo)
-                            {
-                                SurfaceTouchEventArgs arg = new SurfaceTouchEventArgs();
-                                arg.Binormal = surfaceInfo.Binormal;
-                                arg.FaceIndex = surfaceInfo.FaceIndex;
-                                arg.Normal = surfaceInfo.Normal;
-                                arg.Position = surfaceInfo.Position;
-                                arg.STCoord = surfaceInfo.STCoord;
-                                arg.UVCoord = surfaceInfo.UVCoord;
-                                touchArgs.Add(arg);
-                            }
-                        }
-                        handlerGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this, touchArgs);
-                    }
-                    break;
-
-                case PacketType.ObjectGrabUpdate:
-                    ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (grabUpdate.AgentData.SessionID != SessionId ||
-                            grabUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    MoveObject handlerGrabUpdate = OnGrabUpdate;
-
-                    if (handlerGrabUpdate != null)
-                    {
-                        List<SurfaceTouchEventArgs> touchArgs = new List<SurfaceTouchEventArgs>();
-                        if ((grabUpdate.SurfaceInfo != null) && (grabUpdate.SurfaceInfo.Length > 0))
-                        {
-                            foreach (ObjectGrabUpdatePacket.SurfaceInfoBlock surfaceInfo in grabUpdate.SurfaceInfo)
-                            {
-                                SurfaceTouchEventArgs arg = new SurfaceTouchEventArgs();
-                                arg.Binormal = surfaceInfo.Binormal;
-                                arg.FaceIndex = surfaceInfo.FaceIndex;
-                                arg.Normal = surfaceInfo.Normal;
-                                arg.Position = surfaceInfo.Position;
-                                arg.STCoord = surfaceInfo.STCoord;
-                                arg.UVCoord = surfaceInfo.UVCoord;
-                                touchArgs.Add(arg);
-                            }
-                        }
-                        handlerGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial,
-                                          grabUpdate.ObjectData.GrabPosition, this, touchArgs);
-                    }
-                    break;
-
-                case PacketType.ObjectDeGrab:
-                    ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (deGrab.AgentData.SessionID != SessionId ||
-                            deGrab.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DeGrabObject handlerDeGrabObject = OnDeGrabObject;
-                    if (handlerDeGrabObject != null)
-                    {
-                        List<SurfaceTouchEventArgs> touchArgs = new List<SurfaceTouchEventArgs>();
-                        if ((deGrab.SurfaceInfo != null) && (deGrab.SurfaceInfo.Length > 0))
-                        {
-                            foreach (ObjectDeGrabPacket.SurfaceInfoBlock surfaceInfo in deGrab.SurfaceInfo)
-                            {
-                                SurfaceTouchEventArgs arg = new SurfaceTouchEventArgs();
-                                arg.Binormal = surfaceInfo.Binormal;
-                                arg.FaceIndex = surfaceInfo.FaceIndex;
-                                arg.Normal = surfaceInfo.Normal;
-                                arg.Position = surfaceInfo.Position;
-                                arg.STCoord = surfaceInfo.STCoord;
-                                arg.UVCoord = surfaceInfo.UVCoord;
-                                touchArgs.Add(arg);
-                            }
-                        }
-                        handlerDeGrabObject(deGrab.ObjectData.LocalID, this, touchArgs);
-                    }
-                    break;
-
-                case PacketType.ObjectSpinStart:
-                    //m_log.Warn("[CLIENT]: unhandled ObjectSpinStart packet");
-                    ObjectSpinStartPacket spinStart = (ObjectSpinStartPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (spinStart.AgentData.SessionID != SessionId ||
-                            spinStart.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    SpinStart handlerSpinStart = OnSpinStart;
-                    if (handlerSpinStart != null)
-                    {
-                        handlerSpinStart(spinStart.ObjectData.ObjectID, this);
-                    }
-                    break;
-                case PacketType.ObjectSpinUpdate:
-                    //m_log.Warn("[CLIENT]: unhandled ObjectSpinUpdate packet");
-                    ObjectSpinUpdatePacket spinUpdate = (ObjectSpinUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (spinUpdate.AgentData.SessionID != SessionId ||
-                            spinUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    Vector3 axis;
-                    float angle;
-                    spinUpdate.ObjectData.Rotation.GetAxisAngle(out axis, out angle);
-                    //m_log.Warn("[CLIENT]: ObjectSpinUpdate packet rot axis:" + axis + " angle:" + angle);
-
-                    SpinObject handlerSpinUpdate = OnSpinUpdate;
-                    if (handlerSpinUpdate != null)
-                    {
-                        handlerSpinUpdate(spinUpdate.ObjectData.ObjectID, spinUpdate.ObjectData.Rotation, this);
-                    }
-                    break;
-
-
-                case PacketType.ObjectSpinStop:
-                    //m_log.Warn("[CLIENT]: unhandled ObjectSpinStop packet");
-                    ObjectSpinStopPacket spinStop = (ObjectSpinStopPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (spinStop.AgentData.SessionID != SessionId ||
-                            spinStop.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    SpinStop handlerSpinStop = OnSpinStop;
-                    if (handlerSpinStop != null)
-                    {
-                        handlerSpinStop(spinStop.ObjectData.ObjectID, this);
-                    }
-                    break;
-
-                case PacketType.ObjectDescription:
-                    ObjectDescriptionPacket objDes = (ObjectDescriptionPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (objDes.AgentData.SessionID != SessionId ||
-                            objDes.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    GenericCall7 handlerObjectDescription = null;
-
-                    for (int i = 0; i < objDes.ObjectData.Length; i++)
-                    {
-                        handlerObjectDescription = OnObjectDescription;
-                        if (handlerObjectDescription != null)
-                        {
-                            handlerObjectDescription(this, objDes.ObjectData[i].LocalID,
-                                                     Util.FieldToString(objDes.ObjectData[i].Description));
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectName:
-                    ObjectNamePacket objName = (ObjectNamePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (objName.AgentData.SessionID != SessionId ||
-                            objName.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    GenericCall7 handlerObjectName = null;
-                    for (int i = 0; i < objName.ObjectData.Length; i++)
-                    {
-                        handlerObjectName = OnObjectName;
-                        if (handlerObjectName != null)
-                        {
-                            handlerObjectName(this, objName.ObjectData[i].LocalID,
-                                              Util.FieldToString(objName.ObjectData[i].Name));
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectPermissions:
-                    if (OnObjectPermissions != null)
-                    {
-                        ObjectPermissionsPacket newobjPerms = (ObjectPermissionsPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (newobjPerms.AgentData.SessionID != SessionId ||
-                                newobjPerms.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        UUID AgentID = newobjPerms.AgentData.AgentID;
-                        UUID SessionID = newobjPerms.AgentData.SessionID;
-
-                        ObjectPermissions handlerObjectPermissions = null;
-
-                        for (int i = 0; i < newobjPerms.ObjectData.Length; i++)
-                        {
-                            ObjectPermissionsPacket.ObjectDataBlock permChanges = newobjPerms.ObjectData[i];
-
-                            byte field = permChanges.Field;
-                            uint localID = permChanges.ObjectLocalID;
-                            uint mask = permChanges.Mask;
-                            byte set = permChanges.Set;
-
-                            handlerObjectPermissions = OnObjectPermissions;
-
-                            if (handlerObjectPermissions != null)
-                                handlerObjectPermissions(this, AgentID, SessionID, field, localID, mask, set);
-                        }
-                    }
-
-                    // Here's our data,
-                    // PermField contains the field the info goes into
-                    // PermField determines which mask we're changing
-                    //
-                    // chmask is the mask of the change
-                    // setTF is whether we're adding it or taking it away
-                    //
-                    // objLocalID is the localID of the object.
-
-                    // Unfortunately, we have to pass the event the packet because objData is an array
-                    // That means multiple object perms may be updated in a single packet.
-
-                    break;
-
-                case PacketType.Undo:
-                    UndoPacket undoitem = (UndoPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (undoitem.AgentData.SessionID != SessionId ||
-                            undoitem.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (undoitem.ObjectData.Length > 0)
-                    {
-                        for (int i = 0; i < undoitem.ObjectData.Length; i++)
-                        {
-                            UUID objiD = undoitem.ObjectData[i].ObjectID;
-                            AgentSit handlerOnUndo = OnUndo;
-                            if (handlerOnUndo != null)
-                            {
-                                handlerOnUndo(this, objiD);
-                            }
-
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectDuplicateOnRay:
-                    ObjectDuplicateOnRayPacket dupeOnRay = (ObjectDuplicateOnRayPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dupeOnRay.AgentData.SessionID != SessionId ||
-                            dupeOnRay.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectDuplicateOnRay handlerObjectDuplicateOnRay = null;
-
-                    for (int i = 0; i < dupeOnRay.ObjectData.Length; i++)
-                    {
-                        handlerObjectDuplicateOnRay = OnObjectDuplicateOnRay;
-                        if (handlerObjectDuplicateOnRay != null)
-                        {
-                            handlerObjectDuplicateOnRay(dupeOnRay.ObjectData[i].ObjectLocalID, dupeOnRay.AgentData.DuplicateFlags,
-                                                        dupeOnRay.AgentData.AgentID, dupeOnRay.AgentData.GroupID, dupeOnRay.AgentData.RayTargetID, dupeOnRay.AgentData.RayEnd,
-                                                        dupeOnRay.AgentData.RayStart, dupeOnRay.AgentData.BypassRaycast, dupeOnRay.AgentData.RayEndIsIntersection,
-                                                        dupeOnRay.AgentData.CopyCenters, dupeOnRay.AgentData.CopyRotates);
-                        }
-                    }
-
-                    break;
-
-                case PacketType.RequestObjectPropertiesFamily:
-                    //This powers the little tooltip that appears when you move your mouse over an object
-                    RequestObjectPropertiesFamilyPacket packToolTip = (RequestObjectPropertiesFamilyPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (packToolTip.AgentData.SessionID != SessionId ||
-                            packToolTip.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RequestObjectPropertiesFamilyPacket.ObjectDataBlock packObjBlock = packToolTip.ObjectData;
-
-                    RequestObjectPropertiesFamily handlerRequestObjectPropertiesFamily = OnRequestObjectPropertiesFamily;
-
-                    if (handlerRequestObjectPropertiesFamily != null)
-                    {
-                        handlerRequestObjectPropertiesFamily(this, m_agentId, packObjBlock.RequestFlags,
-                                                             packObjBlock.ObjectID);
-                    }
-
-                    break;
-
-                case PacketType.ObjectIncludeInSearch:
-                    //This lets us set objects to appear in search (stuff like DataSnapshot, etc)
-                    ObjectIncludeInSearchPacket packInSearch = (ObjectIncludeInSearchPacket)Pack;
-                    ObjectIncludeInSearch handlerObjectIncludeInSearch = null;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (packInSearch.AgentData.SessionID != SessionId ||
-                            packInSearch.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    foreach (ObjectIncludeInSearchPacket.ObjectDataBlock objData in packInSearch.ObjectData)
-                    {
-                        bool inSearch = objData.IncludeInSearch;
-                        uint localID = objData.ObjectLocalID;
-
-                        handlerObjectIncludeInSearch = OnObjectIncludeInSearch;
-
-                        if (handlerObjectIncludeInSearch != null)
-                        {
-                            handlerObjectIncludeInSearch(this, inSearch, localID);
-                        }
-                    }
-                    break;
-
-                case PacketType.ScriptAnswerYes:
-                    ScriptAnswerYesPacket scriptAnswer = (ScriptAnswerYesPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (scriptAnswer.AgentData.SessionID != SessionId ||
-                            scriptAnswer.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ScriptAnswer handlerScriptAnswer = OnScriptAnswer;
-                    if (handlerScriptAnswer != null)
-                    {
-                        handlerScriptAnswer(this, scriptAnswer.Data.TaskID, scriptAnswer.Data.ItemID, scriptAnswer.Data.Questions);
-                    }
-                    break;
-
-                case PacketType.ObjectClickAction:
-                    ObjectClickActionPacket ocpacket = (ObjectClickActionPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (ocpacket.AgentData.SessionID != SessionId ||
-                            ocpacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    GenericCall7 handlerObjectClickAction = OnObjectClickAction;
-                    if (handlerObjectClickAction != null)
-                    {
-                        foreach (ObjectClickActionPacket.ObjectDataBlock odata in ocpacket.ObjectData)
-                        {
-                            byte action = odata.ClickAction;
-                            uint localID = odata.ObjectLocalID;
-                            handlerObjectClickAction(this, localID, action.ToString());
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectMaterial:
-                    ObjectMaterialPacket ompacket = (ObjectMaterialPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (ompacket.AgentData.SessionID != SessionId ||
-                            ompacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    GenericCall7 handlerObjectMaterial = OnObjectMaterial;
-                    if (handlerObjectMaterial != null)
-                    {
-                        foreach (ObjectMaterialPacket.ObjectDataBlock odata in ompacket.ObjectData)
-                        {
-                            byte material = odata.Material;
-                            uint localID = odata.ObjectLocalID;
-                            handlerObjectMaterial(this, localID, material.ToString());
-                        }
-                    }
-                    break;
-
-                //#endregion
-
-                //#region Inventory/Asset/Other related packets
-
-                case PacketType.RequestImage:
-                    RequestImagePacket imageRequest = (RequestImagePacket)Pack;
-                    //m_log.Debug("image request: " + Pack.ToString());
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (imageRequest.AgentData.SessionID != SessionId ||
-                            imageRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    //handlerTextureRequest = null;
-                    for (int i = 0; i < imageRequest.RequestImage.Length; i++)
-                    {
-                        if (OnRequestTexture != null)
-                        {
-                            TextureRequestArgs args = new TextureRequestArgs();
-
-                            RequestImagePacket.RequestImageBlock block = imageRequest.RequestImage[i];
-
-                            args.RequestedAssetID = block.Image;
-                            args.DiscardLevel = block.DiscardLevel;
-                            args.PacketNumber = block.Packet;
-                            args.Priority = block.DownloadPriority;
-                            args.requestSequence = imageRequest.Header.Sequence;
-
-                            // NOTE: This is not a built in part of the LLUDP protocol, but we double the
-                            // priority of avatar textures to get avatars rezzing in faster than the
-                            // surrounding scene
-                            if ((ImageType)block.Type == ImageType.Baked)
-                                args.Priority *= 2.0f;
-
-                            //handlerTextureRequest = OnRequestTexture;
-
-                            //if (handlerTextureRequest != null)
-                            //OnRequestTexture(this, args);
-
-                            // in the end, we null this, so we have to check if it's null
-                            if (m_imageManager != null)
-                            {
-                                m_imageManager.EnqueueReq(args);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.TransferRequest:
-                    //m_log.Debug("ClientView.ProcessPackets.cs:ProcessInPacket() - Got transfer request");
-
-                    TransferRequestPacket transfer = (TransferRequestPacket)Pack;
-                    //m_log.Debug("Transfer Request: " + transfer.ToString());
-                    // Validate inventory transfers
-                    // Has to be done here, because AssetCache can't do it
-                    //
-                    UUID taskID = UUID.Zero;
-                    if (transfer.TransferInfo.SourceType == 3)
-                    {
-                        taskID = new UUID(transfer.TransferInfo.Params, 48);
-                        UUID itemID = new UUID(transfer.TransferInfo.Params, 64);
-                        UUID requestID = new UUID(transfer.TransferInfo.Params, 80);
-                        if (!(((Scene)m_scene).Permissions.BypassPermissions()))
-                        {
-                            if (taskID != UUID.Zero) // Prim
-                            {
-                                SceneObjectPart part = ((Scene)m_scene).GetSceneObjectPart(taskID);
-                                if (part == null)
-                                    break;
-
-                                if (part.OwnerID != AgentId)
-                                    break;
-
-                                if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
-                                    break;
-
-                                TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID);
-                                if (ti == null)
-                                    break;
-
-                                if (ti.OwnerID != AgentId)
-                                    break;
-
-                                if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
-                                    break;
-
-                                if (ti.AssetID != requestID)
-                                    break;
-                            }
-                            else // Agent
-                            {
-                                IInventoryService invService = m_scene.RequestModuleInterface<IInventoryService>();
-                                InventoryItemBase assetRequestItem = new InventoryItemBase(itemID, AgentId);
-                                assetRequestItem = invService.GetItem(assetRequestItem);
-                                if (assetRequestItem == null)
-                                {
-                                    assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID);
-                                    if (assetRequestItem == null)
-                                        return;
-                                }
-
-                                // At this point, we need to apply perms
-                                // only to notecards and scripts. All
-                                // other asset types are always available
-                                //
-                                if (assetRequestItem.AssetType == 10)
-                                {
-                                    if (!((Scene)m_scene).Permissions.CanViewScript(itemID, UUID.Zero, AgentId))
-                                    {
-                                        SendAgentAlertMessage("Insufficient permissions to view script", false);
-                                        break;
-                                    }
-                                }
-                                else if (assetRequestItem.AssetType == 7)
-                                {
-                                    if (!((Scene)m_scene).Permissions.CanViewNotecard(itemID, UUID.Zero, AgentId))
-                                    {
-                                        SendAgentAlertMessage("Insufficient permissions to view notecard", false);
-                                        break;
-                                    }
-                                }
-
-                                if (assetRequestItem.AssetID != requestID)
-                                    break;
-                            }
-                        }
-                    }
-
-                    //m_assetCache.AddAssetRequest(this, transfer);
-
-                    MakeAssetRequest(transfer, taskID);
-
-                    // RequestAsset = OnRequestAsset;
-                    //     if (RequestAsset != null)
-                    //     {
-                    //         RequestAsset(this, transfer);
-                    //     }
-
-                    break;
-
-                case PacketType.AssetUploadRequest:
-                    AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
-
-
-                    // m_log.Debug("upload request " + request.ToString());
-                    // m_log.Debug("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionId).ToString());
-                    UUID temp = UUID.Combine(request.AssetBlock.TransactionID, SecureSessionId);
-
-                    UDPAssetUploadRequest handlerAssetUploadRequest = OnAssetUploadRequest;
-
-                    if (handlerAssetUploadRequest != null)
-                    {
-                        handlerAssetUploadRequest(this, temp,
-                                                  request.AssetBlock.TransactionID, request.AssetBlock.Type,
-                                                  request.AssetBlock.AssetData, request.AssetBlock.StoreLocal,
-                                                  request.AssetBlock.Tempfile);
-                    }
-                    break;
-
-                case PacketType.RequestXfer:
-                    RequestXferPacket xferReq = (RequestXferPacket)Pack;
-
-                    RequestXfer handlerRequestXfer = OnRequestXfer;
-
-                    if (handlerRequestXfer != null)
-                    {
-                        handlerRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename));
-                    }
-                    break;
-
-                case PacketType.SendXferPacket:
-                    SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack;
-
-                    XferReceive handlerXferReceive = OnXferReceive;
-                    if (handlerXferReceive != null)
-                    {
-                        handlerXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data);
-                    }
-                    break;
-
-                case PacketType.ConfirmXferPacket:
-                    ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack;
-
-                    ConfirmXfer handlerConfirmXfer = OnConfirmXfer;
-                    if (handlerConfirmXfer != null)
-                    {
-                        handlerConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet);
-                    }
-                    break;
-
-                case PacketType.AbortXfer:
-                    AbortXferPacket abortXfer = (AbortXferPacket)Pack;
-                    AbortXfer handlerAbortXfer = OnAbortXfer;
-                    if (handlerAbortXfer != null)
-                    {
-                        handlerAbortXfer(this, abortXfer.XferID.ID);
-                    }
-
-                    break;
-
-                case PacketType.CreateInventoryFolder:
-                    CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (invFolder.AgentData.SessionID != SessionId ||
-                            invFolder.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    CreateInventoryFolder handlerCreateInventoryFolder = OnCreateNewInventoryFolder;
-                    if (handlerCreateInventoryFolder != null)
-                    {
-                        handlerCreateInventoryFolder(this, invFolder.FolderData.FolderID,
-                                                     (ushort)invFolder.FolderData.Type,
-                                                     Util.FieldToString(invFolder.FolderData.Name),
-                                                     invFolder.FolderData.ParentID);
-                    }
-                    break;
-
-                case PacketType.UpdateInventoryFolder:
-                    if (OnUpdateInventoryFolder != null)
-                    {
-                        UpdateInventoryFolderPacket invFolderx = (UpdateInventoryFolderPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (invFolderx.AgentData.SessionID != SessionId ||
-                                invFolderx.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        UpdateInventoryFolder handlerUpdateInventoryFolder = null;
-
-                        for (int i = 0; i < invFolderx.FolderData.Length; i++)
-                        {
-                            handlerUpdateInventoryFolder = OnUpdateInventoryFolder;
-                            if (handlerUpdateInventoryFolder != null)
-                            {
-                                OnUpdateInventoryFolder(this, invFolderx.FolderData[i].FolderID,
-                                                        (ushort)invFolderx.FolderData[i].Type,
-                                                        Util.FieldToString(invFolderx.FolderData[i].Name),
-                                                        invFolderx.FolderData[i].ParentID);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.MoveInventoryFolder:
-                    if (OnMoveInventoryFolder != null)
-                    {
-                        MoveInventoryFolderPacket invFoldery = (MoveInventoryFolderPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (invFoldery.AgentData.SessionID != SessionId ||
-                                invFoldery.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        MoveInventoryFolder handlerMoveInventoryFolder = null;
-
-                        for (int i = 0; i < invFoldery.InventoryData.Length; i++)
-                        {
-                            handlerMoveInventoryFolder = OnMoveInventoryFolder;
-                            if (handlerMoveInventoryFolder != null)
-                            {
-                                OnMoveInventoryFolder(this, invFoldery.InventoryData[i].FolderID,
-                                                      invFoldery.InventoryData[i].ParentID);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.CreateInventoryItem:
-                    CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (createItem.AgentData.SessionID != SessionId ||
-                            createItem.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    CreateNewInventoryItem handlerCreateNewInventoryItem = OnCreateNewInventoryItem;
-                    if (handlerCreateNewInventoryItem != null)
-                    {
-                        handlerCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID,
-                                                      createItem.InventoryBlock.FolderID,
-                                                      createItem.InventoryBlock.CallbackID,
-                                                      Util.FieldToString(createItem.InventoryBlock.Description),
-                                                      Util.FieldToString(createItem.InventoryBlock.Name),
-                                                      createItem.InventoryBlock.InvType,
-                                                      createItem.InventoryBlock.Type,
-                                                      createItem.InventoryBlock.WearableType,
-                                                      createItem.InventoryBlock.NextOwnerMask,
-                                                      Util.UnixTimeSinceEpoch());
-                    }
-                    break;
-
-                case PacketType.FetchInventory:
-                    if (OnFetchInventory != null)
-                    {
-                        FetchInventoryPacket FetchInventoryx = (FetchInventoryPacket)Pack;
-
-                        #region Packet Session and User Check
-                        if (m_checkPackets)
-                        {
-                            if (FetchInventoryx.AgentData.SessionID != SessionId ||
-                                FetchInventoryx.AgentData.AgentID != AgentId)
-                                break;
-                        }
-                        #endregion
-
-                        FetchInventory handlerFetchInventory = null;
-
-                        for (int i = 0; i < FetchInventoryx.InventoryData.Length; i++)
-                        {
-                            handlerFetchInventory = OnFetchInventory;
-
-                            if (handlerFetchInventory != null)
-                            {
-                                OnFetchInventory(this, FetchInventoryx.InventoryData[i].ItemID,
-                                                 FetchInventoryx.InventoryData[i].OwnerID);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.FetchInventoryDescendents:
-                    FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (Fetch.AgentData.SessionID != SessionId ||
-                            Fetch.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    FetchInventoryDescendents handlerFetchInventoryDescendents = OnFetchInventoryDescendents;
-                    if (handlerFetchInventoryDescendents != null)
-                    {
-                        handlerFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID,
-                                                         Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems,
-                                                         Fetch.InventoryData.SortOrder);
-                    }
-                    break;
-
-                case PacketType.PurgeInventoryDescendents:
-                    PurgeInventoryDescendentsPacket Purge = (PurgeInventoryDescendentsPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (Purge.AgentData.SessionID != SessionId ||
-                            Purge.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    PurgeInventoryDescendents handlerPurgeInventoryDescendents = OnPurgeInventoryDescendents;
-                    if (handlerPurgeInventoryDescendents != null)
-                    {
-                        handlerPurgeInventoryDescendents(this, Purge.InventoryData.FolderID);
-                    }
-                    break;
-
-                case PacketType.UpdateInventoryItem:
-                    UpdateInventoryItemPacket inventoryItemUpdate = (UpdateInventoryItemPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (inventoryItemUpdate.AgentData.SessionID != SessionId ||
-                            inventoryItemUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnUpdateInventoryItem != null)
-                    {
-                        UpdateInventoryItem handlerUpdateInventoryItem = null;
-                        for (int i = 0; i < inventoryItemUpdate.InventoryData.Length; i++)
-                        {
-                            handlerUpdateInventoryItem = OnUpdateInventoryItem;
-
-                            if (handlerUpdateInventoryItem != null)
-                            {
-                                InventoryItemBase itemUpd = new InventoryItemBase();
-                                itemUpd.ID = inventoryItemUpdate.InventoryData[i].ItemID;
-                                itemUpd.Name = Util.FieldToString(inventoryItemUpdate.InventoryData[i].Name);
-                                itemUpd.Description = Util.FieldToString(inventoryItemUpdate.InventoryData[i].Description);
-                                itemUpd.GroupID = inventoryItemUpdate.InventoryData[i].GroupID;
-                                itemUpd.GroupOwned = inventoryItemUpdate.InventoryData[i].GroupOwned;
-                                itemUpd.GroupPermissions = inventoryItemUpdate.InventoryData[i].GroupMask;
-                                itemUpd.NextPermissions = inventoryItemUpdate.InventoryData[i].NextOwnerMask;
-                                itemUpd.EveryOnePermissions = inventoryItemUpdate.InventoryData[i].EveryoneMask;
-                                itemUpd.CreationDate = inventoryItemUpdate.InventoryData[i].CreationDate;
-                                itemUpd.Folder = inventoryItemUpdate.InventoryData[i].FolderID;
-                                itemUpd.InvType = inventoryItemUpdate.InventoryData[i].InvType;
-                                itemUpd.SalePrice = inventoryItemUpdate.InventoryData[i].SalePrice;
-                                itemUpd.SaleType = inventoryItemUpdate.InventoryData[i].SaleType;
-                                itemUpd.Flags = inventoryItemUpdate.InventoryData[i].Flags;
-
-                                OnUpdateInventoryItem(this, inventoryItemUpdate.InventoryData[i].TransactionID,
-                                                      inventoryItemUpdate.InventoryData[i].ItemID,
-                                                      itemUpd);
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.CopyInventoryItem:
-                    CopyInventoryItemPacket copyitem = (CopyInventoryItemPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (copyitem.AgentData.SessionID != SessionId ||
-                            copyitem.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    CopyInventoryItem handlerCopyInventoryItem = null;
-                    if (OnCopyInventoryItem != null)
-                    {
-                        foreach (CopyInventoryItemPacket.InventoryDataBlock datablock in copyitem.InventoryData)
-                        {
-                            handlerCopyInventoryItem = OnCopyInventoryItem;
-                            if (handlerCopyInventoryItem != null)
-                            {
-                                handlerCopyInventoryItem(this, datablock.CallbackID, datablock.OldAgentID,
-                                                         datablock.OldItemID, datablock.NewFolderID,
-                                                         Util.FieldToString(datablock.NewName));
-                            }
-                        }
-                    }
-                    break;
-
-                case PacketType.MoveInventoryItem:
-                    MoveInventoryItemPacket moveitem = (MoveInventoryItemPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (moveitem.AgentData.SessionID != SessionId ||
-                            moveitem.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnMoveInventoryItem != null)
-                    {
-                        MoveInventoryItem handlerMoveInventoryItem = null;
-                        InventoryItemBase itm = null;
-                        List<InventoryItemBase> items = new List<InventoryItemBase>();
-                        foreach (MoveInventoryItemPacket.InventoryDataBlock datablock in moveitem.InventoryData)
-                        {
-                            itm = new InventoryItemBase(datablock.ItemID, AgentId);
-                            itm.Folder = datablock.FolderID;
-                            itm.Name = Util.FieldToString(datablock.NewName);
-                            // weird, comes out as empty string
-                            //m_log.DebugFormat("[XXX] new name: {0}", itm.Name);
-                            items.Add(itm);
-                        }
-                        handlerMoveInventoryItem = OnMoveInventoryItem;
-                        if (handlerMoveInventoryItem != null)
-                        {
-                            handlerMoveInventoryItem(this, items);
-                        }
-                    }
-                    break;
-
-                case PacketType.RemoveInventoryItem:
-                    RemoveInventoryItemPacket removeItem = (RemoveInventoryItemPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (removeItem.AgentData.SessionID != SessionId ||
-                            removeItem.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnRemoveInventoryItem != null)
-                    {
-                        RemoveInventoryItem handlerRemoveInventoryItem = null;
-                        List<UUID> uuids = new List<UUID>();
-                        foreach (RemoveInventoryItemPacket.InventoryDataBlock datablock in removeItem.InventoryData)
-                        {
-                            uuids.Add(datablock.ItemID);
-                        }
-                        handlerRemoveInventoryItem = OnRemoveInventoryItem;
-                        if (handlerRemoveInventoryItem != null)
-                        {
-                            handlerRemoveInventoryItem(this, uuids);
-                        }
-
-                    }
-                    break;
-
-                case PacketType.RemoveInventoryFolder:
-                    RemoveInventoryFolderPacket removeFolder = (RemoveInventoryFolderPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (removeFolder.AgentData.SessionID != SessionId ||
-                            removeFolder.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnRemoveInventoryFolder != null)
-                    {
-                        RemoveInventoryFolder handlerRemoveInventoryFolder = null;
-                        List<UUID> uuids = new List<UUID>();
-                        foreach (RemoveInventoryFolderPacket.FolderDataBlock datablock in removeFolder.FolderData)
-                        {
-                            uuids.Add(datablock.FolderID);
-                        }
-                        handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
-                        if (handlerRemoveInventoryFolder != null)
-                        {
-                            handlerRemoveInventoryFolder(this, uuids);
-                        }
-                    }
-                    break;
-
-                case PacketType.RemoveInventoryObjects:
-                    RemoveInventoryObjectsPacket removeObject = (RemoveInventoryObjectsPacket)Pack;
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (removeObject.AgentData.SessionID != SessionId ||
-                            removeObject.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-                    if (OnRemoveInventoryFolder != null)
-                    {
-                        RemoveInventoryFolder handlerRemoveInventoryFolder = null;
-                        List<UUID> uuids = new List<UUID>();
-                        foreach (RemoveInventoryObjectsPacket.FolderDataBlock datablock in removeObject.FolderData)
-                        {
-                            uuids.Add(datablock.FolderID);
-                        }
-                        handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
-                        if (handlerRemoveInventoryFolder != null)
-                        {
-                            handlerRemoveInventoryFolder(this, uuids);
-                        }
-                    }
-
-                    if (OnRemoveInventoryItem != null)
-                    {
-                        RemoveInventoryItem handlerRemoveInventoryItem = null;
-                        List<UUID> uuids = new List<UUID>();
-                        foreach (RemoveInventoryObjectsPacket.ItemDataBlock datablock in removeObject.ItemData)
-                        {
-                            uuids.Add(datablock.ItemID);
-                        }
-                        handlerRemoveInventoryItem = OnRemoveInventoryItem;
-                        if (handlerRemoveInventoryItem != null)
-                        {
-                            handlerRemoveInventoryItem(this, uuids);
-                        }
-                    }
-                    break;
-
-                case PacketType.RequestTaskInventory:
-                    RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (requesttask.AgentData.SessionID != SessionId ||
-                            requesttask.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RequestTaskInventory handlerRequestTaskInventory = OnRequestTaskInventory;
-                    if (handlerRequestTaskInventory != null)
-                    {
-                        handlerRequestTaskInventory(this, requesttask.InventoryData.LocalID);
-                    }
-                    break;
-
-                case PacketType.UpdateTaskInventory:
-                    UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (updatetask.AgentData.SessionID != SessionId ||
-                            updatetask.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnUpdateTaskInventory != null)
-                    {
-                        if (updatetask.UpdateData.Key == 0)
-                        {
-                            UpdateTaskInventory handlerUpdateTaskInventory = OnUpdateTaskInventory;
-                            if (handlerUpdateTaskInventory != null)
-                            {
-                                TaskInventoryItem newTaskItem = new TaskInventoryItem();
-                                newTaskItem.ItemID = updatetask.InventoryData.ItemID;
-                                newTaskItem.ParentID = updatetask.InventoryData.FolderID;
-                                newTaskItem.CreatorID = updatetask.InventoryData.CreatorID;
-                                newTaskItem.OwnerID = updatetask.InventoryData.OwnerID;
-                                newTaskItem.GroupID = updatetask.InventoryData.GroupID;
-                                newTaskItem.BasePermissions = updatetask.InventoryData.BaseMask;
-                                newTaskItem.CurrentPermissions = updatetask.InventoryData.OwnerMask;
-                                newTaskItem.GroupPermissions = updatetask.InventoryData.GroupMask;
-                                newTaskItem.EveryonePermissions = updatetask.InventoryData.EveryoneMask;
-                                newTaskItem.NextPermissions = updatetask.InventoryData.NextOwnerMask;
-                                //newTaskItem.GroupOwned=updatetask.InventoryData.GroupOwned;
-                                newTaskItem.Type = updatetask.InventoryData.Type;
-                                newTaskItem.InvType = updatetask.InventoryData.InvType;
-                                newTaskItem.Flags = updatetask.InventoryData.Flags;
-                                //newTaskItem.SaleType=updatetask.InventoryData.SaleType;
-                                //newTaskItem.SalePrice=updatetask.InventoryData.SalePrice;;
-                                newTaskItem.Name = Util.FieldToString(updatetask.InventoryData.Name);
-                                newTaskItem.Description = Util.FieldToString(updatetask.InventoryData.Description);
-                                newTaskItem.CreationDate = (uint)updatetask.InventoryData.CreationDate;
-                                handlerUpdateTaskInventory(this, updatetask.InventoryData.TransactionID,
-                                                           newTaskItem, updatetask.UpdateData.LocalID);
-                            }
-                        }
-                    }
-
-                    break;
-
-                case PacketType.RemoveTaskInventory:
-
-                    RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (removeTask.AgentData.SessionID != SessionId ||
-                            removeTask.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RemoveTaskInventory handlerRemoveTaskItem = OnRemoveTaskItem;
-
-                    if (handlerRemoveTaskItem != null)
-                    {
-                        handlerRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID);
-                    }
-
-                    break;
-
-                case PacketType.MoveTaskInventory:
-
-                    MoveTaskInventoryPacket moveTaskInventoryPacket = (MoveTaskInventoryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (moveTaskInventoryPacket.AgentData.SessionID != SessionId ||
-                            moveTaskInventoryPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    MoveTaskInventory handlerMoveTaskItem = OnMoveTaskItem;
-
-                    if (handlerMoveTaskItem != null)
-                    {
-                        handlerMoveTaskItem(
-                            this, moveTaskInventoryPacket.AgentData.FolderID,
-                            moveTaskInventoryPacket.InventoryData.LocalID,
-                            moveTaskInventoryPacket.InventoryData.ItemID);
-                    }
-
-                    break;
-
-                case PacketType.RezScript:
-                    //m_log.Debug(Pack.ToString());
-                    RezScriptPacket rezScriptx = (RezScriptPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (rezScriptx.AgentData.SessionID != SessionId ||
-                            rezScriptx.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RezScript handlerRezScript = OnRezScript;
-                    InventoryItemBase item = new InventoryItemBase();
-                    item.ID = rezScriptx.InventoryBlock.ItemID;
-                    item.Folder = rezScriptx.InventoryBlock.FolderID;
-                    item.CreatorId = rezScriptx.InventoryBlock.CreatorID.ToString();
-                    item.Owner = rezScriptx.InventoryBlock.OwnerID;
-                    item.BasePermissions = rezScriptx.InventoryBlock.BaseMask;
-                    item.CurrentPermissions = rezScriptx.InventoryBlock.OwnerMask;
-                    item.EveryOnePermissions = rezScriptx.InventoryBlock.EveryoneMask;
-                    item.NextPermissions = rezScriptx.InventoryBlock.NextOwnerMask;
-                    item.GroupPermissions = rezScriptx.InventoryBlock.GroupMask;
-                    item.GroupOwned = rezScriptx.InventoryBlock.GroupOwned;
-                    item.GroupID = rezScriptx.InventoryBlock.GroupID;
-                    item.AssetType = rezScriptx.InventoryBlock.Type;
-                    item.InvType = rezScriptx.InventoryBlock.InvType;
-                    item.Flags = rezScriptx.InventoryBlock.Flags;
-                    item.SaleType = rezScriptx.InventoryBlock.SaleType;
-                    item.SalePrice = rezScriptx.InventoryBlock.SalePrice;
-                    item.Name = Util.FieldToString(rezScriptx.InventoryBlock.Name);
-                    item.Description = Util.FieldToString(rezScriptx.InventoryBlock.Description);
-                    item.CreationDate = rezScriptx.InventoryBlock.CreationDate;
-
-                    if (handlerRezScript != null)
-                    {
-                        handlerRezScript(this, item, rezScriptx.InventoryBlock.TransactionID, rezScriptx.UpdateBlock.ObjectLocalID);
-                    }
-                    break;
-
-                case PacketType.MapLayerRequest:
-                    RequestMapLayer();
-                    break;
-                case PacketType.MapBlockRequest:
-                    MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (MapRequest.AgentData.SessionID != SessionId ||
-                            MapRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RequestMapBlocks handlerRequestMapBlocks = OnRequestMapBlocks;
-                    if (handlerRequestMapBlocks != null)
-                    {
-                        handlerRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY,
-                                                MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY, MapRequest.AgentData.Flags);
-                    }
-                    break;
-                case PacketType.MapNameRequest:
-                    MapNameRequestPacket map = (MapNameRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (map.AgentData.SessionID != SessionId ||
-                            map.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    string mapName = Util.UTF8.GetString(map.NameData.Name, 0,
-                                                             map.NameData.Name.Length - 1);
-                    RequestMapName handlerMapNameRequest = OnMapNameRequest;
-                    if (handlerMapNameRequest != null)
-                    {
-                        handlerMapNameRequest(this, mapName);
-                    }
-                    break;
-
-                case PacketType.TeleportLandmarkRequest:
-                    TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (tpReq.Info.SessionID != SessionId ||
-                            tpReq.Info.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UUID lmid = tpReq.Info.LandmarkID;
-                    AssetLandmark lm;
-                    if (lmid != UUID.Zero)
-                    {
-                        //AssetBase lma = m_assetCache.GetAsset(lmid, false);
-                        AssetBase lma = m_assetService.Get(lmid.ToString());
-
-                        if (lma == null)
-                        {
-                            // Failed to find landmark
-                            TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
-                            tpCancel.Info.SessionID = tpReq.Info.SessionID;
-                            tpCancel.Info.AgentID = tpReq.Info.AgentID;
-                            OutPacket(tpCancel, ThrottleOutPacketType.Task);
-                        }
-
-                        try
-                        {
-                            lm = new AssetLandmark(lma);
-                        }
-                        catch (NullReferenceException)
-                        {
-                            // asset not found generates null ref inside the assetlandmark constructor.
-                            TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
-                            tpCancel.Info.SessionID = tpReq.Info.SessionID;
-                            tpCancel.Info.AgentID = tpReq.Info.AgentID;
-                            OutPacket(tpCancel, ThrottleOutPacketType.Task);
-                            break;
-                        }
-                    }
-                    else
-                    {
-                        // Teleport home request
-                        UUIDNameRequest handlerTeleportHomeRequest = OnTeleportHomeRequest;
-                        if (handlerTeleportHomeRequest != null)
-                        {
-                            handlerTeleportHomeRequest(AgentId, this);
-                        }
-                        break;
-                    }
-
-                    TeleportLandmarkRequest handlerTeleportLandmarkRequest = OnTeleportLandmarkRequest;
-                    if (handlerTeleportLandmarkRequest != null)
-                    {
-                        handlerTeleportLandmarkRequest(this, lm.RegionID, lm.Position);
-                    }
-                    else
-                    {
-                        //no event handler so cancel request
-
-
-                        TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
-                        tpCancel.Info.AgentID = tpReq.Info.AgentID;
-                        tpCancel.Info.SessionID = tpReq.Info.SessionID;
-                        OutPacket(tpCancel, ThrottleOutPacketType.Task);
-
-                    }
-                    break;
-
-                case PacketType.TeleportLocationRequest:
-                    TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
-                    // m_log.Debug(tpLocReq.ToString());
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (tpLocReq.AgentData.SessionID != SessionId ||
-                            tpLocReq.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    TeleportLocationRequest handlerTeleportLocationRequest = OnTeleportLocationRequest;
-                    if (handlerTeleportLocationRequest != null)
-                    {
-                        handlerTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position,
-                                                       tpLocReq.Info.LookAt, 16);
-                    }
-                    else
-                    {
-                        //no event handler so cancel request
-                        TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
-                        tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID;
-                        tpCancel.Info.AgentID = tpLocReq.AgentData.AgentID;
-                        OutPacket(tpCancel, ThrottleOutPacketType.Task);
-                    }
-                    break;
-
-                //#endregion
-
-                case PacketType.UUIDNameRequest:
-                    UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack;
-
-                    foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock)
-                    {
-                        UUIDNameRequest handlerNameRequest = OnNameFromUUIDRequest;
-                        if (handlerNameRequest != null)
-                        {
-                            handlerNameRequest(UUIDBlock.ID, this);
-                        }
-                    }
-                    break;
-
-                //#region Parcel related packets
-
-
-                case PacketType.RegionHandleRequest:
-                    RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack;
-
-                    RegionHandleRequest handlerRegionHandleRequest = OnRegionHandleRequest;
-                    if (handlerRegionHandleRequest != null)
-                    {
-                        handlerRegionHandleRequest(this, rhrPack.RequestBlock.RegionID);
-                    }
-                    break;
-
-                case PacketType.ParcelInfoRequest:
-                    ParcelInfoRequestPacket pirPack = (ParcelInfoRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (pirPack.AgentData.SessionID != SessionId ||
-                            pirPack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelInfoRequest handlerParcelInfoRequest = OnParcelInfoRequest;
-                    if (handlerParcelInfoRequest != null)
-                    {
-                        handlerParcelInfoRequest(this, pirPack.Data.ParcelID);
-                    }
-                    break;
-
-                case PacketType.ParcelAccessListRequest:
-                    ParcelAccessListRequestPacket requestPacket = (ParcelAccessListRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (requestPacket.AgentData.SessionID != SessionId ||
-                            requestPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelAccessListRequest handlerParcelAccessListRequest = OnParcelAccessListRequest;
-
-                    if (handlerParcelAccessListRequest != null)
-                    {
-                        handlerParcelAccessListRequest(requestPacket.AgentData.AgentID, requestPacket.AgentData.SessionID,
-                                                       requestPacket.Data.Flags, requestPacket.Data.SequenceID,
-                                                       requestPacket.Data.LocalID, this);
-                    }
-                    break;
-
-                case PacketType.ParcelAccessListUpdate:
-                    ParcelAccessListUpdatePacket updatePacket = (ParcelAccessListUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (updatePacket.AgentData.SessionID != SessionId ||
-                            updatePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    List<ParcelManager.ParcelAccessEntry> entries = new List<ParcelManager.ParcelAccessEntry>();
-                    foreach (ParcelAccessListUpdatePacket.ListBlock block in updatePacket.List)
-                    {
-                        ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry();
-                        entry.AgentID = block.ID;
-                        entry.Flags = (AccessList)block.Flags;
-                        entry.Time = new DateTime();
-                        entries.Add(entry);
-                    }
-
-                    ParcelAccessListUpdateRequest handlerParcelAccessListUpdateRequest = OnParcelAccessListUpdateRequest;
-                    if (handlerParcelAccessListUpdateRequest != null)
-                    {
-                        handlerParcelAccessListUpdateRequest(updatePacket.AgentData.AgentID,
-                                                             updatePacket.AgentData.SessionID, updatePacket.Data.Flags,
-                                                             updatePacket.Data.LocalID, entries, this);
-                    }
-                    break;
-
-                case PacketType.ParcelPropertiesRequest:
-
-                    ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (propertiesRequest.AgentData.SessionID != SessionId ||
-                            propertiesRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelPropertiesRequest handlerParcelPropertiesRequest = OnParcelPropertiesRequest;
-                    if (handlerParcelPropertiesRequest != null)
-                    {
-                        handlerParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West),
-                                                       (int)Math.Round(propertiesRequest.ParcelData.South),
-                                                       (int)Math.Round(propertiesRequest.ParcelData.East),
-                                                       (int)Math.Round(propertiesRequest.ParcelData.North),
-                                                       propertiesRequest.ParcelData.SequenceID,
-                                                       propertiesRequest.ParcelData.SnapSelection, this);
-                    }
-                    break;
-
-                case PacketType.ParcelDivide:
-                    ParcelDividePacket landDivide = (ParcelDividePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (landDivide.AgentData.SessionID != SessionId ||
-                            landDivide.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelDivideRequest handlerParcelDivideRequest = OnParcelDivideRequest;
-                    if (handlerParcelDivideRequest != null)
-                    {
-                        handlerParcelDivideRequest((int)Math.Round(landDivide.ParcelData.West),
-                                                   (int)Math.Round(landDivide.ParcelData.South),
-                                                   (int)Math.Round(landDivide.ParcelData.East),
-                                                   (int)Math.Round(landDivide.ParcelData.North), this);
-                    }
-                    break;
-
-                case PacketType.ParcelJoin:
-                    ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (landJoin.AgentData.SessionID != SessionId ||
-                            landJoin.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelJoinRequest handlerParcelJoinRequest = OnParcelJoinRequest;
-
-                    if (handlerParcelJoinRequest != null)
-                    {
-                        handlerParcelJoinRequest((int)Math.Round(landJoin.ParcelData.West),
-                                                 (int)Math.Round(landJoin.ParcelData.South),
-                                                 (int)Math.Round(landJoin.ParcelData.East),
-                                                 (int)Math.Round(landJoin.ParcelData.North), this);
-                    }
-                    break;
-
-                case PacketType.ParcelPropertiesUpdate:
-                    ParcelPropertiesUpdatePacket parcelPropertiesPacket = (ParcelPropertiesUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (parcelPropertiesPacket.AgentData.SessionID != SessionId ||
-                            parcelPropertiesPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelPropertiesUpdateRequest handlerParcelPropertiesUpdateRequest = OnParcelPropertiesUpdateRequest;
-
-                    if (handlerParcelPropertiesUpdateRequest != null)
-                    {
-                        LandUpdateArgs args = new LandUpdateArgs();
-
-                        args.AuthBuyerID = parcelPropertiesPacket.ParcelData.AuthBuyerID;
-                        args.Category = (ParcelCategory)parcelPropertiesPacket.ParcelData.Category;
-                        args.Desc = Utils.BytesToString(parcelPropertiesPacket.ParcelData.Desc);
-                        args.GroupID = parcelPropertiesPacket.ParcelData.GroupID;
-                        args.LandingType = parcelPropertiesPacket.ParcelData.LandingType;
-                        args.MediaAutoScale = parcelPropertiesPacket.ParcelData.MediaAutoScale;
-                        args.MediaID = parcelPropertiesPacket.ParcelData.MediaID;
-                        args.MediaURL = Utils.BytesToString(parcelPropertiesPacket.ParcelData.MediaURL);
-                        args.MusicURL = Utils.BytesToString(parcelPropertiesPacket.ParcelData.MusicURL);
-                        args.Name = Utils.BytesToString(parcelPropertiesPacket.ParcelData.Name);
-                        args.ParcelFlags = parcelPropertiesPacket.ParcelData.ParcelFlags;
-                        args.PassHours = parcelPropertiesPacket.ParcelData.PassHours;
-                        args.PassPrice = parcelPropertiesPacket.ParcelData.PassPrice;
-                        args.SalePrice = parcelPropertiesPacket.ParcelData.SalePrice;
-                        args.SnapshotID = parcelPropertiesPacket.ParcelData.SnapshotID;
-                        args.UserLocation = parcelPropertiesPacket.ParcelData.UserLocation;
-                        args.UserLookAt = parcelPropertiesPacket.ParcelData.UserLookAt;
-                        handlerParcelPropertiesUpdateRequest(args, parcelPropertiesPacket.ParcelData.LocalID, this);
-                    }
-                    break;
-
-                case PacketType.ParcelSelectObjects:
-                    ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (selectPacket.AgentData.SessionID != SessionId ||
-                            selectPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    List<UUID> returnIDs = new List<UUID>();
-
-                    foreach (ParcelSelectObjectsPacket.ReturnIDsBlock rb in
-                             selectPacket.ReturnIDs)
-                    {
-                        returnIDs.Add(rb.ReturnID);
-                    }
-
-                    ParcelSelectObjects handlerParcelSelectObjects = OnParcelSelectObjects;
-
-                    if (handlerParcelSelectObjects != null)
-                    {
-                        handlerParcelSelectObjects(selectPacket.ParcelData.LocalID,
-                                                   Convert.ToInt32(selectPacket.ParcelData.ReturnType), returnIDs, this);
-                    }
-                    break;
-
-                case PacketType.ParcelObjectOwnersRequest:
-                    //m_log.Debug(Pack.ToString());
-                    ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (reqPacket.AgentData.SessionID != SessionId ||
-                            reqPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelObjectOwnerRequest handlerParcelObjectOwnerRequest = OnParcelObjectOwnerRequest;
-
-                    if (handlerParcelObjectOwnerRequest != null)
-                    {
-                        handlerParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this);
-                    }
-                    break;
-
-                case PacketType.ParcelGodForceOwner:
-                    ParcelGodForceOwnerPacket godForceOwnerPacket = (ParcelGodForceOwnerPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (godForceOwnerPacket.AgentData.SessionID != SessionId ||
-                            godForceOwnerPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelGodForceOwner handlerParcelGodForceOwner = OnParcelGodForceOwner;
-                    if (handlerParcelGodForceOwner != null)
-                    {
-                        handlerParcelGodForceOwner(godForceOwnerPacket.Data.LocalID, godForceOwnerPacket.Data.OwnerID, this);
-                    }
-                    break;
-
-                case PacketType.ParcelRelease:
-                    ParcelReleasePacket releasePacket = (ParcelReleasePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (releasePacket.AgentData.SessionID != SessionId ||
-                            releasePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelAbandonRequest handlerParcelAbandonRequest = OnParcelAbandonRequest;
-                    if (handlerParcelAbandonRequest != null)
-                    {
-                        handlerParcelAbandonRequest(releasePacket.Data.LocalID, this);
-                    }
-                    break;
-
-                case PacketType.ParcelReclaim:
-                    ParcelReclaimPacket reclaimPacket = (ParcelReclaimPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (reclaimPacket.AgentData.SessionID != SessionId ||
-                            reclaimPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelReclaim handlerParcelReclaim = OnParcelReclaim;
-                    if (handlerParcelReclaim != null)
-                    {
-                        handlerParcelReclaim(reclaimPacket.Data.LocalID, this);
-                    }
-                    break;
-
-                case PacketType.ParcelReturnObjects:
-
-
-                    ParcelReturnObjectsPacket parcelReturnObjects = (ParcelReturnObjectsPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (parcelReturnObjects.AgentData.SessionID != SessionId ||
-                            parcelReturnObjects.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    UUID[] puserselectedOwnerIDs = new UUID[parcelReturnObjects.OwnerIDs.Length];
-                    for (int parceliterator = 0; parceliterator < parcelReturnObjects.OwnerIDs.Length; parceliterator++)
-                        puserselectedOwnerIDs[parceliterator] = parcelReturnObjects.OwnerIDs[parceliterator].OwnerID;
-
-                    UUID[] puserselectedTaskIDs = new UUID[parcelReturnObjects.TaskIDs.Length];
-
-                    for (int parceliterator = 0; parceliterator < parcelReturnObjects.TaskIDs.Length; parceliterator++)
-                        puserselectedTaskIDs[parceliterator] = parcelReturnObjects.TaskIDs[parceliterator].TaskID;
-
-                    ParcelReturnObjectsRequest handlerParcelReturnObjectsRequest = OnParcelReturnObjectsRequest;
-                    if (handlerParcelReturnObjectsRequest != null)
-                    {
-                        handlerParcelReturnObjectsRequest(parcelReturnObjects.ParcelData.LocalID, parcelReturnObjects.ParcelData.ReturnType, puserselectedOwnerIDs, puserselectedTaskIDs, this);
-
-                    }
-                    break;
-
-                case PacketType.ParcelSetOtherCleanTime:
-                    ParcelSetOtherCleanTimePacket parcelSetOtherCleanTimePacket = (ParcelSetOtherCleanTimePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (parcelSetOtherCleanTimePacket.AgentData.SessionID != SessionId ||
-                            parcelSetOtherCleanTimePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelSetOtherCleanTime handlerParcelSetOtherCleanTime = OnParcelSetOtherCleanTime;
-                    if (handlerParcelSetOtherCleanTime != null)
-                    {
-                        handlerParcelSetOtherCleanTime(this,
-                                                       parcelSetOtherCleanTimePacket.ParcelData.LocalID,
-                                                       parcelSetOtherCleanTimePacket.ParcelData.OtherCleanTime);
-                    }
-                    break;
-
-                case PacketType.LandStatRequest:
-                    LandStatRequestPacket lsrp = (LandStatRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (lsrp.AgentData.SessionID != SessionId ||
-                            lsrp.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    GodLandStatRequest handlerLandStatRequest = OnLandStatRequest;
-                    if (handlerLandStatRequest != null)
-                    {
-                        handlerLandStatRequest(lsrp.RequestData.ParcelLocalID, lsrp.RequestData.ReportType, lsrp.RequestData.RequestFlags, Utils.BytesToString(lsrp.RequestData.Filter), this);
-                    }
-                    break;
-
-                case PacketType.ParcelDwellRequest:
-                    ParcelDwellRequestPacket dwellrq =
-                            (ParcelDwellRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dwellrq.AgentData.SessionID != SessionId ||
-                            dwellrq.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ParcelDwellRequest handlerParcelDwellRequest = OnParcelDwellRequest;
-                    if (handlerParcelDwellRequest != null)
-                    {
-                        handlerParcelDwellRequest(dwellrq.Data.LocalID, this);
-                    }
-                    break;
-
-                //#endregion
-
-                //#region Estate Packets
-
-                case PacketType.EstateOwnerMessage:
-                    EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack;
-                    //m_log.Debug(messagePacket.ToString());
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (messagePacket.AgentData.SessionID != SessionId ||
-                            messagePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    switch (Utils.BytesToString(messagePacket.MethodData.Method))
-                    {
-                        case "getinfo":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                OnDetailedEstateDataRequest(this, messagePacket.MethodData.Invoice);
-                            }
-                            break;
-                        case "setregioninfo":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                OnSetEstateFlagsRequest(convertParamStringToBool(messagePacket.ParamList[0].Parameter), convertParamStringToBool(messagePacket.ParamList[1].Parameter),
-                                                        convertParamStringToBool(messagePacket.ParamList[2].Parameter), !convertParamStringToBool(messagePacket.ParamList[3].Parameter),
-                                                        Convert.ToInt16(Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[4].Parameter), Culture.NumberFormatInfo)),
-                                                        (float)Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[5].Parameter), Culture.NumberFormatInfo),
-                                                        Convert.ToInt16(Utils.BytesToString(messagePacket.ParamList[6].Parameter)),
-                                                        convertParamStringToBool(messagePacket.ParamList[7].Parameter), convertParamStringToBool(messagePacket.ParamList[8].Parameter));
-                            }
-                            break;
-                        //                            case "texturebase":
-                        //                                if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                        //                                {
-                        //                                    foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
-                        //                                    {
-                        //                                        string s = Utils.BytesToString(block.Parameter);
-                        //                                        string[] splitField = s.Split(' ');
-                        //                                        if (splitField.Length == 2)
-                        //                                        {
-                        //                                            UUID tempUUID = new UUID(splitField[1]);
-                        //                                            OnSetEstateTerrainBaseTexture(this, Convert.ToInt16(splitField[0]), tempUUID);
-                        //                                        }
-                        //                                    }
-                        //                                }
-                        //                                break;
-                        case "texturedetail":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
-                                {
-                                    string s = Utils.BytesToString(block.Parameter);
-                                    string[] splitField = s.Split(' ');
-                                    if (splitField.Length == 2)
-                                    {
-                                        Int16 corner = Convert.ToInt16(splitField[0]);
-                                        UUID textureUUID = new UUID(splitField[1]);
-
-                                        OnSetEstateTerrainDetailTexture(this, corner, textureUUID);
-                                    }
-                                }
-                            }
-
-                            break;
-                        case "textureheights":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
-                                {
-                                    string s = Utils.BytesToString(block.Parameter);
-                                    string[] splitField = s.Split(' ');
-                                    if (splitField.Length == 3)
-                                    {
-                                        Int16 corner = Convert.ToInt16(splitField[0]);
-                                        float lowValue = (float)Convert.ToDecimal(splitField[1], Culture.NumberFormatInfo);
-                                        float highValue = (float)Convert.ToDecimal(splitField[2], Culture.NumberFormatInfo);
-
-                                        OnSetEstateTerrainTextureHeights(this, corner, lowValue, highValue);
-                                    }
-                                }
-                            }
-                            break;
-                        case "texturecommit":
-                            OnCommitEstateTerrainTextureRequest(this);
-                            break;
-                        case "setregionterrain":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                if (messagePacket.ParamList.Length != 9)
-                                {
-                                    m_log.Error("EstateOwnerMessage: SetRegionTerrain method has a ParamList of invalid length");
-                                }
-                                else
-                                {
-                                    try
-                                    {
-                                        string tmp = Utils.BytesToString(messagePacket.ParamList[0].Parameter);
-                                        if (!tmp.Contains(".")) tmp += ".00";
-                                        float WaterHeight = (float)Convert.ToDecimal(tmp, Culture.NumberFormatInfo);
-                                        tmp = Utils.BytesToString(messagePacket.ParamList[1].Parameter);
-                                        if (!tmp.Contains(".")) tmp += ".00";
-                                        float TerrainRaiseLimit = (float)Convert.ToDecimal(tmp, Culture.NumberFormatInfo);
-                                        tmp = Utils.BytesToString(messagePacket.ParamList[2].Parameter);
-                                        if (!tmp.Contains(".")) tmp += ".00";
-                                        float TerrainLowerLimit = (float)Convert.ToDecimal(tmp, Culture.NumberFormatInfo);
-                                        bool UseEstateSun = convertParamStringToBool(messagePacket.ParamList[3].Parameter);
-                                        bool UseFixedSun = convertParamStringToBool(messagePacket.ParamList[4].Parameter);
-                                        float SunHour = (float)Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[5].Parameter), Culture.NumberFormatInfo);
-                                        bool UseGlobal = convertParamStringToBool(messagePacket.ParamList[6].Parameter);
-                                        bool EstateFixedSun = convertParamStringToBool(messagePacket.ParamList[7].Parameter);
-                                        float EstateSunHour = (float)Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[8].Parameter), Culture.NumberFormatInfo);
-
-                                        OnSetRegionTerrainSettings(WaterHeight, TerrainRaiseLimit, TerrainLowerLimit, UseEstateSun, UseFixedSun, SunHour, UseGlobal, EstateFixedSun, EstateSunHour);
-
-                                    }
-                                    catch (Exception ex)
-                                    {
-                                        m_log.Error("EstateOwnerMessage: Exception while setting terrain settings: \n" + messagePacket + "\n" + ex);
-                                    }
-                                }
-                            }
-
-                            break;
-                        case "restart":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                // There's only 1 block in the estateResetSim..   and that's the number of seconds till restart.
-                                foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
-                                {
-                                    float timeSeconds;
-                                    Utils.TryParseSingle(Utils.BytesToString(block.Parameter), out timeSeconds);
-                                    timeSeconds = (int)timeSeconds;
-                                    OnEstateRestartSimRequest(this, (int)timeSeconds);
-
-                                }
-                            }
-                            break;
-                        case "estatechangecovenantid":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
-                                {
-                                    UUID newCovenantID = new UUID(Utils.BytesToString(block.Parameter));
-                                    OnEstateChangeCovenantRequest(this, newCovenantID);
-                                }
-                            }
-                            break;
-                        case "estateaccessdelta": // Estate access delta manages the banlist and allow list too.
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                int estateAccessType = Convert.ToInt16(Utils.BytesToString(messagePacket.ParamList[1].Parameter));
-                                OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter)));
-
-                            }
-                            break;
-                        case "simulatormessage":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                UUID invoice = messagePacket.MethodData.Invoice;
-                                UUID SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
-                                string SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter);
-                                string Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter);
-                                UUID sessionID = messagePacket.AgentData.SessionID;
-                                OnSimulatorBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
-                            }
-                            break;
-                        case "instantmessage":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                if (messagePacket.ParamList.Length < 5)
-                                    break;
-                                UUID invoice = messagePacket.MethodData.Invoice;
-                                UUID SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
-                                string SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter);
-                                string Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter);
-                                UUID sessionID = messagePacket.AgentData.SessionID;
-                                OnEstateBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
-                            }
-                            break;
-                        case "setregiondebug":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                UUID invoice = messagePacket.MethodData.Invoice;
-                                UUID SenderID = messagePacket.AgentData.AgentID;
-                                bool scripted = convertParamStringToBool(messagePacket.ParamList[0].Parameter);
-                                bool collisionEvents = convertParamStringToBool(messagePacket.ParamList[1].Parameter);
-                                bool physics = convertParamStringToBool(messagePacket.ParamList[2].Parameter);
-
-                                OnEstateDebugRegionRequest(this, invoice, SenderID, scripted, collisionEvents, physics);
-                            }
-                            break;
-                        case "teleporthomeuser":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                UUID invoice = messagePacket.MethodData.Invoice;
-                                UUID SenderID = messagePacket.AgentData.AgentID;
-                                UUID Prey;
-
-                                UUID.TryParse(Utils.BytesToString(messagePacket.ParamList[1].Parameter), out Prey);
-
-                                OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey);
-                            }
-                            break;
-                        case "teleporthomeallusers":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                UUID invoice = messagePacket.MethodData.Invoice;
-                                UUID SenderID = messagePacket.AgentData.AgentID;
-                                OnEstateTeleportAllUsersHomeRequest(this, invoice, SenderID);
-                            }
-                            break;
-                        case "colliders":
-                            handlerLandStatRequest = OnLandStatRequest;
-                            if (handlerLandStatRequest != null)
-                            {
-                                handlerLandStatRequest(0, 1, 0, "", this);
-                            }
-                            break;
-                        case "scripts":
-                            handlerLandStatRequest = OnLandStatRequest;
-                            if (handlerLandStatRequest != null)
-                            {
-                                handlerLandStatRequest(0, 0, 0, "", this);
-                            }
-                            break;
-                        case "terrain":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                if (messagePacket.ParamList.Length > 0)
-                                {
-                                    if (Utils.BytesToString(messagePacket.ParamList[0].Parameter) == "bake")
-                                    {
-                                        BakeTerrain handlerBakeTerrain = OnBakeTerrain;
-                                        if (handlerBakeTerrain != null)
-                                        {
-                                            handlerBakeTerrain(this);
-                                        }
-                                    }
-                                    if (Utils.BytesToString(messagePacket.ParamList[0].Parameter) == "download filename")
-                                    {
-                                        if (messagePacket.ParamList.Length > 1)
-                                        {
-                                            RequestTerrain handlerRequestTerrain = OnRequestTerrain;
-                                            if (handlerRequestTerrain != null)
-                                            {
-                                                handlerRequestTerrain(this, Utils.BytesToString(messagePacket.ParamList[1].Parameter));
-                                            }
-                                        }
-                                    }
-                                    if (Utils.BytesToString(messagePacket.ParamList[0].Parameter) == "upload filename")
-                                    {
-                                        if (messagePacket.ParamList.Length > 1)
-                                        {
-                                            RequestTerrain handlerUploadTerrain = OnUploadTerrain;
-                                            if (handlerUploadTerrain != null)
-                                            {
-                                                handlerUploadTerrain(this, Utils.BytesToString(messagePacket.ParamList[1].Parameter));
-                                            }
-                                        }
-                                    }
-
-                                }
-
-
-                            }
-                            break;
-
-                        case "estatechangeinfo":
-                            if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
-                            {
-                                UUID invoice = messagePacket.MethodData.Invoice;
-                                UUID SenderID = messagePacket.AgentData.AgentID;
-                                UInt32 param1 = Convert.ToUInt32(Utils.BytesToString(messagePacket.ParamList[1].Parameter));
-                                UInt32 param2 = Convert.ToUInt32(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
-
-                                EstateChangeInfo handlerEstateChangeInfo = OnEstateChangeInfo;
-                                if (handlerEstateChangeInfo != null)
-                                {
-                                    handlerEstateChangeInfo(this, invoice, SenderID, param1, param2);
-                                }
-                            }
-                            break;
-
-                        default:
-                            m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket);
-                            break;
-                    }
-
-                    //int parcelID, uint reportType, uint requestflags, string filter
-
-                    //lsrp.RequestData.ParcelLocalID;
-                    //lsrp.RequestData.ReportType; // 1 = colliders, 0 = scripts
-                    //lsrp.RequestData.RequestFlags;
-                    //lsrp.RequestData.Filter;
-
-                    break;
-
-                case PacketType.RequestRegionInfo:
-                    RequestRegionInfoPacket.AgentDataBlock mPacket = ((RequestRegionInfoPacket)Pack).AgentData;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (mPacket.SessionID != SessionId ||
-                            mPacket.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RegionInfoRequest handlerRegionInfoRequest = OnRegionInfoRequest;
-                    if (handlerRegionInfoRequest != null)
-                    {
-                        handlerRegionInfoRequest(this);
-                    }
-                    break;
-
-                case PacketType.EstateCovenantRequest:
-
-                    //EstateCovenantRequestPacket.AgentDataBlock epack =
-                    //     ((EstateCovenantRequestPacket)Pack).AgentData;
-
-                    EstateCovenantRequest handlerEstateCovenantRequest = OnEstateCovenantRequest;
-                    if (handlerEstateCovenantRequest != null)
-                    {
-                        handlerEstateCovenantRequest(this);
-                    }
-                    break;
-
-                //#endregion
-
-                //#region GodPackets
-
-                case PacketType.RequestGodlikePowers:
-                    RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack;
-                    RequestGodlikePowersPacket.RequestBlockBlock rblock = rglpPack.RequestBlock;
-                    UUID token = rblock.Token;
-
-                    RequestGodlikePowersPacket.AgentDataBlock ablock = rglpPack.AgentData;
-
-                    RequestGodlikePowers handlerReqGodlikePowers = OnRequestGodlikePowers;
-
-                    if (handlerReqGodlikePowers != null)
-                    {
-                        handlerReqGodlikePowers(ablock.AgentID, ablock.SessionID, token, rblock.Godlike, this);
-                    }
-
-                    break;
-
-                case PacketType.GodKickUser:
-                    GodKickUserPacket gkupack = (GodKickUserPacket)Pack;
-
-                    if (gkupack.UserInfo.GodSessionID == SessionId && AgentId == gkupack.UserInfo.GodID)
-                    {
-                        GodKickUser handlerGodKickUser = OnGodKickUser;
-                        if (handlerGodKickUser != null)
-                        {
-                            handlerGodKickUser(gkupack.UserInfo.GodID, gkupack.UserInfo.GodSessionID,
-                                               gkupack.UserInfo.AgentID, gkupack.UserInfo.KickFlags, gkupack.UserInfo.Reason,gkupack.UserInfo);
-                        }
-                    }
-                    else
-                    {
-                        SendAgentAlertMessage("Kick request denied", false);
-                    }
-                    //KickUserPacket kupack = new KickUserPacket();
-                    //KickUserPacket.UserInfoBlock kupackib = kupack.UserInfo;
-
-                    //kupack.UserInfo.AgentID = gkupack.UserInfo.AgentID;
-                    //kupack.UserInfo.SessionID = gkupack.UserInfo.GodSessionID;
-
-                    //kupack.TargetBlock.TargetIP = (uint)0;
-                    //kupack.TargetBlock.TargetPort = (ushort)0;
-                    //kupack.UserInfo.Reason = gkupack.UserInfo.Reason;
-
-                    //OutPacket(kupack, ThrottleOutPacketType.Task);
-                    break;
-
-                //#endregion
-
-                //#region Economy/Transaction Packets
-
-                case PacketType.MoneyBalanceRequest:
-                    MoneyBalanceRequestPacket moneybalancerequestpacket = (MoneyBalanceRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (moneybalancerequestpacket.AgentData.SessionID != SessionId ||
-                            moneybalancerequestpacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    MoneyBalanceRequest handlerMoneyBalanceRequest = OnMoneyBalanceRequest;
-
-                    if (handlerMoneyBalanceRequest != null)
-                    {
-                        handlerMoneyBalanceRequest(this, moneybalancerequestpacket.AgentData.AgentID, moneybalancerequestpacket.AgentData.SessionID, moneybalancerequestpacket.MoneyData.TransactionID);
-                    }
-
-                    break;
-
-                case PacketType.EconomyDataRequest:
-
-
-                    EconomyDataRequest handlerEconomoyDataRequest = OnEconomyDataRequest;
-                    if (handlerEconomoyDataRequest != null)
-                    {
-                        handlerEconomoyDataRequest(AgentId);
-                    }
-                    break;
-
-                case PacketType.RequestPayPrice:
-                    RequestPayPricePacket requestPayPricePacket = (RequestPayPricePacket)Pack;
-
-                    RequestPayPrice handlerRequestPayPrice = OnRequestPayPrice;
-                    if (handlerRequestPayPrice != null)
-                    {
-                        handlerRequestPayPrice(this, requestPayPricePacket.ObjectData.ObjectID);
-                    }
-                    break;
-
-                case PacketType.ObjectSaleInfo:
-                    ObjectSaleInfoPacket objectSaleInfoPacket = (ObjectSaleInfoPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (objectSaleInfoPacket.AgentData.SessionID != SessionId ||
-                            objectSaleInfoPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectSaleInfo handlerObjectSaleInfo = OnObjectSaleInfo;
-                    if (handlerObjectSaleInfo != null)
-                    {
-                        foreach (ObjectSaleInfoPacket.ObjectDataBlock d
-                            in objectSaleInfoPacket.ObjectData)
-                        {
-                            handlerObjectSaleInfo(this,
-                                                  objectSaleInfoPacket.AgentData.AgentID,
-                                                  objectSaleInfoPacket.AgentData.SessionID,
-                                                  d.LocalID,
-                                                  d.SaleType,
-                                                  d.SalePrice);
-                        }
-                    }
-                    break;
-
-                case PacketType.ObjectBuy:
-                    ObjectBuyPacket objectBuyPacket = (ObjectBuyPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (objectBuyPacket.AgentData.SessionID != SessionId ||
-                            objectBuyPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ObjectBuy handlerObjectBuy = OnObjectBuy;
-
-                    if (handlerObjectBuy != null)
-                    {
-                        foreach (ObjectBuyPacket.ObjectDataBlock d
-                            in objectBuyPacket.ObjectData)
-                        {
-                            handlerObjectBuy(this,
-                                             objectBuyPacket.AgentData.AgentID,
-                                             objectBuyPacket.AgentData.SessionID,
-                                             objectBuyPacket.AgentData.GroupID,
-                                             objectBuyPacket.AgentData.CategoryID,
-                                             d.ObjectLocalID,
-                                             d.SaleType,
-                                             d.SalePrice);
-                        }
-                    }
-                    break;
-
-                //#endregion
-
-                //#region Script Packets
-
-                case PacketType.GetScriptRunning:
-                    GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack;
-
-                    GetScriptRunning handlerGetScriptRunning = OnGetScriptRunning;
-                    if (handlerGetScriptRunning != null)
-                    {
-                        handlerGetScriptRunning(this, scriptRunning.Script.ObjectID, scriptRunning.Script.ItemID);
-                    }
-                    break;
-
-                case PacketType.SetScriptRunning:
-                    SetScriptRunningPacket setScriptRunning = (SetScriptRunningPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (setScriptRunning.AgentData.SessionID != SessionId ||
-                            setScriptRunning.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    SetScriptRunning handlerSetScriptRunning = OnSetScriptRunning;
-                    if (handlerSetScriptRunning != null)
-                    {
-                        handlerSetScriptRunning(this, setScriptRunning.Script.ObjectID, setScriptRunning.Script.ItemID, setScriptRunning.Script.Running);
-                    }
-                    break;
-
-                case PacketType.ScriptReset:
-                    ScriptResetPacket scriptResetPacket = (ScriptResetPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (scriptResetPacket.AgentData.SessionID != SessionId ||
-                            scriptResetPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ScriptReset handlerScriptReset = OnScriptReset;
-                    if (handlerScriptReset != null)
-                    {
-                        handlerScriptReset(this, scriptResetPacket.Script.ObjectID, scriptResetPacket.Script.ItemID);
-                    }
-                    break;
-
-                //#endregion
-
-                //#region Gesture Managment
-
-                case PacketType.ActivateGestures:
-                    ActivateGesturesPacket activateGesturePacket = (ActivateGesturesPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (activateGesturePacket.AgentData.SessionID != SessionId ||
-                            activateGesturePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ActivateGesture handlerActivateGesture = OnActivateGesture;
-                    if (handlerActivateGesture != null)
-                    {
-                        handlerActivateGesture(this,
-                                               activateGesturePacket.Data[0].AssetID,
-                                               activateGesturePacket.Data[0].ItemID);
-                    }
-                    else m_log.Error("Null pointer for activateGesture");
-
-                    break;
-
-                case PacketType.DeactivateGestures:
-                    DeactivateGesturesPacket deactivateGesturePacket = (DeactivateGesturesPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (deactivateGesturePacket.AgentData.SessionID != SessionId ||
-                            deactivateGesturePacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DeactivateGesture handlerDeactivateGesture = OnDeactivateGesture;
-                    if (handlerDeactivateGesture != null)
-                    {
-                        handlerDeactivateGesture(this, deactivateGesturePacket.Data[0].ItemID);
-                    }
-                    break;
-                case PacketType.ObjectOwner:
-                    ObjectOwnerPacket objectOwnerPacket = (ObjectOwnerPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (objectOwnerPacket.AgentData.SessionID != SessionId ||
-                            objectOwnerPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    List<uint> localIDs = new List<uint>();
-
-                    foreach (ObjectOwnerPacket.ObjectDataBlock d in objectOwnerPacket.ObjectData)
-                        localIDs.Add(d.ObjectLocalID);
-
-                    ObjectOwner handlerObjectOwner = OnObjectOwner;
-                    if (handlerObjectOwner != null)
-                    {
-                        handlerObjectOwner(this, objectOwnerPacket.HeaderData.OwnerID, objectOwnerPacket.HeaderData.GroupID, localIDs);
-                    }
-                    break;
-
-                //#endregion
-
-                case PacketType.AgentFOV:
-                    AgentFOVPacket fovPacket = (AgentFOVPacket)Pack;
-
-                    if (fovPacket.FOVBlock.GenCounter > m_agentFOVCounter)
-                    {
-                        m_agentFOVCounter = fovPacket.FOVBlock.GenCounter;
-                        AgentFOV handlerAgentFOV = OnAgentFOV;
-                        if (handlerAgentFOV != null)
-                        {
-                            handlerAgentFOV(this, fovPacket.FOVBlock.VerticalAngle);
-                        }
-                    }
-                    break;
-
-                //#region unimplemented handlers
-
-                case PacketType.ViewerStats:
-                    // TODO: handle this packet
-                    //m_log.Warn("[CLIENT]: unhandled ViewerStats packet");
-                    break;
-
-                case PacketType.MapItemRequest:
-                    MapItemRequestPacket mirpk = (MapItemRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (mirpk.AgentData.SessionID != SessionId ||
-                            mirpk.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    //m_log.Debug(mirpk.ToString());
-                    MapItemRequest handlerMapItemRequest = OnMapItemRequest;
-                    if (handlerMapItemRequest != null)
-                    {
-                        handlerMapItemRequest(this, mirpk.AgentData.Flags, mirpk.AgentData.EstateID,
-                                              mirpk.AgentData.Godlike, mirpk.RequestData.ItemType,
-                                              mirpk.RequestData.RegionHandle);
-
-                    }
-                    break;
-
-                case PacketType.TransferAbort:
-                    // TODO: handle this packet
-                    //m_log.Warn("[CLIENT]: unhandled TransferAbort packet");
-                    break;
-
-                case PacketType.MuteListRequest:
-                    MuteListRequestPacket muteListRequest =
-                            (MuteListRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (muteListRequest.AgentData.SessionID != SessionId ||
-                            muteListRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    MuteListRequest handlerMuteListRequest = OnMuteListRequest;
-                    if (handlerMuteListRequest != null)
-                    {
-                        handlerMuteListRequest(this, muteListRequest.MuteData.MuteCRC);
-                    }
-                    else
-                    {
-                        SendUseCachedMuteList();
-                    }
-                    break;
-
-                case PacketType.UseCircuitCode:
-                    // Don't display this one, we handle it at a lower level
-                    break;
-
-                case PacketType.AgentHeightWidth:
-                    // TODO: handle this packet
-                    //m_log.Warn("[CLIENT]: unhandled AgentHeightWidth packet");
-                    break;
-
-                case PacketType.InventoryDescendents:
-                    // TODO: handle this packet
-                    //m_log.Warn("[CLIENT]: unhandled InventoryDescent packet");
-
-                    break;
-
-                case PacketType.DirPlacesQuery:
-                    DirPlacesQueryPacket dirPlacesQueryPacket = (DirPlacesQueryPacket)Pack;
-                    //m_log.Debug(dirPlacesQueryPacket.ToString());
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dirPlacesQueryPacket.AgentData.SessionID != SessionId ||
-                            dirPlacesQueryPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DirPlacesQuery handlerDirPlacesQuery = OnDirPlacesQuery;
-                    if (handlerDirPlacesQuery != null)
-                    {
-                        handlerDirPlacesQuery(this,
-                                              dirPlacesQueryPacket.QueryData.QueryID,
-                                              Utils.BytesToString(
-                                                  dirPlacesQueryPacket.QueryData.QueryText),
-                                              (int)dirPlacesQueryPacket.QueryData.QueryFlags,
-                                              (int)dirPlacesQueryPacket.QueryData.Category,
-                                              Utils.BytesToString(
-                                                  dirPlacesQueryPacket.QueryData.SimName),
-                                              dirPlacesQueryPacket.QueryData.QueryStart);
-                    }
-                    break;
-
-                case PacketType.DirFindQuery:
-                    DirFindQueryPacket dirFindQueryPacket = (DirFindQueryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dirFindQueryPacket.AgentData.SessionID != SessionId ||
-                            dirFindQueryPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DirFindQuery handlerDirFindQuery = OnDirFindQuery;
-                    if (handlerDirFindQuery != null)
-                    {
-                        handlerDirFindQuery(this,
-                                            dirFindQueryPacket.QueryData.QueryID,
-                                            Utils.BytesToString(
-                                                dirFindQueryPacket.QueryData.QueryText),
-                                            dirFindQueryPacket.QueryData.QueryFlags,
-                                            dirFindQueryPacket.QueryData.QueryStart);
-                    }
-                    break;
-
-                case PacketType.DirLandQuery:
-                    DirLandQueryPacket dirLandQueryPacket = (DirLandQueryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dirLandQueryPacket.AgentData.SessionID != SessionId ||
-                            dirLandQueryPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DirLandQuery handlerDirLandQuery = OnDirLandQuery;
-                    if (handlerDirLandQuery != null)
-                    {
-                        handlerDirLandQuery(this,
-                                            dirLandQueryPacket.QueryData.QueryID,
-                                            dirLandQueryPacket.QueryData.QueryFlags,
-                                            dirLandQueryPacket.QueryData.SearchType,
-                                            dirLandQueryPacket.QueryData.Price,
-                                            dirLandQueryPacket.QueryData.Area,
-                                            dirLandQueryPacket.QueryData.QueryStart);
-                    }
-                    break;
-
-                case PacketType.DirPopularQuery:
-                    DirPopularQueryPacket dirPopularQueryPacket = (DirPopularQueryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dirPopularQueryPacket.AgentData.SessionID != SessionId ||
-                            dirPopularQueryPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DirPopularQuery handlerDirPopularQuery = OnDirPopularQuery;
-                    if (handlerDirPopularQuery != null)
-                    {
-                        handlerDirPopularQuery(this,
-                                               dirPopularQueryPacket.QueryData.QueryID,
-                                               dirPopularQueryPacket.QueryData.QueryFlags);
-                    }
-                    break;
-
-                case PacketType.DirClassifiedQuery:
-                    DirClassifiedQueryPacket dirClassifiedQueryPacket = (DirClassifiedQueryPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (dirClassifiedQueryPacket.AgentData.SessionID != SessionId ||
-                            dirClassifiedQueryPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    DirClassifiedQuery handlerDirClassifiedQuery = OnDirClassifiedQuery;
-                    if (handlerDirClassifiedQuery != null)
-                    {
-                        handlerDirClassifiedQuery(this,
-                                                  dirClassifiedQueryPacket.QueryData.QueryID,
-                                                  Utils.BytesToString(
-                                                      dirClassifiedQueryPacket.QueryData.QueryText),
-                                                  dirClassifiedQueryPacket.QueryData.QueryFlags,
-                                                  dirClassifiedQueryPacket.QueryData.Category,
-                                                  dirClassifiedQueryPacket.QueryData.QueryStart);
-                    }
-                    break;
-
-                case PacketType.EventInfoRequest:
-                    EventInfoRequestPacket eventInfoRequestPacket = (EventInfoRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (eventInfoRequestPacket.AgentData.SessionID != SessionId ||
-                            eventInfoRequestPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnEventInfoRequest != null)
-                    {
-                        OnEventInfoRequest(this, eventInfoRequestPacket.EventData.EventID);
-                    }
-                    break;
-
-                //#region Calling Card
-
-                case PacketType.OfferCallingCard:
-                    OfferCallingCardPacket offerCallingCardPacket = (OfferCallingCardPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (offerCallingCardPacket.AgentData.SessionID != SessionId ||
-                            offerCallingCardPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnOfferCallingCard != null)
-                    {
-                        OnOfferCallingCard(this,
-                                           offerCallingCardPacket.AgentBlock.DestID,
-                                           offerCallingCardPacket.AgentBlock.TransactionID);
-                    }
-                    break;
-
-                case PacketType.AcceptCallingCard:
-                    AcceptCallingCardPacket acceptCallingCardPacket = (AcceptCallingCardPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (acceptCallingCardPacket.AgentData.SessionID != SessionId ||
-                            acceptCallingCardPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    // according to http://wiki.secondlife.com/wiki/AcceptCallingCard FolderData should
-                    // contain exactly one entry
-                    if (OnAcceptCallingCard != null && acceptCallingCardPacket.FolderData.Length > 0)
-                    {
-                        OnAcceptCallingCard(this,
-                                            acceptCallingCardPacket.TransactionBlock.TransactionID,
-                                            acceptCallingCardPacket.FolderData[0].FolderID);
-                    }
-                    break;
-
-                case PacketType.DeclineCallingCard:
-                    DeclineCallingCardPacket declineCallingCardPacket = (DeclineCallingCardPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (declineCallingCardPacket.AgentData.SessionID != SessionId ||
-                            declineCallingCardPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (OnDeclineCallingCard != null)
-                    {
-                        OnDeclineCallingCard(this,
-                                             declineCallingCardPacket.TransactionBlock.TransactionID);
-                    }
-                    break;
-                //#endregion
-
-                //#region Groups
-                case PacketType.ActivateGroup:
-                    ActivateGroupPacket activateGroupPacket = (ActivateGroupPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (activateGroupPacket.AgentData.SessionID != SessionId ||
-                            activateGroupPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.ActivateGroup(this, activateGroupPacket.AgentData.GroupID);
-                        m_GroupsModule.SendAgentGroupDataUpdate(this);
-                    }
-                    break;
-
-
-                case PacketType.GroupTitlesRequest:
-                    GroupTitlesRequestPacket groupTitlesRequest =
-                        (GroupTitlesRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupTitlesRequest.AgentData.SessionID != SessionId ||
-                            groupTitlesRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        GroupTitlesReplyPacket groupTitlesReply = (GroupTitlesReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupTitlesReply);
-
-                        groupTitlesReply.AgentData =
-                            new GroupTitlesReplyPacket.AgentDataBlock();
-
-                        groupTitlesReply.AgentData.AgentID = AgentId;
-                        groupTitlesReply.AgentData.GroupID =
-                            groupTitlesRequest.AgentData.GroupID;
-
-                        groupTitlesReply.AgentData.RequestID =
-                            groupTitlesRequest.AgentData.RequestID;
-
-                        List<GroupTitlesData> titles =
-                            m_GroupsModule.GroupTitlesRequest(this,
-                                                              groupTitlesRequest.AgentData.GroupID);
-
-                        groupTitlesReply.GroupData =
-                            new GroupTitlesReplyPacket.GroupDataBlock[titles.Count];
-
-                        int i = 0;
-                        foreach (GroupTitlesData d in titles)
-                        {
-                            groupTitlesReply.GroupData[i] =
-                                new GroupTitlesReplyPacket.GroupDataBlock();
-
-                            groupTitlesReply.GroupData[i].Title =
-                                Util.StringToBytes256(d.Name);
-                            groupTitlesReply.GroupData[i].RoleID =
-                                d.UUID;
-                            groupTitlesReply.GroupData[i].Selected =
-                                d.Selected;
-                            i++;
-                        }
-
-                        OutPacket(groupTitlesReply, ThrottleOutPacketType.Task);
-                    }
-                    break;
-
-                case PacketType.GroupProfileRequest:
-                    GroupProfileRequestPacket groupProfileRequest =
-                        (GroupProfileRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupProfileRequest.AgentData.SessionID != SessionId ||
-                            groupProfileRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        GroupProfileReplyPacket groupProfileReply = (GroupProfileReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupProfileReply);
-
-                        groupProfileReply.AgentData = new GroupProfileReplyPacket.AgentDataBlock();
-                        groupProfileReply.GroupData = new GroupProfileReplyPacket.GroupDataBlock();
-                        groupProfileReply.AgentData.AgentID = AgentId;
-
-                        GroupProfileData d = m_GroupsModule.GroupProfileRequest(this,
-                                                                                groupProfileRequest.GroupData.GroupID);
-
-                        groupProfileReply.GroupData.GroupID = d.GroupID;
-                        groupProfileReply.GroupData.Name = Util.StringToBytes256(d.Name);
-                        groupProfileReply.GroupData.Charter = Util.StringToBytes1024(d.Charter);
-                        groupProfileReply.GroupData.ShowInList = d.ShowInList;
-                        groupProfileReply.GroupData.MemberTitle = Util.StringToBytes256(d.MemberTitle);
-                        groupProfileReply.GroupData.PowersMask = d.PowersMask;
-                        groupProfileReply.GroupData.InsigniaID = d.InsigniaID;
-                        groupProfileReply.GroupData.FounderID = d.FounderID;
-                        groupProfileReply.GroupData.MembershipFee = d.MembershipFee;
-                        groupProfileReply.GroupData.OpenEnrollment = d.OpenEnrollment;
-                        groupProfileReply.GroupData.Money = d.Money;
-                        groupProfileReply.GroupData.GroupMembershipCount = d.GroupMembershipCount;
-                        groupProfileReply.GroupData.GroupRolesCount = d.GroupRolesCount;
-                        groupProfileReply.GroupData.AllowPublish = d.AllowPublish;
-                        groupProfileReply.GroupData.MaturePublish = d.MaturePublish;
-                        groupProfileReply.GroupData.OwnerRole = d.OwnerRole;
-
-                        OutPacket(groupProfileReply, ThrottleOutPacketType.Task);
-                    }
-                    break;
-
-                case PacketType.GroupMembersRequest:
-                    GroupMembersRequestPacket groupMembersRequestPacket =
-                        (GroupMembersRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupMembersRequestPacket.AgentData.SessionID != SessionId ||
-                            groupMembersRequestPacket.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        List<GroupMembersData> members =
-                            m_GroupsModule.GroupMembersRequest(this, groupMembersRequestPacket.GroupData.GroupID);
-
-                        int memberCount = members.Count;
-
-                        while (true)
-                        {
-                            int blockCount = members.Count;
-                            if (blockCount > 40)
-                                blockCount = 40;
-
-                            GroupMembersReplyPacket groupMembersReply = (GroupMembersReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupMembersReply);
-
-                            groupMembersReply.AgentData =
-                                new GroupMembersReplyPacket.AgentDataBlock();
-                            groupMembersReply.GroupData =
-                                new GroupMembersReplyPacket.GroupDataBlock();
-                            groupMembersReply.MemberData =
-                                new GroupMembersReplyPacket.MemberDataBlock[
-                                    blockCount];
-
-                            groupMembersReply.AgentData.AgentID = AgentId;
-                            groupMembersReply.GroupData.GroupID =
-                                groupMembersRequestPacket.GroupData.GroupID;
-                            groupMembersReply.GroupData.RequestID =
-                                groupMembersRequestPacket.GroupData.RequestID;
-                            groupMembersReply.GroupData.MemberCount = memberCount;
-
-                            for (int i = 0; i < blockCount; i++)
-                            {
-                                GroupMembersData m = members[0];
-                                members.RemoveAt(0);
-
-                                groupMembersReply.MemberData[i] =
-                                    new GroupMembersReplyPacket.MemberDataBlock();
-                                groupMembersReply.MemberData[i].AgentID =
-                                    m.AgentID;
-                                groupMembersReply.MemberData[i].Contribution =
-                                    m.Contribution;
-                                groupMembersReply.MemberData[i].OnlineStatus =
-                                    Util.StringToBytes256(m.OnlineStatus);
-                                groupMembersReply.MemberData[i].AgentPowers =
-                                    m.AgentPowers;
-                                groupMembersReply.MemberData[i].Title =
-                                    Util.StringToBytes256(m.Title);
-                                groupMembersReply.MemberData[i].IsOwner =
-                                    m.IsOwner;
-                            }
-                            OutPacket(groupMembersReply, ThrottleOutPacketType.Task);
-                            if (members.Count == 0)
-                                break;
-                        }
-                    }
-                    break;
-
-                case PacketType.GroupRoleDataRequest:
-                    GroupRoleDataRequestPacket groupRolesRequest =
-                        (GroupRoleDataRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupRolesRequest.AgentData.SessionID != SessionId ||
-                            groupRolesRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        GroupRoleDataReplyPacket groupRolesReply = (GroupRoleDataReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupRoleDataReply);
-
-                        groupRolesReply.AgentData =
-                            new GroupRoleDataReplyPacket.AgentDataBlock();
-
-                        groupRolesReply.AgentData.AgentID = AgentId;
-
-                        groupRolesReply.GroupData =
-                            new GroupRoleDataReplyPacket.GroupDataBlock();
-
-                        groupRolesReply.GroupData.GroupID =
-                            groupRolesRequest.GroupData.GroupID;
-
-                        groupRolesReply.GroupData.RequestID =
-                            groupRolesRequest.GroupData.RequestID;
-
-                        List<GroupRolesData> titles =
-                            m_GroupsModule.GroupRoleDataRequest(this,
-                                                                groupRolesRequest.GroupData.GroupID);
-
-                        groupRolesReply.GroupData.RoleCount =
-                            titles.Count;
-
-                        groupRolesReply.RoleData =
-                            new GroupRoleDataReplyPacket.RoleDataBlock[titles.Count];
-
-                        int i = 0;
-                        foreach (GroupRolesData d in titles)
-                        {
-                            groupRolesReply.RoleData[i] =
-                                new GroupRoleDataReplyPacket.RoleDataBlock();
-
-                            groupRolesReply.RoleData[i].RoleID =
-                                d.RoleID;
-                            groupRolesReply.RoleData[i].Name =
-                                Util.StringToBytes256(d.Name);
-                            groupRolesReply.RoleData[i].Title =
-                                Util.StringToBytes256(d.Title);
-                            groupRolesReply.RoleData[i].Description =
-                                Util.StringToBytes1024(d.Description);
-                            groupRolesReply.RoleData[i].Powers =
-                                d.Powers;
-                            groupRolesReply.RoleData[i].Members =
-                                (uint)d.Members;
-
-                            i++;
-                        }
-
-                        OutPacket(groupRolesReply, ThrottleOutPacketType.Task);
-                    }
-                    break;
-
-                case PacketType.GroupRoleMembersRequest:
-                    GroupRoleMembersRequestPacket groupRoleMembersRequest =
-                        (GroupRoleMembersRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupRoleMembersRequest.AgentData.SessionID != SessionId ||
-                            groupRoleMembersRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        List<GroupRoleMembersData> mappings =
-                                m_GroupsModule.GroupRoleMembersRequest(this,
-                                groupRoleMembersRequest.GroupData.GroupID);
-
-                        int mappingsCount = mappings.Count;
-
-                        while (mappings.Count > 0)
-                        {
-                            int pairs = mappings.Count;
-                            if (pairs > 32)
-                                pairs = 32;
-
-                            GroupRoleMembersReplyPacket groupRoleMembersReply = (GroupRoleMembersReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupRoleMembersReply);
-                            groupRoleMembersReply.AgentData =
-                                    new GroupRoleMembersReplyPacket.AgentDataBlock();
-                            groupRoleMembersReply.AgentData.AgentID =
-                                    AgentId;
-                            groupRoleMembersReply.AgentData.GroupID =
-                                    groupRoleMembersRequest.GroupData.GroupID;
-                            groupRoleMembersReply.AgentData.RequestID =
-                                    groupRoleMembersRequest.GroupData.RequestID;
-
-                            groupRoleMembersReply.AgentData.TotalPairs =
-                                    (uint)mappingsCount;
-
-                            groupRoleMembersReply.MemberData =
-                                    new GroupRoleMembersReplyPacket.MemberDataBlock[pairs];
-
-                            for (int i = 0; i < pairs; i++)
-                            {
-                                GroupRoleMembersData d = mappings[0];
-                                mappings.RemoveAt(0);
-
-                                groupRoleMembersReply.MemberData[i] =
-                                    new GroupRoleMembersReplyPacket.MemberDataBlock();
-
-                                groupRoleMembersReply.MemberData[i].RoleID =
-                                        d.RoleID;
-                                groupRoleMembersReply.MemberData[i].MemberID =
-                                        d.MemberID;
-                            }
-
-                            OutPacket(groupRoleMembersReply, ThrottleOutPacketType.Task);
-                        }
-                    }
-                    break;
-
-                case PacketType.CreateGroupRequest:
-                    CreateGroupRequestPacket createGroupRequest =
-                        (CreateGroupRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (createGroupRequest.AgentData.SessionID != SessionId ||
-                            createGroupRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.CreateGroup(this,
-                                                   Utils.BytesToString(createGroupRequest.GroupData.Name),
-                                                   Utils.BytesToString(createGroupRequest.GroupData.Charter),
-                                                   createGroupRequest.GroupData.ShowInList,
-                                                   createGroupRequest.GroupData.InsigniaID,
-                                                   createGroupRequest.GroupData.MembershipFee,
-                                                   createGroupRequest.GroupData.OpenEnrollment,
-                                                   createGroupRequest.GroupData.AllowPublish,
-                                                   createGroupRequest.GroupData.MaturePublish);
-                    }
-                    break;
-
-                case PacketType.UpdateGroupInfo:
-                    UpdateGroupInfoPacket updateGroupInfo =
-                        (UpdateGroupInfoPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (updateGroupInfo.AgentData.SessionID != SessionId ||
-                            updateGroupInfo.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.UpdateGroupInfo(this,
-                                                       updateGroupInfo.GroupData.GroupID,
-                                                       Utils.BytesToString(updateGroupInfo.GroupData.Charter),
-                                                       updateGroupInfo.GroupData.ShowInList,
-                                                       updateGroupInfo.GroupData.InsigniaID,
-                                                       updateGroupInfo.GroupData.MembershipFee,
-                                                       updateGroupInfo.GroupData.OpenEnrollment,
-                                                       updateGroupInfo.GroupData.AllowPublish,
-                                                       updateGroupInfo.GroupData.MaturePublish);
-                    }
-
-                    break;
-
-                case PacketType.SetGroupAcceptNotices:
-                    SetGroupAcceptNoticesPacket setGroupAcceptNotices =
-                        (SetGroupAcceptNoticesPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (setGroupAcceptNotices.AgentData.SessionID != SessionId ||
-                            setGroupAcceptNotices.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.SetGroupAcceptNotices(this,
-                                                             setGroupAcceptNotices.Data.GroupID,
-                                                             setGroupAcceptNotices.Data.AcceptNotices,
-                                                             setGroupAcceptNotices.NewData.ListInProfile);
-                    }
-
-                    break;
-
-                case PacketType.GroupTitleUpdate:
-                    GroupTitleUpdatePacket groupTitleUpdate =
-                        (GroupTitleUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupTitleUpdate.AgentData.SessionID != SessionId ||
-                            groupTitleUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.GroupTitleUpdate(this,
-                                                        groupTitleUpdate.AgentData.GroupID,
-                                                        groupTitleUpdate.AgentData.TitleRoleID);
-                    }
-
-                    break;
-
-
-                case PacketType.ParcelDeedToGroup:
-                    ParcelDeedToGroupPacket parcelDeedToGroup = (ParcelDeedToGroupPacket)Pack;
-                    if (m_GroupsModule != null)
-                    {
-                        ParcelDeedToGroup handlerParcelDeedToGroup = OnParcelDeedToGroup;
-                        if (handlerParcelDeedToGroup != null)
-                        {
-                            handlerParcelDeedToGroup(parcelDeedToGroup.Data.LocalID, parcelDeedToGroup.Data.GroupID, this);
-
-                        }
-                    }
-
-                    break;
-
-
-                case PacketType.GroupNoticesListRequest:
-                    GroupNoticesListRequestPacket groupNoticesListRequest =
-                        (GroupNoticesListRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupNoticesListRequest.AgentData.SessionID != SessionId ||
-                            groupNoticesListRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        GroupNoticeData[] gn =
-                            m_GroupsModule.GroupNoticesListRequest(this,
-                                                                   groupNoticesListRequest.Data.GroupID);
-
-                        GroupNoticesListReplyPacket groupNoticesListReply = (GroupNoticesListReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupNoticesListReply);
-                        groupNoticesListReply.AgentData =
-                            new GroupNoticesListReplyPacket.AgentDataBlock();
-                        groupNoticesListReply.AgentData.AgentID = AgentId;
-                        groupNoticesListReply.AgentData.GroupID = groupNoticesListRequest.Data.GroupID;
-
-                        groupNoticesListReply.Data = new GroupNoticesListReplyPacket.DataBlock[gn.Length];
-
-                        int i = 0;
-                        foreach (GroupNoticeData g in gn)
-                        {
-                            groupNoticesListReply.Data[i] = new GroupNoticesListReplyPacket.DataBlock();
-                            groupNoticesListReply.Data[i].NoticeID =
-                                g.NoticeID;
-                            groupNoticesListReply.Data[i].Timestamp =
-                                g.Timestamp;
-                            groupNoticesListReply.Data[i].FromName =
-                                Util.StringToBytes256(g.FromName);
-                            groupNoticesListReply.Data[i].Subject =
-                                Util.StringToBytes256(g.Subject);
-                            groupNoticesListReply.Data[i].HasAttachment =
-                                g.HasAttachment;
-                            groupNoticesListReply.Data[i].AssetType =
-                                g.AssetType;
-                            i++;
-                        }
-
-                        OutPacket(groupNoticesListReply, ThrottleOutPacketType.Task);
-                    }
-
-                    break;
-
-                case PacketType.GroupNoticeRequest:
-                    GroupNoticeRequestPacket groupNoticeRequest =
-                        (GroupNoticeRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupNoticeRequest.AgentData.SessionID != SessionId ||
-                            groupNoticeRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.GroupNoticeRequest(this,
-                                                          groupNoticeRequest.Data.GroupNoticeID);
-                    }
-                    break;
-
-                case PacketType.GroupRoleUpdate:
-                    GroupRoleUpdatePacket groupRoleUpdate =
-                        (GroupRoleUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupRoleUpdate.AgentData.SessionID != SessionId ||
-                            groupRoleUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        foreach (GroupRoleUpdatePacket.RoleDataBlock d in
-                            groupRoleUpdate.RoleData)
-                        {
-                            m_GroupsModule.GroupRoleUpdate(this,
-                                                           groupRoleUpdate.AgentData.GroupID,
-                                                           d.RoleID,
-                                                           Utils.BytesToString(d.Name),
-                                                           Utils.BytesToString(d.Description),
-                                                           Utils.BytesToString(d.Title),
-                                                           d.Powers,
-                                                           d.UpdateType);
-                        }
-                        m_GroupsModule.NotifyChange(groupRoleUpdate.AgentData.GroupID);
-                    }
-                    break;
-
-                case PacketType.GroupRoleChanges:
-                    GroupRoleChangesPacket groupRoleChanges =
-                        (GroupRoleChangesPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (groupRoleChanges.AgentData.SessionID != SessionId ||
-                            groupRoleChanges.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        foreach (GroupRoleChangesPacket.RoleChangeBlock d in
-                            groupRoleChanges.RoleChange)
-                        {
-                            m_GroupsModule.GroupRoleChanges(this,
-                                                            groupRoleChanges.AgentData.GroupID,
-                                                            d.RoleID,
-                                                            d.MemberID,
-                                                            d.Change);
-                        }
-                        m_GroupsModule.NotifyChange(groupRoleChanges.AgentData.GroupID);
-                    }
-                    break;
-
-                case PacketType.JoinGroupRequest:
-                    JoinGroupRequestPacket joinGroupRequest =
-                        (JoinGroupRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (joinGroupRequest.AgentData.SessionID != SessionId ||
-                            joinGroupRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.JoinGroupRequest(this,
-                                joinGroupRequest.GroupData.GroupID);
-                    }
-                    break;
-
-                case PacketType.LeaveGroupRequest:
-                    LeaveGroupRequestPacket leaveGroupRequest =
-                        (LeaveGroupRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (leaveGroupRequest.AgentData.SessionID != SessionId ||
-                            leaveGroupRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        m_GroupsModule.LeaveGroupRequest(this,
-                                leaveGroupRequest.GroupData.GroupID);
-                    }
-                    break;
-
-                case PacketType.EjectGroupMemberRequest:
-                    EjectGroupMemberRequestPacket ejectGroupMemberRequest =
-                        (EjectGroupMemberRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (ejectGroupMemberRequest.AgentData.SessionID != SessionId ||
-                            ejectGroupMemberRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        foreach (EjectGroupMemberRequestPacket.EjectDataBlock e
-                                in ejectGroupMemberRequest.EjectData)
-                        {
-                            m_GroupsModule.EjectGroupMemberRequest(this,
-                                    ejectGroupMemberRequest.GroupData.GroupID,
-                                    e.EjecteeID);
-                        }
-                    }
-                    break;
-
-                case PacketType.InviteGroupRequest:
-                    InviteGroupRequestPacket inviteGroupRequest =
-                        (InviteGroupRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (inviteGroupRequest.AgentData.SessionID != SessionId ||
-                            inviteGroupRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    if (m_GroupsModule != null)
-                    {
-                        foreach (InviteGroupRequestPacket.InviteDataBlock b in
-                                inviteGroupRequest.InviteData)
-                        {
-                            m_GroupsModule.InviteGroupRequest(this,
-                                    inviteGroupRequest.GroupData.GroupID,
-                                    b.InviteeID,
-                                    b.RoleID);
-                        }
-                    }
-                    break;
-
-                //#endregion
-
-                case PacketType.StartLure:
-                    StartLurePacket startLureRequest = (StartLurePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (startLureRequest.AgentData.SessionID != SessionId ||
-                            startLureRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    StartLure handlerStartLure = OnStartLure;
-                    if (handlerStartLure != null)
-                        handlerStartLure(startLureRequest.Info.LureType,
-                                         Utils.BytesToString(
-                                            startLureRequest.Info.Message),
-                                         startLureRequest.TargetData[0].TargetID,
-                                         this);
-                    break;
-
-                case PacketType.TeleportLureRequest:
-                    TeleportLureRequestPacket teleportLureRequest =
-                            (TeleportLureRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (teleportLureRequest.Info.SessionID != SessionId ||
-                            teleportLureRequest.Info.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    TeleportLureRequest handlerTeleportLureRequest = OnTeleportLureRequest;
-                    if (handlerTeleportLureRequest != null)
-                        handlerTeleportLureRequest(
-                                 teleportLureRequest.Info.LureID,
-                                 teleportLureRequest.Info.TeleportFlags,
-                                 this);
-                    break;
-
-                case PacketType.ClassifiedInfoRequest:
-                    ClassifiedInfoRequestPacket classifiedInfoRequest =
-                            (ClassifiedInfoRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (classifiedInfoRequest.AgentData.SessionID != SessionId ||
-                            classifiedInfoRequest.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ClassifiedInfoRequest handlerClassifiedInfoRequest = OnClassifiedInfoRequest;
-                    if (handlerClassifiedInfoRequest != null)
-                        handlerClassifiedInfoRequest(
-                                 classifiedInfoRequest.Data.ClassifiedID,
-                                 this);
-                    break;
-
-                case PacketType.ClassifiedInfoUpdate:
-                    ClassifiedInfoUpdatePacket classifiedInfoUpdate =
-                            (ClassifiedInfoUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (classifiedInfoUpdate.AgentData.SessionID != SessionId ||
-                            classifiedInfoUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ClassifiedInfoUpdate handlerClassifiedInfoUpdate = OnClassifiedInfoUpdate;
-                    if (handlerClassifiedInfoUpdate != null)
-                        handlerClassifiedInfoUpdate(
-                                classifiedInfoUpdate.Data.ClassifiedID,
-                                classifiedInfoUpdate.Data.Category,
-                                Utils.BytesToString(
-                                        classifiedInfoUpdate.Data.Name),
-                                Utils.BytesToString(
-                                        classifiedInfoUpdate.Data.Desc),
-                                classifiedInfoUpdate.Data.ParcelID,
-                                classifiedInfoUpdate.Data.ParentEstate,
-                                classifiedInfoUpdate.Data.SnapshotID,
-                                new Vector3(
-                                    classifiedInfoUpdate.Data.PosGlobal),
-                                classifiedInfoUpdate.Data.ClassifiedFlags,
-                                classifiedInfoUpdate.Data.PriceForListing,
-                                this);
-                    break;
-
-                case PacketType.ClassifiedDelete:
-                    ClassifiedDeletePacket classifiedDelete =
-                            (ClassifiedDeletePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (classifiedDelete.AgentData.SessionID != SessionId ||
-                            classifiedDelete.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ClassifiedDelete handlerClassifiedDelete = OnClassifiedDelete;
-                    if (handlerClassifiedDelete != null)
-                        handlerClassifiedDelete(
-                                 classifiedDelete.Data.ClassifiedID,
-                                 this);
-                    break;
-
-                case PacketType.ClassifiedGodDelete:
-                    ClassifiedGodDeletePacket classifiedGodDelete =
-                            (ClassifiedGodDeletePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (classifiedGodDelete.AgentData.SessionID != SessionId ||
-                            classifiedGodDelete.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    ClassifiedDelete handlerClassifiedGodDelete = OnClassifiedGodDelete;
-                    if (handlerClassifiedGodDelete != null)
-                        handlerClassifiedGodDelete(
-                                 classifiedGodDelete.Data.ClassifiedID,
-                                 this);
-                    break;
-
-                case PacketType.EventGodDelete:
-                    EventGodDeletePacket eventGodDelete =
-                            (EventGodDeletePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (eventGodDelete.AgentData.SessionID != SessionId ||
-                            eventGodDelete.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    EventGodDelete handlerEventGodDelete = OnEventGodDelete;
-                    if (handlerEventGodDelete != null)
-                        handlerEventGodDelete(
-                                eventGodDelete.EventData.EventID,
-                                eventGodDelete.QueryData.QueryID,
-                                Utils.BytesToString(
-                                        eventGodDelete.QueryData.QueryText),
-                                eventGodDelete.QueryData.QueryFlags,
-                                eventGodDelete.QueryData.QueryStart,
-                                this);
-                    break;
-
-                case PacketType.EventNotificationAddRequest:
-                    EventNotificationAddRequestPacket eventNotificationAdd =
-                            (EventNotificationAddRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (eventNotificationAdd.AgentData.SessionID != SessionId ||
-                            eventNotificationAdd.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    EventNotificationAddRequest handlerEventNotificationAddRequest = OnEventNotificationAddRequest;
-                    if (handlerEventNotificationAddRequest != null)
-                        handlerEventNotificationAddRequest(
-                                eventNotificationAdd.EventData.EventID, this);
-                    break;
-
-                case PacketType.EventNotificationRemoveRequest:
-                    EventNotificationRemoveRequestPacket eventNotificationRemove =
-                            (EventNotificationRemoveRequestPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (eventNotificationRemove.AgentData.SessionID != SessionId ||
-                            eventNotificationRemove.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    EventNotificationRemoveRequest handlerEventNotificationRemoveRequest = OnEventNotificationRemoveRequest;
-                    if (handlerEventNotificationRemoveRequest != null)
-                        handlerEventNotificationRemoveRequest(
-                                eventNotificationRemove.EventData.EventID, this);
-                    break;
-
-                case PacketType.RetrieveInstantMessages:
-                    RetrieveInstantMessagesPacket rimpInstantMessagePack = (RetrieveInstantMessagesPacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (rimpInstantMessagePack.AgentData.SessionID != SessionId ||
-                            rimpInstantMessagePack.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    RetrieveInstantMessages handlerRetrieveInstantMessages = OnRetrieveInstantMessages;
-                    if (handlerRetrieveInstantMessages != null)
-                        handlerRetrieveInstantMessages(this);
-                    break;
-
-                case PacketType.PickDelete:
-                    PickDeletePacket pickDelete =
-                            (PickDeletePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (pickDelete.AgentData.SessionID != SessionId ||
-                            pickDelete.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    PickDelete handlerPickDelete = OnPickDelete;
-                    if (handlerPickDelete != null)
-                        handlerPickDelete(this, pickDelete.Data.PickID);
-                    break;
-
-                case PacketType.PickGodDelete:
-                    PickGodDeletePacket pickGodDelete =
-                            (PickGodDeletePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (pickGodDelete.AgentData.SessionID != SessionId ||
-                            pickGodDelete.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    PickGodDelete handlerPickGodDelete = OnPickGodDelete;
-                    if (handlerPickGodDelete != null)
-                        handlerPickGodDelete(this,
-                                pickGodDelete.AgentData.AgentID,
-                                pickGodDelete.Data.PickID,
-                                pickGodDelete.Data.QueryID);
-                    break;
-
-                case PacketType.PickInfoUpdate:
-                    PickInfoUpdatePacket pickInfoUpdate =
-                            (PickInfoUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (pickInfoUpdate.AgentData.SessionID != SessionId ||
-                            pickInfoUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    PickInfoUpdate handlerPickInfoUpdate = OnPickInfoUpdate;
-                    if (handlerPickInfoUpdate != null)
-                        handlerPickInfoUpdate(this,
-                                pickInfoUpdate.Data.PickID,
-                                pickInfoUpdate.Data.CreatorID,
-                                pickInfoUpdate.Data.TopPick,
-                                Utils.BytesToString(pickInfoUpdate.Data.Name),
-                                Utils.BytesToString(pickInfoUpdate.Data.Desc),
-                                pickInfoUpdate.Data.SnapshotID,
-                                pickInfoUpdate.Data.SortOrder,
-                                pickInfoUpdate.Data.Enabled);
-                    break;
-
-                case PacketType.AvatarNotesUpdate:
-                    AvatarNotesUpdatePacket avatarNotesUpdate =
-                            (AvatarNotesUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avatarNotesUpdate.AgentData.SessionID != SessionId ||
-                            avatarNotesUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    AvatarNotesUpdate handlerAvatarNotesUpdate = OnAvatarNotesUpdate;
-                    if (handlerAvatarNotesUpdate != null)
-                        handlerAvatarNotesUpdate(this,
-                                avatarNotesUpdate.Data.TargetID,
-                                Utils.BytesToString(avatarNotesUpdate.Data.Notes));
-                    break;
-
-                case PacketType.AvatarInterestsUpdate:
-                    AvatarInterestsUpdatePacket avatarInterestUpdate =
-                            (AvatarInterestsUpdatePacket)Pack;
-
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (avatarInterestUpdate.AgentData.SessionID != SessionId ||
-                            avatarInterestUpdate.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-
-                    AvatarInterestUpdate handlerAvatarInterestUpdate = OnAvatarInterestUpdate;
-                    if (handlerAvatarInterestUpdate != null)
-                        handlerAvatarInterestUpdate(this,
-                            avatarInterestUpdate.PropertiesData.WantToMask,
-                            Utils.BytesToString(avatarInterestUpdate.PropertiesData.WantToText),
-                            avatarInterestUpdate.PropertiesData.SkillsMask,
-                            Utils.BytesToString(avatarInterestUpdate.PropertiesData.SkillsText),
-                            Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText));
-                    break;
-
-                case PacketType.GrantUserRights:
-                    GrantUserRightsPacket GrantUserRights =
-                            (GrantUserRightsPacket)Pack;
-                    #region Packet Session and User Check
-                    if (m_checkPackets)
-                    {
-                        if (GrantUserRights.AgentData.SessionID != SessionId ||
-                            GrantUserRights.AgentData.AgentID != AgentId)
-                            break;
-                    }
-                    #endregion
-                    GrantUserFriendRights GrantUserRightsHandler = OnGrantUserRights;
-                    if (GrantUserRightsHandler != null)
-                        GrantUserRightsHandler(this,
-                            GrantUserRights.AgentData.AgentID,
-                            GrantUserRights.Rights[0].AgentRelated,
-                            GrantUserRights.Rights[0].RelatedRights);
-                    break;
-
-                case PacketType.PlacesQuery:
-                    PlacesQueryPacket placesQueryPacket =
-                            (PlacesQueryPacket)Pack;
-
-                    PlacesQuery handlerPlacesQuery = OnPlacesQuery;
-
-                    if (handlerPlacesQuery != null)
-                        handlerPlacesQuery(placesQueryPacket.AgentData.QueryID,
-                                placesQueryPacket.TransactionData.TransactionID,
-                                Utils.BytesToString(
-                                        placesQueryPacket.QueryData.QueryText),
-                                placesQueryPacket.QueryData.QueryFlags,
-                                (byte)placesQueryPacket.QueryData.Category,
-                                Utils.BytesToString(
-                                        placesQueryPacket.QueryData.SimName),
-                                this);
-                    break;
-                */
-                #endregion
-                default:
-                    m_log.Warn("[CLIENT]: unhandled packet " + Pack);
-                    break;
+            if (!ProcessPacketMethod(Pack))
+            {
+                m_log.Warn("[CLIENT]: unhandled packet " + Pack);
             }

             PacketPool.Instance.ReturnPacket(Pack);
-
         }

         private static PrimitiveBaseShape GetShapeFromAddPacket(ObjectAddPacket addPacket)